Biopython
Tipus | biblioteca informàtica |
---|---|
Versió inicial | 7 desembre 1999 |
Versió estable | |
Característiques tècniques | |
Escrit en | Python |
Equip | |
Creador/s | Brad Chapman Jeff Chang |
Més informació | |
Lloc web | biopython.org |
Guia d'usuari | Guia d'usuari |
| |
El projecte Biopython és una col·lecció de codi obert d'eines Python no comercials per a la biologia computacional i la bioinformàtica, creada per una associació internacional de desenvolupadors.[1][2] Conté classes per representar seqüències biològiques i anotacions de seqüències, i és capaç de llegir i escriure en una varietat de formats de fitxer. També permet un mitjà programàtic d'accés a bases de dades en línia d'informació biològica, com les de NCBI. Els mòduls separats amplien les capacitats de Biopython a l'alineació de seqüències, estructura de proteïnes, genètica de poblacions, filogenètica, motius de seqüències i aprenentatge automàtic. Biopython és un dels nombrosos projectes Bio* dissenyats per reduir la duplicació de codi en biologia computacional.[3]
Història
[modifica]El desenvolupament de Biopython va començar el 1999 i es va llançar per primera vegada el juliol de 2000. Es va desenvolupar durant un període similar i amb objectius anàlegs a altres projectes que van afegir capacitats bioinformàtiques als seus respectius llenguatges de programació, inclosos BioPerl, BioRuby i BioJava. Els primers desenvolupadors del projecte van incloure Jeff Chang, Andrew Dalke i Brad Chapman, encara que més de 100 persones hi han fet contribucions fins ara.[7] El 2007, es va establir un projecte similar de Python, PyCogent.[4]
L'abast inicial de Biopython implicava accedir, indexar i processar fitxers de seqüències biològiques. Tot i que aquest és encara un focus important, durant els anys següents, els mòduls afegits han ampliat la seva funcionalitat per cobrir àrees addicionals de biologia.
A partir de la versió 1.77, Biopython ja no és compatible amb Python 2.
Característiques clau i exemples
[modifica]Seqüències
[modifica]Un concepte bàsic de Biopython és la seqüència biològica, i això està representat per la classe Seq
. Un objecte Seq
de Biopythonés similar a una cadena de text (string) de Python en molts aspectes: admet la notació de seqüències de Python, es pot concatenar amb altres seqüències i és immutable. A més, inclou mètodes específics de seqüència i especifica l'alfabet biològic particular utilitzat.
>>> # Aquest script crea una seqüència d'ADN i realitza algunes manipulacions típiques
>>> from Bio.Seq import Seq
>>> dna_sequence = Seq('AGGCTTCTCGTA', IUPAC.unambiguous_dna)
>>> dna_sequence
Seq('AGGCTTCTCGTA', IUPACUnambiguousDNA())
>>> dna_sequence[2:7]
Seq('GCTTC', IUPACUnambiguousDNA())
>>> dna_sequence.reverse_complement()
Seq('TACGAGAAGCCT', IUPACUnambiguousDNA())
>>> rna_sequence = dna_sequence.transcribe()
>>> rna_sequence
Seq('AGGCUUCUCGUA', IUPACUnambiguousRNA())
>>> rna_sequence.translate()
Seq('RLLV', IUPACProtein())
Anotació de seqüències
[modifica]La classe SeqRecord
descriu seqüències, juntament amb informació com ara el nom, la descripció i les característiques en forma d'objectes SeqFeature
. Cada objecte SeqFeature
especifica el tipus de característica i la seva ubicació. Els tipus de característiques poden ser "gene" (gen), "CDS" (seqüència codificant), "repeat_region" (regió de repetició), "mobile_element" (element mòbil) o altres, i la posició de les característiques a la seqüència pot ser exacta o aproximada.
>>> # Aquest script carrega una seqüència anotada des del fitxer i visualitza part del seu contingut.
>>> from Bio import SeqIO
>>> seq_record = SeqIO.read('pTC2.gb', 'genbank')
>>> seq_record.name
'NC_019375'
>>> seq_record.description
'Providencia stuartii plasmid pTC2, complete sequence.'
>>> seq_record.features[14]
SeqFeature(FeatureLocation(ExactPosition(4516), ExactPosition(5336), strand=1), type='mobile_element')
>>> seq_record.seq
Seq('GGATTGAATATAACCGACGTGACTGTTACATTTAGGTGGCTAAACCCGTCAAGC...GCC', IUPACAmbiguousDNA())
Entrada i sortida
[modifica]Biopython pot llegir i escriure en diversos formats de seqüències habituals, com ara FASTA, FASTQ, GenBank, Clustal, PHYLIP i NEXUS. Quan es llegeixen fitxers, la informació descriptiva del fitxer s'utilitza per emplenar els membres de les classes Biopython, com ara SeqRecord
. Això permet que els registres d'un format de fitxer es converteixin en altres.
Els fitxers de seqüències molt grans poden superar els recursos de memòria d'un ordinador, de manera que Biopython ofereix diverses opcions per accedir als registres en fitxers grans. Es poden carregar completament a la memòria en estructures de dades de Python, com ara llistes o diccionaris, proporcionant un accés ràpid a costa de l'ús de la memòria. Alternativament, els fitxers es poden llegir des del disc segons sigui necessari, amb un rendiment més lent però amb requisits de memòria més baixos.
>>> # Aquest script carrega un fitxer que conté diverses seqüències i desa cadascuna d'elles en un format diferent.
>>> from Bio import SeqIO
>>> genomes = SeqIO.parse('salmonella.gb', 'genbank')
>>> for genome in genomes:
... SeqIO.write(genome, genome.id + '.fasta', 'fasta')
Accés a bases de dades en línia
[modifica]Mitjançant el mòdul Bio.Entrez, els usuaris de Biopython poden descarregar dades biològiques de les bases de dades de l'NCBI. Cadascuna de les funcions que ofereix el cercador Entrez està disponible a través de les funcions d'aquest mòdul, com ara la cerca i la descàrrega de registres.
>>> # Aquest script descarrega genomes de la base de dades de nucleòtids NCBI i els desa en un fitxer FASTA.
>>> from Bio import Entrez
>>> from Bio import SeqIO
>>> output_file = open('all_records.fasta', "w")
>>> Entrez.email = 'my_email@example.com'
>>> records_to_download = ['FO834906.1', 'FO203501.1']
>>> for record_id in records_to_download:
... handle = Entrez.efetch(db='nucleotide', id=record_id, rettype='gb')
... seqRecord = SeqIO.read(handle, format='gb')
... handle.close()
... output_file.write(seqRecord.format('fasta'))
Filogenia
[modifica]El mòdul Bio.Phylo proporciona eines per treballar i visualitzar arbres filogenètics. S'admeten diversos formats de fitxer per llegir i escriure, com ara Newick, NEXUS i phyloXML. Les manipulacions i els recorreguts habituals dels arbres són compatibles amb els objectes Tree i Clade. Alguns exemples inclouen la conversió i la classificació de fitxers d'arbre, l'extracció de subconjunts d'un arbre, el canvi de l'arrel d'un arbre i l'anàlisi de característiques de la branca com ara la longitud o la puntuació.[5]
Referències
[modifica]- ↑ Chapman, Brad; Chang, Jeffrey «Biopython: Python tools for computational biology». ACM SIGBIO Newsletter, 20, 2, 8-2000, pàg. 15–19. DOI: 10.1145/360262.360268.
- ↑ Cock, P. J. A.; Antao, T.; Chang, J. T.; Chapman, B. A.; Cox, C. J.; Dalke, A.; Friedberg, I.; Hamelryck, T.; Kauff, F.; Wilczynski, B.; de Hoon, M. J. L. «Biopython: freely available Python tools for computational molecular biology and bioinformatics». Bioinformatics, 25, 11, 01-06-2009, pàg. 1422–1423. DOI: 10.1093/bioinformatics/btp163. PMID: 19304878.
- ↑ Mangalam, H. «The Bio* toolkits—a brief overview». Briefings in Bioinformatics, 3, 3, 01-01-2002, pàg. 296–302. DOI: 10.1093/bib/3.3.296. PMID: 12230038.
- ↑ Knight, Rob; Maxwell, Peter; Birmingham, Amanda; Carnes, Jason; Caporaso, J Gregory; Easton, Brett C; Eaton, Michael; Hamady, Micah; Lindsay, Helen; Liu, Zongzhi; Lozupone, Catherine; McDonald, Daniel; Robeson, Michael; Sammut, Raymond; Smit, Sandra; Wakefield, Matthew J; Widmann, Jeremy; Wikman, Shandy; Wilson, Stephanie; Ying, Hua; Huttley, Gavin A «PyCogent: a toolkit for making sense from sequence». Genome Biology, 8, 8, 2007, pàg. R171. DOI: 10.1186/gb-2007-8-8-r171. PMID: 17708774.
- ↑ Talevich, Eric; Invergo, Brandon M; Cock, Peter JA; Chapman, Brad A «Bio.Phylo: A unified toolkit for processing, analyzing and visualizing phylogenetic trees in Biopython». BMC Bioinformatics, 13, 1, 12-2012, pàg. 209. DOI: 10.1186/1471-2105-13-209. PMID: 22909249.