[Biojava-l] DistributionLogo help

Thomas Down td2 at sanger.ac.uk
Tue Jun 29 09:40:33 EDT 2004


On 28 Jun 2004, at 21:44, xjw2101 at columbia.edu wrote:

>
>
> I am trying to use DistributionLogo class to represent a PSSM for a
> transcription factor. I can generate DistributionLogos for each
> position but can't merge them together to form a nice looking
> single logo to be displayed on a panel. Basically,I don't know how
> to control the color or the size. can someone show me how this
> class works or give me some sample code of how this class works?

Hi Xuegong,

I generally use the following code, which creates a row of 
DistributionLogo objects, for displaying a BioJava WeightMatrix (i.e. 
PSSM) objects.  Can this be adapted to do what you want?

        Thomas.



import java.awt.*;

import javax.swing.*;

import org.biojava.bio.*;
import org.biojava.bio.dist.Distribution;
import org.biojava.bio.dp.WeightMatrix;
import org.biojava.bio.gui.*;

public class WMPanel extends JPanel {
     private WeightMatrix wm;
     private DistributionLogo[] logos;

     public WMPanel(WeightMatrix wm) {
         super();
         this.wm = wm;
         setBackground(Color.white);

         RenderingHints hints = new 
RenderingHints(RenderingHints.KEY_ANTIALIASING, 
RenderingHints.VALUE_ANTIALIAS_ON);

         try {
             setLayout(new GridLayout(1, wm.columns()));
             logos = new DistributionLogo[wm.columns()];
             for (int pos = 0; pos < wm.columns(); ++pos) {
                 Distribution dist = wm.getColumn(pos);
                 DistributionLogo dl = new DistributionLogo();
                 dl.setRenderingHints(hints);
                 dl.setBackground(Color.white);
                 dl.setOpaque(true);
                 dl.setDistribution(dist);
                 dl.setPreferredSize(new Dimension(40, 50));
                 dl.setLogoPainter(new TextLogoPainter());
                 dl.setStyle(new DNAStyle());
                 add(dl);
                 logos[pos] = dl;
             }
         } catch (BioException ex) {
             throw new BioError(ex);
         }
     }

     public static void wmViewer(WeightMatrix wm, String message)
     {
         WMPanel wmv = new WMPanel(wm);
         JFrame frame = new JFrame("Weight matrix viewer" + ((message == 
null) ? "" : (" (" + message + ")")));
         frame.getContentPane().add(wmv);
         frame.pack();
         frame.setVisible(true);
     }
}



More information about the Biojava-l mailing list