BioJava:CookBook:Distribution:Emission
From BioJava
What is an easy way to tell if two Distributions have equal weights?
Testing two distributions for equal weights is a good way of telling if a training procedure has converged or if two Sequences are likely to come from the same organism. It is a bit tedious to loop through all the residues, especially in a large Alphabet. Fortunately there is a static method called areEmissionSpectraEqual() in DistributionTools that checks for you.
Using this method is demonstrated below.
import org.biojava.bio.dist.*; import org.biojava.bio.seq.*; import org.biojava.bio.symbol.*; import org.biojava.bio.*; import org.biojava.utils.*; public class EqualDistributions { public static void main(String[] args) { FiniteAlphabet alpha = DNATools.getDNA(); //make a uniform distribution Distribution uniform = new UniformDistribution(alpha); try { //make another Distribution with uniform weights 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); //test to see if the weights are equal boolean equal = DistributionTools.areEmissionSpectraEqual(uniform, dist); System.out.println("Are 'uniform' and 'dist' equal? "+ equal); } catch (Exception ex) { ex.printStackTrace(); } } }

