BioJava:CookBook:Interfaces:Coordinates

How do I display Sequence coordinates?

When displaying a sequence it is useful to display the coordinates of the sequence so you can tell where you are up to. BioJava contains a SequenceRenderer implementation called a RulerRenderer that displays Sequence coordinates.

Because a SequenceRenderContext can only use a single SequenceRenderer at a time you will need to use a MultiLineRenderer. A MultiLineRenderer implements SequenceRenderer and can wrap up multiple SequenceRenderers coordinating their displays as several tracks.

The use of a RulerRenderer and a MultiLineRenderer is demonstrated in the program below. A screen shot of the GUI is displayed below the program.

frame|center|View Sequence coordinates in a GUI

```java import java.awt.*; import java.awt.event.*; import javax.swing.*; import org.biojava.bio.gui.sequence.*; import org.biojava.bio.seq.*; import org.biojava.bio.symbol.*;

public class MultiView extends JFrame {

 private JPanel jPanel = new JPanel();
 private MultiLineRenderer mlr = new MultiLineRenderer();
 private SequenceRenderer symR = new SymbolSequenceRenderer();
 private RulerRenderer ruler = new RulerRenderer();
 private SequencePanel seqPanel = new SequencePanel();
 private Sequence seq;

 public MultiView() {
   try {
     seq = ProteinTools.createProteinSequence(
         "agcgstyravlivtymaragrsecharlvahklchg",
         "protein 1");
     init();
   }
   catch(Exception e) {
     e.printStackTrace();
   }
 }
 public static void main(String[] args) {
   MultiView multiView = new MultiView();
   multiView.pack();
   multiView.show();
 }

 /**
  * OverRide to allow termination of program.
  */
 protected void processWindowEvent(WindowEvent we){
   if (we.getID() == WindowEvent.WINDOW_CLOSING) {
     System.exit(0);
   }
   else {
     super.processWindowEvent(we);
   }
 }

 /**
  * Set up GUI components
  */
 private void init() throws Exception {
   this.setTitle("MultiView");
   this.getContentPane().add(jPanel, BorderLayout.CENTER);
   jPanel.add(seqPanel, BorderLayout.CENTER);

   //add the SymbolSequenceRenderer and RulerRenderer to the MultiLineRenderer
   mlr.addRenderer(symR);
   mlr.addRenderer(ruler);

   //set the MultiLineRenderer as the main renderer
   seqPanel.setRenderer(mlr);

   //set the Sequence
   seqPanel.setSequence(seq);

   //set the range to show
   seqPanel.setRange(new RangeLocation(1,seq.length()));
 }

} ```