[Bio] / FigKernelPackages / Assignments.pm Repository:
ViewVC logotype

Annotation of /FigKernelPackages/Assignments.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download) (as text)

1 : overbeek 1.1 package Assignments;
2 :    
3 :     use Carp;
4 :     use Data::Dumper;
5 :     use FIG;
6 :     use SameFunc;
7 :    
8 :     sub default_parms {
9 :    
10 :     my $x = <<END
11 :     genome 198214.1 4 Shigella flexneri 2a str. 301
12 :     genome 198215.1 4 Shigella flexneri 2a str. 2457T
13 :     genome 216598.1 4 Shigella dysenteriae M131649
14 :     genome 216599.1 4 Shigella sonnei 53G
15 :     genome 630.2 4 Yersinia enterocolitica 8081
16 :     genome 633.2 4 Yersinia pseudotuberculosis (Livermore)
17 :     genome 187410.1 4 Yersinia pestis KIM
18 :     genome 214092.1 4 Yersinia pestis CO92
19 :     genome 229193.1 4 Yersinia pestis biovar Medievalis str. 91001
20 :     genome 273123.1 4 Yersinia pseudotuberculosis IP 32953
21 :     genome 594.1 4 Salmonella enterica subsp. enterica serovar Gallinarum
22 :     genome 99287.1 4 Salmonella typhimurium LT2
23 :     genome 119912.1 4 Salmonella enterica serovar Choleraesuis SC-B67
24 :     genome 209261.1 4 Salmonella enterica subsp. enterica serovar Typhi Ty2
25 :     genome 220341.1 4 Salmonella enterica subsp. enterica serovar Typhi str. CT18
26 :     genome 83333.1 4 Escherichia coli K12
27 :     genome 83334.1 4 Escherichia coli O157:H7
28 :     genome 155864.1 4 Escherichia coli O157:H7 EDL933
29 :     genome 199310.1 4 Escherichia coli CFT073
30 :     genome 216592.1 4 Escherichia coli 042
31 :     genome 216593.1 4 Escherichia coli E2348/69
32 :     genome 192222.1 4 Campylobacter jejuni subsp. jejuni NCTC 11168
33 :     genome 224308.1 2 Bacillus subtilis subsp. subtilis str. 168
34 :     external sp 4
35 :     external uni 2
36 :     external kegg 1
37 :     subsystems trusted 8
38 :     ABC_transporter_L-proline_glycine_betaine_(TC_3.A.1.12.1) MattC
39 :     ABC_transporter_alkylphosphonate_(TC_3.A.1.9.1) MattC
40 :     ABC_transporter_arabinose_(TC_3.A.1.2.2) MattC
41 :     ABC_transporter_branched-chain_amino_acid_(TC_3.A.1.4.1) MattC
42 :     ABC_transporter_dipeptide_(TC_3.A.1.5.2) MattC
43 :     ABC_transporter_ferric_enterobactin_(TC_3.A.1.14.2) MattC
44 :     ABC_transporter_ferrichrome_(TC_3.A.1.14.3) MattC
45 :     ABC_transporter_galactose_(TC_3.A.1.2.3) MattC
46 :     ABC_transporter_glutamate_aspartate_(TC_3.A.1.3.4) MattC
47 :     ABC_transporter_glutamine_(TC_3.A.1.3.2) MattC
48 :     ABC_transporter_glycerol_(TC_3.A.1.1.3) MattC
49 :     ABC_transporter_heme_(TC3.A.1.107.1) MattC
50 :     ABC_transporter_histidine_lysine_arginine_ornithine_(TC_3.A.1.3.1) MattC
51 :     ABC_transporter_iron(III)_dicitrate_(TC_3.A.1.14.1) MattC
52 :     ABC_transporter_macrolide MattC
53 :     ABC_transporter_maltose MattC
54 :     ABC_transporter_molybdenum_(TC_3.A.1.8.1) MattC
55 :     ABC_transporter_nickel_(TC_3.A.1.5.3) MattC
56 :     ABC_transporter_oligopeptide_(TC_3.A.1.5.1) MattC
57 :     ABC_transporter_peptide_(TC_3.A.1.5.5) MattC
58 :     ABC_transporter_phosphate_(TC_3.A.1.7.1) MattC
59 :     ABC_transporter_polyamine_putrescine_spermidine_(TC_3.A.1.11.1) MattC
60 :     ABC_transporter_putrescine_(TC_3.A.1.11.2) MattC
61 :     ABC_transporter_ribose_(TC_3.A.1.2.1) MattC
62 :     Adhesion_to_eukaryotic_cell MikeK
63 :     Alanine_Biosynthesis Straw
64 :     Allantoin_degradation MattC
65 :     Ammonia_assimilation EdF
66 :     Anaerobic_respiratory_reductases OlgaV
67 :     Arginine_Biosynthesis RickS
68 :     Arginine_Putrescine_and_4-aminobutyrate_degradation MattC
69 :     Asp-Glu-tRNA(Asn-Gln)_transamidation gjo
70 :     Bacterial_Cell_Division RickS
71 :     Betaine_biosynthesis MattC
72 :     Bilin_Biosynthesis OlgaZ
73 :     Biotin_biosynthesis rodionov
74 :     Branched-Chain_Amino_Acid_Biosynthesis RossO
75 :     CMP-N-acetylneuraminate_Biosynthesis OlgaZ
76 :     Calvin-Benson_cycle SvetaG
77 :     Carotenoids OlgaV
78 :     Chlorophyll_Biosynthesis VeronikaV
79 :     Chorismate_Synthesis VeronikaV
80 :     Coenzyme_A_Biosynthesis AndreiO
81 :     Cyanobacterial_CO2_uptake OlgaV
82 :     Cyanobacterial_Circadian_Clock OlgaZ
83 :     Cyanophycin_metabolism MikeR
84 :     Cytochrome_B6-F_complex SvetaG
85 :     Cytolethal_distending_toxin_of_Campylobacter_jejuni OlgaZ
86 :     D-arabinose_degradation MattC
87 :     D-galactarate_degradation MattC
88 :     D-galacturonate_degradation MattC
89 :     DNA-replication RickS
90 :     DNA_Repair_Base_Excision MikeK
91 :     De_Novo_Purine_Biosynthesis RossO
92 :     De_Novo_Pyrimidine_Synthesis RossO
93 :     Denitrification rodionov
94 :     Embden-Meyerhof_and_Gluconeogenesis SvetaG
95 :     F0F1-type_ATP_synthase RickS
96 :     FMN_and_FAD_biosynthesis AndreiO
97 :     Fatty_Acid_Biosynthesis_FASII AndreiO
98 :     Fe-S_cluster_assembly rodionov
99 :     Flagellum RickS
100 :     Folate_Biosynthesis vcrecy
101 :     Fucose_and_rhamnose_degradation MattC
102 :     Galactitol_degradation MattC
103 :     Galactose_degradation MattC
104 :     General_secretory_pathway_(Sec-SRP)_complex_(TC_3.A.5.1.1) MattC
105 :     Glutamate,_aspartate_and_asparagine_biosynthisis MattC
106 :     Glutamate_biosynthesis MattC
107 :     Glutathione_Redox_Metabolism Neema_UCSD
108 :     Glycerol_Metabolism MattC
109 :     Glycerolipid_and_glycerphospholipid_metabolism VasiliyP
110 :     Glycine_synthesis MikeK
111 :     Glyoxylate_Synthesis RickS
112 :     GroEL_GroES MikeK
113 :     HMG_CoA_Synthesis Veronika
114 :     Hexitol_degradation MattC
115 :     Histidine_Biosynthesis RossO
116 :     Histidine_Degradation RossO
117 :     Inorganic_Sulfur_Assimilation ChristianR
118 :     Inositol_catabolism VeronikaV
119 :     Isoprenoid_Biosynthesis OlgaZ
120 :     Ketogluconate_metabolism MattC
121 :     L-ascorbate_degradation MattC
122 :     Lactose_degradation MattC
123 :     Leucine_Degradation_and_HMG-CoA_Metabolism VeronikaV
124 :     Lysine_Biosynthesis_DAP_Pathway AndreiO
125 :     Mannose-sensitive_hemagglutinin_type_4_pilus RobE
126 :     Mannose_and_fructose_metabolism HanYuC_UCSD
127 :     Menaquinone_and_Phylloquinone_Biosynthesis OlgaZ
128 :     Methanogenesis gjo
129 :     Methionine_Biosynthesis rodionov
130 :     Methylcitrate_cycle MattC
131 :     N-Acetyl-D-Glucosamine_Utilization OlgaZ
132 :     N-linked_Glycosylation_in_Bacteria OlgaZ
133 :     NAD_and_NADP_cofactor_biosynthesis_global AndreiO
134 :     Na(+)-translocating_NADH-quinone_oxidoreductase_and_rnf-like_group_of_electron_transport_complexes OlgaV
135 :     Nitrate_and_nitrite_ammonification rodionov
136 :     Nitrosative_stress rodionov
137 :     P-type_ATPase_transporter_potassium_(TC_3.A.3.7.1) MattC
138 :     Pentose_phosphate_pathway SvetaG
139 :     Peptidoglycan_Biosynthesis RickS
140 :     Phenylalanine_synthesis MikeK
141 :     Photosystem_I SvetaG
142 :     Photosystem_II SvetaG
143 :     Phycobilisome OlgaZ
144 :     Plastoquinone_Biosynthesis OlgaZ
145 :     Polyamine_Metabolism InesT_UCSD
146 :     Porphyrin,_Heme,_and_Siroheme_Biosynthesis SvetaG
147 :     Proline_Synthesis RickS
148 :     Proteasome_archaeal gjo
149 :     Proteasome_eukaryotic gjo
150 :     Pterin_biosynthesis vcrecy
151 :     Purine_conversions OlgaV
152 :     Pyruvate_Alanine_Serine_Interconversions JasonS_UCSD
153 :     Queuosine-Archaeosine_Biosynthesis vcrecy
154 :     RNA_polymerase_I gjo
155 :     RNA_polymerase_II gjo
156 :     RNA_polymerase_III gjo
157 :     RNA_polymerase_II_initiation_factors gjo
158 :     RNA_polymerase_archaeal gjo
159 :     RNA_polymerase_archaeal_initiation_factors gjo
160 :     RNA_polymerase_bacterial gjo
161 :     RNA_polymerase_chloroplast gjo
162 :     Resistance_to_fluoroquinolones MattC
163 :     Respiratory_Complex_I OlgaV
164 :     Respiratory_dehydrogenases_1 OlgaV
165 :     Ribonucleotide_reduction rodionov
166 :     Ribose_and_deoxyribose_phosphate_metabolism MattC
167 :     Ribosome_LSU_bacterial gjo
168 :     Ribosome_LSU_eukaryotic_and_archaeal gjo
169 :     Ribosome_SSU_bacterial gjo
170 :     Ribosome_SSU_chloroplast gjo
171 :     Ribosome_SSU_eukaryotic_and_archaeal gjo
172 :     Ribosome_biogenesis_bacterial gjo
173 :     Serine_Biosynthesis MikeK
174 :     Siderophore_Aerobactin_and_Ferrichrome_Biosynthesis MattC
175 :     Soluble_cytochromes_and_functionally_related_electron_carriers OlgaV
176 :     Succinate_dehydrogenase OlgaV
177 :     Sulfate_assimilation MattC
178 :     Sulfur_Metabolism RobE
179 :     TCA_Cycle OlgaV
180 :     Terminal_cytochrome_C_oxidases OlgaV
181 :     Terminal_cytochrome_oxidases OlgaV
182 :     Thiamin_biosynthesis rodionov
183 :     Threonine_synthesis MikeK
184 :     Tocopherol_Biosynthesis OlgaZ
185 :     Transcription_factors_bacterial gjo
186 :     Translation_elongation_factors_eukaryotic_and_archaeal gjo
187 :     Translation_factors_bacterial gjo
188 :     Translation_initiation_factors_eukaryotic_and_archaeal gjo
189 :     Transport_of_Nickel_and_Cobalt rodionov
190 :     Trehalose_biosynthesis MattC
191 :     Tricarballylate_Utilization RossO
192 :     Tryptophan_synthesis VeronikaV
193 :     Tyrosine_synthesis MikeK
194 :     UDP-N-acetylmuramate_from_Fructose-6-phosphate_Biosynthesis VasiliyP
195 :     Ubiquinone_Biosynthesis OlgaZ
196 :     Ubiquinone_Menaquinone-cytochrome_c_reductase_complexes OlgaV
197 :     Urea_decomposition rodionov
198 :     V-Type_ATP_synthase RickS
199 :     carnitine_metabolism MattC
200 :     cysteine_biosynthesis RobE
201 :     dTDP-rhamnose_synthesis MikeK
202 :     fatty_acid_metabolism MattC
203 :     fatty_acid_oxidation_pathway MattC
204 :     glyoxylate_degradation MattC
205 :     mannose_and_GDP-mannose_metabolism MattC
206 :     polyisoprenoid_biosynthesis MattC
207 :     ppGpp_biosynthesis MikeK
208 :     tRNA_aminoacylation gjo
209 :     tRNA_processing gjo
210 :     tRNA_splicing gjo
211 :     //
212 :     END
213 :     ;
214 : overbeek 1.2 return split(/\n/,$x);
215 : overbeek 1.1 }
216 :    
217 :     sub choose_best_assignment {
218 :     my($fig,$parms,$pegs,$external_ids) = @_;
219 :     my($peg,$id);
220 :    
221 :     my $functions = {};
222 :     foreach $peg (@$pegs)
223 :     {
224 :     &load_peg_function($fig,$parms,$peg,$functions);
225 :     }
226 :    
227 :     foreach $id (@$external_ids)
228 :     {
229 :     &load_ext_function($fig,$parms,$id,$functions);
230 :     }
231 :    
232 :     return &cleanup(&pick_function($fig,$parms,$functions));
233 :     }
234 :    
235 :    
236 :     sub cleanup {
237 :     my($func) = @_;
238 :    
239 :     if (! $func) { return "hypothetical protein" }
240 :     if ($func =~ /^hypothetical (\S+ )?protein .*$/i) { return "hypothetical protein" }
241 :     if ($func =~ /^[a-zA-Z]{1,2}\d{2,5}( protein)?$/i) { return "hypothetical protein" }
242 :    
243 :     return $func;
244 :     }
245 :    
246 :     sub pick_function {
247 :     my($fig,$parms,$functions) = @_;
248 :     my($set,$score,$best_source,$poss_function);
249 :     my(@scored);
250 :    
251 :     my @partitions = &SameFunc::group_funcs(keys(%$functions));
252 :     if ($ENV{'VERBOSE'}) { print STDERR "partition: ",&Dumper(\@partitions,$functions); }
253 :    
254 :     foreach $set (@partitions)
255 :     {
256 :     $score = &score_set($set,$functions);
257 :     # print STDERR &Dumper([$score,$set]);
258 :    
259 :     # print STDERR "picking from set ",&Dumper($set);
260 :     ($poss_function,$best_source) = &pick_specific($fig,$parms,$set,$functions);
261 :     # print STDERR "picked $best_function from $best_source\n";
262 :     push(@scored,[$score,$poss_function,$best_source]);
263 :     }
264 :     @scored = sort { $b->[0] <=> $a->[0] } @scored;
265 :    
266 :     if ((@scored > 1) && $ENV{'VERBOSE'})
267 :     {
268 :     foreach $_ (@scored)
269 :     {
270 :     print STDERR join("\t",@$_),"\n";
271 :     }
272 :     print STDERR "//\n";
273 :     }
274 :     return (@scored > 0) ? $scored[0]->[1] : "";
275 :     }
276 :    
277 :     sub score_set {
278 :     my($set,$functions) = @_;
279 :     my($func,$x);
280 :    
281 :     my $score = 0;
282 :     foreach $func (@$set)
283 :     {
284 :     if ($x = $functions->{$func})
285 :     {
286 :     foreach $_ (@$x)
287 :     {
288 :     $score += $_->[0];
289 :     }
290 :     }
291 :     }
292 :     return $score;
293 :     }
294 :    
295 :     sub pick_specific {
296 :     my($fig,$parms,$set,$functions) = @_;
297 :     my($best_func,$best_score,$func,$x,$best_source);
298 :    
299 :     $best_func = "";
300 :     $best_score = "";
301 :     $best_source = "";
302 :    
303 :     foreach $func (@$set)
304 :     {
305 :     if ($x = $functions->{$func})
306 :     {
307 :     my $incr = @$x;
308 :     foreach $_ (@$x)
309 :     {
310 :     if (((100 * $_->[0]) + $incr) > $best_score)
311 :     {
312 :     $best_score = (100 * $_->[0]) + $incr;
313 :     $best_func = $func;
314 :     $best_source = $_->[1];
315 :     }
316 :     }
317 :     }
318 :     }
319 :     if ($ENV{'VERBOSE'}) { print STDERR &Dumper(["picked best source",$set,$functions,$best_func,$best_source]) }
320 :     return ($best_func,$best_source);
321 :     }
322 :    
323 :     sub load_ext_function {
324 :     my($fig,$parms,$id,$functions) = @_;
325 :    
326 :     my $func = $fig->function_of($id);
327 :     if ($func && # (! &FIG::hypo($func)) &&
328 :     ($id =~ /^([A-Za-z]{2,4})\|/) && ($_ = $parms->{'external'}->{$1}))
329 :     {
330 :     push(@{$functions->{$func}},[$_,$id]);
331 :     }
332 :     }
333 :    
334 :     sub load_peg_function {
335 :     my($fig,$parms,$peg,$functions) = @_;
336 :    
337 :     my $func = $fig->function_of($peg);
338 :     if ($func) # (! &FIG::hypo($func))
339 :     {
340 :     my $value = 1;
341 :    
342 :     my $genome = &FIG::genome_of($peg);
343 :     if ($_ = $parms->{'genome'}->{$genome})
344 :     {
345 :     $value += $_;
346 :     }
347 :    
348 :     my $subv = 0;
349 :     my @subs = $fig->peg_to_subsystems($peg);
350 :     my $sub;
351 :     foreach $sub (@subs)
352 :     {
353 :     if (($_ = $parms->{'subsystems'}->{$sub}) && ($_ > $subv))
354 :     {
355 :     $subv = $_;
356 :     }
357 :     }
358 :     $value += $subv;
359 :    
360 :     push(@{$functions->{$func}},[$value,$peg]);
361 :     }
362 :     }
363 :    
364 :     sub equivalent_ids {
365 :     my($fig,$parms,$pegs) = @_;
366 :     my($peg,@aliases,$alias,%external_ids,%pegs,$tuple);
367 :    
368 :     foreach $peg (@$pegs)
369 :     {
370 :     $pegs{$peg} = 1;
371 :     @aliases = $fig->feature_aliases($peg);
372 :     foreach $alias (@aliases)
373 :     {
374 :     if (($alias =~ /^([A-Za-z]{2,4})\|\S+$/) && $parms->{"external"}->{$1})
375 :     {
376 :     $external_ids{$alias} = 1;
377 :     }
378 :     }
379 :     foreach $tuple ($fig->mapped_prot_ids($peg))
380 :     {
381 :     if ($tuple->[0] =~ /^fig\|/)
382 :     {
383 :     $pegs{$tuple->[0]} = 1;
384 :     }
385 :     elsif (($tuple->[0] =~ /^([A-Za-z]{2,4})\|\S+$/) && $parms->{"external"}->{$1})
386 :     {
387 :     $external_ids{$tuple->[0]} = 1;
388 :     }
389 :     }
390 :     }
391 :     return ([sort { &FIG::by_fig_id($a,$b) } keys(%pegs)],[sort keys(%external_ids)]);
392 :     }
393 :    
394 :     sub load_parms {
395 :     my($parmsF) = @_;
396 :     my @parmsS;
397 :    
398 :     my $wts = {};
399 :    
400 :     if ($parmsF)
401 :     {
402 :     @parmsS = `cat $parmsF`;
403 :     }
404 :     else
405 :     {
406 :     @parmsS = &default_parms;
407 :     }
408 :     while ($_ = shift @parmsS)
409 :     {
410 :     chomp;
411 :     my($type,$data,$val) = split(/\t/,$_);
412 :     if ($type eq 'subsystems')
413 :     {
414 :     my $x;
415 :     while (($x = shift @parmsS) && ($x !~ /^\/\//))
416 :     {
417 :     if ($x =~ /^(\S[^\t]+\S)/)
418 :     {
419 :     $wts->{$type}->{$1} = $val;
420 :     }
421 :     }
422 :     }
423 :     else
424 :     {
425 :     $wts->{$type}->{$data} = $val;
426 :     }
427 :     }
428 :     return $wts;
429 :     }
430 :    
431 :     sub print_parms {
432 :     my($parms) = @_;
433 :     my($type,$data,$val,$wt_by_type);
434 :    
435 :     print STDERR "Parameters:\n";
436 :     foreach $type (sort keys(%$parms))
437 :     {
438 :     print STDERR "\n\t$type\n";
439 :     $wt_by_type = $parms->{$type};
440 :     foreach $data (sort keys(%$wt_by_type))
441 :     {
442 :     $val = $wt_by_type->{$data};
443 :     print STDERR "\t\t$data\t$val\n";
444 :     }
445 :     }
446 :     print STDERR "\n";
447 :     }
448 :    
449 :    
450 :     1;

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3