BioPerl
BioPerl est une bibliothèque comportant un ensemble de modules Perl facilement utilisables dans des programmes ou scripts pour la manipulation et le traitement de données biologiques, plus particulièrement celles issues de la génomique, la génétique ou de l'analyse du transcriptome. Bioperl fournit des outils pour l'indexation, l'interrogation et l'extraction de banques de données publiques ou locales, des filtres pour un très grand nombre de sorties de programmes usuels en bioinformatique (blast, clustalw, hmmer, est2genome, ...) permettant ainsi de réaliser simplement des enchaînements de programmes (pipelines).
Dans le cadre du développement d'un projet d'envergure plus importante qu'un simple pipeline, bioperl offre une modélisation objet détaillée et extensible de nombreux concepts de biologie moléculaires. Il est souvent judicieux d'utiliser ou d'hériter de ces classes pour modéliser un problème, car il est souvent préférable d'utiliser des méthodes efficaces et souvent largement testées plutôt que de les réécrire.
L'utilisation de Bioperl permet une très haute intéropérabilité, car la bibliothèque propose un modèle de données standardisé permettant de stocker des données hétérogènes provenant de nombreuses sources. A l'aide de bioperl, il est par exemple possible de modéliser de manière identique des gènes prédits à partir de différents prédicteurs, ou extraits de différentes bases de données. L'utilisation de cette couche métier standardisée est très pratique pour lire des données provenant de différentes sources et les récrire dans d'autres formats spécifiques afin de les soumettre à de nouveaux programmes.
Le contexte d'utilisation de BioPerl est très large. On peut utiliser Bioperl dans des simples scripts pour extraire de l'information de banques de données ou analyser des résultats d'un programme, d'enchaînement de programmes (pipeline) ou pour des projets plus complexes nécessitant de la modélisation de données biologiques.
Voici un exemple qui en illustre quelques fonctionnalités :
use Bio::DB::GenBank;
use Bio::DB::Query::GenBank;
# 1. Extraction directe des données de genbank grâce au serveur Entrez et formattage au format fasta
# Recuperation des donnees au NCBI
my $gb = Bio::DB::GenBank->new() ;
# la requete Entrez (voir http://www.ncbi.nlm.nih.gov/books/bv.fcgi?rid=help... ) pour plus details
# Ici on recherche les proteines d'un organisme, on a par exemple la requete suivante : CIONA[ORGN] pour recuperer les sequences de ciona*
my $querystr = $org.'[ORGN]';
# On recherche parmi la banque protein
my $query = Bio::DB::Query::GenBank->new
( -query => $querystr,
-db => 'protein'
) ;
# On recupere un objet Bio::SeqIO
my $seqio = $gb->get_Stream_by_query($query) ;
# Création d'un objet Bio::SeqIO de type fasta
my $fasta=Bio::SeqIO(-file => 'ciona.fa', -format => 'fasta');
# Ecriture du fichier fasta et stockage des séquences dans un tableau
my @prots=(); # tableau contenant un ensemble de sequences proteiques
while (my $seq = $seqio->next_seq()){
$fasta->write_seq($seq);
push @prots, $seq;
}
# 2. Lecture et filtre d'un fichier de blast, on utilise ici un blast installé localement et des banques formatées et installées localement
my $blastrun = Bio::Tools::Run::StandAloneBlast->new(program =>"blastp", database =>"uniprot", e => "1e-05");
my $blast_report = $blastrun->blastall (\@prots);
# $blast_report est un Bio::SearchIO il peut être facilement parcouru
while ( my $result = $blast_report->next_result() ) {
while( my $hit = $result->next_hit ) {
while( my $hsp = $hit->next_hsp ) {
if ($hsp->frac_identical > 0.75) {
print join "\t", $result->query_name(), $hit->name() "\n";
}
}
}
}
Bien que bioperl offre quelques scripts pour réaliser des tâches courantes, son intérêt réside surtout dans son utilisation pour réaliser des scripts, pipelines ou projets spécifiques et sophistiqués. Dans ce dernier cas, l'utilisation de bioperl s'adressera plus particulièrement à des développeurs familiers de la programmation objet en perl. En raison de la relative tolérance en programmation du langage Perl, la réutilisation de "recettes" bioperl sans une compréhension parfaite de leur fonctionnement peut engendrer des effets de bord incontrôlés fort gênants et pas forcément flagrants.
D'autre part, il arrive que les modules “parser” permettant d'analyser les sorties de programmes (par exemple certains Bio::Tools::*) ne soient pas à jour pour les versions courantes des programmes en question.