FASTA文件开头出现空>符号问题求助
解决FASTA文件开头出现空>符号的问题
这个问题的核心是你对entrez_fetch和write.fasta的用法搭配出现了偏差,咱们一步步拆解解决:
问题根源
entrez_fetch(db = "protein", id = FGF2, rettype = "fasta")返回的files已经是完全格式化好的FASTA文本——里面包含了所有的>序列ID行和对应的氨基酸序列。但你使用的write.fasta(大概率是seqinr包的函数),设计逻辑是接收单独的序列字符串向量和对应的序列名称向量,再由它拼接成标准FASTA格式。
当你把完整的FASTA文本直接传给sequences参数时,names(files)其实是NULL(因为files是单个长字符串,没有命名属性),所以write.fasta会先生成一个无名称的序列头(也就是空的>),再把整个files内容当成这个空序列的序列部分,最终就出现了开头多余空>的问题。
解决方案一:直接写入已格式化的FASTA文本(最简单)
既然entrez_fetch已经返回了现成的FASTA内容,完全不需要再用write.fasta二次处理,直接用writeLines写入文件即可:
files <- entrez_fetch(id = FGF2, rettype = "fasta", db = "protein") writeLines(files, "mySeqs.fasta")
解决方案二:如果一定要用write.fasta(先解析再写入)
如果你因为特定需求必须使用write.fasta,那需要先把entrez_fetch返回的FASTA文本解析成名称和序列分离的结构,再传入函数:
library(seqinr) # 获取FASTA文本 files <- entrez_fetch(id = FGF2, rettype = "fasta", db = "protein") # 解析FASTA文本(用textConnection把字符串转成可读连接) con <- textConnection(files) parsed_fasta <- read.fasta(con, seqtype = "AA", as.string = TRUE) close(con) # 用write.fasta写入 write.fasta( sequences = unlist(parsed_fasta), names = names(parsed_fasta), file.out = "mySeqs.fasta" )
这样处理后,生成的FASTA文件就不会出现开头的空>符号了。
内容的提问来源于stack exchange,提问作者rinrin
相关产品推荐
相关产品推荐

