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 :

Problème progra bioinfo.


Sujet :

Bioinformatique Perl

  1. #1
    Futur Membre du Club
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Problème progra bioinfo.
    Bonjour,

    je viens vous demander conseil parce que je doit réaliser un programme, permettant d'analyser des séquences au format fasta présente dans un fichier(télécharger du site NCBI),
    et une fois différencier mettre les séquences dans des fichiers distincts. donc pour cela je pensais créer mes fichiers dans une boucle qui différencie le nom demander dans une expression régulière et qui par la suite permette de créer le bon fichier, pour ne pas qu'il se créé tous à chaque fois.

    merci beaucoup.

  2. #2
    Membre confirmé
    Avatar de MaliciaR
    Inscrit en
    Juillet 2008
    Messages
    513
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 513
    Points : 600
    Points
    600
    Par défaut
    Salut et bienvenu,

    C'est quoi exactement la question?
    Le tact dans l'audace c'est de savoir jusqu'où on peut aller trop loin. Cocteau
    L'abjection la plus totale, ce n'est pas de trahir, c'est de ne jamais donner un commencement de réalité à ses rêves les plus fous. M. Moreau


    Les indispensables : Les règles, , FAQ et tutos avant de poster, et !
    Traduction de Linux Device Drivers 3 : venez participer
    membre de l'April - Promouvoir et défendre les logiciels libres

  3. #3
    Futur Membre du Club
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    je voulais savoir si vous savier comment je peux créer un fichier dans une boucle et comment faire pour que ce fichier porte le nom que l'utilisateur soihait lui donner

  4. #4
    Membre confirmé
    Avatar de MaliciaR
    Inscrit en
    Juillet 2008
    Messages
    513
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 513
    Points : 600
    Points
    600
    Par défaut
    Si je comprends bien, tu veux traiter des trucs et écrire les résultats dans un fichier dédié.
    Ce n'est pas une bonne idée de créer le fichier dans la boucle, mais en-dehors. En fait, si tu le crées dans la boucle, il sera créé à chaque tour de boucle et à chaque tour de boucle tu écriras des trucs dedans, mais ils seront effacés au tour suivant... Ainsi, tu te retrouveras joyeusement avec un fichier contenant uniquement le résultat du dernier tour de boucle.

    Donc, le mieux est que tu le fasses avant la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    open (MON_FICHIER_ADORE, ">> chemin/mon_fichier_adore.txt") or die ("Erreur lors de la création du fichier : $!\n");
     
    while (1) {   #ici, tu auras la condition d'exécution de ta boucle
      #instructions de la boucle;
      print MON_FICHIER_ADORE $_;
    }
     
    #fin du traitement, faut fermer le fichier :
    close MON_FICHIER_ADORE;
    Quelques éclaircissements :
    * en majuscule, c'est ce qu'on appelle le filehandle ou en français, le descripteur de fichier. C'est ce qui te permet de manipuler ton fichier. Pour libérer la ressource, faut le fermer lorsque tu n'as plus besoin de l'utiliser.
    * les ">>" indiquent que tu demandes à ton script de faire les choses suivantes :
    - créer un fichier;
    - écrire dedans;
    - écrire à la queleuleu : càd, que si je m'arrête à la boucle ici, j'aurai sauvegardé dedans tous les trucs dont j'ai besoin; si je l'utilise plus tard, dans une autre boucle, avec les mêmes ">>" dans le open, je vais écrire les résultats de la 2nde boucle à la suite de ceux de la 1re (je ne vais pas les écraser). Pour comprendre ça, fais le parallèle avec le ">" au lieu de ">>".
    * les variables $! et $_ sont dites spéciales. Je te recommande, si tu ne les connais pas, de te documenter dessus. Il y a de nombreuses ressources sur ce site qui te permettront de le faire


    J'espère que cela t'aide. N'hésite pas si tu as d'autres questions
    Le tact dans l'audace c'est de savoir jusqu'où on peut aller trop loin. Cocteau
    L'abjection la plus totale, ce n'est pas de trahir, c'est de ne jamais donner un commencement de réalité à ses rêves les plus fous. M. Moreau


    Les indispensables : Les règles, , FAQ et tutos avant de poster, et !
    Traduction de Linux Device Drivers 3 : venez participer
    membre de l'April - Promouvoir et défendre les logiciels libres

  5. #5
    Futur Membre du Club
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    non en faite ce que je souhaite faire c'est un programme qui lit les séquences et écrit chaque seq dans un fichier différent en fonction de c qui est cherché. c'est pour cela que j'avait pensé le mettre dans une boucle. par xemple j'ai des séquences pour 3 peuples mais je ne ve afficher que celle d'un seul peuple donc je ne créer donc qu'un seul fichier pour cette population et pas les 3 fichiers différents.

    je sais je n'explique pas très bien je suis désolée

  6. #6
    Membre confirmé
    Avatar de MaliciaR
    Inscrit en
    Juillet 2008
    Messages
    513
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juillet 2008
    Messages : 513
    Points : 600
    Points
    600
    Par défaut
    Si tu veux faire ça, tu dois faire des conditions, ça donnera grossièrement un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while ( my $titre = <FICHIER_SEQUENCES> ) { #c'est là où sont stockées les séquences que tu souhaites trier 
      if ( $titre =~ /peuple1/ ) { #le titre contient une expression régulière "peuple1"
        print FICHIER_PEUPLE1 $titre."\n";
      } 
      elsif ( $titre =~ /.../ ) {
        print FICHIER_PEUPLE2 $titre."\n";
      } 
      else {
        ...
      }
    }
    Mais je répète : l'ouverture en écriture de ton fichier se fait avant le début de la boucle, pour les raisons que j'ai explicitées plus haut.
    Donc, dans l'ordre : tu ouvres ton fichier contenant les séquences en lecture, le fichier qui contiendra tes séquences triées en écriture et tu fais la boucle avec les conditions. Dans l'expression régulière (le truc que j'ai indiqué /peuple1/ ), il faut que tu mettes une suite de caractères qui matchent une suite de caractères dans le titre de tes séquences souhaitées.

    Tu veux juste les titres ou les séquences aussi? Quel est le format de tes titres? Quel est ton niveau en programmation en fait?
    Le tact dans l'audace c'est de savoir jusqu'où on peut aller trop loin. Cocteau
    L'abjection la plus totale, ce n'est pas de trahir, c'est de ne jamais donner un commencement de réalité à ses rêves les plus fous. M. Moreau


    Les indispensables : Les règles, , FAQ et tutos avant de poster, et !
    Traduction de Linux Device Drivers 3 : venez participer
    membre de l'April - Promouvoir et défendre les logiciels libres

  7. #7
    Futur Membre du Club
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    je voudrais les séquences ensuite,

    mon fichier contenant les séquences sont au format fasta et après les avoir triés je les met a nouveau dans un fichier fasta.

    sinon mon niveau en progra n'est pas très bon enfin disons surtout que je n'ai pas fait de perl depuis 6 mois donc je commence a oublier...

  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
    non en faite ce que je souhaite faire c'est un programme qui lit les séquences et écrit chaque seq dans un fichier différent en fonction de c qui est cherché.

    Lors de l'utilisation de fichiers fasta, il vaut mieux utiliser le module Bio::SeqIO
    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
    #!/usr/local/bin/perl
     
     
    use strict;
    use warnings;
     
    use Bio::SeqIO;
     
     
    my $in  = Bio::SeqIO->new(-file => "file.txt", '-format' => 'Fasta');
     
    # lecture séquence par séquence
    # on récupère l'identifiant et la séquence en même temps
    while ( my $seq = $in->next_seq()){
     
     
            # condition sur l'identifiant 
    	if ($seq->primary_id =~ m/regexp1/){
                # fichier de sortie qui sera utiliser
                my $out = Bio::SeqIO->new(-file => ">file_out.txt", '-format' => 'Fasta');
                # écriture de l'id et de la séquence en même temps
                $out->write_seq($seq);
            }
     
            # condition sur la séquence
            if ($seq->seq  =~ m/regexp2/){
                # fichier de sortie qui sera utiliser
                my $out = Bio::SeqIO->new(-file => ">file_out2.txt", '-format' => 'Fasta');
                # écriture de l'id et de la séquence en même temps
                $out->write_seq($seq);     
    	}
    }

    PS : si les fichiers de sortie doivent être créés dans le script, utilise le module FileHandle
    -- Jasmine --

  9. #9
    Futur Membre du Club
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    19
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 19
    Points : 9
    Points
    9
    Par défaut
    Ok merci beaucoup

    j'ai réussi a faire ce que je voulais avec votre aide

  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 Cherisch Voir le message
    Ok merci beaucoup

    j'ai réussi a faire ce que je voulais avec votre aide
    Tant mieux, tu peux donc indiquer que ce sujet est résolu .
    -- Jasmine --

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

Discussions similaires

  1. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  2. Problème d'impression
    Par IngBen dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/05/2002, 11h37
  3. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10
  4. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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