Biopython: operaciones de E / S de secuencia

Biopython proporciona un módulo, Bio.SeqIO para leer y escribir secuencias desde y hacia un archivo (cualquier flujo) respectivamente. Es compatible con casi todos los formatos de archivo disponibles en bioinformática. La mayor parte del software proporciona un enfoque diferente para diferentes formatos de archivo. Pero, Biopython sigue conscientemente un enfoque único para presentar los datos de secuencia analizados al usuario a través de su objeto SeqRecord.

Aprendamos más sobre SeqRecord en la siguiente sección.

SeqRecord

El módulo Bio.SeqRecord proporciona SeqRecord para contener la metainformación de la secuencia, así como los datos de la secuencia en sí, como se indica a continuación:

  • seq : es una secuencia real.

  • id : es el identificador principal de la secuencia dada. El tipo predeterminado es cadena.

  • name : es el nombre de la secuencia. El tipo predeterminado es cadena.

  • descripción : muestra información legible por humanos sobre la secuencia.

  • anotaciones : es un diccionario de información adicional sobre la secuencia.

El SeqRecord se puede importar como se especifica a continuación

from Bio.SeqRecord import SeqRecord

Entendamos los matices de analizar el archivo de secuencia utilizando un archivo de secuencia real en las siguientes secciones.

Analizar formatos de archivo de secuencia

Esta sección explica cómo analizar dos de los formatos de archivo de secuencia más populares, FASTA y GenBank.

FASTA

FASTAes el formato de archivo más básico para almacenar datos de secuencia. Originalmente, FASTA es un paquete de software para la alineación de secuencias de ADN y proteínas desarrollado durante la evolución temprana de la bioinformática y se utiliza principalmente para buscar la similitud de secuencias.

Biopython proporciona un archivo FASTA de ejemplo y se puede acceder a él en https://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta.

Descargue y guarde este archivo en su directorio de muestra de Biopython como ‘orchid.fasta’.

El módulo Bio.SeqIO proporciona el método parse () para procesar archivos de secuencia y se puede importar de la siguiente manera:

from Bio.SeqIO import parse

El método parse () contiene dos argumentos, el primero es el identificador de archivo y el segundo es el formato de archivo.

>>> 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 
>>>

Aquí, el método parse () devuelve un objeto iterable que devuelve SeqRecord en cada iteración. Al ser iterable, proporciona muchos métodos sofisticados y sencillos y nos permite ver algunas de las características.

siguiente()

El método next () devuelve el siguiente elemento disponible en el objeto iterable, que podemos usar para obtener la primera secuencia como se indica a continuación:

>>> 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 
{} 
>>>

Aquí, seq_record.annotations está vacío porque el formato FASTA no admite anotaciones de secuencia.

lista de comprensión

Podemos convertir el objeto iterable en una lista usando la comprensión de la lista como se indica a continuación

>>> 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 
>>>

Aquí, hemos utilizado el método len para obtener el recuento total. Podemos obtener una secuencia con la longitud máxima de la siguiente manera:

>>> 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 
>>>

También podemos filtrar la secuencia usando el siguiente código:

>>> 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 
>>>

Escribir una colección de objetos SqlRecord (datos analizados) en un archivo es tan simple como llamar al método SeqIO.write como se muestra a continuación:

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

Este método se puede usar de manera efectiva para convertir el formato como se especifica a continuación:

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

GenBank

Es un formato de secuencia más rico para genes e incluye campos para varios tipos de anotaciones. Biopython proporciona un archivo GenBank de ejemplo y se puede acceder a él enhttps://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta.

Descargue y guarde el archivo en su directorio de muestra de Biopython como ‘orchid.gbk’

Dado que, Biopython proporciona una sola función, analizar para analizar todo el formato bioinformático. Analizar el formato de GenBank es tan simple como cambiar la opción de formato en el método de análisis.

El código para el mismo se da a continuación:

>>> 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', ...)
   ]
}