Bonjour,
pour pouvoir utiliser un programme particulier sur mes séquences (qui sont actuellement au format fasta), je dois les convertir au format embl.
J'ai trouvé ce post où Jasmine80 explique comment se servir du module Bio::seqIO pour convertir un fichier EMBL en fichier fasta.
à partir de là, c'était pas bien compliqué de faire l'inverse.
Voici mon code:
Le problème, c'est que le nom de mes fichiers fasta ne contient pas d'identifiant ensembl. Donc en sortie, mes séquences ne sont pas identifiées.
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 #!/usr/bin/perl -w ##packages utilises use strict; use diagnostics; use Bio::SeqIO; #pour la récupération des arguments use vars qw($opt_h $opt_f); use Getopt::Std; ##recuperation des arguments - initialisation getopts("hf:") or die("erreur(s) de saisie dans les options. Faire -h pour obtenir l'aide\n"); if (defined($opt_h)) { &help; exit; } elsif(!defined($opt_f)) { die("Parametre manquant : -f doit etre definit. Faire -h pour obtenir de l'aide.\n"); } my $out_file; if($opt_f =~ m/(.+)\.(fa|fasta)/) { $out_file = "$1.embl"; } my $in = Bio::SeqIO->new(-file => $opt_f , '-format' => 'fasta'); my $out = Bio::SeqIO->new(-file => ">$out_file" , '-format' => 'EMBL'); while ( my $seq = $in->next_seq() ) { $out->write_seq($seq); } sub help { print qq{ fasta_to_embl.pl prend en parametre un fichier au format fasta et le convertit au format EMBL (dans un nouveau fichier) Paramètres : -f : fichier fasta ou multifasta a convertir }; }
Par exemple, voici une sequence au format fasta en entré :
et voilà le résultat en sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 >KRT16 CCTGGATAAGGCTTTCGCTCTCTCCAGTTGGGGTATTAATAGCCTTTGGTGACCTTGAAGACCATTTTCAGTTCTGAGGGTGATGGGTCTGTGGATGGACCAGAACTCCAGGCCCAACCTGACACCTGAACACTGAGGTTTTTGTCCAAGATTCCGGGGTCCCCTTTGCCCCTTTTTGGGGTAGGGGTGAGGAGTGTCAGGTTCCCTCTCCCAGGTTTGACTCTGAAGGGATGTGCATCCGTTCTGCTCTTACCTCTGGGATGAATGACCAGGGGAGATGTAGCAGTGACAAAACCCTGGTTCTGCTGAGACAAGGAATTGCCTGCCCCAGTGGAGCTCAGGCAGAAGCAGGCTGTCTCTGGGCTCCTCACCTCAACAGAGACACTGCAGAGCAAGGCCAGTGGCCAGCACCGAGGGATGCCCCACAGCACCCTGAGGAGGCCCCGTCTTGGTGCCCAGACCCCTCCATCCTCCCTCCAGTCCTCGGTGCTGGACCAGGCTCTCAGGCCAAGGCCATGCCCACCATGGGCAGACCTCCTGCCAGTGATCGTGGGGAGGTGGGTGAGAGTTGGGTATACTGGCCCCGCCTGCAGGCATGGTGGGAGCCTGGAGAGGGCCAGAGTTCTGGGTTCTAGTTGCAGCTCTGCAGCTTAAAGCAGAGTGACTTTGAGTGAATCTCTACGCTCACAGAACTGTATGGCACACACTGGGCTCTCCATGCATGCCTGAGTGGGCCCATAACCAGTGCTCTCCCCCAGCTCAGCTGGATGAATGGAGCTGCCAGGCCTAGCCTGGGATCTGTGGACACAGGAGAGAGAACTGCTGGGAACGGATCCCCGGCTAGTCCTGTTTCTACAGGGTAGGGGGGGACTCTGAGGCCCAGGTGGGGTCAGGGGTCATACCTGGCTGTAGTGGCAGGATGGGGCTCCCTCCCACCAGCCTGCAGGTGGGGTGCCTGTGATTAGGAGAGGGCGGTAGAGGAGTGGCAGAGCTAGGTGTGGGGCTGTGGTGTTCTTCAGCTGGGAGTGTGGGGGGCGCAGGGCCCTGCTTAGGGGTGCGGGATGGTGCCAGTGTGTAGAGGTGAGTGTGAGGAGCAGGTGGCTGGAGGGGCAGGATGGGGAGGCTGAGGGGCAGGGCTGGCCCTCGGGGAAGGGCCGGTGGGGTCCTTCGCGCATGTTTCTTTGTGGCTAGTGGTGTGTCATCCCCTTTTACAGATGAGAAAACTGAGGACCAAGGGGCTATAGGACCAGCCTGTGCTGTACAGTTGGTAAGGGCAGAGCAGGGACTCAGTGCCGCCTGTCTAGCTCCATGGCCAGTGCTGTTTGTATGGTGCACACACTTCTGGAGATCCCGGGGGCTCAAGGCAGCCTCTGGAACTGGAATTAGATCCAAGAGGGGAAAGAGAGTTATAGGATTTTTAGAACAGAAGGGACTCTGCAGTCACCCAGTCCAGCCTGGTCACTGAGGGGAAACAGGCCCAGAGGTGGGAGGTGGGGAGCCTCAGGCCACACAGCAAGCAGAGTGAAGACAGGAACTCTGCCCCTGCCCAGAGTGGGACATGTGGGATCCCCACAACTGCTCCCCAAGACAGCCCAGGATGGCATCACTGAGCTCTCTTTCAGCCAAGGCTGTCACTGTGGGGCAGGGAGTTCTTCTGAAGGGCTGACTCACTGCCTGGGGACGCAGTTGCCACAAAGCCACCTGTGCCAAGGCCCGACTGGCCCCGAGGGCTCCAGGAAAGGGAGCCTGATTCCCCACCGCCTAGCCTGAGTCACCACCGAACTCGCATTTCTGTGTTTTTCTCTCGGCCCCACACCCCCAAAGCTGGGTGGGAACTCTGAGCCGGCACACAGCAGAGTTGATCCTGGGCTGAATAATCCAGAGTGAGGAGTTGGACGGGACCGGGAGTGATGAAATCCAGAGGGGAACCTGGAGTCAGCAGTTAGGAGGGCCCCGCCTTCCCCAGCTGCATATAAAGGTCTCTGGGGTTGGAGGCAGCCA
au niveau de la séquence, c'est tout à fait ce que je veux, mais pour identifiant et AC, il met unknown.
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 ID unknown; SV 1; linear; unassigned DNA; STD; UNC; 2001 BP. XX AC unknown; XX XX FH Key Location/Qualifiers FH XX SQ Sequence 2001 BP; 405 A; 517 C; 670 G; 409 T; 0 other; cctggataag gctttcgctc tctccagttg gggtattaat agcctttggt gaccttgaag 60 accattttca gttctgaggg tgatgggtct gtggatggac cagaactcca ggcccaacct 120 gacacctgaa cactgaggtt tttgtccaag attccggggt cccctttgcc cctttttggg 180 gtaggggtga ggagtgtcag gttccctctc ccaggtttga ctctgaaggg atgtgcatcc 240 gttctgctct tacctctggg atgaatgacc aggggagatg tagcagtgac aaaaccctgg 300 ttctgctgag acaaggaatt gcctgcccca gtggagctca ggcagaagca ggctgtctct 360 gggctcctca cctcaacaga gacactgcag agcaaggcca gtggccagca ccgagggatg 420 ccccacagca ccctgaggag gccccgtctt ggtgcccaga cccctccatc ctccctccag 480 tcctcggtgc tggaccaggc tctcaggcca aggccatgcc caccatgggc agacctcctg 540 ccagtgatcg tggggaggtg ggtgagagtt gggtatactg gccccgcctg caggcatggt 600 gggagcctgg agagggccag agttctgggt tctagttgca gctctgcagc ttaaagcaga 660 gtgactttga gtgaatctct acgctcacag aactgtatgg cacacactgg gctctccatg 720 catgcctgag tgggcccata accagtgctc tcccccagct cagctggatg aatggagctg 780 ccaggcctag cctgggatct gtggacacag gagagagaac tgctgggaac ggatccccgg 840 ctagtcctgt ttctacaggg taggggggga ctctgaggcc caggtggggt caggggtcat 900 acctggctgt agtggcagga tggggctccc tcccaccagc ctgcaggtgg ggtgcctgtg 960 attaggagag ggcggtagag gagtggcaga gctaggtgtg gggctgtggt gttcttcagc 1020 tgggagtgtg gggggcgcag ggccctgctt aggggtgcgg gatggtgcca gtgtgtagag 1080 gtgagtgtga ggagcaggtg gctggagggg caggatgggg aggctgaggg gcagggctgg 1140 ccctcgggga agggccggtg gggtccttcg cgcatgtttc tttgtggcta gtggtgtgtc 1200 atcccctttt acagatgaga aaactgagga ccaaggggct ataggaccag cctgtgctgt 1260 acagttggta agggcagagc agggactcag tgccgcctgt ctagctccat ggccagtgct 1320 gtttgtatgg tgcacacact tctggagatc ccgggggctc aaggcagcct ctggaactgg 1380 aattagatcc aagaggggaa agagagttat aggattttta gaacagaagg gactctgcag 1440 tcacccagtc cagcctggtc actgagggga aacaggccca gaggtgggag gtggggagcc 1500 tcaggccaca cagcaagcag agtgaagaca ggaactctgc ccctgcccag agtgggacat 1560 gtgggatccc cacaactgct ccccaagaca gcccaggatg gcatcactga gctctctttc 1620 agccaaggct gtcactgtgg ggcagggagt tcttctgaag ggctgactca ctgcctgggg 1680 acgcagttgc cacaaagcca cctgtgccaa ggcccgactg gccccgaggg ctccaggaaa 1740 gggagcctga ttccccaccg cctagcctga gtcaccaccg aactcgcatt tctgtgtttt 1800 tctctcggcc ccacaccccc aaagctgggt gggaactctg agccggcaca cagcagagtt 1860 gatcctgggc tgaataatcc agagtgagga gttggacggg accgggagtg atgaaatcca 1920 gaggggaacc tggagtcagc agttaggagg gccccgcctt ccccagctgc atataaaggt 1980 ctctggggtt ggaggcagcc a 2001 //
Ce que j'aimerais, c'est que le nom de ma sequence apparaisse, sinon en identifiant, au moins dans une ligne de description (DE au format ensembl).
Je n'ai pas trouvé de fonction permettant d'éditer / d'ajouter une ligne dans le module Bio::SeqIO.
Je vois bien la solution de parser le fichier de résultats et d'ajouter la ligne qui convient en faisant gaffe à l'ordre des séquences, mais je me demandais s'il n'y avait pas une méthode plus propre pour le faire...
Merci d'avance pour vos conseils (en espérant que tout le monde n'est pas partie en vacances )
Partager