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 :

Primer 3 et Bio::Tools::Run::Primer3


Sujet :

Bioinformatique Perl

  1. #1
    Nouveau Candidat au Club
    Primer 3 et Bio::Tools::Run::Primer3
    Bonjour, j'ai utilisé les modules primer3 pour pouvoir faire un script permettant de designer des amorces à partir d'un fichier contenant des séquences au format fasta .
    Cependant après avoir donné mon fichier ou se trouvent toutes mes séquences au format fasta mon script me ressort 0 resultat , il ne trouve pas de primer. Alors j'essaie de mettre dans mon fichier qu'une séquence la séquence exemple que l'on obtient lorsque l'on installe primer3 mais la de même aucun primer trouvé . Pourtant j'ai bien repris le code qui se trouve sur le site rimer3" target="_blank">https://metacpan.org/pod/Bio::Tools:...eimg" />rimer3.

    Voici mon code :

    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
    #!/usr/bin/perl
     
    use strict;
    use warnings;
     
    use Bio::Tools::Run:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />rimer3;
    use Bio::Tools:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />rimer3;
    use Bio::SeqIO;
     
    # Fichier sequence consensus (Pense à remplacer les ? par des N)
    my $FichierSequenceConsensus = 'seqprimer.txt';
     
    my $seqio              = Bio::SeqIO->new( -file => $FichierSequenceConsensus, -format => 'fasta' );
    my $seq                = $seqio->next_seq;
    my $primer3            = Bio::Tools::Run:<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />rimer3->new(
      -seq     => $seq,
      -outfile => "primer.out",
      -path    => '~/Test/primer3/src/primer3_core',
    );
     
    # Exemple de parametres
    my %parametre = (
      PRIMER_OPT_SIZE => 20,
      PRIMER_MIN_SIZE => 18,
      PRIMER_MAX_SIZE => 27,
     
      PRIMER_NUM_NS_ACCEPTED     => 0,    # default : 1
      PRIMER_FILE_FLAG           => 1,
      PRIMER_PICK_INTERNAL_OLIGO => 1,
      PRIMER_EXPLAIN_FLAG        => 1,
      PRIMER_PICK_INTERNAL_OLIGO => 1,    # recherche sonde (bolean : default 0)
     
      PRIMER_OPT_TM      => 60,           # (float, default 60.0C)
      PRIMER_MIN_TM      => 57,           # (float, default 57.0C)
      PRIMER_MAX_TM      => 66,           # (float, default 63.0C)
      PRIMER_MAX_DIFF_TM => 2,            # (float, default 100.0C)
      PRIMER_MAX_POLY_X  => 5,            # (int, default 5)
     
      PRIMER_SALT_CONC => 50,             # (float, default 50.0 mM)
      PRIMER_DNA_CONC  => 330,            # (float, default 50.0 nM)
     
      PRIMER_LIBERAL_BASE => 1,           # (boolean, default 0)
    );
     
    # On applique ces paramètres
    foreach ( keys %parametre ) {
      $primer3->add_targets( $_ => $parametre{$_}, );
    }
     
    # Lancement de primer3
    my $resultats_primer3 = $primer3->run;
     
    # Nombre de résultat
    my $NombreResultat = $resultats_primer3->number_of_results;
    print "Il y a $NombreResultat resultats\n";
     
    # Lecture des résultats
    printf( "%-13s %-10s %-10s %-7s %-8s %-7s %-5s %-10s\n",
      'OLIGO', 'Start', 'Longeur', 'TM', 'Any', '%GC', "3'", 'Séquence' );
     
    for ( 0 .. $NombreResultat - 1 ) {
      my $resultats = $resultats_primer3->primer_results($_);
     
      # PRIMER_LEFT
      my ( $start_left, $len_left ) = split( ',', $resultats->{PRIMER_LEFT} );
      printf(
        "%-13s %-10s %-10s %-7s %-8s %-7s %-5s %-10s\n",
        'LEFT PRIMER',                        $start_left,
        $len_left,                            $resultats->{PRIMER_LEFT_TM},
        $resultats->{PRIMER_LEFT_GC_PERCENT}, $resultats->{PRIMER_LEFT_SELF_ANY},
        $resultats->{PRIMER_LEFT_SELF_END},   $resultats->{PRIMER_LEFT_SEQUENCE}
      );
     
      # PRIMER_RIGHT
      my ( $start_right, $len_right ) = split( ',', $resultats->{PRIMER_RIGHT} );
      printf(
        "%-13s %-10s %-10s %-7s %-8s %-7s %-5s %-10s\n\n",
        'RIGHT PRIMER',                        $start_right,
        $len_right,                            $resultats->{PRIMER_RIGHT_TM},
        $resultats->{PRIMER_RIGHT_GC_PERCENT}, $resultats->{PRIMER_RIGHT_SELF_ANY},
        $resultats->{PRIMER_RIGHT_SELF_END},   $resultats->{PRIMER_RIGHT_SEQUENCE}
      );
     
    }



    Je pense que si il ne trouve pas de primer cela vient peut être du chemin de primer3 que j'ai donné mais pourtant j'ai donné le bon ...
    Merci de votre réponse

  2. #2
    Membre éprouvé
    As-tu essayé d'initialiser ton primer3 en mode verbose ? cela te donnera peut-être plus d'indications ?
    Sinon tu peux lancer la commande à la main pour voir si elle donne une erreur ?
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes