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):

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