Giter Site home page Giter Site logo

q2-quality-filter's Introduction

qiime2 (the QIIME 2 framework)

Source code repository for the QIIME 2 framework.

QIIME 2™ is a powerful, extensible, and decentralized microbiome bioinformatics platform that is free, open source, and community developed. With a focus on data and analysis transparency, QIIME 2 enables researchers to start an analysis with raw DNA sequence data and finish with publication-quality figures and statistical results.

Visit https://qiime2.org to learn more about the QIIME 2 project.

Installation

Detailed instructions are available in the documentation.

Users

Head to the user docs for help getting started, core concepts, tutorials, and other resources.

Just have a question? Please ask it in our forum.

Developers

Please visit the contributing page for more information on contributions, documentation links, and more.

Citing QIIME 2

If you use QIIME 2 for any published research, please include the following citation:

Bolyen E, Rideout JR, Dillon MR, Bokulich NA, Abnet CC, Al-Ghalith GA, Alexander H, Alm EJ, Arumugam M, Asnicar F, Bai Y, Bisanz JE, Bittinger K, Brejnrod A, Brislawn CJ, Brown CT, Callahan BJ, Caraballo-Rodríguez AM, Chase J, Cope EK, Da Silva R, Diener C, Dorrestein PC, Douglas GM, Durall DM, Duvallet C, Edwardson CF, Ernst M, Estaki M, Fouquier J, Gauglitz JM, Gibbons SM, Gibson DL, Gonzalez A, Gorlick K, Guo J, Hillmann B, Holmes S, Holste H, Huttenhower C, Huttley GA, Janssen S, Jarmusch AK, Jiang L, Kaehler BD, Kang KB, Keefe CR, Keim P, Kelley ST, Knights D, Koester I, Kosciolek T, Kreps J, Langille MGI, Lee J, Ley R, Liu YX, Loftfield E, Lozupone C, Maher M, Marotz C, Martin BD, McDonald D, McIver LJ, Melnik AV, Metcalf JL, Morgan SC, Morton JT, Naimey AT, Navas-Molina JA, Nothias LF, Orchanian SB, Pearson T, Peoples SL, Petras D, Preuss ML, Pruesse E, Rasmussen LB, Rivers A, Robeson MS, Rosenthal P, Segata N, Shaffer M, Shiffer A, Sinha R, Song SJ, Spear JR, Swafford AD, Thompson LR, Torres PJ, Trinh P, Tripathi A, Turnbaugh PJ, Ul-Hasan S, van der Hooft JJJ, Vargas F, Vázquez-Baeza Y, Vogtmann E, von Hippel M, Walters W, Wan Y, Wang M, Warren J, Weber KC, Williamson CHD, Willis AD, Xu ZZ, Zaneveld JR, Zhang Y, Zhu Q, Knight R, and Caporaso JG. 2019. Reproducible, interactive, scalable and extensible microbiome data science using QIIME 2. Nature Biotechnology 37:852–857. https://doi.org/10.1038/s41587-019-0209-9

q2-quality-filter's People

Contributors

chriskeefe avatar david-rod avatar ebolyen avatar gregcaporaso avatar jairideout avatar lizgehret avatar oddant1 avatar q2d2 avatar thermokarst avatar turanoo avatar wasade avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

q2-quality-filter's Issues

increase minimum-quality default to 19?

I think going with a minimum-quality default of 19 makes sense here, as this data is intended to go directly into deblur and that's what's used in the deblur paper. I don't see a real reason to match the QIIME 1 default of 3 here, I think it's too low. Is there another motivation to keep it at 3?

expand test suite

Are you planning on expanding the unit tests before release? They look pretty sparse right now, for example I don't think there are any test cases that include filtering reads which are too short after truncation (sorry if I'm missing that).

QualityFilterStatsFmt -> Metadata transformer breaks on numeric IDs

The QualityFilterStatsFmt -> Metadata transformer doesn't work if the sample IDs can all be interpreted as numeric. The pandas.read_csv call doesn't appear to always read the sample IDs as strings. With the new Metadata object, IDs are required to be strings, causing an error message when the transformer is invoked.

forum x-ref

would a `filter-fasta` method be appropriate in this plugin?

Improvement Description
It would be useful to replicate the functionality of qiime1's filter_fasta.py — e.g., see this forum post.

Comments
I am not sure whether this would be at home in q2-quality-filter, demux, or some other plugin that has yet to be created (q2-filter-everything-under-the-sun).

Whichever plugin would be appropriate (and perhaps this is an argument for making a new plugin, or for combining with the two demultiplexing plugins into a single fastq/fasta handling plugin), I could imagine other fasta/fastq functions that could accompany this, e.g., trimming, subsampling.

References
filter_fasta.py — e.g., see this forum post

visualize-stats suggestions

Could you add columns for total output reads and fraction of input reads filtered (or retained, either way).

It would also be useful to have a row at the top of the table including the sum of all of the other rows (so that it's easy to know what the total input/output reads were).

make `QualityFilterStats` viewable as `qiime2.Metadata`

We could then pass this to qiime metadata tabulate and drop the visualize_stats visualizer.

For example:

qiime quality-filter q-score --i-demux demux.qza --o-filtered-sequences demux-filtered.qza --o-filter-stats demux-filter-stats.qza
qiime metadata tabulate --m-input-file demux-filter-stats.qza --o-visualization demux-filter-stats.qzv
qiime tools view demux-filter-stats.qzv

Sample IDs which are entirely numeric can get corrupted

On MANIFEST read, if the sample IDs are numeric, pandas will attempt to interpret the field as though they are numeric. This is problematic in the event of trailing zeros (e.g., 0012300 -> 123).

The specific line resulting in the cast is here. Testing whether simply forcing dtype=str is sufficient.

Add the ability to reverse complement sequences before writing them

Improvement Description
split_libraries_fastq.py provided a --rev_comp flag, that would let you reverse complement the sequences before they were written out.

After talking with @wasade, we both agree that such functionality might not be appropriate for q2-quality-filter, but we couldn't really figure out where this would fit better, so also opening this issue hoping this can get relocated to the proper repo.

quality filtering of paired end reads

I ran
qiime quality-filter q-score --i-demux artifacts/samples.qza --output-dir quality-filtered.qza

samples.qza has two paired end samples

  • S1_R1.fastq
  • S1_R2.fastq
  • S2_R1.fastq
  • S2_R2.fastq

the quality-filtered.qza file has 2 files only
S1_R1.fastq
S2_R1.fastq

I expected four files.

How can I solve this problem

New Feature: filter barcodes/reads based on barcode quality scores

Addition Description
Filtering reads/barcodes based on average barcode Q scores is a simple method to eliminate Illumina index "cross-talk".

Current Behavior
Currently nothing in the q2-family allows filtering based on barcode quality, as far as I know.

Proposed Behavior
Filter barcodes based on average barcode Q score. Drop reads [and barcodes] paired with the bad barcode reads.

Would need both single and paired versions.

Need to report filtering summary (# reads in, # reads out, % removed — could report removals on a per-barcode basis. anything else?). Should output a filter stats visualization or print to stdout?

Comments
@ebolyen has suggested that cutadapt would be a good tool for this. However, we both agreed that this plugin would be the best home, as (a) it is a bioinformatic protocol more than a tool and relevant to the goals of this plugin and (b) it is rather similar in spirit to the q-score* methods currently available in this plugin, but examines barcodes instead of reads.

Explore parallelization

Comments
It is possible these methods are already IO-bound, but in case they aren't, it would be easy to parallelize.

References
Came up on the forum.

add support for SampleData[PairedEndSequencesWithQuality]

This would be an additional input type to q-score - reverse reads would just be ignored and not included in the output, so the output would always be SampleData[SequencesWithQuality]. We don't need to perform quality control on the reverse reads (at least not at this stage) since the assumption is that if that is wanted, the user would have joined their reads first and would instead be using q-score-joined.

This is the same idea that we have in place for dada2 denoise-single, where if you provide paired end reads it only pays attention to the forward reads.

parameter name suggestions

Some of the parameters are abbreviated and others aren't:

  --p-minimum-quality INTEGER    [default: 3]
  --p-quality-window INTEGER     [default: 3]
  --p-min-length-fraction FLOAT  [default: 0.75]
  --p-maximum-ambiguous INTEGER  [default: 0]

Could you change minimum to min and maximum to max?

add bokulich nature methods citation

This would make sense to add to the basic method. We can leave it out for the time-being, until we have method-specific citations, or add it as a plugin-level citation since it's the only filter that is currently implemented in this plugin.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.