<p>I have the following input:</p>

<p>(1) List of protein-coding gene models in GFF3 format
(2) List of protein features of these genes (e.g. protein domains or transmembrane regions), with coordinates on the protein sequence-level. </p>

<p>As output, I would like to have an image that shows all gene models drawn to scale side-by-side, with protein features mapped onto coding exons. Different feature types should be drawn in different colors (configurable), and features are allowed to span exon-exon junctions. Ideally, the generation of such an image can be completely automated.</p>

<p>Example image:</p>

<p><img src='http://s13.postimage.org/wswaeu4nr/gene_models.png' alt='alt text' /></p>

<p>Can anyone suggest a program that can do this?</p>

<p>I ended up implementing two new BioPerl modules myself that, when used in combination, solve this problem. I just uploaded both modules to GitHub:</p>

<ul>
<li><p><a href='https://github.com/Gig77/Bio-Graphics-Glyph-decorated_gene'>Bio::Graphics::Glyph::decorated_gene</a></p></li>
<li><p><a href='https://github.com/Gig77/Bio-Draw-FeatureStack'>Bio::Draw::FeatureStack</a></p></li>
</ul>

<p>Quoting from the module descriptions:</p>

<blockquote>
  <p><strong>Bio::Graphics::Glyph::decorated_gene</strong> - A GFF3-compatible gene glyph
  with protein decorations. </p>
  
  <p>This glyph extends the functionality of the
  Bio::Graphics::Glyph::gene glyph  and allows to draw
  protein decorations (e.g., signal peptides, transmembrane domains,
  protein domains) on top of gene models. Currently, the glyph can draw
  decorations in form of colored or outlined boxes  inside or around CDS
  segments. Protein decorations are specified at the 'mRNA' transcript
  level  in protein coordinates. Protein coordinates are automatically
  mapped to nucleotide coordinates by the glyph.  Decorations are
  allowed to span exon-exon junctions, in which case decorations are
  split between exons.  By default, the glyph automatically assigns
  different colors to different types of protein decorations, whereas 
  decorations of the same type are always assigned the same color.</p>
</blockquote>

<p>and</p>

<blockquote>
  <p><strong>Bio::Draw::FeatureStack</strong> - BioPerl module to generate GD images of
  stacked gene models</p>
  
  <p>FeatureStack creates GD images of vertically stacked gene models to
  facilitate visual comparison of gene structures. Compared genes can be
  clusters of orthologous genes, gene family members, or any other genes
  of interest. FeatureStack takes an array of BioPerl feature objects as
  input, projects them onto a common coordinate space, flips features 
  on the negative strand (optional), left-aligns them by start
  coordinates (optional), sets a  fixed intron size (optional), removes
  unwanted transcripts/isoforms (optional), and then draws the  so transformed
  features with a user-specified glyph. Output images can be generated
  in SVG  (scalable vectorized image) or PNG (rastered image) format.</p>
</blockquote>

<p>Here is an example output of FeatureStack:
<img src='http://genome.sfu.ca/projects/featurestack/screenshot.png' alt='FeatureStack example output showing RFX genes across a diverse set of species' /></p>
