
org.snpeff.snpEffect.testCases.unity.TestCasesNmers Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of SnpEff Show documentation
Show all versions of SnpEff Show documentation
Variant annotation and effect prediction package.
The newest version!
package org.snpeff.snpEffect.testCases.unity;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Random;
import org.junit.Test;
import org.snpeff.binseq.coder.DnaCoder;
import org.snpeff.nmer.Nmer;
import org.snpeff.util.Gpr;
public class TestCasesNmers {
public static boolean verbose = false;
/**
* Create a random sequence of length 'len'
* @param len
* @param rand
* @return
*/
String randSeq(int len, Random rand) {
StringBuilder sb = new StringBuilder();
// Create a random sequence
for (int i = 0; i < len; i++) {
int r = rand.nextInt() & 0x03;
sb.append(DnaCoder.get().toBase(r));
}
return sb.toString();
}
@Test
public void test_03_Nmers() {
Gpr.debug("Test");
long seed = 20100615;
Random rand = new Random(seed);
int numTests = 100;
// Test all lengths
for (int len = 1; len <= 32; len++) {
for (int t = 0; t < numTests; t++) {
String seq = randSeq(len, rand); // Create a random sequence
if (verbose) System.out.println("Nmer test:" + t + "\tlen:" + len + "\t" + seq);
Nmer nmer = new Nmer(seq);
if (!seq.equals(nmer.toString())) throw new RuntimeException("Sequences do not match:\n\tSeq :\t" + seq + "\n\tBinSeq :\t" + nmer);
}
}
}
@Test
public void test_20_Nmers_read_write() {
Gpr.debug("Test");
String testFile = "/tmp/nmer_test.bin";
int nmerSize = 32;
int numNmers = 100000;
try {
// Initialize
FileOutputStream os = new FileOutputStream(new File(testFile));
Random rand = new Random(20100825);
ArrayList list = new ArrayList();
// Create Nmers and write them to file
for (int i = 0; i < numNmers; i++) {
Nmer nmer = new Nmer(nmerSize);
nmer.setNmer(rand.nextLong());
list.add(nmer);
nmer.write(os);
}
os.close();
// Read nmers from file and compare to originals
Nmer nmer = new Nmer(nmerSize);
FileInputStream is = new FileInputStream(new File(testFile));
for (int i = 0; nmer.read(is) >= 0; i++) {
Nmer nmerOri = list.get(i);
if (nmerOri.getNmer() != nmer.getNmer()) throw new RuntimeException("Nmers differ:\n\t" + nmerOri + "\t" + Long.toHexString(nmerOri.getNmer()) + "\n\t" + nmer + "\t" + Long.toHexString(nmer.getNmer()));
}
is.close();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy