InfoBio TD bioperl
From silico.biotoul.fr
(Difference between revisions)
m |
m |
||
Line 28: | Line 28: | ||
* <tt>$nb_elem = scalar @list;</tt> interprète la liste dans un contexte scalaire ce qui correspond à récupérer le nombre d'éléments. | * <tt>$nb_elem = scalar @list;</tt> interprète la liste dans un contexte scalaire ce qui correspond à récupérer le nombre d'éléments. | ||
* <tt>sort @list</tt> 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 : <tt>sort {$a <=> $b} @list</tt>. | * <tt>sort @list</tt> 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 : <tt>sort {$a <=> $b} @list</tt>. | ||
+ | * itérations sur chaque éléments: <tt>foreach my $elm (@list) { print $elm; }</tt> | ||
== Opérations sur les hash == | == Opérations sur les hash == | ||
Line 37: | Line 38: | ||
* les valeurs : <tt>@list = values %hash;</tt> | * les valeurs : <tt>@list = values %hash;</tt> | ||
+ | |||
+ | * itérations sur chaque élément : <tt>foreach my $key (keys %hash) { print $hash{$key}: }</tt> |
Revision as of 15:56, 7 February 2012
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.
- itérations sur chaque éléments: foreach my $elm (@list) { print $elm; }
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;
- itérations sur chaque élément : foreach my $key (keys %hash) { print $hash{$key}: }