从高吞吐量顺序读取中修剪适配器
atropos的Python项目详细描述
阿托波斯
ATROPOS是一种特殊、灵敏、快速修整NGS读数的工具。它是受人尊敬的Cutadapt Read Trimmer(https://github.com/marcelm/cutadapt" rel="nofollow">https://github.com/marcelm/cutadapt,doi:10.14806/ej.17.1.200)的分支,主要改进如下:
- 多线程支持,包括极快的"并行写入"模式。
- 一种新的基于插入对齐的成对末端读取修剪算法的实现,该算法比原始的基于cutadapt适配器对齐的算法更加敏感和具体。此算法还可以纠正读取重叠部分之间的不匹配。
- 修剪特定类型数据的选项(mirna、亚硫酸氢钠seq)。
- 一个新的命令("detect"),用于检测适配器序列和其他潜在的污染物。
- 一个新的命令("error"),用于估计排序错误率,这有助于选择适当的适配器和质量微调参数值。
- 生成与fastqc类似的读取统计信息的新命令("qc")。trim命令还可以计算修剪前后的读取统计信息(使用"--stats"选项)。
- 改进的摘要报告,包括对序列化格式(json、yaml、pickle)的支持,对用户定义模板的支持(通过可选的jinja2依赖项),以及与multiqc的集成
- 合并重叠读取的能力(这是实验性的,功能有限)。
- 能够将摘要报告和日志消息写入单独的文件。
- 读取sam/bam文件和读/写交错fastq文件的能力。
- 直接修剪SRA加入中的读取。
- 一个进度条,以及其他一些小的可用性增强功能。
手动安装
atropos可从pypi获得,并可使用pip
安装。
首次安装依赖项:
-
必要时
- Python3.3+(不支持Python2.x)
- 注意:我们在Python3.4.2中发现了一个可能的错误,该错误会导致随机分割错误。我们认为这主要影响单元测试(特别是3.4.3中的测试)。如果遇到此错误,建议升级到较新的python版本。
- cython 0.25.2+(
pip安装cython
) - 也许是python库
- pytest(用于运行单元测试)
- ProgressBar2或TQMM(ProgressBar支持)
- pysam(sam/bam输入)
- 高棉2.0+(用于检测低频适配器污染)
- Jinja2(用于用户定义的报表格式)
- ngstream(用于sra流媒体),需要ngs
pip可用于安装atropos和可选依赖项,例如:
pip安装atropos[tqdm,pysam,ngstream]
条件
有一个阿托波斯食谱"https://anaconda.org/bioconda/atropos" rel="nofollow">bioconda
conda安装-c bioconda atropos
码头工人
aDocker图像可用于Docker Hub中的atropos。
docker运行jdilon/atropos<;arguments>;
用法
阿托泊斯几乎完全向后兼容CutAdapt。如果您当前使用的是cutadapt,那么您只需安装atropos,然后在命令行中用一个关键的区别替换可执行文件名:您需要使用选项来指定输入文件名。例如:
atropos -a AGATCGGAAGAGCACACGTCTGAACTCCAGTCACGAGTTA -o trimmed.fq.gz -se reads.fq.gz
要利用多线程,请设置--threads
选项:
atropos --threads 8 -a AGATCGGAAGAGCACACGTCTGAACTCCAGTCACGAGTTA -o trimmed.fq.gz -se reads.fq.gz
要利用新的校准器(如果已将末端读取与3'适配器配对),请将--aligner
选项设置为"insert":
atropos --aligner insert -a AGATCGGAAGAGCACACGTCTGAACTCCAGTCACACAGTGATCTCGTATGCCGTCTTCTGCTTG \
-A AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT -o trimmed.1.fq.gz -p trimmed.2.fq.gz \
-pe1 reads.1.fq.gz -pe2 reads.2.fq.gz
有关更完整的使用信息,请参见文档。
出版物
atropos在peerj中发布。
请引用为:
< Buff行情>迪迪安JP,马丁M,柯林斯FS。(2017)ATROPOS:特定、敏感、快速的排序读取修剪。peerj 5:e3720https://doi.org/10.7717/peerj.3720
论文中的结果可以使用论文目录中定义的工作流完全复制。
原文的引文是:
< Buff行情>马塞尔·马丁。"Cutadapt从高通量测序读取中删除适配器序列。"EMBNet.Journal,17(1):10-121011年5月。http://dx.doi.org/10.14806/ej.17.1.200
链接
路线图
1.2</H3>- 迁移到用于文件管理的xphyle。
- 迁移到pokrok以进行进度条管理。
- 接受多个输入文件。
- 支持sam输出(包括33)。
- 使用ngstream
- 阅读"裁剪"(50)
- 支持thruplex样式适配器(其中条形码是查询序列的一部分;55)
- 可访问性:
- 创建自制配方。
- 自动更新每个版本的conda和自制配方。
- 使用argparse2tool创建galaxy工具描述
- 改进文档(24)
- 移植到最新版本的cutadapt中的改进https://cutadapt.readthedocs.io/en/stable/
- 切换到使用入口点而不是Atropos可执行文件。
1.3</H3>- 为成对的末端读数添加自动微调模式。
- 支持UMIS。
- 提供PacBio和Nanopore特定选项(https://github.com/marcelm/cutadapt/issues/120)。
- 为将修剪polya序列的rna序列数据提供选项。
- 添加正式配置文件支架(53)
- 使用哨兵自动化故障报告
- 查看[ngmerge]以改进读取合并:https://github.com/harvardinformatics/ngmerge
- 看看用pybam替换pysam
1.4</H3>- 目前,InsertAligner每端需要一个3'适配器。适配器修剪稍后将被推广,以便a)插入对齐器可以处理多对匹配的适配器和/或b)多个不同的对齐器可以用于不同的适配器。
- 与适配器数据库集成,以改进检测到的污染物与已知适配器的匹配,使用已知适配器自动修剪数据集,以及(可选)提交新数据集的适配器信息S.
- 迁移到seqio(https://github.com/jdition/seqio)以读取/写入序列文件。
- 也可以看一下如何使用htseq:https://github.com/simon-anders/htseq" rel="nofollow">https://github.com/simon anders/htseq
- 基于读取ID的通用读取筛选:https://github.com/marcelm/cutadapt/issues/107
- 当前,必须对sam/bam输入文件进行名称排序;添加一个选项以1)使用samtools或sambamba对内联读取进行预排序,或2)在内存中缓存每个读取,直到找到其匹配项。
1.5</H3>- 提供对适配器锚定的更多用户控制:https://github.com/marcelm/cutadapt/issues/53
- 允许用户定义自定义读取结构:https://github.com/nh13/read-structure-examples" rel="nofollow">https://github.com/nh13/read-structure-examples
- 支持对端解复用
- 基于条形码的解复用:https://github.com/marcelm/cutadapt/issues/118" rel="nofollow">https://github.com/marcelm/cutadapt/issues/118
- 考虑为read1和read2支持不同的错误率。
- 添加一个clipoverlapping修饰符,该修饰符将删除读取重叠(与合并相反)。
- 更仔细地观察Illumina双色化学问题的解决方案:
- 提供并选择免除G通话的质量评估
- 从读数中删去3’gs
- 同时,还要考虑使用单色化学(ISEQ)解决任何问题。
- 考虑是否支持原始IonTorrent数据的修剪/QC。
< 1.6 >< > >- 切换到使用click for cli。
- 实现一个公共插件api。
- 添加更多日志记录并将日志消息从旧格式转换为新格式字符串。
- 添加选项,根据MSPI消化的读取中的已填充胞嘧啶甲基化状态估计亚硫酸氢盐转化率。
- CPU和内存分析。试行:
- 查看一些新的修剪/qc程序;决定是否添加到基准和/或合并它们的任何特性
2</H3>命令行选项的简化,也许可以进一步将功能分解为不同的子命令,但也可以根据上下文对默认选项值进行更智能的选择。
考虑添加其他报告格式
添加模糊匹配:< HRFF="http://Github. CO/DANIEL-LUU-C0DEB0t/JavaFuzzy搜索"Re="NoFoLoLo>"http://Github.COM/DANIEL-LUU-C0DEB0T/Java模糊搜索/P>
使用
- < Buff行情>
90%的测试覆盖率
使用afl进行模糊测试
超过2.0
- 实施其他替代对齐算法。
- 在adept中实现错误检测算法:https://github.com/lanl-bioinformatics/adept" rel="nofollow">https://github.com/lanl bioinformatics/adept
- 探索新的质量调整算法
- urqt:http://www.ncbi.nlm.nih.gov/pmc/articles/pmc450468/
- infotrim:github.com/jacobborter/infotrim
- 镰刀是一种有趣的新修剪器。根据即将发表的论文中基准测试的外观,我们将把它添加到与atropos进行比较的工具列表中,并可能实现适配器匹配的贝叶斯方法。
- 尝试用基于异步的实现替换多核实现(使用processpoolexecutor和uvloop)。
- 自动自适应调整队列大小,以最大限度地平衡内存使用和延迟。
- 创建自制配方。
- 自动更新每个版本的conda和自制配方。
- 使用argparse2tool创建galaxy工具描述
- 为成对的末端读数添加自动微调模式。
- 支持UMIS。
- 提供PacBio和Nanopore特定选项(https://github.com/marcelm/cutadapt/issues/120)。
- 为将修剪polya序列的rna序列数据提供选项。
- 添加正式配置文件支架(53)
- 使用哨兵自动化故障报告
- 查看[ngmerge]以改进读取合并:https://github.com/harvardinformatics/ngmerge
- 看看用pybam替换pysam
1.4</H3>- 目前,InsertAligner每端需要一个3'适配器。适配器修剪稍后将被推广,以便a)插入对齐器可以处理多对匹配的适配器和/或b)多个不同的对齐器可以用于不同的适配器。
- 与适配器数据库集成,以改进检测到的污染物与已知适配器的匹配,使用已知适配器自动修剪数据集,以及(可选)提交新数据集的适配器信息S.
- 迁移到seqio(https://github.com/jdition/seqio)以读取/写入序列文件。
- 也可以看一下如何使用htseq:https://github.com/simon-anders/htseq" rel="nofollow">https://github.com/simon anders/htseq
- 基于读取ID的通用读取筛选:https://github.com/marcelm/cutadapt/issues/107
- 当前,必须对sam/bam输入文件进行名称排序;添加一个选项以1)使用samtools或sambamba对内联读取进行预排序,或2)在内存中缓存每个读取,直到找到其匹配项。
1.5</H3>- 提供对适配器锚定的更多用户控制:https://github.com/marcelm/cutadapt/issues/53
- 允许用户定义自定义读取结构:https://github.com/nh13/read-structure-examples" rel="nofollow">https://github.com/nh13/read-structure-examples
- 支持对端解复用
- 基于条形码的解复用:https://github.com/marcelm/cutadapt/issues/118" rel="nofollow">https://github.com/marcelm/cutadapt/issues/118
- 考虑为read1和read2支持不同的错误率。
- 添加一个clipoverlapping修饰符,该修饰符将删除读取重叠(与合并相反)。
- 更仔细地观察Illumina双色化学问题的解决方案:
- 提供并选择免除G通话的质量评估
- 从读数中删去3’gs
- 同时,还要考虑使用单色化学(ISEQ)解决任何问题。
- 考虑是否支持原始IonTorrent数据的修剪/QC。
< 1.6 >< > >- 切换到使用click for cli。
- 实现一个公共插件api。
- 添加更多日志记录并将日志消息从旧格式转换为新格式字符串。
- 添加选项,根据MSPI消化的读取中的已填充胞嘧啶甲基化状态估计亚硫酸氢盐转化率。
- CPU和内存分析。试行:
- 查看一些新的修剪/qc程序;决定是否添加到基准和/或合并它们的任何特性
2</H3>命令行选项的简化,也许可以进一步将功能分解为不同的子命令,但也可以根据上下文对默认选项值进行更智能的选择。
考虑添加其他报告格式
添加模糊匹配:< HRFF="http://Github. CO/DANIEL-LUU-C0DEB0t/JavaFuzzy搜索"Re="NoFoLoLo>"http://Github.COM/DANIEL-LUU-C0DEB0T/Java模糊搜索/P>
使用
- < Buff行情>
90%的测试覆盖率
使用afl进行模糊测试
超过2.0
- 实施其他替代对齐算法。
- 在adept中实现错误检测算法:https://github.com/lanl-bioinformatics/adept" rel="nofollow">https://github.com/lanl bioinformatics/adept
- 探索新的质量调整算法
- urqt:http://www.ncbi.nlm.nih.gov/pmc/articles/pmc450468/
- infotrim:github.com/jacobborter/infotrim
- 镰刀是一种有趣的新修剪器。根据即将发表的论文中基准测试的外观,我们将把它添加到与atropos进行比较的工具列表中,并可能实现适配器匹配的贝叶斯方法。
- 尝试用基于异步的实现替换多核实现(使用processpoolexecutor和uvloop)。
- 自动自适应调整队列大小,以最大限度地平衡内存使用和延迟。
- 也可以看一下如何使用htseq:https://github.com/simon-anders/htseq" rel="nofollow">https://github.com/simon anders/htseq
- 提供对适配器锚定的更多用户控制:https://github.com/marcelm/cutadapt/issues/53
- 允许用户定义自定义读取结构:https://github.com/nh13/read-structure-examples" rel="nofollow">https://github.com/nh13/read-structure-examples
- 支持对端解复用
- 基于条形码的解复用:https://github.com/marcelm/cutadapt/issues/118" rel="nofollow">https://github.com/marcelm/cutadapt/issues/118
- 考虑为read1和read2支持不同的错误率。
- 添加一个clipoverlapping修饰符,该修饰符将删除读取重叠(与合并相反)。
- 更仔细地观察Illumina双色化学问题的解决方案:
- 提供并选择免除G通话的质量评估
- 从读数中删去3’gs
- 同时,还要考虑使用单色化学(ISEQ)解决任何问题。
- 考虑是否支持原始IonTorrent数据的修剪/QC。
- 切换到使用click for cli。
- 实现一个公共插件api。
- 添加更多日志记录并将日志消息从旧格式转换为新格式字符串。
- 添加选项,根据MSPI消化的读取中的已填充胞嘧啶甲基化状态估计亚硫酸氢盐转化率。
- CPU和内存分析。试行:
- 查看一些新的修剪/qc程序;决定是否添加到基准和/或合并它们的任何特性
2</H3>命令行选项的简化,也许可以进一步将功能分解为不同的子命令,但也可以根据上下文对默认选项值进行更智能的选择。
考虑添加其他报告格式
添加模糊匹配:< HRFF="http://Github. CO/DANIEL-LUU-C0DEB0t/JavaFuzzy搜索"Re="NoFoLoLo>"http://Github.COM/DANIEL-LUU-C0DEB0T/Java模糊搜索/P>
使用
- < Buff行情>
90%的测试覆盖率
使用afl进行模糊测试
超过2.0
- 实施其他替代对齐算法。
- 在adept中实现错误检测算法:https://github.com/lanl-bioinformatics/adept" rel="nofollow">https://github.com/lanl bioinformatics/adept
- 探索新的质量调整算法
- urqt:http://www.ncbi.nlm.nih.gov/pmc/articles/pmc450468/
- infotrim:github.com/jacobborter/infotrim
- 镰刀是一种有趣的新修剪器。根据即将发表的论文中基准测试的外观,我们将把它添加到与atropos进行比较的工具列表中,并可能实现适配器匹配的贝叶斯方法。
- 尝试用基于异步的实现替换多核实现(使用processpoolexecutor和uvloop)。
- 自动自适应调整队列大小,以最大限度地平衡内存使用和延迟。
命令行选项的简化,也许可以进一步将功能分解为不同的子命令,但也可以根据上下文对默认选项值进行更智能的选择。
考虑添加其他报告格式
添加模糊匹配:< HRFF="http://Github. CO/DANIEL-LUU-C0DEB0t/JavaFuzzy搜索"Re="NoFoLoLo>"http://Github.COM/DANIEL-LUU-C0DEB0T/Java模糊搜索/P>
使用
90%的测试覆盖率
使用afl进行模糊测试
- urqt:http://www.ncbi.nlm.nih.gov/pmc/articles/pmc450468/
- infotrim:github.com/jacobborter/infotrim
虽然我们认为命令行界面是稳定的,但atropos的内部代码组织可能会发生变化。此时,我们建议不要直接与作为库的atropos接口(或者准备让您的代码崩溃)。内部代码组织将从2.0版开始稳定,计划在2017年某个时候进行。
如果您想建议其他增强功能,可以在我们的github页面提交问题和/或请求。