# Biopython

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

## Història

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.
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
### Seqüències

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.

### Anotació de seqüències

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.

### Entrada i sortida

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.

### Accés a bases de dades en línia

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.

### Filogenia

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

## Referències

* ↑ Chapman, Brad; Chang, Jeffrey «Biopython: Python tools for computational biology». ACM SIGBIO Newsletter, 20, 2, 01-08-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, 01-12-2012, pàg. 209. DOI: 10.1186/1471-2105-13-209. PMID: 22909249.