InfoBio TD bioperl
From silico.biotoul.fr
L'objet du TD est de se familiariser avec le langage Perl et le module BioPerl.
Perl (pour Pratictal Extraction and Reporting Language) est un langage de programmation/script. Il met en oeuvre le paradigme de la programmation itérative.
Contents |
Types de données
- nombre entier
- nombre réels
- chaîne de caractères. Comme dans un script shell, dans une chaîne délimitée par des simples quote ' , les variables ne sont pas remplacées par leur valeur contrairement aux chaînes délimitées par des double quote ".
- descripteur de fichier
- référence (pointeur)
Structures de données
- les scalaires (SCALAR) utilisant la notation $. Par exemple $filename = 'sequences.fasta' contiendra typiquement le nom (ou chemin) d'un fichier.
- les listes ou tableaux (ARRAY) utilisant la notation @. Par exemple @filenames = ['comE_sequences.fasta', 'comD_sequences.fasta']. Pour accéder à un élément, on utilise un indice : $filenames[3] pour le quatrième élément.
- les tableaux associatifs (HASH) avec la notation %. Par exemple %gene_annotations = { 'comD'=>'sensor', 'comE'=>'response regulator' } ou bien %gene_annotations = [ 'comD', 'sensor', 'comE', 'response regulator']. Pour accéder à un élément : $gene_annotation{'comD'}.
Pour plus de détails, cf. http://perldoc.perl.org/perldata.html
Quelques fonctions essentielles
L'ensemble des fonctions disponibles : http://perldoc.perl.org/perlfunc.html#Perl-Functions-by-Category
Opérations sur les listes
Les listes peuvent se manipuler comme des piles (LIFO), files (FIFO) ou autres grâce aux opérations :
- $elem = pop @list; récupère (et supprime de la liste) le dernière élément
- push @list, $elem; opération duale de pop : ajoute l'élément en fin de liste
- $elem = shift @list; récupère (et supprime) le premier élément de la liste
- unshift @list, $elem dévinez !
- $nb_elem = scalar @list; interprète la liste dans un contexte scalaire ce qui correspond à récupérer le nombre d'éléments.
- sort @list trie la liste par ordre lexicographique. Si l'on veut trier par ordre numérique croissant (11>2) il faut spécifier la routine de tri : sort {$a <=> $b} @list.
Opérations sur les hash
- @list = keys %hash;
- les clés triées : @list = sort keys %hash;
- les clés triées en fonction des valeurs en ordre numérique décroissant : @list = sort { $hash{$b} <=> $hash{$a} } keys %hash;
cf. http://perldoc.perl.org/functions/sort.html pour plus d'exemples de tri.
- les valeurs : @list = values %hash;