Bio-Das-ProServer

 view release on metacpan or  search on metacpan

lib/Bio/Das/ProServer.pm  view on Meta::CPAN

  my $coord_dir  = $config->{'coordshome'};
  my %all_coords = ();

  for my $coordfile ( glob File::Spec->catfile($coord_dir, '*.xml') ) {
    open my $fh_coord, q(<), $coordfile or croak "Unable to open coordinates file $coordfile";
    my @coordfull;
    while (my $blk = <$fh_coord>) {
      $blk =~ s{^\s*(<\?xml.*?>)?(\s*</?DASCOORDINATESYSTEM>\s*)?}{}mixs;
      $blk =~ s/\s*$//mxs;
      push @coordfull, grep { $_ }
                       split m{</COORDINATES>}mxs, $blk;
    }
    close $fh_coord or croak "Unable to close coordinates file $coordfile";

    my %coords;
    for (@coordfull) {
      my ($uri) = m/uri\s*=\s*"(.*?)"/mxs;
      my ($des) = m/>(.*)$/mxs;
      $coords{lc $des} = $coords{lc $uri} = {
        'uri'         => $uri,
        'description' => $des,

lib/Bio/Das/ProServer/SourceAdaptor/bed12.pm  view on Meta::CPAN

  my @features = ();

  for my $row ( @{ $rows } ) {

    defined $row->{'chromStart'} || next;
    my $segment = $row->{'chrom'};
    $segment    =~ s/^chr//mxs;

    # One feature line can represent several features
    if ( my $block_count = $row->{'blockCount'} ) {
      my @block_sizes  = split m/,/mxs, $row->{'blockSizes'} , $block_count;
      my @block_starts = split m/,/mxs, $row->{'blockStarts'}, $block_count;

      my $i = 0;
      while ($i<$block_count) {
        push @features, {
          'segment'    => $segment,
          'start'      => $block_starts[$i] + $row->{'chromStart'} + 1,
          'end'        => $block_starts[$i] + $row->{'chromStart'} + $block_sizes[$i],
          'ori'        => $row->{'strand'},
          'score'      => $row->{'score'},
          'group_id'   => $row->{'name'},



( run in 2.380 seconds using v1.01-cache-2.11-cpan-62a16548d74 )