Mercurial > repos > mahtabm > ensemb_rep_gvl
diff variant_effect_predictor/Bio/Structure/Atom.pm @ 0:2bc9b66ada89 draft default tip
Uploaded
author | mahtabm |
---|---|
date | Thu, 11 Apr 2013 06:29:17 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/variant_effect_predictor/Bio/Structure/Atom.pm Thu Apr 11 06:29:17 2013 -0400 @@ -0,0 +1,613 @@ +# $Id: Atom.pm,v 1.8 2002/10/22 07:38:44 lapp Exp $ +# +# bioperl module for Bio::Structure::Atom +# +# Cared for by Kris Boulez <kris.boulez@algonomics.com> +# +# Copyright Kris Boulez +# +# You may distribute this module under the same terms as perl itself + +# POD documentation - main docs before the code + +=head1 NAME + +Bio::Structure::Atom - Bioperl structure Object, describes an Atom + +=head1 SYNOPSIS + + #add synopsis here + +=head1 DESCRIPTION + +This object stores a Bio::Structure::Atom + +=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://bio.perl.org/MailList.html - 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 - Kris Boulez + +Email kris.boulez@algonomics.com + +=head1 APPENDIX + +The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ + +=cut + + +# Let the code begin... + +package Bio::Structure::Atom; +use vars qw(@ISA); +use strict; + +use Bio::Root::Root; +use Bio::Structure::Residue; +@ISA = qw(Bio::Root::Root); + + +=head2 new() + + Title : new() + Usage : $struc = Bio::Structure::Atom->new( + -id => 'human_id', + ); + + Function: Returns a new Bio::Structure::Atom object from basic + constructors. Probably most called from Bio::Structure::IO. + Returns : a new Bio::Structure::Atom object + +=cut + + +sub new { + my ($class, @args) = @_; + my $self = $class->SUPER::new(@args); + + my($id, $x, $y, $z) = + $self->_rearrange([qw( + ID + X + Y + Z + )], + @args); + + $id && $self->id($id); + $x && $self->x($x); + $y && $self->y($y); + $z && $self->z($z); + + return $self; +} + + + +=head2 x() + + Title : x + Usage : $x = $atom->x($x); + Function: Set/gets the X coordinate for an Atom + Returns : The value for the X coordinate of the Atom (This is just a number, + it is expected to be in Angstrom, but no garantees) + Args : The X coordinate as a number + +=cut + +sub x { + my ($self,$value) = @_; + if( defined $value) { + # do we want to check if $value contains really a number ? + $self->{'x'} = $value; + } + return $self->{'x'}; +} + + +=head2 y() + + Title : y + Usage : $y = $atom->y($y); + Function: Set/gets the Y coordinate for an Atom + Returns : The value for the Y coordinate of the Atom (This is just a number, + it is eypected to be in Angstrom, but no garantees) + Args : The Y coordinate as a number + +=cut + +sub y { + my ($self,$value) = @_; + if( defined $value) { + # do we want to check if $value contains really a number ? + $self->{'y'} = $value; + } + return $self->{'y'}; +} + + +=head2 z() + + Title : z + Usage : $z = $atom->z($z); + Function: Set/gets the Z coordinate for an Atom + Returns : The value for the Z coordinate of the Atom (This is just a number, + it is ezpected to be in Angstrom, but no garantees) + Args : The Z coordinate as a number + +=cut + +sub z { + my ($self,$value) = @_; + if( defined $value) { + # do we want to check if $value contains really a number ? + $self->{'z'} = $value; + } + return $self->{'z'}; +} + + +=head2 xyz() + + Title : xyz + Usage : ($x,$y,$z) = $atom->xyz; + Function: Gets the XYZ coordinates for an Atom + Returns : A list with the value for the XYZ coordinate of the Atom + Args : + +=cut + +sub xyz { + my ($self) = @_; + + return ($self->x, $self->y, $self->z); +} + + +=head2 residue() + + Title : residue + Usage : + Function: No code here, all parent/child stuff via Entry + Returns : + Args : + +=cut + +sub residue { + my($self, $value) = @_; + + $self->throw("all parent/child stuff via Entry\n"); +} + + +=head2 icode() + + Title : icode + Usage : $icode = $atom->icode($icode) + Function: Sets/gets the icode + Returns : Returns the icode for this atom + Args : reference to an Atom + +=cut + +sub icode { + my($self, $value) = @_; + + if (defined $value) { + $self->{'icode'} = $value; + } + return $self->{'icode'}; +} + + +=head2 serial() + + Title : serial + Usage : $serial = $atom->serial($serial) + Function: Sets/gets the serial number + Returns : Returns the serial number for this atom + Args : reference to an Atom + +=cut + +sub serial { + my($self, $value) = @_; + + if (defined $value) { + $self->{'serial'} = $value; + } + return $self->{'serial'}; +} + + +=head2 occupancy() + + Title : occupancy + Usage : $occupancy = $atom->occupancy($occupancy) + Function: Sets/gets the occupancy + Returns : Returns the occupancy for this atom + Args : reference to an Atom + +=cut + +sub occupancy { + my($self, $value) = @_; + + if (defined $value) { + $self->{'occupancy'} = $value; + } + return $self->{'occupancy'}; +} + + +=head2 tempfactor() + + Title : tempfactor + Usage : $tempfactor = $atom->tempfactor($tempfactor) + Function: Sets/gets the tempfactor + Returns : Returns the tempfactor for this atom + Args : reference to an Atom + +=cut + +sub tempfactor { + my($self, $value) = @_; + + if (defined $value) { + $self->{'tempfactor'} = $value; + } + return $self->{'tempfactor'}; +} + + +=head2 segID() + + Title : segID + Usage : $segID = $atom->segID($segID) + Function: Sets/gets the segID + Returns : Returns the segID for this atom + Args : reference to an Atom + +=cut + +sub segID { + my($self, $value) = @_; + + if (defined $value) { + $self->{'segID'} = $value; + } + return $self->{'segID'}; +} + + +=head2 pdb_atomname() + + Title : pdb_atomname + Usage : $pdb_atomname = $atom->pdb_atomname($pdb_atomname) + Function: Sets/gets the pdb_atomname (atomname used in the PDB file) + Returns : Returns the pdb_atomname for this atom + Args : reference to an Atom + +=cut + +sub pdb_atomname { + my($self, $value) = @_; + + if (defined $value) { + $self->{'pdb_atomname'} = $value; + } + return $self->{'pdb_atomname'}; +} + + +=head2 element() + + Title : element + Usage : $element = $atom->element($element) + Function: Sets/gets the element + Returns : Returns the element for this atom + Args : reference to an Atom + +=cut + +sub element { + my($self, $value) = @_; + + if (defined $value) { + $self->{'element'} = $value; + } + return $self->{'element'}; +} + + +=head2 charge() + + Title : charge + Usage : $charge = $atom->charge($charge) + Function: Sets/gets the charge + Returns : Returns the charge for this atom + Args : reference to an Atom + +=cut + +sub charge { + my($self, $value) = @_; + + if (defined $value) { + $self->{'charge'} = $value; + } + return $self->{'charge'}; +} + + +=head2 sigx() + + Title : sigx + Usage : $sigx = $atom->sigx($sigx) + Function: Sets/gets the sigx + Returns : Returns the sigx for this atom + Args : reference to an Atom + +=cut + +sub sigx { + my($self, $value) = @_; + + if (defined $value) { + $self->{'sigx'} = $value; + } + return $self->{'sigx'}; +} + + +=head2 sigy() + + Title : sigy + Usage : $sigy = $atom->sigy($sigy) + Function: Sets/gets the sigy + Returns : Returns the sigy for this atom + Args : reference to an Atom + +=cut + +sub sigy { + my($self, $value) = @_; + + if (defined $value) { + $self->{'sigy'} = $value; + } + return $self->{'sigy'}; +} + + +=head2 sigz() + + Title : sigz + Usage : $sigz = $atom->sigz($sigz) + Function: Sets/gets the sigz + Returns : Returns the sigz for this atom + Args : reference to an Atom + +=cut + +sub sigz { + my($self, $value) = @_; + + if (defined $value) { + $self->{'sigz'} = $value; + } + return $self->{'sigz'}; +} + + +=head2 sigocc() + + Title : sigocc + Usage : $sigocc = $atom->sigocc($sigocc) + Function: Sets/gets the sigocc + Returns : Returns the sigocc for this atom + Args : reference to an Atom + +=cut + +sub sigocc { + my($self, $value) = @_; + + if (defined $value) { + $self->{'sigocc'} = $value; + } + return $self->{'sigocc'}; +} + + +=head2 sigtemp() + + Title : sigtemp + Usage : $sigtemp = $atom->sigtemp($sigtemp) + Function: Sets/gets the sigtemp + Returns : Returns the sigtemp for this atom + Args : reference to an Atom + +=cut + +sub sigtemp { + my($self, $value) = @_; + + if (defined $value) { + $self->{'sigtemp'} = $value; + } + return $self->{'sigtemp'}; +} + + +=head2 aniso() + + Title : aniso + Usage : $u12 = $atom->aniso("u12", $u12) + Function: Sets/gets the anisotropic temperature factors + Returns : Returns the requested factor for this atom + Args : reference to an Atom, name of the factor, value for the factor + +=cut + +sub aniso { + my($self, $name, $value) = @_; + + if ( !defined $name) { + $self->throw("You need to supply a name of the anisotropic temp factor you want to get"); + } + if (defined $value) { + $self->{$name} = $value; + } + return $self->{$name}; +} + +# placeholders +sub u11 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} +sub u22 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} +sub u33 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} +sub u12 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} +sub u13 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} +sub u23 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} +sub sigu11 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} +sub sigu22 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} +sub sigu33 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} +sub sigu12 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} +sub sigu13 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} +sub sigu23 { + my ($self, $name, $value) = @_; + $self->aniso($name,$value); +} + + + + + + + + + + + + + +=head2 id() + + Title : id + Usage : $atom->id("CZ2") + Function: Gets/sets the ID for this atom + Returns : the ID + Args : the ID + +=cut + +sub id { + my ($self, $value) = @_;; + if (defined $value) { + $self->{'id'} = $value; + } + return $self->{'id'}; +} + +sub DESTROY { + my $self = shift; + + # dummy, nothing needs to be done here +} + +# +# from here on only private methods +# + +=head2 _remove_residue() + + Title : _remove_residue + Usage : + Function: Removes the Residue this Atom is atttached to. + Returns : + Args : + +=cut + +sub _remove_residue { + my ($self) = shift; + + $self->throw("no code here at the moment\n"); +} + + +=head2 _grandparent() + + Title : _grandparent + Usage : + Function: get/set a symbolic reference to our grandparent + Returns : + Args : + +=cut + +sub _grandparent { + my($self,$symref) = @_; + + if (ref($symref)) { + $self->throw("Thou shall only pass strings in here, no references $symref\n"); + } + if (defined $symref) { + $self->{'grandparent'} = $symref; + } + return $self->{'grandparent'}; +} + + +1;