Provided by: libbio-perl-perl_1.7.2-3_all bug


       Bio::Map::CytoPosition - Marker class with cytogenetic band storing attributes


         $m1 = Bio::Map::CytoPosition->new ( '-id' => 'A1',
                                              '-value' => '2q1-3'
         $m2 = Bio::Map::CytoPosition->new ( '-id' => 'A2',
                                              '-value' => '2q2'

         if ($m1->cytorange->overlaps($m2->cytorange)) {
             print "Makers overlap\n";


       CytoPosition is marker (Bio::Map::MarkerI compliant) with a location in a cytogenetic map.
       See Bio::Map::MarkerI for more information.

       Cytogenetic locations are names of bands visible in stained mitotic eucaryotic
       chromosomes. The naming follows strict rules which are consistent at least in higher
       vertebates, e.g. mammals. The chromosome name preceds the band names.

       The shorter arm of the chromosome is called 'p' ('petit') and usually drawn pointing up.
       The lower arm is called 'q' ('queue'). The bands are named from the region separating
       these, a centromere (cen), towards the tips or telomeric regions (ter) counting from 1
       upwards. Depending of the resolution used the bands are identified with one or more digit.
       The first digit determines the major band and subsequent digits sub bands: p1 band can be
       divided into subbands p11, p12 and 13 and p11 can furter be divided into subbands p11.1
       and p11.2. The dot after second digit makes it easier to read the values. A region between
       ands is given from the centromere outwards towards the telomere (e.g. 2p2-5 or 3p21-35) or
       from a band in the p arm to a band in the q arm.


   Mailing Lists
       User feedback is an integral part of the evolution of this and other Bioperl modules. Send
       your comments and suggestions preferably to the Bioperl mailing lists  Your participation
       is much appreciated.
                  - General discussion  - About the mailing lists

       Please direct usage questions or support issues to the mailing list:

       rather than to the module maintainer directly. Many experienced and reponsive experts will
       be able look at the problem and quickly address it. Please include a thorough description
       of the problem with code and data examples if at all possible.

   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 the web:

AUTHOR - Heikki Lehvaslaiho

       Email:  heikki-at-bioperl-dot-org


       Sendu Bala


       The rest of the documentation details each of the object methods. Internal methods are
       usually preceded with a _

        Title   : cytorange
        Usage   : my $range = $obj->cytorange();
                   Converts cytogenetic location set by value method into
                   an integer range. The chromosome number determines the
                   "millions" in the values.  Human X and Y chromosome
                   symbols are represented by values 100 and 101.

                   The localization within chromosomes are converted into
                   values between the range of 0 and 200,000:

                   pter                    cen                       qter
                   0                     100,000                   200,000

                   The values between -100,000 through 0 for centromere to
                   100,000 would have reflected the band numbering better but
                   use of positive integers was chosen since the
                   transformation is very easy. These values are not metric.

                   Each band defines a range in a chromosome. A band string
                   is converted into a range by padding it with lower and and
                   higher end digits (for q arm: '0' and '9') to the length
                   of five. The arm and chromosome values are added to these:
                   e.g. 21000 & 21999 (band 21) + 100,000 (q arm) + 2,000,000
                   (chromosome 2) => 2q21 : 2,121,000 .. 2,121,999. Note that
                   this notation breaks down if there is a band or a subband
                   using digit 9 in its name!  This is not the case in human

                   The full algorithm used for bands:

                   if arm is 'q' then
                      pad char for start is '0', for end '9'
                      range is chromosome + 100,000 + padded range start or end
                   elsif arm is 'p' then
                      pad char for start is '9', for end '0'
                      range is chromosome + 100,000 - padded range start or end

        Returns : Bio::Range object or undef
        Args    : none

        Title   : range2value
        Usage   : my $value = $obj->range2value($range);
        Function: Sets and returns the value string based on start and end values of
                  the Bio::Range object passes as an argument.
        Returns : string or false
        Args    : Bio::Range object

        Title   : value
        Usage   : my $pos = $position->value;
        Function: Get/Set the value for this position
        Returns : scalar, value
        Args    : none to get, OR scalar to set

        Title   : numeric
        Usage   : my $num = $position->numeric;
        Function: Read-only method that is guarantied to return a numeric
                  representation of the start of this position.
        Returns : int (the start of the range)
        Args    : optional Bio::RangeI object

        Title   : chr
        Usage   : my $mychr = $position->chr();
        Function: Get/Set method for the chromosome string of the location.
        Returns : chromosome value
        Args    : none to get, OR scalar to set