Mercurial > repos > mahtabm > ensemb_rep_gvl
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:2bc9b66ada89 |
---|---|
1 # $Id: Atom.pm,v 1.8 2002/10/22 07:38:44 lapp Exp $ | |
2 # | |
3 # bioperl module for Bio::Structure::Atom | |
4 # | |
5 # Cared for by Kris Boulez <kris.boulez@algonomics.com> | |
6 # | |
7 # Copyright Kris Boulez | |
8 # | |
9 # You may distribute this module under the same terms as perl itself | |
10 | |
11 # POD documentation - main docs before the code | |
12 | |
13 =head1 NAME | |
14 | |
15 Bio::Structure::Atom - Bioperl structure Object, describes an Atom | |
16 | |
17 =head1 SYNOPSIS | |
18 | |
19 #add synopsis here | |
20 | |
21 =head1 DESCRIPTION | |
22 | |
23 This object stores a Bio::Structure::Atom | |
24 | |
25 =head1 FEEDBACK | |
26 | |
27 =head2 Mailing Lists | |
28 | |
29 User feedback is an integral part of the evolution of this and other | |
30 Bioperl modules. Send your comments and suggestions preferably to one | |
31 of the Bioperl mailing lists. Your participation is much appreciated. | |
32 | |
33 bioperl-l@bioperl.org - General discussion | |
34 http://bio.perl.org/MailList.html - About the mailing lists | |
35 | |
36 =head2 Reporting Bugs | |
37 | |
38 Report bugs to the Bioperl bug tracking system to help us keep track | |
39 the bugs and their resolution. Bug reports can be submitted via email | |
40 or the web: | |
41 | |
42 bioperl-bugs@bio.perl.org | |
43 http://bugzilla.bioperl.org/ | |
44 | |
45 =head1 AUTHOR - Kris Boulez | |
46 | |
47 Email kris.boulez@algonomics.com | |
48 | |
49 =head1 APPENDIX | |
50 | |
51 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _ | |
52 | |
53 =cut | |
54 | |
55 | |
56 # Let the code begin... | |
57 | |
58 package Bio::Structure::Atom; | |
59 use vars qw(@ISA); | |
60 use strict; | |
61 | |
62 use Bio::Root::Root; | |
63 use Bio::Structure::Residue; | |
64 @ISA = qw(Bio::Root::Root); | |
65 | |
66 | |
67 =head2 new() | |
68 | |
69 Title : new() | |
70 Usage : $struc = Bio::Structure::Atom->new( | |
71 -id => 'human_id', | |
72 ); | |
73 | |
74 Function: Returns a new Bio::Structure::Atom object from basic | |
75 constructors. Probably most called from Bio::Structure::IO. | |
76 Returns : a new Bio::Structure::Atom object | |
77 | |
78 =cut | |
79 | |
80 | |
81 sub new { | |
82 my ($class, @args) = @_; | |
83 my $self = $class->SUPER::new(@args); | |
84 | |
85 my($id, $x, $y, $z) = | |
86 $self->_rearrange([qw( | |
87 ID | |
88 X | |
89 Y | |
90 Z | |
91 )], | |
92 @args); | |
93 | |
94 $id && $self->id($id); | |
95 $x && $self->x($x); | |
96 $y && $self->y($y); | |
97 $z && $self->z($z); | |
98 | |
99 return $self; | |
100 } | |
101 | |
102 | |
103 | |
104 =head2 x() | |
105 | |
106 Title : x | |
107 Usage : $x = $atom->x($x); | |
108 Function: Set/gets the X coordinate for an Atom | |
109 Returns : The value for the X coordinate of the Atom (This is just a number, | |
110 it is expected to be in Angstrom, but no garantees) | |
111 Args : The X coordinate as a number | |
112 | |
113 =cut | |
114 | |
115 sub x { | |
116 my ($self,$value) = @_; | |
117 if( defined $value) { | |
118 # do we want to check if $value contains really a number ? | |
119 $self->{'x'} = $value; | |
120 } | |
121 return $self->{'x'}; | |
122 } | |
123 | |
124 | |
125 =head2 y() | |
126 | |
127 Title : y | |
128 Usage : $y = $atom->y($y); | |
129 Function: Set/gets the Y coordinate for an Atom | |
130 Returns : The value for the Y coordinate of the Atom (This is just a number, | |
131 it is eypected to be in Angstrom, but no garantees) | |
132 Args : The Y coordinate as a number | |
133 | |
134 =cut | |
135 | |
136 sub y { | |
137 my ($self,$value) = @_; | |
138 if( defined $value) { | |
139 # do we want to check if $value contains really a number ? | |
140 $self->{'y'} = $value; | |
141 } | |
142 return $self->{'y'}; | |
143 } | |
144 | |
145 | |
146 =head2 z() | |
147 | |
148 Title : z | |
149 Usage : $z = $atom->z($z); | |
150 Function: Set/gets the Z coordinate for an Atom | |
151 Returns : The value for the Z coordinate of the Atom (This is just a number, | |
152 it is ezpected to be in Angstrom, but no garantees) | |
153 Args : The Z coordinate as a number | |
154 | |
155 =cut | |
156 | |
157 sub z { | |
158 my ($self,$value) = @_; | |
159 if( defined $value) { | |
160 # do we want to check if $value contains really a number ? | |
161 $self->{'z'} = $value; | |
162 } | |
163 return $self->{'z'}; | |
164 } | |
165 | |
166 | |
167 =head2 xyz() | |
168 | |
169 Title : xyz | |
170 Usage : ($x,$y,$z) = $atom->xyz; | |
171 Function: Gets the XYZ coordinates for an Atom | |
172 Returns : A list with the value for the XYZ coordinate of the Atom | |
173 Args : | |
174 | |
175 =cut | |
176 | |
177 sub xyz { | |
178 my ($self) = @_; | |
179 | |
180 return ($self->x, $self->y, $self->z); | |
181 } | |
182 | |
183 | |
184 =head2 residue() | |
185 | |
186 Title : residue | |
187 Usage : | |
188 Function: No code here, all parent/child stuff via Entry | |
189 Returns : | |
190 Args : | |
191 | |
192 =cut | |
193 | |
194 sub residue { | |
195 my($self, $value) = @_; | |
196 | |
197 $self->throw("all parent/child stuff via Entry\n"); | |
198 } | |
199 | |
200 | |
201 =head2 icode() | |
202 | |
203 Title : icode | |
204 Usage : $icode = $atom->icode($icode) | |
205 Function: Sets/gets the icode | |
206 Returns : Returns the icode for this atom | |
207 Args : reference to an Atom | |
208 | |
209 =cut | |
210 | |
211 sub icode { | |
212 my($self, $value) = @_; | |
213 | |
214 if (defined $value) { | |
215 $self->{'icode'} = $value; | |
216 } | |
217 return $self->{'icode'}; | |
218 } | |
219 | |
220 | |
221 =head2 serial() | |
222 | |
223 Title : serial | |
224 Usage : $serial = $atom->serial($serial) | |
225 Function: Sets/gets the serial number | |
226 Returns : Returns the serial number for this atom | |
227 Args : reference to an Atom | |
228 | |
229 =cut | |
230 | |
231 sub serial { | |
232 my($self, $value) = @_; | |
233 | |
234 if (defined $value) { | |
235 $self->{'serial'} = $value; | |
236 } | |
237 return $self->{'serial'}; | |
238 } | |
239 | |
240 | |
241 =head2 occupancy() | |
242 | |
243 Title : occupancy | |
244 Usage : $occupancy = $atom->occupancy($occupancy) | |
245 Function: Sets/gets the occupancy | |
246 Returns : Returns the occupancy for this atom | |
247 Args : reference to an Atom | |
248 | |
249 =cut | |
250 | |
251 sub occupancy { | |
252 my($self, $value) = @_; | |
253 | |
254 if (defined $value) { | |
255 $self->{'occupancy'} = $value; | |
256 } | |
257 return $self->{'occupancy'}; | |
258 } | |
259 | |
260 | |
261 =head2 tempfactor() | |
262 | |
263 Title : tempfactor | |
264 Usage : $tempfactor = $atom->tempfactor($tempfactor) | |
265 Function: Sets/gets the tempfactor | |
266 Returns : Returns the tempfactor for this atom | |
267 Args : reference to an Atom | |
268 | |
269 =cut | |
270 | |
271 sub tempfactor { | |
272 my($self, $value) = @_; | |
273 | |
274 if (defined $value) { | |
275 $self->{'tempfactor'} = $value; | |
276 } | |
277 return $self->{'tempfactor'}; | |
278 } | |
279 | |
280 | |
281 =head2 segID() | |
282 | |
283 Title : segID | |
284 Usage : $segID = $atom->segID($segID) | |
285 Function: Sets/gets the segID | |
286 Returns : Returns the segID for this atom | |
287 Args : reference to an Atom | |
288 | |
289 =cut | |
290 | |
291 sub segID { | |
292 my($self, $value) = @_; | |
293 | |
294 if (defined $value) { | |
295 $self->{'segID'} = $value; | |
296 } | |
297 return $self->{'segID'}; | |
298 } | |
299 | |
300 | |
301 =head2 pdb_atomname() | |
302 | |
303 Title : pdb_atomname | |
304 Usage : $pdb_atomname = $atom->pdb_atomname($pdb_atomname) | |
305 Function: Sets/gets the pdb_atomname (atomname used in the PDB file) | |
306 Returns : Returns the pdb_atomname for this atom | |
307 Args : reference to an Atom | |
308 | |
309 =cut | |
310 | |
311 sub pdb_atomname { | |
312 my($self, $value) = @_; | |
313 | |
314 if (defined $value) { | |
315 $self->{'pdb_atomname'} = $value; | |
316 } | |
317 return $self->{'pdb_atomname'}; | |
318 } | |
319 | |
320 | |
321 =head2 element() | |
322 | |
323 Title : element | |
324 Usage : $element = $atom->element($element) | |
325 Function: Sets/gets the element | |
326 Returns : Returns the element for this atom | |
327 Args : reference to an Atom | |
328 | |
329 =cut | |
330 | |
331 sub element { | |
332 my($self, $value) = @_; | |
333 | |
334 if (defined $value) { | |
335 $self->{'element'} = $value; | |
336 } | |
337 return $self->{'element'}; | |
338 } | |
339 | |
340 | |
341 =head2 charge() | |
342 | |
343 Title : charge | |
344 Usage : $charge = $atom->charge($charge) | |
345 Function: Sets/gets the charge | |
346 Returns : Returns the charge for this atom | |
347 Args : reference to an Atom | |
348 | |
349 =cut | |
350 | |
351 sub charge { | |
352 my($self, $value) = @_; | |
353 | |
354 if (defined $value) { | |
355 $self->{'charge'} = $value; | |
356 } | |
357 return $self->{'charge'}; | |
358 } | |
359 | |
360 | |
361 =head2 sigx() | |
362 | |
363 Title : sigx | |
364 Usage : $sigx = $atom->sigx($sigx) | |
365 Function: Sets/gets the sigx | |
366 Returns : Returns the sigx for this atom | |
367 Args : reference to an Atom | |
368 | |
369 =cut | |
370 | |
371 sub sigx { | |
372 my($self, $value) = @_; | |
373 | |
374 if (defined $value) { | |
375 $self->{'sigx'} = $value; | |
376 } | |
377 return $self->{'sigx'}; | |
378 } | |
379 | |
380 | |
381 =head2 sigy() | |
382 | |
383 Title : sigy | |
384 Usage : $sigy = $atom->sigy($sigy) | |
385 Function: Sets/gets the sigy | |
386 Returns : Returns the sigy for this atom | |
387 Args : reference to an Atom | |
388 | |
389 =cut | |
390 | |
391 sub sigy { | |
392 my($self, $value) = @_; | |
393 | |
394 if (defined $value) { | |
395 $self->{'sigy'} = $value; | |
396 } | |
397 return $self->{'sigy'}; | |
398 } | |
399 | |
400 | |
401 =head2 sigz() | |
402 | |
403 Title : sigz | |
404 Usage : $sigz = $atom->sigz($sigz) | |
405 Function: Sets/gets the sigz | |
406 Returns : Returns the sigz for this atom | |
407 Args : reference to an Atom | |
408 | |
409 =cut | |
410 | |
411 sub sigz { | |
412 my($self, $value) = @_; | |
413 | |
414 if (defined $value) { | |
415 $self->{'sigz'} = $value; | |
416 } | |
417 return $self->{'sigz'}; | |
418 } | |
419 | |
420 | |
421 =head2 sigocc() | |
422 | |
423 Title : sigocc | |
424 Usage : $sigocc = $atom->sigocc($sigocc) | |
425 Function: Sets/gets the sigocc | |
426 Returns : Returns the sigocc for this atom | |
427 Args : reference to an Atom | |
428 | |
429 =cut | |
430 | |
431 sub sigocc { | |
432 my($self, $value) = @_; | |
433 | |
434 if (defined $value) { | |
435 $self->{'sigocc'} = $value; | |
436 } | |
437 return $self->{'sigocc'}; | |
438 } | |
439 | |
440 | |
441 =head2 sigtemp() | |
442 | |
443 Title : sigtemp | |
444 Usage : $sigtemp = $atom->sigtemp($sigtemp) | |
445 Function: Sets/gets the sigtemp | |
446 Returns : Returns the sigtemp for this atom | |
447 Args : reference to an Atom | |
448 | |
449 =cut | |
450 | |
451 sub sigtemp { | |
452 my($self, $value) = @_; | |
453 | |
454 if (defined $value) { | |
455 $self->{'sigtemp'} = $value; | |
456 } | |
457 return $self->{'sigtemp'}; | |
458 } | |
459 | |
460 | |
461 =head2 aniso() | |
462 | |
463 Title : aniso | |
464 Usage : $u12 = $atom->aniso("u12", $u12) | |
465 Function: Sets/gets the anisotropic temperature factors | |
466 Returns : Returns the requested factor for this atom | |
467 Args : reference to an Atom, name of the factor, value for the factor | |
468 | |
469 =cut | |
470 | |
471 sub aniso { | |
472 my($self, $name, $value) = @_; | |
473 | |
474 if ( !defined $name) { | |
475 $self->throw("You need to supply a name of the anisotropic temp factor you want to get"); | |
476 } | |
477 if (defined $value) { | |
478 $self->{$name} = $value; | |
479 } | |
480 return $self->{$name}; | |
481 } | |
482 | |
483 # placeholders | |
484 sub u11 { | |
485 my ($self, $name, $value) = @_; | |
486 $self->aniso($name,$value); | |
487 } | |
488 sub u22 { | |
489 my ($self, $name, $value) = @_; | |
490 $self->aniso($name,$value); | |
491 } | |
492 sub u33 { | |
493 my ($self, $name, $value) = @_; | |
494 $self->aniso($name,$value); | |
495 } | |
496 sub u12 { | |
497 my ($self, $name, $value) = @_; | |
498 $self->aniso($name,$value); | |
499 } | |
500 sub u13 { | |
501 my ($self, $name, $value) = @_; | |
502 $self->aniso($name,$value); | |
503 } | |
504 sub u23 { | |
505 my ($self, $name, $value) = @_; | |
506 $self->aniso($name,$value); | |
507 } | |
508 sub sigu11 { | |
509 my ($self, $name, $value) = @_; | |
510 $self->aniso($name,$value); | |
511 } | |
512 sub sigu22 { | |
513 my ($self, $name, $value) = @_; | |
514 $self->aniso($name,$value); | |
515 } | |
516 sub sigu33 { | |
517 my ($self, $name, $value) = @_; | |
518 $self->aniso($name,$value); | |
519 } | |
520 sub sigu12 { | |
521 my ($self, $name, $value) = @_; | |
522 $self->aniso($name,$value); | |
523 } | |
524 sub sigu13 { | |
525 my ($self, $name, $value) = @_; | |
526 $self->aniso($name,$value); | |
527 } | |
528 sub sigu23 { | |
529 my ($self, $name, $value) = @_; | |
530 $self->aniso($name,$value); | |
531 } | |
532 | |
533 | |
534 | |
535 | |
536 | |
537 | |
538 | |
539 | |
540 | |
541 | |
542 | |
543 | |
544 | |
545 =head2 id() | |
546 | |
547 Title : id | |
548 Usage : $atom->id("CZ2") | |
549 Function: Gets/sets the ID for this atom | |
550 Returns : the ID | |
551 Args : the ID | |
552 | |
553 =cut | |
554 | |
555 sub id { | |
556 my ($self, $value) = @_;; | |
557 if (defined $value) { | |
558 $self->{'id'} = $value; | |
559 } | |
560 return $self->{'id'}; | |
561 } | |
562 | |
563 sub DESTROY { | |
564 my $self = shift; | |
565 | |
566 # dummy, nothing needs to be done here | |
567 } | |
568 | |
569 # | |
570 # from here on only private methods | |
571 # | |
572 | |
573 =head2 _remove_residue() | |
574 | |
575 Title : _remove_residue | |
576 Usage : | |
577 Function: Removes the Residue this Atom is atttached to. | |
578 Returns : | |
579 Args : | |
580 | |
581 =cut | |
582 | |
583 sub _remove_residue { | |
584 my ($self) = shift; | |
585 | |
586 $self->throw("no code here at the moment\n"); | |
587 } | |
588 | |
589 | |
590 =head2 _grandparent() | |
591 | |
592 Title : _grandparent | |
593 Usage : | |
594 Function: get/set a symbolic reference to our grandparent | |
595 Returns : | |
596 Args : | |
597 | |
598 =cut | |
599 | |
600 sub _grandparent { | |
601 my($self,$symref) = @_; | |
602 | |
603 if (ref($symref)) { | |
604 $self->throw("Thou shall only pass strings in here, no references $symref\n"); | |
605 } | |
606 if (defined $symref) { | |
607 $self->{'grandparent'} = $symref; | |
608 } | |
609 return $self->{'grandparent'}; | |
610 } | |
611 | |
612 | |
613 1; |