}
-sub path_tracks
-{
- # Martin A. Hansen, November 2009.
-
- # Returns a list of paths to all tracks for a specified
- # contig as written in the cookie.
-
- my ( $cookie, # cookie path
- ) = @_;
-
- # Returns a list.
-
- my ( $path, @tracks );
-
- die qq(ERROR: no USER in cookie.\n) if not $cookie->{ 'USER' };
- die qq(ERROR: no CLADE in cookie.\n) if not $cookie->{ 'CLADE' };
- die qq(ERROR: no GENOME in cookie.\n) if not $cookie->{ 'GENOME' };
- die qq(ERROR: no ASSEMBLY in cookie.\n) if not $cookie->{ 'ASSEMBLY' };
- die qq(ERROR: no CONTIG in cookie.\n) if not $cookie->{ 'CONTIG' };
-
- $path = join( "/",
- $cookie->{ 'DATA_DIR' },
- "Users",
- $cookie->{ 'USER' },
- $cookie->{ 'CLADE' },
- $cookie->{ 'GENOME' },
- $cookie->{ 'ASSEMBLY' },
- $cookie->{ 'CONTIG' },
- "Tracks",
- );
-
- if ( -d $path )
- {
- @tracks = Maasha::Filesys::ls_dirs( $path );
-
- @tracks = grep { $_ !~ /\/\.\.?$/ } @tracks;
-
- return wantarray ? @tracks : \@tracks;
- }
- else
- {
- return wantarray ? () : [];
- }
-}
-
-
sub search_tracks
{
# Martin A. Hansen, December 2009.
{
$cookie->{ 'CONTIG' } = $contig;
- push @tracks, path_tracks( $cookie );
+ push @tracks, list_track_dir( $cookie->{ 'USER' }, $cookie->{ 'CLADE' }, $cookie->{ 'GENOME' }, $cookie->{ 'ASSEMBLY' }, $cookie->{ 'CONTIG' } );
}
foreach $track ( @tracks )
{
$cookie->{ 'CONTIG' } = $contig;
- push @tracks, path_tracks( $cookie );
+ push @tracks, list_track_dir( $cookie->{ 'USER' }, $cookie->{ 'CLADE' }, $cookie->{ 'GENOME' }, $cookie->{ 'ASSEMBLY' }, $cookie->{ 'CONTIG' } );
}
foreach $track ( @tracks )
# Returns a list.
- my ( @tracks, $i, @features, $feat, $elem, $surface, $cr, $png_data, @html, @img, $x1, $y1, $x2, $y2, $factor, $center );
+ my ( @track_list, $i, @tracks, $track, $elem, $surface, $cr, $png_data, @html, @img, $x1, $y1, $x2, $y2, $factor, $center );
- push @features, [ Maasha::BGB::Track::track_ruler( $cookie ) ];
- push @features, [ Maasha::BGB::Track::track_seq( $cookie ) ];
+ push @tracks, [ Maasha::BGB::Track::track_ruler( $cookie ) ];
+ push @tracks, [ Maasha::BGB::Track::track_seq( $cookie ) ];
- @tracks = Maasha::BGB::Track::path_tracks( $cookie );
+ @track_list = Maasha::BGB::Track::list_track_dir( $cookie->{ 'USER' }, $cookie->{ 'CLADE' }, $cookie->{ 'GENOME' }, $cookie->{ 'ASSEMBLY' }, $cookie->{ 'CONTIG' } );
- for ( $i = 0; $i < @tracks; $i++ )
+ for ( $i = 0; $i < @track_list; $i++ )
{
$cookie->{ 'FEAT_COLOR' } = Maasha::BGB::Draw::palette( $i );
- push @features, [ Maasha::BGB::Track::track_feature( $tracks[ $i ], $cookie ) ];
+ push @tracks, [ Maasha::BGB::Track::track_feature( $track_list[ $i ], $cookie ) ];
}
$surface = Cairo::ImageSurface->create( 'argb32', $cookie->{ 'IMG_WIDTH' }, $cookie->{ 'TRACK_OFFSET' } );
$cr = Cairo::Context->create( $surface );
- $cr->rectangle ( 0, 0, $cookie->{ 'IMG_WIDTH' }, $cookie->{ 'TRACK_OFFSET' } );
- $cr->set_source_rgb ( 1, 1, 1 );
+ $cr->rectangle( 0, 0, $cookie->{ 'IMG_WIDTH' }, $cookie->{ 'TRACK_OFFSET' } );
+ $cr->set_source_rgb( 1, 1, 1 );
$cr->fill;
- foreach $feat ( @features ) {
- Maasha::BGB::Draw::draw_feature( $cr, $feat ) if $feat;
+ foreach $track ( @tracks ) {
+ Maasha::BGB::Draw::draw_feature( $cr, $track ) if $track;
}
$png_data = Maasha::BGB::Draw::base64_png( $surface );
$center = int( $cookie->{ 'NAV_START' } + $factor * $i );
push @img, Maasha::XHTML::area(
- href => join( "&", "$cookie->{ 'SCRIPT' }?page=browse",
- "session_id=$cookie->{ 'SESSION_ID' }",
- "user=$cookie->{ 'USER' }",
- "clade=$cookie->{ 'CLADE' }",
- "genome=$cookie->{ 'GENOME' }",
- "assembly=$cookie->{ 'ASSEMBLY' }",
- "contig=$cookie->{ 'CONTIG' }",
- "nav_start=$cookie->{ 'NAV_START' }",
- "nav_end=$cookie->{ 'NAV_END' }",
- "nav_center=$center",
+ href => join( "&", "$cookie->{ 'SCRIPT' }?page=browse",
+ "session_id=$cookie->{ 'SESSION_ID' }",
+ "user=$cookie->{ 'USER' }",
+ "clade=$cookie->{ 'CLADE' }",
+ "genome=$cookie->{ 'GENOME' }",
+ "assembly=$cookie->{ 'ASSEMBLY' }",
+ "contig=$cookie->{ 'CONTIG' }",
+ "nav_start=$cookie->{ 'NAV_START' }",
+ "nav_end=$cookie->{ 'NAV_END' }",
+ "nav_center=$center",
),
shape => 'rect',
coords => "$x1, $y1, $x2, $y2",
);
}
- foreach $feat ( @features )
+ foreach $track ( @tracks )
{
- foreach $elem ( @{ $feat } )
+ foreach $elem ( @{ $track } )
{
- next if $elem->{ 'type' } eq 'text';
- next if $elem->{ 'type' } eq 'wiggle';
-
- #$elem->{ 'strand' } = '+' if $elem->{ 'strand' } eq '+';
-
- $cookie->{ 'Q_ID' } = $elem->{ 'q_id' };
- $cookie->{ 'S_BEG' } = $elem->{ 's_beg' };
- $cookie->{ 'S_END' } = $elem->{ 's_end' };
- $cookie->{ 'STRAND' } = $elem->{ 'strand' };
+ next if $elem->{ 'type' } =~ /text|wiggle/;
push @img, Maasha::XHTML::area(
href => join( "&", "$cookie->{ 'SCRIPT' }?page=export",
"genome=$cookie->{ 'GENOME' }",
"assembly=$cookie->{ 'ASSEMBLY' }",
"contig=$cookie->{ 'CONTIG' }",
- "s_beg=$cookie->{ 'S_BEG' }",
- "s_end=$cookie->{ 'S_END' }",
- "strand=$cookie->{ 'STRAND' }",
+ "s_beg=$elem->{ 's_beg' }",
+ "s_end=$elem->{ 's_end' }",
+ "strand=$elem->{ 'strand' }",
+ "q_id=$elem->{ 'q_id' }",
),
shape => 'rect',
coords => "$elem->{ x1 }, $elem->{ y1 }, $elem->{ x2 }, $elem->{ y2 }",