COMPUTER SCIENCE

 

JAVA

 

R

 

XML

 

LINUX

 

OTHERS

 

BIOINFORMATICS

 

BIOJAVA

 

 

BIOSQL

 

 

MICROARRAY

 

 

MOTIF FINDING

 

 

REGULATION NETWORK

 

OTHERS

 

LIFE SCIENCE

 

 

我如何图形化一个特征?

特征由实现特征绘制器(FeatureRenderer)接口的类负责绘制。特征绘制器就象序列绘制器那样工作负责绘制序列中的特征。
一个序列绘制上下文不能直接和特征绘制器值作用,所以使用特征块序列绘制器(FeatureBlockSequenceRenderer)当作中间的代理,将特征绘制器包装起来。

下面的程序使用了特征块序列绘制器和特征绘制器。后面是程序的截屏。

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.symbol.*;

public class FeatureView extends JFrame {
private Sequence seq;
private JPanel jPanel1 = new JPanel();

private MultiLineRenderer mlr = new MultiLineRenderer();
private FeatureRenderer featr = new BasicFeatureRenderer();
private SequenceRenderer seqR = new SymbolSequenceRenderer();
private SequencePanel seqPanel = SequencePanel();

// featr,seqPanel间的代理

private FeatureBlockSequenceRnderer fbr = new FeatureBlockSequenceRenderer();

public FeatureView() {
try{
seq = DNATools.createDNASequence(
"atcgcgcatgcgcgcgcgcgcgcgctttatagcgatagagatata",
"dna 1");


// 创建一个10-25的特征


StrandedFeature.Template temp = new StrandedFeature.Template();
temp.annotation = Annotation.EMPTY_ANNOTATION;
temp.location = new RangeLocation(10,25);
temp.source = "";
temp.strand = StrandedFeature.POSITIVE;
temp.type = "";

// 创建另一个30-35的特征


Feature f = seq.createFeature(temp);
temp = (StrandedFeature.Template)f.makeTemplate();
temp.location = new RangeLocation(30,35);
temp.strand = StrandedFeature.NEGATIVE;
seq.createFeature(temp);

//设置GUI


init();
}
catch(Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args){
FeatureView featureView = new FeatureView();
featureView.pack();
featureView.show();
}

//初始化GUI组件

private void init() throws Exception {
this.setTitle("FeatureView");
this.getContentPane().add(jPanel1,BorderLayout.CENTER);
jPanel1.add(seqPanel,null);

// 将特征绘制器注册到特征块序列绘制器

fbr.setFeatureRenderer(featr);

//将绘制器添加到多行绘制器中

mlr.addRenderer(fbr);
mlr.addRenderer(seqR);

//将多行绘制器设置成主绘制器

seqPanel.setRenderer(mlr);

// 将序列添加到绘制器
seqPanel.setSequence(seq);

//显示整条序类

seqPanel.setRange(new RangeLocation(1,seq.length());
}

protected void processWindowEvent(WindowEvent we){
if (we.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
else {
super.processWindowEvent(we);
}
}
}

--BACT TO TOP

 

Maintainted by Wu Xin, CBI, Peking University, China, 2003