
org.snpeff.snpEffect.testCases.integration.TestCasesIntegrationMarkerSeq 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.integration;
import java.util.Random;
import org.junit.Test;
import org.snpeff.interval.Exon;
import org.snpeff.interval.Gene;
import org.snpeff.interval.Marker;
import org.snpeff.interval.Transcript;
import org.snpeff.snpEffect.Config;
import org.snpeff.snpEffect.commandLine.SnpEffCmdEff;
import org.snpeff.util.Gpr;
import org.snpeff.util.GprSeq;
/**
*
* Test case
*/
public class TestCasesIntegrationMarkerSeq extends TestCasesIntegrationBase {
protected int randSeed = 20141128;
protected Random rand;
public TestCasesIntegrationMarkerSeq() {
super();
}
protected void initRand() {
rand = new Random(randSeed);
}
/**
* Test markerSeq.getSequence(marker) method
* Compare to trivial implementation
*/
@Test
public void test_01() {
Gpr.debug("Test");
initRand();
int maxSize = 20; // Max subsequence size to test
String genome = "testHg19Chr17";
String vcf = path("hgvs_dup.vcf");
// Create SnpEff
String args[] = { genome, vcf };
SnpEffCmdEff snpeff = new SnpEffCmdEff();
snpeff.parseArgs(args);
snpeff.setDebug(debug);
snpeff.setVerbose(verbose);
snpeff.setSupressOutput(!verbose);
// The problem appears when splice site is large (in this example)
snpeff.setUpDownStreamLength(0);
// Run & get result (single line)
snpeff.load();
Config config = snpeff.getConfig();
int count = 0;
for (Gene g : config.getSnpEffectPredictor().getGenome().getGenes())
for (Transcript tr : g) {
for (Exon ex : tr) {
Gpr.showMark(count++, 100);
String sequence = ex.getSequence();
if (ex.isStrandMinus()) sequence = GprSeq.reverseWc(sequence);
if (verbose) Gpr.debug("Transcript: " + tr.getId() + "\tExon: " + ex.getId() + ", strand: " + (ex.isStrandPlus() ? "+" : "-") + "\tSequence: " + sequence);
for (int i = 0, pos = ex.getStart(); pos <= ex.getEnd(); i++, pos++) {
// Random size
int size = rand.nextInt(maxSize);
if (size > (ex.getEnd() - pos)) size = 0;
// Get subsequence
String seqExpected = sequence.substring(i, i + size + 1);
// Retrieve same sequence using a marker query
Marker m = new Marker(ex.getChromosome(), pos, pos + size, false, "");
String seq = ex.getSequence(m);
// Check that sequences match
if (!seq.equalsIgnoreCase(seqExpected)) {
String msg = "Expecting '" + seqExpected + "', got '" + seq + "'";
System.err.println("ERROR:\t" + msg);
throw new RuntimeException(msg);
}
}
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy