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 :

Manipulation de fichier


Sujet :

Langage Perl

  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut Manipulation de fichier
    Bonjour à tous,
    Je cherche comment générer plusieurs fichiers à partir d'un fichier, je m'explique :
    J'ai un fichier qui ressemble à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >1-ATPsyn-b-RA
    TGTAAATTAAAACCCATTCGAGACGCTGGAACCATGAATATGCCCGAAAGATGA
    >2-ATPsyn-b-RA
    CAAGTGCATCGCCGATCTGAGCGCTCTGGCACTGCGCGTCAAGTCTGCCTAAAC
    >3-ATPsyn-b-RA
    TGTGTTGGCCAGCATCTCTCCCCAGCAGGAGAAGGAGACTCTCAACAAGTGCAT
    et je souhaite avoir trois fichiers à partir de ce premier :

    1er fichier : 1-ATPsyn-b-RA.txt :
    >1-ATPsyn-b-RA
    TGTAAATTAAAACCCATTCGAGACGCTGGAACCATGAATATGCCCGAAAGATGA
    2eme fichier : 2-ATPsyn-b-RA.txt :
    >2-ATPsyn-b-RA
    CAAGTGCATCGCCGATCTGAGCGCTCTGGCACTGCGCGTCAAGTCTGCCTAAAC

    etc ...

    est ce réalisable en perl ?

    Merci d'avance pour vos réponses

  2. #2
    Membre chevronné Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Par défaut
    Bonjour,

    Oui cela est réalisable en Perl (du moment qu'il s'agit de parser un fichier c'est toujours réalisable en Perl )

    Je vois trois façons de faire :
    1) - tu lis le fichier en entier que tu sauvegarde dans une variable
    - tu découpes suivant le symbole '>' pour avoir chaque identifiant/séquence dans un tableau
    - tu redécoupes suivant une expression régulière ou bien suivant le saut de ligne pour récupérer à chaque fois l'identifiant et la séquence de façon séparée
    - tu écris sous format fasta dans un fichier portant le nom de ton identifiant

    PS: cette méthode ne va pas bien gérer les gros fichiers

    2) - tu lis ligne par ligne le fichier
    - si la ligne commence par > : tu peut récupérer ton dientifiant
    - tu lis jusqu'à retrouver un symbole > ou bien la fin du fichier en sauvegardant la séquence
    - tu écris dans un fichier portant le nom de ton identifiant ton fichier au format fasta

    3) Tu installes Bioperl et utilises le module Bio::SeqIO pour parcourir directement tes séquences et extraire les identifiants/séquences. Il y a beaucoup de tutoriels sur ce module.

    A toi de voir, et si jamais tu n'y arrives toujours pas, reposte avec un code et quelqu'un pourra t'aider.

  3. #3
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut
    j'ai fait ceci, mais ca ne fonctionne pas ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my $file = 'test.fa';
    open my $fh, '<', $file or die "Impossible de lire le fichier $file\n";
     
    while ( my $ligne = <$fh> ) {
    	chomp $ligne;
    	my ($ID, $sequence ) = split /\t/,$ligne;
    	open ($fichier, ">$ID.fa");
    	print $fichier "$ID\t$sequence\n";
    	close($fichier);
    }
    à partir d'un fichier comme ca ( ca me semblait plus simple !!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1-ATPsyn-b-RA	TGTAAATTAAAACCCATTCGAGACGCTGGAACCATGAATATGCCCGAAAGATGA
    2-ATPsyn-b-RA	CAAGTGCATCGCCGATCTGAGCGCTCTGGCACTGCGCGTCAAGTCTGCCTAAAC
    3-ATPsyn-b-RA	TGTGTTGGCCAGCATCTCTCCCCAGCAGGAGAAGGAGACTCTCAACAAGTGCAT
    comment puis je faire pour "tu écris dans un fichier portant le nom de ton identifiant ton fichier au format fasta"

  4. #4
    Membre chevronné Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Par défaut
    A partir de ton fichier tabulé, il n'y a pas grand chose à changer pour avoir ce que tu veux, il suffit de changer ces deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    open ($fichier, ">$ID.fa");
    print $fichier "$ID\t$sequence\n";
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    open (my $fichier,'>', "$ID.fa");
    print $fichier ">$ID\n$sequence\n";
    1) avec le use strict, il faut mettre my $fichier
    2) mettre '>' avec l'identifiant et mettre \n et non \t pour la sortie. \n représente un saut de ligne, \t une tabulation

  5. #5
    Membre éclairé
    Inscrit en
    Janvier 2010
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 257
    Par défaut
    merci beaucoup pour votre aide

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

Discussions similaires

  1. Manipulation de fichier (copier, supprimer, déplacer)
    Par Guigui_ dans le forum Général Python
    Réponses: 1
    Dernier message: 21/10/2004, 10h26
  2. Manipulation des fichiers
    Par monsau dans le forum Langage
    Réponses: 7
    Dernier message: 21/09/2004, 17h45
  3. [LG]Manipulation de fichiers
    Par yffick dans le forum Langage
    Réponses: 29
    Dernier message: 10/01/2004, 15h04
  4. Manipulation de fichiers - gestion d'extensions
    Par ulukai dans le forum Linux
    Réponses: 13
    Dernier message: 02/07/2003, 15h28
  5. Réponses: 2
    Dernier message: 18/01/2003, 17h06

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