BIOPERL
Apresentação
aula11.pdf
BIOPERL: bioperl.org
CPAN: cpan.org
Leitura: HOWTO:Beginners
Arquivos
Genbank_flatfile.txt
dmel-sub-gene-r5.45.fasta
BLASToutput.txt
Exemplos
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
#exemplo01
#!/usr/bin/perl/
## Introducao ao uso do modulo Bio::Seq
## Este modulo cria o objeto sequencia
use strict;
use Bio::Seq;
# criar o objeto sequencia
my $seq_obj = Bio::Seq->new(-seq => "aaaatgggggggggggccccgtt",
-alphabet => "dna",
-desc => "Exemplo",
-display_id => "01",
-accession_number => "GB01");
# apos criar o objeto, podemos usar varios metodos
# exemplo, imprimir sequencia em formato fasta
print ">" . $seq_obj->accession_number() . " " . $seq_obj->desc() . "\n";
print $seq_obj->seq() . "\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
#exemplo02
#!/usr/bin/perl/
## Introducao ao uso do modulo Bio::Seq
## Este modulo cria o objeto sequencia
use strict;
use Bio::Seq;
# criar o objeto sequencia
my $seq_obj = Bio::Seq->new(-seq => "aaaatgggggggggggccccgtt",
-alphabet => "dna",
-desc => "Exemplo",
-display_id => "01",
-accession_number => "GB01");
# apos criar o objeto, podemos usar varios metodos
# exemplo, imprimir sequencia em formato fasta
print ">" . $seq_obj->accession_number() . " " . $seq_obj->desc() . "\n";
for (my $i = 1; $i <= $seq_obj->length(); $i += 10) {
my $end = $i + 10;
if ($end > $seq_obj->length()) {
$end = $seq_obj->length();
}
print $seq_obj->subseq($i, $end) . "\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
#exemplo03
#!/usr/bin/perl/
use strict;
use Bio::SeqIO;
### Argumento
my $fastafile = $ARGV[0];
my $outfile = $ARGV[1];
### Criar objeto ENTRADA
my $all_seqs_obj = Bio::SeqIO->new(-file => "<$fastafile",
-format => 'Genbank');
### Criar objeto SAIDA
my $out_obj = Bio::SeqIO->new(-file => ">$outfile",
-format => 'Fasta');
### Acessar todos os elementos da entrada
### metodo next_seq, a cada iteracao do while pega o proximo objeto seq
while (my $seq_obj = $all_seqs_obj->next_seq()) {
$out_obj->write_seq($seq_obj);
}
exit;
========
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#exemplo04
#!/usr/bin/perl/
use strict;
use Bio::Perl;
use Bio::SeqIO;
use Bio::SearchIO;
## Declarando variaveis
my $result_obj; my $hit; my $hsp;
## Agumentos
my $input = $ARGV[0];
## Criando objeto blast
my $report_obj = Bio::SearchIO->new(-format => 'blast',
-file => $input);
$result_obj = $report_obj->next_result;
print "Query=", $result_obj->query_name,"\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
#exemplo05
#!/usr/bin/perl/
use strict;
use Bio::Perl;
use Bio::SeqIO;
use Bio::SearchIO;
## Declarando variaveis
my $result_obj; my $hit; my $hsp;
## Agumentos
my $input = $ARGV[0];
## Criando objeto blast
my $report_obj = Bio::SearchIO->new(-format => 'blast',
-file => $input);
while( $result_obj = $report_obj->next_result ) {
while( $hit = $result_obj->next_hit ) {
while( $hsp = $hit->next_hsp ) {
if ( $hsp->percent_identity > 60 ) {
print "Query=", $result_obj->query_name, "\t","Hit=", $hit->name,
"\t", "Length=", $hsp->length('total'),
"\t", "Percent_id=", $hsp->percent_identity, "\n";
}
}
}
}
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 NomeSobrenomeE10.pl (substituir NomeSobrenome pelo próprio nome, por exemplo, TatianaTorresE10.pl). Prazo: 09/11/2016
O script deverá fazer as tarefas muito similares ao script anterior (E09), mas desta vez, deverá usar BioPerl.
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
Diferentemente do script anterior, não deverão ser extraídos alinhamentos com identidade de sequencia inferior a 50%.
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
Além de BioPerl, use os módulos strict, warnings e Getopt.