利用BioJava根据物种属性过滤序列

评论1,757

GenBank,SwissProt和EMBL文件中物种属性是一条注释。所有要做的工作就是检查序列注释信息看看物种属性是否符合要求物种属性的名称依赖于数据源,在EMBL,SwissProt中用"OS"表示,在GenBank中用"Organism"表示。下面的程序从文件中读取序列并且根据物种属性过滤。你可以适当的更改源代码,从而可以应用到任何属性中去。

[code lang="java"]
import java.io.*;
import org.biojava.bio.*;
import org.biojava.bio.seq.*;
import org.biojava.bio.seq.db.*;
import org.biojava.bio.seq.io.*;

public class FilterEMBLBySpecies {
public static void main(String[] args){
try{
// 读取EMBL文件
BufferedReader br = new BufferedReader(new FileReader(args[0]);
SequenceIterator iter = SeqIOTools.readEmbl(br);

// 读取过滤使用的物种名
String species = args[1];

// 创建一个序列库来存储过滤的序列
SequenceDB db = enw HashSequenceDB();

// 读取每条序列
while(itr.hasNext()){
Sequence seq = iter.nextSequence();
Annotation anno = seq.getAnnotation();

//检查注释中的物种属性
if(anno.containsProperty("OS")){

String property = (String)anno.getProperty("OS");
// 检查属性值,也可以使用正则表达式.将符合标准的序列加倒序列库中。
if(property.startWith(species)){
db.addSequence(seq);
}
}
}
// 将经过筛选的序列库输出
SeqIOTools.writeFasta(System.out, db);
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
[/code]

发表评论

匿名网友