File Coverage

blib/lib/Bio/MUST/Core/GeneticCode/Factory.pm
Criterion Covered Total %
statement 83 83 100.0
branch 5 6 83.3
condition n/a
subroutine 16 16 100.0
pod n/a
total 104 105 99.0


line stmt bran cond sub pod time code
1             package Bio::MUST::Core::GeneticCode::Factory;
2             # ABSTRACT: Genetic code factory based on NCBI gc.prt file
3             $Bio::MUST::Core::GeneticCode::Factory::VERSION = '0.212670';
4 17     17   184 use Moose;
  17         48  
  17         148  
5 17     17   122796 use namespace::autoclean;
  17         51  
  17         200  
6              
7             # AUTOGENERATED CODE! DO NOT MODIFY THIS FILE!
8              
9 17     17   1741 use autodie;
  17         45  
  17         184  
10 17     17   93069 use feature qw(say);
  17         49  
  17         1653  
11              
12 17     17   137 use Carp;
  17         54  
  17         1463  
13 17     17   132 use Const::Fast;
  17         47  
  17         193  
14 17     17   1198 use File::Spec;
  17         63  
  17         671  
15 17     17   109 use List::AllUtils qw(uniq);
  17         54  
  17         977  
16 17     17   128 use LWP::Simple qw(get);
  17         47  
  17         191  
17 17     17   2361 use Path::Class qw(file);
  17         49  
  17         919  
18 17     17   122 use Try::Tiny;
  17         51  
  17         888  
19              
20 17     17   144 use Bio::MUST::Core::Types;
  17         64  
  17         640  
21 17     17   152 use aliased 'Bio::MUST::Core::GeneticCode';
  17         47  
  17         154  
22              
23              
24             # public path to NCBI Taxonomy dump directory
25             has 'tax_dir' => (
26             is => 'ro',
27             isa => 'Bio::MUST::Core::Types::Dir',
28             coerce => 1,
29             );
30              
31              
32             # private hash hosting NCBI codes
33             has '_code_for' => (
34             traits => ['Hash'],
35             is => 'ro',
36             isa => 'HashRef[Bio::MUST::Core::GeneticCode]',
37             init_arg => undef,
38             lazy => 1,
39             builder => '_build_code_for',
40             handles => {
41             code_for => 'get',
42             list_codes => 'keys',
43             },
44             );
45              
46              
47             ## no critic (ProhibitUnusedPrivateSubroutines)
48              
49             sub _build_code_for {
50 2     2   5 my $self = shift;
51              
52             # split file content into code blocks
53 2         9 my @codes = $self->_get_gcprt_content =~ m/ \{ ( [^{}]+ ) \} /xmsgc;
54 2 50       12 croak "[BMC] Error: cannot parse 'gc.prt' file; aborting!" unless @codes;
55              
56             # Genetic-code-table ::= {
57             # ...
58             # {
59             # name "Mold Mitochondrial; Protozoan Mitochondrial; Coelenterate
60             # Mitochondrial; Mycoplasma; Spiroplasma" ,
61             # name "SGC3" ,
62             # id 4 ,
63             # ncbieaa "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
64             # sncbieaa "--MM---------------M------------MMMM---------------M------------"
65             # -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
66             # -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
67             # -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
68             # },
69             # ...
70             # }
71 2         36 my %code_for;
72              
73 2         8 for my $code (@codes) {
74              
75             # get all names and id for current code
76 54         582 my ($id) = $code =~ m/ id \s* (\d+) /xms;
77 54         530 my @names = $code =~ m/ name \s* \"(.*?)\" /xmsg;
78 54         247 @names = map { s{\n}{}xmsgr } @names; # remove newline chars
  70         387  
79 54         186 @names = map { split m{;\s*}xms } @names; # demultiplex names
  70         401  
80              
81             # retrieve the amino acid line
82 54         419 my ($aa_line) = $code =~ m/ ncbieaa \s* \"(.*?)\" /xms;
83 54         353 $aa_line =~ s{\*}{x}xmsg; # make STOPs MUST-compliant
84              
85             # retrieve the three codon lines
86 54         346 my ($b1_line) = $code =~ m/ Base1 \s* ([TACG]+) /xms;
87 54         280 my ($b2_line) = $code =~ m/ Base2 \s* ([TACG]+) /xms;
88 54         586 my ($b3_line) = $code =~ m/ Base3 \s* ([TACG]+) /xms;
89              
90             # split lines into aas and bases
91 54         525 my @aas = split //, $aa_line;
92 54         458 my @bases1 = split //, $b1_line;
93 54         472 my @bases2 = split //, $b2_line;
94 54         459 my @bases3 = split //, $b3_line;
95              
96             # build translation table for current code
97             my %aa_for = map {
98 54         496 join( q{}, $bases1[$_], $bases2[$_], $bases3[$_] ) => $aas[$_]
  3456         9962  
99             } 0..$#aas;
100              
101             # augment code using ambiguous nucleotides and gap codons
102 54         1025 %aa_for = _augment_code(%aa_for);
103              
104             # store translation table under its various id and names
105             $code_for{$_} = GeneticCode->new(
106             ncbi_id => $id,
107             _code => \%aa_for
108 54         4846 ) for ($id, @names);
109             }
110              
111 2         155 return \%code_for;
112             }
113              
114             const my %BASES_FOR => (
115             A => q{A},
116             C => q{C},
117             G => q{G},
118             T => q{T},
119             U => q{T},
120             M => q{[AC]},
121             R => q{[AG]},
122             W => q{[AT]},
123             S => q{[CG]},
124             Y => q{[CT]},
125             K => q{[GT]},
126             V => q{[ACG]},
127             H => q{[ACT]},
128             D => q{[AGT]},
129             B => q{[CGT]},
130             N => q{[ACGT]},
131             X => q{[ACGT]},
132             );
133              
134             sub _augment_code {
135 54     54   1174 my %aa_for = @_;
136              
137 54         164 my %amb_aa_for;
138              
139             # Note: each cannot be used here because of the nested loops
140 54         917 my @amb_bases = sort keys %BASES_FOR;
141 54         261 for my $ab1 (@amb_bases) {
142 918         2403 for my $ab2 (@amb_bases) {
143              
144             BASE:
145 15606         37209 for my $ab3 (@amb_bases) {
146              
147             # build regex for ambiguous codon
148 265302         549141 my $codon = join q{}, $ab1, $ab2, $ab3;
149 265302 100       534004 next BASE if exists $aa_for{$codon};
150 261846         466973 my $regex = join q{}, map { $BASES_FOR{$_} } $ab1, $ab2, $ab3;
  785538         1448173  
151              
152             # fetch corresponding aas
153 2731806         5244712 my @aas = uniq map { $aa_for{$_} }
154 261846         1668873 grep { m/$regex/xms } keys %aa_for;
  16758144         39050394  
155              
156             # add ambiguous codon to code if all aas are the same
157 261846 100       1571584 $amb_aa_for{$codon} = shift @aas if @aas == 1;
158             }
159             }
160             }
161              
162             # add gap 'codons' to code
163 54         256 $amb_aa_for{'***'} = q{*};
164 54         246 $amb_aa_for{'---'} = q{*};
165 54         177 $amb_aa_for{' '} = q{ };
166              
167 54         23585 return (%aa_for, %amb_aa_for);
168             }
169              
170             ## use critic
171              
172             # old version using a local or remote copy of NCBI gc.prt file
173             # sub _get_gcprt_content {
174             # my $self = shift;
175             #
176             # my $content;
177             #
178             # # if available use local copy in NCBI Taxonomy dump
179             # # otherwise try to fetch it from the NCBI FTP server
180             # try { $content = file($self->tax_dir, 'gc.prt')->slurp }
181             # catch { $content = get('ftp://ftp.ncbi.nih.gov/entrez/misc/data/gc.prt') };
182             #
183             # croak "Error: cannot read 'gc.prt' file; aborting!"
184             # unless $content;
185             #
186             # return $content;
187             # }
188              
189             # new version based on templating
190             sub _get_gcprt_content {
191 2     2   244 return <<'EOT';
192             --**************************************************************************
193             -- This is the NCBI genetic code table
194             -- Initial base data set from Andrzej Elzanowski while at PIR International
195             -- Addition of Eubacterial and Alternative Yeast by J.Ostell at NCBI
196             -- Base 1-3 of each codon have been added as comments to facilitate
197             -- readability at the suggestion of Peter Rice, EMBL
198             -- Later additions by Taxonomy Group staff at NCBI
199             --
200             -- Version 4.6
201             -- Renamed genetic code 24 to Rhabdopleuridae Mitochondrial
202             --
203             -- Version 4.5
204             -- Added Cephalodiscidae mitochondrial genetic code 33
205             --
206             -- Version 4.4
207             -- Added GTG as start codon for genetic code 3
208             -- Added Balanophoraceae plastid genetic code 32
209             --
210             -- Version 4.3
211             -- Change to CTG -> Leu in genetic codes 27, 28, 29, 30
212             --
213             -- Version 4.2
214             -- Added Karyorelict nuclear genetic code 27
215             -- Added Condylostoma nuclear genetic code 28
216             -- Added Mesodinium nuclear genetic code 29
217             -- Added Peritrich nuclear genetic code 30
218             -- Added Blastocrithidia nuclear genetic code 31
219             --
220             -- Version 4.1
221             -- Added Pachysolen tannophilus nuclear genetic code 26
222             --
223             -- Version 4.0
224             -- Updated version to reflect numerous undocumented changes:
225             -- Corrected start codons for genetic code 25
226             -- Name of new genetic code is Candidate Division SR1 and Gracilibacteria
227             -- Added candidate division SR1 nuclear genetic code 25
228             -- Added GTG as start codon for genetic code 24
229             -- Corrected Pterobranchia Mitochondrial genetic code (24)
230             -- Added genetic code 24, Pterobranchia Mitochondrial
231             -- Genetic code 11 is now Bacterial, Archaeal and Plant Plastid
232             -- Fixed capitalization of mitochondrial in codes 22 and 23
233             -- Added GTG, ATA, and TTG as alternative start codons to code 13
234             --
235             -- Version 3.9
236             -- Code 14 differs from code 9 only by translating UAA to Tyr rather than
237             -- STOP. A recent study (Telford et al, 2000) has found no evidence that
238             -- the codon UAA codes for Tyr in the flatworms, but other opinions exist.
239             -- There are very few GenBank records that are translated with code 14,
240             -- but a test translation shows that retranslating these records with code
241             -- 9 can cause premature terminations. Therefore, GenBank will maintain
242             -- code 14 until further information becomes available.
243             --
244             -- Version 3.8
245             -- Added GTG start to Echinoderm mitochondrial code, code 9
246             --
247             -- Version 3.7
248             -- Added code 23 Thraustochytrium mitochondrial code
249             -- formerly OGMP code 93
250             -- submitted by Gertraude Berger, Ph.D.
251             --
252             -- Version 3.6
253             -- Added code 22 TAG-Leu, TCA-stop
254             -- found in mitochondrial DNA of Scenedesmus obliquus
255             -- submitted by Gertraude Berger, Ph.D.
256             -- Organelle Genome Megasequencing Program, Univ Montreal
257             --
258             -- Version 3.5
259             -- Added code 21, Trematode Mitochondrial
260             -- (as deduced from: Garey & Wolstenholme,1989; Ohama et al, 1990)
261             -- Added code 16, Chlorophycean Mitochondrial
262             -- (TAG can translated to Leucine instaed to STOP in chlorophyceans
263             -- and fungi)
264             --
265             -- Version 3.4
266             -- Added CTG,TTG as allowed alternate start codons in Standard code.
267             -- Prats et al. 1989, Hann et al. 1992
268             --
269             -- Version 3.3 - 10/13/95
270             -- Added alternate intiation codon ATC to code 5
271             -- based on complete mitochondrial genome of honeybee
272             -- Crozier and Crozier (1993)
273             --
274             -- Version 3.2 - 6/24/95
275             -- Code Comments
276             -- 10 Alternative Ciliate Macronuclear renamed to Euplotid Macro...
277             -- 15 Blepharisma Macro.. code added
278             -- 5 Invertebrate Mito.. GTG allowed as alternate initiator
279             -- 11 Eubacterial renamed to Bacterial as most alternate starts
280             -- have been found in Archea
281             --
282             --
283             -- Version 3.1 - 1995
284             -- Updated as per Andrzej Elzanowski at NCBI
285             -- Complete documentation in NCBI toolkit documentation
286             -- Note: 2 genetic codes have been deleted
287             --
288             -- Old id Use id - Notes
289             --
290             -- id 7 id 4 - Kinetoplast code now merged in code id 4
291             -- id 8 id 1 - all plant chloroplast differences due to RNA edit
292             --
293             --
294             --*************************************************************************
295              
296             Genetic-code-table ::= {
297             {
298             name "Standard" ,
299             name "SGC0" ,
300             id 1 ,
301             ncbieaa "FFLLSSSSYY**CC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
302             sncbieaa "---M------**--*----M---------------M----------------------------"
303             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
304             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
305             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
306             },
307             {
308             name "Vertebrate Mitochondrial" ,
309             name "SGC1" ,
310             id 2 ,
311             ncbieaa "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNKKSS**VVVVAAAADDEEGGGG",
312             sncbieaa "----------**--------------------MMMM----------**---M------------"
313             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
314             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
315             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
316             },
317             {
318             name "Yeast Mitochondrial" ,
319             name "SGC2" ,
320             id 3 ,
321             ncbieaa "FFLLSSSSYY**CCWWTTTTPPPPHHQQRRRRIIMMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
322             sncbieaa "----------**----------------------MM---------------M------------"
323             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
324             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
325             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
326             },
327             {
328             name "Mold Mitochondrial; Protozoan Mitochondrial; Coelenterate
329             Mitochondrial; Mycoplasma; Spiroplasma" ,
330             name "SGC3" ,
331             id 4 ,
332             ncbieaa "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
333             sncbieaa "--MM------**-------M------------MMMM---------------M------------"
334             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
335             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
336             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
337             },
338             {
339             name "Invertebrate Mitochondrial" ,
340             name "SGC4" ,
341             id 5 ,
342             ncbieaa "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNKKSSSSVVVVAAAADDEEGGGG",
343             sncbieaa "---M------**--------------------MMMM---------------M------------"
344             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
345             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
346             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
347             },
348             {
349             name "Ciliate Nuclear; Dasycladacean Nuclear; Hexamita Nuclear" ,
350             name "SGC5" ,
351             id 6 ,
352             ncbieaa "FFLLSSSSYYQQCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
353             sncbieaa "--------------*--------------------M----------------------------"
354             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
355             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
356             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
357             },
358             {
359             name "Echinoderm Mitochondrial; Flatworm Mitochondrial" ,
360             name "SGC8" ,
361             id 9 ,
362             ncbieaa "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNNKSSSSVVVVAAAADDEEGGGG",
363             sncbieaa "----------**-----------------------M---------------M------------"
364             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
365             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
366             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
367             },
368             {
369             name "Euplotid Nuclear" ,
370             name "SGC9" ,
371             id 10 ,
372             ncbieaa "FFLLSSSSYY**CCCWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
373             sncbieaa "----------**-----------------------M----------------------------"
374             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
375             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
376             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
377             },
378             {
379             name "Bacterial, Archaeal and Plant Plastid" ,
380             id 11 ,
381             ncbieaa "FFLLSSSSYY**CC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
382             sncbieaa "---M------**--*----M------------MMMM---------------M------------"
383             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
384             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
385             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
386             },
387             {
388             name "Alternative Yeast Nuclear" ,
389             id 12 ,
390             ncbieaa "FFLLSSSSYY**CC*WLLLSPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
391             sncbieaa "----------**--*----M---------------M----------------------------"
392             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
393             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
394             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
395             },
396             {
397             name "Ascidian Mitochondrial" ,
398             id 13 ,
399             ncbieaa "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNKKSSGGVVVVAAAADDEEGGGG",
400             sncbieaa "---M------**----------------------MM---------------M------------"
401             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
402             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
403             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
404             },
405             {
406             name "Alternative Flatworm Mitochondrial" ,
407             id 14 ,
408             ncbieaa "FFLLSSSSYYY*CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNNKSSSSVVVVAAAADDEEGGGG",
409             sncbieaa "-----------*-----------------------M----------------------------"
410             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
411             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
412             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
413             } ,
414             {
415             name "Blepharisma Macronuclear" ,
416             id 15 ,
417             ncbieaa "FFLLSSSSYY*QCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
418             sncbieaa "----------*---*--------------------M----------------------------"
419             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
420             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
421             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
422             } ,
423             {
424             name "Chlorophycean Mitochondrial" ,
425             id 16 ,
426             ncbieaa "FFLLSSSSYY*LCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
427             sncbieaa "----------*---*--------------------M----------------------------"
428             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
429             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
430             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
431             } ,
432             {
433             name "Trematode Mitochondrial" ,
434             id 21 ,
435             ncbieaa "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNNKSSSSVVVVAAAADDEEGGGG",
436             sncbieaa "----------**-----------------------M---------------M------------"
437             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
438             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
439             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
440             } ,
441             {
442             name "Scenedesmus obliquus Mitochondrial" ,
443             id 22 ,
444             ncbieaa "FFLLSS*SYY*LCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
445             sncbieaa "------*---*---*--------------------M----------------------------"
446             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
447             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
448             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
449             } ,
450             {
451             name "Thraustochytrium Mitochondrial" ,
452             id 23 ,
453             ncbieaa "FF*LSSSSYY**CC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
454             sncbieaa "--*-------**--*-----------------M--M---------------M------------"
455             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
456             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
457             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
458             } ,
459             {
460             name "Rhabdopleuridae Mitochondrial" ,
461             id 24 ,
462             ncbieaa "FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSSKVVVVAAAADDEEGGGG",
463             sncbieaa "---M------**-------M---------------M---------------M------------"
464             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
465             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
466             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
467             } ,
468             {
469             name "Candidate Division SR1 and Gracilibacteria" ,
470             id 25 ,
471             ncbieaa "FFLLSSSSYY**CCGWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
472             sncbieaa "---M------**-----------------------M---------------M------------"
473             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
474             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
475             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
476             } ,
477             {
478             name "Pachysolen tannophilus Nuclear" ,
479             id 26 ,
480             ncbieaa "FFLLSSSSYY**CC*WLLLAPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
481             sncbieaa "----------**--*----M---------------M----------------------------"
482             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
483             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
484             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
485             } ,
486             {
487             name "Karyorelict Nuclear" ,
488             id 27 ,
489             ncbieaa "FFLLSSSSYYQQCCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
490             sncbieaa "--------------*--------------------M----------------------------"
491             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
492             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
493             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
494             } ,
495             {
496             name "Condylostoma Nuclear" ,
497             id 28 ,
498             ncbieaa "FFLLSSSSYYQQCCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
499             sncbieaa "----------**--*--------------------M----------------------------"
500             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
501             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
502             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
503             } ,
504             {
505             name "Mesodinium Nuclear" ,
506             id 29 ,
507             ncbieaa "FFLLSSSSYYYYCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
508             sncbieaa "--------------*--------------------M----------------------------"
509             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
510             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
511             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
512             } ,
513             {
514             name "Peritrich Nuclear" ,
515             id 30 ,
516             ncbieaa "FFLLSSSSYYEECC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
517             sncbieaa "--------------*--------------------M----------------------------"
518             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
519             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
520             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
521             } ,
522             {
523             name "Blastocrithidia Nuclear" ,
524             id 31 ,
525             ncbieaa "FFLLSSSSYYEECCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
526             sncbieaa "----------**-----------------------M----------------------------"
527             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
528             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
529             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
530             } ,
531             {
532             name "Balanophoraceae Plastid" ,
533             id 32 ,
534             ncbieaa "FFLLSSSSYY*WCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
535             sncbieaa "---M------*---*----M------------MMMM---------------M------------"
536             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
537             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
538             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
539             } ,
540             {
541             name "Cephalodiscidae Mitochondrial" ,
542             id 33 ,
543             ncbieaa "FFLLSSSSYYY*CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSSKVVVVAAAADDEEGGGG",
544             sncbieaa "---M-------*-------M---------------M---------------M------------"
545             -- Base1 TTTTTTTTTTTTTTTTCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAGGGGGGGGGGGGGGGG
546             -- Base2 TTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGGTTTTCCCCAAAAGGGG
547             -- Base3 TCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAGTCAG
548             }
549             }
550              
551             EOT
552             }
553              
554             __PACKAGE__->meta->make_immutable;
555             1;
556              
557             __END__
558              
559             =pod
560              
561             =head1 NAME
562              
563             Bio::MUST::Core::GeneticCode::Factory - Genetic code factory based on NCBI gc.prt file
564              
565             =head1 VERSION
566              
567             version 0.212670
568              
569             =head1 SYNOPSIS
570              
571             # TODO
572              
573             =head1 DESCRIPTION
574              
575             # TODO
576              
577             =head1 AUTHOR
578              
579             Denis BAURAIN <denis.baurain@uliege.be>
580              
581             =head1 COPYRIGHT AND LICENSE
582              
583             This software is copyright (c) 2013 by University of Liege / Unit of Eukaryotic Phylogenomics / Denis BAURAIN.
584              
585             This is free software; you can redistribute it and/or modify it under
586             the same terms as the Perl 5 programming language system itself.
587              
588             =cut