Perl Orienté Objet BioPerl There is more than one way to do it

Documents pareils
La gestion de données dans le cadre d une application de recherche d alignement de séquence : BLAST.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Recherche dans un tableau

TP 1. Prise en main du langage Python

Extraction d information des bases de séquences biologiques avec R

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Utilisation d objets : String et ArrayList


STAGE IREM 0- Premiers pas en Python

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Introduction à MATLAB R

Définitions. Numéro à préciser. (Durée : )

4. Groupement d objets

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Premiers Pas en Programmation Objet : les Classes et les Objets

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Algorithmique & programmation

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

OCL - Object Constraint Language

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Java Licence Professionnelle CISII,

TD3: tableaux avancées, première classe et chaînes

Présentation du langage et premières fonctions

Bases de programmation. Cours 5. Structurer les données

Structure fonctionnelle d un SGBD

Conventions d écriture et outils de mise au point

Initiation à la Programmation en Logique avec SISCtus Prolog

Présentation du PL/SQL

AWS avancé. Surveiller votre utilisation d EC2

LES TYPES DE DONNÉES DU LANGAGE PASCAL

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Content Switch ou routage de niveau HTTP

Chapitre 1 : La gestion dynamique de la mémoire

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

ÉVALUATION DE LA MAINTENABILITÉ DE S3MDSS AVEC L OUTIL SONAR

Cours 14 Les fichiers

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

TD/TP PAC - Programmation n 3

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Techniques de Programmation pour Internet

Les structures de données. Rajae El Ouazzani

as Architecture des Systèmes d Information

Plus courts chemins, programmation dynamique

Programme awk------introduction rapide

Cours d algorithmique pour la classe de 2nde

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

Algorithmique et Programmation, IMA

Génie Logiciel avec Ada. 4 février 2013

Algorithmique et structures de données I

Création et développement d une base de données sur le VIH

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Exonet : sauvegarde automatisée d une base de données

TD/TP PAC - Programmation n 3

Plan du cours. Historique du langage Nouveautés de Java 7

Programmer en JAVA. par Tama

Organigramme / Algorigramme Dossier élève 1 SI

1 Recherche en table par balayage

Initiation à LabView : Les exemples d applications :

MIS 102 Initiation à l Informatique

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Du 10 Fév. au 14 Mars 2014

Introduction aux bases de données: application en biologie

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Compression Compression par dictionnaires

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

UML et les Bases de Données

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Gestion centralisée d un réseau de sites discrets. Nicolas JEAN

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Initiation à Excel. Frédéric Gava (MCF)

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

I. Introduction aux fonctions : les fonctions standards

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Chapitre 5 : Les procédures stockées PL/SQL

Initiation à la programmation en Python

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

1. Structure d'un programme FORTRAN 95

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Représentation d un entier en base b

Big data et sciences du Vivant L'exemple du séquençage haut débit

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Cours d Algorithmique et de Langage C v 3.0

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

1 Lecture de fichiers

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

DM 1 : Montre Autoquartz ETA

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Définition des Webservices Ordre de paiement par . Version 1.0

EPREUVE PRATIQUE DES TECHNIQUES INFORMATIQUES ACTIVITE N 1. Thème de l activité : Configuration d un firewall

Cours Bases de données 2ème année IUT

Transcription:

Perl Orienté Objet BioPerl There is more than one way to do it Bérénice Batut, berenice.batut@udamail.fr DUT Génie Biologique Option Bioinformatique Année 2014-2015

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Types de données Structures de contrôle Manipulation de fichiers Expressions régulières Définitions de fonctions Références Modules Programmation Orientée Objet BioPerl 2

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Types de données Structures de contrôle Manipulation de fichiers Expressions régulières Définitions de fonctions Références Modules Programmation Orientée Objet BioPerl 3

Définition des variables Nombres (entiers ou réels) Scalaires $chaine = une chaine\n Opérateurs + - * / ** % Comparaison < > <= >= ==!= Chaînes de caractères Simple ou double quote selon interprétation ou non Opérateurs Comparaison Fonctions de manipulations. (concaténation) lt gt le ge eq ne chomp($chaine); # retire le caractère de fin de ligne split(/ /, $chaine);# découpe la chaine length($chaine);# retourne la longueur de la chaine substr($chaine, 1, 3);# retourne la sous-chaine index($chaine,, 1);# retourne l indice de la 1e occurrence rindex($chaine, );# retourne l indice de la dernière occurrence 4

Tableaux Définition des variables Accès aux données @tab = (3, chaine ); print $tab[1]; $tab[0] = 10; $tab[-1] = 2; print scalar(@tab);# affiche la taille du tableau Fonctions de manipulation push(@tab, 20);# ajoute en fin pop(@tab);# supprime en fin unshift(@tab, 0);# ajoute en tête shift(@tab);# supprime en tête join(,@tab);# concatène les éléments 5

Tableaux associatifs Définition des variables %hash = ( id1 =>1, id2 => chaine, id3 =>(1,2)); Accès aux données $hash{ id4 }=250; Fonction de manipulation keys(%hash);# renvoie les clés values(%hash);# renvoie les valeurs each(%hash);# renvoie les couples (clé, valeur) delete(%hash, id1 );# supprime la valeur liée à la clé exists($hash{cle});# test si clé existe dans la table 6

Perl Orienté Objet - BioPerl Rappels de Perl Types de données Structures de contrôle Manipulation de fichiers Expressions régulières Définitions de fonctions Références Modules Programmation Orientée Objet BioPerl http://formation-perl.fr/guide-perl.pdf 7

Tests if (expression booléenne) { instructions; }elsif (exppression booléenne) { instructions; }else{ instructions; } unless (expression booléenne){ instructions; }else{ instructions; } 8

Boucles while (condition){ } instructions; until (condition){ } instructions; for(initialisation; condition; incrément){ } instructions; foreach variable (liste) { } instructions; next # fin d exécution du bloc d instructions last # fin de la boucle redo # redémarrage du bloc d instructions 9

Perl Orienté Objet - BioPerl Rappels de Perl Types de données Structures de contrôle Manipulation de fichiers Expressions régulières Définitions de fonctions Références Modules Programmation Orientée Objet BioPerl http://formation-perl.fr/guide-perl.pdf 10

Fichiers Ouverture open(file, nom du fichier ) or die( open: $! );# ouvre en lecture ou met fin du programme open(file, >nom du fichier );# ouvre en écriture Lecture while($ligne = <FILE>){ instructions; } Écriture print FILE chaine à écrire\n ; Fermeture close(file); 11

Opérateurs sur les noms de fichiers/dossiers if(-e chemin_fichier) # teste si chemin_fichier est un chemin valable dans le système de fichier if(-f chemin_fichier) # teste si c est un fichier normal if(-d chemin) # teste si c est un répertoire if(-r chemin) # teste s il y a les droits de lecture if(-w chemin) # teste s il y a les droits d écriture if(-x chemin) # teste s il y a les droits d exécution if(-z chemin) # teste si le fichier est vide if(-s chemin) # teste si le fichier est non vide et renvoie sa taille 12

Perl Orienté Objet - BioPerl Rappels de Perl Types de données Structures de contrôle Manipulation de fichiers Expressions régulières Définitions de fonctions Références Modules Programmation Orientée Objet BioPerl http://formation-perl.fr/guide-perl.pdf 13

Expressions régulières Vérification de la présence d un motif m/motif/ Substitution d un motif s/motif/chaine_rempl/ Liaison entre une variable et une expression =~ $v =~ m/motif/ # vérifie si la variable contient le motif $v =~ s/motif/rempl # remplace la première occurrence du motif par le remplaçant 14

Ensembles. # caractère quel qu il soit (sauf \n) [caractères]# un caractère parmi ceux entre crochets [c1-c2] # intervalles de caractères entre c1 et c2 [^ensemble] # complémentaire de l ensemble Exemples [qjk] # soit q, soit j, soit k [^qjk] # ni q, ni j, ni k [a-z] # tout caractère compris entre a et z [^a-z] # aucun caractère compris entre a et z [a-za-z] # tous les caractères Alpha, sans accents [a-z]+ # toute chaîne de a-z non vide 15

Quantificateurs Application au motif atomique précédent Spécification du nombre de fois où le motif peut/doit être présent + # une occurrence ou plus de l expression * # zéro ou plusieurs occurrences? # zéro ou une occurrences {n} # n fois exactement {n,} # au moins n fois {,n} # au plus n fois {n,m} # entre n et m fois 16

Raccourcis pour des ensembles courants \d #tout chiffre, équivalent à [0-9] \D #aucun chiffre, équivalent à [^0-9] \w #tout caractère alphanumérique, équivalent à [0-9a-zA-Z_] \W #aucun caractère alphanumérique, équivalent à [^0-9a-zA-Z_] \s #tout espacement, équivalent à [ \n\t\r\f] \S #aucun séparateur, équivalent à [^ \n\t\r\ 17

Divers Caractères spéciaux : besoin de despécifier avec \ \ ( ) [ ] { } ^ $ * +? Alternatives option1 option2 # choix entre option1 et option2 Assertions : position dans l expression ^ # début de la chaine $ # fin de la chaine 18

Perl Orienté Objet - BioPerl Rappels de Perl Types de données Structures de contrôle Manipulation de fichiers Expressions régulières Définitions de fonctions Références Modules Programmation Orientée Objet BioPerl http://formation-perl.fr/guide-perl.pdf 19

Fonctions Définition sub nom_fonction{ instructions; } Arguments d une fonction contenues dans la variable @_ Valeur de retour d une fonction précédée de l instruction return Appel de fonction $resultat = nom_fonction(arguments) 20

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Références sur scalaire Références sur tableau Références sur tableau d association Passage de référence à une fonction Modules Programmation Orientée Objet BioPerl 21

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Références sur scalaire Références sur tableau Références sur tableau d association Passage de référence à une fonction Modules Programmation Orientée Objet BioPerl 22

Références sur les scalaires 23

Utilisation des références vers les scalaires Modification dans une fonction sub fonction{ my ($ref) = @_; $$ref = 0; } fonction($refv); # ou fonction(\$v) Génération de référence sur scalaire sub fonction2{ my $w = 43; return \$w; } my $reff = fonction2(); # référence vers une variable scalaire valant 43 24

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Références sur scalaire Références sur tableau Références sur tableau d association Passage de référence à une fonction Modules Programmation Orientée Objet BioPerl 25

Références sur les tableaux 26

Equivalence de notations Tableau Référence \@t $reft @t @$reft $t[i] $$reft[i] $reft->[i] 27

Tableaux de tableaux 28

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Références sur scalaire Références sur tableau Références sur tableau d association Passage de référence à une fonction Modules Programmation Orientée Objet BioPerl 29

Références sur les tableaux d association 30

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Références sur scalaire Références sur tableau Références sur tableau d association Passage de référence à une fonction Modules Programmation Orientée Objet BioPerl 31

Equivalence de notations Tableau Référence \%h $refh %h %$refh $h{paul} $$refh{paul} $refh->{paul} 32

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Références sur scalaire Références sur tableau Références sur tableau d association Passage de référence à une fonction Modules Programmation Orientée Objet BioPerl 33

Passage de référence à une fonction 34

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Modules Programmation Orientée Objet BioPerl 35

Module Fichier Perl regroupant un ensemble de variables et de fonctions Nommé Nom_du_module.pm Structure # --fichier Nom_du_module.pm package Nom_du_module; sub fonction1 { } our $variable; 1; Utilisation use Nom_du_module; Nom_du_module::fonction1(Nom_du_module::$variable); 36

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Modules Programmation Orientée Objet BioPerl 37

Programmation orientée objet Question de bases Quelles sont les données du problème? Notion d objets auxquelles sont affectés Variables/attributs (propriétés) Fonctions/actions (méthodes) Paradigme de programmation qui consiste à Encapsuler les données dans une structure appelée classe Associer des méthodes (sous-programmes) de traitement des attributs de la classe 38

Exemple de classe Classe «Employe» Propriétés Nom Salaire, Méthodes Récupération des informations Augmentation salaire, Embauche d un nouvel employé : création d une nouvelle instance (ou nouvel objet) de la classe en renseignant les différentes propriétés 39

Création d une classe en Perl Choix du nom de la classe Définition du module correspondant Définition des attributs de la classe Définition des constructeurs Création d une référence vers un tableau associatif Stockage des attributs de l objet dans le tableau associatif Clé : nom de l attribut Valeur : valeur de l attribut Association de cette référence au module avec bless Définition des autres méthodes de la classe Interface entre les objets et le programme Perl de l utilisateur 40

Écriture du constructeur Fichier Employe.pm 41

Appel du constructeur Fichier script.pl 42

Écriture de méthodes # Augmentation de salaire sub augmentation_salaire { my ($this, $pourcentage) = @_; my $p = (100+$pourcentage)/100; $this->{salaire} = $this->{salaire}*$p; } # Récupération des informations sous forme de chaine sub recuperation_info{ my ($this) = @_; return $this->{nom}." ".$this->{salaire}; } Fichier Employe.pm print $e1->recuperation_info(), "\n"; $e1->augmentation_salaire(2.0); print $e1->recuperation_info(), "\n"; Fichier script.pl 43

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Modules Programmation Orientée Objet BioPerl Bio::Seq Bio::SeqIO Bio::DB Bio::SearchIO 44

BioPerl Ensemble de modules Perl dédiés à la bioinformatique qui permettent de Lire, écrire, traduire, manipuler des séquences Accéder à des bases de données Rechercher des séquences Rechercher des gènes Manipuler des alignements Lire des structure 3D Documentation http://doc.bioperl.org/bioperl-live/ 45

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Modules Programmation Orientée Objet BioPerl Bio::Seq Bio::SeqIO Bio::DB Bio::SearchIO 46

Bio::Seq Classe permettant de représenter une séquence de nucléotides ou d acides aminés use Bio::Seq; my $sequence_objet = Bio::Seq->new( -seq => ACTGTGTGTCC, -id => Chlorella sorokiniana, -accession_number => CAA41635 ); 47

Méthodes de Bio::Seq $sequence_objet->seq(); $sequence_objet->subseq(5,10); $sequence_objet->accession_number();#identifiant $sequence_objet->alphabet(); #dna, rna ou protein $sequence_objet->seq_version(); $sequence_objet->keywords(); $sequence_objet->length(); $sequence_objet->desc();#description $sequence_objet->primary_id();#identifiant unique $sequence_objet->display_id();#identifiant $sequence_objet->revcom;#complement $sequence_objet->translate;#traduction $sequence_objet->get_seqfeatures();#caractéristiques 48

Plusieurs types de séquences Bio::Seq::PrimarySeq Version simplifiée de Bio::Seq Bio::Seq::LocatableSeq Bio::Seq::RelSegment Bio::Seq::Quality Bio::Seq::PrimaryQual Version simplifiée de Bio::Seq::Quality 49

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Modules Programmation Orientée Objet BioPerl Bio::Seq Bio::SeqIO Bio::DB Bio::SearchIO 50

Bio::SeqIO Classe permettant de lire (ou écrire) une séquence depuis (ou vers) un fichier Plusieurs formats pris en compte clustalw emboss fasta mega nexus quality 51

Exemple de lecture/écriture 52

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Modules Programmation Orientée Objet BioPerl Bio::Seq Bio::SeqIO Bio::DB Bio::SearchIO 53

Bio::DB Classe permettant d accéder aux bases de données GenBank GenPept SwissProt RefSeq EMBL Bio::DB::GenBank Bio::DB::GenPept Bio::DB::SwissProt Bio::DB::RefSeq Bio::DB::EMBL 54

Exemples d accès à GenBank 55

Perl Orienté Objet - BioPerl Rappels de Perl http://formation-perl.fr/guide-perl.pdf Références Modules Programmation Orientée Objet BioPerl Bio::Seq Bio::SeqIO Bio::DB Bio::SearchIO 56

Bio::SearchIO Classe séparant les comptes-rendus de «recherche» en une hiérarchie de composants Modules supportés Blast, fasta, blasttable, blastxml, erpin, infernal, megablast, psl, waba, axt, 57

Exemples de parcours d un fichier issu d une requête Blast 58

Méthodes des objets Result $result->algorithm();#algorithme utilisé $result->algorithm_version();#version de l algorithme $result->query_name();#nom de la requête $result->query_accession();#numéro d accession de la requête $result->query_length();#longueur de la requête $result->query_description();#description de la requête $result->database_name();#nom de la base de données $result->database_letters();#nombre de résidus dans la base de données $result->database_entries();#nombre d entrées dans la base de données $result->available_statistics();#statistiques utilisées $result->available_parameters();#paramètres utilisés $result->num_hits();#nombre de hits $result->hit();#liste des hits 59

Méthodes des objets Hit $hit->name();#nom du hit $hit->length();#longueur de la séquence hit $hit->accession();#numéro d accession $hit->description();#description du hit $hit->algorithm();#algorithme $hit->raw_score();#score brut $hit->significance();#signification $hit->hsps();#liste des hsp $hit->num_hsps();#nombre de hsp $hit->locus();#nom du locus $hit->accession_number();#numéro d accession 60

Méthodes des objets HSP $hsp->algorithm();#algorithme $hsp->evalue();#e-value $hsp->expect();#alias pour e-value $hsp->frac_identical();#proportion d identité $hsp->frac_conserved();#proportion de conservation $hsp->gaps();#nombre de gaps $hsp->query_string();#chaine de requête pour alignement $hsp->hit_string();#chaine des hits pour alignement $hsp->homology_string();#chaine pour alignement $hsp->length( total );#longueur du HSP (avec gaps) $hsp->length( hit );#longueur du hit participant à l alignement sans les gaps $hsp->length( query );#longueur de la requête participant à l alignement sans les gaps $hsp->hsp_length();même chose que length( total ) $hsp->frame(); 61

Méthodes des objets HSP $hsp->num_conserved();#nombre de résidus conservés $hsp->num_identical();#nombre de résidus identiques $hsp->rank();#rang du HSP $hsp->seq_inds( query, identical );#positions identiques dans la requête $hsp->seq_inds( query, conserved-notidentical );#positions conservés mais pas identiques identiques dans la requête $hsp->seq_inds( query, conserved );#positions conservées identiques dans la requête $hsp->seq_inds( hit, identical );#positions identiques dans le hit $hsp->seq_inds( hit, conserved-not-identical ); #positions conservés mais pas identiques identiques dans le hit $hsp->seq_inds( hit, conserved ); #positions conservées identiques dans le hit $hsp->score;#score $hsp->range( query );#début et fin de la requête $hsp->range( hit ); #début et fin du hit 62

Méthodes des objets HSP $hsp->percent_identity();#pourcentage d identité $hsp->strand( hit );#brin du hit $hsp->strand( query );#brin de la requête $hsp->start( hit );#début du hit $hsp->start( query );#début de la requête $hsp->end( hit );#fin du hit $hsp->end( query );#fin de la requête $hsp->matches( hit ); #nombre de positions identiques et conservées pour le hit $hsp->matches( query ); #nombre de positions identiques et conservées pour la requête $hsp->get_aln;#alignement : objet Bio::SimpleAlig 63