A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programação PERL Israel Tojal da Silva

Apresentações semelhantes


Apresentação em tema: "Programação PERL Israel Tojal da Silva"— Transcrição da apresentação:

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

2 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

3 Introdução Perl : Guia de Consulta Rápida Decio 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

4 O que é PERL? Perl is a language for getting your job done Larry Wall Introdução

5 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

6 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ção

7 Perl x Bioinformática http://www.bioperl.org/

8 Perl x Bioinformática

9

10

11 Primeiro programa #!/usr/bin/perl print Imprimindo uma mensagem\n; $ perl hello.pl hello.pl

12 Variáveis O que são ? Posições na memória do computador, que são usadas para guardarem valores $var... E0 E1 E2 En E3 E4 6... E0 E1 E2 En E3 E4 #!/usr/bin/perl $var = 6;

13 Sintaxe das variáveis

14 Escalares : $dna = 'ATGCTTATTGTT'; $hits = 5; $evalue = 5e-120; $directory = `pwd`; Sintaxe das variáveis

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

16 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áveis

17 Controlando avisos e variáveis use warnings; use strict; my $var = 10; Variáveis em Perl são globais por default

18 Operadores =, +=, -=,*=,.=

19 Exemplos : $x = 8; $y = 2; $z = $x * $y $z == 16 $codonA = 'ACG'; $codonB = 'ACG'; $codonA ne $codonBOperadores

20 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 if e unless my $varA = 3; my $varB = 5; if ( $varA < $varB ) {.... } my $varA = A; unless ( $varA eq 'B' ) {.... }

21 Instruções Interativas (looping) 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

22 Formas especiais da instrução do 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');

23 Desviando do caminho : next e last 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++; }

24 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 a 1 ac 2 acg 3 acgg 4 acgga 5 acggag 6 acggagc 7 acggagct 8 acggagctc 9 acggagctcg

25 Referências Referências são ponteiros para tipos de dados previamente definidos : my $var = 6; my $ref_var = \$var; $var $ref_var... E0 E1 E2 En E3 E4 6 E1... E0 E1 E2 En E3 E4 print $ref_var; # imprime E1 print $$ref_var; # imprime 6

26 Referências

27 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/ ){... }

28 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 Regulares

29 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); 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; }

30 Manipulação de Arquivos... open (IN,'arquivo.txt') or die $!; while ( ){ print $_; } close (IN);... open (OUT,'>arquivo.txt') or die $!; print OUT $var\n; close (OUT);...

31 Estruturas de Dados 1MMP9 2IKZF2 1FOXD3 4WFS1 4RUFY3 3COLQ 4NSUN7 1MMP9FOXD3 2IKZF2 4WFS1RUFY3NSUN7 3COLQ #!/usr/bin/perl use strict; use warnings; my %HoA; my $fileIn = shift or die $!; my @array; open(IN,$fileIn) or die $!; while( ){ 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

32 1 BRCA1NM_11 NM_32 FOXD3NM_82 4 WFS1NM_54 RUFY3NM_88 NM_89 NSUN7NM_52 3 COLQNM_92 NM_93 2 IKZF2NM_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( ){ 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 1BRCA1NM_11 1BRCA1NM_32 2IKZF2NM_13 2IKZF2NM_14 1FOXD3NM_82 4WFS1NM_54 4RUFY3NM_88 4RUFY3NM_89 3COLQNM_92 3COLQNM_93 4NSUN7NM_52 Estruturas de Dados

33 Ordenação BRCA11510 MMP9102 NAT234 NAD1925 HOX4487 TP53603 HOX4487 BRCA11510 MMP9102 NAD1 925 NAT2 34 #!/usr/bin/perl use strict; use warnings; my %HoA; my $fileIn = shift or die $!; my @array; open(IN,$fileIn) or die $!; while( ){ 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; }

34 Funções PERL length split join sort substr push unshift pop shift chomp glob reverse exists

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

36 Vamos praticar ?

37 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


Carregar ppt "Programação PERL Israel Tojal da Silva"

Apresentações semelhantes


Anúncios Google