# Can I run QIIME2 on Multiplexed 16S ONT files?

**URL:** https://forum.qiime2.org/t/can-i-run-qiime2-on-multiplexed-16s-ont-files/33263
**Category:** Other Bioinformatics Tools
**Tags:** nanopore
**Created:** [June 6, 2025, 3:51pm UTC](https://forum.qiime2.org/t/can-i-run-qiime2-on-multiplexed-16s-ont-files/33263 "2025-06-06T15:51:51Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![Chenyu](https://forum.qiime2.org/letter_avatar_proxy/v4/letter/c/a5b964/32.png) [@Chenyu](https://forum.qiime2.org/u/Chenyu)
#### Post date: [June 6, 2025, 3:51pm UTC](https://forum.qiime2.org/t/can-i-run-qiime2-on-multiplexed-16s-ont-files/33263/1 "2025-06-06T15:51:51Z")

</div>

Hello all,

I have a multiplexed .fastq file containing full-length 16S rRNA sequencing data generated by the MinION Mk1B platform. The structure of the file is shown below:

 ![image](https://forum-qiime2-org.s3.dualstack.us-west-2.amazonaws.com/original/3X/a/0/a07ae7646aa1380c7b9b9cb54a9ae31f774a6d24.png)

I’m unsure whether QIIME2 can handle this kind of multiplexed data where the barcodes are not in standard base format (A/C/T/G). Given this setup, is it possible to process and analyze the data using QIIME2?

---

<div class="post-metadata">

### Author: ![ebolyen](https://forum.qiime2.org/user_avatar/forum.qiime2.org/ebolyen/32/11_2.png) [@ebolyen](https://forum.qiime2.org/u/ebolyen)
#### Post date: [June 9, 2025, 5:59pm UTC](https://forum.qiime2.org/t/can-i-run-qiime2-on-multiplexed-16s-ont-files/33263/2 "2025-06-09T17:59:55Z")

</div>

Hi @Chenyu,

We don't have a baked-in way to demultiplex these (they kind of are demultiplexed in as much as the barcodes are identified already).

But there's a pretty recent tool: [PRONAME: Enhancing Taxonomic Accuracy with Nanopore Long-Read Metabarcoding and QIIME2](https://forum.qiime2.org/t/proname-enhancing-taxonomic-accuracy-with-nanopore-long-read-metabarcoding-and-qiime2/32304) which looks to handle the upstream processing and generates Q2 results somewhere in the middle of that process. So I might give that whirl and see if it helps.

cc @BDubois

---

<div class="post-metadata">

### Author: ![BDubois](https://forum.qiime2.org/letter_avatar_proxy/v4/letter/b/3ab097/32.png) [@BDubois](https://forum.qiime2.org/u/BDubois)
#### Post date: [June 10, 2025, 7:35am UTC](https://forum.qiime2.org/t/can-i-run-qiime2-on-multiplexed-16s-ont-files/33263/3 "2025-06-10T07:35:51Z")

</div>

Hi Chenyu, Evan,

Indeed, your data is already demultiplexed, as indicated by the presence of "barcode=barcodeXX" in each read header. So in this case, things are pretty straightforward. You just need to run the following command to split the data into one fastq file per sample:

```auto
awk '{
    if (NR % 4 == 1) {
        match($0, /barcode=barcode[0-9]+/, a)
        sub(/^barcode=/, "", a[0])
        filename = a[0] ".fastq"
    }
    print >> filename
}'

```

You won’t need this since your data is already demultiplexed, but for reference, here is the command you would use to demultiplex ONT data using [Dorado](https://github.com/nanoporetech/dorado):

```auto
dorado demux \
  --kit-name SQK-NBD114-24 \ # adjust according to the barcoding kit used
  --output-dir demux_output \
  your_file.fastq \
  --emit-fastq

```

Once you have one fastq file per sample, you can proceed with the sequence analysis using [PRONAME](https://github.com/benn888/PRONAME), which enables steps like data curation, error correction, taxonomic assignment, and more.

Feel free to reach out if you need any help!

Best,

Ben

---

<div class="post-metadata">

### Author: ![Chenyu](https://forum.qiime2.org/letter_avatar_proxy/v4/letter/c/a5b964/32.png) [@Chenyu](https://forum.qiime2.org/u/Chenyu)
#### Post date: [June 10, 2025, 10:29pm UTC](https://forum.qiime2.org/t/can-i-run-qiime2-on-multiplexed-16s-ont-files/33263/4 "2025-06-10T22:29:14Z")

</div>

Hi Ben,

I tried running PRONAME steps 0–3 on my Apple M1 laptop (Docker 4.42.0, I’ve unchecked Rosetta for x86\_64/amd64 emulation), but ran into a couple of issues:

Here is my code:  
docker run -it --name 16S\_MCI\_27e -v /Users/liuchenyu/Desktop/16S\_MCI:/16S\_MCI benn888/proname:v2.0.1-arm64  
cd 16S\_MCI  
proname\_import --inputpath MCI\_27e\_RAW --duplex no --trimadapters no --sequencingkit SQK-RBK114.96 --trimprimers no  
proname\_filter --datatype simplex --filtminlen 200 --filtmaxlen 5000 --filtminqual 9 --inputpath MCI\_27e\_RAW  
proname\_refine --clusterid 0.97 --inputpath MCI\_27e\_RAW --medakamodel r1041\_e82\_400bps\_sup\_v5.0.0 --chimeradb /opt/db/Silva138\_full16S/silva-138-99-seqs.fasta --qiime2import yes

1. No plots generated  

2. I installed vsearch inside the container, yet `proname_refine` now fails with:  

Any tips on how to resolve the missing plots and the vsearch error would be greatly appreciated!

Thanks for your help,  
Chenyu

---

<div class="post-metadata">

### Author: ![Chenyu](https://forum.qiime2.org/letter_avatar_proxy/v4/letter/c/a5b964/32.png) [@Chenyu](https://forum.qiime2.org/u/Chenyu)
#### Post date: [June 11, 2025, 9:20pm UTC](https://forum.qiime2.org/t/can-i-run-qiime2-on-multiplexed-16s-ont-files/33263/5 "2025-06-11T21:20:00Z")

</div>

Hi Ben,

I successfully ran steps 0–2 on the HPC and obtained the corresponding figure outputs. However, for step 3 (refine), the resulting OTU table contained only zeros, and it could not be imported into QIIME 2 automatically. Please see attached screenshorts for reference:

 ![image](https://forum-qiime2-org.s3.dualstack.us-west-2.amazonaws.com/original/3X/f/4/f4f741b4ef339538cddc7a5a6d0ff57631dad721.png)  
 ![Screenshot 2025-06-11 at 4.29.33 PM](https://forum-qiime2-org.s3.dualstack.us-west-2.amazonaws.com/original/3X/5/3/5340ef5a21ccae7e60d0c9e8c9f4c0ffa78191e9.png)

To investigate further, I attempted to classify taxonomy manually using the .qza file generated from step 3. The classification appeared successful in Qiime2 and I was able to retrieve bacterial names.

I'm not entirely sure which step might have gone wrong, so I’ve attached all the relevant code here for reference.

export SIF=/.../proname\_v2.0.1-amd64.sif  
export HOST\_DIR=/.../16SPerSample/MIC\_27e\_target  
cd $HOST\_DIR

singularity exec   
--bind {HOST\_DIR}:{HOST\_DIR}   
${SIF}   
proname\_import   
--inputpath Persample   
--duplex no   
--trimadapters no   
--sequencingkit SQK-RBK114.96   
--trimprimers yes   
--fwdprimer AGAGTTTGATCMTGGCTCAG   
--revprimer TACGGYTACCTTGTTAYGACTT

singularity exec   
--bind {HOST\_DIR}:{HOST\_DIR}   
${SIF}   
proname\_filter   
--datatype simplex   
--filtminlen 200   
--filtmaxlen 2000   
--filtminqual 9   
--inputpath Persample

singularity exec   
--bind {HOST\_DIR}:{HOST\_DIR}   
${SIF}   
proname\_refine   
--clusterid 0.97   
--inputpath Persample   
--medakamodel r1041\_e82\_400bps\_hac\_v5.0.0  
--chimeradb /opt/db/Silva138\_full16S/silva-138-99-seqs.fasta   
--qiime2import yes

Additionally, I’ve included part of one example FASTQ file for my sample, in case that helps identify the issue.

 ![image](https://forum-qiime2-org.s3.dualstack.us-west-2.amazonaws.com/original/3X/2/b/2bb907c59474e70eb463059e29d34f0db7e27809.png)

I would appreciate any possible hints or suggestions!

Chenyu

---

<div class="post-metadata">

### Author: ![BDubois](https://forum.qiime2.org/letter_avatar_proxy/v4/letter/b/3ab097/32.png) [@BDubois](https://forum.qiime2.org/u/BDubois)
#### Post date: [June 12, 2025, 8:59am UTC](https://forum.qiime2.org/t/can-i-run-qiime2-on-multiplexed-16s-ont-files/33263/6 "2025-06-12T08:59:32Z")

</div>

Hi Chenyu,

Thank you for sharing all the details and screenshots.

From your outputs, the main issue seems to be that the feature table generated by `proname_refine` contains only zeros, and the QIIME2 import fails due to duplicate Feature IDs.  
To help you troubleshoot, could you please run the following diagnostic commands inside your output directory, and send me the results ?

```auto
# Check for duplicate Feature IDs in the table
awk 'NR>1 {print $1}' rep_table.tsv | sort | uniq -d

# Check if any sample has non-zero counts
awk '{for(i=2;i<=NF;i++) if($i>0) print $i}' rep_table.tsv | wc -l

```

It could also be usefull to run additional diagnostic commands on files that are normally deletedat the end of `proname_refine` execution. It could therefore be interesting to run the command `sed -i 's/^\([[:space:]]*\)rm\([[:space:]-]\)/\1# rm\2/' /opt/scripts/proname_refine` before re-running your `proname_refine` command. This will prevent intermediate files from being deleted, making troubleshooting easier.

Also note that PRONAME was developed to be run using Docker. Using Singularity instead may could cause some issues, especially if some files are not written due to permission issues or because some directories are not correctly mounted or writable inside the Singularity container.

One last point regarding your read filtering, in case it helps: your current filters are quite permissive at the moment. Since the gene is about 1.5 kb, using a minimum length of 200 bp seems very low. In terms of quality, a Q score of 9 is also quite low and could impact the efficiency of downstream error correction. We generally set this threshold in the range of Q15 to Q20.

Best,

Ben

---

<div class="post-metadata">

### Author: ![Chenyu](https://forum.qiime2.org/letter_avatar_proxy/v4/letter/c/a5b964/32.png) [@Chenyu](https://forum.qiime2.org/u/Chenyu)
#### Post date: [June 12, 2025, 5:38pm UTC](https://forum.qiime2.org/t/can-i-run-qiime2-on-multiplexed-16s-ont-files/33263/7 "2025-06-12T17:38:45Z")

</div>

Hi Ben,

Thank you for your reply!

I ran the first command, but it returned nothing. The second command returned 14, which matches the number of barcodes I have.

I tried using Docker again, but as I mentioned two days ago, I encountered numerous errors. Even after installing cutadapt, matplotlib, pyabpoa, and search, I still encountered the following error at Step 3: qemu-x86\_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory.

I set the minimum length to 200 bp since most of the length is not reached at 1500 bp. Here is the plot received from step 1 for your reference:

 ![LengthvsQualityScatterPlot_simplex](https://forum-qiime2-org.s3.dualstack.us-west-2.amazonaws.com/original/3X/8/c/8c425fac473acdd91a32eae3977cc926a0a6207e.png)

I also tried to increase the quality threshold to 10 or 15, but that caused `HQ_simplex_reads` to return 0 for several samples.

Do you think this issue might be related to the kit or primer used in Step 1?

Chenyu

---

<div class="post-metadata">

### Author: ![BDubois](https://forum.qiime2.org/letter_avatar_proxy/v4/letter/b/3ab097/32.png) [@BDubois](https://forum.qiime2.org/u/BDubois)
#### Post date: [July 8, 2025, 5:28pm UTC](https://forum.qiime2.org/t/can-i-run-qiime2-on-multiplexed-16s-ont-files/33263/9 "2025-07-08T17:28:38Z")

</div>

Hi Chenyu,

> [@Chenyu](#):
>
> I also tried to increase the quality threshold to 10 or 15, but that caused `HQ_simplex_reads` to return 0 for several samples.
> 
> Do you think this issue might be related to the kit or primer used in Step 1?

I don't think so, the issue most likely comes from the rather low quality of your sequencing data. As shown in the plot you attached, there are almost no reads above Q15, which explains why you lose so many reads when applying a quality threshold of Q10 or Q15.

Regarding the issue you encountered when building the feature table, this was probably due to an incorrect sort/join procedure that we recently identified. It has been fixed in the latest PRONAME release (v2.1.0).

Hope this will help resolving your issues, feel free to reach out if you need further help.

Best,  
Ben

---

<div class="post-metadata">

### Author: ![system](https://forum-qiime2-org.s3.dualstack.us-west-2.amazonaws.com/original/3X/2/1/21af5fe23cb6f4579467c66a9ed94e55274ca7bd.svg) [@system](https://forum.qiime2.org/u/system)
#### Post date: [August 8, 2025, 11:28pm UTC](https://forum.qiime2.org/t/can-i-run-qiime2-on-multiplexed-16s-ont-files/33263/10 "2025-08-08T23:28:59Z")

</div>

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.
