Emit the GATK version number in the VCF header
-- Looks like ##GATKVersion=2.5-159-g3f91d93 in the VCF header line -- delivers [#51595305]
This commit is contained in:
parent
d93bed5d61
commit
74f311c973
|
|
@ -27,6 +27,7 @@ package org.broadinstitute.sting.gatk.io.stubs;
|
||||||
|
|
||||||
import net.sf.samtools.SAMSequenceDictionary;
|
import net.sf.samtools.SAMSequenceDictionary;
|
||||||
import org.broadinstitute.sting.gatk.CommandLineExecutable;
|
import org.broadinstitute.sting.gatk.CommandLineExecutable;
|
||||||
|
import org.broadinstitute.sting.gatk.CommandLineGATK;
|
||||||
import org.broadinstitute.sting.gatk.GenomeAnalysisEngine;
|
import org.broadinstitute.sting.gatk.GenomeAnalysisEngine;
|
||||||
import org.broadinstitute.sting.gatk.io.OutputTracker;
|
import org.broadinstitute.sting.gatk.io.OutputTracker;
|
||||||
import org.broadinstitute.sting.utils.classloader.JVMUtils;
|
import org.broadinstitute.sting.utils.classloader.JVMUtils;
|
||||||
|
|
@ -53,6 +54,7 @@ import java.util.List;
|
||||||
* @version 0.1
|
* @version 0.1
|
||||||
*/
|
*/
|
||||||
public class VariantContextWriterStub implements Stub<VariantContextWriter>, VariantContextWriter {
|
public class VariantContextWriterStub implements Stub<VariantContextWriter>, VariantContextWriter {
|
||||||
|
public final static String GATK_VERSION_KEY = "GATKVersion";
|
||||||
public final static boolean UPDATE_CONTIG_HEADERS = true;
|
public final static boolean UPDATE_CONTIG_HEADERS = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -225,6 +227,9 @@ public class VariantContextWriterStub implements Stub<VariantContextWriter>, Var
|
||||||
if ( header.isWriteEngineHeaders() ) {
|
if ( header.isWriteEngineHeaders() ) {
|
||||||
// skip writing the command line header if requested
|
// skip writing the command line header if requested
|
||||||
if ( ! skipWritingCommandLineHeader && header.isWriteCommandLine() ) {
|
if ( ! skipWritingCommandLineHeader && header.isWriteCommandLine() ) {
|
||||||
|
// write the GATK version if we have command line information enabled
|
||||||
|
vcfHeader.addMetaDataLine(getGATKVersionHeaderLine());
|
||||||
|
|
||||||
// Check for the command-line argument header line. If not present, add it in.
|
// Check for the command-line argument header line. If not present, add it in.
|
||||||
final VCFHeaderLine commandLineArgHeaderLine = getCommandLineArgumentHeaderLine();
|
final VCFHeaderLine commandLineArgHeaderLine = getCommandLineArgumentHeaderLine();
|
||||||
final boolean foundCommandLineHeaderLine = vcfHeader.getMetaDataLine(commandLineArgHeaderLine.getKey()) != null;
|
final boolean foundCommandLineHeaderLine = vcfHeader.getMetaDataLine(commandLineArgHeaderLine.getKey()) != null;
|
||||||
|
|
@ -284,4 +289,12 @@ public class VariantContextWriterStub implements Stub<VariantContextWriter>, Var
|
||||||
CommandLineExecutable executable = JVMUtils.getObjectOfType(argumentSources,CommandLineExecutable.class);
|
CommandLineExecutable executable = JVMUtils.getObjectOfType(argumentSources,CommandLineExecutable.class);
|
||||||
return new VCFHeaderLine(executable.getAnalysisName(), "\"" + engine.createApproximateCommandLineArgumentString(argumentSources.toArray()) + "\"");
|
return new VCFHeaderLine(executable.getAnalysisName(), "\"" + engine.createApproximateCommandLineArgumentString(argumentSources.toArray()) + "\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the GATK version header line for the VCF file
|
||||||
|
* @return non-null VCFHeaderLine.
|
||||||
|
*/
|
||||||
|
private VCFHeaderLine getGATKVersionHeaderLine() {
|
||||||
|
return new VCFHeaderLine(GATK_VERSION_KEY, CommandLineGATK.getVersionNumber());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,10 +25,12 @@
|
||||||
|
|
||||||
package org.broadinstitute.sting.gatk;
|
package org.broadinstitute.sting.gatk;
|
||||||
|
|
||||||
|
import org.broad.tribble.readers.AsciiLineReader;
|
||||||
import org.broadinstitute.sting.WalkerTest;
|
import org.broadinstitute.sting.WalkerTest;
|
||||||
import org.broadinstitute.sting.commandline.Output;
|
import org.broadinstitute.sting.commandline.Output;
|
||||||
import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
|
import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
|
||||||
import org.broadinstitute.sting.gatk.filters.MappingQualityUnavailableFilter;
|
import org.broadinstitute.sting.gatk.filters.MappingQualityUnavailableFilter;
|
||||||
|
import org.broadinstitute.sting.gatk.io.stubs.VariantContextWriterStub;
|
||||||
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
|
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
|
||||||
import org.broadinstitute.sting.gatk.walkers.ReadFilters;
|
import org.broadinstitute.sting.gatk.walkers.ReadFilters;
|
||||||
import org.broadinstitute.sting.gatk.walkers.ReadWalker;
|
import org.broadinstitute.sting.gatk.walkers.ReadWalker;
|
||||||
|
|
@ -36,9 +38,15 @@ import org.broadinstitute.sting.gatk.walkers.qc.ErrorThrowing;
|
||||||
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
||||||
import org.broadinstitute.sting.utils.exceptions.UserException;
|
import org.broadinstitute.sting.utils.exceptions.UserException;
|
||||||
import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
|
import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
|
||||||
|
import org.broadinstitute.variant.vcf.VCFCodec;
|
||||||
|
import org.broadinstitute.variant.vcf.VCFHeader;
|
||||||
|
import org.broadinstitute.variant.vcf.VCFHeaderLine;
|
||||||
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.DataProvider;
|
import org.testng.annotations.DataProvider;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
|
@ -191,4 +199,17 @@ public class EngineFeaturesIntegrationTest extends WalkerTest {
|
||||||
1, UserException.class);
|
1, UserException.class);
|
||||||
executeTest("badCompress " + compress, spec);
|
executeTest("badCompress " + compress, spec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(enabled = true)
|
||||||
|
public void testGATKVersionInVCF() throws Exception {
|
||||||
|
WalkerTestSpec spec = new WalkerTestSpec("-T UnifiedGenotyper -R " + b37KGReference + " -I "
|
||||||
|
+ privateTestDir + "PCRFree.2x250.Illumina.20_10_11.bam"
|
||||||
|
+ " -o %s -L 20:10,000,000",
|
||||||
|
1, Arrays.asList(""));
|
||||||
|
final File vcf = executeTest("testGATKVersionInVCF", spec).first.get(0);
|
||||||
|
final VCFHeader header = (VCFHeader)new VCFCodec().readHeader(new AsciiLineReader(new FileInputStream(vcf)));
|
||||||
|
final VCFHeaderLine versionLine = header.getMetaDataLine(VariantContextWriterStub.GATK_VERSION_KEY);
|
||||||
|
Assert.assertNotNull(versionLine);
|
||||||
|
Assert.assertEquals(versionLine.getValue(), CommandLineGATK.getVersionNumber());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue