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 et calculs d'index


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut expression régulière et calculs d'index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    use strict;
    my $seq = '..............AGCT...TGT.AAGTCG...TTTT.......';
    my ($depart, $fin) = ($seq =~ /^(\.*)[A-Z].*[A-Z](\.*)$/i);
    my $index_depart = length($depart);
    my $index_fin = length($seq) - length($fin) - 1;
    print "$depart => $index_depart\n $fin => $index_fin\n\n";
     
    my @array_seq = split ('', $seq);
    my $premier_nuc = $array_seq[$index_depart];
    my $dernier_nuc = $array_seq[$index_fin];
    print "premier nucléotide = $premier_nuc\ndernier nucléotide = $dernier_nuc\n\n";
    J'aimerais récupérer la position du premier et du dernier nucléotide de ma séquence. N'y aurait-il pas moyen d'améliorer mon code?
    En tenant compte du fait que mes séquences font environ 5000 caractères (points compris), cette façon de procéder est-elle la meilleure?

    Je me demandais aussi au niveau temps de calcul de l'expression régulière si je mets [A-Z] le programme va t'il devoir faire 26 tests ou y a-t'il un code spécial dans l'écriture binaire des lettres permettant de directement voir si c'est une lettre? Peut-être est ce mieux que je mette [ATCGN] vu que je sais qu'aucune autre lettre n'est présente dans mes séquences.


    Merci pour vos conseils,

  2. #2
    Membre éclairé
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Par défaut
    Bonjour Jasmine

    Une notation spéciale "\w" au lieu de [A-Z] sinon?

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    \w? Penses-tu que c'est mieux? \w teste si le caractère est un caractère alphanumérique ou un underscore, pourquoi serait-ce mieux?

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Tous les tests de classes de caractères sont compilés pour ne prendre qu'une instruction, ne vous inquiétez pas, ils sont très performants.

    Quant à la question initiale, j'aurais plutôt fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my ($first_nuc, $last_nuc) = ($seq =~ m/^ \.* ([ATCGN]) .* ([ATCGN]) \.* $/x);
    my ($first_pos, $last_pos) = ($-[1], $-[2]);
    --
    Jedaï

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Je ne connaissais pas $-[2] et $-[1].
    Je vais essayer d'en comprendre le fonctionnement. Merci.

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Cela fonctionne très bien merci.
    J'ai lu que x permettait de mettre des commentaires et des espaces entre les expressions régulières afin de les rendre plus lisibles
    Comment met-on des commentaires à l'intérieur de l'expression régulière?

    Merci pour votre aide.

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

Discussions similaires

  1. [Expressions Réguliéres]indexation page html
    Par PadawanProg dans le forum Général Python
    Réponses: 2
    Dernier message: 29/10/2005, 04h20
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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