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  -  [EMAIL PROTECTED]
http://biojava.org/mailman/listinfo/biojava-l

Reply via email to