通过rfam数据库对smRNA进行注释并分类统计。
准备:1、rfam数据库 2、rfam clain文件 3、软件infernal 4、待测序列(fasta文件)
一、数据库下载
进入rfam官网,点击FTP,选择最新版本,下载这两个文件并解压。
二、安装infernal
下载数据库和infernal安装方法参考https://www.jianshu.com/p/0bceb4c54474
三、使用
1、建库:cmpress Rfam.cm
2、计算Z值:公式:Z = total * 2 * CMmumber/106(后续命令会使用到)
total值查看:esl-seqstat my-genome.fa
CMmumber值查看:
cd database(path)
less Rfam.cm | grep 'NAME'|sort|wc -l (14.2版本计算为6048)
3、命令(使用绝对路径)
#获得比对结果
cmscan -Z 67103.40672 -T 10 --nohmmonly --tblout /mapping/WPS167.tblout --fmt 2 --rfam --clanin /database/Rfam/Rfam.clanin --cpu 16 /database/Rfam/Rfam.cm /mapping/my genome.fa > /mapping/my genome.cmscan
-Z :前面计算的Z值
-T:输出阈值的设定,默认20
--tblout:输出为tblout格式,其余参数默认就可以了,在这里需要提到的是常规参数中会添加--cut_ga, 但是smRNA通常都是很短的片段,比对分值常较低,如果使用--cut_ga,根据官网界定的阈值来筛选,很可能会导致空的tblout。具体cmscan的使用可以通过-h来查看。
输出文件有2个,.tblout和.cmscan。.tblout为主要结果,.cmscan记录的hit的详细信息(这个不讲了,暂时用不上)。
tblout结果格式然后我们对olp为“=”的序列进行删除(=意思是在数据库中已经比对到了其他更好的序列,所以这条可以不要)
命令:grep -v '=' WPS167.tblout > WPS167_deoverlapped.tblout
命令:awk 'BEGIN{OFS="\t";}{if(FNR==1) print "target_name\taccession\tquery_name\tquery_start\tquery_end\tstrand\tscore\tEvalue"; if(FNR>2 && $20!="=" && $0!~/^#/) print $2,$3,$4,$10,$11,$12,$17,$18; }' WPS167_deoverlapped.tblout > WPS167.tblout.final.xls #整理结果文件,保留需要的数据。
保留后数据命令:sort -t $'\t' -k3,3 -u WPS167.tblout.final.xls > WPS167miRNA_avrep.xls #设置阈值过低,会出现同一序列反向和正向比对的结果,出现重复比对,为了后面进行各类RNA分类统计的占比,需要根据query_name对序列进行去重
命令:awk '{print $1}' WPS167miRNA_avrep.xls > id.xls #提取ID
命令:sort id.xls | uniq -c| sort -nr > id.frequency.txt #统计ID频率
持续更新。。。
网友评论