-minimalVCF for CombineVariants. Work around for broken locking code.

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@3960 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
depristo 2010-08-06 16:10:59 +00:00
parent 669d9096e3
commit f275041b1c
3 changed files with 44 additions and 38 deletions

View File

@ -143,39 +143,39 @@ public class ReferenceDataSource implements ReferenceDataSourceProgressListener
* but is incomplete). To avoid this, obtain shared locks on both files before creating IndexedFastaSequenceFile. * but is incomplete). To avoid this, obtain shared locks on both files before creating IndexedFastaSequenceFile.
*/ */
FSLockWithShared dictLock = new FSLockWithShared(dictFile,true); // FSLockWithShared dictLock = new FSLockWithShared(dictFile,true);
FSLockWithShared indexLock = new FSLockWithShared(indexFile,true); // FSLockWithShared indexLock = new FSLockWithShared(indexFile,true);
try { // try {
try { // try {
if (!dictLock.sharedLock()) { // if (!dictLock.sharedLock()) {
throw new StingException("Could not open dictionary file because a lock could not be obtained."); // throw new StingException("Could not open dictionary file because a lock could not be obtained.");
} // }
} // }
catch(FileSystemInabilityToLockException ex) { // catch(FileSystemInabilityToLockException ex) {
logger.info(String.format("Unable to create a lock on dictionary file: %s",ex.getMessage())); // logger.info(String.format("Unable to create a lock on dictionary file: %s",ex.getMessage()));
logger.info("Treating existing dictionary file as complete."); // logger.info("Treating existing dictionary file as complete.");
} // }
//
// try {
// if (!indexLock.sharedLock()) {
// throw new StingException("Could not open index file because a lock could not be obtained.");
// }
// }
// catch(FileSystemInabilityToLockException ex) {
// logger.info(String.format("Unable to create a lock on index file: %s",ex.getMessage()));
// logger.info("Treating existing index file as complete.");
// }
try { index = new IndexedFastaSequenceFile(fastaFile);
if (!indexLock.sharedLock()) { //
throw new StingException("Could not open index file because a lock could not be obtained."); // }
} // catch (Exception e) {
} // throw new StingException(String.format("Error reading fasta file %s.", fastaFile.getAbsolutePath()), e);
catch(FileSystemInabilityToLockException ex) { // }
logger.info(String.format("Unable to create a lock on index file: %s",ex.getMessage())); // finally {
logger.info("Treating existing index file as complete."); // dictLock.unlock();
} // indexLock.unlock();
// }
index = new IndexedFastaSequenceFile(fastaFile);
}
catch (Exception e) {
throw new StingException(String.format("Error reading fasta file %s.", fastaFile.getAbsolutePath()), e);
}
finally {
dictLock.unlock();
indexLock.unlock();
}
} }
/** /**

View File

@ -68,6 +68,9 @@ public class CombineVariants extends RodWalker<Integer, Integer> {
@Argument(fullName="filteredAreUncalled", shortName="filteredAreUncalled", doc="If true, then filtered VCFs are treated as uncalled, so that filtered set annotation don't appear in the combined VCF", required=false) @Argument(fullName="filteredAreUncalled", shortName="filteredAreUncalled", doc="If true, then filtered VCFs are treated as uncalled, so that filtered set annotation don't appear in the combined VCF", required=false)
public boolean filteredAreUncalled = false; public boolean filteredAreUncalled = false;
@Argument(fullName="minimalVCF", shortName="minimalVCF", doc="If true, then the output VCF will contain no INFO or genotype INFO field", required=false)
public boolean minimalVCF = false;
@Argument(fullName="setKey", shortName="setKey", doc="Key, by default set, in the INFO key=value tag emitted describing which set the combined VCF record came from. Set to null if you don't want the set field emitted.", required=false) @Argument(fullName="setKey", shortName="setKey", doc="Key, by default set, in the INFO key=value tag emitted describing which set the combined VCF record came from. Set to null if you don't want the set field emitted.", required=false)
public String SET_KEY = "set"; public String SET_KEY = "set";
@ -130,6 +133,8 @@ public class CombineVariants extends RodWalker<Integer, Integer> {
if ( mergedVC != null ) { // only operate at the start of events if ( mergedVC != null ) { // only operate at the start of events
VariantContext annotatedMergedVC = engine.annotateContext(tracker, ref, mergedVC); VariantContext annotatedMergedVC = engine.annotateContext(tracker, ref, mergedVC);
if ( minimalVCF )
annotatedMergedVC = VariantContextUtils.pruneVariantContext(annotatedMergedVC, new HashSet(Arrays.asList(SET_KEY)));
vcfWriter.add(annotatedMergedVC, ref.getBase()); vcfWriter.add(annotatedMergedVC, ref.getBase());
} }

View File

@ -51,9 +51,9 @@ public class CombineVariantsIntegrationTest extends WalkerTest {
executeTest("testInOut1--" + file, spec); executeTest("testInOut1--" + file, spec);
} }
public void combine2(String file1, String file2, String md5) { public void combine2(String file1, String file2, String args, String md5) {
WalkerTestSpec spec = new WalkerTestSpec( WalkerTestSpec spec = new WalkerTestSpec(
baseTestString(" -priority v1,v2 -B v1,VCF," + validationDataLocation + file1 + " -B v2,VCF," + validationDataLocation + file2), baseTestString(" -priority v1,v2 -B v1,VCF," + validationDataLocation + file1 + " -B v2,VCF," + validationDataLocation + file2 + args),
1, 1,
Arrays.asList(md5)); Arrays.asList(md5));
executeTest("combine2 1:" + new File(file1).getName() + " 2:" + new File(file2).getName(), spec); executeTest("combine2 1:" + new File(file1).getName() + " 2:" + new File(file2).getName(), spec);
@ -68,12 +68,13 @@ public class CombineVariantsIntegrationTest extends WalkerTest {
@Test public void test1Indel1() { test1InOut("CEU.dindel.vcf4.trio.2010_06.indel.genotypes.vcf", "4c667935099544a1863e70ae88ddd685"); } @Test public void test1Indel1() { test1InOut("CEU.dindel.vcf4.trio.2010_06.indel.genotypes.vcf", "4c667935099544a1863e70ae88ddd685"); }
@Test public void test1Indel2() { test1InOut("CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "17c8468b1b963c9abc49dff17fd811ba"); } @Test public void test1Indel2() { test1InOut("CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "17c8468b1b963c9abc49dff17fd811ba"); }
@Test public void combineTrioCalls() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "YRI.trio.2010_03.genotypes.vcf.gz", "f3fce9ae729548e7e7c378a8282df235"); } // official project VCF files in tabix format @Test public void combineTrioCalls() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "YRI.trio.2010_03.genotypes.vcf.gz", "", "f3fce9ae729548e7e7c378a8282df235"); } // official project VCF files in tabix format
@Test public void combine2Indels() { combine2("CEU.dindel.vcf4.trio.2010_06.indel.genotypes.vcf", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "7fce3e9539ce4eb0a839d9236c928dfc"); } @Test public void combineTrioCallsMin() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "YRI.trio.2010_03.genotypes.vcf.gz", " -minimalVCF", "7ad58764b855ec7ad61075dda63567b3"); } // official project VCF files in tabix format
@Test public void combine2Indels() { combine2("CEU.dindel.vcf4.trio.2010_06.indel.genotypes.vcf", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "", "7fce3e9539ce4eb0a839d9236c928dfc"); }
@Test public void combineSNPsAndIndels() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "528cff763b95b82717008d2c05e8c393"); } @Test public void combineSNPsAndIndels() { combine2("CEU.trio.2010_03.genotypes.vcf.gz", "CEU.dindel.vcf4.low_coverage.2010_06.indel.genotypes.vcf", "", "528cff763b95b82717008d2c05e8c393"); }
@Test public void uniqueSNPs() { combine2("pilot2.snps.vcf4.genotypes.vcf", "yri.trio.gatk_glftrio.intersection.annotated.filtered.chr1.vcf", "a9126d1cbe1fdf741236763fb3e3461f"); } @Test public void uniqueSNPs() { combine2("pilot2.snps.vcf4.genotypes.vcf", "yri.trio.gatk_glftrio.intersection.annotated.filtered.chr1.vcf", "", "a9126d1cbe1fdf741236763fb3e3461f"); }
@Test public void threeWayWithRefs() { @Test public void threeWayWithRefs() {
WalkerTestSpec spec = new WalkerTestSpec( WalkerTestSpec spec = new WalkerTestSpec(