python en ciencia pycon argentina 2009
DESCRIPTION
Razones para usar Python en proyectos científicos, incluyendo ejemplos de uso en la vida real en el area de bioinformatica.TRANSCRIPT
Python y cienciaPython y ciencia
Sebastián BassiSebastián Bassi
GenesDigitales, SoLAr, Biopython, GenesDigitales, SoLAr, Biopython, DNALinux, PyAr, Wikimedia-AR, INTA DNALinux, PyAr, Wikimedia-AR, INTA
(EuSol)(EuSol)
Una fórmula exitosa
¿Qué es Python?¿Qué es Python?
Python es un lenguaje de programación orientado Python es un lenguaje de programación orientado a objetos que puede usarse para varios tipos de a objetos que puede usarse para varios tipos de
desarrollo de software. Ofrece soporte para desarrollo de software. Ofrece soporte para integrarse con otros lenguajes y herramientas, integrarse con otros lenguajes y herramientas,
viene con una importante biblioteca estándar, y viene con una importante biblioteca estándar, y puede aprenderse en pocos días.puede aprenderse en pocos días.
Características de PythonCaracterísticas de Python
• Libre y gratuito.Libre y gratuito.• Fácil de leer.Fácil de leer.• Multiparadigma.Multiparadigma.• Fácil de aprender.Fácil de aprender.• Tipo de datos versátiles (alto nivel).Tipo de datos versátiles (alto nivel).• Viene con pilas: Viene con pilas:
Fácil de leerFácil de leer• Copiar archivo en C:Copiar archivo en C:#include <stdio.h>#include <stdio.h>
int main(int argc, char **argv) {int main(int argc, char **argv) {
FILE *in, *out;FILE *in, *out;
int c;int c;
in = fopen("input.txt", "r");in = fopen("input.txt", "r");
out = fopen("output.txt", "w");out = fopen("output.txt", "w");
while ((c = fgetc(in)) != EOF) {while ((c = fgetc(in)) != EOF) {
fputc(c, out);fputc(c, out);
}}
fclose(out);fclose(out);
fclose(in);fclose(in);
}}
Fácil de leerFácil de leer
• Copiar archivo en Python:Copiar archivo en Python:
out = open("output.txt", "w")out = open("output.txt", "w")
out.writelines(open("input.txt"))out.writelines(open("input.txt"))
out.close()out.close()
MultiplataformaMultiplataforma
• Ademas de funcionar en los “sospechosos de siempre” (Linux, Windows y OSX), corre en JAVA VM (Jython), .Net (IronPython), Celulares (Nokia S-60), iPod, Palm, Reproductores MP3 (iRiver).
Tipos de datosTipos de datos
• Numericos: Int, float, complex, decimal.• Strings (Unicode “nativo”): “qwerty”• Listas: ['espada','pócima','comida']• Tuplas: (23,54,-78)• Sets: {'ssr23','ssr15','ssr12','ssr32'}• Dict: {'blanco':'blanka','azul':'blua'}
{1:(2.4,11.8), 2:(0,13), 4:(71.1,98)}
Las pilas (I):Las pilas (I):
Servicios del sistema, fecha y hora, subprocesos, sockets internacionalización y localización, base de datos, threads, formatos zip, bzip2, gzip, tar, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, XML-RPC (cliente y servidor), email, clientes HTTP, FTP, SMTP, NNTP, POP3, IMAP4, servidores HTTP, SMTP, herramientas MIME, interfaz con el garbage collector, serializador y deserializador de objetos, debugger, profiler, random, curses, logging, compilador, decompilador, CSV, análisis lexicográfico, interfaz gráfica incorporada, matemática real y compleja, criptografía (MD5 y SHA)
Las pilas (II)Las pilas (II) Bases de datos MySQL, SQLite, PostgresSQL, MS SQL, Informix, DB/
2, Sybase Interfaces gráficas Qt, GTK, win32, wxWidgets, Cairo Frameworks Web Django, Turbogears, Zope, Plone, webpy Y un montón más de temas... Biopython: Manejo de secuencias PIL: para trabajar con imágenes PyGame: juegos, presentaciones, gráficos SymPy: matemática simbólica Numpy: calculos de alta performance ...
Características deseables de un Características deseables de un lenguaje para uso en ciencia.lenguaje para uso en ciencia.
• Libre y gratuito.Libre y gratuito.• Fácil de leer.Fácil de leer.• Fácil de aprender.Fácil de aprender.• Tipo de datos versátiles (alto nivel).Tipo de datos versátiles (alto nivel).• Biblioteca completa (incorporada y disponible Biblioteca completa (incorporada y disponible
externamente).externamente).• Suficientemente rápidoSuficientemente rápido
MatemáticaMatemática• NumPy:
– Manejo de matrices N-dimensionales.
– Funciones algebra lineal
– Transformaciones de Fourier
– Números aleatorios sofisticados
– Herramientas para integrar código C++ y Fortran
• Matplotlib: “framework para crear gráficos científicos similares a las herramientas provistas por Matlab”.
• Chaco: 2-Dimensional Plotting• Interfase: GNUPLOT, R, MATLAB.
MatemáticaMatemática• Interfases: GNUPLOT, R, MATLAB: FNUPlot-py, Rpy, PyMAT Interfases: GNUPLOT, R, MATLAB: FNUPlot-py, Rpy, PyMAT
BioinformáticaBioinformática
Ventajas de Python para Bioinformática
•Manejo de texto y expresiones regulares: Nombres de secuencias, secuencias, anotaciones, referencias bibliograficas, etc.•Modular: Puede integrarse upstream o downstream con otros programas (en Python o en otros lenguajes).•Fácil de escribir: Ideal para programadores no profesionales•Buen lenguaje para prototipos: Es rápido para “codear”.•Apto para aplicaciones web: Método estandar en laboratorios para mostrar datos.
BiopythonBiopython
•Manipular secuencias•Enzimas de restricción•BLAST (local y online)•Acceso a bases de datos online (e.g. NCBI's EUtils)•Herramientas CLI (e.g. clustalw, emboss)•Clustering (Bio.Cluster)•Filogenética (Bio.Nexus)•Estructura proteica (Bio.PDB)•Soporte BioSQL•Genética de población (Bio.PopGen)
Efecto de la reina rojaEfecto de la reina roja
M.A.S (Selección Asistida por M.A.S (Selección Asistida por marcadores).marcadores).
➲ Técnica utilizada actualmente para la mayoría Técnica utilizada actualmente para la mayoría de los traits.de los traits.
➲ Seguimiento de los traits usando marcadores Seguimiento de los traits usando marcadores molecularesmoleculares
➲ Conceptos involucrados: Conceptos involucrados: Selección “tradicional”.Selección “tradicional”.
Marcadores molecularesMarcadores moleculares
Selección tradicionalSelección tradicional➲ Se determina una propiedad (trait) que se desea Se determina una propiedad (trait) que se desea
modificar (altura, % de aceite del grano, color de modificar (altura, % de aceite del grano, color de hoja, resistencia a quiebre, a enfermedades, etc).hoja, resistencia a quiebre, a enfermedades, etc).
➲ Se identifica fuente del trait (o se induce si no la Se identifica fuente del trait (o se induce si no la hubiese).hubiese).
➲ Se cruza la variedad que tiene el trait de interes, Se cruza la variedad que tiene el trait de interes, contra línea elite.contra línea elite.
➲ Se busca en la descendencia a los portadores del Se busca en la descendencia a los portadores del trait.trait.
➲ Se cruza nuevamente con los progenitores (para Se cruza nuevamente con los progenitores (para licuar otros genes de la fuente del trait)licuar otros genes de la fuente del trait)
Se busca la fuente del trait
X
Planta con trait deseado (0% genes “elite”)
Planta “elite”(100% genes “elite”)
F1
X
Planta con trait deseado y 50% de genes “elite”
Planta “elite” (100%)
F2
X
Planta con trait deseado y 75% de genes “elite”
Planta “elite” (100%)
F3
X
Planta con trait deseado y 87,5% de genes “elite”
Planta “elite” (100%)
F4
Ganancia genéticaGanancia genética
½ + ¼ + 1/8 + 1/16 + ....½ + ¼ + 1/8 + 1/16 + ....
En la F7 tenemos 98% de genes “elite”, pero En la F7 tenemos 98% de genes “elite”, pero conservando el gen “introducido”.conservando el gen “introducido”.
MASMAS
➲ Se determina una propiedad (trait) que se desea modificar.
➲ Se identifica fuente del trait (o se induce si no la hubiese).
➲ Se cruza la variedad que tiene el trait de interes, contra línea elite.
➲ Se busca en la descendencia a los portadores de los marcadores.
➲ Se cruza nuevamente con los progenitores
Se busca la fuente del trait
X
Planta con trait deseado (0% genes “elite”)
Planta “elite”(100% genes “elite”)
F1
X
Planta con trait deseado y 50% de genes “elite”
Planta “elite” (100%)
F2
X
Planta con trait deseado y 75% de genes “elite”
Planta “elite” (100%)
F3
Ventajas uso de MASVentajas uso de MAS
➲ Aceleración de tiempos.Aceleración de tiempos.
➲ Ahorro al no continuar lineas sin el trait.Ahorro al no continuar lineas sin el trait.
➲ Precisión al usar variable mas reproducible.Precisión al usar variable mas reproducible.
Aportes de la Bioinformática al Aportes de la Bioinformática al MASMAS
➲ Construcción de bases de datos de Construcción de bases de datos de marcadores molecularesmarcadores moleculares
➲ ID de NCRID de NCR
➲ Diseño de primersDiseño de primers
➲ Búsqueda regiones polimorficasBúsqueda regiones polimorficas
➲ ID de SNPsID de SNPs
• Búsqueda por homología de secuencia homologa Búsqueda por homología de secuencia homologa en AT mRNA: BLAST. Herramientas: en AT mRNA: BLAST. Herramientas: NCBIStandalone y NCBIXMLNCBIStandalone y NCBIXML
• Database retrieval de los resultados. Database retrieval de los resultados. Herramientas: MySQL-Python o SQLiteHerramientas: MySQL-Python o SQLite
• Alineamiento de 3 secuencias: problema (o Alineamiento de 3 secuencias: problema (o target), AT mRNA y AT full length. target), AT mRNA y AT full length. Herramientas: Bio.Clustalw.MultipleAlignCL y Herramientas: Bio.Clustalw.MultipleAlignCL y Bio.Clustalw.do_alignmentBio.Clustalw.do_alignment
Búsqueda de intronesBúsqueda de intrones
Mitocondria
Involucrada en la sintesis de ATP en la célula eucariota
Datos interesantes:i) Sus origenes se remontan a un evento de endosimbiosis en
la que una célula procarionte fue envaginada por otro procarionte para formar un linaje con dos genemas (Teoria endosimbiotica)
ii) La mitocondria contiene un genoma pequeño y circular que interactua con el genoma nuclear,
iii) Tiene gran variacion genetica en su secuencia.
Mitochondrial genome structure is of fundamental importance to understanding genetics, evolutionary and biochemical processes that take place into this organelle in crop model species
Métodos
1- Aislamiento de ADN puro de tomate
12.0
2.0
1.01.6
etiolated seedlings
Fraction number
0
20
40
60
80
100
27 31
% o
f m
axim
um
act
ivit
y
PF
P
cyt
cenrichedmit fraction
@ Percoll gradient fract
intactmit
“pure” mit
DNAsetreatment
DNAextraction
2- Contaminación de ADN y QC amplificando marcadores conocidos
rbcLchlCOXIImit
1:10
actinncl
1:50
1:10
0
1:40
0
1:10
1:50
1:10
1:50
1:10
0
C-
1:20
0
1:20
0
C-
1:40
0
1:10
0
C-
1:20
01:
400
Methodological strategy
3- Fragmentecion de ADN y construccion de biblioteca de shot-gun
0.81.01.62.03.04.0
enz mec
cloning and transformation
Fast check
4- Secuenciación
Nomenclature: SlmiNNZZZXY. This code accounts for:Sl: Solanum lycopersicon (cv Heinz).mi: mitochondrial libraryNN: library #ZZZ: plate #XY: well in plate
Sequences analysis and annotation pipeline
Lecturas son generadas en instrumentos ABI 3101
Asignación de bases por Phred
Validación, trimeo y enmascaramiento de vectores con SeqClean
Contigs (y singletons) generados por CAP3
Contigs (y singletons) blasteados contra Plant mt, otras mt, y NCBI DB.
Provisional map generated by anchoring onto the Nicotiana tabacum mitochondrial genome
www.mitochondrialgenome.org
Mariana Conte Sebastian Bassi
Funding
Credits
Virginia Gonzalez
EU-SOL project
Partnership and Collaborators
Partner groups Alisdair Fernie-Lothar Willmitzer
Biosciences Dept, Sao Paulo Uni, Brazil Magdalena Rossi
Boyce Thompson Institute, USA Jim Giovannoni
Institute of Molecular and Cell Biology of Rosario. Estela Valle
Laboratorio de Fisiología yBiologia Celular y MolecularNorberto Iusem
Biochemistry and Clinical Immunology Centre,Cordoba University. Ramón Asís
Mensaje para el hogar:Mensaje para el hogar:
Python es una plataforma de programación Python es una plataforma de programación completa para ciencia. No solo es útil para completa para ciencia. No solo es útil para resolver problemas prácticos sino que introduce resolver problemas prácticos sino que introduce buenos hábitos de programación.buenos hábitos de programación.
Recursos adicionalesRecursos adicionales
• PyAr: www.python.org.arPyAr: www.python.org.ar
• Biopython: www.biopython.orgBiopython: www.biopython.org
• SciPy: www.scipy.orgSciPy: www.scipy.org
• Tutorial en PLoS: Tutorial en PLoS: tinyurl.com/tutorialplos tinyurl.com/tutorialplos
• Libro: Libro: tinyurl.com/biopython tinyurl.com/biopython
• www.py4bio.comwww.py4bio.com
Contacto:Contacto:
[email protected]@genesdigitales.com
Twitter: @sbassiTwitter: @sbassi