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

Diff of /FigKernelPackages/FIGO.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3, Sat Feb 17 17:14:11 2007 UTC revision 1.4, Thu Feb 22 03:01:29 2007 UTC
# Line 27  Line 27 
27  use FigFams;  use FigFams;
28  use gjoparseblast;  use gjoparseblast;
29    
30    =head1 FIGO Methods
31    
32    =head3 new
33    
34    Constructs a new FIGO object.
35    
36    =over4
37    
38    =item USAGE:
39    
40    C<< my $figo = FIGO->new();           #...Subclass defaults to FIG >>
41    
42    C<< my $figo = FIGO->new('SPROUT');   #...Subclass is a SPROUT object >>
43    
44    =back
45    
46    =cut
47    
48  sub new {  sub new {
49      my($class,$low_level) = @_;      my($class,$low_level) = @_;
50    
# Line 46  Line 64 
64      return bless $self, $class;      return bless $self, $class;
65  }  }
66    
67    
68    
69    =head3 genomes
70    
71    Returns a list of Taxonomy-IDs, possibly constrained by selection criteria.
72    (Default: Empty constraint returns all Tax-IDs in the SEED or SPROUT.)
73    
74    =over4
75    
76    =item USAGE:
77    
78    C<< my @tax_ids = $figo->genomes(); >>
79    
80    C<< my @tax_ids = $figo->genomes( @constraints ); >>
81    
82    =item @constraints
83    One or more element of: complete, prokaryotic, eukaryotic, bacterial, archaeal, nmpdr.
84    
85    =item RETURNS: List of Tax-IDs.
86    
87    =item EXAMPLE: L<Display all complete, prokaryotic genomes>
88    
89    =back
90    
91    =cut
92    
93  sub genomes {  sub genomes {
94      my($self,@constraints) = @_;      my($self,@constraints) = @_;
95      my $fig = $self->{_fig};      my $fig = $self->{_fig};
# Line 90  Line 134 
134      return map { &GenomeO::new('GenomeO',$self,$_) } @genomes;      return map { &GenomeO::new('GenomeO',$self,$_) } @genomes;
135  }  }
136    
137    
138    
139    =head3 subsystems
140    
141    =over4
142    
143    =item RETURNS:
144    List of all subsystems.
145    
146    =item EXAMPLE: L<Accessing Subsystem data>
147    
148    =back
149    
150    =cut
151    
152  sub subsystems {  sub subsystems {
153      my($self) = @_;      my($self) = @_;
154      my $fig = $self->{_fig};      my $fig = $self->{_fig};
# Line 97  Line 156 
156      return map { &SubsystemO::new('SubsystemO',$self,$_) } $fig->all_subsystems;      return map { &SubsystemO::new('SubsystemO',$self,$_) } $fig->all_subsystems;
157  }  }
158    
159    
160    =head3 functional_roles
161    
162    (Not yet implemented)
163    
164    =over
165    
166    =item RETURNS:
167    
168    =item EXAMPLE:
169    
170    =back
171    
172    =cut
173    
174  sub functional_roles {  sub functional_roles {
175      my($self) = @_;      my($self) = @_;
176      my $fig = $self->{_fig};      my $fig = $self->{_fig};
# Line 106  Line 180 
180      return @functional_roles;      return @functional_roles;
181  }  }
182    
183    
184    
185    =head3 all_figfams
186    
187    Returns a list of all FIGfam objects.
188    
189    =over4
190    
191    =item USAGE:  C<< foreach $fam ($figO->all_figfams) { #...Do something } >>
192    
193    =item RETURNS: List of FIGfam Objects
194    
195    =item EXAMPLE: L<Accessing FIGfams>
196    
197    =back
198    
199    =cut
200    
201  sub all_figfams {  sub all_figfams {
202      my($self) = @_;      my($self) = @_;
203      my $fig = $self->{_fig};      my $fig = $self->{_fig};
# Line 113  Line 205 
205      return map { &FigFamO::new('FigFamO',$self,$_) } $fams->all_families;      return map { &FigFamO::new('FigFamO',$self,$_) } $fams->all_families;
206  }  }
207    
208    
209    
210    =head3 family_containing
211    
212    =over4
213    
214    =item USAGE:   C<< my ($fam, $sims) = $figO->family_containing($seq); >>
215    
216    =item $seq:    A protein translation string.
217    
218    =item RETURNS:
219          $fam:  A FIGfam Object.
220          $sims: A set of similarity objects.
221    
222    =item EXAMPLE: L<Placing a sequence into a FIGfam>
223    
224    =back
225    
226    =cut
227    
228  sub family_containing {  sub family_containing {
229      my($self,$seq) = @_;      my($self,$seq) = @_;
230    
# Line 129  Line 241 
241      }      }
242  }  }
243    
 package GenomeO;  
244    
245    ########################################################################
246    package GenomeO;
247    ########################################################################
248  use Data::Dumper;  use Data::Dumper;
249    
250    =head1 GenomeO
251    
252    =cut
253    
254    =head3 new
255    
256    Constructor of GenomeO objects.
257    
258    =over4
259    
260    =item USAGE:
261    C<< my $org = GenomeO->new($figo, $tax_id); >>
262    
263    =item RETURNS: A new GenomeO object.
264    
265    =back
266    
267    =cut
268    
269  sub new {  sub new {
270      my($class,$figO,$genomeId) = @_;      my($class,$figO,$genomeId) = @_;
271    
# Line 142  Line 275 
275      return bless $self, $class;      return bless $self, $class;
276  }  }
277    
278    
279    
280    =head3 id
281    
282    =over4
283    
284    =item USAGE:   C<< my $tax_id = $org->id(); >>
285    
286    =item RETURNS: Taxonomy-ID of GenomeO object.
287    
288    =back
289    
290    =cut
291    
292  sub id {  sub id {
293      my($self) = @_;      my($self) = @_;
294    
295      return $self->{_id};      return $self->{_id};
296  }  }
297    
298    
299    
300    =head3 genus_species
301    
302    =over4
303    
304    =item USAGE:   C<< $gs = $genome->genus_species(); >>
305    
306    =item RETURNS: Genus-species-strain string
307    
308    =back
309    
310    =cut
311    
312  sub genus_species {  sub genus_species {
313      my($self) = @_;      my($self) = @_;
314    
# Line 155  Line 316 
316      return $fig->genus_species($self->{_id});      return $fig->genus_species($self->{_id});
317  }  }
318    
319    
320    =head3 contigs_of
321    
322    =over4
323    
324    =item RETURNS: List of C<contig> objects contained in a C<GenomeO> object.
325    
326    =item EXAMPLE: L<Show how to access contigs and extract sequence>
327    
328    =back
329    
330    =cut
331    
332  sub contigs_of {  sub contigs_of {
333      my($self) = @_;      my($self) = @_;
334    
# Line 163  Line 337 
337      return map { &ContigO::new('ContigO',$figO,$self->id,$_) } $fig->contigs_of($self->id);      return map { &ContigO::new('ContigO',$figO,$self->id,$_) } $fig->contigs_of($self->id);
338  }  }
339    
340    
341    
342    =head3 features_of
343    
344    =cut
345    
346  sub features_of {  sub features_of {
347      my($self,$type) = @_;      my($self,$type) = @_;
348    
# Line 172  Line 352 
352      return map { &FeatureO::new('FeatureO',$figO,$_) } $fig->all_features($self->id,$type);      return map { &FeatureO::new('FeatureO',$figO,$_) } $fig->all_features($self->id,$type);
353  }  }
354    
355    
356    =head3 display
357    
358    Prints the genus, species, and strain information about a genome to STDOUT.
359    
360    =over4
361    
362    =item USAGE:   C<< $genome->display(); >>
363    
364    =item RETURNS: Null
365    
366    =back
367    
368    =cut
369    
370  sub display {  sub display {
371      my($self) = @_;      my($self) = @_;
372    
373      print join("\t",("Genome",$self->id,$self->genus_species)),"\n";      print join("\t",("Genome",$self->id,$self->genus_species)),"\n";
374  }  }
375    
 package ContigO;  
376    
377    
378    ########################################################################
379    package ContigO;
380    ########################################################################
381  use Data::Dumper;  use Data::Dumper;
382    
383    =head1 ContigO
384    
385    Methods for working with DNA sequence objects.
386    
387    =cut
388    
389    =head3 new
390    
391    Contig constructor.
392    
393    =over4
394    
395    =item USAGE:
396    C<< $contig = ContigO->new( $figO, $genomeId, $contigId); >>
397    
398    =item $figO: A FIGO object.
399    
400    =item $genomeId: Taxon-ID for the genome the contig is from.
401    
402    =item $contigId: Identifier for the contig
403    
404    =item RETURNS: A "ContigO" object.
405    
406    =back
407    
408    =cut
409    
410  sub new {  sub new {
411      my($class,$figO,$genomeId,$contigId) = @_;      my($class,$figO,$genomeId,$contigId) = @_;
412    
# Line 192  Line 417 
417      return bless $self, $class;      return bless $self, $class;
418  }  }
419    
420    
421    
422    =head3 id
423    
424    =over4
425    
426    =item RETURNS: Sequence ID string of "ContigO" object
427    
428    =back
429    
430    =cut
431    
432  sub id {  sub id {
433      my($self) = @_;      my($self) = @_;
434    
435      return $self->{_id};      return $self->{_id};
436  }  }
437    
438    
439    =head3 genome
440    
441    =over4
442    
443    =item USAGE:
444        C<< my $tax_id = $contig->genome(); >>
445    
446    =item RETURNS: GenomeO object containing the contig object.
447    
448    =back
449    
450    =cut
451    
452  sub genome {  sub genome {
453      my($self) = @_;      my($self) = @_;
454    
455      return $self->{_genome};      return $self->{_genome};
456  }  }
457    
458    
459    
460    =head3 contig_length
461    
462    =over4
463    
464    =item USAGE:
465        C<< my $len = $contig->contig_length(); >>
466    
467    =item RETURNS: Length of contig's DNA sequence.
468    
469    =back
470    
471    =cut
472    
473  sub contig_length {  sub contig_length {
474      my($self) = @_;      my($self) = @_;
475    
# Line 212  Line 478 
478      return $contig_lengths->{$self->id};      return $contig_lengths->{$self->id};
479  }  }
480    
481    
482    =head3 dna_seq
483    
484    =over4
485    
486    =item USAGE:
487        C<< my $seq = $contig->dna_seq(beg, $end); >>
488    
489    =item $beg: Begining point of DNA subsequence
490    
491    =item $end: End point of DNA subsequence
492    
493    =item RETURNS: string of DNA sequence from $beg to $end
494    
495    (NOTE: if $beg > $end, returns reverse complement of DNA subsequence.)
496    
497    =back
498    
499    =cut
500    
501  sub dna_seq {  sub dna_seq {
502      my($self,$beg,$end) = @_;      my($self,$beg,$end) = @_;
503    
# Line 228  Line 514 
514      }      }
515  }  }
516    
517    
518    =head3 display
519    
520    Prints summary information about a "ContigO" object to STDOUT:
521    
522    Genus, species, strain
523    
524    Contig ID
525    
526    Contig length
527    
528    =over4
529    
530    =item RETURNS: Nil
531    
532    =back
533    
534    =cut
535    
536  sub display {  sub display {
537      my($self) = @_;      my($self) = @_;
538    
539      print join("ContigO",$self->genome,$self->id,$self->contig_length),"\n";      print join("ContigO",$self->genome,$self->id,$self->contig_length),"\n";
540  }  }
541    
 package FeatureO;  
542    
543    
544    ########################################################################
545    package FeatureO;
546    ########################################################################
547  use Data::Dumper;  use Data::Dumper;
548    
549    =head1 FeatureO
550    
551    =cut
552    
553    
554    
555    =head1 new
556    
557    Constructor of "FeatureO" objects
558    
559    =cut
560    
561  sub new {  sub new {
562      my($class,$figO,$fid) = @_;      my($class,$figO,$fid) = @_;
563    
# Line 248  Line 568 
568      return bless $self, $class;      return bless $self, $class;
569  }  }
570    
571    
572    =head3 id
573    
574    =cut
575    
576  sub id {  sub id {
577      my($self) = @_;      my($self) = @_;
578    
579      return $self->{_id};      return $self->{_id};
580  }  }
581    
582    
583    
584    =head3 genome
585    
586    =cut
587    
588  sub genome {  sub genome {
589      my($self) = @_;      my($self) = @_;
590    
# Line 261  Line 592 
592      return $1;      return $1;
593  }  }
594    
595    
596    
597    =head3 type
598    
599    =cut
600    
601  sub type {  sub type {
602      my($self) = @_;      my($self) = @_;
603    
# Line 268  Line 605 
605      return $1;      return $1;
606  }  }
607    
608    
609    
610    
611    =head3 location
612    
613    =cut
614    
615  sub location {  sub location {
616      my($self) = @_;      my($self) = @_;
617    
# Line 275  Line 619 
619      return scalar $fig->feature_location($self->id);      return scalar $fig->feature_location($self->id);
620  }  }
621    
622    
623    
624    =head3 dna_seq
625    
626    =cut
627    
628  sub dna_seq {  sub dna_seq {
629      my($self) = @_;      my($self) = @_;
630    
# Line 284  Line 634 
634      return $fig->dna_seq(&FIG::genome_of($fid),@loc);      return $fig->dna_seq(&FIG::genome_of($fid),@loc);
635  }  }
636    
637    
638    
639    =head3 prot_seq
640    
641    =cut
642    
643  sub prot_seq {  sub prot_seq {
644      my($self) = @_;      my($self) = @_;
645    
# Line 293  Line 649 
649      return $fig->get_translation($fid);      return $fig->get_translation($fid);
650  }  }
651    
652    
653    
654    =head3 function_of
655    
656    =cut
657    
658  sub function_of {  sub function_of {
659      my($self) = @_;      my($self) = @_;
660    
# Line 301  Line 663 
663      return scalar $fig->function_of($fid);      return scalar $fig->function_of($fid);
664  }  }
665    
666    
667    
668    =head3 coupled_to
669    
670    =cut
671    
672  sub coupled_to {  sub coupled_to {
673      my($self) = @_;      my($self) = @_;
674    
# Line 317  Line 685 
685      return @coupled;      return @coupled;
686  }  }
687    
688    
689    
690    =head3 annotations
691    
692    =cut
693    
694  sub annotations {  sub annotations {
695      my($self) = @_;      my($self) = @_;
696    
# Line 326  Line 700 
700      return map { &AnnotationO::new('AnnotationO',@$_) } $fig->feature_annotations($self->id,1);      return map { &AnnotationO::new('AnnotationO',@$_) } $fig->feature_annotations($self->id,1);
701  }  }
702    
703    
704    
705    =head3 possibly_truncated
706    
707    =cut
708    
709  sub possibly_truncated {  sub possibly_truncated {
710      my($self) = @_;      my($self) = @_;
711      my $figO = $self->{_figO};      my $figO = $self->{_figO};
# Line 334  Line 714 
714      return $fig->possibly_truncated($self->id);      return $fig->possibly_truncated($self->id);
715  }  }
716    
717    
718    
719    =head3 possible_frameshift
720    
721    =cut
722    
723  sub possible_frameshift {  sub possible_frameshift {
724      my($self) = @_;      my($self) = @_;
725      my $figO = $self->{_figO};      my $figO = $self->{_figO};
# Line 394  Line 780 
780      return 0;      return 0;
781  }  }
782    
783    
784    
785    =head3 run
786    
787    =cut
788    
789  sub run {  sub run {
790      my($cmd) = @_;      my($cmd) = @_;
791      (system($cmd) == 0) || Confess("FAILED: $cmd");      (system($cmd) == 0) || Confess("FAILED: $cmd");
792  }  }
793    
794    
795    
796    =head3 max
797    
798    =cut
799    
800  sub max {  sub max {
801      my($x,$y) = @_;      my($x,$y) = @_;
802      return ($x < $y) ? $y : $x;      return ($x < $y) ? $y : $x;
803  }  }
804    
805    
806    
807    =head3 min
808    
809    =cut
810    
811  sub min {  sub min {
812      my($x,$y) = @_;      my($x,$y) = @_;
813      return ($x < $y) ? $x : $y;      return ($x < $y) ? $x : $y;
814  }  }
815    
816    
817    
818    =head3 covers
819    
820    =cut
821    
822  sub covers {  sub covers {
823      my($hsps,$ln,$diff) = @_;      my($hsps,$ln,$diff) = @_;
824    
# Line 418  Line 828 
828      return ($hsp1 && (($hsp1->[1] - $hsp1->[0]) > (0.9 * $ln)));      return ($hsp1 && (($hsp1->[1] - $hsp1->[0]) > (0.9 * $ln)));
829  }  }
830    
831    
832    
833    =head3 merge
834    
835    =cut
836    
837  sub merge {  sub merge {
838      my($hsp1,$hsp2,$diff) = @_;      my($hsp1,$hsp2,$diff) = @_;
839    
# Line 426  Line 842 
842      return (($e2 > $e1) && (abs($b2-$e1) <= $diff)) ? [$b1,$e2] : undef;      return (($e2 > $e1) && (abs($b2-$e1) <= $diff)) ? [$b1,$e2] : undef;
843  }  }
844    
845    
846    
847    =head3 sims
848    
849    =cut
850    
851  use Sim;  use Sim;
852  sub sims {  sub sims {
853      my($self,%args) = @_;      my($self,%args) = @_;
# Line 440  Line 862 
862      return $fig->sims($self->id,$max,$cutoff,$all);      return $fig->sims($self->id,$max,$cutoff,$all);
863  }  }
864    
865    
866    
867    =head3 bbhs
868    
869    =cut
870    
871  sub bbhs {  sub bbhs {
872      my($self) = @_;      my($self) = @_;
873    
# Line 454  Line 882 
882                                                  },'BBHO') } @bbhs;                                                  },'BBHO') } @bbhs;
883  }  }
884    
885    =head3 display
886    
887    =cut
888    
889  sub display {  sub display {
890      my($self) = @_;      my($self) = @_;
891    
# Line 462  Line 894 
894            $self->prot_seq,"\n";            $self->prot_seq,"\n";
895  }  }
896    
897    
898    
899    ########################################################################
900  package BBHO;  package BBHO;
901    ########################################################################
902    
903    =head1 BBHO
904    
905    =cut
906    
907    
908    =head3 new
909    
910    =cut
911    
912  sub new {  sub new {
913      my($class,$peg1,$peg2,$sc,$normalized_bitscore) = @_;      my($class,$peg1,$peg2,$sc,$normalized_bitscore) = @_;
# Line 475  Line 920 
920    
921  }  }
922    
923    
924    =head3 peg1
925    
926    =cut
927    
928  sub peg1 {  sub peg1 {
929      my($self) = @_;      my($self) = @_;
930    
931      return $self->{_peg1};      return $self->{_peg1};
932  }  }
933    
934    
935    
936    =head3 peg1
937    
938    =cut
939    
940  sub peg2 {  sub peg2 {
941      my($self) = @_;      my($self) = @_;
942    
943      return $self->{_peg2};      return $self->{_peg2};
944  }  }
945    
946    
947    
948    =head3 psc
949    
950    =cut
951    
952  sub psc {  sub psc {
953      my($self) = @_;      my($self) = @_;
954    
955      return $self->{_psc};      return $self->{_psc};
956  }  }
957    
958    
959    
960    =head3 norm_bitscore
961    
962    =cut
963    
964  sub norm_bitscore {  sub norm_bitscore {
965      my($self) = @_;      my($self) = @_;
966    
967      return $self->{_bit_score};      return $self->{_bit_score};
968  }  }
969    
970    
971    
972    ########################################################################
973  package AnnotationO;  package AnnotationO;
974    ########################################################################
975    
976    =head1 AnnotationO
977    
978    =cut
979    
980    
981    
982    =head3 new
983    
984    =cut
985    
986  sub new {  sub new {
987      my($class,$fid,$timestamp,$who,$text) = @_;      my($class,$fid,$timestamp,$who,$text) = @_;
# Line 512  Line 994 
994      return bless $self, $class;      return bless $self, $class;
995  }  }
996    
997    
998    
999    =head3 fid
1000    
1001    =cut
1002    
1003  sub fid {  sub fid {
1004      my($self) = @_;      my($self) = @_;
1005    
1006      return $self->{_fid};      return $self->{_fid};
1007  }  }
1008    
1009    
1010    
1011    =head3 timestamp
1012    
1013    =cut
1014    
1015  sub timestamp {  sub timestamp {
1016      my($self,$convert) = @_;      my($self,$convert) = @_;
1017    
# Line 531  Line 1025 
1025      }      }
1026  }  }
1027    
1028    
1029    
1030    =head3 made_by
1031    
1032    =cut
1033    
1034  sub made_by {  sub made_by {
1035      my($self) = @_;      my($self) = @_;
1036    
# Line 539  Line 1039 
1039      return $who;      return $who;
1040  }  }
1041    
1042    
1043    
1044    =head3 text
1045    
1046    =cut
1047    
1048  sub text {  sub text {
1049      my($self) = @_;      my($self) = @_;
1050    
# Line 546  Line 1052 
1052      return $text;      return $text;
1053  }  }
1054    
1055    
1056    =head3 display
1057    
1058    =cut
1059    
1060  sub display {  sub display {
1061      my($self) = @_;      my($self) = @_;
1062    
1063      print join("\t",($self->fid,$self->timestamp(1),$self->made_by)),"\n",$self->text,"\n";      print join("\t",($self->fid,$self->timestamp(1),$self->made_by)),"\n",$self->text,"\n";
1064  }  }
1065    
 package CouplingO;  
1066    
1067    
1068    ########################################################################
1069    package CouplingO;
1070    ########################################################################
1071  use Data::Dumper;  use Data::Dumper;
1072    
1073    =head3 new
1074    
1075    =cut
1076    
1077  sub new {  sub new {
1078      my($class,$figO,$peg1,$peg2,$sc) = @_;      my($class,$figO,$peg1,$peg2,$sc) = @_;
1079    
# Line 569  Line 1087 
1087      return bless $self, $class;      return bless $self, $class;
1088  }  }
1089    
1090    
1091    
1092    =head3 peg1
1093    
1094    =cut
1095    
1096  sub peg1 {  sub peg1 {
1097      my($self) = @_;      my($self) = @_;
1098    
1099      return $self->{_peg1};      return $self->{_peg1};
1100  }  }
1101    
1102    
1103    
1104    =head3 peg1
1105    
1106    =cut
1107    
1108  sub peg2 {  sub peg2 {
1109      my($self) = @_;      my($self) = @_;
1110    
1111      return $self->{_peg2};      return $self->{_peg2};
1112  }  }
1113    
1114    
1115    
1116    =head3 sc
1117    
1118    =cut
1119    
1120  sub sc {  sub sc {
1121      my($self) = @_;      my($self) = @_;
1122    
1123      return $self->{_sc};      return $self->{_sc};
1124  }  }
1125    
1126    
1127    
1128    =head3 evidence
1129    
1130    =cut
1131    
1132  sub evidence {  sub evidence {
1133      my($self) = @_;      my($self) = @_;
1134    
# Line 603  Line 1145 
1145      return @ev;      return @ev;
1146  }  }
1147    
1148    
1149    
1150    =head3 display
1151    
1152    =cut
1153    
1154  sub display {  sub display {
1155      my($self) = @_;      my($self) = @_;
1156    
1157      print join("\t",($self->peg1,$self->peg2,$self->sc)),"\n";      print join("\t",($self->peg1,$self->peg2,$self->sc)),"\n";
1158  }  }
1159    
 package SubsystemO;  
1160    
1161    
1162    ########################################################################
1163    package SubsystemO;
1164    ########################################################################
1165  use Data::Dumper;  use Data::Dumper;
1166  use Subsystem;  use Subsystem;
1167    
1168    =head1 SubsystemO
1169    
1170    =cut
1171    
1172    
1173    
1174    =head3 new
1175    
1176    =cut
1177    
1178  sub new {  sub new {
1179      my($class,$figO,$name) = @_;      my($class,$figO,$name) = @_;
1180    
# Line 624  Line 1185 
1185      return bless $self, $class;      return bless $self, $class;
1186  }  }
1187    
1188    
1189    
1190    =head3 id
1191    
1192    =cut
1193    
1194  sub id {  sub id {
1195      my($self) = @_;      my($self) = @_;
1196    
1197      return $self->{_id};      return $self->{_id};
1198  }  }
1199    
1200    
1201    
1202    =head3 usable
1203    
1204    =cut
1205    
1206  sub usable {  sub usable {
1207      my($self) = @_;      my($self) = @_;
1208    
# Line 638  Line 1211 
1211      return $fig->usable_subsystem($self->id);      return $fig->usable_subsystem($self->id);
1212  }  }
1213    
1214    
1215    
1216    =head3 genomes
1217    
1218    =cut
1219    
1220  sub genomes {  sub genomes {
1221      my($self) = @_;      my($self) = @_;
1222    
# Line 648  Line 1227 
1227      return map { &GenomeO::new('GenomeO',$figO,$_) } $subO->get_genomes;      return map { &GenomeO::new('GenomeO',$figO,$_) } $subO->get_genomes;
1228  }  }
1229    
1230    
1231    
1232    =head3 roles
1233    
1234    =cut
1235    
1236  sub roles {  sub roles {
1237      my($self) = @_;      my($self) = @_;
1238    
# Line 658  Line 1243 
1243      return map { &FunctionalRoleO::new('FunctionalRoleO',$figO,$_) }  $subO->get_roles($self->id);      return map { &FunctionalRoleO::new('FunctionalRoleO',$figO,$_) }  $subO->get_roles($self->id);
1244  }  }
1245    
1246    
1247    
1248    =head3 curator
1249    
1250    =cut
1251    
1252  sub curator {  sub curator {
1253      my($self) = @_;      my($self) = @_;
1254    
# Line 668  Line 1259 
1259      return $subO->get_curator;      return $subO->get_curator;
1260  }  }
1261    
1262    
1263    
1264    
1265    =head3 variant
1266    
1267    =cut
1268    
1269  sub variant {  sub variant {
1270      my($self,$genome) = @_;      my($self,$genome) = @_;
1271    
# Line 678  Line 1276 
1276      return $subO->get_variant_code_for_genome($genome->id);      return $subO->get_variant_code_for_genome($genome->id);
1277  }  }
1278    
1279    
1280    
1281    =head3 pegs_in_cell
1282    
1283    =cut
1284    
1285  sub pegs_in_cell {  sub pegs_in_cell {
1286      my($self,$genome,$role) = @_;      my($self,$genome,$role) = @_;
1287    
# Line 688  Line 1292 
1292      return $subO->get_pegs_from_cell($genome->id,$role->id);      return $subO->get_pegs_from_cell($genome->id,$role->id);
1293  }  }
1294    
 package FunctionalRoleO;  
1295    
1296    
1297    ########################################################################
1298    package FunctionalRoleO;
1299    ########################################################################
1300  use Data::Dumper;  use Data::Dumper;
1301    
1302    =head1 FunctionalRoleO
1303    
1304    =cut
1305    
1306    
1307    =head3 new
1308    
1309    =cut
1310    
1311  sub new {  sub new {
1312      my($class,$figO,$fr) = @_;      my($class,$figO,$fr) = @_;
1313    
# Line 701  Line 1317 
1317      return bless $self, $class;      return bless $self, $class;
1318  }  }
1319    
1320    
1321    
1322    =head3 id
1323    
1324    =cut
1325    
1326  sub id {  sub id {
1327      my($self) = @_;      my($self) = @_;
1328    
1329      return $self->{_id};      return $self->{_id};
1330  }  }
1331    
 package FigFamO;  
1332    
1333    
1334    ########################################################################
1335    package FigFamO;
1336    ########################################################################
1337  use FigFams;  use FigFams;
1338  use FigFam;  use FigFam;
1339    
1340    
1341    =head1 FigFamO
1342    
1343    =cut
1344    
1345    
1346    =head3 new
1347    
1348    =cut
1349    
1350  sub new {  sub new {
1351      my($class,$figO,$id) = @_;      my($class,$figO,$id) = @_;
1352    
# Line 721  Line 1356 
1356      return bless $self, $class;      return bless $self, $class;
1357  }  }
1358    
1359    
1360    
1361    =head3 id
1362    
1363    =cut
1364    
1365  sub id {  sub id {
1366      my($self) = @_;      my($self) = @_;
1367    
1368      return $self->{_id};      return $self->{_id};
1369  }  }
1370    
1371    
1372    =head3 function
1373    
1374    =cut
1375    
1376  sub function {  sub function {
1377      my($self) = @_;      my($self) = @_;
1378    
# Line 737  Line 1383 
1383      return $famO->family_function;      return $famO->family_function;
1384  }  }
1385    
1386    
1387    
1388    =head3 members
1389    
1390    =cut
1391    
1392  sub members {  sub members {
1393      my($self) = @_;      my($self) = @_;
1394    
# Line 748  Line 1400 
1400      return map { &FigFamO::new('FigFamO',$figO,$_) } $famO->list_members;      return map { &FigFamO::new('FigFamO',$figO,$_) } $famO->list_members;
1401  }  }
1402    
1403    
1404    
1405    =head3 rep_seqs
1406    
1407    =cut
1408    
1409  sub rep_seqs {  sub rep_seqs {
1410      my($self) = @_;      my($self) = @_;
1411    
# Line 759  Line 1417 
1417      return $famO->representatives;      return $famO->representatives;
1418  }  }
1419    
1420    
1421    
1422    =head3 should_be_member
1423    
1424    =cut
1425    
1426  sub should_be_member {  sub should_be_member {
1427      my($self,$seq) = @_;      my($self,$seq) = @_;
1428    
# Line 772  Line 1436 
1436    
1437    
1438    
1439    =head3 display
1440    
1441    =cut
1442    
1443  sub display {  sub display {
1444      my($self) = @_;      my($self) = @_;
1445    
# Line 780  Line 1448 
1448    
1449    
1450    
1451    ########################################################################
1452  package Attribute;  package Attribute;
1453    ########################################################################
1454    =head1 Attribute
1455    
1456    =cut
1457    
1458  1;  1;
1459    __END__
1460    
1461    =head1 Examples
1462    
1463    =head3 Display all complete, prokaryotic genomes
1464    
1465    use FIGO;
1466    my $figO = new FIGO;
1467    
1468    foreach $genome ($figO->genomes('complete','prokaryotic'))
1469    {
1470        $genome->display;
1471    }
1472    
1473    #---------------------------------------------
1474    
1475    use FIG;
1476    my $fig = new FIG;
1477    
1478    foreach $genome (grep { $fig->is_prokaryotic($_) } $fig->genomes('complete'))
1479    {
1480        print join("\t",("Genome",$genome,$fig->genus_species($genome))),"\n";
1481    }
1482    
1483    ###############################################
1484    
1485    =head3 Show how to access contigs and extract sequence
1486    
1487    use FIGO;
1488    my $figO = new FIGO;
1489    
1490    $genomeId = '83333.1';
1491    my $genome = new GenomeO($figO,$genomeId);
1492    
1493    foreach $contig ($genome->contigs_of)
1494    {
1495        $tag1 = $contig->dna_seq(1,10);
1496        $tag2 = $contig->dna_seq(10,1);
1497        print join("\t",($tag1,$tag2,$contig->id,$contig->contig_length)),"\n";
1498    }
1499    
1500    #---------------------------------------------
1501    
1502    use FIG;
1503    my $fig = new FIG;
1504    
1505    $genomeId = '83333.1';
1506    
1507    $contig_lengths = $fig->contig_lengths($genomeId);
1508    
1509    foreach $contig ($fig->contigs_of($genomeId))
1510    {
1511        $tag1 = $fig->dna_seq($genomeId,join("_",($contig,1,10)));
1512        $tag2 = $fig->dna_seq($genomeId,join("_",($contig,10,1)));
1513        print join("\t",($tag1,$tag2,$contig,$contig_lengths->{$contig})),"\n";
1514    }
1515    
1516    ###############################################
1517    
1518    ### accessing data related to features
1519    
1520    use FIGO;
1521    my $figO = new FIGO;
1522    
1523    my $genome = new GenomeO($figO,"83333.1");
1524    my $peg  = "fig|83333.1.peg.4";
1525    my $pegO = new FeatureO($figO,$peg);
1526    
1527    print join("\t",$pegO->id,$pegO->location,$pegO->function_of),"\n",
1528          $pegO->dna_seq,"\n",
1529          $pegO->prot_seq,"\n";
1530    
1531    foreach $fidO ($genome->features_of('rna'))
1532    {
1533        print join("\t",$fidO->id,$fidO->location,$fidO->function_of),"\n";
1534    }
1535    
1536    #---------------------------------------------
1537    
1538    
1539    use FIG;
1540    my $fig = new FIG;
1541    
1542    my $genome = "83333.1";
1543    my $peg  = "fig|83333.1.peg.4";
1544    
1545    print join("\t",$peg,scalar $fig->feature_location($peg),scalar $fig->function_of($peg)),"\n",
1546          $fig->dna_seq($genome,$fig->feature_location($peg)),"\n",
1547          $fig->get_translation($peg),"\n";
1548    
1549    foreach $fid ($fig->all_features($genome,'rna'))
1550    {
1551        print join("\t",$fid,scalar $fig->feature_location($fid),scalar $fig->function_of($fid)),"\n";
1552    }
1553    
1554    ###############################################
1555    
1556    ### accessing similarities
1557    
1558    use FIGO;
1559    my $figO = new FIGO;
1560    
1561    $peg  = "fig|83333.1.peg.4";
1562    $pegO = new FeatureO($figO,$peg);
1563    
1564    @sims = $pegO->sims;  # use sims( -all => 1, -max => 10000, -cutoff => 1.0e-20) to all
1565                          # sims (including non-FIG sequences
1566    foreach $sim (@sims)
1567    {
1568        $peg2  = $sim->id2;
1569        $pegO2 = new FeatureO($figO,$peg2);
1570        $func  = $pegO2->function_of;
1571        $sc    = $sim->psc;
1572        print join("\t",($peg2,$sc,$func)),"\n";
1573    }
1574    
1575    #---------------------------------------------
1576    
1577    
1578    use FIG;
1579    my $fig = new FIG;
1580    
1581    $peg  = "fig|83333.1.peg.4";
1582    
1583    @sims = $fig->sims($peg,1000,1.0e-5,"fig");
1584    foreach $sim (@sims)
1585    {
1586        $peg2  = $sim->id2;
1587        $func  = $fig->function_of($peg2);
1588        $sc    = $sim->psc;
1589        print join("\t",($peg2,$sc,$func)),"\n";
1590    }
1591    
1592    ###############################################
1593    
1594    ### accessing BBHs
1595    
1596    use FIGO;
1597    my $figO = new FIGO;
1598    
1599    $peg  = "fig|83333.1.peg.4";
1600    $pegO = new FeatureO($figO,$peg);
1601    
1602    @bbhs = $pegO->bbhs;
1603    foreach $bbh (@bbhs)
1604    {
1605        $peg2  = $bbh->peg2;
1606        $pegO2 = new FeatureO($figO,$peg2);
1607        $func  = $pegO2->function_of;
1608        $sc    = $bbh->psc;
1609        print join("\t",($peg2,$sc,$func)),"\n";
1610    }
1611    
1612    #---------------------------------------------
1613    
1614    use FIG;
1615    my $fig = new FIG;
1616    
1617    $peg  = "fig|83333.1.peg.4";
1618    
1619    @bbhs = $fig->bbhs($peg);
1620    foreach $bbh (@bbhs)
1621    {
1622        ($peg2,$sc,$bit_score) = @$bbh;
1623        $func  = $fig->function_of($peg2);
1624        print join("\t",($peg2,$sc,$func)),"\n";
1625    }
1626    
1627    ###############################################
1628    
1629    ### accessing annotations
1630    
1631    use FIGO;
1632    my $figO = new FIGO;
1633    
1634    $peg  = "fig|83333.1.peg.4";
1635    $pegO = new FeatureO($figO,$peg);
1636    
1637    @annotations = $pegO->annotations;
1638    
1639    foreach $ann (@annotations)
1640    {
1641        print join("\n",$ann->fid,$ann->timestamp(1),$ann->made_by,$ann->text),"\n\n";
1642    }
1643    
1644    #---------------------------------------------
1645    
1646    use FIG;
1647    my $fig = new FIG;
1648    
1649    $peg = "fig|83333.1.peg.4";
1650    @annotations = $fig->feature_annotations($peg);
1651    foreach $_ (@annotations)
1652    {
1653        (undef,$ts,$who,$text) = @$_;
1654        $who =~ s/master://i;
1655        print "$ts\n$who\n$text\n\n";
1656    }
1657    
1658    ###############################################
1659    
1660    ### accessing coupling data
1661    
1662    
1663    use FIGO;
1664    my $figO = new FIGO;
1665    
1666    my $peg  = "fig|83333.1.peg.4";
1667    my $pegO = new FeatureO($figO,$peg);
1668    foreach $coupled ($pegO->coupled_to)
1669    {
1670        print join("\t",($coupled->peg1,$coupled->peg2,$coupled->sc)),"\n";
1671        foreach $tuple ($coupled->evidence)
1672        {
1673            my($peg3O,$peg4O,$rep) = @$tuple;
1674            print "\t",join("\t",($peg3O->id,$peg4O->id,$rep)),"\n";
1675        }
1676        print "\n";
1677    }
1678    
1679    #---------------------------------------------
1680    
1681    
1682    use FIG;
1683    my $fig = new FIG;
1684    
1685    my $peg1  = "fig|83333.1.peg.4";
1686    foreach $coupled ($fig->coupled_to($peg1))
1687    {
1688        ($peg2,$sc) = @$coupled;
1689        print join("\t",($peg1,$peg2,$sc)),"\n";
1690        foreach $tuple ($fig->coupling_evidence($peg1,$peg2))
1691        {
1692            my($peg3,$peg4,$rep) = @$tuple;
1693            print "\t",join("\t",($peg3,$peg4,$rep)),"\n";
1694        }
1695        print "\n";
1696    }
1697    
1698    ###############################################
1699    
1700    =head3 Accessing Subsystem data
1701    
1702    use FIGO;
1703    my $figO = new FIGO;
1704    
1705    foreach $sub ($figO->subsystems)
1706    {
1707        if ($sub->usable)
1708        {
1709            print join("\t",($sub->id,$sub->curator)),"\n";
1710    
1711            print "\tRoles\n";
1712            @roles = $sub->roles;
1713            foreach $role (@roles)
1714            {
1715                print "\t\t",join("\t",($role->id)),"\n";
1716            }
1717    
1718            print "\tGenomes\n";
1719            foreach $genome ($sub->genomes)
1720            {
1721                print "\t\t",join("\t",($sub->variant($genome),
1722                                        $genome->id,
1723                                        $genome->genus_species)),"\n";
1724                @pegs = ();
1725                foreach $role (@roles)
1726                {
1727                    push(@pegs,$sub->pegs_in_cell($genome,$role));
1728                }
1729                print "\t\t\t",join(",",@pegs),"\n";
1730            }
1731        }
1732    }
1733    
1734    #---------------------------------------------
1735    
1736    use FIG;
1737    my $fig = new FIG;
1738    
1739    foreach $sub (grep { $fig->usable_subsystem($_) } $fig->all_subsystems)
1740    {
1741        $subO = new Subsystem($sub,$fig);
1742        $curator = $subO->get_curator;
1743        print join("\t",($sub,$curator)),"\n";
1744    
1745        print "\tRoles\n";
1746        @roles = $subO->get_roles;
1747        foreach $role (@roles)
1748        {
1749            print "\t\t",join("\t",($role)),"\n";
1750        }
1751    
1752        print "\tGenomes\n";
1753        foreach $genome ($subO->get_genomes)
1754        {
1755            print "\t\t",join("\t",($subO->get_variant_code_for_genome($genome),
1756                                    $genome,
1757                                    $fig->genus_species($genome))),"\n";
1758            foreach $role (@roles)
1759            {
1760                push(@pegs,$subO->get_pegs_from_cell($genome,$role));
1761            }
1762            print "\t\t\t",join(",",@pegs),"\n";
1763        }
1764        print "\n";
1765    }
1766    
1767    ###############################################
1768    
1769    =head3 Accessing FIGfams
1770    
1771    use FIGO;
1772    my $figO = new FIGO;
1773    
1774    foreach $fam ($figO->all_figfams)
1775    {
1776        print join("\t",($fam->id,$fam->function)),"\n";
1777        foreach $pegO ($fam->members)
1778        {
1779            $peg = $pegO->id;
1780            print "\t$peg\n";
1781        }
1782    }
1783    
1784    #---------------------------------------------
1785    
1786    use FIG;
1787    use FigFam;
1788    use FigFams;
1789    
1790    my $fig = new FIG;
1791    my $figfams = new FigFams($fig);
1792    
1793    foreach $fam ($figfams->all_families)
1794    {
1795        my $figfam = new FigFam($fig,$fam);
1796        print join("\t",($fam,$figfam->family_function)),"\n";
1797        foreach $peg ($figfam->list_members)
1798        {
1799            print "\t$peg\n";
1800        }
1801    }
1802    
1803    ###############################################
1804    
1805    =head3 Placing a sequence into a FIGfam
1806    
1807    use FIGO;
1808    my $figO = new FIGO;
1809    
1810    $seq = "MKLYNLKDHNEQVSFAQAVTQGLGKNQGLFFPHDLPEFSLTEIDEMLKLDFVTRSAKILS
1811    AFIGDEIPQEILEERVRAAFAFPAPVANVESDVGCLELFHGPTLAFKDFGGRFMAQMLTH
1812    IAGDKPVTILTATSGDTGAAVAHAFYGLPNVKVVILYPRGKISPLQEKLFCTLGGNIETV
1813    AIDGDFDACQALVKQAFDDEELKVALGLNSANSINISRLLAQICYYFEAVAQLPQETRNQ
1814    LVVSVPSGNFGDLTAGLLAKSLGLPVKRFIAATNVNDTVPRFLHDGQWSPKATQATLSNA
1815    MDVSQPNNWPRVEELFRRKIWQLKELGYAAVDDETTQQTMRELKELGYTSEPHAAVAYRA
1816    LRDQLNPGEYGLFLGTAHPAKFKESVEAILGETLDLPKELAERADLPLLSHNLPADFAAL
1817    RKLMMNHQ";
1818    $seq =~ s/\n//gs;
1819    
1820    my($fam,$sims) = $figO->family_containing($seq);
1821    
1822    if ($fam)
1823    {
1824        print join("\t",($fam->id,$fam->function)),"\n";
1825        print &Dumper($sims);
1826    }
1827    else
1828    {
1829        print "Could not place it in a family\n";
1830    }
1831    
1832    #---------------------------------------------
1833    
1834    use FIG;
1835    use FigFam;
1836    use FigFams;
1837    
1838    my $fig = new FIG;
1839    my $figfams = new FigFams($fig);
1840    
1841    $seq = "MKLYNLKDHNEQVSFAQAVTQGLGKNQGLFFPHDLPEFSLTEIDEMLKLDFVTRSAKILS
1842    AFIGDEIPQEILEERVRAAFAFPAPVANVESDVGCLELFHGPTLAFKDFGGRFMAQMLTH
1843    IAGDKPVTILTATSGDTGAAVAHAFYGLPNVKVVILYPRGKISPLQEKLFCTLGGNIETV
1844    AIDGDFDACQALVKQAFDDEELKVALGLNSANSINISRLLAQICYYFEAVAQLPQETRNQ
1845    LVVSVPSGNFGDLTAGLLAKSLGLPVKRFIAATNVNDTVPRFLHDGQWSPKATQATLSNA
1846    MDVSQPNNWPRVEELFRRKIWQLKELGYAAVDDETTQQTMRELKELGYTSEPHAAVAYRA
1847    LRDQLNPGEYGLFLGTAHPAKFKESVEAILGETLDLPKELAERADLPLLSHNLPADFAAL
1848    RKLMMNHQ";
1849    $seq =~ s/\n//gs;
1850    
1851    my($fam,$sims) = $figfams->place_in_family($seq);
1852    
1853    if ($fam)
1854    {
1855        print join("\t",($fam->family_id,$fam->family_function)),"\n";
1856        print &Dumper($sims);
1857    }
1858    else
1859    {
1860        print "Could not place it in a family\n";
1861    }
1862    
1863    ###############################################
1864    
1865    =head3 Getting representative sequences for a FIGfam
1866    
1867    use FIGO;
1868    my $figO = new FIGO;
1869    
1870    $fam         = "FIG102446";
1871    my $famO     = &FigFamO::new('FigFamO',$figO,$fam);
1872    my @rep_seqs = $famO->rep_seqs;
1873    
1874    foreach $seq (@rep_seqs)
1875    {
1876        print ">query\n$seq\n";
1877    }
1878    
1879    #---------------------------------------------
1880    
1881    use FIG;
1882    use FigFam;
1883    use FigFams;
1884    
1885    my $fig = new FIG;
1886    
1887    $fam         = "FIG102446";
1888    my $famO     = new FigFam($fig,$fam);
1889    my @rep_seqs = $famO->representatives;
1890    
1891    foreach $seq (@rep_seqs)
1892    {
1893        print ">query\n$seq\n";
1894    }
1895    
1896    
1897    ###############################################
1898    
1899    
1900    =head3 Testing for membership in FIGfam
1901    
1902    use FIGO;
1903    my $figO = new FIGO;
1904    
1905    $seq = "MKLYNLKDHNEQVSFAQAVTQGLGKNQGLFFPHDLPEFSLTEIDEMLKLDFVTRSAKILS
1906    AFIGDEIPQEILEERVRAAFAFPAPVANVESDVGCLELFHGPTLAFKDFGGRFMAQMLTH
1907    IAGDKPVTILTATSGDTGAAVAHAFYGLPNVKVVILYPRGKISPLQEKLFCTLGGNIETV
1908    AIDGDFDACQALVKQAFDDEELKVALGLNSANSINISRLLAQICYYFEAVAQLPQETRNQ
1909    LVVSVPSGNFGDLTAGLLAKSLGLPVKRFIAATNVNDTVPRFLHDGQWSPKATQATLSNA
1910    MDVSQPNNWPRVEELFRRKIWQLKELGYAAVDDETTQQTMRELKELGYTSEPHAAVAYRA
1911    LRDQLNPGEYGLFLGTAHPAKFKESVEAILGETLDLPKELAERADLPLLSHNLPADFAAL
1912    RKLMMNHQ";
1913    $seq =~ s/\n//gs;
1914    
1915    $fam                  = "FIG102446";
1916    my $famO              = &FigFamO::new('FigFamO',$figO,$fam);
1917    my($should_be, $sims) = $famO->should_be_member($seq);
1918    
1919    if ($should_be)
1920    {
1921        print join("\t",($famO->id,$famO->function)),"\n";
1922        print &Dumper($sims);
1923    }
1924    else
1925    {
1926        print "Sequence should not be added to family\n";
1927    }
1928    
1929    #---------------------------------------------
1930    
1931    use FIG;
1932    use FigFam;
1933    use FigFams;
1934    
1935    my $fig = new FIG;
1936    
1937    $seq = "MKLYNLKDHNEQVSFAQAVTQGLGKNQGLFFPHDLPEFSLTEIDEMLKLDFVTRSAKILS
1938    AFIGDEIPQEILEERVRAAFAFPAPVANVESDVGCLELFHGPTLAFKDFGGRFMAQMLTH
1939    IAGDKPVTILTATSGDTGAAVAHAFYGLPNVKVVILYPRGKISPLQEKLFCTLGGNIETV
1940    AIDGDFDACQALVKQAFDDEELKVALGLNSANSINISRLLAQICYYFEAVAQLPQETRNQ
1941    LVVSVPSGNFGDLTAGLLAKSLGLPVKRFIAATNVNDTVPRFLHDGQWSPKATQATLSNA
1942    MDVSQPNNWPRVEELFRRKIWQLKELGYAAVDDETTQQTMRELKELGYTSEPHAAVAYRA
1943    LRDQLNPGEYGLFLGTAHPAKFKESVEAILGETLDLPKELAERADLPLLSHNLPADFAAL
1944    RKLMMNHQ";
1945    $seq =~ s/\n//gs;
1946    
1947    $fam                  = "FIG102446";
1948    my $famO              = new FigFam($fig,$fam);
1949    my($should_be, $sims) = $famO->should_be_member($seq);
1950    
1951    if ($should_be)
1952    {
1953        print join("\t",($famO->family_id,$famO->family_function)),"\n";
1954        print &Dumper($sims);
1955    }
1956    else
1957    {
1958        print "Sequence should not be added to family\n";
1959    }
1960    
1961    =cut
1962    

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3