My talk in Spanish (Castellano) at the XL Argentine Conference of Genetics in Corrientes, Argentina (19/09/2011). Presentation of some bits of BioSmalltalk, the new developement platform for bioinformatics in Smalltalk.
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)
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
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.
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
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
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
40. Scripting XPath /TSeqSet/TSeq[not(TSeq_defline = "No definition line found")]//TSeq_sequence <TSeq_sequence>GGAAGGGGCGTGGCCTCGCTGCCGAGGTGGCGGCCCTTTTAAATGTTAAATTAGGTGCCACTTAAATTTATTTTATTACACCATGAATAGCTGATTAAAAGAACCAAATATTTCTAGTAAAAAAAAAAAAAAAAAAA</TSeq_sequence>
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