用R语言随便编一个模拟fasta序列

在生物信息学中,FASTA格式(又称为Pearson格式),是一种基于文本用于表示核苷酸序列或氨基酸序列的格式。格式:第一行为一个大于号加序列名称;第二列为序列信息(核苷酸用ACGT四种字母表示;氨基酸用20个字母表示),接下来利用R语言一些函数循环编写多个fasta序列,并储存到本地。
教程参考自生信星球,海边拾贝的旺财,嘻嘻~

蛋白质序列

涉及的两个基础函数

  • sample抽样函数
    sample(x,n,replace=TRUE) 三个参数依次表示抽样数据源,抽样次数,抽样方法(TRUE表示有放回的抽取)
  • paste连接函数,有两个特殊参数,一个是sep、一个是collapse,分别对应两种连接用法。
    (1)一般使用paste需要提供两个数据对象,以供连接;使用sep参数表示连接方式,而默认为空格连接sep=" "
paste('A','B','C')
paste(c('A','B','C'),c(1,2,3))
paste(c('A','B','C'),c(1,2,3),sep="-")
1

(2)如果仅提供一个数据对象,以希望修改数据对象内的连接方式,需要使用collapse参数。(可能用的比较少,但的确这次用到了)

paste('1','2','3')  #多个对象
paste(1:3)  #一个对象
paste(1:3, collapse="")
paste(1:3, collapse="-")
2

开始吧~

步骤一:function()

x= c("A","T","C","G")
ms <-function(n){
  paste(sample(x,n,replace = TRUE),collapse = "")
} 
ms(25)
抽取

步骤二:for循环批量抽10个

y = c()
for(i in 1:10){
  y[i] = ms(25)
}
y
批量处理

步骤三:利用换行符\n组成fasta文件格式

  • 法1
x1 = paste0("seq",1:10)
# x1=paste("seq",1:10,sep="")
# paste0()就是sep=""的paste()
res <- paste0(">",x1,"\n",y)
res
writeLines(res)
res1
  • 法2
df <- data.frame(V1=paste0("seq",1:10),V2=y)
#转成表格,其中V1,V2表示列名
res2 = apply(df,1,function(x){
  paste0(">",x[1],"\n",x[2])
})
writeLines(res2)

步骤四:导出

write.table(res1,
            file = "test.fasta",
            row.names = F,
            quote = F)
最终结果

就最后的结果来看,首行为单独一个x的多余行,奇怪,存疑!有知道为什么的朋友吗?欢迎评论区留言。

你可能感兴趣的:(用R语言随便编一个模拟fasta序列)