利用BioJava从GenBank/EMBL/SwissProt格式中抽取序列并且以FASTA格式输出

评论2,880

为完成这个任务,我们将继承先前例子中的通用读取器,包括将序列以FASTA格式输出的能力.这里提供两个程序,一个适用于Biojava1.3pre,一个适用于Biojava1.3.

使用Biojava1.3pre1
[code lang="java"]
import org.biojava.seq.io.*;
import org.biojava.seq.*;
import java.io.*;

public class WriteToFasta {
// 这个程序可以读取SeqIOTools支持的文件格式.接受两个参数,第一个是文件名,第二个是在SeqIOTools中代表文件类型的整数
// 这些常量是:
// 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]));

//get the int constant for the file type
int fileType = Integer.parseInt(args[1]);

// 从文件中获得能够遍历所有序列的遍历器.SeqIOTools.fileToBiojava()方法返回一个对象.
// 如果文件是比对格式例如MSF,则返回比对对象.否则,返回一个遍历器对象.

SequenceIterator iter =
(SequenceIterator)SeqIOTools.fileToBiojava(fileType, br);

// 以FASTA格式输出,可以使用任何输出流,不仅仅是System.out

SeqIOTools.writeFasta(System.out, iter);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
[/code]

使用Biojava 1.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),RNA

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]

发表评论

匿名网友