IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bioinformatique Perl Discussion :

[bioinfo] reverse complementaire d'une sequence


Sujet :

Bioinformatique Perl

  1. #1
    Membre du Club Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 62
    Points
    62
    Par défaut [bioinfo] reverse complementaire d'une sequence
    coucou


    Je souhaite faire la "reverse complementaire" de motifs contenus dans un tableau (@tab) en utilisant le module Bio::Seq et la methode revcom.
    Seulement je dois declarer la variable qui contient les elements du tableau comme objet...
    J'ai essayé cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
               for ($i=0, $i<=$#$tab, $i++) {
                             $seqobj=Bio::Seq -> new (-seq => $tab[$i]);
                            @tabrev=revcom($seqobj);
                          }
    Mais ca ne marche pas...voici le mess d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Undefined subroutine &Bio::Seq called at ./fasta_5.pl line 296.
    :

    Perlgirl
    Perlgirl

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    bonjour,

    voici un bout de code fonctionnel, cela devrait eclairer votre lanterne.
    ne pas oublier le use Bio::Seq; ,c'est cette ligne qui vous permet ensuite de faire appel a toutes les fonctions de Bio::Seq

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    #!/bin/perl -w
     
    use strict;
    use diagnostics;
    use warnings;
    use Bio::Seq;
     
    my $seqobj=Bio::Seq->new (-seq => 'ATGCATGCGGGGG');#creation d'un objet sequence
     
    my $sequence = $seqobj->seq(); #on recupere la sequence de l'objet dans $sequence
    print "Sequence:$sequence\n";#test
     
    my $seqobj_bis = $seqobj->revcom(); #creation d'un nouvel objet sequence ($seqobj_bis correspond a un objet et non pas directement a la sequence reverse complement)
    my $rev_comp = $seqobj_bis->seq();#on recupere la sequence revcomp dans la variable $rev_comp
    print "Sequence Reverse Complement:$rev_comp\n";#test
    ce code affiche ceci :
    Sequence:ATGCATGCGGGGG
    Sequence Reverse Complement:CCCCCGCATGCAT

    ce qui me semble ok !
    n'hesitez pas en cas de question

    De plus amples explications sans les cours de formation et les tutoriels pour bien apprendre Perl par ici : http://perl.developpez.com/cours/

  3. #3
    Membre du Club Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 62
    Points
    62
    Par défaut
    Merci pour la reponse, je suis tout a fait d'accord avec ce script. Seulement au lieu de rentrer une sequence "fixe" je voudrais qu'il prenne en compte une variable et c'est là que ca coince .
    C'est à dire qu'a la place de ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $seqobj=Bio::Seq->new (-seq => 'ATGCATGCGGGGG');#creation d'un objet sequence
    Je voudrais qu'il prenne une sequence contenue dans une variable ($sequence)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $seqobj=Bio::Seq->new (-seq => '$sequence');#creation d'un objet sequence
    Pour resumer j'aimerai faire l'inverse complementaire d'un ensemble de sequence contenu dans un tableau...

    Perlgirl
    Perlgirl

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    ca marche aussi avec un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    #!/bin/perl -w
     
    use strict;
    use diagnostics;
    use warnings;
    use Bio::Seq;
     
    my @tab = qw (atgc ggggg cgcgcgggggg);
    for (my $i=0; $i<=$#tab; $i++) {
      my $seqobj=Bio::Seq->new (-seq => $tab[$i]);#creation d'un objet sequence
      my $sequence = $seqobj->seq(); #on recupere la sequence de l'objet dans $sequence
      print "Sequence_$i:$sequence\n";#test
      my $seqobj_bis = $seqobj->revcom(); #creation d'un nouvel objet sequence ($seqobj_bis correspond a un objet et non pas directement a la sequence reverse complement)
      my $rev_comp = $seqobj_bis->seq();#on recupere la sequence revcomp dans la variable $rev_comp
      print "Sequence_$i Reverse Complement:$rev_comp\n";#test
    }
    j'ai comme sortie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sequence_0:atgc
    Sequence_0 Reverse Complement:gcat
    Sequence_1:ggggg
    Sequence_1 Reverse Complement:ccccc
    Sequence_2:cgcgcgggggg
    Sequence_2 Reverse Complement:ccccccgcgcg
    Attention, avec '$sequence' la variable ne sera pas interpretee (ne pas encadrer par les ')
    et il faut toujours utiliser use strict et l'option -w

  5. #5
    Membre du Club Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 62
    Points
    62
    Par défaut
    Merci beaucoup!!!!!!!!!!! ca marcheuuuuu

    Par contre quand j'utilise "use strict" ca ne marche plus et ca m'affiche toute une liste d'erreurs alors que quand il est desactivé tout s'affiche correctement!!!!! Pourquoi :


    Perlgirl
    Perlgirl

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 90
    Points : 96
    Points
    96
    Par défaut
    bonjour


    "use strict" restreint les constructions non sûres !!! (c'est dans la doc) et en particulier ca rend la déclaration des variables obligatoires.

    en fait il faut (presque) toujours l'utiliser car ca permet de debusquer un ensemble d'erreur dans le code.

    par exemple a cette adresse on trouve un exemple du bienfait de "use strict"


    code sans "use strict" (ca fonctionne -c'est a dire que le script "tourne"- mais c'est faux)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #!/usr/local/bin/perl
    my $Compteur=10;
    $compteur++;               # erreur de frappe
    print ('$Compteur = ',"$Compteur \n");
    #     La valeur affichée est 10, le programmeur
    #     peut ne pas s'en apercevoir.
    avec "use strict" on s'apercoit du probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    #!/usr/local/bin/perl
    use strict;
    my $Compteur=10;
    $compteur++;               # erreur de frappe
    print ('$Compteur = ',"$Compteur \n");
    # Un message d'erreur est généré à la compilation :
    # Global symbol "$compteur" requires explicit package name

  7. #7
    Membre du Club Avatar de perlgirl
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 123
    Points : 62
    Points
    62
    Par défaut
    Oui en effet je viens d'aller voir la doc entre temps et c'est bien ça...j'ai pleins de variables qui ne sont pas déclarées...

    Merci encore pour tous ses précieux conseils

    perlgirl
    Perlgirl

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Fichier] Chercher et remplacer une sequence
    Par maximus001ma dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 25/01/2006, 16h08
  2. Droper une sequence.
    Par Tchinkatchuk dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 27/04/2005, 10h50
  3. [XSD] Elements de meme nom dans une sequence
    Par MathiasM dans le forum Valider
    Réponses: 2
    Dernier message: 14/04/2005, 09h33
  4. [PL/SQL] Recuperer le nouveau numero d'une sequence
    Par Tofalu dans le forum Oracle
    Réponses: 3
    Dernier message: 23/02/2005, 11h47
  5. peut-on savoir si un champ a une sequence??
    Par e11137 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/01/2004, 14h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo