comparison lib/CPT/BioData.pm @ 1:97ef96676b48 draft

planemo upload commit 94b0cd1fff0826c6db3e7dc0c91c0c5a8be8bb0c
author cpt
date Mon, 05 Jun 2023 02:51:26 +0000
parents
children
comparison
equal deleted inserted replaced
0:b18e8268bf4e 1:97ef96676b48
1 package CPT::BioData;
2 use Moose;
3 use strict;
4 use warnings;
5 use autodie;
6
7 has 'dummy_var' => (isa => 'Str', is => 'ro');
8
9 my %genbank_feature_tags = (
10 "locus_tag" => 1,
11 "gene" => 1,
12 "product" => 1,
13 "allele" => 1,
14 "anticodon" => 1,
15 "artificial_location" => 1,
16 "bio_material" => 1,
17 "bound_moiety" => 1,
18 "cell_line" => 1,
19 "cell_type" => 1,
20 "chromosome" => 1,
21 "citation" => 1,
22 "clone" => 1,
23 "clone_lib" => 1,
24 "codon_start" => 1,
25 "collected_by" => 1,
26 "collection_date" => 1,
27 "compare" => 1,
28 "country" => 1,
29 "cultivar" => 1,
30 "culture_collection" => 1,
31 "db_xref" => 1,
32 "dev_stage" => 1,
33 "direction" => 1,
34 "EC_number" => 1,
35 "ecotype" => 1,
36 "environmental_sample" => 1,
37 "estimated_length" => 1,
38 "exception" => 1,
39 "experiment" => 1,
40 "focus" => 1,
41 "frequency" => 1,
42 "function" => 1,
43 "gap_type" => 1,
44 "gene_synonym" => 1,
45 "germline" => 1,
46 "haplogroup" => 1,
47 "haplotype" => 1,
48 "host" => 1,
49 "identified_by" => 1,
50 "inference" => 1,
51 "isolate" => 1,
52 "isolation_source" => 1,
53 "lab_host" => 1,
54 "lat_lon" => 1,
55 "linkage_evidence" => 1,
56 "macronuclear" => 1,
57 "map" => 1,
58 "mating_type" => 1,
59 "mobile_element_type" => 1,
60 "mod_base" => 1,
61 "mol_type" => 1,
62 "ncRNA_class" => 1,
63 "note" => 1,
64 "number" => 1,
65 "old_locus_tag" => 1,
66 "operon" => 1,
67 "organelle" => 1,
68 "organism" => 1,
69 "partial" => 1,
70 "PCR_conditions" => 1,
71 "PCR_primers" => 1,
72 "phenotype" => 1,
73 "plasmid" => 1,
74 "pop_variant" => 1,
75 "protein_id" => 1,
76 "proviral" => 1,
77 "pseudo" => 1,
78 "rearranged" => 1,
79 "replace" => 1,
80 "ribosomal_slippage" => 1,
81 "rpt_family" => 1,
82 "rpt_type" => 1,
83 "rpt_unit_range" => 1,
84 "rpt_unit_seq" => 1,
85 "satellite" => 1,
86 "segment" => 1,
87 "serotype" => 1,
88 "serovar" => 1,
89 "sex" => 1,
90 "specimen_voucher" => 1,
91 "standard_name" => 1,
92 "strain" => 1,
93 "sub_clone" => 1,
94 "sub_species" => 1,
95 "sub_strain" => 1,
96 "tag_peptide" => 1,
97 "tissue_lib" => 1,
98 "tissue_type" => 1,
99 "transgenic" => 1,
100 "translation" => 1,
101 "transl_except" => 1,
102 "transl_table" => 1,
103 "trans_splicing" => 1,
104 "variety" => 1,
105 );
106 my %artemis_colours = (
107 0 => 'rgb(255,255,255)',
108 1 => 'rgb(100,100,100)',
109 2 => 'rgb(255,0,0)',
110 3 => 'rgb(0,255,0)',
111 4 => 'rgb(0,0,255)',
112 5 => 'rgb(0,255,255)',
113 6 => 'rgb(255,0,255)',
114 7 => 'rgb(255,255,0)',
115 8 => 'rgb(152,251,152)',
116 9 => 'rgb(135,206,250)',
117 10 => 'rgb(255,165,0)',
118 11 => 'rgb(200,150,100)',
119 12 => 'rgb(255,200,200)',
120 13 => 'rgb(170,170,170)',
121 14 => 'rgb(0,0,0)',
122 15 => 'rgb(255,63,63)',
123 16 => 'rgb(255,127,127)',
124 17 => 'rgb(255,191,191)',
125 );
126
127 sub artemis_colour_decode{
128 my ($self, $idx) = @_;
129 return $artemis_colours{$idx};
130 }
131
132 my %table321 = (
133 'Gly' => 'G', 'Pro' => 'P',
134 'Ala' => 'A',
135 'Val' => 'V',
136 'Leu' => 'L',
137 'Ile' => 'I',
138 'Met' => 'M',
139 'Cys' => 'C',
140 'Phe' => 'F',
141 'Tyr' => 'Y',
142 'Trp' => 'W',
143 'His' => 'H',
144 'Lys' => 'K',
145 'Arg' => 'R',
146 'Gln' => 'Q',
147 'Asn' => 'N',
148 'Glu' => 'E',
149 'Asp' => 'D',
150 'Ser' => 'S',
151 'Thr' => 'T',
152 'XXX' => 'X',
153 'End' => '*',
154 'Stop' => '*'
155 );
156
157 sub decode321{
158 my ($self, $three) = @_;
159 return $table321{$three};
160 }
161
162
163 sub get321Table {
164 my ($self) = @_;
165 return \%table321;
166 }
167
168
169 sub getTranslationTable {
170 my ($self, $table_id) = @_;
171 require Bio::Tools::CodonTable;
172 my $table = Bio::Tools::CodonTable->new( -id => (defined $table_id? $table_id: 1) );
173 my %result;
174 my @codons = qw(A C T G);
175 foreach my $i (@codons) {
176 foreach my $j (@codons) {
177 foreach my $k (@codons) {
178 $result{"$i$j$k"} = $table->translate("$i$j$k");
179 }
180 }
181 }
182 if(defined($table_id) && $table_id == 11){
183 $result{TGA} = '*';
184 $result{TAA} = '#';
185 $result{TAG} = '+';
186 }
187 return \%result;
188 }
189
190
191
192 sub isValidTag {
193 my ( $self, $tag ) = @_;
194 return $genbank_feature_tags{$tag};
195 }
196
197 no Moose;
198 1;
199
200 __END__
201
202 =pod
203
204 =encoding UTF-8
205
206 =head1 NAME
207
208 CPT::BioData
209
210 =head1 VERSION
211
212 version 1.99.4
213
214 =head2 get321Table
215
216 $bio->get321Table();
217
218 Convenience function which returns a codon translation table (3 letter ID to 1 letter code)
219
220 =head2 getTranslationTable
221
222 $bio->getTranslationTable();
223
224 Convenience function which returns a hash translated according to Bio::Tools::CodonTable
225
226 This is done for speed reasons. CodonTable is very slow and we require better performance
227
228 =head2 isValidTag
229
230 if($cptbio->isValidTag('locus_tag')) { ... }
231
232 Will validate a GBK feature tag
233
234 =head1 AUTHOR
235
236 Eric Rasche <rasche.eric@yandex.ru>
237
238 =head1 COPYRIGHT AND LICENSE
239
240 This software is Copyright (c) 2014 by Eric Rasche.
241
242 This is free software, licensed under:
243
244 The GNU General Public License, Version 3, June 2007
245
246 =cut