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 :

Split de fichier


Sujet :

Bioinformatique Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Points : 32
    Points
    32
    Par défaut Split de fichier
    Bonjour à tout et à tous,

    Savez vous quel module du Perl ou quel logiciel qui permet de diviser un fichier FASTA en plusieurs fichier de même format? Par exemple j'ai un fichier Fasta comme suivant contenant les séquences, et je veux diviser en trois différents fichiers avec son nom A1.fasta, B1.fasta, C1 fasta.

    En général comment diviser un fichier des séquences en N fichiers avec les noms différents?

    Merci en avance!
    jobim08

    >A1
    GATACCAGCGGGATCATTATGCCACATTCTGATCTTGGACCTGCATTATAGATCTGACTT
    >A2
    AAGTCAGATCTATAATGCAGGTCCAAGATCAGAATGTGGCATAATGATCCCGCTGGTATC
    >B1
    CGCGTCGAAATTTTGCACGGCTGTTAGTTTTACGAGTTGAGCAGTCAAGATTAAATGATG
    >B2
    CATCATTTAATCTTGACTGCTCAACTCGTAAAACTAACAGCCGTGCAAAATTTCGACGCG
    >B3
    GGAGCCAGTCACTCATCCTGACGACATTCGGATCATTACTGACGTAGTACTAAGGAACGA
    >C1
    TCGTTCCTTAGTACTACGTCAGTAATGATCCGAATGTCGTCAGGATGAGTGACTGGCTCC
    >C2
    GCTAAACTACTGCAGCACCAGAGGGCACATCACCCGTACCTGATTCCACCACCAACTACC
    >C3
    GGTAGTTGGTGGTGGAATCAGGTACGGGTGATGTGCCCTCTGGTGCTGCAGTAGTTTAGC
    >C4
    CCATTGCTATTGCCACCGGATCCTCAGACTTCGTTGGTGTATCAGCTATCGCATCTGGTT
    >C5
    CCATTGCTATTGCCACCGGATCCTCAGACTTCGTTGGTGTATCAGCTATCGCATCTGGTT

  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,

    Sur quelle base veux-tu repartir tes séquences? Le fichier A doit-il contenir toutes les séquences contenant un A (ici A1 et A2)?

    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
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use Bio::SeqIO;
     
     
    # fichier d'entrée
    my $in  = Bio::SeqIO->new(-file => "test.txt", '-format' => 'Fasta');
     
    # les fichiers de sortie
    my $outA= Bio::SeqIO->new(-file => ">sequencesA.fsa", '-format' => 'Fasta');
    my $outB = Bio::SeqIO->new(-file => ">sequencesB.fsa", '-format' => 'Fasta');
    my $outC = Bio::SeqIO->new(-file => ">sequencesC.fsa", '-format' => 'Fasta');
     
    # récupération des séquences
    while ( my $seq = $in->next_seq()){
        if($seq->primary_id =~ /A/){
            $outA->write_seq($seq);
        }
        elsif($seq->primary_id =~ /B/){
            $outB->write_seq($seq);
        }
        elsif($seq->primary_id =~ /C/){
            $outC->write_seq($seq);
        }
    }
    -- Jasmine --

  3. #3
    Membre actif Avatar de CKLN00
    Homme Profil pro
    Bioinformaticien Java/Perl
    Inscrit en
    Avril 2008
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Bioinformaticien Java/Perl
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 210
    Points : 263
    Points
    263
    Par défaut
    non je pense que jobim veut faire un fichier par séquence
    (mais étant donner que je connais pas encore tout à fait le module je ne donnerais pas le code même is j'ai une vague idée de ce qu'il faut mettre j'aimerais bien voir ce que tu ferais dans ce cas la jasmine )
    CKL
    N°°b forever
    --
    may the be with you

  4. #4
    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
    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
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use Bio::SeqIO;
     
     
    # fichier d'entrée
    my $in  = Bio::SeqIO->new(-file => "test.txt", '-format' => 'Fasta');
     
    # récupération des séquences
    while ( my $seq = $in->next_seq()){
        my $id = $seq->primary_id ;
        my $out = Bio::SeqIO->new(-file => ">".$id.".fa", '-format' => 'Fasta');
        $out ->write_seq($seq);
    }
    -- Jasmine --

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Merci beaucoup Jasmine!

    Ton programme me plait bien. Je t'explique en détaille mon problème comme suit:

    - j'ai une liste de 384 séquences (séquences sont nommés: A1,...P1, A2,...P2, A24,...,P24) à comparer avec une autre base de séquences donc j'ai utilisé BLAST. Le résultat est un fichier qui contient le nom de séquences et les SUJETS sur les quels les séquences matchent 100% (Identities = 100%). Alors il y a pour chaque séquence il y a certains SUJETS qui matchent 100%. Le fichier de résultat est comme suit:

    >nom de séquence (A1,...,P24)
    SUBJET (string ADN ACGT)

    ...

    Par exemple


    >A1
    GATACCAGCGGGATCATTATGCCACA.....TTCTGATCTTGGACCTGCATTATAGATCTGACTT
    >A1
    AAGTCAGATCTATAATGCAGGTCCAAG....ATCAGAATGTGGCATAATGATCCCGCTGGTATC
    >A1
    CGCGTCGAAATTTTGCACGGCTGTTAGT....TTTACGAGTTGAGCAGTCAAGATTAAATGATG
    >B1
    GATACCAGCGGGATCATTATGCCACA.....TTCTGATCTTGGACCTGCATTATAGATCTGACTT
    >B1
    AAGTCAGATCTATAATGCAGGTCCAAG....ATCAGAATGTGGCATAATGATCCCGCTGGTATC
    >B1
    CGCGTCGAAATTTTGCACGGCTGTTAGT....TTTACGAGTTGAGCAGTCAAGATTAAATGATG
    ......
    ......
    >P1
    CATCATTTAATCTTGACTGCTCAACTCGT....AAAACTAACAGCCGTGCAAAATTTCGACGCG
    >P1
    GGAGCCAGTCACTCATCCTGACGACATTCG....GATCATTACTGACGTAGTACTAAGGAACGA
    >A2
    TCGTTCCTTAGTACTACGTCAGTAATGATCCGAATGTCGTCAGGATGAGTGACTGGCTCC
    >A2
    GCTAAACTACTGCAGCACCAGAGGGCACATCACCCGTACCTGATTCCACCACCAACTACC
    >B2
    GGTAGTTGGTGGTGGAATCAGGTACGGGTGATGTGCCCTCTGGTGCTGCAGTAGTTTAGC
    ...
    ...
    >P2
    CCATTGCTATTGCCACCGGATCCTCAGACTTCGTTGGTGTATCAGCTATCGCATCTGGTT
    >P2
    AACCAGATGCGATAGCTGATACACCAACGAAGTCTGAGGATCCGGTGGCAATAGCAATGG
    ...
    ...
    >A24
    ACGCAGAGTTCAAAGGAAAAGGAGAAAGGAGTGTTGAAGAAACAGCAAGAATGGTTGGTT
    >A24
    AACCAACCATTCTTGCTGTTTCTTCAACACTCCTTTCTCCTTTTCCTTTGAACTCTGCGT
    >A24
    CCCAGGGAACAAATGCTCTACGCCTTGACGGTACATATTTTCCAGGGCATATGGAATTAT
    ...
    ...
    >P24
    ATAATTCCATATGCCCTGGAAAATATGTACCGTCAAGGCGTAGAGCATTTGTTCCCTGGG
    >P24
    GTCCAAAGTCTTCTATTACAAAATGAAGGGTGATTACCACCGATACCTGGCGGAGTTCGC

    - Ensuite, je dois faire, pour chaque séquence, le contigage des SUJETS. Par exemple avec séquence A1, je dois faire le contigage de 3 SUJETS, pour P24 je dois faire 2 SUJETS.
    - Car plupart de software de contigage peut lancer un seul fichier par un job. Donc je dois obliger diviser mon fichier de résultat en des fichier correspondant au nom de séquences. C'est à dire chaque fichier contient de SUJETS qui corresponds à une séquences.
    - Alors dans le cas 384 séquences sont matches donc j'aurai 384 fichiers à faire le contigage. Donc avec l'exemple au-dessus, le premier fichier doit contient 3 SUJETS de séquences A1, et le dernier contient 2 SUJETS de P24. C'est à dire on divise le fichier selon nom de séquences. Par exemple les séquences nommés A1 sont situées dans le même fichier,..., les séquences nommé P24 sont situées dans le même fichier.

    Voilà, j'espère que vous comprenez mon problème et pour quoi je dois diviser mon fichier selon le nom de séquences.

    Merci m'aider à résoudre ce problème!
    Jobim

  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
    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
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use Bio::SeqIO;
     
     
    # fichier d'entrée
    my $in  = Bio::SeqIO->new(-file => "test.txt", '-format' => 'Fasta');
     
    # récupération des séquences
    while ( my $seq = $in->next_seq()){
        my $id = $seq->primary_id ;
        my $out = Bio::SeqIO->new(-file => ">>".$id.".fa", '-format' => 'Fasta');
        $out ->write_seq($seq);
    }
    The new() class method constructs a new Bio::SeqIO object. The returned object can be used to retrieve or print Seq objects. new() accepts the following parameters:

    -file

    A file path to be opened for reading or writing. The usual Perl conventions apply:

    'file' # open file for reading
    '>file' # open file for writing
    '>>file' # open file for appending
    '+<file' # open file read/write
    'command |' # open a pipe from the command
    '| command' # open a pipe to the command

    -fh

    You may provide new() with a previously-opened filehandle. For example, to read from STDIN:

    $seqIO = Bio::SeqIO->new(-fh => \*STDIN);
    -- Jasmine --

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Salut Jasmin,

    J'ai testé ton programme, chaque séquence correspond à un fichier. Ce n'est pas le cas que je veux. Peut être t'as pas compris mon problème . Les séquences sont divisées à la façon suivante:

    - Tout les séquences marquées par A1 sont divisées dans un fichier car plusieurs séquences ont le même nom A1,..., puis tout les séquences marquées par le même nom B1 dans un fichier,..., et de même tout les séquences marquées par le même nom P1 dans un fichier (voir la structure de mon fichier en bas).

    - Tout les séquences marquées par A2 sont divisées dans un fichier car plusieurs séquences ont le même nom A2,..., puis tout les séquences marquées par le même nom B2 dans un fichier,..., et de même tout les séquences marquées par le même nom P2 dans un fichier.

    .....
    .....

    - Tout les séquences marquées par A24 sont divisées dans un fichier car plusieurs séquences ont le même nom A24,..., puis tout les séquences marquées par le même nom B24 dans un fichier,..., et de même tout les séquences marquées par le même nom P24 dans un fichier.

    Voici je résume mon fichier:

    >A1
    >A1
    ..
    >A1
    >B1
    >B1
    ..
    >B1
    >P1
    >P1
    ...
    >P1
    >A2
    >A2
    ..
    >A2
    >B2
    >B2
    ..
    >B2
    >P2
    >P2
    ..
    >P2
    >A24
    >A24
    ..
    >A24
    >B24
    >B24
    ..
    >B24
    >P24
    >P24
    ..
    >P24

    Trang

  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
    Relis bien et tu verras que j'ai modifié un caractère dans le dernier script envoyé. Essaie de comprendre les explications jointes et les différentes façons d'ouvrir un fichier. Et s'il te plait, j'aimerais que tu arrêtes de polluer ma boîte de réception avec des copiés-collés de tes posts.
    -- Jasmine --

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Merci beaucoup. J'ai testé le programme, ça me plait beaucoup!

    jobim

Discussions similaires

  1. [Débutant] Split sur fichier texte pour alimenter une combobox
    Par ludo40190 dans le forum VB.NET
    Réponses: 8
    Dernier message: 23/07/2012, 20h14
  2. Réponses: 17
    Dernier message: 05/05/2011, 15h49
  3. split un fichier en plusieurs
    Par horalass dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 25/06/2009, 22h47
  4. Split de fichier
    Par zboub95 dans le forum kettle/PDI
    Réponses: 1
    Dernier message: 24/10/2008, 23h07
  5. [FPDF] Split un fichier PDF (FPDF?)
    Par Olv_m dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/06/2007, 11h14

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