Módulos e CPAN

Apresentação

aula10.pdf
BIOPERL: bioperl.org
CPAN: cpan.org
Leitura para a próxima aula: HOWTO:Beginners

Exemplos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#exemplo01

#!/usr/bin/perl 

# qual a funcao deste script?

$seq = "atg att gaa cca tga"; 

$codons = count_codons($seq); # qual a funcao desta linha? 

print "A sequencia indicada: \"$seq\" contem $codons codons\n";

exit;

sub count_codons { 
    $seq = shift; 
    $seq = uc($seq);  # qual a funcao desta linha? 
    $seq =~ s/\s+//g; # e desta?
    $codons = length($seq) / 3; 
    return($codons); 
}

========

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#exemplo02

#!/usr/bin/perl 

use strict;

my ($x, $y, $z) = (1, 2, 3, 4, 5); 
print "x=$x y=$y z=$z\n";
  
my ($a, $b, $c) = (1, 2); 
print "Conteudo de c=$c\n"; 
print "Comprimento de c=", length($c), "\n"; 
print "Resultado de c + a = ", $a + $c, "\n";

exit;

========

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#exemplo03
#!/usr/bin/perl/

use strict; use warnings; 

my $help = argvtest(\@ARGV);

my $USAGE = "Usage: perl $0 help.pl <input> <output>\n";

if ($help) {
    die $USAGE;
}

my $input  = $ARGV[0];
my $output = $ARGV[1];

open(SEQ, "<$input")  || die "Nao foi possivel abrir o arquivo $input\n";
open(OUT, ">$output") || die "Nao foi possivel abrir o arquivo $output\n";

while (<SEQ>) {
    print OUT; 
}

close SEQ;

exit;

sub argvtest {

    # escreva a subrotina para testar argumentos

} 

========

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#exemplo04
#!/usr/bin/perl/                   
use strict;
use Getopt::Std; 

## Pegando os argumentos com o módulo Getopt 
my %opts = ();
getopts('t:s:p:d:e:i:l:h', \%opts);

my ($USAGE) = "\nUSAGE: $0\n".
          "\t\t-t Numero de processadores \n".
          "\t\t-s Entrada - sequencias em formato fasta\n".
          "\t\t-d Banco de sequencias\n".
          "\t\t-p Nome do programa\n".
          "\t\t-e E-value\n".
          "\t\t-i % minima de identidade\n".
          "\t\t-l Tamanho mínimo do alinhamento\n\n";

if ($opts{t}) { 
    my $threads = $opts{t};   
    chomp $threads; 
}

if ($opts{s}) { 
    my $input_seq = $opts{s}; 
    chomp $input_seq;
}

if ($opts{d}) { 
    my $db = $opts{d};        
    chomp $db; 
}

if ($opts{p}) { 
    my $prog = $opts{p};      
    chomp $prog; 
} 

if ($opts{e}) { 
    my $eval = $opts{e};      
    chomp $eval; 
}

if ($opts{i}) { 
    my $id = $opts{i};        
    chomp $id; 
}

if ($opts{l}) { 
    my $len = $opts{l};       
    chomp $len; 
}

if ($opts{h}) { 
    print $USAGE; 
    exit; 
}

exit;

========

Exercício

Exercício para entrega via e-mail. O exercício deverá ser entregue como um script completo, em um arquivo .pl, com o nome NomeSobrenomeE09.pl (substituir NomeSobrenome pelo próprio nome, por exemplo, TatianaTorresE09.pl). Prazo: 02/11/2016

O script deverá extrair as seguintes informações de um arquivo de saída do blast (chom_out_blast_res.txt):

  1. Nome da sequencia alvo (query)
  2. Nome do best hit (somente o BEST)
  3. Score
  4. Evalue

Deverá gerar então, um arquivo com colunas delimitadas por “\t” com as informações obtidas somente para sequências alvo alinhadas. Imprima somente os hits com e-values menores que os indicados pelo usuário.

Exemplo: QUERY BESTHIT Score Evalue chom_c407 carboxylesterase_Cochliomyia hominivorax_ChE7 2068 0.0 chom_c29712 carboxylesterase_Cochliomyia hominivorax_ChE7 176 1e-47

Use os módulos strict, warnings e Getopt.