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

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    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 : 126
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 é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
    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.
    -- Jasmine --

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    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 é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 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.
    -- Jasmine --

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    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 habitué
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2008
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Val d'Oise (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    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

  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 zaboug Voir le message
    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
    ... oui, j'aurais plutôt dû écrire print "$1\t$-[1]\t$+[1]\n"; pour rester logique car $-[1] et $+[1] sont pour $1, $-[2] et $+[2] sont pour $2 ...
    Ca utilise la fonction pos() qui renvoie pour chaque match la position de départ et de fin du motif trouvé... c'est Jedaï qui m'avais donné un lien, je vais essayer de le retrouver, ça doit venir de perldoc.
    -- Jasmine --

  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
    doc : perlvar

    # @LAST_MATCH_START
    # @-

    $-[0] is the offset of the start of the last successful match. $-[n] is the offset of the start of the substring matched by n-th subpattern, or undef if the subpattern did not match.

    Thus after a match against $_, $& coincides with substr $_, $-[0], $+[0] - $-[0] . Similarly, $n coincides with substr $_, $-[n], $+[n] - $-[n] if $-[n] is defined, and $+ coincides with substr $_, $-[$#-], $+[$#-] - $-[$#-] . One can use $#- to find the last matched subgroup in the last successful match. Contrast with $#+ , the number of subgroups in the regular expression. Compare with @+ .

    This array holds the offsets of the beginnings of the last successful submatches in the currently active dynamic scope. $-[0] is the offset into the string of the beginning of the entire match. The nth element of this array holds the offset of the nth submatch, so $-[1] is the offset where $1 begins, $-[2] the offset where $2 begins, and so on.
    @+

    This array holds the offsets of the ends of the last successful submatches in the currently active dynamic scope. $+[0] is the offset into the string of the end of the entire match. This is the same value as what the pos function returns when called on the variable that was matched against. The nth element of this array holds the offset of the nth submatch, so $+[1] is the offset past where $1 ends, $+[2] the offset past where $2 ends, and so on. You can use $#+ to determine how many subgroups were in the last successful match. See the examples given for the @- variable.
    -- Jasmine --

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    Par défaut
    Bien, on avance on avance

    j'ai réussi à extraire mes motifs et leur position respective avec le script suivant :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    #!/usr/bin/perl/
     
     
    use strict;
    use warnings;
     
     
    use Bio::SeqIO;
     
    my @liste_file = ("../resultats/jeu_test_c-jun_human.fa", "../resultats/jeu_test_c-jun_mouse.fa", "../resultats/jeu_test_sp1_human.fa", "../resultats/jeu_test_sp1_mouse.fa");
     
    my $rx_sp1_att = "[GAT][GA]G[GT][CAT][GTC][GC][GAC]";
    my $rx_sp1_find = "[GA]GG[ACT][GT]GG";
    my $rx_c_jun_att = "TGA[CGA][TGC][CTA][AC]";
    my $rx_c_jun_find = "[GTA][GA][TGC]GAC[GTA]";
     
    foreach my $file (@liste_file)
    {
    	my ($FT, $esp) = ($file =~ m/jeu_test_(.+)_(human|mouse)\.fa/);
     
    	my $file_res = "../resultats/jeu_test_$FT"."_$esp"."_annote.txt";
    	open(RES, '>', $file_res) or die("Impossible d'ouvrir $file_res\n");
     
    	my $seqio  = Bio::SeqIO->new( '-format' => 'fasta' , -file => $file, -alphabet => 'dna');
     
    	while(my $seqobj = $seqio->next_seq())
    	{
    		my $seq = $seqobj->seq();
     
    		my $name = $seqobj->display_name();
    		print(RES "\n>$name\n$seq\n");
     
    		if($FT eq "c-jun")
    		{
    			&rech_motif($rx_c_jun_att, $rx_c_jun_find, $seq);
    		}
    		elsif($FT eq "sp1")
    		{
    			&rech_motif($rx_sp1_att, $rx_sp1_find, $seq);
    		}
    	}
     
    	close(RES);
    }
     
     
    sub rech_motif
    {
    	my ($motif_att, $motif_find, $seq) = @_;
     
    	print(RES "\nRecherche du motif 'connu' :\n\tmotif trouve\tposition\n");
    	while ($seq =~ m/($motif_att)/gi)
    	{
    		print(RES "\t$1\t$-[1]\n");
    	}
     
    	print(RES "\nRecherche du motif trouve par PhyME :\n\tmotif trouve\tposition\n");
    	while ($seq =~ m/($motif_find)/gi)
    	{
    		print(RES "\t$1\t$-[1]\n");
    	}
    }
    Ce qui donne des résultats de ce type :
    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
     
    >KRT16
    CCTGGATAAGGCTTTCGCTCTCTCCAGTTGGGGTATTAATAGCCTTTGGTGACCTTGAAGACCATTTTCAGTTCTGAGGGTGATGGGTCTGTGGATGGACCAGAACTCCAGGCCCAACCTGACACCTGAACACTGAGGTTTTTGTCCAAGATTCCGGGGTCCCCTTTGCCCCTTTTTGGGGTAGGGGTGAGGAGTGTCAGGTTCCCTCTCCCAGGTTTGACTCTGAAGGGATGTGCATCCGTTCTGCTCTTACCTCTGGGATGAATGACCAGGGGAGATGTAGCAGTGACAAAACCCTGGTTCTGCTGAGACAAGGAATTGCCTGCCCCAGTGGAGCTCAGGCAGAAGCAGGCTGTCTCTGGGCTCCTCACCTCAACAGAGACACTGCAGAGCAAGGCCAGTGGCCAGCACCGAGGGATGCCCCACAGCACCCTGAGGAGGCCCCGTCTTGGTGCCCAGACCCCTCCATCCTCCCTCCAGTCCTCGGTGCTGGACCAGGCTCTCAGGCCAAGGCCATGCCCACCATGGGCAGACCTCCTGCCAGTGATCGTGGGGAGGTGGGTGAGAGTTGGGTATACTGGCCCCGCCTGCAGGCATGGTGGGAGCCTGGAGAGGGCCAGAGTTCTGGGTTCTAGTTGCAGCTCTGCAGCTTAAAGCAGAGTGACTTTGAGTGAATCTCTACGCTCACAGAACTGTATGGCACACACTGGGCTCTCCATGCATGCCTGAGTGGGCCCATAACCAGTGCTCTCCCCCAGCTCAGCTGGATGAATGGAGCTGCCAGGCCTAGCCTGGGATCTGTGGACACAGGAGAGAGAACTGCTGGGAACGGATCCCCGGCTAGTCCTGTTTCTACAGGGTAGGGGGGGACTCTGAGGCCCAGGTGGGGTCAGGGGTCATACCTGGCTGTAGTGGCAGGATGGGGCTCCCTCCCACCAGCCTGCAGGTGGGGTGCCTGTGATTAGGAGAGGGCGGTAGAGGAGTGGCAGAGCTAGGTGTGGGGCTGTGGTGTTCTTCAGCTGGGAGTGTGGGGGGCGCAGGGCCCTGCTTAGGGGTGCGGGATGGTGCCAGTGTGTAGAGGTGAGTGTGAGGAGCAGGTGGCTGGAGGGGCAGGATGGGGAGGCTGAGGGGCAGGGCTGGCCCTCGGGGAAGGGCCGGTGGGGTCCTTCGCGCATGTTTCTTTGTGGCTAGTGGTGTGTCATCCCCTTTTACAGATGAGAAAACTGAGGACCAAGGGGCTATAGGACCAGCCTGTGCTGTACAGTTGGTAAGGGCAGAGCAGGGACTCAGTGCCGCCTGTCTAGCTCCATGGCCAGTGCTGTTTGTATGGTGCACACACTTCTGGAGATCCCGGGGGCTCAAGGCAGCCTCTGGAACTGGAATTAGATCCAAGAGGGGAAAGAGAGTTATAGGATTTTTAGAACAGAAGGGACTCTGCAGTCACCCAGTCCAGCCTGGTCACTGAGGGGAAACAGGCCCAGAGGTGGGAGGTGGGGAGCCTCAGGCCACACAGCAAGCAGAGTGAAGACAGGAACTCTGCCCCTGCCCAGAGTGGGACATGTGGGATCCCCACAACTGCTCCCCAAGACAGCCCAGGATGGCATCACTGAGCTCTCTTTCAGCCAAGGCTGTCACTGTGGGGCAGGGAGTTCTTCTGAAGGGCTGACTCACTGCCTGGGGACGCAGTTGCCACAAAGCCACCTGTGCCAAGGCCCGACTGGCCCCGAGGGCTCCAGGAAAGGGAGCCTGATTCCCCACCGCCTAGCCTGAGTCACCACCGAACTCGCATTTCTGTGTTTTTCTCTCGGCCCCACACCCCCAAAGCTGGGTGGGAACTCTGAGCCGGCACACAGCAGAGTTGATCCTGGGCTGAATAATCCAGAGTGAGGAGTTGGACGGGACCGGGAGTGATGAAATCCAGAGGGGAACCTGGAGTCAGCAGTTAGGAGGGCCCCGCCTTCCCCAGCTGCATATAAAGGTCTCTGGGGTTGGAGGCAGCCA
     
    Recherche du motif 'connu' :
    	motif trouve	position
    	TGAAGAC	55
    	TGAACAC	126
    	TGAGGCC	873
    	TGAGGAC	1224
    	TGAAGAC	1522
    	TGAGCTC	1607
    	TGACTCA	1663
    	TGAGTCA	1767
    	TGAATAA	1870
     
    Recherche du motif trouve par PhyME :
    	motif trouve	position
    	AGTGACA	284
    	AGTGACT	659
    	GGGGACT	865
    	AGGGACT	1280
    	AGGGACT	1427
    	TGGGACA	1552
    	GGGGACG	1676
    Un grand merci jasmine pour l'aide précieuse que tu m'as apportée.

    Maintenant, on aimerait avoir des résultats plus lisibles (je parle pas de moi à la troisième personne, mais mon chef est dans la boucle )
    En fait, le but est de voir s'il y a un "overlap" entre ce que j'appelle les motifs 'connu' et les motifs 'trouvés par PhyME'.
    Du coup, ce que j'aimerais, c'est mettre les motifs trouvés à la bonne position au dessus et au dessous de la séquence.
    Plus visuellement, je voudrais quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    motif 'connu' --TGA----TGA------TGA
    sequence      GGTGAGGCCTGACATCTATGAA
    motif PhyME   ---GAG----GAC------GAA
    étant donné le casse tête avec la taille des caractères qui peut être différente, la taille des espaces et/ou des tirets, etc...
    Encore une fois, avant de me lancer tête baisser je viens demander conseil

    Peut être faut-il que j'ouvre un nouveau post pour ce sujet?

  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 zaboug Voir le message
    Maintenant, on aimerait avoir des résultats plus lisibles (je parle pas de moi à la troisième personne, mais mon chef est dans la boucle )
    En fait, le but est de voir s'il y a un "overlap" entre ce que j'appelle les motifs 'connu' et les motifs 'trouvés par PhyME'.
    Du coup, ce que j'aimerais, c'est mettre les motifs trouvés à la bonne position au dessus et au dessous de la séquence.
    Plus visuellement, je voudrais quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    motif 'connu' --TGA----TGA------TGA
    sequence      GGTGAGGCCTGACATCTATGAA
    motif PhyME   ---GAG----GAC------GAA
    étant donné le casse tête avec la taille des caractères qui peut être différente, la taille des espaces et/ou des tirets, etc...
    Encore une fois, avant de me lancer tête baisser je viens demander conseil

    Peut être faut-il que j'ouvre un nouveau post pour ce sujet?
    Pour aligner des séquences, j'utilise Blast (alignement local) ou ClustalW (alignement global) mais tes séquences sont si différentes dans ce cas ci que ça ne fonctionnerait pas. Il faudrait trouver l'algo simple qui te fasse ça. Recrée un nouveau post, ça serait mieux.

    tes motifs sont-ils toujours découpés en triplets ou est-ce un hasard dans cet exemple?
    -- Jasmine --

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Pour aligner des séquences, j'utilise Blast (alignement local) ou ClustalW (alignement global) mais tes séquences sont si différentes dans ce cas ci que ça ne fonctionnerait pas. Il faudrait trouver l'algo simple qui te fasse ça. Recrée un nouveau post, ça serait mieux.

    tes motifs sont-ils toujours découpés en triplets ou est-ce un hasard dans cet exemple?
    j'ai fait cet exemple au hasard.
    En réalité, mes motifs font 7 ou 8 bases, mais pour un même motif, la taille est toujours la même (puisqu'elle correspond à la taille du logo).

    Et dans ce cas, ce n'est pas vraiment de l'alignement puisque j'extrait des bouts de la séquence correspondant au motif et que je veux juste les repositionner au dessus et au dessous de la séquence de base pour mieux visualiser où ils se situent...

    Je vais faire un nouveau post pour ce sujet, mais a-t-il sa place dans le forum bioinfo? c'est plus général, non? ça irait mieux dans langage tu crois?

  12. #12
    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 zaboug Voir le message
    Je vais faire un nouveau post pour ce sujet, mais a-t-il sa place dans le forum bioinfo? c'est plus général, non? ça irait mieux dans langage tu crois?
    J'avais mal compris, je vais retester blast, ça devrait fonctionner.

    Il a sa place dans les 2 parties, mais à ta place, je le posterais dans le forum général. N'oublie pas de clore celui-ci.
    -- Jasmine --

  13. #13
    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
    Tiens au fait, ne devrais-tu pas rechercher ces motifs sur les brins complémentaires?
    -- Jasmine --

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    Par défaut
    avant de poster un nouveau sujet, je vais essayer un peu de mon côté.
    Si je n'y arrive pas, alors j'ouvrirais un nouveau sujet.

    En attendant, je note ce post comme étant résolu, et je mettrais un lien vers le nouveau sujet si j'en ouvre un

    En tous cas, merci pour tou jasmine80

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    Tiens au fait, ne devrais-tu pas rechercher ces motifs sur les brins complémentaires?
    Tu veux dire en plus de la recherche sur le brin que j'ai déjà ?

  16. #16
    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 zaboug Voir le message
    Tu veux dire en plus de la recherche sur le brin que j'ai déjà ?
    Oui
    -- Jasmine --

  17. #17
    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 zaboug Voir le message
    avant de poster un nouveau sujet, je vais essayer un peu de mon côté.
    Si je n'y arrive pas, alors j'ouvrirais un nouveau sujet.

    En attendant, je note ce post comme étant résolu, et je mettrais un lien vers le nouveau sujet si j'en ouvre un
    très belle mentalité.

    Bon, tu as la séquence et les positions de départ de tes motifs de là tu devrais pouvoir trier tes motifs par ordre d'apparition et ensuite calculer le nombre de tirets à placer entre tes motifs afin de compléter la séquence. A première vue, cela parait simple.
    -- Jasmine --

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par Jasmine80 Voir le message
    très belle mentalité.

    Bon, tu as la séquence et les positions de départ de tes motifs de là tu devrais pouvoir trier tes motifs par ordre d'apparition et ensuite calculer le nombre de tirets à placer entre tes motifs afin de compléter la séquence. A première vue, cela parait simple.
    oui, c'est ce que je me suis dit
    et c'est d'autant plus simple que le script que j'ai déjà fait imprime les résultats de la recherche de motif au fur et à mesure. Même pas besoin de trier les motifs par ordre d'apparition, y'a qu'à parser le fichier et faire les calculs au fur et à mesur

    Pour ce qui est de la séquence complémentaire, ce n'est pas nécessaire. en fait, je suis en train d'annoter des jeux de tests pour tester une "machine" d'apprentissage par distances d'édition. C'est un peu compliqué à expliquer, mais du coup, on travaille en simple brin

  19. #19
    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 zaboug Voir le message
    en fait, je suis en train d'annoter des jeux de tests pour tester une "machine" d'apprentissage par distances d'édition. C'est un peu compliqué à expliquer, mais du coup, on travaille en simple brin
    J'ai eu des cours d'intelligence artificielle su l'apprentissage automatique (machine-learning ). Il y avait plusieurs catégories, réseaux de neurones, SVM ... quel type vas-tu utiliser? ^^ C'est juste par curiosité.
    -- Jasmine --

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

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 379
    Points : 129
    Points
    129
    Par défaut
    Comme j'aimerais pouvoir répondre à ta question!!!

    En fait, on travaille en collaboration avec plusieurs labos, et cette partie là est faite par un autre labo d'informaticiens spécialisé dans les distances d'éditions. Du coup, je sais pas du tout ce qu'ils utilisent.
    Moi je m'occupe de leur préparer des jeux de données et de les annoter si besoin

    C'est mon premier boulot, et j'ai commencé en septembre dernier, du coup je suis toute novice (j'ai d'ailleurs commencé à apprendre Perl à cette occasion là...)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/09/2006, 23h33
  2. Réponses: 2
    Dernier message: 15/09/2006, 12h18
  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, 08h21
  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, 17h38
  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, 00h55

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