从fasta中提取多个序列,但具有不同的nam

2024-10-01 15:37:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从一个基于ID列表的fasta文件中提取序列的子集,目前为止还不错。 我的问题是,我的ID列表包含一个额外的第二列(它表示序列的编码部分),我希望将其保存在新的fasta文件中

File 1: Id list
>TCONS_00000004  654:819
>TCONS_00000006  238:367
>TCONS_00000009  956:1555

File 2: fasta file
>TCONS_00000004
AAAATAATAAACTTTGCAAAGAGCAAATTTGAAGAAGCAGTTGATATACGTCGAGAGATTTCTGCAACAG 
CGCGATTATATTACATTCAATTAATTAAAATGCAGTACAGAGACATCCACGATTTCGTCAACATACCAGG
>TCONS_00000006
AAAATAATAAACTTTGCAAAGAGCAAATTTGAAGAAGCAGTTGATATACGTCGAGAGATTTCTGCAACAG 
CGCGATTATATTACATTCAATTAATTAAAATGCAGTACAGAGACATCCACGATTTCGTCAACATACCAGG
>TCONS_00000009
AAAATAATAAACTTTGCAAAGAGCAAATTTGAAGAAGCAGTTGATATACGTCGAGAGATTTCTGCAACAG 
CGCGATTATATTACATTCAATTAATTAAAATGCAGTACAGAGACATCCACGATTTCGTCAACATACCAGG

Expected outcome:
 >TCONS_00000004 654:819
AAAATAATAAACTTTGCAAAGAGCAAATTTGAAGAAGCAGTTGATATACGTCGAGAGATTTCTGCAACAG 
CGCGATTATATTACATTCAATTAATTAAAATGCAGTACAGAGACATCCACGATTTCGTCAACATACCAGG
>TCONS_00000006 238:367
AAAATAATAAACTTTGCAAAGAGCAAATTTGAAGAAGCAGTTGATATACGTCGAGAGATTTCTGCAACAG 
CGCGATTATATTACATTCAATTAATTAAAATGCAGTACAGAGACATCCACGATTTCGTCAACATACCAGG
>TCONS_00000009 956:1555
AAAATAATAAACTTTGCAAAGAGCAAATTTGAAGAAGCAGTTGATATACGTCGAGAGATTTCTGCAACAG 
CGCGATTATATTACATTCAATTAATTAAAATGCAGTACAGAGACATCCACGATTTCGTCAACATACCAGG

我尝试使用下面的biopython命令,但是它只从file2中提取,而没有我需要的额外数字。在

^{pr2}$

我怎样才能保留这些额外的数字并从file2中提取序列?或者将文件2中的名称替换为文件1中的名称? 谢谢你的帮助


Tags: 文件名称id编码列表序列数字子集
2条回答

为什么不使用字典而不是列表来查找id?例如

from Bio import SeqIO
id = {}
for line in open("test.txt","r"):
    i, c = line.strip().split()
    id[i] = c
for rec in SeqIO.parse("mymodified_transcript.fa","fasta"):
    if rec.id in id:
        print rec.id, id[rec.id]
        print rec.format("fasta")

我找到了解决办法。它在我的Ubuntu中运行得很好。请尝试一下:)

from Bio import SeqIO
temp = {}
for line in open("test.txt","r"):
    i, c = line.strip().split()
    temp[i] = c

for rec in SeqIO.parse("mymodified_transcript.fa","fasta"):
    if str('>'+rec.id) in temp.keys():
        print str('>'+rec.id), temp['>'+rec.id]
        print str(rec.seq)

相关问题 更多 >

    热门问题