1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
*/
package org.biojava.bio.symbol;
import java.util.Iterator;
import java.util.Set;
import junit.framework.TestCase;
import org.biojava.bio.dist.Distribution;
import org.biojava.bio.seq.ProteinTools;
import org.biojava.bio.seq.RNATools;
/**
* tests the SimpleWobbleDistributionTest object
*
* @author David Huen
* @since 1.3
*/
public class SimpleWobbleDistributionTest extends TestCase
{
CodonPref testPref;
FiniteAlphabet aaAlfa = ProteinTools.getTAlphabet();
WobbleDistribution wobbleDist;
Symbol serine;
public SimpleWobbleDistributionTest(String name)
{
super(name);
}
protected void setUp() throws Exception
{
testPref = CodonPrefTools.getCodonPreference(CodonPrefTools.JUNIT);
assertNotNull(testPref);
// check that I can get back a WobbleDistribution
// all subsequent tests done on the serine distribution in the JUNIT codon preference
SymbolList serineL = ProteinTools.createProtein("S");
assertNotNull(serineL);
serine = serineL.symbolAt(1);
wobbleDist = testPref.getWobbleDistributionForSynonyms(serine);
assertNotNull(wobbleDist);
}
public void testWobbleDistribution()
{
try {
// check that the residue association is correct
assertEquals(wobbleDist.getResidue().getName(), "SER");
// just test that the stats for the serine distro
// look sensible
Distribution nonWobbleDist = wobbleDist.getFrequencyOfNonWobbleBases();
assertNotNull(nonWobbleDist);
// ensure it sums to one
Set nonWobbleBases = wobbleDist.getNonWobbleBases();
assertNotNull(nonWobbleBases);
double sum = 0.0;
for (Iterator nonWobbleBasesI = nonWobbleBases.iterator(); nonWobbleBasesI.hasNext(); ) {
AtomicSymbol dinucl = (AtomicSymbol) nonWobbleBasesI.next();
sum += nonWobbleDist.getWeight(dinucl);
}
assertTrue(Math.abs(sum - 1.0) < 0.0001);
// look up probability of a specific non-wobble dinucleotide
Symbol testNonWobble = CodonPrefTools.getDinucleotideAlphabet().getSymbol(RNATools.createRNA("ag").toList());
assertTrue(
Math.abs(
nonWobbleDist.getWeight(testNonWobble) - 0.333333
)
< 0.0001
);
// now check on one wobble base frequency
Distribution wobbleD = wobbleDist.getWobbleFrequency(testNonWobble);
assertTrue(
Math.abs(
wobbleD.getWeight(RNATools.c()) - 0.75
)
< 0.0001
);
}
catch (IllegalSymbolException ise)
{
ise.printStackTrace();
fail("unexpected IllegalSymbolException");
}
}
}
|