我有一些fasta序列
然后我要在这些fasta中提取其中一些fasta序列
biopython便是很好的处理包
基本处理代码如下
A002_usefulname是包含我要提取的序列的名字那一行(这里是不包括">")
import pandas as pd
from Bio import SeqIO
import os
os.system("rm -rf A003_use.fasta")
data=open("A003_use.fasta","a+")
with open("A002_usefulname") as f:
for id in f:
print(id.rstrip())
seq=SeqIO.parse("seq.fasta","fasta")
for line in seq:
if line.id==id.rstrip():
data.write(">"+str(id.rstrip())+"\n"+str(line.seq)+"\n")
最近发现这种小脚本用的比较多,所以改造一下,让它变得通用
其中
第一位是要提取的名字的文件
第二位是被提取的序列
第三位是生成的文件名字
from Bio import SeqIO
import os
import sys
data=open(sys.argv[3],"w+")
with open(sys.argv[1]) as f:
for id in f:
print(id.rstrip())
seq=SeqIO.parse(sys.argv[2],"fasta")
for line in seq:
if line.id==id.rstrip():
data.write(">"+str(id.rstrip())+"\n"+str(line.seq)+"\n")
使用方法
python Extra_name.py lastname.txt seq.fasta new_seq.fa