嵌合体?也就那么回事儿——高通量数据处理二三事
前些时间生信小白参天大葱(就是本人)在做细菌16S的高通量数据处理,费了老大劲将公司给的Raw Data处理成Clean Data,正要高高兴兴进行OTU聚类,却被实验室一霸小圆师姐急忙拦住。
“住手!”
本葱一脸茫然,刚刚鼓起的半拉子成就感被师姐浇了冷水,瑟瑟小心得问:“肿么了?”
师姐侧了侧头,用眼角盯着本葱,不屑地说:“平时叫你多读书,嵌合体(Chimera)去了没?”
“啥?嵌合体啥东西??”本葱读书少,赶快抱起垫在桌子下面的红宝书看看嵌合体啥东西。
本葱翻遍了红宝书也没有找到合适的定义,根据本葱理解,高通量测序谈及的嵌合体应该是这么个东西,为方便理解本葱画了个草图,如下。
在序列扩增时多数序列是顺着单条序列前进的,如Read1扩增产生新的Read1,Read2扩增产生新的Read2。但有时两条序列也可能缠在一起,扩增时产生的新序列前半段可能属于Read1,后半段属于Read2,形成了拥有两条序列信息的嵌合体序列。
后来本葱在与公司技术人员闲聊时问及这个问题,砖家说:“嵌合体可能是在PCR扩增时造成的,同时,Illumina PE测序双端序列拼接过程中也可能产生嵌合体”。
听了砖家的话本葱终于弱弱的明白,嵌合体不是啥好东西,要去掉!
咋去呢?本葱又翻开红宝书,看到几个醒目的大字,“Usearch61去除嵌合体”。
usearch61?本葱电脑上没有呀,于是本葱又花了点时间安装上了usearch61
下载网址:http://drive5.com/usearch/
OK,万事具备,本葱终于可以去除嵌合体了
# 1嵌合体检测
参考: http://qiime.org/scripts/identify_chimeric_seqs.html
嵌合体检测分为有参和无参,即检测时是否使用参考数据库。
identify_chimeric_seqs.py -m usearch61 -i split_libraries/seqs.fna -o usearch61_chimera_checking/ -r $HOME/Database/gold.fasta
#基于usearch61,参考数据库为silva.gold数据库。
#或identify_chimeric_seqs.py -m usearch61 -i split_libraries/seqs.fna -o usearch61_chimera_checking/ --suppress_usearch61_ref
#基于usearch61,无参考序列(功能基因和ITS可用此方法)。
#上述指令是在qiime下运行的,使用到python包:identify_chimeric_seqs.py
#指令中,
-m是选择嵌合体检测方法,除此处的usearch61外,还有blast_fragments 和ChimeraSlayer,默认ChimeraSlayer;
-i是输入文件,此处需要注意的是输入应是没有聚类的序列,如之前质控生成的clean data,而不是聚类后的代表序列;
-o是输出路径,嵌合体检测会在输出目录 “usearch61_chimera_checing/ ”生成“chimeras.txt”文件,此文件是记录检测为嵌合体的序列名称的。嵌合体的去除即是将检测出的嵌合体序列(chimeras.txt)从原序列文件(split_libraries/seqs.fna)中去除;
-r是参考数据库的目录,本葱的数据库存放在了$HOME/Database/目录下,是进行有参嵌合体检测时需要指明的。因为嵌合体检测比较耗时,所以本葱此处选择比较小的gold数据库。
此外需要注意的是,usearch61处理太大的数据会卡死,如有需要可以将数据分成几个,之后再合并。
# 2嵌合体去除
filter_fasta.py -f split_libraries/seqs.fna -o non_chimeric_seqs.fasta -s usearch61_chimera_checking/chimeras.txt -n
#去除嵌合体序列。
#由此输出文件“non_chimeric_seqs.fasta”即为去除嵌合体的序列文件。
去除完嵌合体本葱舒了口气,悄悄把脚从桌腿下抽了出来,换上了红宝书。