COMPUTER SCIENCE

 

JAVA

 

R

 

XML

 

LINUX

 

OTHERS

 

BIOINFORMATICS

 

BIOJAVA

 

 

BIOSQL

 

 

MICROARRAY

 

 

MOTIF FINDING

 

 

REGULATION NETWORK

 

OTHERS

 

LIFE SCIENCE

 

 

我如何以树状结构展示特征和注释?

序列能够拥有键值对形式的注释和特征。并且特征能够拥有信息,注释,和嵌套的特征。嵌套的特征还能够拥有注释
,更深层的嵌套特征。因此很适合用树状结构展示。

幸运的是,Biojava团队创建了特征树(FeatureTree)类能够让你用树结构看特征。特征树继承了JTree类可以很容易
地用在GUI中。树使用SequenceDB形式的数据,SequenceDB能够从文本文件中读取。

下面的程序展示了如何使用特征树。他有两个参数。第一个是包含序列的文件名。第二个是代表数据格式的数字。

import java.awt.*;
import java.awt.event.*;
import java.io.*;

import javax.swing.*;

import org.biojava.bio.gui.*;
import org.biojava.bio.seq.*;
import org.biojava.bio.seq.db.*;
import org.biojava.bio.seq.io.*;

public class TreeFrame extends JFrame {
private JPanel jPanel = new JPanel();
private JScrollPane jScrollPanel = new JSCrollPane();
private BorderLayout borderLayout = new BorderLayout();
private FeatureTree featureTree = new FeatureTree();

public TreeFrame() {
try {
init();
}
catch(Exception e){
e.printStackTrace();
}
}
//本程序读取SeqIOTools支持的文件格式,并且以树状结构展示序列,注释,特征。它有三个参数
// 第一个是文件名,第二个是文件类型,第三个是字母表。

public static void main(String[] args) throws Exception {
// 读取文本文件
BufferedReader br = new BufferedReader(new FileReader(args[0]));

// 获取文件类型
String format = args[1];

// 获取字母表
String alpha = args[2];

//将序列读入序列库,这个序列库将当作树的数据模型
SequenceDB db = new HashSequenceDB();
SequenceIterator iter = (SequenceIterator)SeqIOTools.fileToBiojava(format,alpha,br);
while(iter.hasNext()){
db.addSequence(iter.nextSequence());
}
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
TreeFrame treeFrame = new TreeFrame();
// 设置序列库作为树的数据模型
treeFrame.getFeatureTree().setSequenceDB(db);
treeFrame.pack();
treeFrame.show();
}

private void init() throws Exception {
jPanel.setLayout(borderLayout);
this.setTitle("FeatureTree Demo");
this.getContentPane().add(jPanel,BorderLayout.CENTER);
jPanel.add(jScrollPanel,BorderLayout.CENTER);
jScrollPanel.getViewport().add(featureTree,null);
}

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

--BACK TO TOP

 

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