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 :

Debutant en Perl.Probleme de programmation


Sujet :

Bioinformatique Perl

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Debutant en Perl.Probleme de programmation
    Bonjour, pour mon travail un programmeur m'a fait ce petit programme en Perl le pb est que le pg ne fait pas reellement ce que je veux.Vu que je suis debutant c'est tres complique de le modifier pour reparer l'erreur.
    Ce que je voudrais c'est extraire des donnees d'une database qui se decompose de la maniere suivante:
    1/Informations sur la sequence
    2/Localisation des differentes parties de la sequence
    3/Sequence a proprement parle.

    Ce que je souhaite,c'est extraire une partie de l'info pour connaitre d'ou provient la sequence,de prendre chaque partie de la sequence a part et ensuite de prendre la sequence complete encore a part.

    Voici le programme que j'ai(j'ai egalement le fichier data lie a ce programme) pourriew vous me dire si deja il y a une erreur dans ce programme SVP...
    Merci!!



    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    #!/usr/bin/perl
     
     
    # oblige ‡ utiliser la dÈclaration de variable pour chaque nouvelle variable (my $variable;)
    use strict;
    # explique les bugs
    use warnings;
     
    # le path du fichier dans une variable
    my $genbank = "all_GenBank.txt";
     
    # j'ouvre le fichier (||) ou je meurs
    open (FILE, "$genbank") || die "salop\n";
    # je stoque chaque ligne du fichier comme une string dans un array (liste)
    my @lines_gb = <FILE>;
    close FILE;
     
    ## dÈclaration des variables que je vais utiliser
    my $line;
    my $locus;
    my $definition;
    my $translation = 0;
    my $seq;
    my $complete_seq;
    my $start_cds;
    my $start;
    my $end;
    my $product = "";
    my $protein_id;
    my $prot_seq;
     
     
    # boucle pour chaque ligne du fichier
    foreach $line (@lines_gb){
     
    # si la string de $line match avec un truc qui commence (^) par "LOCUS"
      if ($line =~ m/^LOCUS/){
    # je split ma string en liste et je prend le deuxiËme ÈlÈment de la liste ([1] parceque Áa commence ‡ zero)
        $locus = (split(/\s+/,$line))[1];
    # j'enlËve le caractËre invisible de saut de ligne de ma string
        chomp $locus;
      }
      if ($line =~ m/^DEFINITION/){
        $definition = $line;
    # definition est egal ‡ la ligne qui commence par DEFINITION et je substitue DEFINITION du dÈbut et tous les espaces juste aprËs (\s 1 esapce, \s+ groupe d'espaces ou de tabulateurs)
        $definition =~ s/^DEFINITION\s+//;
    # je virre (remplace par rien) ‡ partir de ", complete et tout autre caractËre aprËs"
        $definition =~ s/, complete.*//;
    # je remplace les espaces par "_" le "g" c'est pour qu'il le fasse pas juste avec le premier, mais avec tous
        $definition =~ s/ /_/g;
        chomp $definition;
    # je crÈ le repertoire qui portera le nom du virus
        mkdir "data/$definition";
      }
    # si ya "translation dans la ligne ou si la variable translation est Ègale ‡ 1"
      if (($line =~ m/\/translation\=\"/)|($translation == 1)){
    # je dÈfini translation ‡ 1
        $translation = 1;
        $seq = $line;
    #je remplace tout ce qu'il y a avant translation et translation et "=" et """, le "\" c'est pour qu'il sache qu'on parle d'un caractËre normal, pas d'un truc special comme .*
        $seq =~ s/.*\/translation\=\"//;
        $seq =~ s/\s+//g;
        chomp $seq;
    # je rajoute la string $seq ‡ $complete_seq
        $complete_seq = $complete_seq.$seq;
    # c'est la fin de la sÈquence je remet translation ‡ 0
        if ($seq =~ m /\"/){
          $translation =0;
          $complete_seq =~ s/\"//;
        }
      }
      if ($line =~ m/3\'UTR/){
    # fin de la sÈquence, on initialise...
        $complete_seq = "";
      }
    # je garde les valeur de dÈbut et de fin de la protÈine
      if ($line=~ m/mat\_peptide/){
        $start = $line;
        $start =~ s/.*mat\_peptide\s+//;
        $start =~ s/\s+//g;
        $end = $start;
        $start =~ s/\.\..*//;
        $end =~ s/.*\.\.//;
        chomp $end;
        print "$start  $end\n";
      }
    # je garde la valeur de dÈbut de la CDS
      if ($line=~ m/  CDS  /){
        $start_cds = $line;
        $start_cds =~ s/.*CDS\s+//;
        $start_cds =~ s/\s+//g;
        $start_cds =~ s/\.\..*//;
      }
    # je garde le nom de proteine et l'id
      if ($line=~ m/\/product/){
        $product = $line;
        $product =~ s/.*\/product\=\"//;
        $product =~ s/\"\n//g;
        $product =~ s/ /_/g;
      }
    # j'Ècris dans un fichier le nom et l'id, et la sÈquence de la protÈine
      if (($line=~ m/\/protein_id/)&($product !~ m/polyprotein/)){
        $protein_id = $line;
        $protein_id =~ s/.*\/protein_id\=\"//;
        $protein_id =~ s/\"\n//g;
        $protein_id =~ s/ /_/g;
    # j'ouvre le fichier de sortie
        open (FILE, ">data/$definition/$product");
        print FILE "\>$product\t$protein_id\n";
        my $temp = $complete_seq;
    # et oui c'est les coordonnÈes nuclÈiques...
        my $tmpstart =  int(($start-$start_cds)/3);
        my $tmpend = (($end-$start_cds+1)/3)-$tmpstart;
    # substring chope la strin qui va de $tmpstart et qui fait $tmpend de long
        $prot_seq = substr($temp, $tmpstart, $tmpend);
        print FILE "$prot_seq\n";
        close FILE;
      }
    }
    # \n retour ‡ la ligne
    print "tadam!!!\n\n"

  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
    Bonjour,

    Pourrais-tu utiliser les balises CODE s'il te plait (icône dièse dans la barre d'outils)? Cela rendra ton code plus lisible.

    Que contient exactement all_GenBank.txt ? Il existe des modules permettant à Perl de se connecter et d'accéder directement aux données de GenBank via internet.
    -- Jasmine --

  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
    Pourrais-tu me donner un des accessions en exemple?

    Sinon regarde ce petit script :
    Il récupère les informations de http://www.ncbi.nlm.nih.gov/entrez/v...re&id=39995074


    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
    #!/usr/bin/perl
     
     
    use strict;
    use warnings;
     
    use Bio::DB::GenBank;
     
    my $gb = new Bio::DB::GenBank;
     
    # http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?db=nuccore&id=39995074
    my @liste_acc = ('NM_001800');
     
    foreach my $acc (@liste_acc){
    	print "Accession : $acc\n\n";
    	# Recherche dans Genbank
    	#--------------------------
    	my $info = $gb->get_Seq_by_acc($acc);            
     
    	my @features =  $info->get_SeqFeatures;
    	# pour chaque feature du format Genbank
    	for my $f (@features) {
    		# pour chaque primary_tag (e.g : Gene, CDS, mRNA), si ce tag est égal à CDS
    		my $tag = $f->primary_tag;
    		if ($tag eq( "CDS" ) ) {
    		    # on récupère l'ID de la protéine 
    		    my @tags = $f->get_all_tags;
    		    if ($f->has_tag("protein_id")) {
    			my ($prot_id) = $f->get_tag_values("protein_id");
    			print "prot_id : $prot_id\n";
    		    }
    		    # on récupère le contenu du champs produit  
    		    if ($f->has_tag("product")) {
    			my ($product) = $f->get_tag_values("product");
    			print "Product : $product\n";
    			my ($transl) = $f->get_tag_values("translation");
    			print "Translation : $transl\n";
    			my $seqStart = $f->start;
    			my $seqEnd = $f->end;
    			print "Start : $seqStart\nEnd : $seqEnd\n";
    			# on récupère la séquence 
    			my $subSeq = lc($info->subseq($seqStart, $seqEnd));
    			print "SubSeq : $subSeq\n\n";
    		    }
    	    }
    	}
    }

    Output :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Accession : NM_001800
    prot_id : NP_001791.1
    Product : cyclin-dependent kinase inhibitor 2D
    Translation : MLLEEVRAGDRLSGAAARGDVQEVRRLLHRELVHPDALNRFGKTALQVMMFGSTAIALELLKQGASPNVQDTSGTSPVHDAARTGFLDTLKVLVEHGADVNVPDGTGALPIHLAVQEGHTAVVSFLAAESDLHRRDARGLTPLELALQRGAQDLVDILQGHMVAPL
    Start : 303
    End : 803
    SubSeq : atgctgctggaggaggttcgcgccggcgaccggctgagtggggcggcggcccggggcgacgtgcaggaggtgcgccgccttctgcaccgcgagctggtgcatcccgacgccctcaaccgcttcggcaagacggcgctgcaggtcatgatgtttggcagcaccgccatcgccctggagctgctgaagcaaggtgccagccccaatgtccaggacacctccggtaccagtccagtccatgacgcagcccgcactggattcctggacaccctgaaggtcctagtggagcacggggctgatgtcaacgtgcctgatggcaccggggcacttccaatccatctggcagttcaagagggtcacactgctgtggtcagctttctggcagctgaatctgatctccatcgcagggacgccaggggtctcacacccttggagctggcactgcagagaggggctcaggacctcgtggacatcctgcagggccacatggtggccccgctgtga
    -- Jasmine --

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Qu'entends tu par "accession"?
    Merci de ton aide en tout cas :-)
    Alors voici le programme avec la balise 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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
     
    #!/usr/bin/perl
     
     
    # oblige ‡ utiliser la dÈclaration de variable pour chaque nouvelle variable (my $variable;)
    use strict;
    # explique les bugs
    use warnings;
     
    # le path du fichier dans une variable
    my $genbank = "all_GenBank.txt";
     
    # j'ouvre le fichier (||) ou je meurs
    open (FILE, "$genbank") || die "salop\n";
    # je stoque chaque ligne du fichier comme une string dans un array (liste)
    my @lines_gb = <FILE>;
    close FILE;
     
    ## dÈclaration des variables que je vais utiliser
    my $line;
    my $locus;
    my $definition;
    my $translation = 0;
    my $seq;
    my $complete_seq;
    my $start_cds;
    my $start;
    my $end;
    my $product = "";
    my $protein_id;
    my $prot_seq;
     
     
    # boucle pour chaque ligne du fichier
    foreach $line (@lines_gb){
     
    # si la string de $line match avec un truc qui commence (^) par "LOCUS"
      if ($line =~ m/^LOCUS/){
    # je split ma string en liste et je prend le deuxiËme ÈlÈment de la liste ([1] parceque Áa commence ‡ zero)
        $locus = (split(/\s+/,$line))[1];
    # j'enlËve le caractËre invisible de saut de ligne de ma string
        chomp $locus;
      }
      if ($line =~ m/^DEFINITION/){
        $definition = $line;
    # definition est egal ‡ la ligne qui commence par DEFINITION et je substitue DEFINITION du dÈbut et tous les espaces juste aprËs (\s 1 esapce, \s+ groupe d'espaces ou de tabulateurs)
        $definition =~ s/^DEFINITION\s+//;
    # je virre (remplace par rien) ‡ partir de ", complete et tout autre caractËre aprËs"
        $definition =~ s/, complete.*//;
    # je remplace les espaces par "_" le "g" c'est pour qu'il le fasse pas juste avec le premier, mais avec tous
        $definition =~ s/ /_/g;
        chomp $definition;
    # je crÈ le repertoire qui portera le nom du virus
        mkdir "data/$definition";
      }
    # si ya "translation dans la ligne ou si la variable translation est Ègale ‡ 1"
      if (($line =~ m/\/translation\=\"/)|($translation == 1)){
    # je dÈfini translation ‡ 1
        $translation = 1;
        $seq = $line;
    #je remplace tout ce qu'il y a avant translation et translation et "=" et """, le "\" c'est pour qu'il sache qu'on parle d'un caractËre normal, pas d'un truc special comme .*
        $seq =~ s/.*\/translation\=\"//;
        $seq =~ s/\s+//g;
        chomp $seq;
    # je rajoute la string $seq ‡ $complete_seq
        $complete_seq = $complete_seq.$seq;
    # c'est la fin de la sÈquence je remet translation ‡ 0
        if ($seq =~ m /\"/){
          $translation =0;
          $complete_seq =~ s/\"//;
        }
      }
      if ($line =~ m/3\'UTR/){
    # fin de la sÈquence, on initialise...
        $complete_seq = "";
      }
    # je garde les valeur de dÈbut et de fin de la protÈine
      if ($line=~ m/mat\_peptide/){
        $start = $line;
        $start =~ s/.*mat\_peptide\s+//;
        $start =~ s/\s+//g;
        $end = $start;
        $start =~ s/\.\..*//;
        $end =~ s/.*\.\.//;
        chomp $end;
        print "$start  $end\n";
      }
    # je garde la valeur de dÈbut de la CDS
      if ($line=~ m/  CDS  /){
        $start_cds = $line;
        $start_cds =~ s/.*CDS\s+//;
        $start_cds =~ s/\s+//g;
        $start_cds =~ s/\.\..*//;
      }
    # je garde le nom de proteine et l'id
      if ($line=~ m/\/product/){
        $product = $line;
        $product =~ s/.*\/product\=\"//;
        $product =~ s/\"\n//g;
        $product =~ s/ /_/g;
      }
    # j'Ècris dans un fichier le nom et l'id, et la sÈquence de la protÈine
      if (($line=~ m/\/protein_id/)&($product !~ m/polyprotein/)){
        $protein_id = $line;
        $protein_id =~ s/.*\/protein_id\=\"//;
        $protein_id =~ s/\"\n//g;
        $protein_id =~ s/ /_/g;
    # j'ouvre le fichier de sortie
        open (FILE, ">data/$definition/$product");
        print FILE "\>$product\t$protein_id\n";
        my $temp = $complete_seq;
    # et oui c'est les coordonnÈes nuclÈiques...
        my $tmpstart =  int(($start-$start_cds)/3);
        my $tmpend = (($end-$start_cds+1)/3)-$tmpstart;
    # substring chope la strin qui va de $tmpstart et qui fait $tmpend de long
        $prot_seq = substr($temp, $tmpstart, $tmpend);
        print FILE "$prot_seq\n";
        close FILE;
      }
    }
    # \n retour ‡ la ligne
    print "tadam!!!\n\n"

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Je vois ce que tu veux dire par accession,enfin je crois,le programme que tu m'as donne est super interessant mais dans mon cas je dois extraire ces infos d'une database genebank de 61 genomes.Je suppose qu'avec ce programme je pourrai le faire pour chaque genome,mais avec le programme que l'on m'a donne,je peux le faire directement a partir des donnees des 61 genomes.
    Ces genomes tu peux les retrouver ici:



    Qu'en penses tu?

  6. #6
    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
    Qu'entends tu par "accession"?
    Les séquences de GenBank ont plusieurs identifiants dont l'accession et le Gi.

    Donne moi juste une valeur à droit du tag LOCUS, que je teste ton script sur une des séquences d'intérêt.
    -- Jasmine --

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 1
    Points
    1

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Le premier genome a ces valeurs la:

    LOCUS NC_003492 9532 bp ss-RNA linear VRL 23-OCT-2008
    DEFINITION Bean yellow mosaic virus, complete genome.
    ACCESSION NC_003492
    VERSION NC_003492.1 GI:19881394

  9. #9
    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
    Es-tu obligé de passé par des fichiers textes? Ne peux-tu pas directement connecter Perl à genbank? Je peux t'aider à écrire le script, ça serait plus propre et plus simple.

    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
    #!/usr/bin/perl
     
     
    use strict;
    use warnings;
     
    use Bio::DB::GenBank;
     
    my $gb = new Bio::DB::GenBank;
     
    # http://www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?db=nuccore&id=39995074
    my @liste_acc = ('NC_003492');
     
    foreach my $acc (@liste_acc){
     
     
    	my $locus;
    	my $definition;
    	my $translation = 0;
    	my $seq;
    	my $complete_seq;
    	my $start_cds;
    	my $start;
    	my $end;
    	my $product = "";
    	my $protein_id;
    	my $prot_seq;
     
     
    	print "Accession : $acc\n\n";
    	# Recherche dans Genbank
    	#--------------------------
    	my $info = $gb->get_Seq_by_acc($acc);    
    	my $description = $info->desc();  
    	print "Description = $description\n";
     
    	my @features =  $info->get_SeqFeatures;
    	# pour chaque feature du format Genbank
    	for my $f (@features) {
    		# pour chaque primary_tag (e.g : Gene, CDS, mRNA), si ce tag est égal à CDS
    		my $tag = $f->primary_tag;
    		if ($tag eq( "CDS" ) ) {
    		    # on récupère l'ID de la protéine 
    		    my @tags = $f->get_all_tags;
    		    if ($f->has_tag("protein_id")) {
    			my ($prot_id) = $f->get_tag_values("protein_id");
    			print "prot_id : $prot_id\n";
    		    }
    		    # on récupère le contenu du champs produit  
    		    if ($f->has_tag("product")) {
    			my ($product) = $f->get_tag_values("product");
    			print "Product : $product\n";
    			my ($transl) = $f->get_tag_values("translation");
    			print "Translation : $transl\n";
    			my $seqStart = $f->start;
    			my $seqEnd = $f->end;
    			print "Start : $seqStart\nEnd : $seqEnd\n";
    			# on récupère la séquence 
    			my $subSeq = lc($info->subseq($seqStart, $seqEnd));
    			print "SubSeq : $subSeq\n\n";
    		    }
    	    }
    	}
    }
    Voila ce que le script récupère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Accession : NC_003492
     
    Description = Bean yellow mosaic virus, complete genome.
    prot_id : NP_612218.1
    Product : polyprotein
    Translation : MTTINIGTIPVVINQNANTQMGEGTKNIFPFVKDFIDPFADLEMRCAERVKRMGELCFSKKGRYITMIPKPDYIKTREKEQREEELNFQNSEHVLSSIGTTCTPEHYSSRNNGMQVSFKTQHYKRTIRKPRIQAKKRDLKGQHTIHYVAKELLSIVKKRDMVLEVADKRKHANFATFRRYGKTYGMHIALNHMVRKRRRVDVTLNKLMTEIAMHCAIPFECLDTLTLRKGHSGLVLQTETVPNVHKIKSKITIVRGVVNEGNIPVLVDARKKLSGKDMSTIREFSAGDLFWKGYNQTFIDNRPTDLNHQCTSDLNVTQCGSVMALLTLALFPCGRITCKKCVENFLNQNNKERFNNASVFINQVIQLLEKGFSEFKHSKEILLMFKERLQMENPATDQCMEIAKATAALPEAPFSHIKEINNVLLKYGSLSNEEVGGASKHLLEVVRYIRNRTDSIQRNDLSKFRNKISSKTHVNLDLMCDNQLDKNANFVWGQRAYHAKRFLSNYFNEINPSEGYDKFIFRKLPNGARELAIGRLIMPTNFEAFREQMKGNMIDNGPIGKDCVSRMRGSFCYPCCCTTDDVGNAVLSDFKMPTKYHLVLGGNDLAKYIELPSDSTGNMYIAKDGYCHINIFFAMLVNVSEEKSKDFTKMVRDQIMPKLGEWPTMMDVATACWQLTVWFPDTLSAELPRILVDHKLGIMHVLDSYGSISAGYHVLKANIVSQLIKFASDDLESELKYYRVGGDWNFGNRVRTDTKFLLKSIYRPDLLERIIEHEPFVLVLAMQSPAVLLALFNSASLEKAVQYWMHREMQVSHIMTLLAVLASNVSASRLLTTQFEIIEASAPQILAEMDKVHQPMHSIHSANVFLMNLNESRETDKTIDELGFYSFKKSSRILMEKTLMADLEEQWQGLGLLERLSLIKRSWRVRAKYSSFAIQREEPGIRDKFTTSLKLSGAQIKQQLLAQKDQAVHFVERRIERTKKFVANQAIGLVKMCLPRLADIVNVLTVIMLLNALLAFMLDHIKRFNEARRIAQEKKEKQHLRELNTLYSKHWDNEKPTYLEFKSDVIEKLPHTLATFEKYYSEDDKYTFQAKPNDMIALEKIVAVTALILMIFDAERSDCVYKVLNKLKGILSTTTQDAYRFQSLDTSKTLLEEKEMTIDFEINEGEVKAFSGTQTTFSEWWDNQLQNGNVITHYRTEGQFMEFTRANAQPVANEIAHNDAQDILVRGAVGSGKSTGLPFYLSNKGKVLMIESTRPLAENVFKQLKSEPFYVSPTLRMRGTTSYGASPITIMTSGYALHYYANNPAMMKEYKFVIIDECHVHDASAIAFVSLLKEYSFDGKLIKVSATPPGREVEFTTQYPVTLVTEESLSFEQFVSQQGTGANCDMLDVCDNILVYVASYNEVDQLSKMLLDRGHIVTKVDGRTMKNGKTEIESKGSRSKRHFIVATNIIENGVTLDIEGVVDFGLKVVPELDVDNRLMRYTKQSVSYGERIQRLGRVGRHKAGKALRIGVTEKGLMKPPSVITTEAAFYCFAYGLPVMAEGVTPSLLSKCTVQQARSMMSFELPIMYTVNLVRFDGTMHPSVHNLLKPYKLRDSNVVLNKMAIPHGNVRNWPTVRDFKHMGVRIDIPEDTRVPFHARGIPDKLHKEIFEVCCKYKGDAGFSKLNVVNACKIAYTLQTDPSSIQRTIKILDELIAREQQKREYFQNVANTSCAGSSYSLSNIINAIRARSTSDYTQENLSVLHSARAQLLEFKNINSDFSNLSTLSEFGALECLQFESLQGVSKHLQLKGHWNKPVLIQDFLIAAGVLGGGCWMLYQYFKQETSKAFVFQGKNRRTKQKLRFRDARDMKGRMEVYADEGTIVENFGSKYTKKGKVRGTTTGMGTKTRRFTNMYGFDPTEYSFARYLDPITGETLDEQPITNLNLVSEHFQEMRRKYRENDIMESQHFAASPSIEAYFVKDAGQKVLKVDLTPHKPLLYSDKFGNIMGYPEREGELRQTGTAEFIDPKELPEPKESTDFDFESLSKIGGLRDYNPIAANVCLLENESAEYCDEIYGIGYGNVIITNQHLFRHNNGELTIKSKHGTFKCKNTCALKLLPIEGHDLLLIQMPKDFPVFPQKLRFREPTHEDKIVLVSTNFQEKSFSSVVSESSNISRVKQANFFKHWISTVAGQCGNPMVSTKDGFIVGIHSLTAISGDLNVFTSIPPNFEDEVLKQMSKKNWCCGWKLNTSQIGWDGIKIVDDQPKDPFPVSKMVGLLNDLQLSFQSAKNTKWLLERAHGNIKAVAQASSALVTKHVVKGKCRLFEVYLTTDEEAEKFFRPLMGAYQKSRLNKEAYVKDLMKYATPIEVGLVDTRCFERCFEKVQNMLELKGFSKCNYVTYGPDILSALNMKAAMGALYSGKKKDHFSEISEEKFDNILQASCERLYSGRMGVWNGSLKAELRPQEKVLANKTRSFTAAPIDTLLAGKVCVDDFNNKFYSLHLKIPSTVGITKFYGGWDRLLNSLPDGWVYCDADGSQFDSSLTPYLLNAVLEMRLRLMEEWDLGEQMLKNLYTEIVYTPILTPDGTVVKKFKGNNSGQPSTVVDNTLMVIMAVYYAAEKLGIKGNLEDTLVFFANGDDLLIAIKPECESYLDKFEGLFSELGLKYDFSSRTKNKGDLWFMSHRGIQIDGMWIPKLEEERIVSILEWDRAIQPEHRLEAICAAMIEAWGYPTLLNHIRKFYLWVLGQAPYSQLSAEGKAPYISEVALKHLYTEERVTPAELERYSIALIDCFESESDEVLVCRFQSDQEIFNAGETKKDKARKNEENPDKNSEGQSSRQIVPDRDVNAGTVGTFSVPRLKKIAGKLNIPRIGGKIVLNLDHLLEYNPPQDDISNVIATQAQFEAWYNGVKQAYEVEDSQMGIILNGLMVWCIENGTSGDLQGEWTMMDGEEQVTYPLKPILDNAKPTFRQIMSHFSEVAEAYIEKRNATERYMPRYGLQRNLTDYGLARYAFDFYKLTSKTPVRAREAHMQMKAAAVRGKSTRLFGLDGNVGTDEENTERHTAGDVNRDMHTMLGVRI
    Start : 191
    End : 9361
    SubSeq : atgactactattaatattggaactattccggtagtaataaaccaaaacgctaacacccagatgggtgagggcaccaaaaatatttttccttttgttaaggattttattgatccttttgctgatttggagatgaggtgcgctgagcgggttaagcgcatgggagaattatgtttttcaaagaagggacgctacatcacgatgattccaaaacccgactacatcaagaccagagagaaggagcagcgtgaggaagagctgaactttcaaaatagtgagcatgttctgagctcaattggcactacttgcactcctgaacactactcttcacgaaacaacgggatgcaagtttcgtttaaaacacagcattacaaaagaaccattagaaaacctcgcatacaggccaaaaagagagacctgaaaggccaacatacaattcattatgtggcgaaggaacttctcagcattgtaaagaagagggatatggttctagaggttgctgacaagagaaagcatgcaaactttgccactttcaggagatacggaaaaacttacggtatgcacatagctctaaaccacatggtgaggaagagacgtagagttgacgtcacgttgaataaattgatgactgagattgccatgcattgtgcaattccatttgaatgcttggacactttgaccctcaggaaaggacacagtgggttagttttacaaactgaaacggtgcccaatgttcataagattaagtcaaaaatcactattgtgagaggagtagtgaatgaagggaatattccagttctcgttgatgcaaggaagaaattgtctggcaaagacatgagtaccataagagagttttcagctggtgacttattctggaagggatataatcaaacattcattgacaatagaccaacagacctaaatcaccaatgcacatcagatttgaatgtaacacagtgtggatcagtcatggcgcttttaactttagctttatttccttgtggtcgcatcacttgcaagaagtgtgttgaaaacttccttaaccagaataataaggagagatttaataatgcaagtgtgttcataaaccaagtcatccagcttttggaaaaagggttctcagagttcaaacactcgaaagaaattttgttgatgttcaaagaaagactccaaatggagaaccctgcaacagatcaatgcatggaaattgcaaaagctacagcagcgttgcccgaggcaccattcagtcatatcaaagaaattaataatgtcttactgaaatatggaagtctcagcaatgaagaagttgggggtgcaagcaagcacttgcttgaagtggtgcgttatataaggaacaggacagattccatccagaggaacgatctcagcaagttcaggaataaaatttcttcgaagacccacgttaatttggatttaatgtgtgacaaccagctggacaaaaatgccaattttgtgtggggtcagagagcgtaccatgctaagcgatttcttagcaactacttcaacgaaatcaacccatcggaggggtatgacaaattcatttttaggaaattgccgaacggagctcgagagttagctataggaagattgatcatgcctacgaactttgaagcttttagggaacagatgaaaggaaacatgattgataatggaccaattgggaaggattgtgtatcacgcatgaggggttcattctgttacccttgctgttgcacaactgatgatgtgggaaatgcagtattatccgatttcaagatgccaacaaaataccaccttgttctgggtggaaacgatctggctaagtacatagaattaccatcggatagcacaggcaatatgtacatagcgaaagatggttattgtcatataaacatctttttcgcaatgttggtaaatgtttcagaggaaaaatcgaaggattttacaaaaatggttcgtgatcaaataatgccgaaattaggtgaatggccaactatgatggatgtcgcaacagcttgttggcaactgacagtttggtttcctgacacgttgagtgctgaattgcccagaattttagttgatcacaagctcggaatcatgcatgtccttgactcatatggttcaattagcgcgggataccatgttttgaaagcaaatatagtatctcagctaattaagtttgctagtgatgaccttgaatctgaactgaagtattatagagttggtggtgattggaactttggcaaccgagtccgaactgatacaaaatttcttctcaagagtatatataggcctgatttgctagagaggataatagagcatgaaccattcgtgctagtgttagccatgcagtcgccagctgtcttattagccctttttaacagcgcttcattggagaaagcagttcagtattggatgcacagggagatgcaagtttcacatataatgacactattggctgttttggcttcaaatgtgagcgcttcgaggctgttaaccacacaatttgagatcattgaagcaagtgcacctcagattcttgcggaaatggacaaggtccatcaacccatgcactcaattcatagtgctaacgtcttcctaatgaacttgaatgaaagtcgagaaacagacaagacaatagatgaattgggcttctattcgttcaagaaatccagcagaattttaatggaaaaaaccttaatggcggatttggaggagcaatggcaaggattaggattgttggaacgattatctttaataaagcggtcgtggcgagtgcgagcaaagtattcaagctttgcaatccaacgagaagagccaggtataagagacaagttcacaacctcactcaagttatcaggggctcagataaaacaacagttacttgctcaaaaggatcaggctgtccattttgtagaaaggagaattgaaagaactaagaagtttgtcgcaaaccaggccattggcttggttaagatgtgtttaccaagactagcagacatcgtgaacgttttgacggttatcatgttgctaaacgctctactagcattcatgcttgatcacataaaaagatttaatgaagctaggaggatagcccaggagaagaaggaaaagcagcacttgagagagctaaacactttgtatagcaagcactgggataatgaaaaaccaacatacctggaattcaagtctgatgtgattgaaaagttaccgcatacgctcgcaacctttgaaaagtactactccgaggacgacaagtacacttttcaagcaaaaccaaatgacatgatcgctcttgagaagattgttgcagtaacagcactgatactcatgatttttgatgctgagaggagtgattgtgtttacaaagttctgaacaaattgaagggcattttgtcaacaaccacacaggatgcatacaggtttcaaagcttagacacctccaaaactcttctggaagagaaagagatgaccattgattttgaaattaatgaaggtgaagtgaaggcattctcaggcacacaaacaactttctctgagtggtgggacaatcaactgcagaatggaaatgtgataacccactacagaacagagggccaatttatggagttcacgagagctaatgcgcaacctgtggcgaatgaaattgcacacaatgatgcacaagacatactcgtgagaggtgctgttggatctgggaaatcaactggtctgccgttttatttgagcaataaaggaaaggttttaatgattgagtcaacaagacctttagctgaaaatgttttcaaacaattaaagagtgaacctttctatgtaagtcccacgctccgtatgagaggtacaacaagctacggagcatcaccaatcaccataatgactagtgggtacgctttacactattatgcaaacaatccagcaatgatgaaagagtataagtttgtcataatagatgagtgtcatgtacatgatgcaagtgcaattgccttcgtaagcttgctcaaggaatattcatttgacggcaagctcattaaagtgtctgcaacacctccagggagagaagtggaattcacaacgcagtatcctgtgactctagtgacggaggagagtctctctttcgagcagtttgtttcacaacagggtacgggtgcaaattgtgatatgttggatgtttgtgataatatacttgtctatgtagcaagctacaatgaagttgatcaattatcaaaaatgctactagatagaggacacattgtaaccaaagtggatgggagaaccatgaagaatggtaaaacagagattgaaagcaagggcagcagatcaaagcgacactttattgtggcaacaaacatcattgaaaatggtgtaacgcttgacattgaaggtgtcgtcgattttggtctcaaagtggtgccagagttagatgtggataacaggctaatgagatacacaaagcaaagtgtttcttatggagagagaatacagaggcttggaagagttggaagacacaaggctggcaaggcattgagaattggtgtaactgaaaaaggattgatgaaaccacccagcgttatcacaactgaagctgctttttactgttttgcgtatggattaccggttatggccgagggtgtaacaccaagtttactcagcaaatgtacagtgcagcaagcgcgtagcatgatgagctttgagcttccaataatgtacacagtgaatttggtaagatttgatggcactatgcatccttctgtgcataacttactgaagccgtataaactaagggattcaaatgtggtgctgaataagatggcgatacctcatgggaatgtgcggaactggcccacagttagagatttcaaacacatgggggttcgtattgatatacctgaagacacccgtgttccttttcacgcccgtggcatcccagataagttgcacaaagaaatctttgaagtgtgttgtaagtacaagggtgatgctggattcagtaaactgaatgtagtcaatgcatgcaagatagcatacactctccaaacagacccttcatcaattcagaggacaataaaaatacttgatgagctgatagcgcgtgagcaacaaaagcgagaatatttccaaaatgtggccaacacatcatgtgctggttccagctactctttgtcaaatatcatcaatgccatcagagcaaggagcacaagcgattacactcaggagaatttgagcgttttgcacagtgccagagcacaattgctggaattcaagaatataaacagtgatttctccaatctatcaactctaagcgaatttggtgcccttgaatgtttgcaatttgaatctttgcaaggggtaagcaagcatcttcagttaaaaggacattggaataaaccagtgttgatccaggactttttaattgcagcgggagtgctcggaggtgggtgttggatgctttatcaatatttcaaacaagagacgagcaaggcatttgtgttccaaggaaagaacagaaggacaaagcagaagttgaggtttcgagatgctagagacatgaaaggccgcatggaagtttacgcggatgaggggactatagtggaaaactttggcagcaaatacacaaagaagggaaaagttagaggtaccacaactggtatgggaacaaagactagaagatttacaaatatgtacggtttcgatccaacagagtactcttttgctagatacttggaccctatcacaggtgaaacactggatgaacaacccataacaaatttgaatcttgtttctgaacactttcaggaaatgagaagaaaatacagagagaatgatatcatggagtcgcagcacttcgctgcaagccccagtattgaagcttattttgtcaaagacgcaggccagaaagttttgaaagtcgacttgacaccacacaaacctttgttgtatagtgacaagtttggaaacattatgggttatcctgagagagaaggggagttaaggcaaactggcacagctgagtttattgatcccaaagagctaccagaaccaaaagagtctacggatttcgattttgagagtctcagcaagataggaggtttacgtgactataacccaatagctgcaaatgtttgtttgttagaaaacgaatcagcagagtattgtgatgagatatacggcattgggtatggaaacgtgatcataacgaatcagcatttgttcaggcacaataatggagaattgaccattaaatccaaacatggaactttcaagtgcaagaacacgtgcgcactcaagttgcttccgatagaaggccacgatctactcctcattcaaatgccaaaagatttccccgtgttcccacagaaactcagattcagggaaccaacacatgaggacaagatagttctcgtgagcacaaacttccaggagaaaagcttttcaagtgtagtttcagaatccagtaacatatcaagggtgaagcaagctaatttcttcaaacattggatttcgacagtagccggacagtgtggtaatcctatggtttccactaaagatggttttattgtagggattcacagtttgactgcaatttcaggtgaccttaatgtgttcacatctataccaccaaattttgaggatgaagtgctaaaacaaatgagcaaaaagaactggtgttgtggctggaagttgaacacgtcacaaattggatgggatgggattaaaattgtggatgatcaaccaaaggatcctttcccagtttcgaagatggtagggttgttgaatgaccttcaattgagtttccagagtgcgaagaatacaaagtggctattggaacgagctcatggcaacataaaggcagttgcccaggcttccagcgctcttgtcactaaacatgttgtaaaaggaaaatgccgcttgtttgaagtttacttaacaacggatgaagaagcagagaaattctttcgaccattgatgggtgcgtaccagaaaagtcgattaaataaggaggcatacgtgaaagatttgatgaaatacgcaactccaatagaagttggtcttgtcgacacgaggtgctttgagagatgttttgagaaggttcaaaatatgttggaattgaagggtttcagcaaatgcaactacgtcacttatgggcccgacattctaagcgctctcaatatgaaggcagcaatgggtgcattgtactcaggaaagaaaaaggatcacttctcagagatcagtgaggaaaaattcgacaacattctccaagcaagttgtgagagattgtacagtggtcgaatgggtgtttggaatggatcattgaaagcagagctgagaccacaagaaaaagtgctcgcaaataaaactcgatcatttacagcagcaccaattgacacacttttggctggaaaggtttgtgtggatgatttcaacaataagttctacagtttgcacctgaagatcccgtcgacagtgggaataacaaagttctatggtggttgggatcggctgctcaattctttaccagatggatgggtgtactgcgatgctgatggttcccaatttgacagctcactcactccataccttttgaatgctgtccttgagatgcggttgagacttatggaagaatgggatttgggtgaacagatgttgaaaaatctttatacagaaattgtgtacacacccatattgacaccagatggaacggttgtcaagaagtttaaagggaataacagtggacagccatccacagtggttgacaacacgctcatggttattatggcagtttattatgcagcggaaaagcttggtatcaaggggaatctcgaagatacacttgttttctttgccaacggggatgacctgctaattgccattaaaccagagtgtgaatcgtaccttgataaatttgagggcttgtttagtgaactgggattaaagtatgatttcagtagcagaacgaagaacaaaggtgacttgtggtttatgtcacacagaggaattcaaatagatgggatgtggattcctaaattggaagaggagcgcatcgtttcaattctggagtgggacagagctattcaaccagaacatagacttgaggcaatatgcgcagcaatgattgaagcatggggctatccaactctattaaaccacataaggaagttctacctttgggtcttagggcaagcaccatatagtcaattgagtgctgagggcaaggcaccatacatttcagaagtcgcgctcaagcacctatacactgaggagagagtcacaccagccgaattggaaaggtatagcattgcattaatcgactgttttgagtccgagagtgatgaggtgcttgtgtgtcgttttcaatcagatcaagagatattcaatgcaggtgagacgaagaaggataaagcgaggaagaatgaagaaaatcctgataagaactctgaggggcagagtagcaggcaaatagtgccagacagagatgtgaatgcaggaactgttggaacgttttcagttcctaggctcaagaaaatagcaggaaagctaaatattcctaggattggtggaaagatagttctcaatctagaccacctgctggaatataacccaccacaagatgacatttcaaatgttatagcaacacaagcacagtttgaagcatggtacaatggtgtcaaacaagcatatgaggttgaagattcacagatgggaattattctgaatggccttatggtgtggtgcatagagaatggcacatcaggagatttacaaggtgaatggacaatgatggatggagaggagcaggtgacataccctttaaaacctatcttggacaatgcaaagccaacattccgccaaataatgtcacatttctcggaagttgcggaagcctacattgaaaagaggaatgcaacagagaggtacatgccacggtatgggcttcagaggaacctaactgattatggcttggctagatatgcttttgacttctacaagctgacttcaaaaactcctgtacgtgctagggaagcacacatgcaaatgaaggcggcagcagttaggggcaagtcaacccgattatttggacttgatggcaatgttggaacagacgaggagaacacagagagacacacagcaggagatgtcaatcgtgatatgcacaccatgcttggtgttcgtatttag
    Quelles autres informations as-tu besoin?
    -- Jasmine --

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Il y avait des erreurs sur le script?
    En fait je pense que la personne voulait passer par un fichier texte car je dois regrouper les infos de 61 genomes, donc au lieu de passer d'une accesion a une autre, j'extrais en txt mes 61 genomes en "genebank" comme sur le lien que je t'ai donne et ensuite je lance le programme avec ce fichier txt. Mais si je peux passer directement par ncbi et genebank,ca me va encore mieux!
    Qu'en penses tu?

  11. #11
    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 vois ce que tu veux dire par accession,enfin je crois,le programme que tu m'as donne est super interessant mais dans mon cas je dois extraire ces infos d'une database genebank de 61 genomes.Je suppose qu'avec ce programme je pourrai le faire pour chaque genome,mais avec le programme que l'on m'a donne,je peux le faire directement a partir des donnees des 61 genomes.
    Mon programme peut également le faire directement pour 61 génomes, il suffit de remplir la liste @liste_acc avec les 61 références.

    Donc si j'ai bien compris le fichier all_GenBank.txt contient les fichiers genbank des 61 génomes bout à bout.

    Donc par exemple :
    LOCUS NC_003492 9532 bp ss-RNA linear VRL 23-OCT-2008
    DEFINITION Bean yellow mosaic virus, complete genome.
    ACCESSION NC_003492
    VERSION NC_003492.1 GI:19881394
    PROJECT GenomeProject:15339
    KEYWORDS .
    SOURCE Bean yellow mosaic virus
    ORGANISM Bean yellow mosaic virus
    Viruses; ssRNA positive-strand viruses, no DNA stage; Potyviridae;
    Potyvirus.
    REFERENCE 1 (bases 1 to 9532)
    AUTHORS Nakamura,S., Honkura,R., Iwai,T., Ugaki,M. and Ohashi,Y.
    TITLE The complete nucleotide sequence of bean yellow mosaic virus
    genomic RNA
    JOURNAL Ann. Phytopathol. Soc. Jpn. 62, 472-477 (1996)
    REFERENCE 2 (bases 5227 to 9532)
    AUTHORS Nakamura,S., Honkura,R., Ugaki,M., Ohshima,M. and Ohashi,Y.
    TITLE Nucleotide sequence of the 3'-terminal region of bean yellow mosaic
    virus RNA and resistance to viral infection in transgenic Nicotiana
    benthamiana expressing its coat protein gene
    JOURNAL Ann. Phytopathol. Soc. Jpn. 60, 295-304 (1994)
    REFERENCE 3 (bases 1 to 9532)
    CONSRTM NCBI Genome Project
    TITLE Direct Submission
    JOURNAL Submitted (02-APR-2002) National Center for Biotechnology
    Information, NIH, Bethesda, MD 20894, USA
    REFERENCE 4 (bases 1 to 9532)
    AUTHORS Nakamura,S.
    TITLE Direct Submission
    JOURNAL Submitted (01-MAR-1996) Shigeo Nakamura, Miyagi Prefecture
    Agricultural Reseach Center, Plant Biotechnology;
    Takadate-kawakami, Natori, Miyagi 981-12, Japan (Tel:022-383-8131,
    Fax:022-383-9907)
    COMMENT REVIEWED REFSEQ: This record has been curated by NCBI staff. The
    reference sequence was derived from D83749.
    COMPLETENESS: full length.
    FEATURES Location/Qualifiers
    source 1..9532
    /organism="Bean yellow mosaic virus"
    /mol_type="genomic RNA"
    /strain="MB4"
    /db_xref="taxon:12197"
    5'UTR 1..190
    gene 191..9361
    /locus_tag="BYMVgp1"
    /db_xref="GeneID:935289"
    CDS 191..9361
    /locus_tag="BYMVgp1"
    /codon_start=1
    /product="polyprotein"
    /protein_id="NP_612218.1"
    /db_xref="GI:19881395"
    /db_xref="GeneID:935289"
    /translation="MTTINIGTIPVVINQNANTQMGEGTKNIFPFVKDFIDPFADLEM
    RCAERVKRMGELCFSKKGRYITMIPKPDYIKTREKEQREEELNFQNSEHVLSSIGTTC
    TPEHYSSRNNGMQVSFKTQHYKRTIRKPRIQAKKRDLKGQHTIHYVAKELLSIVKKRD
    MVLEVADKRKHANFATFRRYGKTYGMHIALNHMVRKRRRVDVTLNKLMTEIAMHCAIP
    PS : aujourd'hui je n'ai plus le temps, j'y regarderai demain.
    -- Jasmine --

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Et en fait, je dois a partir de chaque genome extraire chaque sequence de chaque CDS (grace a la numerotation de la sequence, par exemple si le CDS 1 va de la 1 a la position 1200,eet bien le programme extrait la sequence) et le programme effectue ca pour chaque CDS.
    Au final pour chaque genome,j'ai la sequence de chaque CDS avec les positions ds le genome + la sequence du genome complete ADN et polyprotein.
    Voila ce que devait faire le programme...

  13. #13
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Ok pas de soucis,
    merci pour ton aide!
    Bonne journee ;-)

  14. #14
    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
    Le premier genome a ces valeurs la:

    LOCUS NC_003492 9532 bp ss-RNA linear VRL 23-OCT-2008
    DEFINITION Bean yellow mosaic virus, complete genome.
    ACCESSION NC_003492
    VERSION NC_003492.1 GI:19881394
    NC_003492 = accession = entrée de mon programme (qui prend une liste de plusieurs accessions).

    Tu devrais quand même essayer d'utiliser le module Bio--DB::GenBank ... il est fait pour ça, et cela serait beaucoup plus simple et plus fiable que de 'chipoter' à essayer de récupérer et formater les données d'un fichier texte. Essaye le programme que je t'ai donné et donne lui en entrée la liste des accessions de tes séquences. Tu peux facilement récupérer les 91 accessions de ton fichier texte via une expression régulière repérant le tag 'LOCUS'. Je n'ai jamais testé avec autant de séquences mais si cela ne va pas tu pourras toujours essayer de lire ton fichier texte. A priori, je pense que cela devrait fonctionner vu qu'il n'y a qu'un accession à la fois par requête.
    -- Jasmine --

  15. #15
    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
    Voila, j'ai corrigé ton programme, vérifie bien qu'il fait exactement ce que tu veux. Je tiens cependant à répéter (et oui, je radote) que c'est une très mauvaise solution de lire un fichier texte alors que le module Genbank existe ... je ne garantis pas que tu ne perdras pas des informations en cours de lecture de ce fichier. Utiliser des expressions régulière afin de lire un texte est très puissant mais on n'est jamais certains d'avoir prévu tous les cas possibles.

    De façon générale, tu fais compliqué avec plusieurs substitutions quand on peut faire simple en une seule expression régulière.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # je garde les valeur de dÈbut et de fin de la protÈine
      if ($line=~ m/mat\_peptide/){
        $start = $line;
        $start =~ s/.*mat\_peptide\s+//;
        $start =~ s/\s+//g;
        $end = $start;
        $start =~ s/\.\..*//;
        $end =~ s/.*\.\.//;
        chomp $end;
        print "$start  $end\n";
      }
    équivaut à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	# je garde les valeur de dÈbut et de fin de la protÈine  mat_peptide     1043..2413
    	elsif ($line=~ m/mat_peptide\s+(\d+)\.\.(\d+)/){
    		$start = $1;
    		$end = $2;
    	}
    Pour ce qui est de récupérer la séquence en concaténant ses morceaux répartis sur plusieurs lignes, je n'aime pas trop cette méthode que je trouve dangereuse (j'ai déjà eu par le passé la mauvaise surprise de perdre un bout) ... Bio--DB::GenBank reste plus fiable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        my $info = $gb->get_Seq_by_acc($acc);
        my $sequence = $info->seq();
    Néanmoins, voici le code récupérant les informations du fichier texte sans utiliser Bio--DB::GenBank. Je ne l'ai testé que pour la séquence que tu m'avais renseignée (NC_003492). Probablement devras-tu un peu l'adapter afin qu'il fonctionne pour tous tes génomes. J'ai utilisé le module FileHandle afin de créer automatiquement les fichiers de sortie mais tu peux t'en passer en les créant manuellement avant d'exécuter ce code. Une dernière chose, il faut dans ce script un signal de fin du génome traité, j'ai utilisé le signe // qui se retrouve à la fin de mon fichier GenBank, vérifie bien qu'il soit présent entre tes différents génomes.

    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
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    #!/usr/bin/perl
     
     
    # oblige ‡ utiliser la dÈclaration de variable pour chaque nouvelle variable (my $variable;)
    use strict;
    # explique les bugs
    use warnings;
    # manipulation de fichiers  (à installer)
    use FileHandle; 
     
    # le path du fichier dans une variable
    my $dir = 'P:/Perl/scripts2/Test/';
    my $genbank = "all_GenBank.txt";
     
    # j'ouvre le fichier (||) ou je meurs
    open (FILE, $dir.$genbank) || die $!;     		# ===> inutile de mettre des doubles quotes autour d'une variable    $! contient l'info de l'erreur système
     
     
     
    ## dÈclaration des variables que je vais utiliser
    my $line;
    my $locus;
    my $definition;
    my $translation = 0;
    my $seq;
    my $complete_seq;
    my $start_cds;
    my $start;
    my $end;
    my $product = "";
    my $protein_id;
    my $prot_seq;
     
     
     
    # boucle pour chaque ligne du fichier
    while (my $line = <FILE>){			# ===> on peut directement lire le fichier ligne par ligne
     
    # si la string de $line match avec un truc qui commence (^) par "LOCUS"
    	if ($line =~ m/^LOCUS\s+(\w+)\s/){   		# ===> expreg dans le if meilleur" qu'un split après le if
    		$locus = $1;
    	}    
     
    	elsif ($line =~ m/^DEFINITION\s+(.*?)(:?, complete)/){		# ====> elsif meilleur que if   Expreg remplace $definition =~ s/^DEFINITION\s+//;  et $definition =~ s/, complete.*//;
    		$definition = $1;
    		# je remplace les espaces par "_" le "g" c'est pour qu'il le fasse pas juste avec le premier, mais avec tous
    		$definition =~ s/ /_/g;
    		# je crÈ le repertoire qui portera le nom du virus
    		mkdir $dir.$definition;
    	}
     
    	# si ya "translation dans la ligne ou si la variable translation est Ègale ‡ 1"
    	elsif ((!$translation) && ($line =~ m/translation=\"([A-Z]+)/)){
    		# je dÈfini translation ‡ 1
    		$translation = 1;
    		$complete_seq = $1;
     
    	}
    	elsif (($translation) && ($line =~ m/^\s+([A-Z]+)"?/)){
    		# je rajoute la string $seq ‡ $complete_seq
    		$complete_seq = $complete_seq.$1;
    	}
     
    	# je garde les valeur de dÈbut et de fin de la protÈine  mat_peptide     1043..2413
    	elsif ($line=~ m/mat_peptide\s+(\d+)\.\.(\d+)/){
    		$start = $1;
    		$end = $2;
    	}
    	# je garde la valeur de dÈbut de la CDS
    	elsif ($line=~ m/CDS\s+(\d+)\.\./){  
    		$start_cds = $1;
    	}
    	# je garde le nom de proteine et l'id
    	elsif ($line=~ m/\/product="(.*)"/){ 
    		$product = $1;
    	}
    	# j'Ècris dans un fichier le nom et l'id, et la sÈquence de la protÈine
    	elsif (($line=~ m/\/protein_id="(.*)"/)&&($product !~ m/polyprotein/)){    # ===>  utiliser && et non le simple &
    		$protein_id = $1;
    	}
     
    	# quand on toutes les information
    	if(($definition)&&($product)&&($protein_id)&&($start)&&($end)&&($start_cds)){
    		# je crée le fichier de sortie
    		my $fs = FileHandle->new('>'.$dir.$definition.'/'.$product.'.txt');
    		print $fs "\>$product\t$protein_id\n";
     
    		# et oui c'est les coordonnÈes nuclÈiques...
    		my $tmpstart =  int(($start-$start_cds)/3);  
    		my $tmpend = (($end-$start_cds+1)/3)-$tmpstart;  
    		# substring chope la strin qui va de $tmpstart et qui fait $tmpend de long
    		$prot_seq = substr($complete_seq, $tmpstart, $tmpend);
    		print $fs "$prot_seq\n";
     
    		$start = 0;
    		$end = 0;
    		$product = "";
    		$protein_id = '';
    	}
     
    	# quand on arrive à la fin des données du premier génome
    	elsif($line =~ '//'){
    		# réinitialisation des variables pour le génome suivant du fichier
    		$locus = '';
    		$translation = 0;
    		$seq = '';
    		$complete_seq = '';
    		$definition = '';
    		$start_cds = '';
    		$prot_seq = '';
    	}
    }
    # \n retour ‡ la ligne
    print "tadam!!!\n\n"
    Ce script crée les répertoires correspondant aux virus (ex : Bean_yellow_mosaic_virus)
    et y place les fichiers : (par ex pour le répertoire Bean_yellow_mosaic_virus)
    P1 protein.txt
    HC-Pro protein.txt
    P3 protein.txt
    6K1 protein.txt
    CI protein.txt
    6K2 protein.txt
    NIa-VPg protein.txt
    NIa-Pro protein.txt
    NIb protein.txt
    coat protein.txt

    contenant par exemple pour NIa-Pro protein.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >NIa-Pro protein	NP_734180.1
    SLSKIGGLRDYNPIAANVCLLENESAEYCDEIYGIGYGNVIITNQHLFRHNNGELTIKSKHGTFKCKNTCALKLLPIEGHDLLLIQMPKDFPVFPQKLRFREPTHEDKIVLVSTNFQEKSFSSVVSESSNISRVKQANFFKHWISTVAGQCGNPMVSTKDGFIVGIHSLTAISGDLNVFTSIPPNFEDEVLKQMSKKNWCCGWKLNTSQIGWDGIKIVDDQPKDPFPVSKMVGLLNDLQLSFQ
    ... j'espère que c'est bien ce que tu voulais faire.
    N'hésite pas à me poser des questions.
    -- Jasmine --

  16. #16
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Mail d'hier
    "Salut!
    merci pour avoir corriger mon programme qui n'est d'ailleurs pas vraiment le mien car je suis vraiment au tout debut de Perl,du moins qd j'ai le temps d'apprendre...J'ai tente d'utiliser le programme corrige que j'ai renomme parse_genBank2, sur un fichier contenant tout les genomes que j'ai appele all_genBank2, j'ai mis le programme en .pl dans un meme dossier que all_genBank2, j'ai lance le terminal,j'ai fais mkdir data et perl parse_genBank2.Mais rien ne s'est produit,je suppose que j'ai fait une connerie quelquepart,je n'ai pas cree a la main les different dossier,ca peut venir de la,mais comment utilise FileHandle dans ce cas?
    Merci et desole,c'est vrai que je suis lent a comprendre...
    Merci de ton aide
    A bientot"

    En fait je bosse sur mac donc j'ai un terminal que je peux utiliser directement.J'ai deja le module FileHandle ds ce terminal.Ensuite ca serait comment lancer le programme,car qd je fais la manipes decrites auparavant,ca ne marche pas...Tu as une idee?

  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
    As-tu bien modifié cette partie de mon script?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # le path du fichier dans une variable
    my $dir = 'P:/Perl/scripts2/Test/';
    my $genbank = "all_GenBank.txt";
    Aucun message d'erreur?
    -- Jasmine --

  18. #18
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Ok donc j'ai bien modifie le deuxieme en le remplacant par genBank2 mais pas le 1er puisque j'avais fait mkdir data avant...Je dois le remplacer par le dossier data que j'ai cree avant non?
    Pas de message d'erreur non...

  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
    Si tu n'as aucun message d'erreur c'est donc que la commande suivante fonctionne bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # j'ouvre le fichier (||) ou je meurs
    open (FILE, $dir.$genbank) || die $!;
    ... il trouve bien ton fichier

    Par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	# quand on toutes les informations
    	if(($definition)&&($product)&&($protein_id)&&($start)&&($end)&&($start_cds)){
    		# je crée le fichier de sortie
    		my $fs = FileHandle->new('>'.$dir.$definition.'/'.$product.'.txt');
    Si tu n'as pas modifier le contenu de ma variable $dir ... le programme ne doit pas être très content, il essaie de créer un fichier dans un répertoire qui n'existe pas...
    Par contre, tu n'as pas de message d'erreur
    ... donc ton programme ne rentre jamais dans la boucle. Conclusion : toutes les informations ne sont pas trouvées.

    La meilleure chose à faire est que tu essaies de comprendre ce script et que tu regardes quelles informations ne sont pas récupérées (utilise des print). Pour cela tu dois comprendre les expressions régulières et voir en quoi le fichier que tu utilises est différent du mien (sur lequel ce script fonctionne).
    -- Jasmine --

Discussions similaires

  1. probleme de programmation (debutant)
    Par oudin77 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 28/05/2008, 11h45
  2. [DEBUTANT]Probleme executer programme
    Par lavazavio dans le forum Dev-C++
    Réponses: 6
    Dernier message: 27/10/2007, 21h30
  3. Debutant en JAVA, problème avec 1er programme
    Par Gymerus dans le forum Entrée/Sortie
    Réponses: 13
    Dernier message: 07/09/2005, 12h10
  4. [langage] Renseignement pour débuter sur perl
    Par freeshman dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2004, 23h47
  5. [Kylix] probleme execution programme
    Par vin's dans le forum EDI
    Réponses: 1
    Dernier message: 31/03/2004, 12h25

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