我有一个类似这样的FASTA:
'>NZ_UARI01000011.1 Cronobacter sakazakii strain NCTC11467, whole genome shotgun sequence GCGCATTTCTTATTACGGAGAAATACAGCAGCGTGTCTGTTTCAATTTTCAGCTTGTTCCGGATTGTTAAAGAGCAAATA CTT...
'>NZ_UARI01000001.1 Cronobacter sakazakii strain NCTC11467, whole genome shotgun sequence CAATTTTACTTGTTGATATAACAATCACGCTAACTATTCAGCCAATAGCTCCCGCATTAAAACCAGCTACTTCAGCCAAA ...
我想将标题更改为:
'>Cronobacter sakazakii strain NCTC11467_1 GCGCATTTCTTATTACGGAGAAATACAGCAGCGTGTCTGTTTCAATTTTCAGCTTGTTCCGGATTGTTAAAGAGCAAATA CTT... '>Cronobacter sakazakii strain NCTC11467_2 CAATTTTACTTGTTGATATAACAATCACGCTAACTATTCAGCCAATAGCTCCCGCATTAAAACCAGCTACTTCAGCCAAA ... (and so on) (Ignore the ' in the beginning of the header)
然后我想用头的名称保存这个文件。理想情况下,我不想制作一个新的fasta,而只是用更正替换该文件: 阪崎Cronobacter_菌株NCTC11467.fasta
现在这将是很容易单独做,但我有超过600个文件。因此,每个人都要做的想法并不是我想走的路线。我在这里编写了一个脚本,我使用正则表达式隔离了我想要的标题部分,并将其存储在一个名为new_new的列表中。然后,我想匹配这些值并替换为以“>;”开头的每一行,然后加上1/2/3/。。。或a#随后(如上所示)。 你能帮我完成这项任务吗? 如果我提供的脚本不值得继续,并且您有更好的解决方案,请让我知道
#usr/bin/python
import sys
import os
import re
import csv
#sys.argv[1] =fasta
#sys.argv[2] = list of header names (mass)
#Gather existing headers to list (new_new)
with open(sys.argv[1], "r+") as text_file:
lines = text_file.readlines()[1:]
mylist = []
new_new = []
for i in lines:
if '.' in i:
mylist.append(i)
pattern = r">*Cronobacter +\w* +\w* +.*[,]"
regex = re.compile(pattern, re.IGNORECASE)
for j in mylist:
for match in regex.finditer(j):
value = match.group(0)
new_new.append(value)
for k in lines:
if '>' in k:
k= k.replace('.*',new_new[value])
text_file.close()
'''
目前没有回答
相关问题 更多 >
编程相关推荐