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

Post on 24-Jan-2016

218 views 3 download

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

Perl 17 i 18/des/2007

Programació en Perl: aplicacions bioinformàtiques

Universitat de Girona

Perl 17 i 18/des/2007

Punts a tractarPunts 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?

Perl 17 i 18/des/2007

SISTEMA LOCAL DE GESTIÓ DE LA INFORMACIÓ BIOLÒGICA

SISTEMA LOCAL DE GESTIÓ DE LA INFORMACIÓ BIOLÒGICA

Perl 17 i 18/des/2007

El problema de la integració de dadesEl problema de la integració de dades

ANÀLISI BIOINFORMÀTIC ESTÀNDARANÀ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 htmlScripts cgi

Eines d’anàlisiEx. BLAST, predicció

d’estructura, …

Secundàries

Primàries

Terciàries

3. Consulta i visualització

Perl 17 i 18/des/2007

El problema de la integració de dadesEl 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!!!

Perl 17 i 18/des/2007

Exemple d’una plataforma de gestió automatitzadaExemple 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

Perl 17 i 18/des/2007

Exemple d’una plataforma de gestió automatitzadaExemple d’una plataforma de gestió automatitzada

Get sequences

& annotations

INPUT: GenBank query, or submitted

sequences

Minimum number ofsequences per category

Clustalparameters

CDS, exon, intron, 5’UTR, 3’UTR, promoter, etc.

Group byspecies & gene

Sequences &annotations

Sequencesorganized incategories

Alignmentvalidation

Su

bg

rou

ps

Read geneannotations

Extract generegions

Sequences,positions and orientations

Polymorphism

Syn & Non-synpolymorphisms

Linkagedisequilibrium

Codon bias

DIVERSITYANALYSIS

Web-basedoutput

Alignments

Jalview

OUTPUT

MySQLdatabase

QUALITYASSESSMENT ALIGNMENT

DATA MINING

AMNIS

Aligns

Sourcedata

GENOMELOCATIONConsensus

BLAT

Minimum

similarity &

Minimum

number of

seqsper category

ClustalW

Muscle

T-Coffee

Perl 17 i 18/des/2007

Exemple d’una plataforma de gestió automatitzadaExemple d’una plataforma de gestió automatitzada

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ó automatitzadaExemple d’una plataforma de gestió automatitzada

Perl 17 i 18/des/2007

EL LLENGUATGE PERL: CARACTERÍSTIQUES I INSTAL·LACIÓ

EL LLENGUATGE PERL: CARACTERÍSTIQUES I INSTAL·LACIÓ

Perl 17 i 18/des/2007

El llenguatge Perl: característiquesEl llenguatge Perl: característiques

PERL, Practical Extraction and Report Language (Larry Wall 1986) 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

Perl 17 i 18/des/2007

Eines per a programarEines per a programar

• Editor de text– Bloc de notes (Notepad)– Notepad++, EditPlus, …– IDE Perl: Komodo, PerlE

• Intèrpret de Perl + Consola DOS– http://www.activestate.com/store/download_file.aspx?binGUID=e5c71329-b7a6-

4563-8199-e1483f751c4f

• Directori de treball al disc– Exemple: C:\scripts\

Perl 17 i 18/des/2007

El llenguatge Perl: instal·lacióEl llenguatge Perl: instal·lació

Perl 17 i 18/des/2007

El llenguatge Perl: instal·lacióEl llenguatge Perl: instal·lació

http://www.activestate.com/store/download_file.aspx?binGUID=e5c71329-b7a6-4563-8199-e1483f751c4f

Perl 17 i 18/des/2007

ESTRATÈGIES DE PROGRAMACIÓESTRATÈGIES DE PROGRAMACIÓ

Perl 17 i 18/des/2007

L’art de programarL’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

Perl 17 i 18/des/2007

El procés de programarEl 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

Perl 17 i 18/des/2007

Un programa que sumaUn programa que suma

Pseudo-codi (plantejament):1. Sol·licitar els números a sumar2. Fer la suma3. Mostrar el resultat

En Perl (només els comentaris):#Sol·licitar els números a sumar

#Fer la suma

#Mostrar el resultat

Perl 17 i 18/des/2007

Programació bàsicaProgramació 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.plprint "El meu primer script en Perl!";

C:\>perl primer.pl

C:\>primer.pl

El meu primer script en Perl!C:\>_

Perl 17 i 18/des/2007

Com funciona un scriptCom 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 resultadoprint ”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.plprint "Puc calcular!\n";#fer els càlculs$suma = 3 + 4;#mostrar el resultatprint "La suma de 3 + 4 es $suma";

Perl 17 i 18/des/2007

VARIABLES EN PERLVARIABLES EN PERL

Perl 17 i 18/des/2007

Tipus de dadesTipus de dades

• Text (o cadena de caracters, string)“cadena numero 1”, ‘cadena numero 2’

• Números1, 49, 28.2, -109, 6.04E23

• Caracters especialsprint “Nueva linea\n<aqui y un tab\t<aqui.\n”;

• Exercici (última instrucció): C:>perl programa.pl

print "Nova linia\n<aqui i un tab\t<aqui.\n";

C:\>perl programa.plNova linia<aqui i un tab <aqui.

C:\>_

Perl 17 i 18/des/2007

Variables escalarsVariables 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 $xprint 'el valor de $x es ' . $x . "\n";$x='DNA de cadena sencilla'; # canviem valor de $xprint 'pero ara el valor de $x es ' . $x . "\n";

• Proporcionen un lloc on guardar dades temporalment $nom

C:\>perl programa2.plel valor de $x es 42pero ara el valor de $x es DNA de cadena sencilla

Perl 17 i 18/des/2007

ExercicisExercicis

Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp

– Exercici 1A– Exercici 1B

Perl 17 i 18/des/2007

ExercicisExercicis

#!/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 pantallaprint $DNA;

#salimos del programaexit;

C:\>perl programa3.plACGGGGAGGACGGGAAATTACTACGGGCATTAGCC:\>_

Perl 17 i 18/des/2007

ExercicisExercicis

#!/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 separadamenteprint $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;

Perl 17 i 18/des/2007

Operadors aritmèticsOperadors aritmètics

• Aritmètics:

+ suma

- resta

* multiplicació

/ divisió

** exponencial

() agrupació

Perl 17 i 18/des/2007

Procedència d’operadorsProcedè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";

Perl 17 i 18/des/2007

Abreviatures d’OperadorsAbreviatures 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

Perl 17 i 18/des/2007

Arrays (matrius)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 enteraprint “array de bases:\n”; # Muestra la matriz seguidaprint @bases . “\n”; # Muestra la matriz seguidaprint “@bases”; # Muestra la matriz con separaciones

array de bases:ACGA C G

• Es defineixen amb @nom

Perl 17 i 18/des/2007

Operacions amb matriusOperacions 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;

Perl 17 i 18/des/2007

Operacions amb matriusOperacions amb matrius

• Entorn (@ARGV)

• Bucles propis

#!/usr/bin/perl# entorno.pl – Llamada entorno.pl Holaprint $ARGV[0] . “\n”; # este el primer argumentoprint $0; # Corresponde al path y nombre del script

foreach $elemento (@bases){ print $elemento.”\n”;}

Perl 17 i 18/des/2007

ExercicisExercicis

Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp

– Exercici 2A– Exercici 2B– Exercici 2C– Exercici 2D– Exercici 2F

Perl 17 i 18/des/2007

Hashes (matrius associatives)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 operacionesprint “G es $purinas{‘G’}\n”; print %purinas.“\n”; # Valores e índices concatenados$queBase = 'T';print "$queBase es $pirimidinas{$queBase}\n";

Perl 17 i 18/des/2007

Hashes (keys i values)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.plATCGAdeninaTiminaCitosinaGuaninaA es AdeninaT es TiminaC es CitosinaG es GuaninaC:\>_

Perl 17 i 18/des/2007

ExercicisExercicis

Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp

– Exercici 2G

Perl 17 i 18/des/2007

SEQÜÈNCIES I CADENESSEQÜÈNCIES I CADENES

Perl 17 i 18/des/2007

Entradadades

Càlcul / Operacions

Sortida dades

Estructura bàsicaEstructura bàsica

Perl 17 i 18/des/2007

Entrada/Sortida des del teclatEntrada/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 = <STDIN>;

print "tu edad en años de perro es " . $edad/7 . "\n";

Perl 17 i 18/des/2007

Entrada/Sortida des del teclatEntrada/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.plprint “Entra tu nombre: ”;chomp ($nombre = <>); # <> equivale a <STDIN>print “Hola $nombre!, encantado de conocerte.\n”;

Perl 17 i 18/des/2007

Entrada/Sortida a arxiusEntrada/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');

Perl 17 i 18/des/2007

Lectura d’arxiusLectura d’arxius

open MIFICHERO,’datos.txt’; @linea = <MIFICHERO>;

close MIFICHERO;

• Exercici: Llegir la següent seqüència proteica des d’un arxiu i imprimir-la en pantalla

#/usr/bin/perl# FileInArray.plopen(MIFICHERO, “datos.txt”); @array = <MIFICHERO>; # Cargamos fichero en matrizclose MIFICHERO;

  1 MNIDDKLEGL FLKCGGIDEM QSSRTMVVMG 30 31 GVSGQSTVSG ELQDSVLQDR SMPHQEILAA 60 61 DEVLQESEMR QQDMISHDEL MVHEETVKND 90 91 EEQMETHERL PQGLQYALNV PISVKQEITF 120121 TDVSEQLMRD KKQIR                 135

Perl 17 i 18/des/2007

Escriptura a arxiusEscriptura a arxius

#/usr/bin/perl# EscrituraFicheros.pl

open FICHERO, ‘>data.txt’; # Crear para escribiropen 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

Perl 17 i 18/des/2007

La instrucció “die”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 = <FICHERO>;close FICHERO;

Perl 17 i 18/des/2007

CONTROL DE FLUXECONTROL DE FLUXE

Perl 17 i 18/des/2007

Entradadades

Entradadades

Operació BOperació BOperació AOperació A

Condició?Condició?

CondicionsCondicions

no OKno OK

OKOK

CondicionsCondicions

Perl 17 i 18/des/2007

Decisiones condicionales: ifDecisiones condicionales: if

#!/usr/bin/perl

print “dime tu edad: “;

$edad = <>;

if (($edad <=0) or ($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.plprint “dime tu edad: “;$edad = <STDIN>;if ($edad <=0){

print “error al leer la edad. \n”; die “edad ridícula”;}print “tu edad en años de perro es ” ,$edad/7,”\n”;

Perl 17 i 18/des/2007

OperadoresOperadores

• Comparadors numèrics:== igualtat $a == $b != desigualtat< menor > major<= menor o igual>= major o igual! not lògic

Perl 17 i 18/des/2007

OperadoresOperadores

• Comparadors per cadeneseq igualtat $a eq $b ne desigualtatlt 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

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!!

Perl 17 i 18/des/2007

   

If – elseIf – else

#!/usr/bin/perl# if-else.plprint “entra tu edad: “;$edad = <>;if ( ($edad <= 0) or ($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:

Perl 17 i 18/des/2007

   

If – elsif – elseIf – elsif – else

#!/usr/bin/perl# if-elsif.plprint “Entra tu edad: “;$edad = <>;if ( $edad <= 0 ) { print “eres muy joven para usar un

teclado”;} elsif ( $edad >= 100 ) { print “un perro no puede vivir tanto”;} else { print “tu edad es: “, $edad/7, “\n”;}

Perl 17 i 18/des/2007

Entradadades

Entradadades

Operació BOperació BOperació AOperació A

Condició?Condició?

BuclesBucles

fals (no segueixo)fals (no segueixo)

vertadervertader(segueixo)(segueixo)

BuclesBucles

Perl 17 i 18/des/2007

• Exercici alternativa: until ($cont > 5)

Instrucció WhileInstrucció While

#!/usr/bin/perl# while.pl$cont = 1;while ($cont <= 5){ print “contador $cont\n”; $cont = $cont + 1;}

Perl 17 i 18/des/2007

Instrucció While + arxiusInstrucció While + arxius

#!/usr/bin/perl# Whilefile.plopen(ARCHIVO, “llistat.txt”);while ($linea = <ARCHIVO>){

print $linea;} close(ARCHIVO);

(...)while (<ARCHIVO>){

print $_;} (...)

Perl 17 i 18/des/2007

EXPRESSIONS REGULARSEXPRESSIONS REGULARS

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)Cerca de patrons (Pattern Matching)

Perl 17 i 18/des/2007

MetacaràctersMetacaràcters

. Qualsevol caràcter excepte newline^ Principi de línia$ Final de línia\w Qualsevol caràcter alfanumèric\W Qualsevol caràcter no alfanumèric \s Qualsevol caràcter espaiador\S Qualsevol caràcter no espaiador\d Qualsevol dígit\D Qualsevol 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

Perl 17 i 18/des/2007

QuantificadorsQuantificadors

? 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

Perl 17 i 18/des/2007

Exemples de patronsExemples 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\W Cualquier carácter no-alfanum. \s Cualquier carácter espaciador\S Cualquier carácter no-espaciador\d Cualquier dígito\D Carácter no dígito

Caràcters que cal “escapar”:\$ \[\| \]\* \\\^ \/

Perl 17 i 18/des/2007

Extracció de patronsExtracció 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\W Cualquier carácter no-alfanum. \s Cualquier carácter espaciador\S Cualquier carácter no-espaciador\d Cualquier dígito\D Carácter no dígito

Caràcters que cal “escapar”:\$ \[\| \]\* \\\^ \/

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:

ExerciciExercici

agtactactcatgcacagctactcagtagctagctacgactacgtgactagcctacgtccagactgactagcacgtagacgactacgtagactagcacagcatgtaagatctactgacaaaaaaaaatgacatgactacgtgcgtgctgctgctga

Perl 17 i 18/des/2007

ExerciciExercici

#!/usr/bin/perl# countBases.pl

$sequencia=''; $a=0; $c=0; $g=0; $t=0;open(ARXIU, "sequencia.txt");while ($linia = <ARXIU>){

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";

Perl 17 i 18/des/2007

Substituir cadenesSubstituir cadenes

• Operador “s”:$RNA =~ s/T/U/g;

s: operador substituirT: patró a substituirU: text que reemplaçarà el patróg: modificador global

Perl 17 i 18/des/2007

Traduir cadenesTraduir cadenes

• Operador “tr”:$RNA =~ tr/GATC/CTAG/;

tr: operador traduirCanviarà cada caràcter de l’esquerra pels de la dreta, per ordre:

G C T AA T C G

Perl 17 i 18/des/2007

4 funcions útils4 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 !!!

Perl 17 i 18/des/2007

ExercicisExercicis

Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp

– Exercici 1C– Exercici 1D– Exercici 2H– Exercici 3A– Exercici 4A– Exercici 4B

Perl 17 i 18/des/2007

SUBRUTINESSUBRUTINES

Perl 17 i 18/des/2007

SubrutinesSubrutines

• 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;

Perl 17 i 18/des/2007

#!/usr/bin/perl# subrutinas.plprint "\nresultado: ", suma(2,6), "\n";

sub suma{$valor1 = $_[0];$valor2 = $_[1];return $valor1 + $valor2;

}

#!/usr/bin/perl# minilib.pmsub 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)

Perl 17 i 18/des/2007

PackagesPackages

#!/usr/bin/perl# miniAN_cliente.pluse ADN; use ARN;

$cadena = “AGC”;$comp = complementa($cadena); # equival

main::complementaprint ADN::complementa($cadena); # :: o bé ->print ARN::complementa($cadena); # :: o bé ->

#!/usr/bin/perlPackage ARN;sub complementa{#(...)}1;

#!/usr/bin/perlPackage ADN;sub complementa{#(...)}1;

Perl 17 i 18/des/2007

ExercicisExercicis

Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp

– Exercici 5C

Perl 17 i 18/des/2007

MÒDULSMÒDULS

Perl 17 i 18/des/2007

Mòduls PerlMò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

Perl 17 i 18/des/2007

Instal·lació de mòdulsInstal·lació de mòduls

Perl 17 i 18/des/2007

LWPLWP

#!/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;

WEBPAGE

(codi font) Perl Script

= SCREEN SCRAPING

Perl 17 i 18/des/2007

Altres mòduls bàsics de PerlAltres 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

formatsPerl Script

GD

Perl 17 i 18/des/2007

Altres mòduls de PerlAltres mòduls de Perl

Perl Script

Mail::Sendmail

Tk

Interfícies gràfiques per als teus

programes Perl

Perl Script

Perl 17 i 18/des/2007

BioPerlBioPerl

• 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, …

Perl 17 i 18/des/2007

Un exempleUn exemple

#!/usr/bin/perl# bioperl-ejemplo.pl# Realizar distintas operaciones en una secuenciause 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 secuenciaprint $seq->revcom->seq() . “\n”;# inversa complementariaprint $seq->alphabet() . “\n”; # ‘dna’,‘rna’,‘protein’print $seq->translate->seq() . “\n”; # trad. a proteina

ATGGGGGTGGTGGTACCCTAGGGTACCACCACCCCCATdnaMGVVVP

Perl 17 i 18/des/2007

Ejemplo SeqStatsEjemplo 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= 2Numero de Bases C= 3Numero de Bases G= 9Numero de Bases T= 5

Perl 17 i 18/des/2007

Acceso a bases de datos remotasAcceso 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";

Perl 17 i 18/des/2007

Alguns mòduls de BioPerlAlguns mòduls de BioPerl

Bio :: Seq Sequence object, with features

Bio :: SimpleAlign Multiple alignments held as a set of sequences

Bio :: DB :: GenBank Database object interface to GenBank

Bio :: DB :: NCBIHelper A collection of routines for queries to NCBI DDBB

Bio :: DB :: SwissProt Database object interface to SWISS-PROT retrieval

Bio :: Tools :: Blast Bioperl BLAST sequence analysis object

Bio :: Tools :: BPlite Lightweight BLAST parser

Bio :: Tools :: SeqPattern Bioperl object for a sequence pattern or motif

Bio :: Tools :: SeqStats Object holding statistics for one particular sequence

Bio :: Tools :: Blast :: Run :: StandAloneBlast Bioperl module for running BLAST analyses locally

Bio :: Tools :: Blast :: Run :: RemoteBlast Bioperl module for running BLAST through HTTP

Bio::Tools::Run::Alignment::Clustalw Bioperl module for running ClustalW analyses locally

Bio :: Tools :: Prediction :: Exon Predicted exon feature

Bio :: Tools :: Prediction :: Gene Predicted gene structure feature

Bio :: SeqIO Format conversion of sequences

Bio :: AlignIO Format conversion of alignments

Bio :: Structure :: IO Structure objects of PDB

Browse all modules at http://www.bioperl.org/wiki/Category:Modules

Perl 17 i 18/des/2007

ExercicisExercicis

Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp

– Exercici 10A– Exercici 10B– Exercici 10C (però utilitzant RemoteBlast)

– Exercici 10D

Perl 17 i 18/des/2007

EXEMPLE INTEGRADOREXEMPLE INTEGRADOR

Perl 17 i 18/des/2007

ExercicisExercicis

Curso de Perl (10 ejercicios) http://bioinformatica.uab.cat/bioinfouab/Resources/CursoPerl/CursoPerl.asp

– Exercici 7A– Exercici 7B– Exercici 7C– Exercici 8A

Perl 17 i 18/des/2007

COM SEGUIR AVANÇANT?COM SEGUIR AVANÇANT?

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 PerlRecursos de Perl

Perl 17 i 18/des/2007

O'Reilly

Llibres de PerlLlibres de Perl