前言
之前一直使用qiime1+usearch或者qiime1+vsearch,因为一直很诟病qiime2里封闭的系统。但最近还是因为某些需求需要里里外外的看一堆qiime2的文档,所以这里记录一下一些我highlight的地方。不能作为学习笔记但是可以作为一下踩雷的纪要吧
踩雷正文
-
q2-dada2
会自动对pairend的序列进行joind - dual-indexed 和mix-orientation reads暂时无官方解决方案
- deblur需要基于质量分数的筛选,而dada2不需要。
- deblur和dada2都有内在的chimera检查和基于丰度的筛选,所以不需要额外的filtering
- classifier作为assign taxonomy的分类器,
vsearch和blast
都基于consensus的比对和排名,剩下一个基于sklearn
的机器学习的方法. - q2-classifier并不好多少...甚至比用0.7置信区间的rdp的还差一点.灌水文.Optimizing taxonomic classification of marker-gene amplicon sequences with QIIME 2’s q2-feature-classifier plugin
- Mockrobiota测试集
- 如果没有EMP或者Casava格式的fastq的话,需要自己写一个manifest格式的文件才能导入数据.Fastq manifest PS: Casava格式就是形如
@HWI-ST279:211:C0BFTACXX:3:1101:3469:2181 1:N:0:ACTTGA
格式的fastq.@<instrument>:<run number>:<flowcell ID>:<lane>:<tile>:<x- pos>:<y-pos> <read>:<isfiltered>:<control number>:<index sequence>
文件名形如L2S357_15_L001_R1_001.fastq.gz
- the sample identifier,
- the barcode sequence or a barcode identifier,
- the lane number,
- the direction of the read (i.e. only R1, because these are single-end reads), and
- the set number.
- qiime2中筛选(filtering)提供的模式十分的多. filtering
- 筛选feature tables
- 完全基于频率的筛选
- 基于conntigency的筛选(筛选只在少数样本中出现的feature)
- 基于id的筛选
- 基于metadata的筛选(可以基于metadata写sql语句https://en.wikipedia.org/wiki/Where_(SQL).......
高级)- 基于taxonomy的筛选(可以只保留/去除某些genus/phylum的样本)
- 筛选序列
- 筛选距离矩阵
- qiime2提供的Artifact API十分的粗糙,而且由于qiime2希望建立成一个方便扩展的工具平台,所以它以一种十分奇怪的方式对plugin进行
import
,所以也导致在python的IDE中去索引相关的模块变得十分的艰难。 - qiime2中部分的数据,其实是临时地储存在临时文件中的,例如序列文件(这里用rep,代表序列为例)。如果在python的环境中的话,可以通过
rep._archiver.data_dir
找到其临时储存的地方。 - qiime2-2019.1中看起来已经完全抛弃了原来的OTU的流程了,因为在文档和源代码中都很难找到相应的部分,即使其中含有vsearch的
denovo clustering
的函数,但是其实也只是为了sOTU服务。
踩雷总结
为了更好和更灵活的使用qiime2,我写了一个整合性的python流程脚本,储存在我的github仓库中,之后随着qiime2的使用,以及更多的与原来OTU的比较,应该也会进行不定时的更新,使用文档暂时没有。。。但主入口就是main.py