利用BioJava读取一个GenBank,SwissProt,EMBL文件

评论1,753

SeqIOTools类包含了读取GenBank,SwissProt,EMBL文件的方法。因为文件中包含了不止一条序列,所以SeqIOTools返回一个序列遍历器(SequenceIterator)能够遍历所有的序列。这种模型最吸引人的特点是能够在需要的时候再创建序列对象,其他时候仅仅解析序列。这样能够用很少的资源处理大量的序列集合。

文件中序列的信息被存为序列的注释对象,位置信息被存为序列的特征对象。

这里展示了三种相似的通用方案,第四种方案使用Biojava1.3API,变得更加友好。

读取GenBank

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

public class ReadGB{
public static void main(String[] args){
BufferedReader br = null;
try{
br = new BufferedReader(new FileReader(arg[0]));
}
catch(FileNotFoundException ex){
ex.printStackTrace();
System.exit(-1);
}
// 读取GenBank文件
SequenceIterator sequences = SeqIOTools.readGenbank(br);
// 遍历所有序列
while(sequences.hasNext()){
try{
Sequence seq = sequences.nextSequence();
}
catch(BioException ex){
ex.printStackTrace();
}
catch(NoSuchElementException ex){
ex.printStackTrace();
}
}
}
}
[/code]

读取SwissProt文件

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

public class ReadSwiss{
public static void main(String[] args){
***** same as example above *****
SequenceIterator sequences = SeqIOTools.readSwissprot(br);
***** same as example above *****
}
}
[/code]

读取EMBL文件

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

public class ReadEMBL{
public static void main(String[] args){
***** same as example above *****
SequenceIterator sequences = SeqIOTools.readEmbl(br);
***** same as example above *****
}
}
[/code]

通用读取器 (Biojava 1.3 pre1)

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

public class GeneralReader{
// 这个程序第一个参数是文件名,第二个参数代表文件类型的常量:
// UNKNOWN = 0;
// FASTADNA = 1;
// FASTAPROTEIN = 2;
// EMBL = 3;
// GENBANK = 4;
// SWISSPROT = 5;
// GENPEPT = 6;
// MSFDNA = 7;
// FASTAALIGNDNA = 9;
// MSFPROTEIN =10;
// FASTAALIGNPROTEIN= 11;
// MSF = 12;

public static void main(String[] args){
try{
BufferedReader br = new BufferedReader(new FileReader(args[0]));
int fileType = Interger.parseInt(args[1]);
SequenceIterator iter = (SequenceIterator)SeqIOTools.fileToBiojava(fileType,br);
}
catch(FileNotFoundException ex){
ex.printStackTrace();
}
catch(NumberFormatException ex){
ex.printStackTrace();
}
}
}
[/code]

通用读取器(Biojava1.3)

[code lang="java"]
import java.io.*;
import org.biojava.bio.*;
import org.biojava.bio.seq.*;
import org.biojava.bio.seq.io.*;
public class GeneralReader {
// 这个程序读取任何SeqIOTools支持的文件类型,共有三个参数。
// 第一个是文件名,第二个是文件类型,第三个是字母表.
// 支持的文件类型:(大小写敏感)
// FASTA, EMBL, GENBANK, SWISSPROT (swiss),GENPEPT
// 支持的序列类型:(大小写敏感)
// DNA, AA(Protein)

public static void main(String[] args) {
try {
// 准备缓存
BufferedReader br = new BufferedReader(new FileReader(args[0]);
// 文件类型
String format = args[1];
// 字母表
String alpha = args[2];

// 从文件中获得能够遍历所有序列的遍历器.SeqIOTools.fileToBiojava()方法返回一个对象.
// 如果文件是比对格式例如MSF,则返回比对对象.否则,返回一个遍历器对象.
SequenceIterator iter = (SequenceIterator) SeqIOTools.fileToBiojava(format,alpha,br);
// 处理序列
SeqIOTools.writeFasta(System.out, iter);
}
catch(FileNotFoundException ex){
ex.printStackTrace();
}
catch(BioException ex){
ex.printStackTrace();
}
catch(IOException ex) {
ex.printStackTrace();
}
}
}
[/code]

发表评论

匿名网友