Biopython - Operazioni di I / O di sequenza

Biopython fornisce un modulo, Bio.SeqIO per leggere e scrivere sequenze rispettivamente da e in un file (qualsiasi flusso). Supporta quasi tutti i formati di file disponibili in bioinformatica. La maggior parte del software fornisce un approccio diverso per diversi formati di file. Ma Biopython segue consapevolmente un unico approccio per presentare i dati della sequenza analizzati all'utente attraverso il suo oggetto SeqRecord.

Impariamo di più su SeqRecord nella sezione seguente.

SeqRecord

Il modulo Bio.SeqRecord fornisce SeqRecord per conservare le meta informazioni della sequenza così come i dati della sequenza stessa come indicato di seguito -

  • seq - È una sequenza effettiva.

  • id - È l'identificatore principale della sequenza data. Il tipo predefinito è stringa.

  • nome : è il nome della sequenza. Il tipo predefinito è stringa.

  • descrizione - Visualizza informazioni leggibili dall'uomo sulla sequenza.

  • annotazioni - È un dizionario di informazioni aggiuntive sulla sequenza.

SeqRecord può essere importato come specificato di seguito

from Bio.SeqRecord import SeqRecord

Cerchiamo di comprendere le sfumature dell'analisi del file di sequenza utilizzando il file di sequenza reale nelle sezioni successive.

Analisi dei formati dei file di sequenza

Questa sezione spiega come analizzare due dei formati di file di sequenza più popolari, FASTA e GenBank.

FASTA

FASTAè il formato di file più semplice per memorizzare i dati di sequenza. In origine, FASTA è un pacchetto software per l'allineamento di sequenze di DNA e proteine ​​sviluppato durante la prima evoluzione della bioinformatica e utilizzato principalmente per la ricerca della somiglianza di sequenza.

Biopython fornisce un file FASTA di esempio ed è possibile accedervi all'indirizzo https://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta.

Scarica e salva questo file nella tua directory di esempio Biopython come ‘orchid.fasta’.

Il modulo Bio.SeqIO fornisce il metodo parse () per elaborare i file di sequenza e può essere importato come segue:

from Bio.SeqIO import parse

Il metodo parse () contiene due argomenti, il primo è l'handle del file e il secondo è il formato del file.

>>> file = open('path/to/biopython/sample/orchid.fasta') 
>>> for record in parse(file, "fasta"): 
...    print(record.id) 
... 
gi|2765658|emb|Z78533.1|CIZ78533 
gi|2765657|emb|Z78532.1|CCZ78532 
.......... 
.......... 
gi|2765565|emb|Z78440.1|PPZ78440 
gi|2765564|emb|Z78439.1|PBZ78439 
>>>

Qui, il metodo parse () restituisce un oggetto iterabile che restituisce SeqRecord ad ogni iterazione. Essendo iterabile, fornisce molti metodi sofisticati e facili e ci permette di vedere alcune delle caratteristiche.

Il prossimo()

Il metodo next () restituisce l'elemento successivo disponibile nell'oggetto iterabile, che possiamo utilizzare per ottenere la prima sequenza come indicato di seguito -

>>> first_seq_record = next(SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta')) 
>>> first_seq_record.id 'gi|2765658|emb|Z78533.1|CIZ78533' 
>>> first_seq_record.name 'gi|2765658|emb|Z78533.1|CIZ78533' 
>>> first_seq_record.seq Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', SingleLetterAlphabet()) 
>>> first_seq_record.description 'gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA' 
>>> first_seq_record.annotations 
{} 
>>>

Qui, seq_record.annotations è vuoto perché il formato FASTA non supporta le annotazioni di sequenza.

comprensione delle liste

Possiamo convertire l'oggetto iterabile in elenco utilizzando la comprensione dell'elenco come indicato di seguito

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> all_seq = [seq_record for seq_record in seq_iter] >>> len(all_seq) 
94 
>>>

Qui abbiamo utilizzato il metodo len per ottenere il conteggio totale. Possiamo ottenere una sequenza con lunghezza massima come segue:

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> max_seq = max(len(seq_record.seq) for seq_record in seq_iter) 
>>> max_seq 
789 
>>>

Possiamo anche filtrare la sequenza usando il codice seguente:

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> seq_under_600 = [seq_record for seq_record in seq_iter if len(seq_record.seq) < 600] 
>>> for seq in seq_under_600: 
...    print(seq.id) 
... 
gi|2765606|emb|Z78481.1|PIZ78481 
gi|2765605|emb|Z78480.1|PGZ78480 
gi|2765601|emb|Z78476.1|PGZ78476 
gi|2765595|emb|Z78470.1|PPZ78470 
gi|2765594|emb|Z78469.1|PHZ78469 
gi|2765564|emb|Z78439.1|PBZ78439 
>>>

Scrivere una raccolta di oggetti SqlRecord (dati analizzati) in un file è semplice come chiamare il metodo SeqIO.write come di seguito:

file = open("converted.fasta", "w) 
SeqIO.write(seq_record, file, "fasta")

Questo metodo può essere efficacemente utilizzato per convertire il formato come specificato di seguito:

file = open("converted.gbk", "w) 
SeqIO.write(seq_record, file, "genbank")

GenBank

È un formato di sequenza più ricco per i geni e include campi per vari tipi di annotazioni. Biopython fornisce un file GenBank di esempio ed è possibile accedervi all'indirizzohttps://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta.

Scarica e salva il file nella tua directory di esempio Biopython come ‘orchid.gbk’

Dato che Biopython fornisce una singola funzione, analizza per analizzare tutti i formati bioinformatici. L'analisi del formato GenBank è semplice come modificare l'opzione di formato nel metodo di analisi.

Il codice per lo stesso è stato dato di seguito -

>>> from Bio import SeqIO 
>>> from Bio.SeqIO import parse 
>>> seq_record = next(parse(open('path/to/biopython/sample/orchid.gbk'),'genbank')) 
>>> seq_record.id 
'Z78533.1' 
>>> seq_record.name 
'Z78533' 
>>> seq_record.seq Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', IUPACAmbiguousDNA()) 
>>> seq_record.description 
'C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA' 
>>> seq_record.annotations {
   'molecule_type': 'DNA', 
   'topology': 'linear', 
   'data_file_division': 'PLN', 
   'date': '30-NOV-2006', 
   'accessions': ['Z78533'], 
   'sequence_version': 1, 
   'gi': '2765658', 
   'keywords': ['5.8S ribosomal RNA', '5.8S rRNA gene', 'internal transcribed spacer', 'ITS1', 'ITS2'], 
   'source': 'Cypripedium irapeanum', 
   'organism': 'Cypripedium irapeanum', 
   'taxonomy': [
      'Eukaryota', 
      'Viridiplantae', 
      'Streptophyta', 
      'Embryophyta', 
      'Tracheophyta', 
      'Spermatophyta', 
      'Magnoliophyta', 
      'Liliopsida', 
      'Asparagales', 
      'Orchidaceae', 
      'Cypripedioideae', 
      'Cypripedium'], 
   'references': [
      Reference(title = 'Phylogenetics of the slipper orchids (Cypripedioideae:
      Orchidaceae): nuclear rDNA ITS sequences', ...), 
      Reference(title = 'Direct Submission', ...)
   ]
}