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

Langage Perl Discussion :

parcours fichier .txt


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Par défaut parcours fichier .txt
    Bonjour ,

    J'ai un fichier contenant de l'information sous cette forme :
    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
    Feature: 1
    Name: ATPsyn-b-RA
    Start: 849
    End: 902
    Length: 54
    Sequence: TGTAAATTAAAACCCATTCGAGACGCTGGAACCATGAATATGCCCGAAAGATGA
    Score: 54
    Strand: +
    Pattern_name: pattern1
    Mismatch: .
     
    Feature: 2
    Name: ATPsyn-b-RA
    Start: 772
    End: 825
    Length: 54
    Sequence: CAAGTGCATCGCCGATCTGAGCGCTCTGGCACTGCGCGTCAAGTCTGCCTAAAC
    Score: 54
    Strand: +
    Pattern_name: pattern1
    Mismatch: .
    Et je souhaiterai, pour chaque Feature, recuperer Name_Feature et la sequence de cette facon :
    >Name_feature
    Sequence

    Par exemple,
    >ATPsyn-b-RA_1
    TGTAAATTAAAACCCATTCGAGACGCTGGAACCATGAATATGCCCGAAAGATGA

    Je ne vois pas du tout comment faire, quelqu'un pourrait m'aider ?
    Merci

  2. #2
    Membre averti
    Inscrit en
    Décembre 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 38
    Par défaut
    J'ai fait ceci :
    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
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my $fichier_fuzznuc = 'fuzznuc.report';
    open my $fh, '<', $fichier_fuzznuc or die "Impossible de lire le fichier $fichier_fuzznuc\n";
    while ( my $ligne = <$fh> ) {
    	chomp $ligne;
    	if ($ligne =~ m{^Name:} ) {
    		my ($Name,$gene) = split /:/,$ligne ;
    		print ">$gene"
    	}
    	if ($ligne =~ m{^Feature:} ) {
    		my ($Feature,$value) = split /:/,$ligne ;
        		print ";$value\n";
    	}
    	if ($ligne =~ m{^Sequence:} ) {
    		my ($Sequence,$seq) = split /:/,$ligne ;
        		print "$seq\n";
    	}
     
      }
     
     
    close $fh;
    Mais j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ; 1
    > ATPsyn-b-RA TGTAAATTAAAACCCATTCGAGACGCTGGAACCATGAATATGCCCGAAAGATGA
    ; 2
    > ATPsyn-b-RA CAAGTGCATCGCCGATCTGAGCGCTCTGGCACTGCGCGTCAAGTCTGCCTAAAC
    ; 3
    > ATPsyn-b-RA TGTGTTGGCCAGCATCTCTCCCCAGCAGGAGAAGGAGACTCTCAACAAGTGCAT
    ; 4
    > ATPsyn-b-RA GCCTTAGCCAGAAGCACATGGTCAACTGGATCACCACCAATGTGTTGGCCAGCA
    ; 5
    > ATPsyn-b-RA GGAGGTGAAGCGTCGTCTCGACTACCAGGTGGAGTGCCGCCACGTCGAGCGTCG
    Quelqu'un saurait comment je peux m'y prendre ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 35
    Par défaut
    Cela est tout à fait normal puisque le fichier est lu ligne par ligne et que l'affichage est fait au fur et à mesure.
    Pour contourner ce problème, il faudrait stocker les valeurs dans un tableau qu'il faut reinitialiser quand il est complet, et afficher les données en une fois.

    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
    my @tab;
    while ( my $ligne = <$fh> ) {
    	chomp $ligne;
    	if ($ligne =~ m{^Name:}) {
    		my ($Name,$gene) = split /:/,$ligne ;
    		$tab[0]=$gene;
    	}
    	if ($ligne =~ m{^Feature:} ) {
    		my ($Feature,$value) = split /:/,$ligne ;
        		$tab[1]=$value;
    	}
    	if ($ligne =~ m{^Sequence:} ) {
    		my ($Sequence,$seq) = split /:/,$ligne ;
        		$tab[2]=$seq;
    	}
     
            #test pour voir si le tableau est complet
            if($tab[0] && $tab[1] && $tab[2]){
                     print ">".$tab[0]." ".$tab[1]."\n".$tab[2]."\n \n";
                     $tab[0]=$tab[1]=$tab[2]=""; #vide le tableau
           }
     
      }
    Cela devrait faire l'affaire.
    J'ai pas testé le code.

    Il peut etre utile d'ajouter des sécurités dans le cas où il manque des données sur certaines séquences.
    Piste pour y repondre alors:
    à chaque fois que tu veux remplir une case dans ton tableau, il faut regarder si il y a deja un element dans cette case ( les 3 premiers if):
    1: Il n'y a rien => remplir la case
    2: il y a deja un element => affichage avec le print donner dans le code (et du coup il y aura un affichage incomplet), puis vider le tableau

Discussions similaires

  1. Boucle de parcours des fichiers txt
    Par emmye dans le forum C++
    Réponses: 2
    Dernier message: 19/04/2012, 11h15
  2. [langage]parcours fichier txt en perl sous windows
    Par stef74 dans le forum Langage
    Réponses: 12
    Dernier message: 23/06/2005, 16h39
  3. ouverture de fichier txt
    Par juguul dans le forum MFC
    Réponses: 11
    Dernier message: 18/12/2003, 09h44
  4. [langage] prob lecture fichier .txt
    Par martijan dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2003, 11h08
  5. communication fichier binaire fichier txt
    Par micdie dans le forum C
    Réponses: 3
    Dernier message: 05/12/2002, 00h19

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