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 :

Unicité de nombreux couple d'amorces


Sujet :

Bioinformatique 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 Unicité de nombreux couple d'amorces
    Citation Envoyé par CKLN00
    je doit faire un script qui permettras de vérifier l'unicité de nombreux couple d'amorces dans de TRES nombreuses séquence (tout ce qu'on trouve chez oncoryncus mykiss dans les basses de données du NCBI + des donné de Bac End Sequences qu'on à séquencer en local !)

    donc je cherche un programme qui existe déjà qui fait ce boulot en autorisant du mismatch
    et de préférence un programme rapide (pcq si non on va se faire taper sur les doigts )

    walou merchi d'avance

    Je n'ai jamais dû faire une chose pareille et je ne connais aucun programme excepté BLAST. Ce que j'essaierais de faire serait de créer une DB en local avec les séquences à analyser et ensuite j'utiliserais le module BLAST (Bio::Tools::Run::StandAloneBlast). Tu devrais écrire un programme qui analyse les résultats trouvé et en particulier le nombre de hits.
    -- Jasmine --

  2. #2
    Membre actif Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Points : 263
    Points
    263
    Par défaut
    bha alors ? on peut meme plus poster es problèmes sois meme ?

    oui mais je ne suis pas sur que blast réponde à mes attentes en fait je cherche quasiment à faire du 'find patern' (recherche du motif exacte) tout en ayant la possibilité de régler un mismatch entre 0 et 25%.
    mais surtout j'aimerais que le programme ne sois pas trop lent à cause de la grande taille de la banque (pas si énnorme que ça mais tout de meme conséquente). j'avais pensé à utiliser Primer3 mais il est plus tot lent.
    À défaut de trouver ce genre de programme j'essayrais d'en construire 1 en PERL pure mais sans mismatch (trop compliquer pour un p'tit stagiaire comme moi surtout qu'il me reste peu de temps)

    walou
    CKL
    N°°b forever
    --
    may the be with you

  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
    Je viens de faire des fouilles dans les entrailles de mon PC. J'y ai retrouvé un petit script perdu. Je l'ai écrit il y a assez longtemps (il ne doit donc pas être très bon), c'est afin de te montrer l'idée... il y a probablement beaucoup de chose à changer et surtout à optimiser vu la taille de ta DB. Tu dois également ajouter la recherche de ton amorce anti-sens. Au lieu de faire la façon bébé de faire glisser une fenêtre le long de la séquence, tu peux utiliser une regexp afin de rechercher le pattern que tu veux absolument garder dans ton amorce (l'extrémité 3' probablement).



    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    #------------------------------------- AmorcesAvecMismatchFonction.pl -------------------------------------#
    #       Programmes qui prend en entrée
    #               1) une séquence à cribler
    #               2) un motif à rechercher
    #               3) le nombre de nucléotides de l'extrémité 3' du motif devant être identique
    #               4) un pourcentage d'identité global du motif (sur toute sa longueur)
    #       Une fenêtre de la taille du motif est glissée le long de la séquence afin d'y rechercher
    #       les positions où on retrouve des motifs similaires mais d'extrémité 3' identique.
    #       Les motifs trouvés ainsi que leur position sont stockés dans un tableau non indexé
    #------------------------------------- AmorcesAvecMismatchFonction.pl -------------------------------------#
     
    use strict;
    use warnings;
     
     
     
     
    # VERIFIER QUE LA CASSE SOIT IDENTIQUE ENTRE LA SEQUENCE ET L'AMORCE
    my $Sequence = "CGTTCAGCTCATCG";
    # 5'-amorce- 3'
    my $Amorce = "ATC";
    # seuil nécessaire d'identité afin d'être gardé
    my $Seuil = 1;
    # nombre de nucléotides devant être identiques en 3'
    my $Num_Ident_E3 = 2;
     
     
     
     
    my %Seq_Position = SUB_AmorcesAvecMismatch($Sequence, $Amorce, $Seuil, $Num_Ident_E3);
    foreach my $Seq (%Seq_Position)
    {
            foreach my $Position (@{$Seq_Position{$Seq}})
            {
                    print "$Seq $Position\n";
            }
    };
     
     
    sub SUB_AmorcesAvecMismatch
    {
            # VERIFIER QUE LA CASSE SOIT IDENTIQUE ENTRE LA SEQUENCE ET L'AMORCE
            my $Sequence = $_[0];
            # 5'-amorce- 3'
            my $Amorce = $_[1];
            # seuil nécessaire d'identité afin d'être gardé
            my $Seuil = $_[2];
            # nombre de nucléotides devant être identiques en 3'
            my $Num_Ident_E3 = $_[3];
            my %Seq_Position;
     
            my $L = length($Amorce);
            my $N = length($Sequence) - length($Amorce) + 1;
            my @A_Amorce = split('',$Amorce);
            # partie 5' de l'amorce pouvant être variable
            my $Amorce_E5 = $L-$Num_Ident_E3;
            # partie 3' de l'amorce devant être identique à 100%
            my $Amorce_E3 = substr($Amorce, $Amorce_E5, $Num_Ident_E3);
            print "Sequence de l'amorce à rechercher = $Amorce\n";
            print "Extrémite 3' obligatoire = $Amorce_E3\n";
            print "Pourcentage d'identité nécessaire = $Seuil\n\n";
     
     
            for(my$i=0; $i<$N; $i++)
            {
     
                    my $Fenetre = substr($Sequence,$i,$L);
     
                    # extrémité 3' doit être identique
                    my $Fenetre_E3 = substr($Fenetre, $Amorce_E5, $Num_Ident_E3);
                    if($Fenetre_E3 eq $Amorce_E3)
                    {
                            my @A_Fenetre = split('',$Fenetre);
                            my $Score = 0;
                            for (my $j = 0; $j<@A_Amorce; $j++)
                            {
                                    if($A_Amorce[$j] eq $A_Fenetre[$j])
                                    {
                                            $Score++;
                                    }
                            }
                            $Score = sprintf("%.3f", $Score/$L);
                            if ($Score >= $Seuil)
                            {
                                    push (@{$Seq_Position{$Fenetre}},$i);
                            }
                    }
            }
            return %Seq_Position;
    }

    Mais à mon avis il existe un programme bien plus approprié qu'un propre script en Perl. Attends l'avis d'autres personnes avant de commencer avec un script Perl.

    Pour ce qui est de Primer3, que je ne connais pas du tout, je sais que Perl possède un module permettant de l'utiliser (Bio::Tools:rimer3 ).
    http://search.cpan.org/~birney/biope...ols/Primer3.pm
    -- Jasmine --

  4. #4
    Membre actif Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Points : 263
    Points
    263
    Par défaut
    pour primer 3 je m'y suis frotter avant de connaitre l'existance des modules bioperl donc je m'en sort sans
    CKL
    N°°b forever
    --
    may the be with you

  5. #5
    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
    pour primer 3 je m'y suis frotter avant de connaitre l'existance des modules bioperl donc je m'en sort sans
    Oui mais tu dis que c'est trop lent ... sans l'interface graphique cela irait déjà plus vite.
    -- Jasmine --

  6. #6
    Membre actif Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Points : 263
    Points
    263
    Par défaut
    oui mais je n'utilise pas l'interface graphique ce qui est long c'est l'algorithme de primer3 lui meme
    CKL
    N°°b forever
    --
    may the be with you

Discussions similaires

  1. contrainte d'unicité sur des couples
    Par ekremyilmaz dans le forum SQL
    Réponses: 10
    Dernier message: 28/04/2010, 08h38
  2. nombreux plantage JbuilderX et 2005
    Par inertia dans le forum JBuilder
    Réponses: 4
    Dernier message: 24/11/2004, 18h28
  3. Unicité de nom de clés dans un fichier .INI
    Par The_Warlord dans le forum Langage
    Réponses: 8
    Dernier message: 11/11/2004, 12h16
  4. [Doublons] Unicité sur un champ de type TEXT
    Par PyRoFlo dans le forum Requêtes
    Réponses: 11
    Dernier message: 01/09/2004, 09h56
  5. unicité de champ les uns envers les autres
    Par Jovial dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 16/04/2004, 08h34

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