使用 Biopython 通过坐标删除序列

Remove sequence by coordinates with Biopython

你好

我有一个序列,例如:

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

>sequence1 
AAACCCGGGTTTAAACCCGGGTTTGGGTTTGGG

而且我从这个序列中知道如何 select 坐标为

的特定部分
print(record_dict[sequence1].seq[coordinate_start:coordinate_end])
print(record_dict[sequence1].seq[3:7])

我得到:

CCCGG

但是如果我想从

中删除这部分怎么办?
>sequence1 
AAACCCGGGTTTAAACCCGGGTTTGGGTTTGGG 

并获得

>sequence1 
AAACGTTTAAACCCGGGTTTGGGTTTGGG

有人有想法吗?

感谢您的帮助

这是一个更好的例子

ACCGCTTTGAATCCGAGCTAG
           ---- ----

我想删除 2 个部分:

TCCG和GCTA同对应坐标

11:1416:19

最后我想删除两者并得到:

>seq
ACCGCTTTGAAAG

您可以将所需的两个部分加在一起来完成此操作:

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