|||
统计碱基组成的R语言小程序Rjuan 1.20(序列输入格式.fastr)
熊荣川
六盘水师范学院生物信息学实验室
http://blog.sciencenet.cn/u/Bearjazz
之前我们所开发的一段R语言代码——Rjuan 1.0可用于一段序列的各个碱基数量的统计。(详见“统计碱基组成的R语言小程序Rjuan 1.0” http://bbs.sciencenet.cn/home.php?mod=space&uid=508298&do=blog&id=553110)
我们的第一次升级解决了输入序列长度限制的问题
http://bbs.sciencenet.cn/home.php?mod=space&uid=508298&do=blog&id=553147
第二次升级在程序的后面加上一段具有打印功能的代码,并将信息保存为矩阵,并与输出为表格文件
http://bbs.sciencenet.cn/home.php?mod=space&uid=508298&do=blog&id=553163
第三次升级对核心代码部分进行函数化封装,这样的在处理新的输入序列时,只需要使用调用函数的方式就可以输出结果了。同时也避免了每次都要进行计数器清零操作。
http://bbs.sciencenet.cn/home.php?mod=space&uid=508298&do=blog&id=553282
第四次升级,增加了各碱基比率统计并输出。
http://bbs.sciencenet.cn/home.php?mod=space&uid=508298&do=blog&id=553293
现在我们对程序进行全新的升级,使用R语言自己的方式来转化序列的输入格式。通常序列保存的格式为fasta格式,这里例如isk.fasta,这里使用本程序的序列格式非常简单,直接把带有“>”符号的标题行删除即可,为了和原来的fasta格式区别,我们把这个格式称为fastr格式,例如isk.fastr。下面我们来示范怎么导入这种格式的序列数据,并作碱基统计运算。
|
nucount=function(x){ na=0 nt=0 ng=0 nc=0 for (i in 1:length(x)) ( if(x[i]=="A") na=na+1 else if(x[i]=="T") nt=nt+1 else if(x[i]=="G") ng=ng+1 else if(x[i]=="C") nc=nc+1 ) sum=sum(c(na,nt,ng,nc)) RateA=na/sum RateT=nt/sum RateG=ng/sum RateC=nc/sum sumR=RateA+RateT+RateG+RateC namen=c("na","nt","ng","nc","sum") numbern=c(na,nt,ng,nc,sum) Rate=c(RateA,RateT,RateG,RateC,sumR) shown=data.frame(namen,numbern,Rate) print(shown) } |
载入主程序 |
> |
导入fastr格式文件 |
|
> |
data <- strsplit(data,'') |
分割字符 |
|
打散字符 |
|
> |
调用函数nucount() |
|
|
namen numbern Rate 1 na 6138 0.2920076 2 nt 6326 0.3009515 3 ng 2999 0.1426736 4 nc 5557 0.2643673 5 sum 21020 1.0000000
|
结果 |
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-24 14:51
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社