首页 > 解决方案 > 替换 FASTA 文件中的核苷酸

问题描述

我正在尝试使用从 gnoMAD 中提取的 CSV 文件为基因的每个变体制作 fasta 文件。在这个函数中,x 是一个包含每个变体坐标的列表,Y 是使用 seqinr 库中的 read.fasta 函数打开的 fasta 文件,data 是我从 gnomAD 下载的文件。我在使用最后一个 if 语句时遇到问题,应该管理 SNV。由于某种原因,不是在指定位置插入核苷酸,而是在 fasta 文件的末尾连接该值。我已经阅读了该库的文档,但没有找到有关 fasta 文件的内部表示的任何信息。输出示例:

t" "t" "g" "c" "t" "c" "a" "c" "a" "g" "t" "g" "t" "t" "t" "g" 
                                                                                
"a" "g" "c" "a" "g" "t" "g" "c" "t" "g" "a" "g" "c" "a" "c" "a" "a" "a" "g" "c" 
                                                                                
"a" "g" "a" "c" "a" "c" "t" "c" "a" "a" "t" "a" "a" "a" "t" "g" "c" "t" "a" "g" 
                                                  9 
"a" "t" "t" "t" "a" "c" "a" "c" "a" "c" "t" "c" "C"

索引为 9 的 C 应位于序列的第九位

files<-function(x,y,data){
    test<-str_detect(data[ ,"Consequence"],"[del]")
    names<-paste(data[ ,"Chromosome"],data[ ,"Position"],data[ ,"Reference"],data[ ,"Alternate"],"ACE2",sep="-")
    for (j in 1:length(x)){
        copy<-y
        if(length(x[[j]])!=1 && test[j]==TRUE){
            for(i in x[[j]][1]:x[[j]][2]){
                copy[[1]][i]<-NA
            }
            copy<-copy[[1]][!is.na(copy[[1]])]
        }
        if(length(x[[j]])==1 && test[j]==TRUE){
            copy[[1]][x[[j]][1]]<-NA
            copy<-copy[[1]][!is.na(copy[[1]])]
        }
        if(test[j]==FALSE){
            n<-x[[j]][1]
            copy[[1]][n]<-complementary(data[j,"Alternate"])
            print(copy[[1]][n]) 
        }
    putz<-paste(names[j],"fasta",sep=".")
    write.fasta(copy,names[j],putz)
}
}



标签: rfunctionbioinformaticsfasta

解决方案


推荐阅读