File Coverage

Bio/Phenotype/OMIM/OMIMentry.pm
Criterion Covered Total %
statement 190 214 88.7
branch 49 84 58.3
condition 16 27 59.2
subroutine 29 32 90.6
pod 21 23 91.3
total 305 380 80.2


line stmt bran cond sub pod time code
1             #
2             # BioPerl module for Bio::Phenotype::OMIM::OMIMentry
3             #
4             # Please direct questions and support issues to
5             #
6             # Cared for by Christian M. Zmasek or
7             #
8             # (c) Christian M. Zmasek, czmasek-at-burnham.org, 2002.
9             # (c) GNF, Genomics Institute of the Novartis Research Foundation, 2002.
10             #
11             # You may distribute this module under the same terms as perl itself.
12             # Refer to the Perl Artistic License (see the license accompanying this
13             # software package, or see http://www.perl.com/language/misc/Artistic.html)
14             # for the terms under which you may use, modify, and redistribute this module.
15             #
16             # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
17             # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
18             # MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19             #
20             # You may distribute this module under the same terms as perl itself
21              
22             # POD documentation - main docs before the code
23              
24             =head1 NAME
25              
26             Bio::Phenotype::OMIM::OMIMentry - represents OMIM (Online Mendelian
27             Inheritance in Man) database entries
28              
29             =head1 SYNOPSIS
30              
31             $obj = Bio::Phenotype::OMIM::OMIMentry->new( -mim_number => 200000,
32             -description => "This is ...",
33             -more_than_two_genes => 1 );
34              
35             =head1 DESCRIPTION
36              
37             Inherits from Bio::Phenotype::PhenotypeI.
38             Bio::Phenotype::OMIM::OMIMparser parses the flat file representation
39             of OMIM (i.e. files "omim.txt" and "genemap") returning OMIMentry objects.
40              
41             =head1 FEEDBACK
42              
43             =head2 Mailing Lists
44              
45             User feedback is an integral part of the evolution of this and other
46             Bioperl modules. Send your comments and suggestions preferably to the
47             Bioperl mailing lists Your participation is much appreciated.
48              
49             bioperl-l@bioperl.org - General discussion
50             http://bioperl.org/wiki/Mailing_lists - About the mailing lists
51              
52             =head2 Support
53              
54             Please direct usage questions or support issues to the mailing list:
55              
56             I
57              
58             rather than to the module maintainer directly. Many experienced and
59             reponsive experts will be able look at the problem and quickly
60             address it. Please include a thorough description of the problem
61             with code and data examples if at all possible.
62              
63             =head2 Reporting Bugs
64              
65             report bugs to the Bioperl bug tracking system to help us keep track
66             the bugs and their resolution. Bug reports can be submitted via the
67             web:
68              
69             https://github.com/bioperl/bioperl-live/issues
70              
71             =head1 AUTHOR
72              
73             Christian M. Zmasek
74              
75             Email: czmasek-at-burnham.org or cmzmasek@yahoo.com
76              
77             WWW: http://monochrome-effect.net/
78              
79             Address:
80              
81             Genomics Institute of the Novartis Research Foundation
82             10675 John Jay Hopkins Drive
83             San Diego, CA 92121
84              
85             =head1 APPENDIX
86              
87             The rest of the documentation details each of the object
88             methods. Internal methods are usually preceded with a _
89              
90             =cut
91              
92              
93             # Let the code begin...
94              
95              
96             package Bio::Phenotype::OMIM::OMIMentry;
97 2     2   537 use strict;
  2         3  
  2         58  
98              
99 2     2   622 use Bio::Phenotype::OMIM::MiniMIMentry;
  2         6  
  2         55  
100 2     2   572 use Bio::Phenotype::OMIM::OMIMentryAllelicVariant;
  2         7  
  2         64  
101              
102 2     2   15 use constant TRUE => 1;
  2         4  
  2         192  
103 2     2   14 use constant FALSE => 0;
  2         5  
  2         105  
104 2     2   11 use constant DEFAULT_MIM_NUMER => 0;
  2         4  
  2         89  
105              
106 2     2   10 use base qw(Bio::Phenotype::Phenotype);
  2         3  
  2         617  
107              
108              
109              
110              
111             =head2 new
112              
113             Title : new
114             Usage : $obj = Bio::Phenotype::OMIM::OMIMentry->new( -mim_number => 200000,
115             -description => "This is ...",
116             -more_than_two_genes => 1 );
117             Function: Creates a new OMIMentry object.
118             Returns : A new OMIMentry object.
119             Args : -mim_number => the MIM number
120             -title => the title or name
121             -alternative_titles_and_symbols => the "alternative titles and symbols"
122             -more_than_two_genes => can phenotype can be caused by mutation in any of two or more genes?
123             -is_separate => is this phenotype separate from those represented by other entries
124             -description => the description of this phenotype
125             -mapping_method => the mapping method
126             -gene_status => the gene status of this
127             -comment => a comment
128             -species => ref to the the species (human)
129             -created => created by whom/when
130             -edited => edited by whom/when
131             -contributors => contributed by whom/when
132             -additional_references => "see also"
133             -clinical_symptoms => the clinical symptoms
134             -minimim => the Mini MIM associated with this OMIM antry
135              
136             =cut
137              
138             sub new {
139              
140 3     3 1 198 my( $class,@args ) = @_;
141            
142 3         38 my $self = $class->SUPER::new( @args );
143            
144 3         24 my ( $mim_number,
145             $title,
146             $alternative_titles_and_symbols,
147             $more_than_two_genes,
148             $is_separate,
149             $description,
150             $mapping_method,
151             $gene_status,
152             $comment,
153             $species,
154             $created,
155             $edited,
156             $contributors,
157             $additional_references,
158             $clinical_symptoms,
159             $miniMIM )
160             = $self->_rearrange( [ qw( MIM_NUMBER
161             TITLE
162             ALTERNATIVE_TITLES_AND_SYMBOLS
163             MORE_THAN_TWO_GENES
164             IS_SEPARATE
165             DESCRIPTION
166             MAPPING_METHOD
167             GENE_STATUS
168             COMMENT
169             SPECIES
170             CREATED
171             EDITED
172             CONTRIBUTORS
173             ADDITIONAL_REFERENCES
174             CLINICAL_SYMPTOMS
175             MINIMIM ) ], @args );
176            
177 3         10 $self->init();
178            
179 3 50       8 $mim_number && $self->MIM_number( $mim_number );
180 3 50       11 $title && $self->title( $title );
181 3 50       10 $alternative_titles_and_symbols && $self->alternative_titles_and_symbols( $alternative_titles_and_symbols );
182 3 50       11 $more_than_two_genes && $self->more_than_two_genes( $more_than_two_genes );
183 3 50       8 $is_separate && $self->is_separate( $is_separate );
184 3 50       9 $description && $self->description( $description );
185 3 50       8 $mapping_method && $self->mapping_method( $mapping_method );
186 3 50       162 $gene_status && $self->gene_status( $gene_status );
187 3 50       7 $comment && $self->comment( $comment );
188 3 50       134 $species && $self->species( $species );
189 3 50       11 $created && $self->created( $created );
190 3 50       9 $edited && $self->edited( $edited );
191 3 50       6 $contributors && $self->contributors( $contributors );
192 3 50       11 $additional_references && $self->additional_references( $additional_references );
193 3 50       8 $clinical_symptoms && $self->clinical_symptoms_raw( $clinical_symptoms );
194 3 50       6 $miniMIM && $self->miniMIM( $miniMIM );
195            
196 3         14 return $self;
197            
198             } # new
199              
200              
201              
202             =head2 init
203              
204             Title : init()
205             Usage : $obj->init();
206             Function: Initializes this OMIMentry to all "" and empty lists.
207             Returns :
208             Args :
209              
210             =cut
211              
212             sub init {
213              
214 6     6 1 13 my( $self ) = @_;
215              
216 6         23 $self->MIM_number( DEFAULT_MIM_NUMER );
217 6         18 $self->title( "" );
218 6         17 $self->alternative_titles_and_symbols( "" );
219 6         15 $self->more_than_two_genes( FALSE );
220 6         18 $self->is_separate( FALSE );
221 6         23 $self->description( "" );
222 6         21 $self->mapping_method( "" );
223 6         16 $self->gene_status( "" );
224 6         26 $self->comment( "" );
225 6         40 my $species = Bio::Species->new();
226 6         24 $species->classification( qw( sapiens Homo ) );
227 6         39 $self->species( $species );
228 6         20 $self->created( "" );
229 6         20 $self->edited( "" );
230 6         17 $self->contributors( "" );
231 6         18 $self->additional_references( "" );
232 6         18 $self->clinical_symptoms( {} );
233 6         23 $self->remove_Correlates();
234 6         22 $self->remove_References();
235 6         17 $self->remove_AllelicVariants();
236 6         18 $self->remove_CytoPositions();
237 6         18 $self->remove_gene_symbols();
238 6         19 $self->remove_Genotypes();
239 6         20 $self->remove_DBLinks();
240 6         20 $self->remove_keywords();
241 6         18 $self->remove_Variants();
242 6         19 $self->remove_Measures();
243 6         31 $self->miniMIM( Bio::Phenotype::OMIM::MiniMIMentry->new() );
244            
245             } # init
246              
247              
248              
249             sub to_string {
250              
251 1     1 0 506 my( $self ) = @_;
252              
253 1         2 my $s = "";
254              
255 1         3 $s .= "-- MIM number:\n";
256 1         2 $s .= $self->MIM_number()."\n\n";
257 1         2 $s .= "-- Title:\n";
258 1         1 $s .= $self->title()."\n\n";
259 1         1 $s .= "-- Alternative Titles and Symbols:\n";
260 1         3 $s .= $self->alternative_titles_and_symbols()."\n\n";
261 1         2 $s .= "-- Can be caused by Mutation in any of two or more Genes:\n";
262 1         2 $s .= $self->more_than_two_genes()."\n\n";
263 1         2 $s .= "-- Phenotype is separate:\n";
264 1         2 $s .= $self->is_separate()."\n\n";
265 1         2 $s .= "-- Description:\n";
266 1         7 $s .= $self->description()."\n\n";
267 1         1 $s .= "-- Species:\n";
268 1         3 $s .= $self->species()->binomial()."\n\n";
269 1         2 $s .= "-- Clinical Symptoms:\n";
270 1         3 $s .= $self->clinical_symptoms()."\n\n";
271 1         2 $s .= "-- Allelic Variants:\n";
272 1         6 $s .= $self->_array_to_string( $self->each_AllelicVariant() )."\n";
273 1         2 $s .= "-- Cyto Positions:\n";
274 1         3 $s .= $self->_array_to_string( $self->each_CytoPosition() )."\n";
275 1         2 $s .= "-- Gene Symbols:\n";
276 1         3 $s .= $self->_array_to_string( $self->each_gene_symbol() )."\n";
277 1         2 $s .= "-- Correlates:\n";
278 1         3 $s .= $self->_array_to_string( $self->each_Correlate() )."\n";
279 1         2 $s .= "-- References:\n";
280 1         2 $s .= $self->_array_to_string( $self->each_Reference() )."\n";
281 1         1 $s .= "-- Additional References:\n";
282 1         3 $s .= $self->additional_references()."\n\n";
283 1         3 $s .= "-- Mapping Method:\n";
284 1         3 $s .= $self->mapping_method()."\n\n";
285 1         2 $s .= "-- Gene status:\n";
286 1         3 $s .= $self->gene_status()."\n\n";
287 1         2 $s .= "-- Created:\n";
288 1         5 $s .= $self->created()."\n\n";
289 1         2 $s .= "-- Contributors:\n";
290 1         1 $s .= $self->contributors()."\n\n";
291 1         2 $s .= "-- Edited:\n";
292 1         2 $s .= $self->edited()."\n\n";
293 1         2 $s .= "-- Comment:\n";
294 1         3 $s .= $self->comment()."\n\n";
295 1         2 $s .= "-- MiniMIM:\n";
296 1         38 $s .= $self->miniMIM()->to_string()."\n\n";
297 1         6 return $s;
298            
299              
300             } # to_string
301              
302              
303              
304             =head2 MIM_number
305              
306             Title : MIM_number
307             Usage : $omim->MIM_number( "100050" );
308             or
309             print $omim->MIM_number();
310             Function: Set/get for the MIM number of this OMIM entry.
311             Returns : The MIM number [an integer larger than 100000].
312             Args : The MIM number [an integer larger than 100000] (optional).
313              
314             =cut
315              
316             sub MIM_number {
317 13     13 1 1781 my ( $self, $value ) = @_;
318              
319 13 100       40 if ( defined $value ) {
320 9 50 66     73 if ( $value =~ /\D/
      33        
321             || ( $value < 100000 && $value != DEFAULT_MIM_NUMER ) ) {
322 0         0 $self->throw( "Found [$value]"
323             . " where [integer larger than 100000] expected" );
324             }
325 9         38 $self->{ "_MIM_number" } = $value;
326             }
327              
328 13         34 return $self->{ "_MIM_number" };
329              
330             } # MIM_number
331              
332              
333              
334              
335             =head2 title
336              
337             Title : title
338             Usage : $omim->title( "AARSKOG SYNDROME" );
339             or
340             print $omim->title();
341             Function: Set/get for the title or name of this OMIM entry.
342             This method is an alias to the method "name" of
343             Bio::Phenotype::PhenotypeI.
344             Returns : The title [scalar].
345             Args : The title [scalar] (optional).
346              
347             =cut
348              
349             sub title {
350 13     13 1 21 my $self = shift;
351            
352 13         46 $self->name(@_);
353            
354             } # title
355              
356              
357              
358              
359             =head2 alternative_titles_and_symbols
360              
361             Title : alternative_titles_and_symbols
362             Usage : $omim->alternative_titles_and_symbols( "AORTIC ANEURYSM, ABDOMINAL" );
363             or
364             print $omim->alternative_titles_and_symbols();
365             Function: Set/get for the "alternative titles and symbols" of this OMIM entry.
366             Currently, everything after the first line of title (TI) field is
367             considered "alternative titles and symbols".
368             Returns : "alternative titles and symbols" [scalar].
369             Args : "alternative titles and symbols" [scalar] (optional).
370              
371             =cut
372              
373             sub alternative_titles_and_symbols {
374 13     13 1 24 my ( $self, $value ) = @_;
375              
376 13 100       31 if ( defined $value ) {
377 9         18 $self->{ "_alternative_titles_and_symbols" } = $value;
378             }
379              
380 13         30 return $self->{ "_alternative_titles_and_symbols" };
381              
382             } # alternative_titles_and_symbols
383              
384              
385              
386              
387             =head2 more_than_two_genes
388              
389             Title : more_than_two_genes
390             Usage : $omim->more_than_two_genes( 1 );
391             or
392             print $omim->more_than_two_genes();
393             Function: This is true if this phenotype can be caused
394             by mutation in any of two or more genes.
395             In OMIM, this is indicated by a number symbol (#)
396             before an entry number (e.g. #114480 -- BREAST CANCER).
397             Returns : [1 or 0].
398             Args : [1 or 0] (optional).
399              
400             =cut
401              
402             sub more_than_two_genes {
403 12     12 1 24 my ( $self, $value ) = @_;
404              
405 12 100       28 if ( defined $value ) {
406 8         27 $self->_is_true_or_false( $value );
407 8         14 $self->{ "_more_than_two_genes" } = $value;
408             }
409              
410 12         32 return $self->{ "_more_than_two_genes" };
411              
412             } # more_than_two_genes
413              
414              
415              
416              
417             =head2 is_separate
418              
419             Title : is_separate
420             Usage : $omim->is_separate( 1 );
421             or
422             print $omim->is_separate();
423             Function: This is true if the phenotype determined by the gene at
424             the given locus is separate from those represented by
425             other entries where "is_separate" is true and if the mode
426             of inheritance of the phenotype has been proved
427             (in the judgment of the authors and editors).
428             In OMIM, this is indicated by a asterisk (*)
429             before an entry number (e.g. *113705 BREAST CANCER,
430             TYPE 1; BRCA1).
431             Returns : [1 or 0].
432             Args : [1 or 0] (optional).
433              
434             =cut
435              
436             sub is_separate {
437 12     12 1 26 my ( $self, $value ) = @_;
438              
439 12 100       28 if ( defined $value ) {
440 8         20 $self->_is_true_or_false( $value );
441 8         14 $self->{ "_is_separate" } = $value;
442             }
443              
444 12         36 return $self->{ "_is_separate" };
445              
446             } # is_separate
447              
448              
449              
450              
451             =head2 mapping_method
452              
453             Title : mapping_method
454             Usage : $omim->mapping_method( "PCR of somatic cell hybrid DNA" );
455             or
456             print $omim->mapping_method();
457             Function: Set/get for the mapping method of this OMIM entry.
458             Returns : The mapping method [scalar].
459             Args : The mapping method [scalar] (optional).
460              
461             =cut
462              
463             sub mapping_method {
464 13     13 1 20 my $self = shift;
465 13 100       52 return $self->{ "_mapping_method" } = shift if(@_);
466 4         20 return $self->{ "_mapping_method" };
467             } # mapping_method
468              
469             =head2 gene_status
470              
471             Title : gene_status
472             Usage : $omim->gene_status( "C" );
473             or
474             print $omim->gene_status();
475             Function: Set/get for the gene status of this OMIM entry.
476             The certainty with which assignment of loci to chromosomes or the linkage
477             between two loci has been established has been graded into the following
478             classes:
479             C = confirmed - observed in at least two laboratories or in several families.
480             P = provisional - based on evidence from one laboratory or one family.
481             I = inconsistent - results of different laboratories disagree.
482             L = limbo - evidence not as strong as that provisional, but included for
483             heuristic reasons. (Same as `tentative'.)
484              
485             Returns : [C, P, I, or L].
486             Args : [C, P, I, or L] (optional).
487              
488             =cut
489              
490             sub gene_status {
491 13     13 1 29 my ( $self, $value ) = @_;
492              
493 13 100       34 if ( defined $value ) {
494             #unless ( $value eq "C"
495             # || $value eq "P"
496             # || $value eq "I"
497             # || $value eq "L"
498             # || $value eq "A" # !?
499             # || $value eq "H" # !?
500             # || $value eq "U" # !?
501             # || $value eq "" ) {
502             # $self->throw( "Found [$value]"
503             # . " where [C, P, I, or L] expected" );
504             #}
505 9 50 66     80 unless ( $value eq "C"
      100        
      66        
      66        
506             || $value eq "P"
507             || $value eq "I"
508             || $value eq "L"
509             || $value eq "" ) {
510 0         0 $value = "";
511             }
512            
513 9         22 $self->{ "_gene_status" } = $value;
514             }
515              
516 13         33 return $self->{ "_gene_status" };
517              
518             } # gene_status
519              
520              
521             =head2 clinical_symptoms
522              
523             Title : clinical_symptoms
524             Usage : $omim->clinical_symptoms({});
525             Function: Set/get for the clinical symptoms of this OMIM entry.
526             Returns : [hash reference].
527             Args : [hash reference]. Suggested not to assign alone. Parser will do.
528              
529             =cut
530              
531             sub clinical_symptoms {
532 9     9 1 21 my ( $self, $value ) = @_;
533              
534 9 100       20 if ( defined $value ) {
535 6 50       22 unless(ref($value) eq 'HASH'){
536 0         0 $self->throw('a hash referenced needed');
537             }
538 6         11 $self->{ "_clinical_symptoms" } = $value;
539             }
540              
541 9         24 return $self->{ "_clinical_symptoms" };
542              
543             } # clinical_symptoms
544              
545             =head2 clinical_symptoms_raw
546              
547             Title : clinical_symptoms_raw
548             Usage : $omim->clinical_symptoms( "Patients with ..." );
549             print $omim->clinical_symptoms();
550             Functions : Get/set for text information of clinical symptoms
551             Returns : The clinical symptoms [scalar].
552             Args : The clinical symptoms [scalar] (optional).
553              
554             =cut
555              
556             sub clinical_symptoms_raw {
557 8     8 1 15 my $self = shift;
558 8 100       27 return $self->{_clinical_symptoms_raw} = shift if @_;
559 3         12 return $self->{_clinical_symptoms_raw};
560             }
561              
562             =head2 add_clinical_symptoms
563              
564             Title : add_clinical_symptoms
565             Usage : $entry->add_clinical_symptoms('Ears', 'Floppy ears', 'Lop-ears');
566             Function : add one or more symptoms on one part of body.
567             Returns : [none]
568             Args : ($part, @symptoms)
569             $part, the text name of part/organism of human
570             @symptoms, an array of text description
571              
572             =cut
573              
574             sub add_clinical_symptoms {
575 0     0 1 0 my ($self, $part, @symptoms) = @_;
576 0 0       0 unless(defined $part){
577 0         0 $self->throw('a part/organism must be assigned');
578             }
579 0 0       0 $self->{_clinical_symptoms} = {} unless $self->{_clinical_symptoms};
580             $self->{_clinical_symptoms}->{$part} = []
581 0 0       0 unless $self->{_clinical_symptoms}->{$part};
582 0         0 push @{$self->{_clinical_symptoms}->{$part}}, @symptoms;
  0         0  
583             }
584              
585             =head2 query_clinical_symptoms
586              
587             Title : get_clinical_symptoms
588             Usage : @symptoms = $self->query_clinical_symptoms('Ears');
589             Function : get all symptoms specific to one part/organism.
590             Returns : an array of text
591             Args : $organ
592              
593             =cut
594              
595             sub query_clinical_symptoms {
596 0     0 1 0 my ($self, $organ)=@_;
597 0         0 my $symptoms=$self->{_clinical_symptoms}->{$organ};
598 0         0 @$symptoms;
599             }
600              
601             sub get_clinical_symptom_organs {
602 0     0 0 0 my ($self)=@_;
603 0         0 keys %{$self->{_clinical_symptoms}};
  0         0  
604             }
605              
606             =head2 created
607              
608             Title : created
609             Usage : $omim->created( "Victor A. McKusick: 6/4/1986" );
610             or
611             print $omim->created();
612             Function: Set/get for the created field of the OMIM database.
613             Returns : Name(s) and date(s) [scalar - free form].
614             Args : Name(s) and date(s) [scalar - free form] (optional).
615              
616             =cut
617              
618             sub created {
619 13     13 1 24 my $self = shift;
620 13 100       39 return $self->{ "_created" } = shift if(@_);
621 4         16 return $self->{ "_created" };
622              
623             } # created
624              
625              
626              
627              
628             =head2 contributors
629              
630             Title : contributors
631             Usage : $omim->contributors( "Kelly A. Przylepa - revised: 03/18/2002" );
632             or
633             print $omim->contributors();
634             Function: Set/get for the contributors field of the OMIM database.
635             Returns : Name(s) and date(s) [scalar - free form].
636             Args : Name(s) and date(s) [scalar - free form] (optional).
637              
638             =cut
639              
640             sub contributors {
641 13     13 1 23 my $self = shift;
642 13 100       34 $self->{ "_contributors" } = shift if(@_);
643 13         32 return $self->{ "_contributors" };
644              
645             } # contributors
646              
647              
648              
649              
650             =head2 edited
651              
652             Title : edited
653             Usage : $omim->edited( "alopez: 06/03/1997" );
654             or
655             print $omim->edited();
656             Function: Set/get for the edited field of the OMIM database.
657             Returns : Name(s) and date(s) [scalar - free form].
658             Args : Name(s) and date(s) [scalar - free form] (optional).
659              
660             =cut
661              
662             sub edited {
663 13     13 1 22 my $self = shift;
664 13 100       45 return $self->{ "_edited" } = shift if(@_);
665 4         17 return $self->{ "_edited" };
666              
667             } # edited
668              
669              
670              
671              
672             =head2 additional_references
673              
674             Title : additional_references
675             Usage : $omim->additional_references( "Miller er al." );
676             or
677             print $omim->additional_references();
678             Function: Set/get for the additional references of this OMIM antry
679             (see also).
680             Returns : additional reference [scalar].
681             Args : additional reference [scalar] (optional).
682              
683             =cut
684              
685             sub additional_references {
686 11     11 1 21 my $self = shift;
687 11 100       36 return $self->{ "_additional_references" } = shift if(@_);
688 3         13 return $self->{ "_additional_references" };
689              
690             } # additional_references
691              
692             =head2 miniMIM
693              
694             Title : miniMIM
695             Usage : $omim->miniMIM( $MM );
696             or
697             $MM = $omim->miniMIM();
698             Function: Set/get for the Mini MIM associated with this OMIM antry
699             (see also).
700             Returns : [Bio::Phenotype::OMIM::MiniMIMentry].
701             Args : [Bio::Phenotype::OMIM::MiniMIMentry] (optional).
702              
703             =cut
704              
705             sub miniMIM {
706              
707 13     13 1 31 my ( $self, $value ) = @_;
708              
709 13 100       26 if ( defined $value ) {
710 9         29 $self->_check_ref_type( $value, "Bio::Phenotype::OMIM::MiniMIMentry" );
711 9         26 $self->{ "_mini_mim" } = $value;
712             }
713            
714 13         28 return $self->{ "_mini_mim" };
715             }
716              
717             =head2 each_AllelicVariant
718              
719             Title : each_AllelicVariant()
720             Usage : @avs = $obj->each_AllelicVariant();
721             Function: Returns a list of Bio::Phenotype::OMIM::OMIMentryAllelicVariant objects
722             associated with this OMIM entry.
723             Returns : A list of Bio::Phenotype::OMIM::OMIMentryAllelicVariant objects.
724             Args :
725              
726             =cut
727              
728             sub each_AllelicVariant {
729 16     16 1 875 my ( $self ) = @_;
730            
731 16 100       41 return @{$self->{"_allelic_variants"}} if exists($self->{"_allelic_variants"});
  13         40  
732 3         6 return ();
733             } # each_AllelicVariant
734              
735              
736             =head2 add_AllelicVariants
737              
738             Title : add_AllelicVariants
739             Usage : $obj->add_AllelicVariants( @avs );
740             or
741             $obj->add_AllelicVariants( $av );
742             Function: Pushes one or more OMIMentryAllelicVariant
743             into the list of OMIMentryAllelicVariants.
744             Returns :
745             Args : Bio::Phenotype::OMIM::OMIMentryAllelicVariant object(s).
746              
747             =cut
748              
749             sub add_AllelicVariants {
750 3     3 1 11 my ( $self, @values ) = @_;
751            
752 3 50       9 return unless( @values );
753              
754 3         8 foreach my $value ( @values ) {
755 14         30 $self->_check_ref_type( $value, "Bio::Phenotype::OMIM::OMIMentryAllelicVariant" );
756             }
757            
758 3         10 push( @{ $self->{ "_allelic_variants" } }, @values );
  3         22  
759            
760             } # add_AllelicVariants
761              
762              
763             =head2 remove_AllelicVariants
764              
765             Title : remove_AllelicVariants
766             Usage : $obj->remove_AllelicVariants();
767             Function: Deletes (and returns) the list of OMIMentryAllelicVariant objects
768             associated with this OMIM entry.
769             Returns : A list of OMIMentryAllelicVariant objects.
770             Args :
771              
772             =cut
773              
774             sub remove_AllelicVariants {
775 8     8 1 12 my ( $self ) = @_;
776            
777 8         18 my @a = $self->each_AllelicVariant();
778 8         15 $self->{ "_allelic_variants" } = [];
779 8         17 return @a;
780              
781             } # remove_AllelicVariants
782              
783              
784             # Title : _array_to_string
785             # Function:
786             # Returns :
787             # Args :
788             sub _array_to_string {
789 5     5   8 my( $self, @value ) = @_;
790              
791 5         4 my $s = "";
792            
793 5         10 for ( my $i = 0; $i < scalar( @value ); ++$i ) {
794 0 0 0     0 if ( ! ref( $value[ $i ] ) ) {
    0          
    0          
    0          
795 0         0 $s .= "#" . $i . "\n-- Value:\n" . $value[ $i ] . "\n";
796             }
797             elsif ( $value[ $i ]->isa( "Bio::Phenotype::OMIM::OMIMentryAllelicVariant" )
798             || $value[ $i ]->isa( "Bio::Phenotype::Correlate" ) ) {
799 0         0 $s .= "#" . $i . "\n" . ( $value[ $i ] )->to_string() . "\n";
800             }
801             elsif ( $value[ $i ]->isa( "Bio::Annotation::Reference" ) ) {
802 0         0 $s .= "#".$i."\n-- Authors:\n".( $value[ $i ] )->authors()."\n";
803 0         0 $s .= "-- Title:\n".( $value[ $i ] )->title()."\n";
804 0         0 $s .= "-- Location:\n".( $value[ $i ] )->location()."\n";
805             }
806             elsif ( $value[ $i ]->isa( "Bio::Map::CytoPosition" ) ) {
807 0         0 $s .= "#" . $i . "\n-- Value:\n" . ( $value[ $i ] )->value() . "\n";
808             }
809             }
810            
811 5         9 return $s;
812            
813             } # _array_to_string
814              
815              
816             # Title :_is_true_or_false
817             # Function: Checks whether the argument is 1 or 0.
818             # Returns :
819             # Args : The value to be checked.
820             sub _is_true_or_false {
821 16     16   28 my ( $self, $value ) = @_;
822 16 50 66     81 unless ( $value !~ /\D/ && ( $value == TRUE || $value == FALSE ) ) {
      66        
823 0           $self->throw( "Found [" . $value
824             . "] where " . TRUE . " or " . FALSE . " expected" );
825             }
826             } # _is_true_or_false
827              
828              
829             1;