Biojava使用指南及部分程序开发
1. 简介 (3)
2. 下载与安装 (3)
3. 功能简介 (3)
3.1 成分表(alphabets)和标记(symbol) (4)
3.1.1 如何得到DNA,RNA或蛋白质的成分表? (4)
3.1.2 如何用自定义的标记建立自定义的成分表? (5)
3.1.3 如何建立杂交产物成分表(cross product alphabet),例如密码字成分表(codon
alphabet)? (6)
3.1.4 如何从杂交产物成分表(cross product alphabet)中分解出他们的组成标记
(component symbol)? (6)
3.1.5 如何判别两个成分表或两个标记是否相同? (7)
3.1.6 如何建立一个多义标记(ambiguous symbol),例如Y或R? (8)
3.2 基本序列操作 (8)
3.2.1 如何从字串中创建一条序列对象以及将其写回一条字串? (8)
3.2.2 如何从一条序列中得到子序列? (9)
3.2.3 如何将一条DNA序列转录成一条RNA序列? (10)
3.2.4 如何改变序列的名字? (11)
3.2.5 如何编辑一条序列? (11)
3.3 翻译(translation) (13)
3.3.1 如何将一条DNA或RNA或标记链翻译成蛋白质? (13)
3.3.2 如何将单个密码子翻译成单个氨基酸? (13)
3.3.3 如何使用非标准的翻译表? (14)
3.4 序列输入输出(sequence I/O) (15)
3.4.1 如何将一条序列以Fasta格式输出? (15)
3.4.2 如何从一个Fasta文件中读取序列? (16)
3.4.3 如何读取一个GenBank,SwissProtm,EMBL文件? (17)
3.4.4 如何将ABI序列转化为BioJava序列?(待测试) (19)
3.5 注释(annotation) (20)
perl怎么下载3.5.1 如何列出序列中的注释? (20)
3.5.2 如何根据物种属性过滤序列? (22)
3.6 位置和特征(location and feature) (23)
3.6.1 如何定制一个点位置(PointLocaiton)? (23)
3.6.2 如何定制一个范围位置(RangeLocation)? (23)
3.6.3 如何处理环状位置? (24)
3.6.4 如何创建一个特征? (25)
3.6.5 如何根据类型来筛选特征? (25)
3.6.6 如何从序列中删除特征? (26)
3.7 BLAST和FASTA(待测试) (27)
3.7.1 如何设置一个BLAST解析器解析BLAST结果? (27)
3.7.2 如何设置一个FAST A解析器解析FASTA搜索结果? (28)
3.7.3 如何从搜索结果中提取信息? (29)
3.8 计数和分布(count and distribution) (29)
3.8.1 如何计算序列中的残基数? (29)
3.8.2 如何将计数转化为一个分布? (31)
3.8.3 如何从一个分布得到一条随机序列? (32)
3.8.4 如何计算一个分布中的信息量或熵? (32)
3.8.5 如何能到一种简单的方法来判断两种分布是否具有相同的权重? (33)
3.8.6 如何对一个自定义的成分表创建一个N阶分布(order N distribution)? (34)
3.8.7 如何将一个分布以XML格式输出? (35)
3.9 权重矩阵和动态规划(weight matrix and dynamic programming) (36)
3.9.1 如何使用一个权重矩阵来寻一个模体? (36)
3.9.2 如何创建一个隐马模型序列谱(Profile HMM)?(待测试) (37)
3.9.3 如何建立一个自定义的隐马模型(HMM)? (39)
3.10 用户界面(user interfaces) (39)
3.10.1 如何以树状结构展示特征和注释? (39)
3.10.2 如何图形化一条序列? (40)
3.10.3 如何展示序列标尺? (40)
3.10.4 如何图形化一个特征? (41)
3.11 如何设置BioSQL?(待测试) (41)
4. 总结 (45)
1. 简介
和生物信息学沾边的编程语言浩如烟海,BioPHP、BioJava、BioPerl、BioPython、BioRuby 等等……据上最新的投票显示(/poll/index.php?dispid=16):BioJava以17%的选择率位列第三,仅次于Python和PERL。如果考虑到在其他领域的受欢迎程度和程序执行速度,则Java又大幅胜出。那么BioJava能做些什么呢?目前,其功能主要覆盖以下几个方面:基因组(序列转换、基因注释、BLAST&FASTA);蛋白质组(等电点计算、蛋白结构预测、序列比对)、一些常用算法(遗传算法、HMM、动态规划等)和BioSQL(生物学数据库支持,包括一般的数
据库类型、序列数据库和Ontology数据库)。就我目前使用过的极为有限的编程工具而言,与R相比,优势在于嵌入到Java程序更为方便,缺点是不容易上手(需要先熟悉Java);与Matlab相比优势在于开源,与Perl相比执行效率更高。
2. 下载与安装
这个是已经开发的开源jar包,不需要安装,只需要在需要他的时候导入就可以了。下载可以去这个地址下载:/download/我下载的是最新版本的3.0.3。这个用来测试后边那个blast,其他的程序都是在bi15版本下测试的。所以大家下载的时候注意一下,他是有两个模式的版本,不太一样。
3. 功能简介
下边我会罗列他的一些功能,用简单的代码表示,当然这只是他的其中一些而已,更多得功能等待着去摸索。而且我只给出核心代码,完整代码程序最后会单独给出,这里就不罗列了。声明:以下的代码原创不是我,我只是参考一个网站上的,但是他的上边有很多都是不完全的或者是有很多错误的,下边的只要不是标注待测试的,我都是改善过之后的代码,都是能够运行出结果的。我会给出一个代码的例子,大家可以对应着每个例子去参考一下,代码上我也标注过了。再次声明,原创不是我,因此希望大家都是以学术参考为前提。例子的原网址是:
www.cbi.pku.edu/chinese/documents/PUMA/biojava/index-cn.html建议大家可以看一看,不要轻易直接使用他的代码,因为很多都是错误和不完善的,很多他只是给出一个思想,但是我给出的代码基本上是没有错误和基本完善的,但是也不完全保证。
另外,凡是没有完整代码的我都是参考Biojava的API文档,文档地址为:
/docs/api1.8.2/和
/docs/api/index.html
主要参考第一个。
3.1 成分表(alphabets)和标记(symbol)
3.1.1 如何得到DNA,RNA或蛋白质的成分表?
在BioJava中,成分表(alphabets)是标记(symbol)的集合。(例如,DNA就是一种成分表,其中a,c,g,t是标记,DNA是这四种标记的集合。相似地,RNA由a,c,g,u四种标记组成,蛋白质由二十种氨基酸标记组成)。普通的生物成分表(DNA,RNA,蛋白质等等)由BioJava 的AlphabetManager负责初始化和注册,可以通过名字进行访问。DNA,RNA,蛋白质成分表也可以分别通过DNA Tools,RNA Tools和ProteinTools的静态方法方便地访问。
参考代码如下:
---------------------------------------------------------------------------------------------------------------------- Alphabet dna, rna, prot;
// 使用名字来创建DNA成分表
dna = AlphabetManager.alphabetForName("DNA");
//输出DNA的各个标记,即A,G,C,T,RNA和蛋白质类似
FiniteAlphabet fa=(FiniteAlphabet)(dna);
for (Iterator i = fa.iterator();i.hasNext();)
{
Symbol sym = (();
System.out.Name());
}
// 使用名字来创建RNA成分表
rna = AlphabetManager.alphabetForName("RNA");
// 使用名字来创建蛋白质成分表
prot = AlphabetManager.alphabetForName("PROTEIN");
// 创建包含*终止标记的蛋白质成分表
prot = AlphabetManager.alphabetForName("PROTEIN-TERM");
// 从Tools类中创建这些成分表
dna = DNA();
rna = RNA();
prot = Alphabet();
// 或创建含有终止标记的蛋白质成分表( 注意getAlphabet()和getTAlphabet() )
prot = TAlphabet();
---------------------------------------------------------------------------------------------------------------------- 3.1.2 如何用自定义的标记建立自定义的成分表?
本例子讲述如何创建一个“二进制”的成分表,它包括两种标记:0或1。用户可以制定自己的标记和成分表,然后可以用来创建标记链,序列,分布等等。
参考代码:
--------------------------------------------------------------------------------------------------------------------- // 创建一个没有注释的标记“0”
Symbol zero = ateSymbol("zero", Annotation.EMPTY_ANNOTATION);
// 创建一个没有注释的标记“1”
Symbol one = ateSymbol("one", Annotation.EMPTY_ANNOTATION);
// 创建一个集合来存储标记
Set symbols = new HashSet();
symbols.add(zero);
symbols.add(one);
// 创建“二进制成分表
FiniteAlphabet binary = new SimpleAlphabet(symbols,"Binary");
// 遍历所有标记,验证没有问题
for (Iterator i = binary.iterator();i.hasNext();)
{
Symbol sym = (();
System.out.Name());
}
/
/ 通常使用成分表管理器(AlphabetManager)注册新创建的成分表
// 新创建的成分表使用“Binary”作为名字,这样你可以象先前那样规范的通过名字来创建一个成分表实例
Alphabet alpha = AlphabetManager.alphabetForName("Binary");
// 检查规范性
System.out.println(alpha == binary);
----------------------------------------------------------------------------------------------------------------------
3.1.3 如何建立杂交产物成分表(cross product alphabet),例如密码字成分表(codon alphabet)?
杂交产物成分表由多个其他成分表生成。目的是将两个或者多个标记包装成单个的“杂交产物”标记。例如,使用三个DNA成分表杂交可以将密码子(三联密码子)包装成一个标记。这样,你可以使用这个密码子标记进行统计计数或者在一种分布中使用这个密码子标记。杂交产物成分表可以通过名字创建(如果组成成分表在成分表管理器中注册了的话),也可以创建一个组成成分表的列表,然后从这个列表中创建杂交产物成分表。这两种方法在下面的例子中都有使用。
参考代码:
---------------------------------------------------------------------------------------------------------------------- // 从一个列表中创建杂交产物成分表
List list = Collections.nCopies(3, DNA());
Alphabet codon = CrossProductAlphabet(list);
// 用名字得到同样的杂交产物成分表
Alphabet ateCrossProductAlphaFromName("(DNA x DNA x DNA)");
// 验证这两个杂交产物成分表一致
System.out.println(codon==codon2);
---------------------------------------------------------------------------------------------------------------------- 3.1.4 如何从杂交产物成分表(cross product alphabet)中分解出他们的组成标记(component symbol)?
杂交产物成分表用来将一组标记包装成单个标记。这有利于处理象密码子这样的标记。然而,有时候我
们希望将这些标记转变回它们的组成标记,下面的例子说明了如何完成这个任务。杂交产物成分表中的标记实现了原子标记(atomic symbol)接口。前缀“原子”显示这个标记不可再分。所以有人就会问道,“如何将不可再分的标记分成它的组成标记?”。原子标记的完备定义是它不能再被分解成简单的标记,而这个简单标记却又和原子标记处在相同成分表中。这样,杂交产物成分中的标记并不和它的组成标记处于同一个成分表中。(例如,atg,acc att是密码子标记,由DNAxDNAxDNA杂交生成,但在密码子成分表中并不包含a,g,t,c。所以其原子性仍成立)密码子对应(DNAxDNAxDNA)成分表,而它的组成标记对应DNA 成分表。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论