(日常记录)smRNA本地注释分类

通过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频率

持续更新。。。

你可能感兴趣的:((日常记录)smRNA本地注释分类)