ab58821d1cde21d619db190bbadea21d.ppt
- Количество слайдов: 37
Programação PERL Israel Tojal da Silva itojal@usp. br
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
Introdução Perl : Guia de Consulta Rápida Decio Jr. - Ed. Novatec Learning Perl (4 th ed) by Randal L. Schwartz, Tom Phoenix, brian d foy. Ed. O'Reilly Programming Perl (2 nd Edition) by Larry Wall, Tom Christiansen, Randal L. Schwartz, Stephen Potter Ed. O'Reilly Advanced Perl Programming (2 th ed) by Simon Cozens. Ed. O'Reilly
Introdução O que é PERL? “Perl is a language for getting your job done” Larry Wall
Introdução • 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çã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;
Perl x Bioinformática http: //www. bioperl. org/
Perl x Bioinformática
Perl x Bioinformática
Perl x Bioinformática
Primeiro programa hello. pl #!/usr/bin/perl print “Imprimindo uma mensagemn”; $ perl hello. pl
Variáveis O que são ? Posições na memória do computador, que são usadas para guardarem valores E 0 E 1 E 2 E 3 E 4 $var E 0 E 1 E 2 E 3 E 4 6 #!/usr/bin/perl $var = 6; . . . En En
Sintaxe das variáveis
Sintaxe das variáveis Escalares : $dna = 'ATGCTTATTGTT'; $hits = 5; $evalue = 5 e-120; $directory = `pwd`;
Sintaxe das variáveis Array: @genes = ('BRCA 1', 'NAT 2' , 'MMP 9' , '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 BRCA 1; print “$cromossomos[3]”; # imprime 7; • Tamanho do array print “$#gene”; # imprime 3; • Acessando uma fatia do array print join(“t”, @cromossomos[3. . 5]) , “n”; imprime 7 9 11
Sintaxe das variáveis 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 “$keyt$codon{$key} n”;
Controlando avisos e variáveis Variáveis em Perl são globais por default use warnings; use strict; my $var = 10;
Operadores = , += , -= , *= , . =
Operadores Exemplos : $x = 8; $y = 2; $z = $x * $y $z == 16 $codon. A = 'ACG'; $codon. B = 'ACG'; $codon. A ne $codon. B
Instruções if e unless If : A declaração será executada se a expressão lógica for verdadeira: my $var. A = 3; my $var. B = 5; if ( $var. A < $var. B ) {. . } unless: A declaração não será executada se a expressão for verdadeira: my $var. A = ‘A’; unless ( $var. A eq 'B' ) {. . }
Instruções Interativas (looping) @genes = ('BRCA 1', 'NAT 2' , 'MMP 9' , 'MYC', 'FOX 2'); my $i = 0; while ( $i <= $#genes ){ while (expr) bloco print “$i : $genes[$i]n”; $i++; } foreach my $gene ( @genes ) { foreach var (lista) bloco print “$genen”; } for ( my $i =0 ; $i <= $#genes ; $i++ ) { for(expr; expr) bloco print “$i : $genes[$i]n”; }
Formas especiais da instrução do @genes = ('BRCA 1', 'NAT 2' , 'MMP 9' , 'MYC', 'FOX 2'); do bloco while expr; do bloco until expr; my $i = 0; do{ print “$genes[$i]n”; $i++; }while ( $i <= $#genes ); my $i = 0; do{ print “$genes[$i]n”; $i++; }until ( $i > $#genes );
Desviando do caminho : next e last @genes = ('BRCA 1', 'NAT 2' , 'MMP 9' , 'MYC', 'FOX 2'); my $i = 0; while ( $i <= $#genes ){ next; next if ( $gene[$i] eq 'MYC' ); print “$gene[$i]n”; $i++; } my $i = 0; while ( $i <= $#genes ){ last; last if ( $gene[$i] eq ‘MYC’ ); print “$gene[$i]n”; $i++; }
Um programa Perl #!/usr/bin/perl use strict; use warnings; my $dna; my @array = ('a', 'c', 'g', 'a', 'g', 'c', 't', 'c', 'g'); for (my $i =0; $i <= $#array; $i++) { $dna. = $array[$i]; print “$dnan”; } perl dna. pl
Referências são ponteiros para tipos de dados previamente definidos : my $var = 6; my $ref_var = $var; E 0 E 1 E 2 E 3 E 4 print $ref_var; # imprime E 1 $var $ref_var E 0 E 1 E 2 E 3 E 4 . . . E 1 . . . print $$ref_var; # imprime 6 En
Referências
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/ ){. . . } my $dna = 'ACGTTCCAACA'; if ( $dna =~ /aac/i ){. . . }
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 = 'TCCTCCATCCG'; $dna =~ s/C/c/; print “$dna”; #imprime Tc. CTCCATCCG my $dna = 'acgtccatc-------ccccatta'; $dna =~ s/-//g; print “$dna”; #imprime acgtccatcccccatta
Sub-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); &sum ($x, $y, $sum); print “$x + $x = $sumn”; sub sum{ my ($var 1, $var 2) = @_; my ($var 1, $var 2, $r. S_sum) = @_; my $sum = $var 1 + $var 2; $$r. S_sum = $var 1 + $var 2; return $sum; } return; }
Manipulação de Arquivos . . . open (IN, 'arquivo. txt') or die $!; while (<IN>){ print “$_”; } close (IN); . . . open (OUT, '>arquivo. txt') or die $!; print OUT “$varn”; close (OUT); . . .
Estruturas de Dados 1 2 1 4 4 3 4 1 2 4 3 MMP 9 IKZF 2 WFS 1 COLQ MMP 9 IKZF 2 FOXD 3 WFS 1 RUFY 3 COLQ NSUN 7 FOXD 3 RUFY 3 NSUN 7
Estruturas de Dados 1 1 2 2 1 4 4 4 3 3 4 BRCA 1 IKZF 2 FOXD 3 WFS 1 RUFY 3 COLQ NSUN 7 1 BRCA 1 FOXD 3 4 WFS 1 RUFY 3 NSUN 7 3 COLQ 2 IKZF 2 NM_11 NM_32 NM_13 NM_14 NM_82 NM_54 NM_88 NM_89 NM_92 NM_93 NM_52 NM_11 NM_32 NM_82 NM_54 NM_88 NM_89 NM_52 NM_93 NM_14
Ordenação BRCA 1 MMP 9 NAT 2 NAD 1 HOX TP 53 15 10 3 9 44 60 10 2 4 25 87 3 #!/usr/bin/perl use strict; use warnings; my %Ho. A; my $file. In = shift or die $!; my @array; open(IN, $file. In) or die $!; while(<IN>){ TP 53 HOX BRCA 1 MMP 9 NAD 1 NAT 2 60 44 15 10 9 3 3 87 10 2 25 4 chomp; @array = split(“t”, $_); push ( @ { $Ho. A{$array[0]} }, @array[1. . 2] ); } close(IN); foreach my $key ( sort { $Ho. A{$b}[0] $Ho. A{$a}[0] } keys %Ho. A ){ print “$keyn”; print join (“t ”, @{$Ho. A{$key}} ) , “n”; }
Funções PERL length • split • join • sort • substr • push • unshift • pop • shift • chomp • glob • reverse • exists •
http: //geekandpoke. typepad. com/geekandpoke/perl/
Vamos praticar ?
Vamos praticar ? http: //xavante. fmrp. usp. br/verao Faça um script para traduzir uma sequência de nucleotídeos para uma ORF. Dica : perldoc split join reverse substr hash rotina
ab58821d1cde21d619db190bbadea21d.ppt