From 654bbba57ab542cd0a36c8ac619656d433f6fb29 Mon Sep 17 00:00:00 2001 From: Brandon King Date: Fri, 10 Aug 2007 21:12:28 +0000 Subject: [PATCH] HACKISH: Display chipseq peak window track * Displays chipseq peak windows when annotation is of type 'chipseq_peak_window'. * FIXME: A more proper implementation will be needed in the future. --- alg/glseqbrowser.cpp | 4 ++++ alg/glsequence.cpp | 25 +++++++++++++++++++++++++ alg/glsequence.hpp | 4 ++++ 3 files changed, 33 insertions(+) diff --git a/alg/glseqbrowser.cpp b/alg/glseqbrowser.cpp index df94626..d3cd24e 100644 --- a/alg/glseqbrowser.cpp +++ b/alg/glseqbrowser.cpp @@ -360,8 +360,12 @@ void GlSeqBrowser::push_sequence(GlSequence gs) void GlSeqBrowser::push_sequence(GlSequenceRef gs) { ColorRef default_color(GlSequence::default_gene_color()); + ColorRef default_chipseq_color(GlSequence::default_chipseq_color()); GlSequenceRef new_gs(new GlSequence(gs)); new_gs->update_annotation_draw_function("gene", draw_narrow_track, default_color); + new_gs->update_annotation_draw_function("chipseq_peak_window", + draw_chipseq_window, + default_chipseq_color); // mark where the sequence is new_gs->add_annotations_for_defined_sequence(draw_summarized_track); diff --git a/alg/glsequence.cpp b/alg/glsequence.cpp index 708a53a..69a327e 100644 --- a/alg/glsequence.cpp +++ b/alg/glsequence.cpp @@ -278,6 +278,15 @@ ColorRef GlSequence::default_track_color() return default_color; } +ColorRef GlSequence::default_chipseq_color() +{ + static ColorRef default_color; + if (not default_color) { + default_color.reset(new Color(1.0, 0.5, 0.0)); + } + return default_color; +} + int GlSequence::get_viewport_width_in_pixels() { GLint viewport[4]; @@ -523,6 +532,22 @@ void draw_narrow_track(SeqSpanRef s, float left, float right) hsmall, y, z+10); } +void draw_chipseq_window(SeqSpanRef s, float left, float right) +{ + SeqSpanRef parent(s->parent()); + DrawableRef parent_draw(parent->drawable()); + float x( (parent_draw) ? parent_draw->x() : 0); + float y( (parent_draw) ? parent_draw->y() : 0); + float z( (parent_draw) ? parent_draw->z() : 10 ); + float height( (parent_draw) ? parent_draw->height() : default_height ); + Color c( (s->drawable()) ? s->drawable()->color() : *GlSequence::default_track_color() ); + glColor3fv(c.get()); + + float hsmall = height * 2.0; + GlSequence::draw_box(left, right, x+s->start(), x+s->stop(), + hsmall, y, z+9.0); +} + void draw_summarized_track(SeqSpanRef s, float left, float right) { // if we can see the sequence text (AGCTN), don't draw the black boxes diff --git a/alg/glsequence.hpp b/alg/glsequence.hpp index 8243640..e486ca7 100644 --- a/alg/glsequence.hpp +++ b/alg/glsequence.hpp @@ -68,6 +68,8 @@ public: static ColorRef default_gene_color(); //! return default track color static ColorRef default_track_color(); + //! return default chipseq color + static ColorRef default_chipseq_color(); //! return our annotation color mapper AnnotationColorsRef colorMapper() { return color_mapper; } @@ -148,4 +150,6 @@ protected: void draw_summarized_track(SeqSpanRef ref, float left, float right); //! draw a 1/4 width centered track void draw_narrow_track(SeqSpanRef ref, float left, float right); +//! draw a chipseq peak window track +void draw_chipseq_window(SeqSpanRef ref, float left, float right); #endif -- 2.30.2