Конвертировать ФАСТА в ГенБанк

Есть ли способ использовать 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.

Другие вопросы по тегам