用Biopython坐标移除序列

2024-05-06 08:24:57 发布

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

海洛

我有一个序列,例如:

record_dict = SeqIO.to_dict(SeqIO.parse("sequence.fasta", "fasta"))

>sequence1 
AAACCCGGGTTTAAACCCGGGTTTGGGTTTGGG

从这个序列中,我知道如何选择具有以下坐标的特定零件:

print(record_dict[sequence1].seq[coordinate_start:coordinate_end])
print(record_dict[sequence1].seq[3:7])

我得到:

CCCGG

但是如果我想把这个部分从

>sequence1 
AAACCCGGGTTTAAACCCGGGTTTGGGTTTGGG 

得到

>sequence1 
AAACGTTTAAACCCGGGTTTGGGTTTGGG

有人有主意吗

谢谢你的帮助

这里有一个更好的例子

ACCGCTTTGAATCCGAGCTAG
           ---- ----

我想删除两个部分:

TCCG和GCTA与坐标相对应

11:1416:19

最后,我想删除这两个选项并获得:

>seq
ACCGCTTTGAAAG

Tags: tocoordinateparse序列recordstartseqdict
1条回答
网友
1楼 · 发布于 2024-05-06 08:24:57

您可以通过将所需的两个部分合并在一起来实现这一点:

sequence_1 = 'AAACCCGGGTTTAAACCCGGGTTTGGGTTTGGG'
sequence_1a = sequence_1[:4]
sequence_1b = sequence_1[8:]
sequence_2 = sequence_1a + sequence_1b
print(sequence_2)

>>> AAACGTTTAAACCCGGGTTTGGGTTTGGG

请注意,为了切掉正确的部分,我在两个索引中都添加了1

如果要对多个零件执行此操作,可以通过在列表上循环执行此操作:

sequence_1 = 'ACCGCTTTGAATCCGAGCTAG'
indexes_to_delete = [(11, 14), (16, 19)]
output_sequence = ''
start_value = 0
for start_delete, end_delete in indexes_to_delete:
    output_sequence += sequence_1[start_value: start_delete]
    start_value = end_delete
output_sequence += sequence_1[start_value:]
print(output_sequence)

>>> ACCGCTTTGAAGAAG

相关问题 更多 >