6 CXGN::Cview::Map_overviews::Generic - a class to display generic genetic map overviews.
10 see L<CXGN::Cview::Map_overviews>.
17 Lukas Mueller (lam87@cornell.edu)
19 Isaak Tecle (iyt2@cornell.edu)
29 This class implements the following functions:
37 package CXGN
::Cview
::Map_overviews
::QTL_overview
;
39 use CXGN
::Cview
::Map
::Tools
;
40 use CXGN
::Marker
::Tools qw
| clean_marker_name
|;
41 use CXGN
::Cview
::Chromosome
::LineGraph
;
42 use base qw
( CXGN
::Cview
::Map_overviews
::Generic
);
47 Synopsis: my $overview = CXGN::Cview::Map_overviews::QTL_overview->
48 new(CXGN::Cview::Map::SGN::Genetic->new(9),$qtl_file);
49 Arguments: (1) The a CXGN::Cview::Map object for the map to be
51 (2) the QTL file from R/QTL
52 this file has the format:
53 marker_name \t chromosome \t position \t lod score
54 Returns: an overview object (constructor)
55 Side effects: sets up the overview object.
66 my $self = $class -> SUPER
::new
($map, $force);
68 #print STDERR "We are in the constructure now\n";
69 if (!$map) { exit(); }
70 $self->set_qtl_file($qtl_file);
78 # my $map_width=$self->get_image_width();
79 # my $image_height = $self->get_image_height();
80 # my $top_margin = 40;
84 # $self->set_chromosomes(\@c);
89 my $map_width=$self->get_image_width();
90 my $image_height = $self->get_image_height();
92 $self->{map_image
}= CXGN
::Cview
::MapImage
->new("", $map_width, $image_height);
94 $self->SUPER::render
($map_width, $image_height);
96 my $c = $self->get_chromosomes();
100 my $maximum = -99999;
102 #print STDERR "Current QTL file is ".$self->get_qtl_file()."\n";
103 open (my $F, "<", $self->get_qtl_file()) || die "Can't open qtl file ".$self->get_qtl_file()." $!";
104 my $first_line = <$F>;
107 my ($marker, $chr, $pos, $lod) = split /\s+/;
109 #print STDERR "$marker, $chr, $pos, $lod\n";
111 if ($lod>$maximum) { $maximum = $lod; }
112 if (!exists($graphs[$chr])) {
113 $graphs[$chr]=CXGN
::Cview
::Chromosome
::LineGraph
->new();
114 $graphs[$chr]->set_width($self->get_horizontal_spacing() - $c->[$chr-1]->get_width() -8);
115 $graphs[$chr]->set_horizontal_offset($c->[$chr-1]->get_horizontal_offset() + $c->[$chr-1]->get_width()/2 + $graphs[$chr]->get_width()/2 + 4) ;
117 $graphs[$chr]->set_vertical_offset($c->[$chr-1]->get_vertical_offset() );
119 $graphs[$chr]->set_length($c->[$chr-1]->get_length());
120 $graphs[$chr]->set_height($c->[$chr-1]->get_height());
123 $graphs[$chr]->add_association("LOD", $pos, $lod);
126 #print STDERR "The map has ".scalar(@$c)." chromosomes!\n";
127 for (my $i=0; $i<@
$c; $i++) {
128 #print STDERR "Adding graph to chromosome in slot $i...\n";
129 $c->[$i]->set_name($i);
130 $c->[$i]->set_bargraph($graphs[$i+1]);
131 $c->[$i]->show_bargraph();
133 $graphs[$i+1]->set_maximum($maximum);
134 $graphs[$i+1]->set_caption("");
142 die "We are in render_map in QTL_overview...\n";
144 $self->get_cache()->set_key($self->get_map()->get_id()."-".($self->get_image_height())."-".(join "-", ($self->get_hilite_markers())).__PACKAGE__
);
145 $self->get_cache()->set_map_name("mapmap");
147 if ($self->get_cache()->is_valid()) {
151 #print STDERR "Regenerating the map ".$self->get_map()->get_id()."\n";
154 $self->get_cache()->set_image_data( $self->{map_image
}->render_png_string());
155 $self->get_cache()->set_image_map_data( $self->{map_image
}->get_image_map("mapmap") );
162 if ($self->get_map()->get_type() =~/fish/i) { return 1; }
169 =head2 function get_map
173 Returns: gets the map object to refer to.
184 =head2 function set_map
187 Arguments: the map object to refer to
189 Side effects: the data about map object will be displayed
200 =head2 accessors get_qtl_file, set_qtl_file
212 return $self->{qtl_file
};
217 $self->{qtl_file
} = shift;
222 # no need to override this function here because the default
223 # in the parent class are fine for our purposes.
225 # =head2 function get_cache_key
235 # sub get_cache_key {
237 # my $key = $self->get_map()->map_id()."-".(join "-", ($self->get_hilite_markers())).__PACKAGE__;
238 # print STDERR "Setting cache key to : $key\n";
243 # A deprecated package name.
244 # but providing a compatibility layer...
246 package CXGN
::Cview
::Map_overviews
::generic_map_overview
;
248 use base qw
| CXGN
::Cview
::Map_overviews
::Generic
| ;
252 my $self = $class->SUPER::new
(@_);