SlideShare una empresa de Scribd logo
1 de 44
Introducción a la programación en Bioinformática XL Congreso Argentino de Genética III Simposio Latinoamericano de  Citogenética y Evolución 19/09/2011 – Corrientes, Argentina Hernán Morales Durand (hernan.morales@gmail.com) Instituto de Genética Veterinaria  (IGEVET - CONICET – CCT La Plata, Argentina)
Bioinformática Bioinformática Algorítmica Bioinformática Aplicada Programación para Bioinformática
Programar en Bioinformática “One-Liners” Scripting Wrapping (Interfaces de Usuario) Aplicaciones / Librerías
Recursos XML: SAX, DOM, XPath, XSLT, XHTML Expresiones Regulares (Regex) Shell Scripting Bases de Datos Relacionales: SQL Bio* toolkits: Biopython, BioRuby, BioPerl, BioConductor, BioJava, BioSmalltalk
One-Liners Unix ShellBourne: ash,ksh,bash,zshC: csh, tcshWindows Shellcmd.exe, ksh, WPS, MinGW32 Recursos: Shells “Nativos” http://www.mingw.org/
[object Object]
 Sustitución de comandos (` `)
 Variables
 Estructuras de control (if … then …)
 Iteración (for … do; … done)etc…One-Liners Recursos: Shells Comandos “built-in” Comandos “de sistema” Comodines(*,?) Pipes (|)
One-Liners (Shells) Recursos: Comandos más utilizados
One-Liners (Shells) Recursos: Comandos más utilizados
One-Liners (Shells) Ejemplo Proteinas.fasta >gi|71060009|emb|CAJ18548.1| Pparg [Mus musculus] MGETLGDSPVDPEHGAFADALPMSTSQEITMVDTEMPFWPTNFGISSVDLSVMEDHSHSFDIKPFTTVDF SSISAPHYEDIPFTRADPMVADYKYGLKLQEYQSAIKVEPASPPYYSEKTQLYNRPHEEPSNSLMAIECR VCGDKASGFHYGVHACEGCKGFFRRTIRLKLIYDRCDLNCRIHKKSRNKCQYCRFQKCLAVGMSHNAIRF GRMPQAEKEKLLAEISSDIDQLNPESADLRALAKHLYDSYIKSFPLTKAKARAILTGKTTDKSPFVIYDM NSLMMGEDKIKFKHITPLQEQSKEVAIRIFQGCQFRSVEAVQEITEYAKNIPGFINLDLNDQVTLLKYGV HEIIYTMLASLMNKDGVLISEGQGFMTREFLKSLRKPFGDFMEPKFEFAVKFNALELDDSDLAIFIAVII LSGDRPGLLNVKPIEDIQDNLLQALELQLKLNHPESSQLFAKVLQKMTDLRQIVTEHVQLLHVIKKTETD MSLHPLLQEIYKDLY >gi|2351995|gb|AAB68754.1| PPARG [Danio rerio] GFFRRTIRLKLVYDHCDLHCRIHKKSRNKCQYCRFQKCFPVGMS >gi|2351947|gb|AAB68730.1| PPARG [Scyliorhinus canicula] VKLDYDQCERNCKIQKKNRNKCQSCRFQKCFPVGMS >gi|2351905|gb|AAB68709.1| PPARG [Petromyzon marinus] GFFRRTMSTQVQYETCQMNCVIQKSNRNRCQFCRFHKC >gi|296474654|gb|DAA16769.1| peroxisome proliferator-activated receptor gamma [Bos taurus] MGETLGDALIDPESEPFAVTVSARTSQEITMVDTEMPFWPTNFGISSVDLSMMDDHSHAFDIKPFTTVDF SSISTPHYEDIPFPRADPMVADYKYDLKLQEYQSAIKVEPVSPPYYSEKTQLYSKPHEEPSNSLMAIECR VCGDKASGFHYGVHACEGCKGFFRRTIRLKLIYDRCDLNCRIHKKSRNKCQYCRFQKCLAVGMSHNAIRF …
One-Liners (Shells) Análisis Tenemos: Proteinas.fasta (Entrada) Queremos: Primeras 2 líneas de cada  proteína (Salida) Sabemos: Cada proteína en la entrada comienza  con ‘>’ (Pre-condición) Filtrar líneas = grep
One-Liners (Shells) “Diseño”
One-Liners (Shells) Implementación y Evaluación = One-Liner grep –A 2 ‘>’ Proteinas.fasta OPTIONS PATTERN FILE Actualización: Enviar la salida a un archivo Prot_Enc.txt grep –A 2 ‘>’ Proteinas.fasta > Prot_Enc.txt Redirección
One-Liners (Shells) Ejemplo: Manejo de grandes archivos…
One-Liners (Shells) Análisis Entrada: Reporte final de análsis de Microarray (Illumina)Salida: Filtrar columnas (SNP, Sample, Allele1, Allele2) y exportar a ExcelPre-condición: El archivo está formateadoTamaño: 664,4 MbEditores: Notepad++, SciTE, etc.
One-Liners (Shells) Análisis 10 filas   = (tabulación) = Formato CSV 4 columnas $ wc –l aug2011_FinalReport.txt 12447402 aug2011_FinalReport.txt
One-Liners (Shells) Diseño 1. Eliminar encabezado (10 líneas) Pseudocódigo 2. Extraer primeras 4 columnas 3. Reemplazar  por ;
One-Liners (Shells) Implementación: Eliminar encabezados Número de Registro actual en el archivo actual 1. awk 'FNR>10‘ 08aug2011_FinalReport.txt > snpPatCSV01.csv
One-Liners (Shells) Implementación: Eliminar columnas 2. cut -f 1,2,3,4 snps01.csv > snps02.csv  $ seq –s , 1 4 1,2,3,4  backtick 2. cut –f `seq –s , 1 4` snps01.csv > …
One-Liners (Shells) Implementación: Reemplazar caracteres Expresión Regular Sigue una expresión… 3. sed -e 's///g' snps02.csv > snps03.csv Reemplazo Global Sustitución de con… 4. head –n 3 snps.csv Buscado (tabulación) Reemplazo
Scripting $ awk 'FNR>10‘ aug2011_FinalReport.txt | cut –f ` seq –s , 1 4 ` |sed -e 's///g‘ > snps03.csv $ ^aug2011_FinalReport.txt ^09nov2010_DNAReport.txt^ $ history | grep FinalReport 204 awk 'FNR>10' aug2011_FinalReport.txt |  cut –f ` seq –s , 1 4 ` |sed -e 's///g‘ > snps03.csv $ !204:s/aug2011_FinalReport.txt/9nov2010_DNAReport.txt
Scripting Editor de texto o “IDE” $ cat exportToCSV Variable (Contenedor) #!/bin/bash CMD= `basename $0` if [ $# -lt 1 –o $# -gt 2 ] then 	echo “El comando $CMD debe tener dos parámetros” 1>&2 	exit 1 fi Contenido de Variable awk 'FNR>10‘ $1| cut –f `seq –s , 1 4` |sed -e 's///g‘ > $2 exit 0 $ chmod 755 exportToCSV $ ./exportToCSV aug2011_FinalReport.txt  rep_aug2011.csv $ ./exportToCSV nov2010_FinalReport.txt  rep_nov2010.csv $2 $0 $1 Cantidad de parámetros
Scripting Trabajar con secuencias (ADN, ARN, Proteínas, IUPAC) Analizar formatos de secuencias (BLAST, Clustalw, FASTA, GenBank, PubMed/Medline, ExPASy (Enzyme/Prosite), UniGene, SwissProt, …) Locales Conectar a bases de datos Remotas: KEGG, SCOP, InterPro, Entrez…  Conectar con programas (locales y remotos) Diagramar y graficar Toolkits Bio*
Scripting Trabajo con Toolkits Bio* Encontrar módulo e importar Encontrar clase Instanciar clase Programacion Orientada a Objetos (OOP)  Basada en clases Usar instancia Mensajes Clases Instancias Métodos (Objetos) (Objetos) (Objetos) (Objetos) (“Invocación”) (“Funciones”) Herencia (“Derivación”)
Scripting Toolkits Bio* Lenguajes de Programación Algorítmica Sentencias Programación Imperativa Legibilidad Estado Corrección Mantenibilidad Aislamiento Programación Procedural Nuevos requerimientos Diseño “Top-down” Programación Estructurada Código como redes de estructuras Encapsulamiento Programación Orientada a Objetos Polimorfismo Reflexión computacional
protein extended_protein ambiguous_dna extended_dna ambiguous_rna unambiguous_rna Scripting Trabajo con secuencias (Biopython) >>> from Bio.Seq import Seq >>> from Bio.Alphabet import IUPAC Clase >>> mi_sec = Seq('AAGTCAGTGTACTATTAGCATGCATGTGCAACACATTAGCTG',IUPAC.unambiguous_dna) >>> mi_sec Seq('AAGTCAGTGTACTATTAGCATGCATGTGCAACACATTAGCTG', IUPACUnambiguousDNA()) >>> mi_sec[3:15], len(mi_sec), mi_sec.count('C') (Seq('TCAGTGTACTAT', IUPACUnambiguousDNA()), 42, 8) Argumentos >>> mi_sec.complement() Seq('TTCAGTCACATGATAATCGTACGTACACGTTGTGTAATCGAC', IUPACUnambiguousDNA()) >>> mi_sec.reverse_complement() Seq('CAGCTAATGTGTTGCACATGCATGCTAATAGTACACTGACTT', IUPACUnambiguousDNA()) Instancias >>> mi_sec.transcribe() Seq('AAGUCAGUGUACUAUUAGCAUGCAUGUGCAACACAUUAGCUG', IUPACUnambiguousRNA()) >>> mi_sec.translate() Seq('KSVYY*HACATH*L', HasStopCodon(IUPACProtein(), '*')) Mensaje >>> rna_sec = mi_sec.transcribe() >>> rna_sec.back_transcribe() Seq('AAGTCAGTGTACTATTAGCATGCATGTGCAACACATTAGCTG', IUPACUnambiguousDNA())
Scripting Ejemplo: Explorar Biopython http://biopython.org/DIST/docs/api
Scripting Ejemplo: Explorar BioPerl http://doc.bioperl.org/bioperl-live
Scripting Ejemplo: Explorar BioRuby http://bioruby.open-bio.org/rdoc/
Scripting Ejemplo: Acceso a Entrez Bases de Datos Nucleotide Entrez PubMed Perl Python … BioPython BioJava BioPerl BioRuby BioPHP BioSmalltalk Structure eUtils …. API Búsqueda “Federada”
Scripting Ejemplo: Utilidades Entrez GI Nucleotide PMID PubMed UID (unique identifiers) MMDB-ID Structure …. (actualmente 38 Bases de Datos)
Scripting Utilidades Entrez
Scripting Utilidades Entrez: Secuencia de trabajo típica Obtener UID’s buscando en BBDD específica Obtener registros en formato XML Analizar resultados mediante parsing (DOM/SAX/VTD) o consultas XML (Xpath, Xquery, …) Ejemplo: Dados ID’s de nucleótidos de GenBank, obtener aquellas secuencias que tienen una descripción
Scripting esummary epost einfo esearch Ejemplo: Utilidades Entrez Base de Datos URL base Utilidad http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nuccore&id=34577062,24475906&rettype=fasta&retmode=xml Formato de salida de BBDD 'biosystems' 'books' 'cancerchromosomes' 'cdd' 'gap' 'gds' 'geo' 'gensat' 'genomeprj' 'homologene' 'journals' 'mesh' 'nlmcatalog' 'omia' 'pcassay' 'pccompound' 'pcsubstance' 'peptidome' 'probe' 'proteinclusters' 'domains' 'sra' 'structure' 'taxonomy' 'nucest'  'unigene' 'unists' 'ncbisearch' 'nucgss' 'gene' 'genome' 'protein' 'popset' 'snp' 'nuccore' 'omim' 'pubmed' 'pmc' fasta, gb gp, gpc gss est asn.1 html text xml
Scripting BioPerl use Bio::DB::EUtilities; use XML::LibXML qw( ); my@ids = qw(34577062 244759067); my$factory = Bio::DB::EUtilities->new(-eutil   => 'efetch', 		-db      => 'nuccore', 		-id      => ids, 		-email   => 'test@example.com', 		-retmode => 'xml', 		-rettype => 'fasta'); my$xml = $factory->get_Response->content; print$xml BioSmalltalk | result | result := BioEntrezClient new nuccore 	uids: #(34577062 244759067); 	setFasta; 	setModeXML; 	fetch. result outputToFile: ‘eFetch01.xml' setGb setModeASN1 setModeHTML setModeText
Scripting eFetch01.xml <?xmlversion="1.0"?>  <!DOCTYPE TSeqSet PUBLIC "-//NCBI//NCBI TSeq/EN" "http://www.ncbi.nlm.nih.gov/dtd/NCBI_TSeq.dtd">  <TSeqSet> <TSeq>   <TSeq_seqtypevalue="nucleotide"/>   <TSeq_gi>34577062</TSeq_gi>   <TSeq_accver>NM_001126.2</TSeq_accver>   <TSeq_taxid>9606</TSeq_taxid>   <TSeq_orgname>Homo sapiens</TSeq_orgname>   <TSeq_defline>Homo sapiens adenylosuccinatesynthase (ADSS), mRNA</TSeq_defline>   <TSeq_length>2775</TSeq_length>   <TSeq_sequence>GGAAGGGGCGTGGCCTCGCTGCCGAGGTGGCGGCCC……TTTTAAATGTTAAATTAGGTGCCACTTAAATTTATTTTATTACACCATGAATAGCTGATTAAAAGAACCAAATATTTCTAGTAAAAAAAAAAAAAAAAAAA</TSeq_sequence> </TSeq> <TSeq>   <TSeq_seqtypevalue="nucleotide"/>   <TSeq_gi>244759067</TSeq_gi>   <TSeq_accver>AJAAQ0139179.1</TSeq_accver>   <TSeq_sid>gnl|CAGE:AJAAQ|HCJ3000000139178</TSeq_sid>   <TSeq_defline>No definition line found</TSeq_defline>   <TSeq_length>20</TSeq_length>   <TSeq_sequence>GGTTATTCTTGGTTTCATAG</TSeq_sequence> </TSeq> </TSeqSet> XPath /TSeqSet/TSeq/TSeq_sequence //TSeq_sequence XPath /TSeqSet/TSeq[not(TSeq_defline = "No definition line found")]
Scripting XPath /TSeqSet/TSeq[not(TSeq_defline = "No definition line found")]//TSeq_sequence <TSeq_sequence>GGAAGGGGCGTGGCCTCGCTGCCGAGGTGGCGGCCCTTTTAAATGTTAAATTAGGTGCCACTTAAATTTATTTTATTACACCATGAATAGCTGATTAAAAGAACCAAATATTTCTAGTAAAAAAAAAAAAAAAAAAA</TSeq_sequence>
Scripting Recursos: Elementos utilizados Editores de texto IDE’s (Integrated Development Environment)
Scripting Recursos: Editores de texto Genéricos Multi-lenguaje Colorización de código Lista de funciones Integración con Compilador/Shell Ejemplos: Notepad++, SciTE, UltraEdit,  TextPad, Vim, Emacs, etc.
Scripting Recursos: IDE’s Perl: OptiPerl, Komodo Edit, Perl Express,… Específicos a lenguaje(s) Python: IDLE, PyPE, Leo, PyDev, …  Autocompletado de código Ruby: Rubymine, TextMate, … Java: Eclipse Ayuda sensitiva a contexto Smalltalk: Integrado (innecesario) Soporte a servidores web Depurador integrado Refactorings Basados en archivos (No son imágenes virtuales) Administración de Proyectos
BioSmalltalk con Pharo

Más contenido relacionado

Similar a Introducción a la programación en bioinformática

Python en biología molecular (UNLUX 2008)
Python en biología molecular (UNLUX 2008)Python en biología molecular (UNLUX 2008)
Python en biología molecular (UNLUX 2008)guestadf0d8
 
Unidad 2 programación estructurada
Unidad 2 programación estructuradaUnidad 2 programación estructurada
Unidad 2 programación estructuradaRoberth Camana
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magentoOnestic
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018Eudris Cabrera
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresChristian Lara
 
Base de datos_-_material_didactico
Base de datos_-_material_didacticoBase de datos_-_material_didactico
Base de datos_-_material_didacticoenriquehot
 
37 supervisión del sistema
37  supervisión del sistema37  supervisión del sistema
37 supervisión del sistemaAprende Viendo
 
Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladoresSheyli Patiño
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttlingGeneXus
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttlingGeneXus
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C SharpEdgardo Martinez
 
Como desarrollar-un-sistema-en-php-paso-a-paso
Como desarrollar-un-sistema-en-php-paso-a-pasoComo desarrollar-un-sistema-en-php-paso-a-paso
Como desarrollar-un-sistema-en-php-paso-a-pasocampucss
 
Compilador concatenacion
Compilador concatenacionCompilador concatenacion
Compilador concatenacionjessy Cueva
 
La prueba del software y los special purpose languages
La prueba del software y los special purpose languagesLa prueba del software y los special purpose languages
La prueba del software y los special purpose languagesSoftware Guru
 

Similar a Introducción a la programación en bioinformática (20)

Python en biología molecular (UNLUX 2008)
Python en biología molecular (UNLUX 2008)Python en biología molecular (UNLUX 2008)
Python en biología molecular (UNLUX 2008)
 
Unidad 2 programación estructurada
Unidad 2 programación estructuradaUnidad 2 programación estructurada
Unidad 2 programación estructurada
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
 
Analizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladoresAnalizador de una matriz utilizando compiladores
Analizador de una matriz utilizando compiladores
 
Base de datos_-_material_didactico
Base de datos_-_material_didacticoBase de datos_-_material_didactico
Base de datos_-_material_didactico
 
37 supervisión del sistema
37  supervisión del sistema37  supervisión del sistema
37 supervisión del sistema
 
Ejercicio compiladores
Ejercicio compiladoresEjercicio compiladores
Ejercicio compiladores
 
Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
C++
C++ C++
C++
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttling
 
0157 genexus full_throttling
0157 genexus full_throttling0157 genexus full_throttling
0157 genexus full_throttling
 
Act 01
Act 01Act 01
Act 01
 
HMSSC
HMSSCHMSSC
HMSSC
 
Php Peru Test Fest 2009
Php Peru Test Fest 2009Php Peru Test Fest 2009
Php Peru Test Fest 2009
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
 
Como desarrollar-un-sistema-en-php-paso-a-paso
Como desarrollar-un-sistema-en-php-paso-a-pasoComo desarrollar-un-sistema-en-php-paso-a-paso
Como desarrollar-un-sistema-en-php-paso-a-paso
 
Compilador concatenacion
Compilador concatenacionCompilador concatenacion
Compilador concatenacion
 
La prueba del software y los special purpose languages
La prueba del software y los special purpose languagesLa prueba del software y los special purpose languages
La prueba del software y los special purpose languages
 
Texto Paralelo.pptx
Texto Paralelo.pptxTexto Paralelo.pptx
Texto Paralelo.pptx
 

Último

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 

Último (19)

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 

Introducción a la programación en bioinformática

  • 1. Introducción a la programación en Bioinformática XL Congreso Argentino de Genética III Simposio Latinoamericano de Citogenética y Evolución 19/09/2011 – Corrientes, Argentina Hernán Morales Durand (hernan.morales@gmail.com) Instituto de Genética Veterinaria (IGEVET - CONICET – CCT La Plata, Argentina)
  • 2. Bioinformática Bioinformática Algorítmica Bioinformática Aplicada Programación para Bioinformática
  • 3. Programar en Bioinformática “One-Liners” Scripting Wrapping (Interfaces de Usuario) Aplicaciones / Librerías
  • 4. Recursos XML: SAX, DOM, XPath, XSLT, XHTML Expresiones Regulares (Regex) Shell Scripting Bases de Datos Relacionales: SQL Bio* toolkits: Biopython, BioRuby, BioPerl, BioConductor, BioJava, BioSmalltalk
  • 5. One-Liners Unix ShellBourne: ash,ksh,bash,zshC: csh, tcshWindows Shellcmd.exe, ksh, WPS, MinGW32 Recursos: Shells “Nativos” http://www.mingw.org/
  • 6.
  • 7. Sustitución de comandos (` `)
  • 9. Estructuras de control (if … then …)
  • 10. Iteración (for … do; … done)etc…One-Liners Recursos: Shells Comandos “built-in” Comandos “de sistema” Comodines(*,?) Pipes (|)
  • 11. One-Liners (Shells) Recursos: Comandos más utilizados
  • 12. One-Liners (Shells) Recursos: Comandos más utilizados
  • 13. One-Liners (Shells) Ejemplo Proteinas.fasta >gi|71060009|emb|CAJ18548.1| Pparg [Mus musculus] MGETLGDSPVDPEHGAFADALPMSTSQEITMVDTEMPFWPTNFGISSVDLSVMEDHSHSFDIKPFTTVDF SSISAPHYEDIPFTRADPMVADYKYGLKLQEYQSAIKVEPASPPYYSEKTQLYNRPHEEPSNSLMAIECR VCGDKASGFHYGVHACEGCKGFFRRTIRLKLIYDRCDLNCRIHKKSRNKCQYCRFQKCLAVGMSHNAIRF GRMPQAEKEKLLAEISSDIDQLNPESADLRALAKHLYDSYIKSFPLTKAKARAILTGKTTDKSPFVIYDM NSLMMGEDKIKFKHITPLQEQSKEVAIRIFQGCQFRSVEAVQEITEYAKNIPGFINLDLNDQVTLLKYGV HEIIYTMLASLMNKDGVLISEGQGFMTREFLKSLRKPFGDFMEPKFEFAVKFNALELDDSDLAIFIAVII LSGDRPGLLNVKPIEDIQDNLLQALELQLKLNHPESSQLFAKVLQKMTDLRQIVTEHVQLLHVIKKTETD MSLHPLLQEIYKDLY >gi|2351995|gb|AAB68754.1| PPARG [Danio rerio] GFFRRTIRLKLVYDHCDLHCRIHKKSRNKCQYCRFQKCFPVGMS >gi|2351947|gb|AAB68730.1| PPARG [Scyliorhinus canicula] VKLDYDQCERNCKIQKKNRNKCQSCRFQKCFPVGMS >gi|2351905|gb|AAB68709.1| PPARG [Petromyzon marinus] GFFRRTMSTQVQYETCQMNCVIQKSNRNRCQFCRFHKC >gi|296474654|gb|DAA16769.1| peroxisome proliferator-activated receptor gamma [Bos taurus] MGETLGDALIDPESEPFAVTVSARTSQEITMVDTEMPFWPTNFGISSVDLSMMDDHSHAFDIKPFTTVDF SSISTPHYEDIPFPRADPMVADYKYDLKLQEYQSAIKVEPVSPPYYSEKTQLYSKPHEEPSNSLMAIECR VCGDKASGFHYGVHACEGCKGFFRRTIRLKLIYDRCDLNCRIHKKSRNKCQYCRFQKCLAVGMSHNAIRF …
  • 14. One-Liners (Shells) Análisis Tenemos: Proteinas.fasta (Entrada) Queremos: Primeras 2 líneas de cada proteína (Salida) Sabemos: Cada proteína en la entrada comienza con ‘>’ (Pre-condición) Filtrar líneas = grep
  • 16. One-Liners (Shells) Implementación y Evaluación = One-Liner grep –A 2 ‘>’ Proteinas.fasta OPTIONS PATTERN FILE Actualización: Enviar la salida a un archivo Prot_Enc.txt grep –A 2 ‘>’ Proteinas.fasta > Prot_Enc.txt Redirección
  • 17. One-Liners (Shells) Ejemplo: Manejo de grandes archivos…
  • 18. One-Liners (Shells) Análisis Entrada: Reporte final de análsis de Microarray (Illumina)Salida: Filtrar columnas (SNP, Sample, Allele1, Allele2) y exportar a ExcelPre-condición: El archivo está formateadoTamaño: 664,4 MbEditores: Notepad++, SciTE, etc.
  • 19. One-Liners (Shells) Análisis 10 filas = (tabulación) = Formato CSV 4 columnas $ wc –l aug2011_FinalReport.txt 12447402 aug2011_FinalReport.txt
  • 20. One-Liners (Shells) Diseño 1. Eliminar encabezado (10 líneas) Pseudocódigo 2. Extraer primeras 4 columnas 3. Reemplazar por ;
  • 21. One-Liners (Shells) Implementación: Eliminar encabezados Número de Registro actual en el archivo actual 1. awk 'FNR>10‘ 08aug2011_FinalReport.txt > snpPatCSV01.csv
  • 22. One-Liners (Shells) Implementación: Eliminar columnas 2. cut -f 1,2,3,4 snps01.csv > snps02.csv $ seq –s , 1 4 1,2,3,4 backtick 2. cut –f `seq –s , 1 4` snps01.csv > …
  • 23. One-Liners (Shells) Implementación: Reemplazar caracteres Expresión Regular Sigue una expresión… 3. sed -e 's///g' snps02.csv > snps03.csv Reemplazo Global Sustitución de con… 4. head –n 3 snps.csv Buscado (tabulación) Reemplazo
  • 24. Scripting $ awk 'FNR>10‘ aug2011_FinalReport.txt | cut –f ` seq –s , 1 4 ` |sed -e 's///g‘ > snps03.csv $ ^aug2011_FinalReport.txt ^09nov2010_DNAReport.txt^ $ history | grep FinalReport 204 awk 'FNR>10' aug2011_FinalReport.txt | cut –f ` seq –s , 1 4 ` |sed -e 's///g‘ > snps03.csv $ !204:s/aug2011_FinalReport.txt/9nov2010_DNAReport.txt
  • 25. Scripting Editor de texto o “IDE” $ cat exportToCSV Variable (Contenedor) #!/bin/bash CMD= `basename $0` if [ $# -lt 1 –o $# -gt 2 ] then echo “El comando $CMD debe tener dos parámetros” 1>&2 exit 1 fi Contenido de Variable awk 'FNR>10‘ $1| cut –f `seq –s , 1 4` |sed -e 's///g‘ > $2 exit 0 $ chmod 755 exportToCSV $ ./exportToCSV aug2011_FinalReport.txt rep_aug2011.csv $ ./exportToCSV nov2010_FinalReport.txt rep_nov2010.csv $2 $0 $1 Cantidad de parámetros
  • 26. Scripting Trabajar con secuencias (ADN, ARN, Proteínas, IUPAC) Analizar formatos de secuencias (BLAST, Clustalw, FASTA, GenBank, PubMed/Medline, ExPASy (Enzyme/Prosite), UniGene, SwissProt, …) Locales Conectar a bases de datos Remotas: KEGG, SCOP, InterPro, Entrez… Conectar con programas (locales y remotos) Diagramar y graficar Toolkits Bio*
  • 27. Scripting Trabajo con Toolkits Bio* Encontrar módulo e importar Encontrar clase Instanciar clase Programacion Orientada a Objetos (OOP) Basada en clases Usar instancia Mensajes Clases Instancias Métodos (Objetos) (Objetos) (Objetos) (Objetos) (“Invocación”) (“Funciones”) Herencia (“Derivación”)
  • 28. Scripting Toolkits Bio* Lenguajes de Programación Algorítmica Sentencias Programación Imperativa Legibilidad Estado Corrección Mantenibilidad Aislamiento Programación Procedural Nuevos requerimientos Diseño “Top-down” Programación Estructurada Código como redes de estructuras Encapsulamiento Programación Orientada a Objetos Polimorfismo Reflexión computacional
  • 29. protein extended_protein ambiguous_dna extended_dna ambiguous_rna unambiguous_rna Scripting Trabajo con secuencias (Biopython) >>> from Bio.Seq import Seq >>> from Bio.Alphabet import IUPAC Clase >>> mi_sec = Seq('AAGTCAGTGTACTATTAGCATGCATGTGCAACACATTAGCTG',IUPAC.unambiguous_dna) >>> mi_sec Seq('AAGTCAGTGTACTATTAGCATGCATGTGCAACACATTAGCTG', IUPACUnambiguousDNA()) >>> mi_sec[3:15], len(mi_sec), mi_sec.count('C') (Seq('TCAGTGTACTAT', IUPACUnambiguousDNA()), 42, 8) Argumentos >>> mi_sec.complement() Seq('TTCAGTCACATGATAATCGTACGTACACGTTGTGTAATCGAC', IUPACUnambiguousDNA()) >>> mi_sec.reverse_complement() Seq('CAGCTAATGTGTTGCACATGCATGCTAATAGTACACTGACTT', IUPACUnambiguousDNA()) Instancias >>> mi_sec.transcribe() Seq('AAGUCAGUGUACUAUUAGCAUGCAUGUGCAACACAUUAGCUG', IUPACUnambiguousRNA()) >>> mi_sec.translate() Seq('KSVYY*HACATH*L', HasStopCodon(IUPACProtein(), '*')) Mensaje >>> rna_sec = mi_sec.transcribe() >>> rna_sec.back_transcribe() Seq('AAGTCAGTGTACTATTAGCATGCATGTGCAACACATTAGCTG', IUPACUnambiguousDNA())
  • 30. Scripting Ejemplo: Explorar Biopython http://biopython.org/DIST/docs/api
  • 31. Scripting Ejemplo: Explorar BioPerl http://doc.bioperl.org/bioperl-live
  • 32. Scripting Ejemplo: Explorar BioRuby http://bioruby.open-bio.org/rdoc/
  • 33. Scripting Ejemplo: Acceso a Entrez Bases de Datos Nucleotide Entrez PubMed Perl Python … BioPython BioJava BioPerl BioRuby BioPHP BioSmalltalk Structure eUtils …. API Búsqueda “Federada”
  • 34. Scripting Ejemplo: Utilidades Entrez GI Nucleotide PMID PubMed UID (unique identifiers) MMDB-ID Structure …. (actualmente 38 Bases de Datos)
  • 36. Scripting Utilidades Entrez: Secuencia de trabajo típica Obtener UID’s buscando en BBDD específica Obtener registros en formato XML Analizar resultados mediante parsing (DOM/SAX/VTD) o consultas XML (Xpath, Xquery, …) Ejemplo: Dados ID’s de nucleótidos de GenBank, obtener aquellas secuencias que tienen una descripción
  • 37. Scripting esummary epost einfo esearch Ejemplo: Utilidades Entrez Base de Datos URL base Utilidad http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nuccore&id=34577062,24475906&rettype=fasta&retmode=xml Formato de salida de BBDD 'biosystems' 'books' 'cancerchromosomes' 'cdd' 'gap' 'gds' 'geo' 'gensat' 'genomeprj' 'homologene' 'journals' 'mesh' 'nlmcatalog' 'omia' 'pcassay' 'pccompound' 'pcsubstance' 'peptidome' 'probe' 'proteinclusters' 'domains' 'sra' 'structure' 'taxonomy' 'nucest' 'unigene' 'unists' 'ncbisearch' 'nucgss' 'gene' 'genome' 'protein' 'popset' 'snp' 'nuccore' 'omim' 'pubmed' 'pmc' fasta, gb gp, gpc gss est asn.1 html text xml
  • 38. Scripting BioPerl use Bio::DB::EUtilities; use XML::LibXML qw( ); my@ids = qw(34577062 244759067); my$factory = Bio::DB::EUtilities->new(-eutil => 'efetch', -db => 'nuccore', -id => ids, -email => 'test@example.com', -retmode => 'xml', -rettype => 'fasta'); my$xml = $factory->get_Response->content; print$xml BioSmalltalk | result | result := BioEntrezClient new nuccore uids: #(34577062 244759067); setFasta; setModeXML; fetch. result outputToFile: ‘eFetch01.xml' setGb setModeASN1 setModeHTML setModeText
  • 39. Scripting eFetch01.xml <?xmlversion="1.0"?> <!DOCTYPE TSeqSet PUBLIC "-//NCBI//NCBI TSeq/EN" "http://www.ncbi.nlm.nih.gov/dtd/NCBI_TSeq.dtd"> <TSeqSet> <TSeq> <TSeq_seqtypevalue="nucleotide"/> <TSeq_gi>34577062</TSeq_gi> <TSeq_accver>NM_001126.2</TSeq_accver> <TSeq_taxid>9606</TSeq_taxid> <TSeq_orgname>Homo sapiens</TSeq_orgname> <TSeq_defline>Homo sapiens adenylosuccinatesynthase (ADSS), mRNA</TSeq_defline> <TSeq_length>2775</TSeq_length> <TSeq_sequence>GGAAGGGGCGTGGCCTCGCTGCCGAGGTGGCGGCCC……TTTTAAATGTTAAATTAGGTGCCACTTAAATTTATTTTATTACACCATGAATAGCTGATTAAAAGAACCAAATATTTCTAGTAAAAAAAAAAAAAAAAAAA</TSeq_sequence> </TSeq> <TSeq> <TSeq_seqtypevalue="nucleotide"/> <TSeq_gi>244759067</TSeq_gi> <TSeq_accver>AJAAQ0139179.1</TSeq_accver> <TSeq_sid>gnl|CAGE:AJAAQ|HCJ3000000139178</TSeq_sid> <TSeq_defline>No definition line found</TSeq_defline> <TSeq_length>20</TSeq_length> <TSeq_sequence>GGTTATTCTTGGTTTCATAG</TSeq_sequence> </TSeq> </TSeqSet> XPath /TSeqSet/TSeq/TSeq_sequence //TSeq_sequence XPath /TSeqSet/TSeq[not(TSeq_defline = "No definition line found")]
  • 40. Scripting XPath /TSeqSet/TSeq[not(TSeq_defline = "No definition line found")]//TSeq_sequence <TSeq_sequence>GGAAGGGGCGTGGCCTCGCTGCCGAGGTGGCGGCCCTTTTAAATGTTAAATTAGGTGCCACTTAAATTTATTTTATTACACCATGAATAGCTGATTAAAAGAACCAAATATTTCTAGTAAAAAAAAAAAAAAAAAAA</TSeq_sequence>
  • 41. Scripting Recursos: Elementos utilizados Editores de texto IDE’s (Integrated Development Environment)
  • 42. Scripting Recursos: Editores de texto Genéricos Multi-lenguaje Colorización de código Lista de funciones Integración con Compilador/Shell Ejemplos: Notepad++, SciTE, UltraEdit, TextPad, Vim, Emacs, etc.
  • 43. Scripting Recursos: IDE’s Perl: OptiPerl, Komodo Edit, Perl Express,… Específicos a lenguaje(s) Python: IDLE, PyPE, Leo, PyDev, … Autocompletado de código Ruby: Rubymine, TextMate, … Java: Eclipse Ayuda sensitiva a contexto Smalltalk: Integrado (innecesario) Soporte a servidores web Depurador integrado Refactorings Basados en archivos (No son imágenes virtuales) Administración de Proyectos
  • 46.
  • 47. Que herramientas de programación existen
  • 48.