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):
- Nome da sequencia alvo (query)
- Nome do best hit (somente o BEST)
- Score
- 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.