Fix merge conflicts
This commit is contained in:
commit
b61ecc7c19
|
|
@ -262,18 +262,19 @@ public class ErrorModel {
|
|||
}
|
||||
|
||||
public String toString() {
|
||||
String result = "(";
|
||||
StringBuilder result = new StringBuilder("(");
|
||||
boolean skipComma = true;
|
||||
for (double v : probabilityVector.getProbabilityVector()) {
|
||||
if (skipComma) {
|
||||
skipComma = false;
|
||||
}
|
||||
else {
|
||||
result += ",";
|
||||
result.append(",");
|
||||
}
|
||||
result += String.format("%.4f", v);
|
||||
result.append(String.format("%.4f", v));
|
||||
}
|
||||
return result + ")";
|
||||
result.append(")");
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
public static int getTotalReferenceDepth(HashMap<String, ErrorModel> perLaneErrorModels) {
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ public class GeneralPloidyIndelGenotypeLikelihoods extends GeneralPloidyGenotype
|
|||
List<Integer> numSeenBases = new ArrayList<Integer>(this.alleles.size());
|
||||
|
||||
if (!hasReferenceSampleData) {
|
||||
|
||||
|
||||
final int readCounts[] = new int[pileup.getNumberOfElements()];
|
||||
readHaplotypeLikelihoods = pairModel.computeGeneralReadHaplotypeLikelihoods(pileup, haplotypeMap, refContext, eventLength, perReadAlleleLikelihoodMap, readCounts);
|
||||
n = readHaplotypeLikelihoods.length;
|
||||
|
|
|
|||
|
|
@ -45,32 +45,32 @@ public class UnifiedGenotyperGeneralPloidyIntegrationTest extends WalkerTest {
|
|||
executeTest("testPoolCaller:"+name+" args=" + args, spec);
|
||||
}
|
||||
|
||||
@Test(enabled = false)
|
||||
@Test(enabled = true)
|
||||
public void testBOTH_GGA_Pools() {
|
||||
PC_LSV_Test(String.format(" -maxAltAlleles 2 -ploidy 24 -gt_mode GENOTYPE_GIVEN_ALLELES -out_mode EMIT_ALL_SITES -alleles %s",LSV_ALLELES),"LSV_BOTH_GGA","BOTH","0934f72865388999efec64bd9d4a9b93");
|
||||
}
|
||||
|
||||
@Test(enabled = false)
|
||||
@Test(enabled = true)
|
||||
public void testINDEL_GGA_Pools() {
|
||||
PC_LSV_Test(String.format(" -maxAltAlleles 1 -ploidy 24 -gt_mode GENOTYPE_GIVEN_ALLELES -out_mode EMIT_ALL_SITES -alleles %s",LSV_ALLELES),"LSV_INDEL_GGA","INDEL","126581c72d287722437274d41b6fed7b");
|
||||
}
|
||||
|
||||
@Test(enabled = false)
|
||||
@Test(enabled = true)
|
||||
public void testINDEL_maxAltAlleles2_ploidy3_Pools_noRef() {
|
||||
PC_LSV_Test_NoRef(" -maxAltAlleles 2 -ploidy 3","LSV_INDEL_DISC_NOREF_p3","INDEL","b543aa1c3efedb301e525c1d6c50ed8d");
|
||||
}
|
||||
|
||||
@Test(enabled = false)
|
||||
@Test(enabled = true)
|
||||
public void testINDEL_maxAltAlleles2_ploidy1_Pools_noRef() {
|
||||
PC_LSV_Test_NoRef(" -maxAltAlleles 2 -ploidy 1","LSV_INDEL_DISC_NOREF_p1","INDEL","55b20557a836bb92688e68f12d7f5dc4");
|
||||
}
|
||||
|
||||
@Test(enabled = false)
|
||||
@Test(enabled = true)
|
||||
public void testMT_SNP_DISCOVERY_sp4() {
|
||||
PC_MT_Test(CEUTRIO_BAM, " -maxAltAlleles 1 -ploidy 8", "MT_SNP_DISCOVERY_sp4","7eb889e8e07182f4c3d64609591f9459");
|
||||
}
|
||||
|
||||
@Test(enabled = false)
|
||||
@Test(enabled = true)
|
||||
public void testMT_SNP_GGA_sp10() {
|
||||
PC_MT_Test(CEUTRIO_BAM, String.format(" -maxAltAlleles 1 -ploidy 20 -gt_mode GENOTYPE_GIVEN_ALLELES -out_mode EMIT_ALL_SITES -alleles %s",NA12891_CALLS), "MT_SNP_GGA_sp10", "db8114877b99b14f7180fdcd24b040a7");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -208,6 +208,7 @@ public class FastaSequenceIndexBuilder {
|
|||
break;
|
||||
}
|
||||
}
|
||||
in.close();
|
||||
return sequenceIndex;
|
||||
}
|
||||
catch (IOException e) {
|
||||
|
|
|
|||
|
|
@ -12,10 +12,10 @@ import java.util.*;
|
|||
*/
|
||||
public class Bases implements Iterable<Byte>
|
||||
{
|
||||
public static byte A = 'A';
|
||||
public static byte C = 'C';
|
||||
public static byte G = 'G';
|
||||
public static byte T = 'T';
|
||||
public static final byte A = 'A';
|
||||
public static final byte C = 'C';
|
||||
public static final byte G = 'G';
|
||||
public static final byte T = 'T';
|
||||
|
||||
public static final Bases instance = new Bases();
|
||||
|
||||
|
|
|
|||
|
|
@ -55,10 +55,8 @@ public class ArgumentDefinitionGroup implements Iterable<ArgumentDefinition> {
|
|||
* Does the name of this argument group match the name of another?
|
||||
*/
|
||||
public boolean groupNameMatches( ArgumentDefinitionGroup other ) {
|
||||
if( this.groupName == null && other.groupName == null )
|
||||
return true;
|
||||
if( this.groupName == null && other.groupName != null )
|
||||
return false;
|
||||
if( this.groupName == null )
|
||||
return other.groupName == null;
|
||||
return this.groupName.equals(other.groupName);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public abstract class ArgumentTypeDescriptor {
|
|||
/**
|
||||
* our log, which we want to capture anything from org.broadinstitute.sting
|
||||
*/
|
||||
protected static Logger logger = Logger.getLogger(ArgumentTypeDescriptor.class);
|
||||
protected static final Logger logger = Logger.getLogger(ArgumentTypeDescriptor.class);
|
||||
|
||||
/**
|
||||
* Fetch the given descriptor from the descriptor repository.
|
||||
|
|
|
|||
|
|
@ -120,8 +120,8 @@ public abstract class ParsingMethod {
|
|||
*/
|
||||
private static final String TAG_TEXT = "[\\w\\-\\.\\=]*";
|
||||
|
||||
public static ParsingMethod FullNameParsingMethod = new ParsingMethod(Pattern.compile(String.format("\\s*--(%1$s)(?:\\:(%2$s(?:,%2$s)*))?\\s*",ARGUMENT_TEXT,TAG_TEXT)),
|
||||
public static final ParsingMethod FullNameParsingMethod = new ParsingMethod(Pattern.compile(String.format("\\s*--(%1$s)(?:\\:(%2$s(?:,%2$s)*))?\\s*",ARGUMENT_TEXT,TAG_TEXT)),
|
||||
ArgumentDefinitions.FullNameDefinitionMatcher) {};
|
||||
public static ParsingMethod ShortNameParsingMethod = new ParsingMethod(Pattern.compile(String.format("\\s*-(%1$s)(?:\\:(%2$s(?:,%2$s)*))?\\s*",ARGUMENT_TEXT,TAG_TEXT)),
|
||||
public static final ParsingMethod ShortNameParsingMethod = new ParsingMethod(Pattern.compile(String.format("\\s*-(%1$s)(?:\\:(%2$s(?:,%2$s)*))?\\s*",ARGUMENT_TEXT,TAG_TEXT)),
|
||||
ArgumentDefinitions.ShortNameDefinitionMatcher) {};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -233,10 +233,6 @@ public class GenomeAnalysisEngine {
|
|||
if (args.nonDeterministicRandomSeed)
|
||||
resetRandomGenerator(System.currentTimeMillis());
|
||||
|
||||
// TODO -- REMOVE ME WHEN WE STOP BCF testing
|
||||
if ( args.USE_SLOW_GENOTYPES )
|
||||
GenotypeBuilder.MAKE_FAST_BY_DEFAULT = false;
|
||||
|
||||
// if the use specified an input BQSR recalibration table then enable on the fly recalibration
|
||||
if (args.BQSR_RECAL_FILE != null)
|
||||
setBaseRecalibration(args.BQSR_RECAL_FILE, args.quantizationLevels, args.disableIndelQuals, args.PRESERVE_QSCORES_LESS_THAN, args.emitOriginalQuals);
|
||||
|
|
@ -849,20 +845,9 @@ public class GenomeAnalysisEngine {
|
|||
SAMSequenceDictionary sequenceDictionary,
|
||||
GenomeLocParser genomeLocParser,
|
||||
ValidationExclusion.TYPE validationExclusionType) {
|
||||
VCFHeader header = null;
|
||||
if ( getArguments().repairVCFHeader != null ) {
|
||||
try {
|
||||
final PositionalBufferedStream pbs = new PositionalBufferedStream(new FileInputStream(getArguments().repairVCFHeader));
|
||||
header = (VCFHeader)new VCFCodec().readHeader(pbs).getHeaderValue();
|
||||
pbs.close();
|
||||
} catch ( IOException e ) {
|
||||
throw new UserException.CouldNotReadInputFile(getArguments().repairVCFHeader, e);
|
||||
}
|
||||
}
|
||||
final RMDTrackBuilder builder = new RMDTrackBuilder(sequenceDictionary,genomeLocParser, validationExclusionType);
|
||||
|
||||
RMDTrackBuilder builder = new RMDTrackBuilder(sequenceDictionary,genomeLocParser, header, validationExclusionType);
|
||||
|
||||
List<ReferenceOrderedDataSource> dataSources = new ArrayList<ReferenceOrderedDataSource>();
|
||||
final List<ReferenceOrderedDataSource> dataSources = new ArrayList<ReferenceOrderedDataSource>();
|
||||
for (RMDTriplet fileDescriptor : referenceMetaDataFiles)
|
||||
dataSources.add(new ReferenceOrderedDataSource(fileDescriptor,
|
||||
builder,
|
||||
|
|
|
|||
|
|
@ -379,19 +379,5 @@ public class GATKArgumentCollection {
|
|||
@Hidden
|
||||
public boolean generateShadowBCF = false;
|
||||
// TODO -- remove all code tagged with TODO -- remove me when argument generateShadowBCF is removed
|
||||
|
||||
@Argument(fullName="useSlowGenotypes",shortName = "useSlowGenotypes",doc="",required=false)
|
||||
@Hidden
|
||||
public boolean USE_SLOW_GENOTYPES = false;
|
||||
// TODO -- remove all code tagged with TODO -- remove me when argument generateShadowBCF is removed
|
||||
|
||||
/**
|
||||
* The file pointed to by this argument must be a VCF file. The GATK will read in just the header of this file
|
||||
* and then use the INFO, FORMAT, and FILTER field values from this file to repair the header file of any other
|
||||
* VCF file that GATK reads in. This allows us to have in effect a master set of header records and use these
|
||||
* to fill in any missing ones in input VCF files.
|
||||
*/
|
||||
@Argument(fullName="repairVCFHeader", shortName = "repairVCFHeader", doc="If provided, whenever we read a VCF file we will use the header in this file to repair the header of the input VCF files", required=false)
|
||||
public File repairVCFHeader = null;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ class WindowedData {
|
|||
rec.getAlignmentStart(),
|
||||
stop);
|
||||
states = new ArrayList<RMDDataState>();
|
||||
if (provider != null && provider.getReferenceOrderedData() != null)
|
||||
if (provider.getReferenceOrderedData() != null)
|
||||
for (ReferenceOrderedDataSource dataSource : provider.getReferenceOrderedData())
|
||||
states.add(new RMDDataState(dataSource, dataSource.seek(range)));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,7 +45,6 @@ import org.broadinstitute.sting.utils.file.FileSystemInabilityToLockException;
|
|||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -56,7 +55,7 @@ public class ReferenceDataSource {
|
|||
private IndexedFastaSequenceFile reference;
|
||||
|
||||
/** our log, which we want to capture anything from this class */
|
||||
protected static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(ReferenceDataSource.class);
|
||||
protected static final org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(ReferenceDataSource.class);
|
||||
|
||||
/**
|
||||
* Create reference data source from fasta file
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ import java.util.Collection;
|
|||
|
||||
/** Shards and schedules data in manageable chunks. */
|
||||
public abstract class MicroScheduler implements MicroSchedulerMBean {
|
||||
protected static Logger logger = Logger.getLogger(MicroScheduler.class);
|
||||
protected static final Logger logger = Logger.getLogger(MicroScheduler.class);
|
||||
|
||||
/**
|
||||
* Counts the number of instances of the class that are currently alive.
|
||||
|
|
|
|||
|
|
@ -66,13 +66,13 @@ public class TreeReducer implements Callable {
|
|||
* @return Result of the reduce.
|
||||
*/
|
||||
public Object call() {
|
||||
Object result = null;
|
||||
Object result;
|
||||
|
||||
final long startTime = System.currentTimeMillis();
|
||||
|
||||
try {
|
||||
if( lhs == null )
|
||||
result = lhs.get();
|
||||
result = null;
|
||||
// todo -- what the hell is this above line? Shouldn't it be the two below?
|
||||
// if( lhs == null )
|
||||
// throw new IllegalStateException(String.format("Insufficient data on which to reduce; lhs = %s, rhs = %s", lhs, rhs) );
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@ public class ThreadLocalOutputTracker extends OutputTracker {
|
|||
|
||||
try {
|
||||
tempFile = File.createTempFile( stub.getClass().getName(), null );
|
||||
tempFile.deleteOnExit();
|
||||
//tempFile.deleteOnExit();
|
||||
}
|
||||
catch( IOException ex ) {
|
||||
throw new UserException.BadTmpDir("Unable to create temporary file for stub: " + stub.getClass().getName() );
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ public class VariantContextWriterStorage implements Storage<VariantContextWriter
|
|||
protected final File file;
|
||||
protected OutputStream stream;
|
||||
protected final VariantContextWriter writer;
|
||||
boolean closed = false;
|
||||
|
||||
/**
|
||||
* Constructs an object which will write directly into the output file provided by the stub.
|
||||
|
|
@ -172,10 +173,13 @@ public class VariantContextWriterStorage implements Storage<VariantContextWriter
|
|||
if(file != null)
|
||||
logger.debug("Closing temporary file " + file.getAbsolutePath());
|
||||
writer.close();
|
||||
closed = true;
|
||||
}
|
||||
|
||||
public void mergeInto(VariantContextWriterStorage target) {
|
||||
try {
|
||||
if ( ! closed )
|
||||
throw new ReviewedStingException("Writer not closed, but we are merging into the file!");
|
||||
final String targetFilePath = target.file != null ? target.file.getAbsolutePath() : "/dev/stdin";
|
||||
logger.debug(String.format("Merging %s into %s",file.getAbsolutePath(),targetFilePath));
|
||||
|
||||
|
|
@ -194,6 +198,9 @@ public class VariantContextWriterStorage implements Storage<VariantContextWriter
|
|||
}
|
||||
|
||||
source.close();
|
||||
file.delete(); // this should be last to aid in debugging when the process fails
|
||||
} catch (UserException e) {
|
||||
throw new ReviewedStingException("BUG: intermediate file " + file + " is malformed, got error while reading", e);
|
||||
} catch (IOException e) {
|
||||
throw new UserException.CouldNotReadInputFile(file, "Error reading file in VCFWriterStorage: ", e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ import java.util.List;
|
|||
public class VCFWriterArgumentTypeDescriptor extends ArgumentTypeDescriptor {
|
||||
public static final String NO_HEADER_ARG_NAME = "no_cmdline_in_header";
|
||||
public static final String SITES_ONLY_ARG_NAME = "sites_only";
|
||||
public static final String FORCE_BCF = "bcf";
|
||||
public static final HashSet<String> SUPPORTED_ZIPPED_SUFFIXES = new HashSet<String>();
|
||||
|
||||
//
|
||||
|
|
@ -96,7 +97,11 @@ public class VCFWriterArgumentTypeDescriptor extends ArgumentTypeDescriptor {
|
|||
|
||||
@Override
|
||||
public List<ArgumentDefinition> createArgumentDefinitions( ArgumentSource source ) {
|
||||
return Arrays.asList( createDefaultArgumentDefinition(source), createNoCommandLineHeaderArgumentDefinition(),createSitesOnlyArgumentDefinition());
|
||||
return Arrays.asList(
|
||||
createDefaultArgumentDefinition(source),
|
||||
createNoCommandLineHeaderArgumentDefinition(),
|
||||
createSitesOnlyArgumentDefinition(),
|
||||
createBCFArgumentDefinition() );
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -117,7 +122,7 @@ public class VCFWriterArgumentTypeDescriptor extends ArgumentTypeDescriptor {
|
|||
public Object createTypeDefault(ParsingEngine parsingEngine,ArgumentSource source, Type type) {
|
||||
if(!source.isRequired())
|
||||
throw new ReviewedStingException("BUG: tried to create type default for argument type descriptor that can't support a type default.");
|
||||
VariantContextWriterStub stub = new VariantContextWriterStub(engine, defaultOutputStream, false, argumentSources, false, false);
|
||||
VariantContextWriterStub stub = new VariantContextWriterStub(engine, defaultOutputStream, argumentSources);
|
||||
engine.addOutput(stub);
|
||||
return stub;
|
||||
}
|
||||
|
|
@ -141,15 +146,15 @@ public class VCFWriterArgumentTypeDescriptor extends ArgumentTypeDescriptor {
|
|||
if(writerFile == null && !source.isRequired())
|
||||
throw new MissingArgumentValueException(defaultArgumentDefinition);
|
||||
|
||||
// Should we compress the output stream?
|
||||
boolean compress = isCompressed(writerFileName);
|
||||
|
||||
boolean skipWritingCmdLineHeader = argumentIsPresent(createNoCommandLineHeaderArgumentDefinition(),matches);
|
||||
boolean doNotWriteGenotypes = argumentIsPresent(createSitesOnlyArgumentDefinition(),matches);
|
||||
|
||||
// Create a stub for the given object.
|
||||
VariantContextWriterStub stub = (writerFile != null) ? new VariantContextWriterStub(engine, writerFile, compress, argumentSources, skipWritingCmdLineHeader, doNotWriteGenotypes)
|
||||
: new VariantContextWriterStub(engine, defaultOutputStream, compress, argumentSources, skipWritingCmdLineHeader, doNotWriteGenotypes);
|
||||
final VariantContextWriterStub stub = (writerFile != null)
|
||||
? new VariantContextWriterStub(engine, writerFile, argumentSources)
|
||||
: new VariantContextWriterStub(engine, defaultOutputStream, argumentSources);
|
||||
|
||||
stub.setCompressed(isCompressed(writerFileName));
|
||||
stub.setDoNotWriteGenotypes(argumentIsPresent(createSitesOnlyArgumentDefinition(),matches));
|
||||
stub.setSkipWritingCommandLineHeader(argumentIsPresent(createNoCommandLineHeaderArgumentDefinition(),matches));
|
||||
stub.setForceBCF(argumentIsPresent(createBCFArgumentDefinition(),matches));
|
||||
|
||||
// WARNING: Side effects required by engine!
|
||||
parsingEngine.addTags(stub,getArgumentTags(matches));
|
||||
|
|
@ -159,8 +164,8 @@ public class VCFWriterArgumentTypeDescriptor extends ArgumentTypeDescriptor {
|
|||
}
|
||||
|
||||
/**
|
||||
* Creates the optional compression level argument for the BAM file.
|
||||
* @return Argument definition for the BAM file itself. Will not be null.
|
||||
* Creates the optional no_header argument for the VCF file.
|
||||
* @return Argument definition for the VCF file itself. Will not be null.
|
||||
*/
|
||||
private ArgumentDefinition createNoCommandLineHeaderArgumentDefinition() {
|
||||
return new ArgumentDefinition( ArgumentIOType.ARGUMENT,
|
||||
|
|
@ -179,8 +184,8 @@ public class VCFWriterArgumentTypeDescriptor extends ArgumentTypeDescriptor {
|
|||
}
|
||||
|
||||
/**
|
||||
* Creates the optional compression level argument for the BAM file.
|
||||
* @return Argument definition for the BAM file itself. Will not be null.
|
||||
* Creates the optional sites_only argument definition
|
||||
* @return Argument definition for the VCF file itself. Will not be null.
|
||||
*/
|
||||
private ArgumentDefinition createSitesOnlyArgumentDefinition() {
|
||||
return new ArgumentDefinition( ArgumentIOType.ARGUMENT,
|
||||
|
|
@ -198,6 +203,26 @@ public class VCFWriterArgumentTypeDescriptor extends ArgumentTypeDescriptor {
|
|||
null );
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the optional bcf argument definition
|
||||
* @return Argument definition for the VCF file itself. Will not be null.
|
||||
*/
|
||||
private ArgumentDefinition createBCFArgumentDefinition() {
|
||||
return new ArgumentDefinition( ArgumentIOType.ARGUMENT,
|
||||
boolean.class,
|
||||
FORCE_BCF,
|
||||
FORCE_BCF,
|
||||
"force BCF output, regardless of the file's extension",
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null );
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if the file will be compressed.
|
||||
* @param writerFileName Name of the file
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ public class VariantContextWriterStub implements Stub<VariantContextWriter>, Var
|
|||
/**
|
||||
* Should we emit a compressed output stream?
|
||||
*/
|
||||
private final boolean isCompressed;
|
||||
private boolean isCompressed = false;
|
||||
|
||||
/**
|
||||
* A hack: push the argument sources into the VCF header so that the VCF header
|
||||
|
|
@ -90,12 +90,17 @@ public class VariantContextWriterStub implements Stub<VariantContextWriter>, Var
|
|||
/**
|
||||
* Should the header be written out? A hidden argument.
|
||||
*/
|
||||
private final boolean skipWritingCommandLineHeader;
|
||||
private boolean skipWritingCommandLineHeader = false;
|
||||
|
||||
/**
|
||||
* Should we not write genotypes even when provided?
|
||||
*/
|
||||
private final boolean doNotWriteGenotypes;
|
||||
private boolean doNotWriteGenotypes = false;
|
||||
|
||||
/**
|
||||
* Should we force BCF writing regardless of the file extension?
|
||||
*/
|
||||
private boolean forceBCF = false;
|
||||
|
||||
/**
|
||||
* Connects this stub with an external stream capable of serving the
|
||||
|
|
@ -108,19 +113,13 @@ public class VariantContextWriterStub implements Stub<VariantContextWriter>, Var
|
|||
*
|
||||
* @param engine engine.
|
||||
* @param genotypeFile file to (ultimately) create.
|
||||
* @param isCompressed should we compress the output stream?
|
||||
* @param argumentSources sources.
|
||||
* @param skipWritingCommandLineHeader skip writing header.
|
||||
* @param doNotWriteGenotypes do not write genotypes.
|
||||
*/
|
||||
public VariantContextWriterStub(GenomeAnalysisEngine engine, File genotypeFile, boolean isCompressed, Collection<Object> argumentSources, boolean skipWritingCommandLineHeader, boolean doNotWriteGenotypes) {
|
||||
public VariantContextWriterStub(GenomeAnalysisEngine engine, File genotypeFile, Collection<Object> argumentSources) {
|
||||
this.engine = engine;
|
||||
this.genotypeFile = genotypeFile;
|
||||
this.genotypeStream = null;
|
||||
this.isCompressed = isCompressed;
|
||||
this.argumentSources = argumentSources;
|
||||
this.skipWritingCommandLineHeader = skipWritingCommandLineHeader;
|
||||
this.doNotWriteGenotypes = doNotWriteGenotypes;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -128,19 +127,13 @@ public class VariantContextWriterStub implements Stub<VariantContextWriter>, Var
|
|||
*
|
||||
* @param engine engine.
|
||||
* @param genotypeStream stream to (ultimately) write.
|
||||
* @param isCompressed should we compress the output stream?
|
||||
* @param argumentSources sources.
|
||||
* @param skipWritingCommandLineHeader skip writing header.
|
||||
* @param doNotWriteGenotypes do not write genotypes.
|
||||
*/
|
||||
public VariantContextWriterStub(GenomeAnalysisEngine engine, OutputStream genotypeStream, boolean isCompressed, Collection<Object> argumentSources, boolean skipWritingCommandLineHeader, boolean doNotWriteGenotypes) {
|
||||
public VariantContextWriterStub(GenomeAnalysisEngine engine, OutputStream genotypeStream, Collection<Object> argumentSources) {
|
||||
this.engine = engine;
|
||||
this.genotypeFile = null;
|
||||
this.genotypeStream = new PrintStream(genotypeStream);
|
||||
this.isCompressed = isCompressed;
|
||||
this.argumentSources = argumentSources;
|
||||
this.skipWritingCommandLineHeader = skipWritingCommandLineHeader;
|
||||
this.doNotWriteGenotypes = doNotWriteGenotypes;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -167,6 +160,22 @@ public class VariantContextWriterStub implements Stub<VariantContextWriter>, Var
|
|||
return isCompressed;
|
||||
}
|
||||
|
||||
public void setCompressed(boolean compressed) {
|
||||
isCompressed = compressed;
|
||||
}
|
||||
|
||||
public void setSkipWritingCommandLineHeader(boolean skipWritingCommandLineHeader) {
|
||||
this.skipWritingCommandLineHeader = skipWritingCommandLineHeader;
|
||||
}
|
||||
|
||||
public void setDoNotWriteGenotypes(boolean doNotWriteGenotypes) {
|
||||
this.doNotWriteGenotypes = doNotWriteGenotypes;
|
||||
}
|
||||
|
||||
public void setForceBCF(boolean forceBCF) {
|
||||
this.forceBCF = forceBCF;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the master sequence dictionary from the engine associated with this stub
|
||||
* @link GenomeAnalysisEngine.getMasterSequenceDictionary
|
||||
|
|
@ -187,7 +196,7 @@ public class VariantContextWriterStub implements Stub<VariantContextWriter>, Var
|
|||
if ( engine.lenientVCFProcessing() ) options.add(Options.ALLOW_MISSING_FIELDS_IN_HEADER);
|
||||
if ( indexOnTheFly && ! isCompressed() ) options.add(Options.INDEX_ON_THE_FLY);
|
||||
|
||||
if ( getFile() != null && VariantContextWriterFactory.isBCFOutput(getFile()) )
|
||||
if ( forceBCF || (getFile() != null && VariantContextWriterFactory.isBCFOutput(getFile())) )
|
||||
options.add(Options.FORCE_BCF);
|
||||
|
||||
return options.isEmpty() ? EnumSet.noneOf(Options.class) : EnumSet.copyOf(options);
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ public class GATKRunReport {
|
|||
/**
|
||||
* our log
|
||||
*/
|
||||
protected static Logger logger = Logger.getLogger(GATKRunReport.class);
|
||||
protected static final Logger logger = Logger.getLogger(GATKRunReport.class);
|
||||
|
||||
|
||||
@Element(required = false, name = "id")
|
||||
|
|
|
|||
|
|
@ -85,18 +85,16 @@ public class FeatureManager {
|
|||
|
||||
private final PluginManager<FeatureCodec> pluginManager;
|
||||
private final Collection<FeatureDescriptor> featureDescriptors = new TreeSet<FeatureDescriptor>();
|
||||
private final VCFHeader headerForRepairs;
|
||||
private final boolean lenientVCFProcessing;
|
||||
|
||||
/**
|
||||
* Construct a FeatureManager without a master VCF header
|
||||
*/
|
||||
public FeatureManager() {
|
||||
this(null, false);
|
||||
this(false);
|
||||
}
|
||||
|
||||
public FeatureManager(final VCFHeader headerForRepairs, final boolean lenientVCFProcessing) {
|
||||
this.headerForRepairs = headerForRepairs;
|
||||
public FeatureManager(final boolean lenientVCFProcessing) {
|
||||
this.lenientVCFProcessing = lenientVCFProcessing;
|
||||
pluginManager = new PluginManager<FeatureCodec>(FeatureCodec.class, "Codecs", "Codec");
|
||||
|
||||
|
|
@ -255,8 +253,6 @@ public class FeatureManager {
|
|||
((NameAwareCodec)codex).setName(name);
|
||||
if ( codex instanceof ReferenceDependentFeatureCodec )
|
||||
((ReferenceDependentFeatureCodec)codex).setGenomeLocParser(genomeLocParser);
|
||||
if ( codex instanceof VCFCodec )
|
||||
((VCFCodec)codex).setHeaderForRepairs(headerForRepairs);
|
||||
if ( codex instanceof AbstractVCFCodec && lenientVCFProcessing )
|
||||
((AbstractVCFCodec)codex).disableOnTheFlyModifications();
|
||||
|
||||
|
|
|
|||
|
|
@ -89,17 +89,15 @@ public class RMDTrackBuilder { // extends PluginManager<FeatureCodec> {
|
|||
* please talk through your approach with the SE team.
|
||||
* @param dict Sequence dictionary to use.
|
||||
* @param genomeLocParser Location parser to use.
|
||||
* @param headerForRepairs a VCF header that should be used to repair VCF headers. Can be null
|
||||
* @param validationExclusionType Types of validations to exclude, for sequence dictionary verification.
|
||||
*/
|
||||
public RMDTrackBuilder(final SAMSequenceDictionary dict,
|
||||
final GenomeLocParser genomeLocParser,
|
||||
final VCFHeader headerForRepairs,
|
||||
ValidationExclusion.TYPE validationExclusionType) {
|
||||
this.dict = dict;
|
||||
this.validationExclusionType = validationExclusionType;
|
||||
this.genomeLocParser = genomeLocParser;
|
||||
this.featureManager = new FeatureManager(headerForRepairs, GenomeAnalysisEngine.lenientVCFProcessing(validationExclusionType));
|
||||
this.featureManager = new FeatureManager(GenomeAnalysisEngine.lenientVCFProcessing(validationExclusionType));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -111,18 +109,6 @@ public class RMDTrackBuilder { // extends PluginManager<FeatureCodec> {
|
|||
return featureManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Same as full constructor but makes one without a header for repairs
|
||||
* @param dict
|
||||
* @param genomeLocParser
|
||||
* @param validationExclusionType
|
||||
*/
|
||||
public RMDTrackBuilder(final SAMSequenceDictionary dict,
|
||||
final GenomeLocParser genomeLocParser,
|
||||
ValidationExclusion.TYPE validationExclusionType) {
|
||||
this(dict, genomeLocParser, null, validationExclusionType);
|
||||
}
|
||||
|
||||
/**
|
||||
* create a RMDTrack of the specified type
|
||||
*
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ public abstract class TraversalEngine<M,T,WalkerType extends Walker<M,T>,Provide
|
|||
GenomeLocSortedSet targetIntervals = null;
|
||||
|
||||
/** our log, which we want to capture anything from this class */
|
||||
protected static Logger logger = Logger.getLogger(TraversalEngine.class);
|
||||
protected static final Logger logger = Logger.getLogger(TraversalEngine.class);
|
||||
|
||||
protected GenomeAnalysisEngine engine;
|
||||
|
||||
|
|
@ -354,7 +354,7 @@ public abstract class TraversalEngine<M,T,WalkerType extends Walker<M,T>,Provide
|
|||
|
||||
synchronized(performanceLogLock) {
|
||||
// Ignore multiple calls to reset the same lock.
|
||||
if(performanceLogFile != null && performanceLogFile.equals(fileName))
|
||||
if(performanceLogFile != null && performanceLogFile.equals(file))
|
||||
return;
|
||||
|
||||
// Close an existing log
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ public class TraverseLoci<M,T> extends TraversalEngine<M,T,LocusWalker<M,T>,Locu
|
|||
/**
|
||||
* our log, which we want to capture anything from this class
|
||||
*/
|
||||
protected static Logger logger = Logger.getLogger(TraversalEngine.class);
|
||||
protected static final Logger logger = Logger.getLogger(TraversalEngine.class);
|
||||
|
||||
@Override
|
||||
protected String getTraversalType() {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import java.util.List;
|
|||
public class TraverseReadPairs<M,T> extends TraversalEngine<M,T, ReadPairWalker<M,T>,ReadShardDataProvider> {
|
||||
|
||||
/** our log, which we want to capture anything from this class */
|
||||
protected static Logger logger = Logger.getLogger(TraverseReadPairs.class);
|
||||
protected static final Logger logger = Logger.getLogger(TraverseReadPairs.class);
|
||||
|
||||
@Override
|
||||
protected String getTraversalType() {
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
|
|||
*/
|
||||
public class TraverseReads<M,T> extends TraversalEngine<M,T,ReadWalker<M,T>,ReadShardDataProvider> {
|
||||
/** our log, which we want to capture anything from this class */
|
||||
protected static Logger logger = Logger.getLogger(TraverseReads.class);
|
||||
protected static final Logger logger = Logger.getLogger(TraverseReads.class);
|
||||
|
||||
@Override
|
||||
protected String getTraversalType() {
|
||||
|
|
|
|||
|
|
@ -72,8 +72,8 @@ public class TandemRepeatAnnotator extends InfoFieldAnnotation implements Standa
|
|||
return map;
|
||||
}
|
||||
|
||||
public static final String[] keyNames = {STR_PRESENT, REPEAT_UNIT_KEY,REPEATS_PER_ALLELE_KEY };
|
||||
public static final VCFInfoHeaderLine[] descriptions = {
|
||||
protected static final String[] keyNames = {STR_PRESENT, REPEAT_UNIT_KEY,REPEATS_PER_ALLELE_KEY };
|
||||
protected static final VCFInfoHeaderLine[] descriptions = {
|
||||
new VCFInfoHeaderLine(STR_PRESENT, 0, VCFHeaderLineType.Flag, "Variant is a short tandem repeat"),
|
||||
new VCFInfoHeaderLine(REPEAT_UNIT_KEY, 1, VCFHeaderLineType.String, "Tandem repeat unit (bases)"),
|
||||
new VCFInfoHeaderLine(REPEATS_PER_ALLELE_KEY, VCFHeaderLineCount.UNBOUNDED, VCFHeaderLineType.Integer, "Number of times tandem repeat unit is repeated, for each allele (including reference)") };
|
||||
|
|
|
|||
|
|
@ -30,7 +30,6 @@ import org.broadinstitute.sting.gatk.CommandLineGATK;
|
|||
import org.broadinstitute.sting.gatk.arguments.StandardVariantContextInputArgumentCollection;
|
||||
import org.broadinstitute.sting.gatk.contexts.AlignmentContext;
|
||||
import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
|
||||
import org.broadinstitute.sting.gatk.datasources.rmd.ReferenceOrderedDataSource;
|
||||
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
|
||||
import org.broadinstitute.sting.gatk.walkers.RodWalker;
|
||||
import org.broadinstitute.sting.utils.GenomeLoc;
|
||||
|
|
@ -142,9 +141,6 @@ public class BeagleOutputToVCF extends RodWalker<Integer, Integer> {
|
|||
hInfo.add(new VCFFilterHeaderLine("BGL_RM_WAS_G", "This 'G' site was set to monomorphic by Beagle"));
|
||||
hInfo.add(new VCFFilterHeaderLine("BGL_RM_WAS_T", "This 'T' site was set to monomorphic by Beagle"));
|
||||
|
||||
// Open output file specified by output VCF ROD
|
||||
final List<ReferenceOrderedDataSource> dataSources = this.getToolkit().getRodDataSources();
|
||||
|
||||
if ( comp.isBound() ) {
|
||||
hInfo.add(new VCFInfoHeaderLine("ACH", 1, VCFHeaderLineType.Integer, "Allele Count from Comparison ROD at this site"));
|
||||
hInfo.add(new VCFInfoHeaderLine("ANH", 1, VCFHeaderLineType.Integer, "Allele Frequency from Comparison ROD at this site"));
|
||||
|
|
|
|||
|
|
@ -351,7 +351,6 @@ public class ProduceBeagleInput extends RodWalker<Integer, Integer> {
|
|||
}
|
||||
|
||||
public static class CachingFormatter {
|
||||
private int maxCacheSize = 0;
|
||||
private String format;
|
||||
private LRUCache<Double, String> cache;
|
||||
|
||||
|
|
@ -379,7 +378,6 @@ public class ProduceBeagleInput extends RodWalker<Integer, Integer> {
|
|||
}
|
||||
|
||||
public CachingFormatter(String format, int maxCacheSize) {
|
||||
this.maxCacheSize = maxCacheSize;
|
||||
this.format = format;
|
||||
this.cache = new LRUCache<Double, String>(maxCacheSize);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,9 +78,9 @@ public class FindCoveredIntervals extends ActiveRegionWalker<GenomeLoc, Long> {
|
|||
public Long reduce(final GenomeLoc value, Long reduce) {
|
||||
if (value != null) {
|
||||
out.println(value.toString());
|
||||
return ++reduce;
|
||||
} else
|
||||
return reduce;
|
||||
reduce++;
|
||||
}
|
||||
return reduce;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -264,7 +264,7 @@ class SampleStatistics {
|
|||
return false;
|
||||
|
||||
// different contigs
|
||||
if (read.getMateReferenceIndex() != read.getReferenceIndex())
|
||||
if (!read.getMateReferenceIndex().equals(read.getReferenceIndex()))
|
||||
return false;
|
||||
|
||||
// unmapped
|
||||
|
|
|
|||
|
|
@ -104,7 +104,9 @@ public class BAMDiffableReader implements DiffableReader {
|
|||
InputStream fstream = new BufferedInputStream(new FileInputStream(file));
|
||||
if ( !BlockCompressedInputStream.isValidFile(fstream) )
|
||||
return false;
|
||||
new BlockCompressedInputStream(fstream).read(buffer, 0, BAM_MAGIC.length);
|
||||
final BlockCompressedInputStream BCIS = new BlockCompressedInputStream(fstream);
|
||||
BCIS.read(buffer, 0, BAM_MAGIC.length);
|
||||
BCIS.close();
|
||||
return Arrays.equals(buffer, BAM_MAGIC);
|
||||
} catch ( IOException e ) {
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -224,7 +224,7 @@ public class DiffNode extends DiffValue {
|
|||
// X=(A=A B=B C=(D=D))
|
||||
String[] parts = tree.split("=", 2);
|
||||
if ( parts.length != 2 )
|
||||
throw new ReviewedStingException("Unexpected tree structure: " + tree + " parts=" + parts);
|
||||
throw new ReviewedStingException("Unexpected tree structure: " + tree);
|
||||
String name = parts[0];
|
||||
String value = parts[1];
|
||||
|
||||
|
|
|
|||
|
|
@ -90,8 +90,10 @@ public class GATKReportDiffableReader implements DiffableReader {
|
|||
public boolean canRead(File file) {
|
||||
try {
|
||||
final String HEADER = GATKReport.GATKREPORT_HEADER_PREFIX;
|
||||
char[] buff = new char[HEADER.length()];
|
||||
new FileReader(file).read(buff, 0, HEADER.length());
|
||||
final char[] buff = new char[HEADER.length()];
|
||||
final FileReader FR = new FileReader(file);
|
||||
FR.read(buff, 0, HEADER.length());
|
||||
FR.close();
|
||||
String firstLine = new String(buff);
|
||||
return firstLine.startsWith(HEADER);
|
||||
} catch (IOException e) {
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ public class UnifiedGenotyperEngine {
|
|||
perReadAlleleLikelihoodMap.clear();
|
||||
final Map<String, AlignmentContext> stratifiedContexts = getFilteredAndStratifiedContexts(UAC, refContext, rawContext, model);
|
||||
if ( stratifiedContexts == null ) {
|
||||
results.add(UAC.OutputMode == OUTPUT_MODE.EMIT_ALL_SITES && UAC.GenotypingMode == GenotypeLikelihoodsCalculationModel.GENOTYPING_MODE.GENOTYPE_GIVEN_ALLELES ? generateEmptyContext(tracker, refContext, stratifiedContexts, rawContext) : null);
|
||||
results.add(UAC.OutputMode == OUTPUT_MODE.EMIT_ALL_SITES && UAC.GenotypingMode == GenotypeLikelihoodsCalculationModel.GENOTYPING_MODE.GENOTYPE_GIVEN_ALLELES ? generateEmptyContext(tracker, refContext, null, rawContext) : null);
|
||||
}
|
||||
else {
|
||||
final VariantContext vc = calculateLikelihoods(tracker, refContext, stratifiedContexts, AlignmentContextUtils.ReadOrientation.COMPLETE, null, true, model, perReadAlleleLikelihoodMap);
|
||||
|
|
@ -207,7 +207,7 @@ public class UnifiedGenotyperEngine {
|
|||
final List<VariantCallContext> withAllSamples = new ArrayList<VariantCallContext>(calls.size());
|
||||
for ( final VariantCallContext call : calls ) {
|
||||
if ( call == null )
|
||||
withAllSamples.add(call);
|
||||
withAllSamples.add(null);
|
||||
else {
|
||||
final VariantContext withoutMissing = VariantContextUtils.addMissingSamples(call, allSamples);
|
||||
withAllSamples.add(new VariantCallContext(withoutMissing, call.confidentlyCalled, call.shouldEmit));
|
||||
|
|
@ -258,8 +258,7 @@ public class UnifiedGenotyperEngine {
|
|||
public VariantCallContext calculateGenotypes(final RefMetaDataTracker tracker,
|
||||
final ReferenceContext refContext,
|
||||
final AlignmentContext rawContext,
|
||||
final VariantContext vc,
|
||||
final Map<String,PerReadAlleleLikelihoodMap> perReadAlleleLikelihoodMap) {
|
||||
final VariantContext vc) {
|
||||
final List<GenotypeLikelihoodsCalculationModel.Model> models = getGLModelsToUse(tracker, refContext, rawContext);
|
||||
if ( models.isEmpty() ) {
|
||||
return null;
|
||||
|
|
@ -268,16 +267,21 @@ public class UnifiedGenotyperEngine {
|
|||
// return the first one
|
||||
final GenotypeLikelihoodsCalculationModel.Model model = models.get(0);
|
||||
final Map<String, AlignmentContext> stratifiedContexts = getFilteredAndStratifiedContexts(UAC, refContext, rawContext, model);
|
||||
return calculateGenotypes(tracker, refContext, rawContext, stratifiedContexts, vc, model, perReadAlleleLikelihoodMap);
|
||||
return calculateGenotypes(tracker, refContext, rawContext, stratifiedContexts, vc, model, null);
|
||||
}
|
||||
|
||||
public VariantCallContext calculateGenotypes(final RefMetaDataTracker tracker,
|
||||
final ReferenceContext refContext,
|
||||
final AlignmentContext rawContext,
|
||||
final VariantContext vc) {
|
||||
return calculateGenotypes(tracker, refContext, rawContext, vc, null);
|
||||
/**
|
||||
* Compute genotypes at a given locus.
|
||||
*
|
||||
* @param vc the GL-annotated variant context
|
||||
* @return the VariantCallContext object
|
||||
*/
|
||||
public VariantCallContext calculateGenotypes(VariantContext vc) {
|
||||
return calculateGenotypes(null, null, null, null, vc, GenotypeLikelihoodsCalculationModel.Model.valueOf("SNP"), null);
|
||||
}
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
//
|
||||
// Private implementation helpers
|
||||
//
|
||||
|
|
@ -684,10 +688,8 @@ public class UnifiedGenotyperEngine {
|
|||
// if we're genotyping given alleles and we have a requested SNP at this position, do SNP
|
||||
if ( UAC.GenotypingMode == GenotypeLikelihoodsCalculationModel.GENOTYPING_MODE.GENOTYPE_GIVEN_ALLELES ) {
|
||||
final VariantContext vcInput = getVCFromAllelesRod(tracker, refContext, rawContext.getLocation(), false, logger, UAC.alleles);
|
||||
if ( vcInput == null ) {
|
||||
models.add(GenotypeLikelihoodsCalculationModel.Model.valueOf(modelPrefix+"SNP"));
|
||||
if ( vcInput == null )
|
||||
return models;
|
||||
}
|
||||
|
||||
if ( vcInput.isSNP() ) {
|
||||
// ignore SNPs if the user chose INDEL mode only
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ public class ConstrainedMateFixingManager {
|
|||
}
|
||||
|
||||
public static boolean iSizeTooBigToMove(SAMRecord read, int maxInsertSizeForMovingReadPairs) {
|
||||
return ( read.getReadPairedFlag() && ! read.getMateUnmappedFlag() && read.getReferenceName() != read.getMateReferenceName() ) // maps to different chromosomes
|
||||
return ( read.getReadPairedFlag() && ! read.getMateUnmappedFlag() && !read.getReferenceName().equals(read.getMateReferenceName()) ) // maps to different chromosomes
|
||||
|| Math.abs(read.getInferredInsertSize()) > maxInsertSizeForMovingReadPairs; // we won't try to move such a read
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -645,7 +645,7 @@ public class PhaseByTransmission extends RodWalker<HashMap<Byte,Integer>, HashMa
|
|||
bestChildGenotype.clear();
|
||||
bestChildGenotype.add(childGenotype.getKey());
|
||||
}
|
||||
else if(configurationLikelihood == bestConfigurationLikelihood) {
|
||||
else if(MathUtils.compareDoubles(configurationLikelihood, bestConfigurationLikelihood) == 0) {
|
||||
bestFirstParentGenotype.add(firstParentGenotype.getKey());
|
||||
bestSecondParentGenotype.add(secondParentGenotype.getKey());
|
||||
bestChildGenotype.add(childGenotype.getKey());
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ class PreciseNonNegativeDouble implements Comparable<PreciseNonNegativeDouble> {
|
|||
if (Math.abs(logValDiff) <= EQUALS_THRESH)
|
||||
return 0; // this.equals(other)
|
||||
|
||||
return new Double(Math.signum(logValDiff)).intValue();
|
||||
return (int)Math.signum(logValDiff);
|
||||
}
|
||||
|
||||
public boolean equals(PreciseNonNegativeDouble other) {
|
||||
|
|
|
|||
|
|
@ -870,7 +870,7 @@ public class ReadBackedPhasing extends RodWalker<PhasingStatsAndOutput, PhasingS
|
|||
|
||||
int useOnLeft, useOnRight;
|
||||
if (numOnLeft <= numOnRight) {
|
||||
int halfToUse = new Double(Math.floor(numToUse / 2.0)).intValue(); // skimp on the left [floor], and be generous with the right side
|
||||
int halfToUse = numToUse / 2; // skimp on the left [floor], and be generous with the right side
|
||||
useOnLeft = Math.min(halfToUse, numOnLeft);
|
||||
useOnRight = Math.min(numToUse - useOnLeft, numOnRight);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ public class ThetaVariantEvaluator extends VariantEvaluator {
|
|||
ConcurrentMap<String, Integer> alleleCounts = new ConcurrentHashMap<String, Integer>();
|
||||
|
||||
int numHetsHere = 0;
|
||||
float numGenosHere = 0;
|
||||
int numGenosHere = 0;
|
||||
int numIndsHere = 0;
|
||||
|
||||
for (final Genotype genotype : vc.getGenotypes()) {
|
||||
|
|
@ -68,7 +68,7 @@ public class ThetaVariantEvaluator extends VariantEvaluator {
|
|||
//only if have one called genotype at least
|
||||
this.numSites++;
|
||||
|
||||
this.totalHet += numHetsHere / numGenosHere;
|
||||
this.totalHet += numHetsHere / (double)numGenosHere;
|
||||
|
||||
//compute based on num sites
|
||||
float harmonicFactor = 0;
|
||||
|
|
@ -79,7 +79,7 @@ public class ThetaVariantEvaluator extends VariantEvaluator {
|
|||
|
||||
//now compute pairwise mismatches
|
||||
float numPairwise = 0;
|
||||
float numDiffs = 0;
|
||||
int numDiffs = 0;
|
||||
for (String allele1 : alleleCounts.keySet()) {
|
||||
int allele1Count = alleleCounts.get(allele1);
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ import java.util.*;
|
|||
* it computes the AC from the genotypes themselves. If no AC can be computed, 0 is used.
|
||||
*/
|
||||
public class AlleleCount extends VariantStratifier {
|
||||
int nchrom;
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
// we can only work with a single eval VCF, and it must have genotypes
|
||||
|
|
@ -26,7 +28,8 @@ public class AlleleCount extends VariantStratifier {
|
|||
throw new UserException.BadArgumentValue("AlleleCount", "AlleleCount stratification only works with a single eval vcf");
|
||||
|
||||
// There are 2 x n sample chromosomes for diploids
|
||||
int nchrom = getVariantEvalWalker().getSampleNamesForEvaluation().size() * 2;
|
||||
// TODO -- generalize to handle multiple ploidy
|
||||
nchrom = getVariantEvalWalker().getSampleNamesForEvaluation().size() * 2;
|
||||
if ( nchrom < 2 )
|
||||
throw new UserException.BadArgumentValue("AlleleCount", "AlleleCount stratification requires an eval vcf with at least one sample");
|
||||
|
||||
|
|
@ -52,8 +55,10 @@ public class AlleleCount extends VariantStratifier {
|
|||
}
|
||||
|
||||
// make sure that the AC isn't invalid
|
||||
if ( AC > eval.getCalledChrCount() )
|
||||
throw new UserException.MalformedVCF(String.format("The AC or MLEAC value (%d) at position %s:%d is larger than the possible called chromosome count (%d)", AC, eval.getChr(), eval.getStart(), eval.getCalledChrCount()));
|
||||
if ( AC > nchrom )
|
||||
throw new UserException.MalformedVCF(String.format("The AC or MLEAC value (%d) at position %s:%d " +
|
||||
"is larger than the number of chromosomes over all samples (%d)", AC,
|
||||
eval.getChr(), eval.getStart(), nchrom));
|
||||
|
||||
return Collections.singletonList((Object) AC);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -177,6 +177,7 @@ public class TrancheManager {
|
|||
double runningValue = metric.getRunningMetric(i);
|
||||
out.printf("%.4f %d %.4f%n", d.lod, score, runningValue);
|
||||
}
|
||||
out.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
throw new UserException.CouldNotCreateOutputFile(f, e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ import org.broadinstitute.sting.gatk.arguments.StandardVariantContextInputArgume
|
|||
import org.broadinstitute.sting.gatk.contexts.AlignmentContext;
|
||||
import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
|
||||
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
|
||||
import org.broadinstitute.sting.gatk.samples.Sample;
|
||||
import org.broadinstitute.sting.gatk.walkers.RodWalker;
|
||||
import org.broadinstitute.sting.gatk.walkers.TreeReducible;
|
||||
import org.broadinstitute.sting.gatk.walkers.annotator.ChromosomeCounts;
|
||||
|
|
@ -311,10 +310,6 @@ public class SelectVariants extends RodWalker<Integer, Integer> implements TreeR
|
|||
private File rsIDFile = null;
|
||||
|
||||
|
||||
@Hidden
|
||||
@Argument(fullName="outMVFile", shortName="outMVFile", doc="", required=false)
|
||||
private String outMVFile = null;
|
||||
|
||||
@Hidden
|
||||
@Argument(fullName="fullyDecode", doc="If true, the incoming VariantContext will be fully decoded", required=false)
|
||||
private boolean fullyDecode = false;
|
||||
|
|
@ -369,8 +364,6 @@ public class SelectVariants extends RodWalker<Integer, Integer> implements TreeR
|
|||
private int positionToAdd = 0;
|
||||
private RandomVariantStructure [] variantArray;
|
||||
|
||||
private PrintStream outMVFileStream = null;
|
||||
|
||||
//Random number generator for the genotypes to remove
|
||||
private Random randomGenotypes = new Random();
|
||||
|
||||
|
|
@ -528,23 +521,6 @@ public class SelectVariants extends RodWalker<Integer, Integer> implements TreeR
|
|||
if (MENDELIAN_VIOLATIONS && mv.countViolations(this.getSampleDB().getFamilies(samples),vc) < 1)
|
||||
break;
|
||||
|
||||
if (outMVFile != null){
|
||||
for( String familyId : mv.getViolationFamilies()){
|
||||
for(Sample sample : this.getSampleDB().getFamily(familyId)){
|
||||
if(sample.getParents().size() > 0){
|
||||
outMVFileStream.format("MV@%s:%d. REF=%s, ALT=%s, AC=%d, momID=%s, dadID=%s, childID=%s, momG=%s, momGL=%s, dadG=%s, dadGL=%s, " +
|
||||
"childG=%s childGL=%s\n",vc.getChr(), vc.getStart(),
|
||||
vc.getReference().getDisplayString(), vc.getAlternateAllele(0).getDisplayString(), vc.getCalledChrCount(vc.getAlternateAllele(0)),
|
||||
sample.getMaternalID(), sample.getPaternalID(), sample.getID(),
|
||||
vc.getGenotype(sample.getMaternalID()).toBriefString(), vc.getGenotype(sample.getMaternalID()).getLikelihoods().getAsString(),
|
||||
vc.getGenotype(sample.getPaternalID()).toBriefString(), vc.getGenotype(sample.getPaternalID()).getLikelihoods().getAsString(),
|
||||
vc.getGenotype(sample.getID()).toBriefString(),vc.getGenotype(sample.getID()).getLikelihoods().getAsString() );
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (DISCORDANCE_ONLY) {
|
||||
Collection<VariantContext> compVCs = tracker.getValues(discordanceTrack, context.getLocation());
|
||||
if (!isDiscordant(vc, compVCs))
|
||||
|
|
@ -568,7 +544,7 @@ public class SelectVariants extends RodWalker<Integer, Integer> implements TreeR
|
|||
VariantContext sub = subsetRecord(vc, EXCLUDE_NON_VARIANTS);
|
||||
|
||||
if ( REGENOTYPE && sub.isPolymorphicInSamples() && hasPLs(sub) ) {
|
||||
final VariantContextBuilder builder = new VariantContextBuilder(UG_engine.calculateGenotypes(null, ref, context, sub)).filters(sub.getFiltersMaybeNull());
|
||||
final VariantContextBuilder builder = new VariantContextBuilder(UG_engine.calculateGenotypes(sub)).filters(sub.getFiltersMaybeNull());
|
||||
addAnnotations(builder, sub);
|
||||
sub = builder.make();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,8 +8,6 @@ import org.broadinstitute.sting.gatk.contexts.AlignmentContext;
|
|||
import org.broadinstitute.sting.gatk.contexts.ReferenceContext;
|
||||
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
|
||||
import org.broadinstitute.sting.gatk.walkers.RodWalker;
|
||||
import org.broadinstitute.sting.utils.R.RScriptExecutorException;
|
||||
import org.broadinstitute.sting.utils.codecs.vcf.VCFConstants;
|
||||
import org.broadinstitute.sting.utils.codecs.vcf.VCFHeader;
|
||||
import org.broadinstitute.sting.utils.codecs.vcf.VCFUtils;
|
||||
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
||||
|
|
@ -18,7 +16,6 @@ import org.broadinstitute.sting.utils.help.DocumentedGATKFeature;
|
|||
import org.broadinstitute.sting.utils.text.XReadLines;
|
||||
import org.broadinstitute.sting.utils.variantcontext.Genotype;
|
||||
import org.broadinstitute.sting.utils.variantcontext.VariantContext;
|
||||
import org.broadinstitute.sting.utils.variantcontext.VariantContextBuilder;
|
||||
import org.broadinstitute.sting.utils.variantcontext.VariantContextUtils;
|
||||
|
||||
import java.io.*;
|
||||
|
|
@ -95,7 +92,6 @@ public class VariantsToBinaryPed extends RodWalker<Integer,Integer> {
|
|||
// write to the fam file, the first six columns of the standard ped file
|
||||
// first, load data from the input meta data file
|
||||
Map<String,Map<String,String>> metaValues = new HashMap<String,Map<String,String>>();
|
||||
Set<String> samplesToUse = new HashSet<String>();
|
||||
logger.debug("Reading in metadata...");
|
||||
try {
|
||||
if ( metaDataFile.getAbsolutePath().endsWith(".fam") ) {
|
||||
|
|
@ -274,6 +270,7 @@ public class VariantsToBinaryPed extends RodWalker<Integer,Integer> {
|
|||
inStream.read(readGenotypes);
|
||||
outBed.write(readGenotypes);
|
||||
}
|
||||
inStream.close();
|
||||
} catch (IOException e) {
|
||||
throw new ReviewedStingException("Error reading form temp file for input.",e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -372,7 +372,7 @@ public class VariantsToTable extends RodWalker<Integer, Integer> {
|
|||
// ----------------------------------------------------------------------------------------------------
|
||||
|
||||
public static abstract class Getter { public abstract String get(VariantContext vc); }
|
||||
public static Map<String, Getter> getters = new HashMap<String, Getter>();
|
||||
public static final Map<String, Getter> getters = new HashMap<String, Getter>();
|
||||
|
||||
static {
|
||||
// #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT
|
||||
|
|
|
|||
|
|
@ -67,10 +67,10 @@ public class BaseUtils {
|
|||
public static final byte DELETION_INDEX = 4;
|
||||
public static final byte NO_CALL_INDEX = 5; // (this is 'N')
|
||||
|
||||
public static int gIndex = BaseUtils.simpleBaseToBaseIndex((byte) 'G');
|
||||
public static int cIndex = BaseUtils.simpleBaseToBaseIndex((byte) 'C');
|
||||
public static int aIndex = BaseUtils.simpleBaseToBaseIndex((byte) 'A');
|
||||
public static int tIndex = BaseUtils.simpleBaseToBaseIndex((byte) 'T');
|
||||
public static final int aIndex = BaseUtils.simpleBaseToBaseIndex((byte) 'A');
|
||||
public static final int cIndex = BaseUtils.simpleBaseToBaseIndex((byte) 'C');
|
||||
public static final int gIndex = BaseUtils.simpleBaseToBaseIndex((byte) 'G');
|
||||
public static final int tIndex = BaseUtils.simpleBaseToBaseIndex((byte) 'T');
|
||||
|
||||
/// In genetics, a transition is a mutation changing a purine to another purine nucleotide (A <-> G) or
|
||||
// a pyrimidine to another pyrimidine nucleotide (C <-> T).
|
||||
|
|
|
|||
|
|
@ -199,9 +199,9 @@ public class MannWhitneyU {
|
|||
else if ( z > n ) { return 0.0; }
|
||||
else {
|
||||
if ( z > ((double) n) /2 ) {
|
||||
return 1.0-1/((double)Arithmetic.factorial(n))*uniformSumHelper(z, (int) Math.floor(z), n, 0);
|
||||
return 1.0-1/(Arithmetic.factorial(n))*uniformSumHelper(z, (int) Math.floor(z), n, 0);
|
||||
} else {
|
||||
return 1/((double)Arithmetic.factorial(n))*uniformSumHelper(z, (int) Math.floor(z), n, 0);
|
||||
return 1/(Arithmetic.factorial(n))*uniformSumHelper(z, (int) Math.floor(z), n, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -789,7 +789,7 @@ public class MathUtils {
|
|||
for (byte v : vals) {
|
||||
sum += v;
|
||||
}
|
||||
return (byte) Math.floor(sum / vals.length);
|
||||
return (byte) (sum / vals.length);
|
||||
}
|
||||
|
||||
public static double averageDouble(List<Double> vals) {
|
||||
|
|
@ -1066,7 +1066,6 @@ public class MathUtils {
|
|||
// the list is assumed *not* to be sorted
|
||||
|
||||
final Comparable x = list.get(orderStat);
|
||||
ListIterator iterator = list.listIterator();
|
||||
ArrayList lessThanX = new ArrayList();
|
||||
ArrayList equalToX = new ArrayList();
|
||||
ArrayList greaterThanX = new ArrayList();
|
||||
|
|
|
|||
|
|
@ -377,59 +377,6 @@ public class SWPairwiseAlignment {
|
|||
return w_open+(k-1)*w_extend; // gap
|
||||
}
|
||||
|
||||
private void print(int[][] s) {
|
||||
for ( int i = 0 ; i < s.length ; i++) {
|
||||
for ( int j = 0; j < s[i].length ; j++ ) {
|
||||
System.out.printf(" %4d",s[i][j]);
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
|
||||
private void print(double[][] s) {
|
||||
for ( int i = 0 ; i < s.length ; i++) {
|
||||
for ( int j = 0; j < s[i].length ; j++ ) {
|
||||
System.out.printf(" %4g",s[i][j]);
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
|
||||
private void print(int[][] s, String a, String b) {
|
||||
|
||||
System.out.print(" ");
|
||||
for ( int j = 1 ; j < s[0].length ; j++) System.out.printf(" %4c",b.charAt(j-1)) ;
|
||||
System.out.println();
|
||||
|
||||
for ( int i = 0 ; i < s.length ; i++) {
|
||||
if ( i > 0 ) System.out.print(a.charAt(i-1));
|
||||
else System.out.print(' ');
|
||||
System.out.print(" ");
|
||||
for ( int j = 0; j < s[i].length ; j++ ) {
|
||||
System.out.printf(" %4d",s[i][j]);
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void print(double[][] s, String a, String b) {
|
||||
|
||||
System.out.print("");
|
||||
for ( int j = 1 ; j < s[0].length ; j++) System.out.printf(" %4c",b.charAt(j-1)) ;
|
||||
System.out.println();
|
||||
|
||||
for ( int i = 0 ; i < s.length ; i++) {
|
||||
if ( i > 0 ) System.out.print(a.charAt(i-1));
|
||||
else System.out.print(' ');
|
||||
System.out.print(" ");
|
||||
for ( int j = 0; j < s[i].length ; j++ ) {
|
||||
System.out.printf(" %2.1f",s[i][j]);
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
|
||||
private void print(double[] s, byte[] a, byte[] b) {
|
||||
int n = a.length+1;
|
||||
int m = b.length+1;
|
||||
|
|
|
|||
|
|
@ -563,7 +563,6 @@ public class Utils {
|
|||
List<T> t = new ArrayList<T>(c.keySet());
|
||||
Collections.sort(t);
|
||||
|
||||
List<V> l = new ArrayList<V>();
|
||||
List<String> pairs = new ArrayList<String>();
|
||||
for ( T k : t ) {
|
||||
pairs.add(k + "=" + c.get(k));
|
||||
|
|
|
|||
|
|
@ -51,7 +51,6 @@ import java.util.Map;
|
|||
*/
|
||||
public final class BCF2Codec implements FeatureCodec<VariantContext> {
|
||||
final protected static Logger logger = Logger.getLogger(BCF2Codec.class);
|
||||
private final static boolean FORBID_SYMBOLICS = false;
|
||||
|
||||
private final static int ALLOWED_MAJOR_VERSION = 2;
|
||||
private final static int MIN_MINOR_VERSION = 1;
|
||||
|
|
@ -178,7 +177,7 @@ public final class BCF2Codec implements FeatureCodec<VariantContext> {
|
|||
contigNames.add(contig.getID());
|
||||
}
|
||||
} else {
|
||||
throw new UserException.MalformedBCF2("Didn't find any contig lines in BCF2 file header");
|
||||
error("Didn't find any contig lines in BCF2 file header");
|
||||
}
|
||||
|
||||
// create the string dictionary
|
||||
|
|
@ -271,7 +270,7 @@ public final class BCF2Codec implements FeatureCodec<VariantContext> {
|
|||
final int nSamples = nFormatSamples & 0x00FFFFF;
|
||||
|
||||
if ( header.getNGenotypeSamples() != nSamples )
|
||||
throw new UserException.MalformedBCF2("GATK currently doesn't support reading BCF2 files with " +
|
||||
error("GATK currently doesn't support reading BCF2 files with " +
|
||||
"different numbers of samples per record. Saw " + header.getNGenotypeSamples() +
|
||||
" samples in header but have a record with " + nSamples + " samples");
|
||||
|
||||
|
|
@ -343,9 +342,6 @@ public final class BCF2Codec implements FeatureCodec<VariantContext> {
|
|||
if ( isRef ) ref = alleleBases;
|
||||
|
||||
alleles.add(allele);
|
||||
|
||||
if ( FORBID_SYMBOLICS && allele.isSymbolic() )
|
||||
throw new ReviewedStingException("LIMITATION: GATK BCF2 codec does not yet support symbolic alleles");
|
||||
}
|
||||
assert ref != null;
|
||||
|
||||
|
|
@ -496,7 +492,7 @@ public final class BCF2Codec implements FeatureCodec<VariantContext> {
|
|||
return gtFieldDecoders.getDecoder(field);
|
||||
}
|
||||
|
||||
private final void error(final String message) throws RuntimeException {
|
||||
private void error(final String message) throws RuntimeException {
|
||||
throw new UserException.MalformedBCF2(String.format("%s, at record %d with position %d:", message, recordNo, pos));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -49,13 +49,6 @@ public class VCFCodec extends AbstractVCFCodec {
|
|||
// Our aim is to read in the records and convert to VariantContext as quickly as possible, relying on VariantContext to do the validation of any contradictory (or malformed) record parameters.
|
||||
public final static String VCF4_MAGIC_HEADER = "##fileformat=VCFv4";
|
||||
|
||||
/**
|
||||
* A VCF header the contains master info/filter/format records that we use to 'fill in'
|
||||
* any missing records from our input VCF header. This allows us to repair headers on
|
||||
* the fly
|
||||
*/
|
||||
private VCFHeader headerForRepairs = null;
|
||||
|
||||
/**
|
||||
* @param reader the line reader to take header lines from
|
||||
* @return the number of header lines
|
||||
|
|
@ -88,8 +81,6 @@ public class VCFCodec extends AbstractVCFCodec {
|
|||
}
|
||||
headerStrings.add(line);
|
||||
super.parseHeaderFromLines(headerStrings, version);
|
||||
if ( headerForRepairs != null )
|
||||
this.header = repairHeader(this.header, headerForRepairs);
|
||||
return this.header;
|
||||
}
|
||||
else {
|
||||
|
|
@ -103,24 +94,6 @@ public class VCFCodec extends AbstractVCFCodec {
|
|||
throw new TribbleException.InvalidHeader("We never saw the required CHROM header line (starting with one #) for the input VCF file");
|
||||
}
|
||||
|
||||
private final VCFHeader repairHeader(final VCFHeader readHeader, final VCFHeader masterHeader) {
|
||||
final Set<VCFHeaderLine> lines = VCFUtils.smartMergeHeaders(Arrays.asList(readHeader, masterHeader), log);
|
||||
return new VCFHeader(lines, readHeader.getGenotypeSamples());
|
||||
}
|
||||
|
||||
/**
|
||||
* Tells this VCFCodec to repair the incoming header files with the information in masterHeader
|
||||
*
|
||||
* @param headerForRepairs
|
||||
*/
|
||||
public void setHeaderForRepairs(final VCFHeader headerForRepairs) {
|
||||
if ( headerForRepairs != null )
|
||||
log.info("Using master VCF header to repair missing files from incoming VCFs");
|
||||
this.headerForRepairs = headerForRepairs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* parse the filter string, first checking to see if we already have parsed it in a previous attempt
|
||||
*
|
||||
|
|
|
|||
|
|
@ -38,8 +38,8 @@ import java.util.Map;
|
|||
* A class representing a key=value entry in the VCF header
|
||||
*/
|
||||
public class VCFHeaderLine implements Comparable {
|
||||
protected static boolean ALLOW_UNBOUND_DESCRIPTIONS = true;
|
||||
protected static String UNBOUND_DESCRIPTION = "Not provided in original VCF header";
|
||||
protected static final boolean ALLOW_UNBOUND_DESCRIPTIONS = true;
|
||||
protected static final String UNBOUND_DESCRIPTION = "Not provided in original VCF header";
|
||||
|
||||
private String mKey = null;
|
||||
private String mValue = null;
|
||||
|
|
@ -53,7 +53,7 @@ public class VCFHeaderLine implements Comparable {
|
|||
*/
|
||||
public VCFHeaderLine(String key, String value) {
|
||||
if ( key == null )
|
||||
throw new IllegalArgumentException("VCFHeaderLine: key cannot be null: key = " + key);
|
||||
throw new IllegalArgumentException("VCFHeaderLine: key cannot be null");
|
||||
mKey = key;
|
||||
mValue = value;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,6 +135,7 @@ public class ForumAPIUtils {
|
|||
System.out.println(line);
|
||||
}
|
||||
|
||||
br.close();
|
||||
httpClient.getConnectionManager().shutdown();
|
||||
return output;
|
||||
|
||||
|
|
|
|||
|
|
@ -584,20 +584,39 @@ public class GenericDocumentationHandler extends DocumentedGATKFeatureHandler {
|
|||
* @return
|
||||
*/
|
||||
@Requires("enumClass.isEnum()")
|
||||
private List<Map<String, Object>> docForEnumArgument(Class enumClass) {
|
||||
ClassDoc doc = this.getDoclet().getClassDocForClass(enumClass);
|
||||
if (doc == null) // || ! doc.isEnum() )
|
||||
throw new RuntimeException("Tried to get docs for enum " + enumClass + " but got instead: " + doc);
|
||||
private List<Map<String, Object>> docForEnumArgument(final Class enumClass) {
|
||||
final ClassDoc doc = this.getDoclet().getClassDocForClass(enumClass);
|
||||
if ( doc == null )
|
||||
throw new RuntimeException("Tried to get docs for enum " + enumClass + " but got null instead");
|
||||
|
||||
List<Map<String, Object>> bindings = new ArrayList<Map<String, Object>>();
|
||||
for (final FieldDoc field : doc.fields(false)) {
|
||||
bindings.add(
|
||||
new HashMap<String, Object>() {{
|
||||
put("name", field.name());
|
||||
put("summary", field.commentText());
|
||||
}});
|
||||
final Set<String> enumConstantFieldNames = enumConstantsNames(enumClass);
|
||||
|
||||
final List<Map<String, Object>> bindings = new ArrayList<Map<String, Object>>();
|
||||
for (final FieldDoc fieldDoc : doc.fields(false)) {
|
||||
if (enumConstantFieldNames.contains(fieldDoc.name()) )
|
||||
bindings.add(
|
||||
new HashMap<String, Object>() {{
|
||||
put("name", fieldDoc.name());
|
||||
put("summary", fieldDoc.commentText());
|
||||
}});
|
||||
}
|
||||
|
||||
return bindings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the name of the fields that are enum constants according to reflection
|
||||
*
|
||||
* @return a non-null set of fields that are enum constants
|
||||
*/
|
||||
private Set<String> enumConstantsNames(final Class enumClass) {
|
||||
final Set<String> enumConstantFieldNames = new HashSet<String>();
|
||||
|
||||
for ( final Field field : enumClass.getFields() ) {
|
||||
if ( field.isEnumConstant() )
|
||||
enumConstantFieldNames.add(field.getName());
|
||||
}
|
||||
|
||||
return enumConstantFieldNames;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package org.broadinstitute.sting.utils.pileup;
|
|||
import com.google.java.contract.Ensures;
|
||||
import com.google.java.contract.Requires;
|
||||
import org.broadinstitute.sting.utils.BaseUtils;
|
||||
import org.broadinstitute.sting.utils.MathUtils;
|
||||
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
||||
import org.broadinstitute.sting.utils.exceptions.UserException;
|
||||
import org.broadinstitute.sting.utils.sam.GATKSAMRecord;
|
||||
|
|
@ -220,7 +221,7 @@ public class PileupElement implements Comparable<PileupElement> {
|
|||
if (isDeletion() && (offset + 1 >= read.getReadLength()) ) // deletion in the end of the read
|
||||
throw new UserException.MalformedBAM(read, String.format("Adjacent I/D events in read %s -- cigar: %s", read.getReadName(), read.getCigarString()));
|
||||
|
||||
representativeCount = (isDeletion()) ? Math.round((read.getReducedCount(offset) + read.getReducedCount(offset + 1)) / 2) : read.getReducedCount(offset);
|
||||
representativeCount = (isDeletion()) ? MathUtils.fastRound((read.getReducedCount(offset) + read.getReducedCount(offset + 1)) / 2.0) : read.getReducedCount(offset);
|
||||
}
|
||||
return representativeCount;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -94,8 +94,8 @@ public class RecalDatum {
|
|||
* @param reportedQuality
|
||||
*/
|
||||
public RecalDatum(final long _numObservations, final long _numMismatches, final byte reportedQuality) {
|
||||
if ( numObservations < 0 ) throw new IllegalArgumentException("numObservations < 0");
|
||||
if ( numMismatches < 0 ) throw new IllegalArgumentException("numMismatches < 0");
|
||||
if ( _numObservations < 0 ) throw new IllegalArgumentException("numObservations < 0");
|
||||
if ( _numMismatches < 0 ) throw new IllegalArgumentException("numMismatches < 0");
|
||||
if ( reportedQuality < 0 ) throw new IllegalArgumentException("reportedQuality < 0");
|
||||
|
||||
numObservations = _numObservations;
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import java.util.Set;
|
|||
*/
|
||||
public class RecalDatumNode<T extends RecalDatum> {
|
||||
private final static double SMALLEST_CHI2_PVALUE = 1e-300;
|
||||
protected static Logger logger = Logger.getLogger(RecalDatumNode.class);
|
||||
protected static final Logger logger = Logger.getLogger(RecalDatumNode.class);
|
||||
|
||||
/**
|
||||
* fixedPenalty is this value if it's considered fixed
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public class CycleCovariate implements StandardCovariate {
|
|||
|
||||
private static final int MAXIMUM_CYCLE_VALUE = 1000;
|
||||
private static final int CUSHION_FOR_INDELS = 4;
|
||||
private static String default_platform = null;
|
||||
private String default_platform = null;
|
||||
|
||||
private static final EnumSet<NGSPlatform> DISCRETE_CYCLE_PLATFORMS = EnumSet.of(NGSPlatform.ILLUMINA, NGSPlatform.SOLID, NGSPlatform.PACBIO, NGSPlatform.COMPLETE_GENOMICS);
|
||||
private static final EnumSet<NGSPlatform> FLOW_CYCLE_PLATFORMS = EnumSet.of(NGSPlatform.LS454, NGSPlatform.ION_TORRENT);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import org.broadinstitute.sting.utils.NGSPlatform;
|
|||
*/
|
||||
public class GATKSAMReadGroupRecord extends SAMReadGroupRecord {
|
||||
|
||||
public static String LANE_TAG = "LN";
|
||||
public static final String LANE_TAG = "LN";
|
||||
|
||||
// the SAMReadGroupRecord data we're caching
|
||||
private String mSample = null;
|
||||
|
|
|
|||
|
|
@ -53,8 +53,8 @@ public class ReadUtils {
|
|||
private ReadUtils() {
|
||||
}
|
||||
|
||||
private static int DEFAULT_ADAPTOR_SIZE = 100;
|
||||
public static int CLIPPING_GOAL_NOT_REACHED = -1;
|
||||
private static final int DEFAULT_ADAPTOR_SIZE = 100;
|
||||
public static final int CLIPPING_GOAL_NOT_REACHED = -1;
|
||||
|
||||
public static int getMeanRepresentativeReadCount(GATKSAMRecord read) {
|
||||
if (!read.isReducedRead())
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ public final class FastGenotype extends Genotype {
|
|||
* @param values
|
||||
* @return
|
||||
*/
|
||||
private final static boolean validADorPLField(final int[] values) {
|
||||
private static boolean validADorPLField(final int[] values) {
|
||||
if ( values != null )
|
||||
for ( int v : values )
|
||||
if ( v < 0 )
|
||||
|
|
|
|||
|
|
@ -53,8 +53,6 @@ import java.util.*;
|
|||
*/
|
||||
@Invariant({"alleles != null"})
|
||||
public final class GenotypeBuilder {
|
||||
public static boolean MAKE_FAST_BY_DEFAULT = true;
|
||||
|
||||
private String sampleName = null;
|
||||
private List<Allele> alleles = Collections.emptyList();
|
||||
|
||||
|
|
@ -67,8 +65,6 @@ public final class GenotypeBuilder {
|
|||
private String filters = null;
|
||||
private int initialAttributeMapSize = 5;
|
||||
|
||||
private boolean useFast = MAKE_FAST_BY_DEFAULT;
|
||||
|
||||
private final static Map<String, Object> NO_ATTRIBUTES =
|
||||
Collections.unmodifiableMap(new HashMap<String, Object>(0));
|
||||
|
||||
|
|
@ -78,31 +74,22 @@ public final class GenotypeBuilder {
|
|||
//
|
||||
// -----------------------------------------------------------------
|
||||
|
||||
public final static Genotype create(final String sampleName, final List<Allele> alleles) {
|
||||
public static Genotype create(final String sampleName, final List<Allele> alleles) {
|
||||
return new GenotypeBuilder(sampleName, alleles).make();
|
||||
}
|
||||
|
||||
public final static Genotype create(final String sampleName,
|
||||
public static Genotype create(final String sampleName,
|
||||
final List<Allele> alleles,
|
||||
final Map<String, Object> attributes) {
|
||||
return new GenotypeBuilder(sampleName, alleles).attributes(attributes).make();
|
||||
}
|
||||
|
||||
protected final static Genotype create(final String sampleName,
|
||||
protected static Genotype create(final String sampleName,
|
||||
final List<Allele> alleles,
|
||||
final double[] gls) {
|
||||
return new GenotypeBuilder(sampleName, alleles).PL(gls).make();
|
||||
}
|
||||
|
||||
public final static Genotype create(final String sampleName,
|
||||
final List<Allele> alleles,
|
||||
final double log10Perror,
|
||||
final Map<String, Object> attributes) {
|
||||
return new GenotypeBuilder(sampleName, alleles)
|
||||
.GQ(log10Perror == SlowGenotype.NO_LOG10_PERROR ? -1 : (int)(log10Perror * -10))
|
||||
.attributes(attributes).make();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a empty builder. Both a sampleName and alleles must be provided
|
||||
* before trying to make a Genotype from this builder.
|
||||
|
|
@ -182,23 +169,8 @@ public final class GenotypeBuilder {
|
|||
*/
|
||||
@Ensures({"result != null"})
|
||||
public Genotype make() {
|
||||
if ( useFast ) {
|
||||
final Map<String, Object> ea = extendedAttributes == null ? NO_ATTRIBUTES : extendedAttributes;
|
||||
return new FastGenotype(sampleName, alleles, isPhased, GQ, DP, AD, PL, filters, ea);
|
||||
} else {
|
||||
final Map<String, Object> attributes = new LinkedHashMap<String, Object>();
|
||||
if ( extendedAttributes != null ) attributes.putAll(extendedAttributes);
|
||||
final double log10PError = GQ == -1 ? SlowGenotype.NO_LOG10_PERROR : (GQ == 0 ? 0 : GQ / -10.0);
|
||||
if ( DP != -1 ) attributes.put(VCFConstants.DEPTH_KEY, DP);
|
||||
if ( AD != null ) attributes.put(VCFConstants.GENOTYPE_ALLELE_DEPTHS, AD);
|
||||
final double[] log10likelihoods = PL != null ? GenotypeLikelihoods.fromPLs(PL).getAsVector() : null;
|
||||
return new SlowGenotype(sampleName, alleles, log10PError, filters, attributes, isPhased, log10likelihoods);
|
||||
}
|
||||
}
|
||||
|
||||
public GenotypeBuilder useFast(boolean useFast) {
|
||||
this.useFast = useFast;
|
||||
return this;
|
||||
final Map<String, Object> ea = extendedAttributes == null ? NO_ATTRIBUTES : extendedAttributes;
|
||||
return new FastGenotype(sampleName, alleles, isPhased, GQ, DP, AD, PL, filters, ea);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -401,7 +401,7 @@ public class GenotypeLikelihoods {
|
|||
}
|
||||
|
||||
// An index conversion from the deprecated PL ordering to the new VCF-based ordering for up to 3 alternate alleles
|
||||
protected static int[] PLindexConversion = new int[]{0, 1, 3, 6, 2, 4, 7, 5, 8, 9};
|
||||
protected static final int[] PLindexConversion = new int[]{0, 1, 3, 6, 2, 4, 7, 5, 8, 9};
|
||||
|
||||
/**
|
||||
* get the allele index pair for the given PL using the deprecated PL ordering:
|
||||
|
|
|
|||
|
|
@ -1,193 +0,0 @@
|
|||
/*
|
||||
* Copyright (c) 2012, The Broad Institute
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without
|
||||
* restriction, including without limitation the rights to use,
|
||||
* copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following
|
||||
* conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
* OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package org.broadinstitute.sting.utils.variantcontext;
|
||||
|
||||
|
||||
import org.broadinstitute.sting.utils.codecs.vcf.VCFConstants;
|
||||
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* This class encompasses all the basic information about a genotype. It is immutable.
|
||||
*
|
||||
* @author Mark DePristo
|
||||
*/
|
||||
@Deprecated
|
||||
public class SlowGenotype extends Genotype {
|
||||
protected CommonInfo commonInfo;
|
||||
public final static double NO_LOG10_PERROR = CommonInfo.NO_LOG10_PERROR;
|
||||
protected List<Allele> alleles = null;
|
||||
protected boolean isPhased = false;
|
||||
|
||||
protected SlowGenotype(final String sampleName,
|
||||
final List<Allele> alleles,
|
||||
final double log10PError,
|
||||
final String filters,
|
||||
final Map<String, Object> attributes,
|
||||
final boolean isPhased,
|
||||
final double[] log10Likelihoods) {
|
||||
super(sampleName, filters);
|
||||
|
||||
if ( alleles == null || alleles.isEmpty() )
|
||||
this.alleles = Collections.emptyList();
|
||||
else
|
||||
this.alleles = Collections.unmodifiableList(alleles);
|
||||
commonInfo = new CommonInfo(sampleName, log10PError, Collections.<String>emptySet(), attributes);
|
||||
if ( log10Likelihoods != null )
|
||||
commonInfo.putAttribute(VCFConstants.GENOTYPE_PL_KEY, GenotypeLikelihoods.fromLog10Likelihoods(log10Likelihoods));
|
||||
this.isPhased = isPhased;
|
||||
validate();
|
||||
}
|
||||
|
||||
@Override public List<Allele> getAlleles() {
|
||||
return alleles;
|
||||
}
|
||||
|
||||
@Override public Allele getAllele(int i) {
|
||||
if ( getType() == GenotypeType.UNAVAILABLE )
|
||||
throw new ReviewedStingException("Requesting alleles for an UNAVAILABLE genotype");
|
||||
return alleles.get(i);
|
||||
}
|
||||
|
||||
@Override public boolean isPhased() { return isPhased; }
|
||||
|
||||
//
|
||||
// Useful methods for getting genotype likelihoods for a genotype object, if present
|
||||
//
|
||||
@Override public boolean hasLikelihoods() {
|
||||
return (commonInfo.hasAttribute(VCFConstants.GENOTYPE_PL_KEY) && !commonInfo.getAttribute(VCFConstants.GENOTYPE_PL_KEY).equals(VCFConstants.MISSING_VALUE_v4)) ||
|
||||
(commonInfo.hasAttribute(VCFConstants.GENOTYPE_LIKELIHOODS_KEY) && !commonInfo.getAttribute(VCFConstants.GENOTYPE_LIKELIHOODS_KEY).equals(VCFConstants.MISSING_VALUE_v4));
|
||||
}
|
||||
|
||||
@Override public GenotypeLikelihoods getLikelihoods() {
|
||||
GenotypeLikelihoods x = getLikelihoods(VCFConstants.GENOTYPE_PL_KEY, true);
|
||||
if ( x != null )
|
||||
return x;
|
||||
else {
|
||||
x = getLikelihoods(VCFConstants.GENOTYPE_LIKELIHOODS_KEY, false);
|
||||
return x;
|
||||
}
|
||||
}
|
||||
|
||||
private GenotypeLikelihoods getLikelihoods(String key, boolean asPL) {
|
||||
Object x = commonInfo.getAttribute(key);
|
||||
if ( x instanceof String ) {
|
||||
if ( asPL )
|
||||
return GenotypeLikelihoods.fromPLField((String)x);
|
||||
else
|
||||
return GenotypeLikelihoods.fromGLField((String)x);
|
||||
}
|
||||
else if ( x instanceof GenotypeLikelihoods ) return (GenotypeLikelihoods)x;
|
||||
else return null;
|
||||
}
|
||||
|
||||
private final void validate() {
|
||||
if ( alleles.size() == 0) return;
|
||||
|
||||
for ( Allele allele : alleles ) {
|
||||
if ( allele == null )
|
||||
throw new IllegalArgumentException("BUG: allele cannot be null in Genotype");
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
//
|
||||
// get routines to access context info fields
|
||||
//
|
||||
// ---------------------------------------------------------------------------------------------------------
|
||||
@Override public boolean hasLog10PError() { return commonInfo.hasLog10PError(); }
|
||||
@Override public double getLog10PError() { return commonInfo.getLog10PError(); }
|
||||
|
||||
@Override
|
||||
public boolean hasExtendedAttribute(String key) { return commonInfo.hasAttribute(key); }
|
||||
|
||||
@Override
|
||||
public Object getExtendedAttribute(String key) { return commonInfo.getAttribute(key); }
|
||||
|
||||
@Override
|
||||
public Object getExtendedAttribute(String key, Object defaultValue) {
|
||||
return commonInfo.getAttribute(key, defaultValue);
|
||||
}
|
||||
|
||||
// public String getAttributeAsString(String key, String defaultValue) { return commonInfo.getAttributeAsString(key, defaultValue); }
|
||||
// public int getAttributeAsInt(String key, int defaultValue) { return commonInfo.getAttributeAsInt(key, defaultValue); }
|
||||
// public double getAttributeAsDouble(String key, double defaultValue) { return commonInfo.getAttributeAsDouble(key, defaultValue); }
|
||||
// public boolean getAttributeAsBoolean(String key, boolean defaultValue) { return commonInfo.getAttributeAsBoolean(key, defaultValue); }
|
||||
|
||||
@Override
|
||||
public int[] getPL() {
|
||||
return hasPL() ? getLikelihoods().getAsPLs() : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPL() {
|
||||
return hasLikelihoods();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDP() {
|
||||
return commonInfo.getAttributeAsInt(VCFConstants.DEPTH_KEY, -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasDP() {
|
||||
return commonInfo.hasAttribute(VCFConstants.DEPTH_KEY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getAD() {
|
||||
if ( hasAD() ) {
|
||||
return (int[])commonInfo.getAttribute(VCFConstants.GENOTYPE_ALLELE_DEPTHS);
|
||||
} else
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAD() {
|
||||
return commonInfo.hasAttribute(VCFConstants.GENOTYPE_ALLELE_DEPTHS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getGQ() {
|
||||
if ( commonInfo.hasLog10PError() )
|
||||
return (int)Math.round(commonInfo.getPhredScaledQual());
|
||||
else
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasGQ() {
|
||||
return hasLog10PError();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getExtendedAttributes() {
|
||||
final Map<String, Object> ea = new LinkedHashMap<String, Object>(commonInfo.getAttributes());
|
||||
for ( final String primary : FastGenotype.PRIMARY_KEYS )
|
||||
ea.remove(primary);
|
||||
return ea;
|
||||
}
|
||||
}
|
||||
|
|
@ -730,7 +730,7 @@ public class VariantContextUtils {
|
|||
vcList.remove(k);
|
||||
// avoid having empty lists
|
||||
if (vcList.size() == 0)
|
||||
mappedVCs.remove(vcList);
|
||||
mappedVCs.remove(type);
|
||||
if ( !mappedVCs.containsKey(vc.getType()) )
|
||||
mappedVCs.put(vc.getType(), new ArrayList<VariantContext>());
|
||||
mappedVCs.get(vc.getType()).add(otherVC);
|
||||
|
|
|
|||
|
|
@ -563,6 +563,6 @@ class VCFWriter extends IndexingVariantContextWriter {
|
|||
+ " at " + vc.getChr() + ":" + vc.getStart()
|
||||
+ " but this key isn't defined in the VCFHeader. The GATK now requires all VCFs to have"
|
||||
+ " complete VCF headers by default. This error can be disabled with the engine argument"
|
||||
+ " -U LENIENT_VCF_PROCESSING or repair the VCF file header using repairVCFHeader");
|
||||
+ " -U LENIENT_VCF_PROCESSING");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ public class VariantRecalibrationWalkersIntegrationTest extends WalkerTest {
|
|||
|
||||
VRTest bcfTest = new VRTest(privateTestDir + "vqsr.bcf_test.snps.unfiltered.bcf",
|
||||
"a8ce3cd3dccafdf7d580bcce7d660a9a", // tranches
|
||||
"1cdf8c9ee77d91d1ba7f002573108bad", // recal file
|
||||
"74c10fc15f9739a938b7138909fbde04", // recal file
|
||||
"62fda105e14b619a1c263855cf56af1d"); // cut VCF
|
||||
|
||||
@DataProvider(name = "VRBCFTest")
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ public class SelectVariantsIntegrationTest extends WalkerTest {
|
|||
WalkerTestSpec spec = new WalkerTestSpec(
|
||||
"-T SelectVariants -R " + b36KGReference + " -regenotype -sn NA12892 --variant " + testFile + " -o %s --no_cmdline_in_header",
|
||||
1,
|
||||
Arrays.asList("52cb2f150559ca1457e9df7ec153dbb452cb2f150559ca1457e9df7ec153dbb4")
|
||||
Arrays.asList("52cb2f150559ca1457e9df7ec153dbb4")
|
||||
);
|
||||
|
||||
executeTest("testRegenotype--" + testFile, spec);
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ public class VCFIntegrationTest extends WalkerTest {
|
|||
|
||||
//
|
||||
//
|
||||
// Tests to ensure that -U LENIENT_VCF_PROCESS and header repairs are working
|
||||
// Tests to ensure that -U LENIENT_VCF_PROCESS
|
||||
//
|
||||
//
|
||||
|
||||
|
|
@ -106,11 +106,6 @@ public class VCFIntegrationTest extends WalkerTest {
|
|||
runVCFWithoutHeaders("-U LENIENT_VCF_PROCESSING", "6de8cb7457154dd355aa55befb943f88", null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPassingOnVCFWithoutHeadersRepairingHeaders() {
|
||||
runVCFWithoutHeaders("-repairVCFHeader " + privateTestDir + "vcfexample2.justHeader.vcf", "ff61e9cad6653c7f93d82d391f7ecdcb", null, false);
|
||||
}
|
||||
|
||||
private void runVCFWithoutHeaders(final String moreArgs, final String expectedMD5, final Class expectedException, final boolean disableBCF) {
|
||||
final String testVCF = privateTestDir + "vcfexample2.noHeader.vcf";
|
||||
final String baseCommand = "-R " + b37KGReference
|
||||
|
|
|
|||
Loading…
Reference in New Issue