SlideShare a Scribd company logo
1 of 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

More Related Content

Similar to 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 to 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
 

Recently uploaded

el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx221112876
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxdoloresolmosantiago
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC6dwwcgtpfx
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALGuadalinfoHuscarGuad
 
herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaJadeVilcscordova
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docxssusere34b451
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .itzyrivera61103
 
Introduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxIntroduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxcj12paz
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.241534381
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxJOELGARCIA849853
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaRicardoEstrada90
 
avancestecnologicossigloveintiunoprofetengohambreayuda
avancestecnologicossigloveintiunoprofetengohambreayudaavancestecnologicossigloveintiunoprofetengohambreayuda
avancestecnologicossigloveintiunoprofetengohambreayudadocente
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónUniversidad de Sonora
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).jcaballerosamayoa
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...dramosbrise1403
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaEdwinGarca59
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosYOMIRAVILLARREAL1
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónAntonia Yamilet Perez Palomares
 
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfJosAndrRosarioVzquez
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024NicolleAndrade7
 

Recently uploaded (20)

el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptx
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
 
herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el tema
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .
 
Introduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptxIntroduccion-a-la-electronica-industrial.pptx
Introduccion-a-la-electronica-industrial.pptx
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - Estrada
 
avancestecnologicossigloveintiunoprofetengohambreayuda
avancestecnologicossigloveintiunoprofetengohambreayudaavancestecnologicossigloveintiunoprofetengohambreayuda
avancestecnologicossigloveintiunoprofetengohambreayuda
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la información
 
BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
PRÁCTICA Nº 4: “Análisis de secuencias del ADN con el software BioEdit y uso ...
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de Datos
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024
 

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.