Python en ciencia Pycon Argentina 2009

Post on 05-Jul-2015

3.202 views 0 download

description

Razones para usar Python en proyectos científicos, incluyendo ejemplos de uso en la vida real en el area de bioinformatica.

Transcript of Python en ciencia Pycon Argentina 2009

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:

sbassi@genesdigitales.comsbassi@genesdigitales.com

Twitter: @sbassiTwitter: @sbassi