|
我如何以树状结构展示特征和注释?
序列能够拥有键值对形式的注释和特征。并且特征能够拥有信息,注释,和嵌套的特征。嵌套的特征还能够拥有注释
,更深层的嵌套特征。因此很适合用树状结构展示。
幸运的是,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
|