Как мне отредактировать И СОХРАНИТЬ последовательность файла genbank в НОВЫЙ файл genbank, используя biopython?

У меня неправильный файл.gbk, и у меня есть список исправлений, следующий за форматом

"Адрес нуклеотида: правильный нуклеотид"

1:T
2:C
4:A
63:A
324:G
etc...

Я знаю, как открыть и разобрать точную оригинальную последовательность с

list(SeqIO.parse(sys.argv[1], "genbank"))[0].seq 

Мне просто нужно знать, как заменить его своими собственными нуклеотидными исправлениями. я пробовал

seq_records[0].seq = "".join(dna_refseq)

Где dna_refseq - это просто список, который составляет весь геном

Я буквально не могу найти это конкретное действие нигде в документации или онлайн, и интуитивно, это то, на что должен быть способен биопайт.

1 ответ

Решение

Вы назначаете строку, где Bio.Seq объект ожидается. Для меня это работает:

from Bio import Seq
from Bio import SeqIO

my_entries = list(SeqIO.parse('my_file.gb', 'genbank'))
my_entry = my_entries[0]

# Make a new Seq object and assing to my_entry.seq. 'TTT' is just an example sequence
my_entry.seq = Seq.Seq('TTT', my_entry.seq.alphabet) 

# Write back to file
SeqIO.write(my_entries, 'my_updated_file.gb', 'genbank')

Если в вашем файле Genbank есть только одна запись, вы можете использовать SeqIO.read:

my_entry = SeqIO.read('my_file.gb', 'genbank')

my_entry.seq = Seq.Seq('TTT', my_entry.seq.alphabet)
SeqIO.write(my_entry, 'my_updated_file.gb', 'genbank')

В качестве альтернативы, вы можете напрямую преобразовать последовательность в изменяемую последовательность и манипулировать ею напрямую:

from Bio import SeqIO

my_entry = list(SeqIO.parse('my_file.gb', 'genbank'))[0]
my_entry.seq = my_entry.seq.tomutable()

my_entry.seq[0] = 'T'  # Remember that Genbank position 1 is 0 in seq
my_entry.seq[1] = 'C'
....
SeqIO.write(my_entry, 'my_updated_file.gb', 'genbank')
Другие вопросы по тегам