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 :

récupérer les positions d'un motif dans un promoteur


Sujet :

Bioinformatique Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Par défaut récupérer les positions d'un motif dans un promoteur
    Bonjour à tous,

    voilà, j'ai des listes de promoteurs au format fasta, et je dois chercher dedans des motifs.

    En fait, il s'agit de LOGO au départ, c'est à dire d'une image de ce type là : Nom : logo.png
Affichages : 148
Taille : 18,0 Ko avec différentes bases possibles pour chaque position.

    Du coup, je pensais utiliser des expressions régulières pour rechercher ces motifs dans mes promoteurs. Je sais comment récupérer la liste des motifs qui matchent, mais je ne sais pas la manière de récupérer leur position dans ma séquence.

    Je n'ai pas encore commencé à coder, je commence par réfléchir à la meilleure manière de faire, donc toute idée sera la bienvenue

  2. #2
    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
    Regarde les modules Bio::Seq, Bio::Tools::IUPAC, Bio::Grep ça devrait t'aider (peut-être pas dans ce cas-ci mais de façon générale si tu as l'habitude de manipuler des séquences d'ADN). Pour le fichier fasta, ouvre le avec le module Bio::SeqIO


    Exemple de script :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #!/usr/bin/perl/
     
     
    use strict;
    use warnings;
     
     
    use Bio::Seq;
    use Bio::Tools::IUPAC;
     
     
    my $ambiseq = Bio::Seq->new(-seq => 'atcgMtgatagcRcgtc', -alphabet => 'dna');
    my $stream  = Bio::Tools::IUPAC->new(-seq => $ambiseq);
     
    my @primer_list;
    while (my $uniqueseq = $stream->next_seq()) {
    	push @primer_list, $uniqueseq->seq;
    }
     
    my $rx = join '|', @primer_list;
    print "\nrx : $rx\n\n";
     
     
    my $seq = 'cccccATCGCTGATAGCACGTCcggggggggatcgatgatagctcATCGCTGATAGCGCGTCgatgatagctcgtctttATCGCTGATAGCGCGTC';
     
     
    # primer start-end postions
    while ($seq =~ m/($rx)/gi){
    	print "$1\t$-[0]\t$+[0]\n";
    }
    sortie :
    rx : ATCGATGATAGCACGTC|ATCGCTGATAGCACGTC|ATCGATGATAGCGCGTC|ATCGCTGATAGCGCGTC

    ATCGCTGATAGCACGTC 5 22
    ATCGCTGATAGCGCGTC 45 62
    ATCGCTGATAGCGCGTC 79 96

    Vu que tu arrives à récupérer la liste de tes motifs, il te suffit de créer la regexp correspondante (si possible en commençant par les motifs les plus probables)


    nb :
    équivaut à
    J'avais testé les performances de ces 2 regexp et la première était la plus rapide mais ça dépend peut-être du cas.

  3. #3
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Regarde les modules Bio::Seq, Bio::Tools::IUPAC, Bio::Grep ça devrait t'aider (peut-être pas dans ce cas-ci mais de façon générale si tu as l'habitude de manipuler des séquences d'ADN). Pour le fichier fasta, ouvre le avec le module Bio::SeqIO

    Bah en fait, j'ai pas l'habitude de manipuler les séquences d'ADN : c'est la première fois que je le fais, et sans doute la dernière vu que mon contrat se termine en septembre

    C'est d'ailleurs pour ça que j'ai d'abord pensé à utilisé les Regexp avant de penser qu'il y avait sans doute des modules existant pour ça.

    Citation Envoyé par Jasmine80 Voir le message

    Vu que tu arrives à récupérer la liste de tes motifs, il te suffit de créer la regexp correspondante (si possible en commençant par les motifs les plus probables)
    nb :
    équivaut à
    J'avais testé les performances de ces 2 regexp et la première était la plus rapide mais ça dépend peut-être du cas.
    Je n'ai encore rien codé du tout, je suis pour l'instant en phase de trouver le meilleur moyen d'arriver à ce que je veux.
    Du coup, si je comprends bien, le script que tu me proposes permets à la base de chercher une liste de primer dans une séquence. Il suffira donc que je l'adapte en changeant la liste de primer par la liste des regexps correspondant à mes motifs. C'est bien ça?

    J'avais déjà écrit mes regexp avec des crochets, si je comprends bien l'utilisation du pipe permet de définir les différentes possibilités de motifs, plutôt que de définir les différentes possibilités de lettre à chaque position?
    Mais du coup, sur un motif de 8 bases, avec 2 ou 3 possibiltés pour quasiment chaque base, le nombre de possibilité différentes est énorme Et ça va pas être trivial d'être sur de pas en oublier
    Du coup, je suis pas sur que ça soit adapté ici...

  4. #4
    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
    Citation Envoyé par zaboug Voir le message
    Du coup, si je comprends bien, le script que tu me proposes permets à la base de chercher une liste de primer dans une séquence. Il suffira donc que je l'adapte en changeant la liste de primer par la liste des regexps correspondant à mes motifs. C'est bien ça?
    Oui, exactement. Sinon, Bio::Grep est un module permettant la recherche de motifs dans des séquences, mais je suis sous Windows et je n'ai pas pu l'installer. Donc, quand je dois faire cela, j'utilise simplement des regexp.

    Citation Envoyé par zaboug Voir le message
    J'avais déjà écrit mes regexp avec des crochets, si je comprends bien l'utilisation du pipe permet de définir les différentes possibilités de motifs, plutôt que de définir les différentes possibilités de lettre à chaque position?
    Oui et ça permet d'être plus précis

    par exemple
    sera différent de :
    car le nombre de motifs possibles via la première regexp est de 4 et non de 2. Il faut donc faire attention aux crochets et s'assurer que ça correspond bien à ce que l'on veut.

    Citation Envoyé par zaboug Voir le message
    Mais du coup, sur un motif de 8 bases, avec 2 ou 3 possibiltés pour quasiment chaque base, le nombre de possibilité différentes est énorme Et ça va pas être trivial d'être sur de pas en oublier
    Du coup, je suis pas sur que ça soit adapté ici...
    Dans ton cas, si ce que tu récupères n'est pas une liste de motifs mais est une liste de nucléotides possibles par position, l'utilisation de crochets est préférable. Ne t'inquiète pas pour ce qui est des performances, perl est très rapide avec les regexp.

  5. #5
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message

    Dans ton cas, si ce que tu récupères n'est pas une liste de motifs mais est une liste de nucléotides possibles par position, l'utilisation de crochets est préférable. Ne t'inquiète pas pour ce qui est des performances, perl est très rapide avec les regexp.
    En fait, le but est de récupérer dans une liste de promoteur les séquences qui matchent avec mon motif, et leur position dans la séquence.

    Par Exemple, voici une des Regexp que j'ai écrite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m/[GAT][GA]G[GT][CAT][GTC][GC][GAC]/
    Cette regexp correspond à un logo qui montre qu'il y a soit un G, soit un A, soit un T en première position, soit un G, soit un A en deuxième position, un G en troisième position, etc...

    Imaginons maintenant que l'un de mes promoteur soit ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $seq = AGGTCTGGATGCGTAGAGTTTGGTTGCGT;
    J'aimerais que le programme renvoie un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Le motif 1 a été trouvé dans seq1 aux positions suivantes:
    1 : AGGTCTGG
    15 : GAGTTTGG
    Voilà, c'était juste pour bien définir l'objectif.

    Maintenant, je pense pouvoir me débrouiller avec ton script et tes conseils

  6. #6
    Membre éclairé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Par défaut
    Je viens juste de voir lamanière dont tu récupères les positions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # primer start-end postions
    while ($seq =~ m/($rx)/gi)
    {
    	print "$1\t$-[0]\t$+[0]\n";
    }
    ça marche, c'est indéniable (je viens de tester ton script ), mais peux tu m'expliquer le fonctionnement (ou la doc qui le dit) des signes $-[0] et $+[0]?

    Je ne les trouve pas dans mon tutoriel de référence

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/09/2006, 00h33
  2. Réponses: 2
    Dernier message: 15/09/2006, 13h18
  3. [VB.NET]Récupérer les variables d'un XML dans VB
    Par Yanos dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/07/2006, 09h21
  4. Récupérer les valeurs d'un noeud dans un fichier XML
    Par yosthegost dans le forum Delphi
    Réponses: 1
    Dernier message: 30/05/2006, 18h38
  5. Récupérer les valeur d'un énuméré dans une string
    Par Oliv_75 dans le forum SL & STL
    Réponses: 5
    Dernier message: 28/09/2005, 01h55

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