Perl 17 i 18/des/2007 Programació en Perl: aplicacions bioinformàtiques Universitat de Girona.

1 Perl 17 i 18/des/2007 Programació en Perl: aplicacions ...
Author: Raúl Castilla Soriano
0 downloads 4 Views

1 Perl 17 i 18/des/2007 Programació en Perl: aplicacions bioinformàtiques Universitat de Girona

2 Perl 17 i 18/des/2007 Punts a tractar Sistema local de gestió de la informació biològica El llenguatge Perl: característiques i instal·lació Estratègies de programació Variables en Perl Seqüències i cadenes Control de fluxe Expressions regulars Subrutines Mòduls Exemple integrador Com seguir avançant?

3 Perl 17 i 18/des/2007 SISTEMA LOCAL DE GESTIÓ DE LA INFORMACIÓ BIOLÒGICA

4 Perl 17 i 18/des/2007 El problema de la integració de dades ANÀLISI BIOINFORMÀTIC ESTÀNDAR 2. Anàlisis i emmagatzements successius 1. Extracció via Internet i emmagatzement local Bases de dades locals Ex. arxius o BBDD Fonts de dades externes: GenBank, EMBL-EBI, SWISSPROT,… Ex. Gens amb una det. funció, o proteïnes amb una det. estructura, o mutants que afecten a un fenotip donat, … Interfícies html Scripts cgi Eines d’anàlisi Ex. BLAST, predicció d’estructura, … Secundàries Primàries Terciàries 3. Consulta i visualització

5 Perl 17 i 18/des/2007 El problema de la integració de dades Dues maneres d’operar: 1.Manual: efectuar tot el procés manualment 2.Automatitzat: crear aplicacions o scripts amb un llenguatge adeqüat que automatitzin l’extracció d’informació i concatenin el tractament de les dades La capacitat de crear petits programes que ajudin a fer tasques bioinformàtiques pot ser increïblement útil; pot significar un estalvi molt considerable de temps respecte a fer el mateix manualment!!!

6 Perl 17 i 18/des/2007 Exemple d’una plataforma de gestió automatitzada Estimar polimorfisme nucleotídic a partir de seqüències de DNA de les bases de dades públiques (GenBank) Input: organismes, gens o identificadors del GenBank

7 Perl 17 i 18/des/2007 Exemple d’una plataforma de gestió automatitzada Get sequences & annotations INPUT: GenBank query, or submitted sequences Minimum number of sequences per category Clustal parameters CDS, exon, intron, 5’UTR, 3’UTR, promoter, etc. Group by species & gene Sequences & annotations Sequences organized in categories Alignment validation Subgroups Read gene annotations Extract gene regions Sequences, positions and orientations Polymorphism Syn & Non-syn polymorphisms Linkage disequilibrium Codon bias DIVERSITY ANALYSIS Web-based output Alignments Jalview OUTPUT MySQL database QUALITY ASSESSMENT ALIGNMENT DATA MINING AMNIS Aligns Source data GENOME LOCATION Consensus BLAT Minimum similarity & Minimum number of seqsper category ClustalW Muscle T-Coffee

8 Perl 17 i 18/des/2007 Exemple d’una plataforma de gestió automatitzada

9 Perl 17 i 18/des/2007 1.Extracció de dades mitjançant Screen scraping de pàgines web 2.Execució automatitzada de programes d’anàlisi de seqüències (CLUSTAL, MUSCLE, T-COFFEE, BLAT) 3.Connexió a base de dades per a l’emmagatzematge i consulta d’informació 4.Creació d’una interfície HTML per a fer consultes i mostrar resultats 5.Concatenació automatitzada de tots els passos anteriors Tot això és possible mitjançant la creació de petits scripts amb el llenguatge de programació Perl Exemple d’una plataforma de gestió automatitzada

10 Perl 17 i 18/des/2007 EL LLENGUATGE PERL: CARACTERÍSTIQUES I INSTAL·LACIÓ

11 Perl 17 i 18/des/2007 El llenguatge Perl: característiques PERL, Practical Extraction and Report Language (Larry Wall 1986) http://www.perl.com/ http://www.perl.com/ Un llenguatge interpretat orientat a la cerca, extracció i formatejat d’arxius de text Característiques: –Corba d’aprenentatge baixa i llarga –Manipula i processa seqüències llargues fàcilment –Molt utilitzat a laboratoris de biologia molecular per a la creació de pàgines web dinàmiques –Els programes es poden fer en pocs minuts (rapid prototyping), ideal per a resoldre les necessitats del dia a dia dels laboratoris de recerca –Portable –Velocitat bona, tot i que no òptima

13 Perl 17 i 18/des/2007 El llenguatge Perl: instal·lació

14 Perl 17 i 18/des/2007 El llenguatge Perl: instal·lació http://www.activestate.com/store/download_file.aspx?binGUID=e 5c71329-b7a6-4563-8199-e1483f751c4f

15 Perl 17 i 18/des/2007 ESTRATÈGIES DE PROGRAMACIÓ

16 Perl 17 i 18/des/2007 L’art de programar Programar és una manera de solucionar problemes resolubles de manera iterativa i gradual El procés de programar inclou: –Plantejar –Escriure / Codificar / Editar –Executar –Revisar errors (debugging) –Guardar i Backups

17 Perl 17 i 18/des/2007 El procés de programar Exemple: Un programa que cerca dianes de restricció en el DNA Imaginar un disseny general per al programa Escriure el “pseudo-codi” amb comentaris –Identificar els inputs requerits (les dades o informació que ha de subministrar l’usuari) –Fer un esboç del procés –Preveure les fases intermitges –Decidir com es donarà l’output (arxiu, pantalla, taula, gràfic, BBDD,…) Escriure el programa en codi Perl Refinar el model previ en els seus detalls no anticipats

18 Perl 17 i 18/des/2007 Un programa que suma Pseudo-codi (plantejament): 1.Sol·licitar els números a sumar 2.Fer la suma 3.Mostrar el resultat En Perl (només els comentaris): #Sol·licitar els números a sumar #Fer la suma #Mostrar el resultat

19 Perl 17 i 18/des/2007 Programació bàsica Intèrpret i programa (script)  nom.pl #!/usr/bin/perl print “mi primer script de perl”; Executar programes: anem a DOS (línia de comandes) i escribim C:>perl primer.pl –o bé (en Windows) C:>primer.pl –Resultat: C:>mi primer script de perl #!/usr/bin/perl #primer.pl print "El meu primer script en Perl!"; C:\>perl primer.pl C:\>primer.pl El meu primer script en Perl! C:\>_

20 Perl 17 i 18/des/2007 Com funciona un script Les instruccions s’executen una rera l’altre, des del principi: #!/usr/bin/perl # preámbulo... print “Puedo calcular!\n”; #hacer cálculos $suma = 3 + 4; #mostrar el resultado print ”La suma de 3 + 4 es “,$suma,”.\n”; El símbol # serveix per introduir comentaris; tot el que hi hagi darrera de # en una línia, no s’interpreta Exercici: editar i executar #!/usr/bin/perl #suma.pl print " Puc calcular!\n " ; #fer els càlculs $suma = 3 + 4; #mostrar el resultat print " La suma de 3 + 4 es $suma " ;

21 Perl 17 i 18/des/2007 VARIABLES EN PERL

22 Perl 17 i 18/des/2007 Tipus de dades Text (o cadena de caracters, string) “cadena numero 1”, ‘cadena numero 2’ Números 1, 49, 28.2, -109, 6.04E23 Caracters especials print “Nueva linea\nperl programa.pl Nova linia 23 Perl 17 i 18/des/2007 Variables escalars $a; # sensibles a majúscules i minúscules $A; # $a és diferent de $A # nom: números, lletres o línies de subratllat $nomDeVariable_Llarg; $x=42; # assignem el valor de 42 a $x print ' el valor de $x es '. $x. " \n " ; $x= ' DNA de cadena sencilla ' ; # canviem valor de $x print ' pero ara el valor de $x es '. $x. " \n " ; Proporcionen un lloc on guardar dades temporalment $nom C:\>perl programa2.pl el valor de $x es 42 pero ara el valor de $x es DNA de cadena sencilla { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_23.jpg", "name": "Perl 17 i 18/des/2007 Variables escalars $a; # sensibles a majúscules i minúscules $A; # $a és diferent de $A # nom: números, lletres o línies de subratllat $nomDeVariable_Llarg; $x=42; # assignem el valor de 42 a $x print el valor de $x es .", "description": "$x. \n ; $x= DNA de cadena sencilla ; # canviem valor de $x print pero ara el valor de $x es . $x. \n ; Proporcionen un lloc on guardar dades temporalment $nom C:\>perl programa2.pl el valor de $x es 42 pero ara el valor de $x es DNA de cadena sencilla.", "width": "800" } 24 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 1A –Exercici 1B { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_24.jpg", "name": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 1A –Exercici 1B", "description": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 1A –Exercici 1B", "width": "800" } 25 Perl 17 i 18/des/2007 Exercicis #!/usr/bin/perl # programa3.pl # Programa que almacena una secuencia de DNA # almacenamos una secuencia de DNA en una variable $DNA = " ACGGGGAGGACGGGAAATTACTACGGGCATTAGC " ; # Imprimimos la secuencia en la pantalla print $DNA; #salimos del programa exit; C:\>perl programa3.pl ACGGGGAGGACGGGAAATTACTACGGGCATTAGC C:\>_ { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_25.jpg", "name": "Perl 17 i 18/des/2007 Exercicis #!/usr/bin/perl # programa3.pl # Programa que almacena una secuencia de DNA # almacenamos una secuencia de DNA en una variable $DNA = ACGGGGAGGACGGGAAATTACTACGGGCATTAGC ; # Imprimimos la secuencia en la pantalla print $DNA; #salimos del programa exit; C:\>perl programa3.pl ACGGGGAGGACGGGAAATTACTACGGGCATTAGC C:\>_", "description": "Perl 17 i 18/des/2007 Exercicis #!/usr/bin/perl # programa3.pl # Programa que almacena una secuencia de DNA # almacenamos una secuencia de DNA en una variable $DNA = ACGGGGAGGACGGGAAATTACTACGGGCATTAGC ; # Imprimimos la secuencia en la pantalla print $DNA; #salimos del programa exit; C:\>perl programa3.pl ACGGGGAGGACGGGAAATTACTACGGGCATTAGC C:\>_", "width": "800" } 26 Perl 17 i 18/des/2007 Exercicis #!/usr/bin/perl # variables.pl # Programa que concatena fragmentos de DNA # Primero almacenamos dos secuencias de DNA en dos variables $DNA1 = "ACGGGGAGGACGGGAAATTACTACGGGCATTAGC"; $DNA2 = "ATAGTGCCGTGCATGCGACGATTCTGGCATACATC"; # Imprimimos en pantalla las dos secuencias separadamente print $DNA1. "\n"; print $DNA2. "\n\n"; # concatenamos ambas en una tercera variable que se imprime $DNA3 = $DNA1. $DNA2 ; print "Concatenación de los dos fragmentos de DNA: \n\n"; print "$DNA3\n\n"; exit; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_26.jpg", "name": "Perl 17 i 18/des/2007 Exercicis #!/usr/bin/perl # variables.pl # Programa que concatena fragmentos de DNA # Primero almacenamos dos secuencias de DNA en dos variables $DNA1 = ACGGGGAGGACGGGAAATTACTACGGGCATTAGC ; $DNA2 = ATAGTGCCGTGCATGCGACGATTCTGGCATACATC ; # Imprimimos en pantalla las dos secuencias separadamente print $DNA1.", "description": "\n ; print $DNA2. \n\n ; # concatenamos ambas en una tercera variable que se imprime $DNA3 = $DNA1. $DNA2 ; print Concatenación de los dos fragmentos de DNA: \n\n ; print $DNA3\n\n ; exit;.", "width": "800" } 27 Perl 17 i 18/des/2007 Operadors aritmètics Aritmètics: + suma - resta * multiplicació / divisió ** exponencial () agrupació { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_27.jpg", "name": "Perl 17 i 18/des/2007 Operadors aritmètics Aritmètics: + suma - resta * multiplicació / divisió ** exponencial () agrupació", "description": "Perl 17 i 18/des/2007 Operadors aritmètics Aritmètics: + suma - resta * multiplicació / divisió ** exponencial () agrupació", "width": "800" } 28 Perl 17 i 18/des/2007 Procedència d’operadors Procedència d’operadors com en una calculadora científica: Substituir les dues últimes línies per: #!/usr/bin/perl # operadores.pl $x = 4; $y = 2; $z = 3 + $x * $y; print " $z \n " ; print 3 + $x * $y. " \n " ; print (3 + 4) * 2. " \n " ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_28.jpg", "name": "Perl 17 i 18/des/2007 Procedència d’operadors Procedència d’operadors com en una calculadora científica: Substituir les dues últimes línies per: #!/usr/bin/perl # operadores.pl $x = 4; $y = 2; $z = 3 + $x * $y; print $z \n ; print 3 + $x * $y.", "description": "\n ; print (3 + 4) * 2. \n ;.", "width": "800" } 29 Perl 17 i 18/des/2007 Abreviatures d’Operadors +=Sumar un número a una variable –=Restar un número d’una variable *=Multiplicar un número per una variable /=Dividir una variable per un número ++ Sumar-li 1 a una variable ––Restar-li 1 a una variable.=Afegir una cadena a una variable Per exemple, si $a=2: $a+=3;  $a val 5$a++  $a val 3 $a-=1;  $a val 1 $a.=4;  $a val 24 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_29.jpg", "name": "Perl 17 i 18/des/2007 Abreviatures d’Operadors +=Sumar un número a una variable –=Restar un número d’una variable *=Multiplicar un número per una variable /=Dividir una variable per un número ++ Sumar-li 1 a una variable ––Restar-li 1 a una variable.=Afegir una cadena a una variable Per exemple, si $a=2: $a+=3;  $a val 5$a++  $a val 3 $a-=1;  $a val 1 $a.=4;  $a val 24", "description": "Perl 17 i 18/des/2007 Abreviatures d’Operadors +=Sumar un número a una variable –=Restar un número d’una variable *=Multiplicar un número per una variable /=Dividir una variable per un número ++ Sumar-li 1 a una variable ––Restar-li 1 a una variable.=Afegir una cadena a una variable Per exemple, si $a=2: $a+=3;  $a val 5$a++  $a val 3 $a-=1;  $a val 1 $a.=4;  $a val 24", "width": "800" } 30 Perl 17 i 18/des/2007 Arrays (matrius) #!/usr/bin/perl # matrices1.pl $base1=‘A’; # Esta es una mala solución $base2=‘C’; $base3=‘G’; # Declarar una matriz @bases = (‘A’,‘C’,‘G’); # Esta es la solución # por que puedo hacer este tipo de operaciones @old_bases = @bases; # Copia la matriz entera print “array de bases:\n”; # Muestra la matriz seguida print @bases. “\n”; # Muestra la matriz seguida print “@bases”; # Muestra la matriz con separaciones array de bases: ACG Es defineixen amb @nom { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_30.jpg", "name": "Perl 17 i 18/des/2007 Arrays (matrius) #!/usr/bin/perl # matrices1.pl $base1=‘A’; # Esta es una mala solución $base2=‘C’; $base3=‘G’; # Declarar una matriz @bases = (‘A’,‘C’,‘G’); # Esta es la solución # por que puedo hacer este tipo de operaciones @old_bases = @bases; # Copia la matriz entera print array de bases:\n ; # Muestra la matriz seguida print @bases.", "description": "\n ; # Muestra la matriz seguida print @bases ; # Muestra la matriz con separaciones array de bases: ACG Es defineixen amb @nom.", "width": "800" } 31 Perl 17 i 18/des/2007 Operacions amb matrius #!/usr/bin/perl # matrices2.pl - operaciones con arrays @bases = (‘A’,‘C’,‘G’); $tercera_base = $bases[2]; # OJO! Empieza por 0 (cero) # añade T al final = $bases[3] push @bases,‘T’; # Elimina, y retorna, el último elemento $ultima_base = pop @bases; # Elimina, y retorna, el primer elemento $primera = shift @bases; # añade un elemento al principio = $bases[0] unshift @bases,$primera; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_31.jpg", "name": "Perl 17 i 18/des/2007 Operacions amb matrius #!/usr/bin/perl # matrices2.pl - operaciones con arrays @bases = (‘A’,‘C’,‘G’); $tercera_base = $bases[2]; # OJO.", "description": "Empieza por 0 (cero) # añade T al final = $bases[3] push @bases,‘T’; # Elimina, y retorna, el último elemento $ultima_base = pop @bases; # Elimina, y retorna, el primer elemento $primera = shift @bases; # añade un elemento al principio = $bases[0] unshift @bases,$primera;.", "width": "800" } 32 Perl 17 i 18/des/2007 Operacions amb matrius Entorn (@ARGV) Bucles propis #!/usr/bin/perl # entorno.pl – Llamada entorno.pl Hola print $ARGV[0]. “\n”; # este el primer argumento print $0; # Corresponde al path y nombre del script foreach $elemento (@bases){ print $elemento.”\n”; } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_32.jpg", "name": "Perl 17 i 18/des/2007 Operacions amb matrius Entorn (@ARGV) Bucles propis #!/usr/bin/perl # entorno.pl – Llamada entorno.pl Hola print $ARGV[0].", "description": "\n ; # este el primer argumento print $0; # Corresponde al path y nombre del script foreach $elemento (@bases){ print $elemento. \n ; }.", "width": "800" } 33 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 2A –Exercici 2B –Exercici 2C –Exercici 2D –Exercici 2F { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_33.jpg", "name": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 2A –Exercici 2B –Exercici 2C –Exercici 2D –Exercici 2F", "description": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 2A –Exercici 2B –Exercici 2C –Exercici 2D –Exercici 2F", "width": "800" } 34 Perl 17 i 18/des/2007 Hashes (matrius associatives) Són similars als arrays però: –Els elements tenen ‘nom’ (claus o keys) –Es defineix amb %nom #!/usr/bin/perl # hash.pl - Declarar un hash %purinas = (‘A’=>‘Adenina’, ‘G’=>‘Guanina’); # afegir elements després d’haber definit el hash %pirimidinas = (); $pirimidinas{‘C’}=‘Citosina’; $pirimidinas{‘T’}=‘Timina’; # puedo hacer este tipo de operaciones print “G es $purinas{‘G’}\n”; print %purinas.“\n”; # Valores e índices concatenados $queBase = 'T'; print "$queBase es $pirimidinas{$queBase}\n"; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_34.jpg", "name": "Perl 17 i 18/des/2007 Hashes (matrius associatives) Són similars als arrays però: –Els elements tenen ‘nom’ (claus o keys) –Es defineix amb %nom #!/usr/bin/perl # hash.pl - Declarar un hash %purinas = (‘A’=>‘Adenina’, ‘G’=>‘Guanina’); # afegir elements després d’haber definit el hash %pirimidinas = (); $pirimidinas{‘C’}=‘Citosina’; $pirimidinas{‘T’}=‘Timina’; # puedo hacer este tipo de operaciones print G es $purinas{‘G’}\n ; print %purinas. \n ; # Valores e índices concatenados $queBase = T ; print $queBase es $pirimidinas{$queBase}\n ;", "description": "Perl 17 i 18/des/2007 Hashes (matrius associatives) Són similars als arrays però: –Els elements tenen ‘nom’ (claus o keys) –Es defineix amb %nom #!/usr/bin/perl # hash.pl - Declarar un hash %purinas = (‘A’=>‘Adenina’, ‘G’=>‘Guanina’); # afegir elements després d’haber definit el hash %pirimidinas = (); $pirimidinas{‘C’}=‘Citosina’; $pirimidinas{‘T’}=‘Timina’; # puedo hacer este tipo de operaciones print G es $purinas{‘G’}\n ; print %purinas. \n ; # Valores e índices concatenados $queBase = T ; print $queBase es $pirimidinas{$queBase}\n ;", "width": "800" } 35 Perl 17 i 18/des/2007 Hashes (keys i values) # (…) hashes-keys.pl # Recuperar las claves o los valores en una matriz @claves = keys %bases; @Datos = values %bases; print @claves."\n". "@Datos"."\n"; foreach $codigo (@claves) { print "$codigo es $bases{$codigo}\n"; } C:\>perl hashes_keys.pl ATCG AdeninaTiminaCitosinaGuanina A es Adenina T es Timina C es Citosina G es Guanina C:\>_ { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_35.jpg", "name": "Perl 17 i 18/des/2007 Hashes (keys i values) # (…) hashes-keys.pl # Recuperar las claves o los valores en una matriz @claves = keys %bases; @Datos = values %bases; print @claves. \n .", "description": "@Datos . \n ; foreach $codigo (@claves) { print $codigo es $bases{$codigo}\n ; } C:\>perl hashes_keys.pl ATCG AdeninaTiminaCitosinaGuanina A es Adenina T es Timina C es Citosina G es Guanina C:\>_.", "width": "800" } 36 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 2G { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_36.jpg", "name": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 2G", "description": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 2G", "width": "800" } 37 Perl 17 i 18/des/2007 SEQÜÈNCIES I CADENES { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_37.jpg", "name": "Perl 17 i 18/des/2007 SEQÜÈNCIES I CADENES", "description": "Perl 17 i 18/des/2007 SEQÜÈNCIES I CADENES", "width": "800" } 38 Perl 17 i 18/des/2007 Entrada dades Càlcul / Operacions Sortida dades Estructura bàsica { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_38.jpg", "name": "Perl 17 i 18/des/2007 Entrada dades Càlcul / Operacions Sortida dades Estructura bàsica", "description": "Perl 17 i 18/des/2007 Entrada dades Càlcul / Operacions Sortida dades Estructura bàsica", "width": "800" } 39 Perl 17 i 18/des/2007 Entrada/Sortida des del teclat Entrada des de teclat: Exercici 1: editar i executar el programa anterior Exercici 2: editar i executar un programa que demani el nom d’usuari i llavors l’imprimeixi #/usr/bin/perl # ES.pl print "entra tu edad: "; $edad = ; print "tu edad en años de perro es ". $edad/7. "\n"; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_39.jpg", "name": "Perl 17 i 18/des/2007 Entrada/Sortida des del teclat Entrada des de teclat: Exercici 1: editar i executar el programa anterior Exercici 2: editar i executar un programa que demani el nom d’usuari i llavors l’imprimeixi #/usr/bin/perl # ES.pl print entra tu edad: ; $edad = ; print tu edad en años de perro es .", "description": "$edad/7. \n ;.", "width": "800" } 40 Perl 17 i 18/des/2007 Entrada/Sortida des del teclat Funcions que ens ajuden a realitzar tasques senzilles: #/usr/bin/perl print “Entra tu nombre: ”; chomp ($name = ); print “Hola, $name, encantado de conocerte\n”; #/usr/bin/perl # chomp.pl print “Entra tu nombre: ”; chomp ($nombre = ); # equivale a print “Hola $nombre!, encantado de conocerte.\n”; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_40.jpg", "name": "Perl 17 i 18/des/2007 Entrada/Sortida des del teclat Funcions que ens ajuden a realitzar tasques senzilles: #/usr/bin/perl print Entra tu nombre: ; chomp ($name = ); print Hola, $name, encantado de conocerte\n ; #/usr/bin/perl # chomp.pl print Entra tu nombre: ; chomp ($nombre = ); # equivale a print Hola $nombre!, encantado de conocerte.\n ;", "description": "Perl 17 i 18/des/2007 Entrada/Sortida des del teclat Funcions que ens ajuden a realitzar tasques senzilles: #/usr/bin/perl print Entra tu nombre: ; chomp ($name = ); print Hola, $name, encantado de conocerte\n ; #/usr/bin/perl # chomp.pl print Entra tu nombre: ; chomp ($nombre = ); # equivale a print Hola $nombre!, encantado de conocerte.\n ;", "width": "800" } 41 Perl 17 i 18/des/2007 Entrada/Sortida a arxius Per a llegir o escriure dades a arxius de text, és necessari l’ús de filehandles open(FICHERO,'datos.txt'); –FICHERO : filehandle –‘datos.txt’ : nombre del fichero open(FICH_DATOS, 'c:\scripts\myfile.txt') open(FICH_DATOS, 'c:\scripts\myfile.txt'); { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_41.jpg", "name": "Perl 17 i 18/des/2007 Entrada/Sortida a arxius Per a llegir o escriure dades a arxius de text, és necessari l’ús de filehandles open(FICHERO, datos.txt ); –FICHERO : filehandle –‘datos.txt’ : nombre del fichero open(FICH_DATOS, c:\scripts\myfile.txt ) open(FICH_DATOS, c:\scripts\myfile.txt );", "description": "Perl 17 i 18/des/2007 Entrada/Sortida a arxius Per a llegir o escriure dades a arxius de text, és necessari l’ús de filehandles open(FICHERO, datos.txt ); –FICHERO : filehandle –‘datos.txt’ : nombre del fichero open(FICH_DATOS, c:\scripts\myfile.txt ) open(FICH_DATOS, c:\scripts\myfile.txt );", "width": "800" } 42 Perl 17 i 18/des/2007 Lectura d’arxius open MIFICHERO,’datos.txt’; @linea = ; close MIFICHERO; Exercici: Llegir la següent seqüència proteica des d’un arxiu i imprimir-la en pantalla #/usr/bin/perl # FileInArray.pl open(MIFICHERO, “datos.txt”); @array = ; # Cargamos fichero en matriz close MIFICHERO; 1 MNIDDKLEGL FLKCGGIDEM QSSRTMVVMG 30 31 GVSGQSTVSG ELQDSVLQDR SMPHQEILAA 60 61 DEVLQESEMR QQDMISHDEL MVHEETVKND 90 91 EEQMETHERL PQGLQYALNV PISVKQEITF 120 121 TDVSEQLMRD KKQIR 135 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_42.jpg", "name": "Perl 17 i 18/des/2007 Lectura d’arxius open MIFICHERO,’datos.txt’; @linea = ; close MIFICHERO; Exercici: Llegir la següent seqüència proteica des d’un arxiu i imprimir-la en pantalla #/usr/bin/perl # FileInArray.pl open(MIFICHERO, datos.txt ); @array = ; # Cargamos fichero en matriz close MIFICHERO; 1 MNIDDKLEGL FLKCGGIDEM QSSRTMVVMG 30 31 GVSGQSTVSG ELQDSVLQDR SMPHQEILAA 60 61 DEVLQESEMR QQDMISHDEL MVHEETVKND 90 91 EEQMETHERL PQGLQYALNV PISVKQEITF 120 121 TDVSEQLMRD KKQIR 135", "description": "Perl 17 i 18/des/2007 Lectura d’arxius open MIFICHERO,’datos.txt’; @linea = ; close MIFICHERO; Exercici: Llegir la següent seqüència proteica des d’un arxiu i imprimir-la en pantalla #/usr/bin/perl # FileInArray.pl open(MIFICHERO, datos.txt ); @array = ; # Cargamos fichero en matriz close MIFICHERO; 1 MNIDDKLEGL FLKCGGIDEM QSSRTMVVMG 30 31 GVSGQSTVSG ELQDSVLQDR SMPHQEILAA 60 61 DEVLQESEMR QQDMISHDEL MVHEETVKND 90 91 EEQMETHERL PQGLQYALNV PISVKQEITF 120 121 TDVSEQLMRD KKQIR 135", "width": "800" } 43 Perl 17 i 18/des/2007 Escriptura a arxius #/usr/bin/perl # EscrituraFicheros.pl open FICHERO, ‘>data.txt’; # Crear para escribir open FICHERO, ‘>>data.txt’; # ó añadir al final print FICHERO $proteinSeq; close FICHERO; Exercici: Modifica el programa anterior per escriure la seqüència proteica a un nou arxiu { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_43.jpg", "name": "Perl 17 i 18/des/2007 Escriptura a arxius #/usr/bin/perl # EscrituraFicheros.pl open FICHERO, ‘>data.txt’; # Crear para escribir open FICHERO, ‘>>data.txt’; # ó añadir al final print FICHERO $proteinSeq; close FICHERO; Exercici: Modifica el programa anterior per escriure la seqüència proteica a un nou arxiu", "description": "Perl 17 i 18/des/2007 Escriptura a arxius #/usr/bin/perl # EscrituraFicheros.pl open FICHERO, ‘>data.txt’; # Crear para escribir open FICHERO, ‘>>data.txt’; # ó añadir al final print FICHERO $proteinSeq; close FICHERO; Exercici: Modifica el programa anterior per escriure la seqüència proteica a un nou arxiu", "width": "800" } 44 Perl 17 i 18/des/2007 La instrucció “die” Si l’arxiu no existeix, mostra el missatge d’error i atura el programa #/usr/bin/perl # FileOrDie.pl open (FICHERO, “EsteFicheroNoExiste.xxx") or die "No encuentro el fichero"; @lineas = ; close FICHERO; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_44.jpg", "name": "Perl 17 i 18/des/2007 La instrucció die Si l’arxiu no existeix, mostra el missatge d’error i atura el programa #/usr/bin/perl # FileOrDie.pl open (FICHERO, EsteFicheroNoExiste.xxx ) or die No encuentro el fichero ; @lineas = ; close FICHERO;", "description": "Perl 17 i 18/des/2007 La instrucció die Si l’arxiu no existeix, mostra el missatge d’error i atura el programa #/usr/bin/perl # FileOrDie.pl open (FICHERO, EsteFicheroNoExiste.xxx ) or die No encuentro el fichero ; @lineas = ; close FICHERO;", "width": "800" } 45 Perl 17 i 18/des/2007 CONTROL DE FLUXE { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_45.jpg", "name": "Perl 17 i 18/des/2007 CONTROL DE FLUXE", "description": "Perl 17 i 18/des/2007 CONTROL DE FLUXE", "width": "800" } 46 Perl 17 i 18/des/2007 Entrada dades Entrada dades Operació B Operació A Condició? Condicions no OK OK Condicions { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_46.jpg", "name": "Perl 17 i 18/des/2007 Entrada dades Entrada dades Operació B Operació A Condició.", "description": "Condicions no OK OK Condicions.", "width": "800" } 47 Perl 17 i 18/des/2007 Decisiones condicionales: if #!/usr/bin/perl print “dime tu edad: “; $edad = ; if (($edad = 100)) { print “error al leer la edad. \n”; die “edad ridícula”; } print “tu edad en años de perro es”,$edad/7,”\n”; Exercici: editar i executar el programa amb els valors –20, 30, hola #!/usr/bin/perl # if1.pl print “dime tu edad: “; $edad = ; if ($edad 48 Perl 17 i 18/des/2007 Operadores Comparadors numèrics: == igualtat$a == $b != desigualtat < menor > major = major o igual ! not lògic { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_48.jpg", "name": "Perl 17 i 18/des/2007 Operadores Comparadors numèrics: == igualtat$a == $b != desigualtat < menor > major = major o igual .", "description": "not lògic.", "width": "800" } 49 Perl 17 i 18/des/2007 Operadores Comparadors per cadenes eq igualtat$a eq $b ne desigualtat lt menor (less than) gt major (greather than) le menor o igual (less or equal to) ge major o igual (greather or equal to) =~ pattern matching$a =~ /gattc/ El símbolo ~ se consigue pulsando AltGr+4 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_49.jpg", "name": "Perl 17 i 18/des/2007 Operadores Comparadors per cadenes eq igualtat$a eq $b ne desigualtat lt menor (less than) gt major (greather than) le menor o igual (less or equal to) ge major o igual (greather or equal to) =~ pattern matching$a =~ /gattc/ El símbolo ~ se consigue pulsando AltGr+4", "description": "Perl 17 i 18/des/2007 Operadores Comparadors per cadenes eq igualtat$a eq $b ne desigualtat lt menor (less than) gt major (greather than) le menor o igual (less or equal to) ge major o igual (greather or equal to) =~ pattern matching$a =~ /gattc/ El símbolo ~ se consigue pulsando AltGr+4", "width": "800" } 50 Perl 17 i 18/des/2007 Atenció a l’ordre al comparar cadenes: 0, 1, 2, 3,..., 9, A,..., Z, a,..., z if (“TGCA” lt “acgt”) tornarà VERTADER!! { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_50.jpg", "name": "Perl 17 i 18/des/2007 Atenció a l’ordre al comparar cadenes: 0, 1, 2, 3,..., 9, A,..., Z, a,..., z if ( TGCA lt acgt ) tornarà VERTADER!!", "description": "Perl 17 i 18/des/2007 Atenció a l’ordre al comparar cadenes: 0, 1, 2, 3,..., 9, A,..., Z, a,..., z if ( TGCA lt acgt ) tornarà VERTADER!!", "width": "800" } 51 Perl 17 i 18/des/2007 If – else #!/usr/bin/perl # if-else.pl print “entra tu edad: “; $edad = ; if ( ($edad 100) ){ print “error en la edad introducida.\n”; } else { print “tu edad en años de perro “,$edad/7,”\n”; } printf “tu edad en años de perro es %0.2f \n”, $edad/7; Per a mostrar valors amb format (ex. 2 decimals), utilitzem printf: { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_51.jpg", "name": "Perl 17 i 18/des/2007 If – else #!/usr/bin/perl # if-else.pl print entra tu edad: ; $edad = ; if ( ($edad 100) ){ print error en la edad introducida.\n ; } else { print tu edad en años de perro ,$edad/7, \n ; } printf tu edad en años de perro es %0.2f \n , $edad/7; Per a mostrar valors amb format (ex.", "description": "2 decimals), utilitzem printf:.", "width": "800" } 52 Perl 17 i 18/des/2007 If – elsif – else #!/usr/bin/perl # if-elsif.pl print “Entra tu edad: “; $edad = ; if ( $edad = 100 ) { print “un perro no puede vivir tanto”; } else { print “tu edad es: “, $edad/7, “\n”; } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_52.jpg", "name": "Perl 17 i 18/des/2007 If – elsif – else #!/usr/bin/perl # if-elsif.pl print Entra tu edad: ; $edad = ; if ( $edad = 100 ) { print un perro no puede vivir tanto ; } else { print tu edad es: , $edad/7, \n ; }", "description": "Perl 17 i 18/des/2007 If – elsif – else #!/usr/bin/perl # if-elsif.pl print Entra tu edad: ; $edad = ; if ( $edad = 100 ) { print un perro no puede vivir tanto ; } else { print tu edad es: , $edad/7, \n ; }", "width": "800" } 53 Perl 17 i 18/des/2007 Entrada dades Entrada dades Operació B Operació A Condició? Bucles fals (no segueixo) vertader(segueixo) Bucles { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_53.jpg", "name": "Perl 17 i 18/des/2007 Entrada dades Entrada dades Operació B Operació A Condició.", "description": "Bucles fals (no segueixo) vertader(segueixo) Bucles.", "width": "800" } 54 Perl 17 i 18/des/2007 Exercici alternativa: until ($cont > 5) Instrucció While #!/usr/bin/perl # while.pl $cont = 1; while ($cont 55 Perl 17 i 18/des/2007 Instrucció While + arxius #!/usr/bin/perl # Whilefile.pl open(ARCHIVO, “llistat.txt”); while ($linea = ) { print $linea; } close(ARCHIVO); (...) while ( ) { print $_; } (...) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_55.jpg", "name": "Perl 17 i 18/des/2007 Instrucció While + arxius #!/usr/bin/perl # Whilefile.pl open(ARCHIVO, llistat.txt ); while ($linea = ) { print $linea; } close(ARCHIVO); (...) while ( ) { print $_; } (...)", "description": "Perl 17 i 18/des/2007 Instrucció While + arxius #!/usr/bin/perl # Whilefile.pl open(ARCHIVO, llistat.txt ); while ($linea = ) { print $linea; } close(ARCHIVO); (...) while ( ) { print $_; } (...)", "width": "800" } 56 Perl 17 i 18/des/2007 EXPRESSIONS REGULARS { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_56.jpg", "name": "Perl 17 i 18/des/2007 EXPRESSIONS REGULARS", "description": "Perl 17 i 18/des/2007 EXPRESSIONS REGULARS", "width": "800" } 57 Perl 17 i 18/des/2007 #!/usr/bin/perl # patterns1.pl #... if ($dna =~/GATTC/) { print “EcoRI encontrado!”; } $dna =~/GGG[GATC]CCC/; # GGG (luego G ó A ó T ó C) y CCC $dna =~/GATTC|AAGCTT/; # EcoRI ó Hind III Cerca de patrons (Pattern Matching) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_57.jpg", "name": "Perl 17 i 18/des/2007 #!/usr/bin/perl # patterns1.pl #...", "description": "if ($dna =~/GATTC/) { print EcoRI encontrado! ; } $dna =~/GGG[GATC]CCC/; # GGG (luego G ó A ó T ó C) y CCC $dna =~/GATTC|AAGCTT/; # EcoRI ó Hind III Cerca de patrons (Pattern Matching).", "width": "800" } 58 Perl 17 i 18/des/2007 Metacaràcters.Qualsevol caràcter excepte newline ^ Principi de línia $Final de línia \w Qualsevol caràcter alfanumèric \WQualsevol caràcter no alfanumèric \sQualsevol caràcter espaiador \SQualsevol caràcter no espaiador \dQualsevol dígit \DQualsevol caràcter no dígit […]Qualsevol dels caràcters de dins dels claudàtors (també: [A-Z], [a-z], [0-9], [A- Za-z], [A-Z0-9],...) [^…]Qualsevol caràcter excepte els dels claudàtors { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_58.jpg", "name": "Perl 17 i 18/des/2007 Metacaràcters.Qualsevol caràcter excepte newline ^ Principi de línia $Final de línia \w Qualsevol caràcter alfanumèric \WQualsevol caràcter no alfanumèric \sQualsevol caràcter espaiador \SQualsevol caràcter no espaiador \dQualsevol dígit \DQualsevol caràcter no dígit […]Qualsevol dels caràcters de dins dels claudàtors (també: [A-Z], [a-z], [0-9], [A- Za-z], [A-Z0-9],...) [^…]Qualsevol caràcter excepte els dels claudàtors", "description": "Perl 17 i 18/des/2007 Metacaràcters.Qualsevol caràcter excepte newline ^ Principi de línia $Final de línia \w Qualsevol caràcter alfanumèric \WQualsevol caràcter no alfanumèric \sQualsevol caràcter espaiador \SQualsevol caràcter no espaiador \dQualsevol dígit \DQualsevol caràcter no dígit […]Qualsevol dels caràcters de dins dels claudàtors (també: [A-Z], [a-z], [0-9], [A- Za-z], [A-Z0-9],...) [^…]Qualsevol caràcter excepte els dels claudàtors", "width": "800" } 59 Perl 17 i 18/des/2007 Quantificadors ?0 o 1 coincidència +1 o més coincidències *0 o més coincidències {N}N coincidències {N,M}Entre N i M coincidències {N, }N o més coincidències {, M}M o menys coincidències { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_59.jpg", "name": "Perl 17 i 18/des/2007 Quantificadors 0 o 1 coincidència +1 o més coincidències *0 o més coincidències {N}N coincidències {N,M}Entre N i M coincidències {N, }N o més coincidències {, M}M o menys coincidències", "description": "Perl 17 i 18/des/2007 Quantificadors 0 o 1 coincidència +1 o més coincidències *0 o més coincidències {N}N coincidències {N,M}Entre N i M coincidències {N, }N o més coincidències {, M}M o menys coincidències", "width": "800" } 60 Perl 17 i 18/des/2007 Exemples de patrons Codi postal –$cp =~ /\d\d\d\d\d/; –$cp =~ /\d{5}/; –$cp_us =~ /\d{5} (-\d{4})?/; Identificadors de seqüències com “M58200.2” –$idSecuencia =~ /\w+\.\d+/; ? 0 ó 1 elementos + 1 ó más elementos * 0 ó más elementos {N,M}Entre N y M elementos {N, }N o más elementos {, M}M o menos elementos.Cualquier carácter excepto newline ^ Principio de línea $Final de línea \w Cualquier carácter alfanumérico \WCualquier carácter no-alfanum. \sCualquier carácter espaciador \SCualquier carácter no-espaciador \dCualquier dígito \DCarácter no dígito Caràcters que cal “escapar”: \$\[ \|\] \*\\ \^\/ { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_60.jpg", "name": "Perl 17 i 18/des/2007 Exemples de patrons Codi postal –$cp =~ /\d\d\d\d\d/; –$cp =~ /\d{5}/; –$cp_us =~ /\d{5} (-\d{4}) /; Identificadors de seqüències com M58200.2 –$idSecuencia =~ /\w+\.\d+/; .", "description": "0 ó 1 elementos + 1 ó más elementos * 0 ó más elementos {N,M}Entre N y M elementos {N, }N o más elementos {, M}M o menos elementos.Cualquier carácter excepto newline ^ Principio de línea $Final de línea \w Cualquier carácter alfanumérico \WCualquier carácter no-alfanum. \sCualquier carácter espaciador \SCualquier carácter no-espaciador \dCualquier dígito \DCarácter no dígito Caràcters que cal escapar : \$\[ \|\] \*\\ \^\/.", "width": "800" } 61 Perl 17 i 18/des/2007 Extracció de patrons Seqüències en FASTA: >M18580 Clone 305A4, complete sequence acgtagctactgacatcgacatcatctacatcatatca gactacgtcagtcagcagctacgactacgacactagca tgagcagctagcatctacgactactagccagcagacgt Extraiem l’id (M18580) i la descripció: /^>(\S+)\s*(.*)$/ $id = $1; $descripcion = $2; ? 0 ó 1 elementos + 1 ó más elementos * 0 ó más elementos {N,M}Entre N y M elementos {N, }N o más elementos {, M}M o menos elementos.Cualquier carácter excepto newline ^ Principio de línea $Final de línea \w Cualquier carácter alfanumérico \WCualquier carácter no-alfanum. \sCualquier carácter espaciador \SCualquier carácter no-espaciador \dCualquier dígito \DCarácter no dígito Caràcters que cal “escapar”: \$\[ \|\] \*\\ \^\/ { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_61.jpg", "name": "Perl 17 i 18/des/2007 Extracció de patrons Seqüències en FASTA: >M18580 Clone 305A4, complete sequence acgtagctactgacatcgacatcatctacatcatatca gactacgtcagtcagcagctacgactacgacactagca tgagcagctagcatctacgactactagccagcagacgt Extraiem l’id (M18580) i la descripció: /^>(\S+)\s*(.*)$/ $id = $1; $descripcion = $2; .", "description": "0 ó 1 elementos + 1 ó más elementos * 0 ó más elementos {N,M}Entre N y M elementos {N, }N o más elementos {, M}M o menos elementos.Cualquier carácter excepto newline ^ Principio de línea $Final de línea \w Cualquier carácter alfanumérico \WCualquier carácter no-alfanum. \sCualquier carácter espaciador \SCualquier carácter no-espaciador \dCualquier dígito \DCarácter no dígito Caràcters que cal escapar : \$\[ \|\] \*\\ \^\/.", "width": "800" } 62 Perl 17 i 18/des/2007 Llegir una seqüència de DNA d’un arxiu Imprimir la seqüència per pantalla Ajuda: utilitza. per concatenar les diferents línies Comptar la freqüència d’aparició de cada base (A, G, C, T) Ajuda: utilitza un bucle while() per cada base: while ($seq =~ /a/g) { $a++; } Seqüència de DNA: Exercici agtactactcatgcacagctactcagtagctagctacgactacgtgactagc ctacgtccagactgactagcacgtagacgactacgtagactagcacagcatg taagatctactgacaaaaaaaaatgacatgactacgtgcgtgctgctgctga { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_62.jpg", "name": "Perl 17 i 18/des/2007 Llegir una seqüència de DNA d’un arxiu Imprimir la seqüència per pantalla Ajuda: utilitza.", "description": "per concatenar les diferents línies Comptar la freqüència d’aparició de cada base (A, G, C, T) Ajuda: utilitza un bucle while() per cada base: while ($seq =~ /a/g) { $a++; } Seqüència de DNA: Exercici agtactactcatgcacagctactcagtagctagctacgactacgtgactagc ctacgtccagactgactagcacgtagacgactacgtagactagcacagcatg taagatctactgacaaaaaaaaatgacatgactacgtgcgtgctgctgctga.", "width": "800" } 63 Perl 17 i 18/des/2007 Exercici #!/usr/bin/perl # countBases.pl $sequencia=''; $a=0; $c=0; $g=0; $t=0; open(ARXIU, "sequencia.txt"); while ($linia = ) { chomp $linia; $sequencia.= $linia; } close(ARXIU); print $sequencia,"\n\n"; while ($sequencia =~ /a/g) { $a++; } while ($sequencia =~ /c/g) { $c++; } while ($sequencia =~ /g/g) { $g++; } while ($sequencia =~ /t/g) { $t++; } print $a, " adenines\n"; print $c, " citosines\n"; print $g, " guanines\n"; print $t, " timines\n"; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_63.jpg", "name": "Perl 17 i 18/des/2007 Exercici #!/usr/bin/perl # countBases.pl $sequencia= ; $a=0; $c=0; $g=0; $t=0; open(ARXIU, sequencia.txt ); while ($linia = ) { chomp $linia; $sequencia.= $linia; } close(ARXIU); print $sequencia, \n\n ; while ($sequencia =~ /a/g) { $a++; } while ($sequencia =~ /c/g) { $c++; } while ($sequencia =~ /g/g) { $g++; } while ($sequencia =~ /t/g) { $t++; } print $a, adenines\n ; print $c, citosines\n ; print $g, guanines\n ; print $t, timines\n ;", "description": "Perl 17 i 18/des/2007 Exercici #!/usr/bin/perl # countBases.pl $sequencia= ; $a=0; $c=0; $g=0; $t=0; open(ARXIU, sequencia.txt ); while ($linia = ) { chomp $linia; $sequencia.= $linia; } close(ARXIU); print $sequencia, \n\n ; while ($sequencia =~ /a/g) { $a++; } while ($sequencia =~ /c/g) { $c++; } while ($sequencia =~ /g/g) { $g++; } while ($sequencia =~ /t/g) { $t++; } print $a, adenines\n ; print $c, citosines\n ; print $g, guanines\n ; print $t, timines\n ;", "width": "800" } 64 Perl 17 i 18/des/2007 Substituir cadenes Operador “s”: $RNA =~ s/T/U/g; s: operador substituir T: patró a substituir U: text que reemplaçarà el patró g: modificador global { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_64.jpg", "name": "Perl 17 i 18/des/2007 Substituir cadenes Operador s : $RNA =~ s/T/U/g; s: operador substituir T: patró a substituir U: text que reemplaçarà el patró g: modificador global", "description": "Perl 17 i 18/des/2007 Substituir cadenes Operador s : $RNA =~ s/T/U/g; s: operador substituir T: patró a substituir U: text que reemplaçarà el patró g: modificador global", "width": "800" } 65 Perl 17 i 18/des/2007 Traduir cadenes Operador “tr”: $RNA =~ tr/GATC/CTAG/; tr: operador traduir Canviarà cada caràcter de l’esquerra pels de la dreta, per ordre: G  CT  A A  TC  G { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_65.jpg", "name": "Perl 17 i 18/des/2007 Traduir cadenes Operador tr : $RNA =~ tr/GATC/CTAG/; tr: operador traduir Canviarà cada caràcter de l’esquerra pels de la dreta, per ordre: G  CT  A A  TC  G", "description": "Perl 17 i 18/des/2007 Traduir cadenes Operador tr : $RNA =~ tr/GATC/CTAG/; tr: operador traduir Canviarà cada caràcter de l’esquerra pels de la dreta, per ordre: G  CT  A A  TC  G", "width": "800" } 66 Perl 17 i 18/des/2007 4 funcions útils length: contar la longitud d’una cadena $cadena = ‘ACTTGGAG’; $longCadena = length $cadena; $longCadena és 8 !!! reverse: invertir l’ordre d’un cadena o matriu $cadena = ‘ACTTGGAG’; $invertida = reverse $cadena; $invertida és GAGGTTCA !!! split: transformar cadenes en matrius $cadena = ‘joan,pere,miquel,roger’; @noms = split /,/, $cadena; # // conté el patró per on tallar # separarà cada caràcter si // està buit @noms és (‘joan’, ‘pere’, ‘miquel’, ‘roger’) !!! join: transformar matrius en cadenes @noms = (‘joan’, ‘pere’, ‘miquel’, ‘roger’); $cadena = join /--/, @noms; $cadena és joan--pere--miquel--roger !!! { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_66.jpg", "name": "Perl 17 i 18/des/2007 4 funcions útils length: contar la longitud d’una cadena $cadena = ‘ACTTGGAG’; $longCadena = length $cadena; $longCadena és 8 !!.", "description": "reverse: invertir l’ordre d’un cadena o matriu $cadena = ‘ACTTGGAG’; $invertida = reverse $cadena; $invertida és GAGGTTCA !!. split: transformar cadenes en matrius $cadena = ‘joan,pere,miquel,roger’; @noms = split /,/, $cadena; # // conté el patró per on tallar # separarà cada caràcter si // està buit @noms és (‘joan’, ‘pere’, ‘miquel’, ‘roger’) !!. join: transformar matrius en cadenes @noms = (‘joan’, ‘pere’, ‘miquel’, ‘roger’); $cadena = join /--/, @noms; $cadena és joan--pere--miquel--roger !!!.", "width": "800" } 67 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 1C –Exercici 1D –Exercici 2H –Exercici 3A –Exercici 4A –Exercici 4B { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_67.jpg", "name": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 1C –Exercici 1D –Exercici 2H –Exercici 3A –Exercici 4A –Exercici 4B", "description": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 1C –Exercici 1D –Exercici 2H –Exercici 3A –Exercici 4A –Exercici 4B", "width": "800" } 68 Perl 17 i 18/des/2007 SUBRUTINES { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_68.jpg", "name": "Perl 17 i 18/des/2007 SUBRUTINES", "description": "Perl 17 i 18/des/2007 SUBRUTINES", "width": "800" } 69 Perl 17 i 18/des/2007 Subrutines Eviten repetir codi a diferents parts del programa o a diferents programes –Es poden guardar en arxius independents –Aquests arxius independents tenen l’extensió.pm (perl module) –L’última línia de l’arxiu ha de ser: 1; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_69.jpg", "name": "Perl 17 i 18/des/2007 Subrutines Eviten repetir codi a diferents parts del programa o a diferents programes –Es poden guardar en arxius independents –Aquests arxius independents tenen l’extensió.pm (perl module) –L’última línia de l’arxiu ha de ser: 1;", "description": "Perl 17 i 18/des/2007 Subrutines Eviten repetir codi a diferents parts del programa o a diferents programes –Es poden guardar en arxius independents –Aquests arxius independents tenen l’extensió.pm (perl module) –L’última línia de l’arxiu ha de ser: 1;", "width": "800" } 70 Perl 17 i 18/des/2007 #!/usr/bin/perl # subrutinas.pl print "\nresultado: ", suma(2,6), "\n"; sub suma{ $valor1 = $_[0]; $valor2 = $_[1]; return $valor1 + $valor2; } #!/usr/bin/perl # minilib.pm sub suma{ $valor1 = $_[0]; $valor2 = $_[1]; return $valor1 + $valor2; } 1; #!/usr/bin/perl # principal.pl use minilib; print "\nresultado: ”; print suma(2,6); print "\n"; En un sol arxiu.pl En dos arxius (.pl i.pm) { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_70.jpg", "name": "Perl 17 i 18/des/2007 #!/usr/bin/perl # subrutinas.pl print \nresultado: , suma(2,6), \n ; sub suma{ $valor1 = $_[0]; $valor2 = $_[1]; return $valor1 + $valor2; } #!/usr/bin/perl # minilib.pm sub suma{ $valor1 = $_[0]; $valor2 = $_[1]; return $valor1 + $valor2; } 1; #!/usr/bin/perl # principal.pl use minilib; print \nresultado: ; print suma(2,6); print \n ; En un sol arxiu.pl En dos arxius (.pl i.pm)", "description": "Perl 17 i 18/des/2007 #!/usr/bin/perl # subrutinas.pl print \nresultado: , suma(2,6), \n ; sub suma{ $valor1 = $_[0]; $valor2 = $_[1]; return $valor1 + $valor2; } #!/usr/bin/perl # minilib.pm sub suma{ $valor1 = $_[0]; $valor2 = $_[1]; return $valor1 + $valor2; } 1; #!/usr/bin/perl # principal.pl use minilib; print \nresultado: ; print suma(2,6); print \n ; En un sol arxiu.pl En dos arxius (.pl i.pm)", "width": "800" } 71 Perl 17 i 18/des/2007 Packages #!/usr/bin/perl # miniAN_cliente.pl use ADN; use ARN; $cadena = “AGC”; $comp = complementa($cadena); # equival main::complementa print ADN::complementa($cadena); # :: o bé -> print ARN::complementa($cadena); # :: o bé -> #!/usr/bin/perl Package ARN; sub complementa{ #(...) } 1; #!/usr/bin/perl Package ADN; sub complementa{ #(...) } 1; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_71.jpg", "name": "Perl 17 i 18/des/2007 Packages #!/usr/bin/perl # miniAN_cliente.pl use ADN; use ARN; $cadena = AGC ; $comp = complementa($cadena); # equival main::complementa print ADN::complementa($cadena); # :: o bé -> print ARN::complementa($cadena); # :: o bé -> #!/usr/bin/perl Package ARN; sub complementa{ #(...) } 1; #!/usr/bin/perl Package ADN; sub complementa{ #(...) } 1;", "description": "Perl 17 i 18/des/2007 Packages #!/usr/bin/perl # miniAN_cliente.pl use ADN; use ARN; $cadena = AGC ; $comp = complementa($cadena); # equival main::complementa print ADN::complementa($cadena); # :: o bé -> print ARN::complementa($cadena); # :: o bé -> #!/usr/bin/perl Package ARN; sub complementa{ #(...) } 1; #!/usr/bin/perl Package ADN; sub complementa{ #(...) } 1;", "width": "800" } 72 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 5C { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_72.jpg", "name": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 5C", "description": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 5C", "width": "800" } 73 Perl 17 i 18/des/2007 MÒDULS { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_73.jpg", "name": "Perl 17 i 18/des/2007 MÒDULS", "description": "Perl 17 i 18/des/2007 MÒDULS", "width": "800" } 74 Perl 17 i 18/des/2007 Mòduls Perl Scripts o programes que fan operacions útils i que poden incorporar-se fàcilment al nostre codi La funció PPM (Perl Package Manager) d’Active Perl permet la instal·lació automàtica de mòduls Exemples: –LWP: Mòdul d’accés a pàgines web; permet copiar el contingut de pàgines web (codi font) a partir de la URL –DBI: Mòdul d’accés a bases de dades (ex. MS Access, MySQL, …); permet consultar informació, afegir-la, modificar-la, … –CGI: Recollida de variables des de formularis web –BioPerl: Mòduls útils per a la bioinformàtica { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_74.jpg", "name": "Perl 17 i 18/des/2007 Mòduls Perl Scripts o programes que fan operacions útils i que poden incorporar-se fàcilment al nostre codi La funció PPM (Perl Package Manager) d’Active Perl permet la instal·lació automàtica de mòduls Exemples: –LWP: Mòdul d’accés a pàgines web; permet copiar el contingut de pàgines web (codi font) a partir de la URL –DBI: Mòdul d’accés a bases de dades (ex.", "description": "MS Access, MySQL, …); permet consultar informació, afegir-la, modificar-la, … –CGI: Recollida de variables des de formularis web –BioPerl: Mòduls útils per a la bioinformàtica.", "width": "800" } 75 Perl 17 i 18/des/2007 Instal·lació de mòduls { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_75.jpg", "name": "Perl 17 i 18/des/2007 Instal·lació de mòduls", "description": "Perl 17 i 18/des/2007 Instal·lació de mòduls", "width": "800" } 76 Perl 17 i 18/des/2007 LWP #!/usr/bin/perl –w # modulo-LWP.pl use LWP::Simple; # Formular la URL apropiada $url = "http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?txt=on &list_uids=2779343&db=nucleotide&view=fasta"; # Obtener los contenidos desde la web $content = get $url; print $content; WEB PAGE (codi font) Perl Script = SCREEN SCRAPING { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_76.jpg", "name": "Perl 17 i 18/des/2007 LWP #!/usr/bin/perl –w # modulo-LWP.pl use LWP::Simple; # Formular la URL apropiada $url = http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi txt=on &list_uids=2779343&db=nucleotide&view=fasta ; # Obtener los contenidos desde la web $content = get $url; print $content; WEB PAGE (codi font) Perl Script = SCREEN SCRAPING", "description": "Perl 17 i 18/des/2007 LWP #!/usr/bin/perl –w # modulo-LWP.pl use LWP::Simple; # Formular la URL apropiada $url = http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi txt=on &list_uids=2779343&db=nucleotide&view=fasta ; # Obtener los contenidos desde la web $content = get $url; print $content; WEB PAGE (codi font) Perl Script = SCREEN SCRAPING", "width": "800" } 77 Perl 17 i 18/des/2007 Altres mòduls bàsics de Perl Database (MS Access, MySQL, Oracle, …) Perl Script Altres coneixements necessaris: llenguatge SQL DBI Formulari WEB Perl Script Cal tenir instal·lat un servidor (IIS, Apache, …) CGI Generar gràfics en diferents formats Perl Script GD { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_77.jpg", "name": "Perl 17 i 18/des/2007 Altres mòduls bàsics de Perl Database (MS Access, MySQL, Oracle, …) Perl Script Altres coneixements necessaris: llenguatge SQL DBI Formulari WEB Perl Script Cal tenir instal·lat un servidor (IIS, Apache, …) CGI Generar gràfics en diferents formats Perl Script GD", "description": "Perl 17 i 18/des/2007 Altres mòduls bàsics de Perl Database (MS Access, MySQL, Oracle, …) Perl Script Altres coneixements necessaris: llenguatge SQL DBI Formulari WEB Perl Script Cal tenir instal·lat un servidor (IIS, Apache, …) CGI Generar gràfics en diferents formats Perl Script GD", "width": "800" } 78 Perl 17 i 18/des/2007 Altres mòduls de Perl Perl Script Mail::Sendmail Tk Interfícies gràfiques per als teus programes Perl Perl Script { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_78.jpg", "name": "Perl 17 i 18/des/2007 Altres mòduls de Perl Perl Script Mail::Sendmail Tk Interfícies gràfiques per als teus programes Perl Perl Script", "description": "Perl 17 i 18/des/2007 Altres mòduls de Perl Perl Script Mail::Sendmail Tk Interfícies gràfiques per als teus programes Perl Perl Script", "width": "800" } 79 Perl 17 i 18/des/2007 BioPerl Col·lecció de mòduls Perl: –Manipular seqüències –Accés a algunes bases de dades moleculars (GenBank, PDB) –Executar programes habituals (Blast, ClustalW) i recuperar-ne els resultats Orientat a Objectes: –Objectes bàsics: seqüències, estructures, … { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_79.jpg", "name": "Perl 17 i 18/des/2007 BioPerl Col·lecció de mòduls Perl: –Manipular seqüències –Accés a algunes bases de dades moleculars (GenBank, PDB) –Executar programes habituals (Blast, ClustalW) i recuperar-ne els resultats Orientat a Objectes: –Objectes bàsics: seqüències, estructures, …", "description": "Perl 17 i 18/des/2007 BioPerl Col·lecció de mòduls Perl: –Manipular seqüències –Accés a algunes bases de dades moleculars (GenBank, PDB) –Executar programes habituals (Blast, ClustalW) i recuperar-ne els resultats Orientat a Objectes: –Objectes bàsics: seqüències, estructures, …", "width": "800" } 80 Perl 17 i 18/des/2007 Un exemple #!/usr/bin/perl # bioperl-ejemplo.pl # Realizar distintas operaciones en una secuencia use Bio::Seq;# indicamos el módulo a utilizar my $seq = Bio::Seq->new( -seq => 'ATGGGGGTGGTGGTACCCT', -id => 'human_id', -accession_number => 'AL000012', ); # creamos un objeto con datos print $seq->seq(). “\n”; # muestra la secuencia print $seq->revcom->seq(). “\n”;# inversa complementaria print $seq->alphabet(). “\n”; # ‘dna’,‘rna’,‘protein’ print $seq->translate->seq(). “\n”; # trad. a proteina ATGGGGGTGGTGGTACCCT AGGGTACCACCACCCCCAT dna MGVVVP { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_80.jpg", "name": "Perl 17 i 18/des/2007 Un exemple #!/usr/bin/perl # bioperl-ejemplo.pl # Realizar distintas operaciones en una secuencia use Bio::Seq;# indicamos el módulo a utilizar my $seq = Bio::Seq->new( -seq => ATGGGGGTGGTGGTACCCT , -id => human_id , -accession_number => AL000012 , ); # creamos un objeto con datos print $seq->seq().", "description": "\n ; # muestra la secuencia print $seq->revcom->seq(). \n ;# inversa complementaria print $seq->alphabet(). \n ; # ‘dna’,‘rna’,‘protein’ print $seq->translate->seq(). \n ; # trad. a proteina ATGGGGGTGGTGGTACCCT AGGGTACCACCACCCCCAT dna MGVVVP.", "width": "800" } 81 Perl 17 i 18/des/2007 Ejemplo SeqStats # (...) use Bio::Tools::SeqStats; $seq_stats = Bio::Tools::SeqStats->new(-seq=>$seq); $hash_ref = $seq_stats->count_monomers(); foreach $base (sort keys %$hash_ref) { print "Numero de bases ", $base, "= ", %$hash_ref->{$base},"\n"; } Numero de Bases A= 2 Numero de Bases C= 3 Numero de Bases G= 9 Numero de Bases T= 5 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_81.jpg", "name": "Perl 17 i 18/des/2007 Ejemplo SeqStats # (...) use Bio::Tools::SeqStats; $seq_stats = Bio::Tools::SeqStats->new(-seq=>$seq); $hash_ref = $seq_stats->count_monomers(); foreach $base (sort keys %$hash_ref) { print Numero de bases , $base, = , %$hash_ref->{$base}, \n ; } Numero de Bases A= 2 Numero de Bases C= 3 Numero de Bases G= 9 Numero de Bases T= 5", "description": "Perl 17 i 18/des/2007 Ejemplo SeqStats # (...) use Bio::Tools::SeqStats; $seq_stats = Bio::Tools::SeqStats->new(-seq=>$seq); $hash_ref = $seq_stats->count_monomers(); foreach $base (sort keys %$hash_ref) { print Numero de bases , $base, = , %$hash_ref->{$base}, \n ; } Numero de Bases A= 2 Numero de Bases C= 3 Numero de Bases G= 9 Numero de Bases T= 5", "width": "800" } 82 Perl 17 i 18/des/2007 Acceso a bases de datos remotas El package DB permet recuperar seqüències de diferents bases de dades (genbank, genpept, RefSeq, swissprot, EMBL, AceDB, GDB) use Bio::DB::GenBank; $gb = new Bio::DB::GenBank(); $seq1 = $gb->get_Seq_by_acc('AF303112'); print ">AF303112\n", $seq1->seq(), "\n\n"; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_82.jpg", "name": "Perl 17 i 18/des/2007 Acceso a bases de datos remotas El package DB permet recuperar seqüències de diferents bases de dades (genbank, genpept, RefSeq, swissprot, EMBL, AceDB, GDB) use Bio::DB::GenBank; $gb = new Bio::DB::GenBank(); $seq1 = $gb->get_Seq_by_acc( AF303112 ); print >AF303112\n , $seq1->seq(), \n\n ;", "description": "Perl 17 i 18/des/2007 Acceso a bases de datos remotas El package DB permet recuperar seqüències de diferents bases de dades (genbank, genpept, RefSeq, swissprot, EMBL, AceDB, GDB) use Bio::DB::GenBank; $gb = new Bio::DB::GenBank(); $seq1 = $gb->get_Seq_by_acc( AF303112 ); print >AF303112\n , $seq1->seq(), \n\n ;", "width": "800" } 83 Perl 17 i 18/des/2007 Alguns mòduls de BioPerl Bio :: SeqSequence object, with features Bio :: SimpleAlignMultiple alignments held as a set of sequences Bio :: DB :: GenBankDatabase object interface to GenBank Bio :: DB :: NCBIHelperA collection of routines for queries to NCBI DDBB Bio :: DB :: SwissProtDatabase object interface to SWISS-PROT retrieval Bio :: Tools :: BlastBioperl BLAST sequence analysis object Bio :: Tools :: BPliteLightweight BLAST parser Bio :: Tools :: SeqPatternBioperl object for a sequence pattern or motif Bio :: Tools :: SeqStatsObject holding statistics for one particular sequence Bio :: Tools :: Blast :: Run :: StandAloneBlastBioperl module for running BLAST analyses locally Bio :: Tools :: Blast :: Run :: RemoteBlastBioperl module for running BLAST through HTTP Bio::Tools::Run::Alignment::ClustalwBioperl module for running ClustalW analyses locally Bio :: Tools :: Prediction :: ExonPredicted exon feature Bio :: Tools :: Prediction :: GenePredicted gene structure feature Bio :: SeqIOFormat conversion of sequences Bio :: AlignIOFormat conversion of alignments Bio :: Structure :: IOStructure objects of PDB Browse all modules at http://www.bioperl.org/wiki/Category:Moduleshttp://www.bioperl.org/wiki/Category:Modules { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_83.jpg", "name": "Perl 17 i 18/des/2007 Alguns mòduls de BioPerl Bio :: SeqSequence object, with features Bio :: SimpleAlignMultiple alignments held as a set of sequences Bio :: DB :: GenBankDatabase object interface to GenBank Bio :: DB :: NCBIHelperA collection of routines for queries to NCBI DDBB Bio :: DB :: SwissProtDatabase object interface to SWISS-PROT retrieval Bio :: Tools :: BlastBioperl BLAST sequence analysis object Bio :: Tools :: BPliteLightweight BLAST parser Bio :: Tools :: SeqPatternBioperl object for a sequence pattern or motif Bio :: Tools :: SeqStatsObject holding statistics for one particular sequence Bio :: Tools :: Blast :: Run :: StandAloneBlastBioperl module for running BLAST analyses locally Bio :: Tools :: Blast :: Run :: RemoteBlastBioperl module for running BLAST through HTTP Bio::Tools::Run::Alignment::ClustalwBioperl module for running ClustalW analyses locally Bio :: Tools :: Prediction :: ExonPredicted exon feature Bio :: Tools :: Prediction :: GenePredicted gene structure feature Bio :: SeqIOFormat conversion of sequences Bio :: AlignIOFormat conversion of alignments Bio :: Structure :: IOStructure objects of PDB Browse all modules at http://www.bioperl.org/wiki/Category:Moduleshttp://www.bioperl.org/wiki/Category:Modules", "description": "Perl 17 i 18/des/2007 Alguns mòduls de BioPerl Bio :: SeqSequence object, with features Bio :: SimpleAlignMultiple alignments held as a set of sequences Bio :: DB :: GenBankDatabase object interface to GenBank Bio :: DB :: NCBIHelperA collection of routines for queries to NCBI DDBB Bio :: DB :: SwissProtDatabase object interface to SWISS-PROT retrieval Bio :: Tools :: BlastBioperl BLAST sequence analysis object Bio :: Tools :: BPliteLightweight BLAST parser Bio :: Tools :: SeqPatternBioperl object for a sequence pattern or motif Bio :: Tools :: SeqStatsObject holding statistics for one particular sequence Bio :: Tools :: Blast :: Run :: StandAloneBlastBioperl module for running BLAST analyses locally Bio :: Tools :: Blast :: Run :: RemoteBlastBioperl module for running BLAST through HTTP Bio::Tools::Run::Alignment::ClustalwBioperl module for running ClustalW analyses locally Bio :: Tools :: Prediction :: ExonPredicted exon feature Bio :: Tools :: Prediction :: GenePredicted gene structure feature Bio :: SeqIOFormat conversion of sequences Bio :: AlignIOFormat conversion of alignments Bio :: Structure :: IOStructure objects of PDB Browse all modules at http://www.bioperl.org/wiki/Category:Moduleshttp://www.bioperl.org/wiki/Category:Modules", "width": "800" } 84 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 10A –Exercici 10B –Exercici 10C (però utilitzant RemoteBlast) –Exercici 10D { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_84.jpg", "name": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 10A –Exercici 10B –Exercici 10C (però utilitzant RemoteBlast) –Exercici 10D", "description": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 10A –Exercici 10B –Exercici 10C (però utilitzant RemoteBlast) –Exercici 10D", "width": "800" } 85 Perl 17 i 18/des/2007 EXEMPLE INTEGRADOR { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_85.jpg", "name": "Perl 17 i 18/des/2007 EXEMPLE INTEGRADOR", "description": "Perl 17 i 18/des/2007 EXEMPLE INTEGRADOR", "width": "800" } 86 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 7A –Exercici 7B –Exercici 7C –Exercici 8A { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_86.jpg", "name": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 7A –Exercici 7B –Exercici 7C –Exercici 8A", "description": "Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 7A –Exercici 7B –Exercici 7C –Exercici 8A", "width": "800" } 87 Perl 17 i 18/des/2007 COM SEGUIR AVANÇANT? { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_87.jpg", "name": "Perl 17 i 18/des/2007 COM SEGUIR AVANÇANT", "description": "Perl 17 i 18/des/2007 COM SEGUIR AVANÇANT", "width": "800" } 88 Perl 17 i 18/des/2007 Perl web site http://www.perl.com Bioperl http://www.bioperl.org CPAN: Comprehensive Perl Archive Network http://www.cpan.org/ FAQs Frequently Asked Questions http://www.perl.com/pub/q/faqs Beginners http://learn.perl.org Manuales Online http://www.perl.com/pub/v/documentation Recursos de Perl { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.es/16/4912418/slides/slide_88.jpg", "name": "Perl 17 i 18/des/2007 Perl web site http://www.perl.com Bioperl http://www.bioperl.org CPAN: Comprehensive Perl Archive Network http://www.cpan.org/ FAQs Frequently Asked Questions http://www.perl.com/pub/q/faqs Beginners http://learn.perl.org Manuales Online http://www.perl.com/pub/v/documentation Recursos de Perl", "description": "Perl 17 i 18/des/2007 Perl web site http://www.perl.com Bioperl http://www.bioperl.org CPAN: Comprehensive Perl Archive Network http://www.cpan.org/ FAQs Frequently Asked Questions http://www.perl.com/pub/q/faqs Beginners http://learn.perl.org Manuales Online http://www.perl.com/pub/v/documentation Recursos de Perl", "width": "800" } 89 Perl 17 i 18/des/2007 O'Reilly Llibres de Perl

23 Perl 17 i 18/des/2007 Variables escalars $a; # sensibles a majúscules i minúscules $A; # $a és diferent de $A # nom: números, lletres o línies de subratllat $nomDeVariable_Llarg; $x=42; # assignem el valor de 42 a $x print ' el valor de $x es '. $x. " \n " ; $x= ' DNA de cadena sencilla ' ; # canviem valor de $x print ' pero ara el valor de $x es '. $x. " \n " ; Proporcionen un lloc on guardar dades temporalment $nom C:\>perl programa2.pl el valor de $x es 42 pero ara el valor de $x es DNA de cadena sencilla

24 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 1A –Exercici 1B

25 Perl 17 i 18/des/2007 Exercicis #!/usr/bin/perl # programa3.pl # Programa que almacena una secuencia de DNA # almacenamos una secuencia de DNA en una variable $DNA = " ACGGGGAGGACGGGAAATTACTACGGGCATTAGC " ; # Imprimimos la secuencia en la pantalla print $DNA; #salimos del programa exit; C:\>perl programa3.pl ACGGGGAGGACGGGAAATTACTACGGGCATTAGC C:\>_

26 Perl 17 i 18/des/2007 Exercicis #!/usr/bin/perl # variables.pl # Programa que concatena fragmentos de DNA # Primero almacenamos dos secuencias de DNA en dos variables $DNA1 = "ACGGGGAGGACGGGAAATTACTACGGGCATTAGC"; $DNA2 = "ATAGTGCCGTGCATGCGACGATTCTGGCATACATC"; # Imprimimos en pantalla las dos secuencias separadamente print $DNA1. "\n"; print $DNA2. "\n\n"; # concatenamos ambas en una tercera variable que se imprime $DNA3 = $DNA1. $DNA2 ; print "Concatenación de los dos fragmentos de DNA: \n\n"; print "$DNA3\n\n"; exit;

27 Perl 17 i 18/des/2007 Operadors aritmètics Aritmètics: + suma - resta * multiplicació / divisió ** exponencial () agrupació

28 Perl 17 i 18/des/2007 Procedència d’operadors Procedència d’operadors com en una calculadora científica: Substituir les dues últimes línies per: #!/usr/bin/perl # operadores.pl $x = 4; $y = 2; $z = 3 + $x * $y; print " $z \n " ; print 3 + $x * $y. " \n " ; print (3 + 4) * 2. " \n " ;

29 Perl 17 i 18/des/2007 Abreviatures d’Operadors +=Sumar un número a una variable –=Restar un número d’una variable *=Multiplicar un número per una variable /=Dividir una variable per un número ++ Sumar-li 1 a una variable ––Restar-li 1 a una variable.=Afegir una cadena a una variable Per exemple, si $a=2: $a+=3;  $a val 5$a++  $a val 3 $a-=1;  $a val 1 $a.=4;  $a val 24

30 Perl 17 i 18/des/2007 Arrays (matrius) #!/usr/bin/perl # matrices1.pl $base1=‘A’; # Esta es una mala solución $base2=‘C’; $base3=‘G’; # Declarar una matriz @bases = (‘A’,‘C’,‘G’); # Esta es la solución # por que puedo hacer este tipo de operaciones @old_bases = @bases; # Copia la matriz entera print “array de bases:\n”; # Muestra la matriz seguida print @bases. “\n”; # Muestra la matriz seguida print “@bases”; # Muestra la matriz con separaciones array de bases: ACG Es defineixen amb @nom

31 Perl 17 i 18/des/2007 Operacions amb matrius #!/usr/bin/perl # matrices2.pl - operaciones con arrays @bases = (‘A’,‘C’,‘G’); $tercera_base = $bases[2]; # OJO! Empieza por 0 (cero) # añade T al final = $bases[3] push @bases,‘T’; # Elimina, y retorna, el último elemento $ultima_base = pop @bases; # Elimina, y retorna, el primer elemento $primera = shift @bases; # añade un elemento al principio = $bases[0] unshift @bases,$primera;

32 Perl 17 i 18/des/2007 Operacions amb matrius Entorn (@ARGV) Bucles propis #!/usr/bin/perl # entorno.pl – Llamada entorno.pl Hola print $ARGV[0]. “\n”; # este el primer argumento print $0; # Corresponde al path y nombre del script foreach $elemento (@bases){ print $elemento.”\n”; }

33 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 2A –Exercici 2B –Exercici 2C –Exercici 2D –Exercici 2F

34 Perl 17 i 18/des/2007 Hashes (matrius associatives) Són similars als arrays però: –Els elements tenen ‘nom’ (claus o keys) –Es defineix amb %nom #!/usr/bin/perl # hash.pl - Declarar un hash %purinas = (‘A’=>‘Adenina’, ‘G’=>‘Guanina’); # afegir elements després d’haber definit el hash %pirimidinas = (); $pirimidinas{‘C’}=‘Citosina’; $pirimidinas{‘T’}=‘Timina’; # puedo hacer este tipo de operaciones print “G es $purinas{‘G’}\n”; print %purinas.“\n”; # Valores e índices concatenados $queBase = 'T'; print "$queBase es $pirimidinas{$queBase}\n";

35 Perl 17 i 18/des/2007 Hashes (keys i values) # (…) hashes-keys.pl # Recuperar las claves o los valores en una matriz @claves = keys %bases; @Datos = values %bases; print @claves."\n". "@Datos"."\n"; foreach $codigo (@claves) { print "$codigo es $bases{$codigo}\n"; } C:\>perl hashes_keys.pl ATCG AdeninaTiminaCitosinaGuanina A es Adenina T es Timina C es Citosina G es Guanina C:\>_

36 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 2G

37 Perl 17 i 18/des/2007 SEQÜÈNCIES I CADENES

38 Perl 17 i 18/des/2007 Entrada dades Càlcul / Operacions Sortida dades Estructura bàsica

39 Perl 17 i 18/des/2007 Entrada/Sortida des del teclat Entrada des de teclat: Exercici 1: editar i executar el programa anterior Exercici 2: editar i executar un programa que demani el nom d’usuari i llavors l’imprimeixi #/usr/bin/perl # ES.pl print "entra tu edad: "; $edad = ; print "tu edad en años de perro es ". $edad/7. "\n";

40 Perl 17 i 18/des/2007 Entrada/Sortida des del teclat Funcions que ens ajuden a realitzar tasques senzilles: #/usr/bin/perl print “Entra tu nombre: ”; chomp ($name = ); print “Hola, $name, encantado de conocerte\n”; #/usr/bin/perl # chomp.pl print “Entra tu nombre: ”; chomp ($nombre = ); # equivale a print “Hola $nombre!, encantado de conocerte.\n”;

41 Perl 17 i 18/des/2007 Entrada/Sortida a arxius Per a llegir o escriure dades a arxius de text, és necessari l’ús de filehandles open(FICHERO,'datos.txt'); –FICHERO : filehandle –‘datos.txt’ : nombre del fichero open(FICH_DATOS, 'c:\scripts\myfile.txt') open(FICH_DATOS, 'c:\scripts\myfile.txt');

42 Perl 17 i 18/des/2007 Lectura d’arxius open MIFICHERO,’datos.txt’; @linea = ; close MIFICHERO; Exercici: Llegir la següent seqüència proteica des d’un arxiu i imprimir-la en pantalla #/usr/bin/perl # FileInArray.pl open(MIFICHERO, “datos.txt”); @array = ; # Cargamos fichero en matriz close MIFICHERO; 1 MNIDDKLEGL FLKCGGIDEM QSSRTMVVMG 30 31 GVSGQSTVSG ELQDSVLQDR SMPHQEILAA 60 61 DEVLQESEMR QQDMISHDEL MVHEETVKND 90 91 EEQMETHERL PQGLQYALNV PISVKQEITF 120 121 TDVSEQLMRD KKQIR 135

43 Perl 17 i 18/des/2007 Escriptura a arxius #/usr/bin/perl # EscrituraFicheros.pl open FICHERO, ‘>data.txt’; # Crear para escribir open FICHERO, ‘>>data.txt’; # ó añadir al final print FICHERO $proteinSeq; close FICHERO; Exercici: Modifica el programa anterior per escriure la seqüència proteica a un nou arxiu

44 Perl 17 i 18/des/2007 La instrucció “die” Si l’arxiu no existeix, mostra el missatge d’error i atura el programa #/usr/bin/perl # FileOrDie.pl open (FICHERO, “EsteFicheroNoExiste.xxx") or die "No encuentro el fichero"; @lineas = ; close FICHERO;

45 Perl 17 i 18/des/2007 CONTROL DE FLUXE

46 Perl 17 i 18/des/2007 Entrada dades Entrada dades Operació B Operació A Condició? Condicions no OK OK Condicions

47 Perl 17 i 18/des/2007 Decisiones condicionales: if #!/usr/bin/perl print “dime tu edad: “; $edad = ; if (($edad = 100)) { print “error al leer la edad. \n”; die “edad ridícula”; } print “tu edad en años de perro es”,$edad/7,”\n”; Exercici: editar i executar el programa amb els valors –20, 30, hola #!/usr/bin/perl # if1.pl print “dime tu edad: “; $edad = ; if ($edad

48 Perl 17 i 18/des/2007 Operadores Comparadors numèrics: == igualtat$a == $b != desigualtat < menor > major = major o igual ! not lògic

49 Perl 17 i 18/des/2007 Operadores Comparadors per cadenes eq igualtat$a eq $b ne desigualtat lt menor (less than) gt major (greather than) le menor o igual (less or equal to) ge major o igual (greather or equal to) =~ pattern matching$a =~ /gattc/ El símbolo ~ se consigue pulsando AltGr+4

50 Perl 17 i 18/des/2007 Atenció a l’ordre al comparar cadenes: 0, 1, 2, 3,..., 9, A,..., Z, a,..., z if (“TGCA” lt “acgt”) tornarà VERTADER!!

51 Perl 17 i 18/des/2007 If – else #!/usr/bin/perl # if-else.pl print “entra tu edad: “; $edad = ; if ( ($edad 100) ){ print “error en la edad introducida.\n”; } else { print “tu edad en años de perro “,$edad/7,”\n”; } printf “tu edad en años de perro es %0.2f \n”, $edad/7; Per a mostrar valors amb format (ex. 2 decimals), utilitzem printf:

52 Perl 17 i 18/des/2007 If – elsif – else #!/usr/bin/perl # if-elsif.pl print “Entra tu edad: “; $edad = ; if ( $edad = 100 ) { print “un perro no puede vivir tanto”; } else { print “tu edad es: “, $edad/7, “\n”; }

53 Perl 17 i 18/des/2007 Entrada dades Entrada dades Operació B Operació A Condició? Bucles fals (no segueixo) vertader(segueixo) Bucles

54 Perl 17 i 18/des/2007 Exercici alternativa: until ($cont > 5) Instrucció While #!/usr/bin/perl # while.pl $cont = 1; while ($cont

55 Perl 17 i 18/des/2007 Instrucció While + arxius #!/usr/bin/perl # Whilefile.pl open(ARCHIVO, “llistat.txt”); while ($linea = ) { print $linea; } close(ARCHIVO); (...) while ( ) { print $_; } (...)

56 Perl 17 i 18/des/2007 EXPRESSIONS REGULARS

57 Perl 17 i 18/des/2007 #!/usr/bin/perl # patterns1.pl #... if ($dna =~/GATTC/) { print “EcoRI encontrado!”; } $dna =~/GGG[GATC]CCC/; # GGG (luego G ó A ó T ó C) y CCC $dna =~/GATTC|AAGCTT/; # EcoRI ó Hind III Cerca de patrons (Pattern Matching)

58 Perl 17 i 18/des/2007 Metacaràcters.Qualsevol caràcter excepte newline ^ Principi de línia $Final de línia \w Qualsevol caràcter alfanumèric \WQualsevol caràcter no alfanumèric \sQualsevol caràcter espaiador \SQualsevol caràcter no espaiador \dQualsevol dígit \DQualsevol caràcter no dígit […]Qualsevol dels caràcters de dins dels claudàtors (també: [A-Z], [a-z], [0-9], [A- Za-z], [A-Z0-9],...) [^…]Qualsevol caràcter excepte els dels claudàtors

59 Perl 17 i 18/des/2007 Quantificadors ?0 o 1 coincidència +1 o més coincidències *0 o més coincidències {N}N coincidències {N,M}Entre N i M coincidències {N, }N o més coincidències {, M}M o menys coincidències

60 Perl 17 i 18/des/2007 Exemples de patrons Codi postal –$cp =~ /\d\d\d\d\d/; –$cp =~ /\d{5}/; –$cp_us =~ /\d{5} (-\d{4})?/; Identificadors de seqüències com “M58200.2” –$idSecuencia =~ /\w+\.\d+/; ? 0 ó 1 elementos + 1 ó más elementos * 0 ó más elementos {N,M}Entre N y M elementos {N, }N o más elementos {, M}M o menos elementos.Cualquier carácter excepto newline ^ Principio de línea $Final de línea \w Cualquier carácter alfanumérico \WCualquier carácter no-alfanum. \sCualquier carácter espaciador \SCualquier carácter no-espaciador \dCualquier dígito \DCarácter no dígito Caràcters que cal “escapar”: \$\[ \|\] \*\\ \^\/

61 Perl 17 i 18/des/2007 Extracció de patrons Seqüències en FASTA: >M18580 Clone 305A4, complete sequence acgtagctactgacatcgacatcatctacatcatatca gactacgtcagtcagcagctacgactacgacactagca tgagcagctagcatctacgactactagccagcagacgt Extraiem l’id (M18580) i la descripció: /^>(\S+)\s*(.*)$/ $id = $1; $descripcion = $2; ? 0 ó 1 elementos + 1 ó más elementos * 0 ó más elementos {N,M}Entre N y M elementos {N, }N o más elementos {, M}M o menos elementos.Cualquier carácter excepto newline ^ Principio de línea $Final de línea \w Cualquier carácter alfanumérico \WCualquier carácter no-alfanum. \sCualquier carácter espaciador \SCualquier carácter no-espaciador \dCualquier dígito \DCarácter no dígito Caràcters que cal “escapar”: \$\[ \|\] \*\\ \^\/

62 Perl 17 i 18/des/2007 Llegir una seqüència de DNA d’un arxiu Imprimir la seqüència per pantalla Ajuda: utilitza. per concatenar les diferents línies Comptar la freqüència d’aparició de cada base (A, G, C, T) Ajuda: utilitza un bucle while() per cada base: while ($seq =~ /a/g) { $a++; } Seqüència de DNA: Exercici agtactactcatgcacagctactcagtagctagctacgactacgtgactagc ctacgtccagactgactagcacgtagacgactacgtagactagcacagcatg taagatctactgacaaaaaaaaatgacatgactacgtgcgtgctgctgctga

63 Perl 17 i 18/des/2007 Exercici #!/usr/bin/perl # countBases.pl $sequencia=''; $a=0; $c=0; $g=0; $t=0; open(ARXIU, "sequencia.txt"); while ($linia = ) { chomp $linia; $sequencia.= $linia; } close(ARXIU); print $sequencia,"\n\n"; while ($sequencia =~ /a/g) { $a++; } while ($sequencia =~ /c/g) { $c++; } while ($sequencia =~ /g/g) { $g++; } while ($sequencia =~ /t/g) { $t++; } print $a, " adenines\n"; print $c, " citosines\n"; print $g, " guanines\n"; print $t, " timines\n";

64 Perl 17 i 18/des/2007 Substituir cadenes Operador “s”: $RNA =~ s/T/U/g; s: operador substituir T: patró a substituir U: text que reemplaçarà el patró g: modificador global

65 Perl 17 i 18/des/2007 Traduir cadenes Operador “tr”: $RNA =~ tr/GATC/CTAG/; tr: operador traduir Canviarà cada caràcter de l’esquerra pels de la dreta, per ordre: G  CT  A A  TC  G

66 Perl 17 i 18/des/2007 4 funcions útils length: contar la longitud d’una cadena $cadena = ‘ACTTGGAG’; $longCadena = length $cadena; $longCadena és 8 !!! reverse: invertir l’ordre d’un cadena o matriu $cadena = ‘ACTTGGAG’; $invertida = reverse $cadena; $invertida és GAGGTTCA !!! split: transformar cadenes en matrius $cadena = ‘joan,pere,miquel,roger’; @noms = split /,/, $cadena; # // conté el patró per on tallar # separarà cada caràcter si // està buit @noms és (‘joan’, ‘pere’, ‘miquel’, ‘roger’) !!! join: transformar matrius en cadenes @noms = (‘joan’, ‘pere’, ‘miquel’, ‘roger’); $cadena = join /--/, @noms; $cadena és joan--pere--miquel--roger !!!

67 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 1C –Exercici 1D –Exercici 2H –Exercici 3A –Exercici 4A –Exercici 4B

68 Perl 17 i 18/des/2007 SUBRUTINES

69 Perl 17 i 18/des/2007 Subrutines Eviten repetir codi a diferents parts del programa o a diferents programes –Es poden guardar en arxius independents –Aquests arxius independents tenen l’extensió.pm (perl module) –L’última línia de l’arxiu ha de ser: 1;

70 Perl 17 i 18/des/2007 #!/usr/bin/perl # subrutinas.pl print "\nresultado: ", suma(2,6), "\n"; sub suma{ $valor1 = $_[0]; $valor2 = $_[1]; return $valor1 + $valor2; } #!/usr/bin/perl # minilib.pm sub suma{ $valor1 = $_[0]; $valor2 = $_[1]; return $valor1 + $valor2; } 1; #!/usr/bin/perl # principal.pl use minilib; print "\nresultado: ”; print suma(2,6); print "\n"; En un sol arxiu.pl En dos arxius (.pl i.pm)

71 Perl 17 i 18/des/2007 Packages #!/usr/bin/perl # miniAN_cliente.pl use ADN; use ARN; $cadena = “AGC”; $comp = complementa($cadena); # equival main::complementa print ADN::complementa($cadena); # :: o bé -> print ARN::complementa($cadena); # :: o bé -> #!/usr/bin/perl Package ARN; sub complementa{ #(...) } 1; #!/usr/bin/perl Package ADN; sub complementa{ #(...) } 1;

72 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 5C

73 Perl 17 i 18/des/2007 MÒDULS

74 Perl 17 i 18/des/2007 Mòduls Perl Scripts o programes que fan operacions útils i que poden incorporar-se fàcilment al nostre codi La funció PPM (Perl Package Manager) d’Active Perl permet la instal·lació automàtica de mòduls Exemples: –LWP: Mòdul d’accés a pàgines web; permet copiar el contingut de pàgines web (codi font) a partir de la URL –DBI: Mòdul d’accés a bases de dades (ex. MS Access, MySQL, …); permet consultar informació, afegir-la, modificar-la, … –CGI: Recollida de variables des de formularis web –BioPerl: Mòduls útils per a la bioinformàtica

75 Perl 17 i 18/des/2007 Instal·lació de mòduls

76 Perl 17 i 18/des/2007 LWP #!/usr/bin/perl –w # modulo-LWP.pl use LWP::Simple; # Formular la URL apropiada $url = "http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?txt=on &list_uids=2779343&db=nucleotide&view=fasta"; # Obtener los contenidos desde la web $content = get $url; print $content; WEB PAGE (codi font) Perl Script = SCREEN SCRAPING

77 Perl 17 i 18/des/2007 Altres mòduls bàsics de Perl Database (MS Access, MySQL, Oracle, …) Perl Script Altres coneixements necessaris: llenguatge SQL DBI Formulari WEB Perl Script Cal tenir instal·lat un servidor (IIS, Apache, …) CGI Generar gràfics en diferents formats Perl Script GD

78 Perl 17 i 18/des/2007 Altres mòduls de Perl Perl Script Mail::Sendmail Tk Interfícies gràfiques per als teus programes Perl Perl Script

79 Perl 17 i 18/des/2007 BioPerl Col·lecció de mòduls Perl: –Manipular seqüències –Accés a algunes bases de dades moleculars (GenBank, PDB) –Executar programes habituals (Blast, ClustalW) i recuperar-ne els resultats Orientat a Objectes: –Objectes bàsics: seqüències, estructures, …

80 Perl 17 i 18/des/2007 Un exemple #!/usr/bin/perl # bioperl-ejemplo.pl # Realizar distintas operaciones en una secuencia use Bio::Seq;# indicamos el módulo a utilizar my $seq = Bio::Seq->new( -seq => 'ATGGGGGTGGTGGTACCCT', -id => 'human_id', -accession_number => 'AL000012', ); # creamos un objeto con datos print $seq->seq(). “\n”; # muestra la secuencia print $seq->revcom->seq(). “\n”;# inversa complementaria print $seq->alphabet(). “\n”; # ‘dna’,‘rna’,‘protein’ print $seq->translate->seq(). “\n”; # trad. a proteina ATGGGGGTGGTGGTACCCT AGGGTACCACCACCCCCAT dna MGVVVP

81 Perl 17 i 18/des/2007 Ejemplo SeqStats # (...) use Bio::Tools::SeqStats; $seq_stats = Bio::Tools::SeqStats->new(-seq=>$seq); $hash_ref = $seq_stats->count_monomers(); foreach $base (sort keys %$hash_ref) { print "Numero de bases ", $base, "= ", %$hash_ref->{$base},"\n"; } Numero de Bases A= 2 Numero de Bases C= 3 Numero de Bases G= 9 Numero de Bases T= 5

82 Perl 17 i 18/des/2007 Acceso a bases de datos remotas El package DB permet recuperar seqüències de diferents bases de dades (genbank, genpept, RefSeq, swissprot, EMBL, AceDB, GDB) use Bio::DB::GenBank; $gb = new Bio::DB::GenBank(); $seq1 = $gb->get_Seq_by_acc('AF303112'); print ">AF303112\n", $seq1->seq(), "\n\n";

83 Perl 17 i 18/des/2007 Alguns mòduls de BioPerl Bio :: SeqSequence object, with features Bio :: SimpleAlignMultiple alignments held as a set of sequences Bio :: DB :: GenBankDatabase object interface to GenBank Bio :: DB :: NCBIHelperA collection of routines for queries to NCBI DDBB Bio :: DB :: SwissProtDatabase object interface to SWISS-PROT retrieval Bio :: Tools :: BlastBioperl BLAST sequence analysis object Bio :: Tools :: BPliteLightweight BLAST parser Bio :: Tools :: SeqPatternBioperl object for a sequence pattern or motif Bio :: Tools :: SeqStatsObject holding statistics for one particular sequence Bio :: Tools :: Blast :: Run :: StandAloneBlastBioperl module for running BLAST analyses locally Bio :: Tools :: Blast :: Run :: RemoteBlastBioperl module for running BLAST through HTTP Bio::Tools::Run::Alignment::ClustalwBioperl module for running ClustalW analyses locally Bio :: Tools :: Prediction :: ExonPredicted exon feature Bio :: Tools :: Prediction :: GenePredicted gene structure feature Bio :: SeqIOFormat conversion of sequences Bio :: AlignIOFormat conversion of alignments Bio :: Structure :: IOStructure objects of PDB Browse all modules at http://www.bioperl.org/wiki/Category:Moduleshttp://www.bioperl.org/wiki/Category:Modules

84 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 10A –Exercici 10B –Exercici 10C (però utilitzant RemoteBlast) –Exercici 10D

85 Perl 17 i 18/des/2007 EXEMPLE INTEGRADOR

86 Perl 17 i 18/des/2007 Exercicis Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp –Exercici 7A –Exercici 7B –Exercici 7C –Exercici 8A

87 Perl 17 i 18/des/2007 COM SEGUIR AVANÇANT?

88 Perl 17 i 18/des/2007 Perl web site http://www.perl.com Bioperl http://www.bioperl.org CPAN: Comprehensive Perl Archive Network http://www.cpan.org/ FAQs Frequently Asked Questions http://www.perl.com/pub/q/faqs Beginners http://learn.perl.org Manuales Online http://www.perl.com/pub/v/documentation Recursos de Perl

89 Perl 17 i 18/des/2007 O'Reilly Llibres de Perl