2016-04-07 5 views
0

У меня есть файл .gbk, что это неправильно, и у меня есть список исправлений, которые следуют форматуКак отредактировать и сохранить последовательность файла genbank в файл NEW genbank с помощью biopython?

«Адрес Nuclotide: правильно нуклеотид»

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 является просто список, который представляет весь геном

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

ответ

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') 
+0

Что такое «TTT»? – Tom

+0

И как я могу вернуться к сохранению его в генбанке? – Tom

+0

@Tom: ''TTT' - просто пример последовательности, в вашем случае вы бы поместили свою обновленную последовательность здесь. Запись в файл выполняется с помощью 'SeqIO.write()'. Я отредактировал свой ответ. – Markus