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

Langage Perl Discussion :

expression régulière, récupération d'une liste de positions


Sujet :

Langage Perl

  1. #1
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut expression régulière, récupération d'une liste de positions
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    my $pattern = 'ATG';
    my $seq = 'AGATGCTTAATTCATTATGAGCTCTGACTGCAACGGGCAATATGATGTCTC';
     
    my @A_Amorces;
     
    foreach ($seq =~ m/($pattern)/gi){
    	push (@A_Amorces,  $-[0]);
    }
     
    map {print $_."\n"} @A_Amorces;
    Comment récupérer la liste des positions des occurrences de 'ATG' dans ma séquence.


    Merci.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Tu avais déjà posé ce genre de question sur le forum je crois. Faudrait faire une recherche sur le forum.

  3. #3
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par djibril Voir le message
    Tu avais déjà posé ce genre de question sur le forum je crois. Faudrait faire une recherche sur le forum.

    Oui, peut-être ...

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    je dois faire quelque chose de ce genre :
    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
    my $pattern = 'ATG';
    my $seq = 'AGATGCTTAATTCATTATGAGCTCTGACTGCAACGGGCAATATGATGTCTC';
     
    my @A_Amorces;
     
    really_all_matches { print $-[0]."\n" } \$seq, qr/($pattern)/i; 
     
     
    sub really_all_matches (&$$) {
    	my ($code, $ref_str, $regex) = @_;
     
    	while( $$ref_str =~ m/$regex/g ) {
    		$code->();
    		pos($$ref_str) = $-[0] + 1;
    	}
    }
    ... ça fonctionne, mais ça me parait compliqué.

    http://www.developpez.net/forums/d72...erche-globale/

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/perl
     
    use strict;
    use warnings;
     
    my $pattern = 'ATG';
    my $seq = 'AGATGCTTAATTCATTATGAGCTCTGACTGCAACGGGCAATATGATGTCTC';
     
    my @pos;
    push @pos, pos($seq)-length($pattern) while $seq =~ /($pattern)/g;
     
    print join ", ", @pos;
    print "\n";

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    En cherchant le mot position dans le forum avec la fonction recherchez, voici déjà plusieurs postes et il y en a d'autres :


    voilà, tu devrais trouver ton bonheur.

    Afin d'éviter à avoir des questions récurrentes et perdre du temps à rechercher les vieux postes, il y a une rubrique source pour les codes. D'où tout l'intérêt de faire des propositions de codes fonctionnels. Ca aide tout le monde et lorsque l'on a besoin de retrouver un code qui fonctionne, on sait où piocher facilement .

  7. #7
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/perl
     
    use strict;
    use warnings;
     
    my $pattern = 'ATG';
    my $seq = 'AGATGCTTAATTCATTATGAGCTCTGACTGCAACGGGCAATATGATGTCTC';
     
    my @pos;
    push @pos, pos($seq)-length($pattern) while $seq =~ /($pattern)/g;
     
    print join ", ", @pos;
    print "\n";

    Merci beaucoup, c'est vrai que c'est beaucoup plus simple

  8. #8
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    push @pos, pos($seq)-length($pattern) while $seq =~ /($pattern)/g;;
    Au lieu de pos($seq)-length($pattern), je peux utiliser $-[0]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    push @pos, $-[0]  while $seq =~ m/$pattern/g;

  9. #9
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Si le motif peut se "répéter lui même" (par exemple, le motif "GG"), il faut alors plutôt utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    push @pos, pos($seq)-1 while ($seq =~ /\G.*?($pattern)/g) && (pos($seq) -= length($pattern) - 1);
    (visiblement, quand on touche à pos, on ne peut plus utiliser @- correctement, donc je laisse pos($seq)-1 )

  10. #10
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Si le motif peut se "répéter lui même" (par exemple, le motif "GG"), il faut alors plutôt utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    push @pos, pos($seq)-1 while ($seq =~ /\G.*?($pattern)/g) && (pos($seq) -= length($pattern) - 1);
    (visiblement, quand on touche à pos, on ne peut plus utiliser @- correctement, donc je laisse pos($seq)-1 )

    Merci pour cette précision, de fait ça ne va pas si les motifs se chevauchent

  11. #11
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Avec la deuxième implémentation, c'est pris en compte.

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 05/12/2008, 10h45
  2. Récupération d'une liste déroulante
    Par artotal dans le forum Langage
    Réponses: 1
    Dernier message: 28/10/2006, 23h29
  3. Récupération d'une liste de structures Oracle via Java
    Par MagikMarcel dans le forum Langage
    Réponses: 2
    Dernier message: 29/06/2006, 16h34
  4. expression reguliere appliquée sur une liste deroulante
    Par 18Marie dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/06/2006, 23h23
  5. Réponses: 2
    Dernier message: 03/11/2005, 15h03

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