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

Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Embed Size (px)

Citation preview

Page 1: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Programação PERL

Israel Tojal da [email protected]

Page 2: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Sumá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: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

MaterialPerl : 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: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Introdução

O que é PERL?

“Perl is a language for getting your job done”

Larry Wall

Page 5: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Introdução

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

● Processamento de texto ;

● Desenvolvimento Web ;

● Administração de sistemas ;

● Acesso a Banco de Dados ;

● Tarefas com soluções multiplataforma ;

Page 6: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Introdução

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

Page 7: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Perl x Bioinformática

http://www.bioperl.org/wiki/How_Perl_saved_human_genome

Page 8: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Perl x Bioinformática

Page 9: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Perl x Bioinformática

Page 10: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Algoritmo

Entrada dos Dados

Processamento

Saída dos Resultados

➔Aritmética Simples : soma de dois números inteiros

Z = X + Y

Y = 8

X = 5

Imprime Z (13)

Page 11: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Variáveis

➔X , Y e Z são variáveis :➔As variáveis guardam valores que serão utilizados posteriormente;

...

E0E1E2

En

E3E4

8

5

...

13

K

...

Y

X

...

Z

Representação das variáveis na memória do computador:

Page 12: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Sintaxe 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 13: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Sintaxe das variáveis

Escalares :

$dna = 'ATGCTTATTGTT';

$hits = 5;

$evalue = 5e-120;

$directory = `pwd`;

Page 14: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Sintaxe das variáveis

Array :

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

@cromossomos = (1,3,5,7,9,11,13,15,17,21,'X','Y' );

Os valores podem ser acessados pelos seusíndices:

$gene[0] = ‘BRCA1’;$cromossomos[3] = 7;

Page 15: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Sintaxe das variáveis

Hash :%codons = ( 'ATG'=>'M',

'CTT'=>'L','ATT'=>'I','GTT'=>'V’ );

$var = $codons{'GTT'};O conteúdo de $var é igual a V

Page 16: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Controlando avisos e variáveis

use warnings;use strict;

my $var = 10;

➔ Variáveis em Perl são globais por default

Page 17: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Operadores

Operador Tipo

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

< , <= , == , >= , > , != Comparação Numérica

&& , || , ! , and , or , not Lógicos

lt , gt , le , ge , eq , ne

Atribuição

Comparação de String= , += , -= ,*= , .=

Page 18: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Operadores

➔Exemplos :

my $x = 8;my $y = 2;

$z = $x * $y$z == 16

my $codonA = 'ACG';my $codonB = 'ACg';

$codonA ne $codonB

Page 19: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Instruções if e unless

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

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

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

....}

my $varA = „A‟;unless ( $varA eq 'B' ) {

....}

Page 20: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Instruções de Loop

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');

while (expr) bloco

for(expr;expr;expr) bloco

foreach var (lista) bloco

Page 21: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Formas especiais da instrução do

my $i = 0;do{

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

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

do bloco while expr;

my $i = 0;do{

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

}until ( $i > $#genes );

do bloco until expr;

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

Page 22: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Um 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 acg

3 acgg

4 acgga

5 acggag

6 acggagc

7 acggagct

8 acggagctc

9 acggagctcg

Page 23: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Referê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 24: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Referências

Referência Definição Valor

Escalar $ref_var = \$var; $$ref_var

Array $ref_array = \@genes; $ref_array->[0]Hash $ref_hash = \%hash; $ref_hash->{'ATG'}

Page 25: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Expressõ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 26: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Expressões Regulares

➔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

Page 27: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Expressões Regulares

➔Tradução➔ Traduz todas as ocorrências dos caracteres encontrados na lista de pesquisa

pelo caractere correspondente na lista de substitutos.

$var =~ tr/lista_depesquisa/lista_de_substitutos/[c][d][s]

my $dna = 'acgtccatcccccatta';$dna =~ tr/[ACGT]/[TGCA]/;print “$dna”; #imprime tgcaggtagggggtaat

Page 28: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Sub-rotinas

➔ A sub-rotina agrupa uma sequência de declarações e funções quepoderã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 29: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Manipulaçã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 30: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Estruturas Avançadas

BRCA1 1BRCA1 3MMP9 2BRCA1 6NAT2 3NAD1 2NAT2 5MMP9 3

BRCA1 1 3 6MMP9 2 3NAT2 3 5NAD1 2

#!/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\n”;print join (“ ”,@{$HoA{$key}} ) , “\n”;

}

Hash de Array

Page 31: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Estruturas Avançadas

BRCA1 1 2BRCA1 3 2MMP9 2 1BRCA1 6 2NAT2 3 4NAD1 2 2NAT2 5 4MMP9 3 1

2BRCA1 1 3 6NAD1 2

1MMP9 2 3

4NAT2 3 5

#!/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[2]}{$array[0]} }, $array[1] );

}close(IN);

foreach my $ka ( keys %HoHoA ){

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

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

}}

Hash de Hash de Array

Page 32: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Ordenaçã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 (“ ”,@{$HoA{$key}} ) , “\n”;

}

Page 33: Título da Apresentação - lgmb.fmrp.usp.br · Expressões Regulares Funções Manipulação de Arquivos Ordenação. Material Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec

Vamos praticar ?

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

perldoc split join reverse hash rotina

Enviar para o email [email protected] até 18/2