|
COMPUTER SCIENCE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BIOINFORMATICS
|
|
|
|
|
|
|
|
|
|
REGULATION NETWORK
|
|
|
|
LIFE SCIENCE
|
|
|
|
|
我如何能找到一种简单的方法来判断两种分布是否具有相同的权重?
检测两个分布是否具有相同的矩阵是判别一个训练程序是否收敛或者两个序列是否来源于同一物种的好方法.当字母表很大时,对所有碱基作循环很麻烦.
Biojava的分布工具类提供了一个静态方法areEmissionSpectraEqual()来为你完成上述任务.
import org.biojava.bio.dist.*;
import org.biojava.bio.seq.*;
import org.biojava.bio.symbol.*;
import org.biojava.bio.*;
import org.biojava.util.*;
public class EqualDistributions {
public static void main(String[] args){
FiniteAlphabet alpha = DNATools.getDNA();
// 创建一个一致的分布
Distribution uniform = new UniformDistribution(alpha);
try {
//创建另一个分布, 权重是相同的
Distribution dist = DistributionFactory.DEFAULT.createDistribution(alpha);
dist.setWeight(DNATools.a(),0.25);
dist.setWeight(DNATools.c(),0.25);
dist.setWeight(DNATools.g(),0.25);
dist.setWeight(DNATools.t(),0.25);
// 检查两个分布是否一致
boolean equal = DistributionTools.areEmissionSpectraEqual(uniform,dist);
System.out.println("Are 'uniform' and 'dist' equal? " + equal);
}
catch(Exception ex){
ex.printStackTrace();
}
}
}
-- BACK TO TOP
|