批量替换序列id的小方法
利用* Batch Entrez
工具根据accession号批量下载基因序列时,得到的序列id通常不包含物种名,如下图:
然后我们可以将物种名去替换其中“>”后的内容,由于课题需要写了个小方法:
准备两个文件①从Batch Entrez批量下载的序列文件;②物种名与accession好的对应文件(如下图)。
利用以下脚本可以一键替换:
f1 = open("accession.txt","r")
f3 = open("out.fas","w")
lines1 = f1.readlines()
with open('ask1.fas') as f2:
dict = {line.strip():next(f2).strip() for line in f2}
keys = dict.keys()
for line1 in lines1:
line1 = line1.strip()
line1 = line1.split()
for key in keys:
if line1[1] in key:
f3.write(">")
f3.write(line1[0])
f3.write("\n")
value = dict[key]
f3.write(value)
f3.write("\n")
f1.close()
f2.close()
其中,ask1.fas替换为目标序列文件即可。
希望能帮助到大家!