[Bioperl-l] Bio::Coordinate::Pair

Heikki Lehvaslaiho heikki at sanbi.ac.za
Mon Aug 4 02:42:57 EDT 2008


Prashanth,

Your example coordinates do not do the conversion but more or less report the 
locations of your features in some third coordinates.

The way to think coordinates pairs is to use them as HSPs. You tell the pair 
object what is the matching segment in the pair of sequences.


The synopsis in Bio::Coordinate::Pair class file gives the following example:


use Bio::Location::Simple;
use Bio::Coordinate::Pair;

my $match1 = Bio::Location::Simple->new
    (-seq_id => 'propeptide', -start => 21, -end => 40, -strand=>1 );
my $match2 = Bio::Location::Simple->new
    (-seq_id => 'peptide', -start => 1, -end => 20, -strand=>1 );
my $pair = Bio::Coordinate::Pair->new(-in => $match1,
				      -out => $match2
    );
# location to match
$pos = Bio::Location::Simple->new
    (-start => 25, -end => 25, -strand=> -1 );

$res = $pair->map($pos);
print $res->match->start; # 5


In other words, region 25-40 in the propeptide matches locations 1-20 in the 
final peptide. Therefore conversion from 25 gives 5:

     signalp        21  25             40
--------------------|---|--------------|
                    1   5  pep         20

I hope this clarifies it.

The advantage of using these objects over manual conversion is that the code 
has been debugged (no all too easy +/-1 errors) and that they can be chained 
together.

Yours,

      -Heikki




On Tuesday 29 July 2008 22:07:55 Prashanth Athri wrote:
> Dear Professor Lehvaslaiho:
>
> I had a quick question about the module- Bio::Coordinate::Pair
>
> The BioPerl tutorial has the following example:
>
> $input_coordinates = Bio::Location::Simple->new
> (-seq_id => 'propeptide', -start => 1000, -end => 2000, -strand=>1 );
>
> $output_coordinates = Bio::Location::Simple->new
> (-seq_id => 'peptide', -start => 1100, -end => 2100, -strand=>1 );
>
> $pair = Bio::Coordinate::Pair->new
> (-in => $input_coordinates , -out => $output_coordinates );
>
> $pos = Bio::Location::Simple->new (-start => 500, -end => 500 );
>
> $res = $pair->map($pos);
> $converted_start = $res->start;
>
> The way I understand it, $converted_start should return ³1600². But when I
> run this snippet, it returns ³500². Could you please let me know how
> $pair->map($pos) is processed?
>
> I appreciate your time and thanks in advance.
>
> Regards,
> Prashanth



-- 
______ _/      _/_____________________________________________________
      _/      _/
     _/  _/  _/  Heikki Lehvaslaiho    heikki at_sanbi _ac _za
    _/_/_/_/_/  Senior Scientist    skype: heikki_lehvaslaiho
   _/  _/  _/  SANBI, South African National Bioinformatics Institute
  _/  _/  _/  University of Western Cape, South Africa
     _/      Phone: +27 21 959 2096   FAX: +27 21 959 2512
___ _/_/_/_/_/________________________________________________________



More information about the Bioperl-l mailing list