Perl 17 i 18/des/2007 Programació en Perl: aplicacions bioinformàtiques Universitat de Girona.
-
Upload
raul-castilla-soriano -
Category
Documents
-
view
218 -
download
3
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