[Biojava-l] Sequence Range Question

Schreiber, Mark mark.schreiber@agresearch.co.nz
Wed, 15 Jan 2003 09:14:11 +1300


Hi -

In this case, rather than using the SequencePanel you would use a
TranslatedSequencePanel which allows you to translate (offset) the
coordinates to display the bit you want.

- Mark


> -----Original Message-----
> From: Ethan Cerami [mailto:ecerami@yahoo.com] 
> Sent: Wednesday, 15 January 2003 2:51 a.m.
> To: biojava-l@biojava.org
> Subject: [Biojava-l] Sequence Range Question
> 
> 
> Ok, based on the feedback I got yesterday, I have made
> much progress :-)  Right now, I am trying to create a
> bare bones gene viewer that can render gene features
> via a SequencePanel object.  For example, the code
> below renders the Adam2 gene on chromosome 8.
> 
> Adam2 is located at:  Chromosome 8:  38997645 -
> 39047541 bp.  To render it, I have a 1MB dummy
> sequence that starts at 1.  How do I create a dummy
> sequence that starts at 38995000 so that I can show
> the correct location?  Is there some way to create a
> virtual offset?
> 
> Sample code is below.  Thanks again for any help!
> 
> Ethan 
> 
> import java.awt.*;
> import java.awt.event.*;
> 
> import javax.swing.*;
> 
> import org.biojava.bio.*;
> import org.biojava.bio.gui.sequence.*;
> import org.biojava.bio.seq.*;
> import org.biojava.bio.seq.impl.SimpleSequence;
> import org.biojava.bio.seq.genomic.Gene;
> import org.biojava.bio.symbol.*;
> import org.biojava.utils.ChangeVetoException;
> 
> /**
>  * Simple Gene Browser
>  */
> public class FeatureView extends JFrame {
> 	private final static int WINDOW = 1000000;  //  1
> Million BP
> 	private Sequence sequence;
> 	private JPanel panel = new JPanel ();
> 	private MultiLineRenderer mlr = new MultiLineRenderer
> ();
> 	private RectangularBeadRenderer featr = new 
> RectangularBeadRenderer ();
> 	private RulerRenderer ruler = new RulerRenderer ();
> 	private SequencePanel seqPanel = new SequencePanel
> ();
> 	private FeatureBlockSequenceRenderer fbr =
> 			new FeatureBlockSequenceRenderer ();
> 
> 	/**
> 	 * Constructor
> 	 */
> 	public FeatureView () throws Exception {
> 		sequence = createSequence ();
> 		addGenes (sequence);
> 		createGUI ();
> 	}
> 
> 	/**
> 	 * Creates a Dummy Sequence
> 	 */
> 	private Sequence createSequence () {
> 		SymbolList dummyList = new DummySymbolList
> (DNATools.getDNA (),
> 				WINDOW);
> 		Sequence sequence = new SimpleSequence (dummyList,
> "ensembl", "ensembl",
> 				Annotation.EMPTY_ANNOTATION);
> 		return sequence;
> 	}
> 
> 	/**
> 	 * Creates Multiple Genes
> 	 */
> 	private void addGenes (Sequence sequence)
> 			throws BioException, ChangeVetoException {
> 		//  Add Adam2 Gene
> 		//  Location:  Chromosome 8:  38997645 - 39047541 bp
> 		//  int adam2_start = 38997645;  this doesn't work
> b/c
> 		//						
> 		 it's out of range
> 		int adam2_start = 20000;
> 		int adam2_length = 49896;
> 		Gene.Template gene = new Gene.Template ();
> 		gene.type = "gene";
> 		gene.source = "ensembl";
> 		gene.location = new RangeLocation (adam2_start,
> adam2_start
> 				+ adam2_length);
> 		gene.annotation = Annotation.EMPTY_ANNOTATION;
> 		gene.strand = StrandedFeature.POSITIVE;
> 		sequence.createFeature (gene);
> 
> 	}
> 
> 	/**
> 	 * Create the User Interface
> 	 */
> 	private void createGUI () throws Exception {
> 		this.setTitle ("Gene Viewer");
> 		Container contentPane = this.getContentPane ();
> 		contentPane.add (panel, BorderLayout.CENTER);
> 		panel.add (seqPanel);
> 
> 		// Register the FeatureRenderer with the 
> FeatureBlockSequenceRenderer
> 		fbr.setFeatureRenderer (featr);
> 
> 		// Add Renderers to the MultiLineRenderer
> 		mlr.addRenderer (fbr);
> 		mlr.addRenderer (ruler);
> 		seqPanel.setRenderer (mlr);
> 
> 		// Set the Sequence to Render
> 		seqPanel.setSequence (sequence);
> 		seqPanel.setRange (new RangeLocation (1, WINDOW));
> 		seqPanel.setScale (.0007);
> 	}
> 
> 	/**
> 	 * Overridden so program terminates when window
> closes
> 	 */
> 	protected void processWindowEvent (WindowEvent we) {
> 		if (we.getID () == WindowEvent.WINDOW_CLOSING) {
> 			System.exit (0);
> 		} else {
> 			super.processWindowEvent (we);
> 		}
> 	}
> 
> 	/**
> 	 * Main Method
> 	 */
> 	public static void main (String[] args) throws
> Exception {
> 		FeatureView featureView = new FeatureView ();
> 		featureView.pack ();
> 		featureView.show ();
> 	}
> 
> }
> 
> 
> 
> __________________________________________________
> Do you Yahoo!?
> Yahoo! Mail Plus - Powerful. Affordable. Sign up now. 
> http://mailplus.yahoo.com 
> _______________________________________________
> Biojava-l mailing list  -  Biojava-l@biojava.org 
> http://biojava.org/mailman/listinfo/biojava-l
> 
=======================================================================
Attention: The information contained in this message and/or attachments
from AgResearch Limited is intended only for the persons or entities
to which it is addressed and may contain confidential and/or privileged
material. Any review, retransmission, dissemination or other use of, or
taking of any action in reliance upon, this information by persons or
entities other than the intended recipients is prohibited by AgResearch
Limited. If you have received this message in error, please notify the
sender immediately.
=======================================================================