|
我如何图形化一条序列?
当创建生物信息学GUI(图形化用户接口)时,我们希望能够在GUI中显示序列。Biojava中包含很多GUI组件能绘制序列的各个部分。
最基本的序列绘制组件是序列绘制上下文(SequenceRenderContext)。他负责存储序列并指导序列绘制器绘制序列。在Biojava中
有很多序列绘制器的实现。标志序列绘制器(SymbolSequenceRender)能依次展现序列。下面的程序展示了如何使用序列绘制上下文和序列绘制器绘制序列。后面的是GUI截屏。
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 SeqView extends JFrame {
private Sequence seq;
private JPanel jPanel = new JPanel();
private SequencePanel seqPanel = new SequencePanel();
private SequenceRenderer symSeqRenderer = new SymbolSequenceRenderer();
public SeqView() {
try {
// 创建序列
seq = RNATools.createRNASequence("accggcgcgagauuugcaguguguguguaucgcg"+
"gggcgcauuaccagacuucauucgacgacucagc"
,"rna1");
init();
}
catch(Exception e){
e.printStackTrace();
}
}
public static void main (String[] args){
SeqView seqView = new SeqView();
seqView.pack();
seqView.show();
}
// 设置显示组件
private void init() throws Exception {
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(jPanel,BorderLayout.CENTER);
this.setTitle("seqView");
jPanel.add(seqPanel, BorderLayout.CENTER)
// 设置要显示的序列
seqPanel.setSequence(seq);
// 设置负责绘制的对象
seqPanel.setRenderer(symSeqRenderer);
// 要显示的序列的范围
seqPanel.setRange(enw RangeLocation(1,seq.length());
}
// 当窗口关闭时 退出
prottected void processWindowEvent(WindowEvent we){
if (we.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
else {
super.processWindowEvent(we);
}
}
}
--BACT TO TOP
|