利用BioJava建立一个多义标记(ambiguous symbol)

评论1,327

IBU定义了标准的多义标记。例如Y代表C或T, R代表G或C, N代表任何一种碱基。Biojava用基本标记(BasisSymbol)来表示这些标记。基本标记对象可以包含一个或多个组份标记,而这些组份标记可以和基本标记在同一字母表中。通过这样的方法,我们可以实现标记的多义性。

通常一个多义标记可以在包含其组份标记的字母表中调用getAmbiguity(Set symbols)方法获得。例如将symbols参数设为DNA字母表中的标记C和T组成的集合(Set),就可以获得多义标记Y。

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

public class Ambiguity {
public static void main(String[] args) {
try {
// 获得DNA字母表
Alphabet dna = DNATools.getDNA();

// 创建Y标记
Set symbolsThatMakeY = new HashSet();
symbolsThatMakeY.add(DNATools.c());
symbolsThatMakeY.add(DNATools.t());
Symbol y = dna.getAmbiguity(symbolsThatMakeY);

// 打印基本标记Y的信息
System.out.println("Formal name of 'Y' is: "+y.getName());
System.out.println("Class type of 'Y' is: "+y.getClass().getName());

// 将基本标记Y分解成它的组份标记(原子标记)
Alphabet matches = y.getMatches();
System.out.print("The 'Y' Symbol is made of: ");

// 我们知道有确定的组份标记数目匹配,所以可以计算出来
for(Iterator i = ((FiniteAlphabet)matches).iterator(); i.hasNext();){
Symbol sym = (Symbol)i.next();
System.out.print(sym.getName());
if(i.hasNext())
System.out.print(", ");
}

}
catch (IllegalSymbolException ex) {
ex.printStackTrace();
}
}
}
[/code]

发表评论

匿名网友