Конвертировать ФАСТА в ГенБанк
Есть ли способ использовать BioPython для преобразования файлов FASTA в формат Genbank? Есть много ответов о том, как конвертировать Genbank в FASTA, но не наоборот.
3 ответа
Перед конвертированием необходимо назначить алфавит последовательности (ДНК или белок)
from Bio import SeqIO
from Bio.Alphabet import generic_dna, generic_protein
input_handle = open("test.fasta", "rU")
output_handle = open("test.gb", "w")
sequences = list(SeqIO.parse(input_handle, "fasta"))
#asign generic_dna or generic_protein
for seq in sequences:
seq.seq.alphabet = generic_dna
count = SeqIO.write(sequences, output_handle, "genbank")
output_handle.close()
input_handle.close()
print "Coverted %i records" % count
для ввода:
> I28Q9A102FII8J rank =0668881 x =2144.0 y =1105.0 length = 418 ACGTCATGAGAGTTTGATCATGGCTCAGGACGAACGCTGGCGGCGTGCTTAACACATGCAAGTCGAACGATGAA GCTCCAGCTTGCTGGGGTGGATTAGTGGCGAACGGGTGAGTAACACGTGAGTAACCTGCCCTTGACTCTGGGAT AAGCGTTGGAAACGACGTCTAATACCGGATATGACGACCGATGGCATCATCTGGTTGTGGAAAGAATTTTGGTC AAGGATGGACTCGCGGCCTATCAGGTAGTTGGTGAGGTAATGGCTCACCAAGCCTACGACGGGTAGCCGGCCTG AGAGGGTGACCGGCCACACTGGGACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTGGGGAATATTGCA CAATGGGCGAAAGCCTGATGCAGCAACGCCGCGTGAGGGATGACGGCC > I28Q9A102JMH72 rank =0320459 x =3829.0 y =3120.0 length = 512 ACGTCATGAGAGTTTGATCCTGGCTCAGGATGAACGCTAGCGGCAGGCTTAACACATGCAAGTCGAGGGTAGAA ATAGCTTGCTATTTTGAGACCGGCGCACGGGTGCGTAACGCGTATGCAATCTGCCTTTTACAGGGGAATAGCCC AGAGAAATTTGGATTAATGCCCCATAGCGCTGCAGGGCGGCATCGCCGAGCAGCTAAAGTCACAACGGTAAAGA TGAGCATGCGTCCCATTAGCTAGTTGGTAAGGTAACGGCTTACCAAGGCGATGATGGGTAGGGTCCTGAGAGGG AGATCCCCCACACTGGTACTGAGACACGGACCAGACTCCTACGGGAGGCAGCAGTGAGGAATATTGGTCAATGG GCGCAAGCCTGAACCAGCCATGCCGCGTGCAGGATGAAGGCCTTCGGGTTGTAAACTGCTTTTGACGGAACGAA AAAGCT
ты получаешь:
LOCUS I28Q9A102FII8J 418 п.н. ДНК UNK 01-ЯНВ-1980 ОПРЕДЕЛЕНИЕ I28Q9A102FII8J ранг =0668881 х =2144,0 у =1105,0 длина =418 ACCESSION I28Q9A102FII8J ВЕРСИЯ I28Q9A102FII8J КЛЮЧЕВЫЕ СЛОВА. ИСТОЧНИК. ОРГАНИЗМ., ОСОБЕННОСТИ Местоположение / Отборочные ПРОИСХОЖДЕНИЕ 1 acgtcatgag agtttgatca tggctcagga cgaacgctgg cggcgtgctt aacacatgca 61 agtcgaacga tgaagctcca gcttgctggg gtggattagt ggcgaacggg tgagtaacac 121 gtgagtaacc tgcccttgac tctgggataa gcgttggaaa cgacgtctaa taccggatat 181 gacgaccgat ggcatcatct ggttgtggaa agaattttgg tcaaggatgg actcgcggcc 241 tatcaggtag ttggtgaggt aatggctcac caagcctacg acgggtagcc ggcctgagag 301 ggtgaccggc cacactggga ctgagacacg gcccagactc ctacgggagg cagcagtggg 361 gaatattgca caatgggcga aagcctgatg cagcaacgcc gcgtgaggga tgacggcc // LOCUS I28Q9A102JMH72, 450 п.н., ДНК UNK 01 января 1980 ОПРЕДЕЛЕНИЕ I28Q9A102JMH72 ранг =0320459 х =3829,0 у =3120,0 длина =512 ACCESSION I28Q9A102JMH72 ВЕРСИЯ I28Q9A102JMH72 КЛЮЧЕВЫЕ СЛОВА. ИСТОЧНИК. ОРГАНИЗМ., ОСОБЕННОСТИ Местоположение / Отборочные ПРОИСХОЖДЕНИЕ 1 acgtcatgag agtttgatcc tggctcagga tgaacgctag cggcaggctt aacacatgca 61 agacgagggt agaaatagct tgctattttg agaccggcgc acgggtgcgt aacgcgtatg 121 caatctgcct tttacagggg aatagcccag agaaatttgg attaatgccc catagcgctg 181 cagggcggca tcgccgagca gctaaagtca caacggtaaa gatgagcatg cgtcccatta 241 gctagttggt aaggtaacgg cttaccaagg cgatgatggg tagggtcctg agagggagat 301 cccccacact ggtactgaga cacggaccag actcctacgg gaggcagcag tgaggaatat 361 tggtcaatgg gcgcaagcct gaaccagcca tgccgcgtgc aggatgaagg ccttcgggtt 421 gtaaactgct tttgacggaa cgaaaaagct //
вот обновление ответа Хосе для python3 и нового биопитона. Biopython больше не использует алфавиты. Возможно, это сэкономит вам немного времени.
from Bio import SeqIO
input_handle = open("test.fasta", "r")
output_handle = open("test.gb", "w")
sequences = list(SeqIO.parse(input_handle, "fasta"))
# assign molecule type
for seq in sequences:
seq.annotations['molecule_type'] = 'DNA'
count = SeqIO.write(sequences, output_handle, "genbank")
output_handle.close()
input_handle.close()
print("Converted {} records".format(count))
Можно преобразовать формат fasta в формат gb для неотправленных последовательностей, у которых нет инвентарных номеров. Еще предстоит представить в NCBI.