和生物信息学沾边的编程语言浩如烟海,BioPHP、BioJava、BioPerl、BioPython、BioRuby等等……据Bioinformatics.org上最新的投票显示(http://www.bioinformatics.org/poll/index.php?dispid=16):BioJava以17%的选择率位列第三,仅次于Python和PERL。如果考虑到在其他领域的受欢迎程度和程序执行速度,则Java又大幅胜出。那么BioJava能做些什么呢?目前,其功能主要覆盖以下几个方面:基因组(序列转换、基因注释、BLAST&FASTA);蛋白质组(等电点计算、蛋白结构预测、序列比对)、一些常用算法(遗传算法、HMM、动态规划等)和BioSQL(生物学数据库支持,包括一般的数据库类型、序列数据库和Ontology数据库)。就我目前使用过的极为有限的编程工具而言,与R相比,优势在于嵌入到Java程序更为方便,缺点是不容易上手(需要先熟悉Java);与Matlab相比优势在于开源,与Perl相比执行效率更高。这里以简单的DNA序列翻译成RNA为例,介绍其安装和初步的使用。
首先,到下面这个地址下载BioJava的发行包,目前版本为1.5,需要Java运行环境1.4.2以上。http://www.biojava.org/download/bj15/bin/BioJava1.5-bin.tar.gz
Java环境的配置这里就不再啰唆啦,有问题的可以参考某酷的“实践分享之一”。
把上面的那个压缩包放开到方便的目录(我这里是C:/),在CLASSPATH环境变量中加上这些:
C:/biojava-1.5.jar;biojava的核心文件
C:/bytecode.jar;biojava运行的必须文件
C:/commons-cli.jar;仅在编译和使用某些Demo时才会用到
下面这三个是仅涉及到BioSQL时才会用到的包
C:/commons-collections-2.1.jar;
C:/commons-dbcp-1.1.jar;
C:/commons-pool-1.1.jar
配置完毕后在C盘新建一个test.java文本文档,输入以下内容:
import org.biojava.bio.symbol.*;
import org.biojava.bio.seq.*;
public class test {
public static void main(String[] args) {
try {
//make a DNA SymbolList
SymbolList symL = DNATools.createDNA("atgccgaatcgtaa");
symL = DNATools.toRNA(symL);
//just to prove it worked
System.out.println(symL.seqString());
}
catch (IllegalSymbolException ex) {
//this will happen if you try and make the DNA seq using non IUB symbols
ex.printStackTrace();
}catch (IllegalAlphabetException ex) {
//this will happen if you try and transcribe a non DNA SymbolList
ex.printStackTrace();
}
}
}
回到C盘根,如果上述过程一切顺利,输入javac test.java 和java test就能看到运行结果:
augccgaaucguaa