Mercurial > repos > mahtabm > ensembl
diff variant_effect_predictor/Bio/Root/Xref.pm @ 0:1f6dce3d34e0
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 02:01:53 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/variant_effect_predictor/Bio/Root/Xref.pm Thu Apr 11 02:01:53 2013 -0400 @@ -0,0 +1,197 @@ +#----------------------------------------------------------------------------- +# PACKAGE : Bio::Root::Xref.pm +# AUTHOR : Steve Chervitz (sac@bioperl.org) +# CREATED : 8 May 1997 +# REVISION: $Id: Xref.pm,v 1.9 2002/10/22 07:38:37 lapp Exp $ +# STATUS : Pre-Alpha +# +# WARNING: This is considered an experimental module. +# +# Copyright (c) 1997-8 Steve Chervitz. All Rights Reserved. +# This module is free software; you can redistribute it and/or +# modify it under the same terms as Perl itself. +#----------------------------------------------------------------------------- + +package Bio::Root::Xref; + +use Bio::Root::Global; +use Bio::Root::Object (); +use Bio::Root::Vector (); + +@Bio::Root::Xref::ISA = qw( Bio::Root::Vector Bio::Root::Object ); + +use vars qw($ID $VERSION); +$ID = 'Bio::Root::Xref'; +$VERSION = 0.01; + +## POD Documentation: + +=head1 NAME + +Bio::Root::Xref - A generic cross-reference object. + +B<WARNING: This module is still in the experimental phase and has not been tested.> + +=head1 SYNOPSIS + +=head2 Object Creation + + use Bio::Root::Object; + + $myObj->xref($object_ref); + +=head2 Object Manipulation + + Accessors + --------------------------------------------------------------------- + obj() - Get the cross-referenced object. + desc() - Description of the nature of the cross-reference. + set_desc() - Set description. + type() - Symmetric or assymetric. + + Methods + --------------------------------------------------------------------- + clear() - remove all cross-references within the Xref object (not implemented). + +=head1 DESCRIPTION + +An instance of B<Bio::Root::Xref.pm> manages sets of objects not +necessarily related by inheritance or composition, but by an arbitrary +criterion defined by the client. Currently, Bio::Root::Xref inherits +from both B<Bio::Root::Object.pm> and B<Bio::Root::Vector.pm>. An Xref +object is an example of a heterogeneous Vector object since different +objects in the vector need not all derive from the same base class. + +The two objects involved in the cross-reference typically involve a +symmetrical relationship in which each will have a Xref object relating it +to the other object. This relationship is not necessarily transitive, +however: if A is an xref of B and B is an xref of C, A is not +necessarily an xref of C. Assymetric Xrefs are also possible. + +The establishment of cross-references is managed by B<Bio::Root::Object.pm>. +See the xref() method in that module. + +B<The API for this module is not complete since the module is under development. Caveat emptor.> + + +=head1 SEE ALSO + + Bio::Root::Object.pm - Core object + Bio::Root::Global.pm - Manages global variables/constants + + http://bio.perl.org/Projects/modules.html - Online module documentation + http://bio.perl.org/ - Bioperl Project Homepage + +=head1 FEEDBACK + +=head2 Mailing Lists + +User feedback is an integral part of the evolution of this and other Bioperl modules. +Send your comments and suggestions preferably to one of the Bioperl mailing lists. +Your participation is much appreciated. + + bioperl-l@bioperl.org - General discussion + http://bioperl.org/MailList.shtml - About the mailing lists + +=head2 Reporting Bugs + +Report bugs to the Bioperl bug tracking system to help us keep track the bugs and +their resolution. Bug reports can be submitted via email or the web: + + bioperl-bugs@bio.perl.org + http://bugzilla.bioperl.org/ + +=head1 AUTHOR + +Steve Chervitz E<lt>sac@bioperl.orgE<gt> + +See L<the FEEDBACK section | FEEDBACK> for where to send bug reports and comments. + +=head1 VERSION + +Bio::Root::Xref.pm, 0.01 pre-alpha + +=head1 COPYRIGHT + +Copyright (c) 1997-8 Steve Chervitz. All Rights Reserved. +This module is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + + +=head1 TODO + +Update documentation to work with pod2html from Perl 5.004. + +=cut + +# +## +### +#### END of main POD documentation. +### +## +# + + + +##################################################################################### +## CONSTRUCTOR ## +##################################################################################### + +sub _initialize { + my( $self, %param ) = @_; + + $self->SUPER::_initialize(%param); + + $self->{'_obj'} = ($param{-OBJ} || undef); + + ## By default, all Xrefs are symmetric. + ## Create symmetric cross-reference in obj. + if(!$param{-ASYM}) { + $self->{'_obj'}->xref(-OBJ=>$param{-PARENT}); + $self->{'_type'} = 'sym'; + } else { + $self->{'_type'} = 'asym'; + } +} + + +##################################################################################### +## ACCESSORS ## +##################################################################################### + +sub obj {my ($self) = shift; return $self->{'_obj'}; } +sub desc {my ($self) = shift; return $self->{'_desc'}; } +sub type {my ($self) = shift; return $self->{'_type'}; } + +sub set_desc {my ($self,$desc) = @_; + $self->{'_desc'} = $desc; + } + +sub clear { +## Not implemented. Need to do this carefully. +## Not sure if this method is needed. + my ($self) = @_; +} + +1; +__END__ + +##################################################################################### +# END OF CLASS # +##################################################################################### + +=head1 DATA MEMBERS + + _obj : The object being cross-referenced to the parent. + _type : Symmetric or asymmetric + _desc : Description associated with the cross-reference + + INHERITED DATA MEMBERS (from Bio::Root::Object) + + _parent : The object receiving the cross-reference. + _name : Descriptive nature of the cross-reference. + +=cut + +