qiime quality-filter q-score does not accept SampleData[PairedEndSequencesWithQuality]

I’m attempting the “moving pictures tutorial” with my own paired-end MiSeq data. It looks like the q2-quality-filter plugin does not accept SampleData[PairedEndSequencesWithQuality]. Is this a feature that will be added, or will it be a separate plugin (i.e. pair your reads before putting through the quality filter)? It looks like a read pairing plugin is in the list to be developed. Have you looked into implementing PEAR?

Thanks,
Christian

qiime2@qiime2core2017-4:~/Desktop/OWNew$ qiime quality-filter q-score \
>  --verbose \
>  --i-demux ~/Desktop/OWNew/OWNew_demux.qza \
>  --o-filtered-sequences ~/Desktop/OWNew/OWNew_demux-filtered.qza \
>  --o-filter-stats ~/Desktop/OWNew/OWNew_demux-filter-stats.qza
Traceback (most recent call last):
  File "/miniconda3/lib/python3.5/site-packages/q2cli/commands.py", line 218, in __call__
    results = action(**arguments)
  File "<decorator-gen-195>", line 2, in q_score
  File "/miniconda3/lib/python3.5/site-packages/qiime2/sdk/action.py", line 151, in callable_wrapper
    self.signature.check_types(**user_input)
  File "/miniconda3/lib/python3.5/site-packages/qiime2/core/type/signature.py", line 282, in check_types
    " %r." % (name, spec.qiime_type))
TypeError: Argument to input 'demux' is not a subtype of SampleData[SequencesWithQuality].

Plugin error from quality-filter:

  Argument to input 'demux' is not a subtype of
  SampleData[SequencesWithQuality].

See above for debug info.
1 Like

Hi @ChristianEdwardson! The general strategy in QIIME 1 has been to join your paired end reads first (e.g. with join_paired_ends.py) and then demultiplex/quality filter with split_libraries_fastq.py, since you'd typically want to perform quality filtering on your joined (and hence longer) sequences.

In QIIME 2, if you plan to denoise your sequences with DADA2 you should avoid joining the reads. DADA2 will give you better results if you supply your SampleData[PairedEndSequencesWithQuality] (i.e. your unjoined reads) to qiime dada2 denoise-paired. q2-quality-filter shouldn't be a necessary step since DADA2 will perform its own quality control.

If you plan to use Deblur (i.e. q2-deblur, also described in the Moving Pictures tutorial), I'm not sure what the recommended strategy is for handling paired-end data and quality filtering beforehand. qiime deblur denoise-16S appears to handle both joined and unjoined reads, but the help text indicates that only forward reads are supported. @wasade, can you comment on the recommended strategy for handling paired-end data with q2-quality-filter and q2-deblur?

It would most likely be a new plugin that would support multiple read-joining techniques (e.g. fastq-join, PEAR, etc.). I don't think anyone is working on this plugin yet. If you or someone you know would be interested in developing a read-joining plugin, we have plugin developer docs to guide you through the process, and we're happy to help with any questions.

@wasade, do you have plans to add paired-end support to q2-quality-filter, or would you expect that functionality to live in a separate plugin?

2 Likes

Thanks, @jairideout for the ping.

We have not evaluated Deblur explicitly with paired end data. However, there is nothing about the algorithm which prohibits it from being applied. To do so, you will need to join the reads prior to execution.

I’d be excited to see support paired-end in q2-quality-filter. It may just be as simple as allowing PairedEndSequencesWithQuality | SequencesWithQuality – I’m not familiar with the differences between those properties within QIIME2. I do not think it needs to be a separate plugin. I’m not sure right now whether it would be useful to have it exposed as a separate method.

As a stopgap, if the reads are joined, and if the data can be cast to SequencesWithQuality, then it should just work to feed into q2-quality-filter and q2-deblur

Best,
Daniel

2 Likes

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