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 )