programação perl israel tojal da silva [email protected]

37
Programação PERL Programação PERL Israel Tojal da Silva [email protected]

Upload: internet

Post on 17-Apr-2015

112 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Programação PERL Israel Tojal da Silva itojal@usp.br

Programação PERLProgramação PERL

Israel Tojal da [email protected]

Page 2: Programação PERL Israel Tojal da Silva itojal@usp.br

SumárioSumário

Introdução – visão geral

Variáveis e Estrutura de Dados

Referências

Expressões Regulares

Funções

Manipulação de Arquivos

Ordenação

Page 3: Programação PERL Israel Tojal da Silva itojal@usp.br

IntroduçãoIntrodução

Perl : Guia de Consulta RápidaDecio Jr. - Ed. Novatec

Learning Perl (4th ed)by Randal L. Schwartz, Tom Phoenix, brian d foy. Ed. O'Reilly

Programming Perl (2nd Edition) by Larry Wall, Tom Christiansen, Randal L. Schwartz,

Stephen Potter Ed. O'Reilly

Advanced Perl Programming (2th ed)by Simon Cozens. Ed. O'Reilly

Page 4: Programação PERL Israel Tojal da Silva itojal@usp.br

O que é PERL?

“Perl is a language for getting your job done”

Larry Wall

IntroduçãoIntrodução

Page 5: Programação PERL Israel Tojal da Silva itojal@usp.br

• PERL ( Practical Extraction and Report Language ) é uma linguagem de programação criada por Larry Wall em 1987 e que pode ser usada em uma grande variedade de tarefas :

• Processamento de texto;

• Desenvolvimento Web;

• Administração de sistemas;

• Acesso a Banco de Dados;

IntroduçãoIntrodução

Page 6: Programação PERL Israel Tojal da Silva itojal@usp.br

• Características da PERL

• Linguagem simples;

• Alto nível;

• Suporte a várias plataformas (Unix, Mac OS, Windows, ...);

• Modular e Orientadas a Objetos;

• Desenvolvimento rápido;

IntroduçãoIntrodução

Page 7: Programação PERL Israel Tojal da Silva itojal@usp.br

Perl x BioinformáticaPerl x Bioinformática

http://www.bioperl.org/

Page 8: Programação PERL Israel Tojal da Silva itojal@usp.br

Perl x BioinformáticaPerl x Bioinformática

Page 9: Programação PERL Israel Tojal da Silva itojal@usp.br

Perl x BioinformáticaPerl x Bioinformática

Page 10: Programação PERL Israel Tojal da Silva itojal@usp.br

Perl x BioinformáticaPerl x Bioinformática

Page 11: Programação PERL Israel Tojal da Silva itojal@usp.br

Primeiro programaPrimeiro programa

#!/usr/bin/perl

print “Imprimindo uma mensagem\n”;

$ perl hello.pl

hello.pl

Page 12: Programação PERL Israel Tojal da Silva itojal@usp.br

VariáveisVariáveis

O que são ?

Posições na memória do computador, que são usadas para guardarem valores

$var

...

E0E1E2

En

E3E4

6

...

E0E1E2

En

E3E4

#!/usr/bin/perl

$var = 6;

Page 13: Programação PERL Israel Tojal da Silva itojal@usp.br

Sintaxe das variáveisSintaxe das variáveis

Tipo Caracter Exemplo É um nome para:Escalar $ $dna

Array @ @genes Uma lista de valores

Hash % %codons

Um valor individual ( números ou string )

Um grupo de valores, indexado por string

Page 14: Programação PERL Israel Tojal da Silva itojal@usp.br

Escalares :

$dna = 'ATGCTTATTGTT';

$hits = 5;

$evalue = 5e-120;

$directory = `pwd`;

Sintaxe das variáveisSintaxe das variáveis

Page 15: Programação PERL Israel Tojal da Silva itojal@usp.br

Array:

@genes = ('BRCA1', 'NAT2' , 'MMP9' , 'MYC');@cromossomos = (1,3,5,7,9,11,13,15,17,21,'X','Y’);

• Os valores são acessados pelos seus índices:print “$gene[0]”; # imprime BRCA1;print “$cromossomos[3]”; # imprime 7;

• Tamanho do arrayprint “$#gene”; # imprime 3;

• Acessando uma fatia do arrayprint join(“\t”,@cromossomos[3..5]) , “\n”; imprime 7 9 11

Sintaxe das variáveisSintaxe das variáveis

Page 16: Programação PERL Israel Tojal da Silva itojal@usp.br

Hash:

%codons = ( 'ATG'=>'M','CTT'=>'L','ATT'=>'I',

);

• Acessando o valor de uma chave do hash

print “$codons{'CTT'}\n”; # imprime: L

•Acessando os valores de todas as chaves do hash

foreach my $key ( keys %codons ){

print “$key\t$codon{$key}\ n”;}

Sintaxe das variáveisSintaxe das variáveis

Page 17: Programação PERL Israel Tojal da Silva itojal@usp.br

Controlando avisos e variáveisControlando avisos e variáveis

use warnings;use strict;

my $var = 10;

Variáveis em Perl são globais por default

Page 18: Programação PERL Israel Tojal da Silva itojal@usp.br

OperadoresOperadores

Operador Tipo+ , - , * , / , % , ** , ++ , -- Aritmético

< , <= , == , >= , > , != Comparação Numérica&& , || , ! , and , or , not Lógicoslt , gt , le , ge , eq , ne

AtribuiçãoComparação de String

= , += , -= ,*= , .=

Page 19: Programação PERL Israel Tojal da Silva itojal@usp.br

Exemplos :

$x = 8;$y = 2;$z = $x * $y$z == 16

$codonA = 'ACG';$codonB = 'ACG';$codonA ne $codonB

OperadoresOperadores

Page 20: Programação PERL Israel Tojal da Silva itojal@usp.br

If : A declaração será executada se a expressão lógica for verdadeira:

unless: A declaração não será executada se a expressão for verdadeira:

Instruções Instruções ifif e e unlessunless

my $varA = 3;my $varB = 5;if ( $varA < $varB ) {

....}

my $varA = ‘A’;unless ( $varA eq 'B' ) {

....}

Page 21: Programação PERL Israel Tojal da Silva itojal@usp.br

Instruções Interativas (Instruções Interativas (loopinglooping))

my $i = 0;while ( $i <= $#genes ){

print “$i : $genes[$i]\n”; $i++;

}

for ( my $i =0 ; $i <= $#genes ; $i++ ) {

print “$i : $genes[$i]\n”; }

foreach my $gene ( @genes ) {

print “$gene\n”; }

@genes = ('BRCA1', 'NAT2' , 'MMP9' , 'MYC','FOX2');

while (expr) bloco

for(expr;expr;expr) bloco

foreach var (lista) bloco

Page 22: Programação PERL Israel Tojal da Silva itojal@usp.br

Formas especiais da instrução Formas especiais da instrução dodo

my $i = 0;do{

print “$genes[$i]\n”;$i++;

}while ( $i <= $#genes );

do bloco while expr;

my $i = 0;do{

print “$genes[$i]\n”;$i++;

}until ( $i > $#genes );

do bloco until expr;

@genes = ('BRCA1', 'NAT2' , 'MMP9' , 'MYC', 'FOX2');

Page 23: Programação PERL Israel Tojal da Silva itojal@usp.br

Desviando do caminho : Desviando do caminho : nextnext e e lastlast

next;

last;

@genes = ('BRCA1', 'NAT2' , 'MMP9' , 'MYC','FOX2');

my $i = 0;while ( $i <= $#genes ){

next if ( $gene[$i] eq 'MYC' );print “$gene[$i]\n”;

$i++;}

my $i = 0;while ( $i <= $#genes ){

last if ( $gene[$i] eq ‘MYC’ );print “$gene[$i]\n”;

$i++;}

Page 24: Programação PERL Israel Tojal da Silva itojal@usp.br

Um programa PerlUm programa Perl

#!/usr/bin/perl

use strict;use warnings;

my $dna;my @array = ('a','c','g','g','a','g','c','t','c','g');for (my $i =0; $i <= $#array; $i++) {

$dna .= $array[$i];print “$dna\n”;

}

perl dna.pl

0 a1 ac2 acg3 acgg4 acgga5 acggag6 acggagc7 acggagct8 acggagctc9 acggagctcg

Page 25: Programação PERL Israel Tojal da Silva itojal@usp.br

ReferênciasReferências

Referências são ponteiros para tipos de dados previamente definidos :

my $var = 6;my $ref_var = \$var;

$var

$ref_var

...

E0E1E2

En

E3E4

6

E1

...

E0E1E2

En

E3E4

print $ref_var; # imprime E1

print $$ref_var; # imprime 6

Page 26: Programação PERL Israel Tojal da Silva itojal@usp.br

Referência Definição ValorEscalar $ref_var = \$var; $$ref_varArray $ref_array = \@genes; $ref_array->[0]Hash $ref_hash = \%hash; $ref_hash->{'ATG'}

ReferênciasReferências

Page 27: Programação PERL Israel Tojal da Silva itojal@usp.br

Expressões RegularesExpressões Regulares

Pesquisa A procura por grandes quantidades de dados de modo conveniente e eficaz é

realizada através da combinação de padrões

expr =~ [ m ] /padrão/[g][i][m][o][v][x]

my $dna = 'ACGTTCCAACA';if ( $dna =~ /aac/i ){

...}

my $dna = 'ACGTTCCAACA';if ( $dna =~ /aac/ ){

...}

Page 28: Programação PERL Israel Tojal da Silva itojal@usp.br

Substituição Pesquisa uma string procurando um padrão e, se encontrado, troca aquele

padrão pelo texto de substituição

$var =~ s/padrão/substituto/[e][g][i][m][o][s][x]

my $dna = 'acgtccatc--------------ccccatta';$dna =~ s/\-//g;print “$dna”; #imprime acgtccatcccccatta

my $dna = 'TCCTCCATCCG';$dna =~ s/C/c/;print “$dna”; #imprime TcCTCCATCCG

Expressões RegularesExpressões Regulares

Page 29: Programação PERL Israel Tojal da Silva itojal@usp.br

Sub-rotinasSub-rotinas

A sub-rotina agrupa uma sequência de declarações e funções que poderão ser reutilizadas pelo programa.

#!/usr/bin/perl

use strict;use warnings;

my ($x,$y,$sum) = (5,9,0);

$sum= &sum ($x,$y);

print “$x + $x = $sum\n”;

sub sum{

my ($var1,$var2) = @_;

my $sum = $var1 + $var2;

return $sum;}

#!/usr/bin/perl

use strict;use warnings;

my ($x,$y,$sum) = (5,9,0);

&sum ($x,$y,\$sum);

print “$x + $x = $sum\n”;

sub sum{

my ($var1,$var2,$rS_sum) = @_;

$$rS_sum = $var1 + $var2;

return;}

Page 30: Programação PERL Israel Tojal da Silva itojal@usp.br

Manipulação de ArquivosManipulação de Arquivos

...

open (IN,'arquivo.txt') or die $!;while (<IN>){

print “$_”;}close (IN);

...

...

open (OUT,'>arquivo.txt') or die $!;

print OUT “$var\n”;

close (OUT);

...

Page 31: Programação PERL Israel Tojal da Silva itojal@usp.br

Estruturas de DadosEstruturas de Dados

1 MMP92 IKZF21 FOXD34 WFS14 RUFY33 COLQ4 NSUN7

1 MMP9 FOXD32 IKZF24 WFS1 RUFY3 NSUN73 COLQ

#!/usr/bin/perl

use strict;use warnings;

my %HoA;

my $fileIn = shift or die $!;my @array;open(IN,$fileIn) or die $!;while(<IN>){

chomp;@array = split(“\t”,$_);push ( @ { $HoA{$array[0]} }, $array[1] );

}close(IN);

foreach my $key ( keys %HoA ){

print “$key\t”;print join (“ \t”,@{$HoA{$key}} ) , “\n”;

}

Hash de Array

Page 32: Programação PERL Israel Tojal da Silva itojal@usp.br

1BRCA1 NM_11 NM_32FOXD3 NM_82

4WFS1 NM_54RUFY3 NM_88 NM_89NSUN7 NM_52

3COLQ NM_92 NM_93

2IKZF2 NM_13 NM_14

#!/usr/bin/perl

use strict;use warnings;

my %HoHoA;

my $fileIn = shift or die $!;my @array;open(IN,$fileIn) or die $!;while(<IN>){

chomp;@array = split(“\t”,$_);push ( @ { $HoHoA{$array[0]}{$array[1]} }, $array[2] );

}close(IN);

foreach my $ka ( keys %HoHoA ){

print “$ka\n”;foreach my $kb ( keys %{$HoHoA{$ka}} ){

print “$kb\t”;print join (“ ”,@{$HoHoA{$ka}{$kb}} ) , “\n”;

}}

Hash de Hash de Array 1 BRCA1 NM_111 BRCA1 NM_322 IKZF2 NM_132 IKZF2 NM_141 FOXD3 NM_824 WFS1 NM_544 RUFY3 NM_884 RUFY3 NM_893 COLQ NM_923 COLQ NM_934 NSUN7 NM_52

Estruturas de DadosEstruturas de Dados

Page 33: Programação PERL Israel Tojal da Silva itojal@usp.br

OrdenaçãoOrdenação

BRCA1 15 10MMP9 10 2NAT2 3 4NAD1 9 25HOX 44 87TP53 60 3

TP53 60 3HOX 44 87BRCA1 15 10MMP9 10 2NAD1 9 25NAT2 3 4

#!/usr/bin/perl

use strict;use warnings;

my %HoA;

my $fileIn = shift or die $!;my @array;open(IN,$fileIn) or die $!;while(<IN>){

chomp;@array = split(“\t”,$_);push ( @ { $HoA{$array[0]} }, @array[1..2] );

}close(IN);

foreach my $key ( sort { $HoA{$b}[0] $HoA{$a}[0] } keys %HoA ){

print “$key\n”;print join (“\t ”,@{$HoA{$key}} ) , “\n”;

}

Page 34: Programação PERL Israel Tojal da Silva itojal@usp.br

Funções PERLFunções PERL

• length• split• join• sort• substr• push• unshift• pop• shift• chomp• glob• reverse• exists

Page 35: Programação PERL Israel Tojal da Silva itojal@usp.br

http://geekandpoke.typepad.com/geekandpoke/perl/

Page 36: Programação PERL Israel Tojal da Silva itojal@usp.br

Vamos praticar ?Vamos praticar ?

Page 37: Programação PERL Israel Tojal da Silva itojal@usp.br

Vamos praticar ?Vamos praticar ?

Faça um script para traduzir uma sequência de nucleotídeos para uma ORF. Dica :

perldoc split join reverse substr hash rotina

http://xavante.fmrp.usp.br/verao