Skip to content

Commit

Permalink
Port SelectVariants tool and dependent infrastructure.
Browse files Browse the repository at this point in the history
  • Loading branch information
cmnbroad committed Aug 7, 2015
1 parent cba6fac commit 5005695
Show file tree
Hide file tree
Showing 93 changed files with 13,639 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,16 @@ public final class StandardArgumentDefinitions {
public static final String REFERENCE_LONG_NAME = "reference";
public static final String VARIANT_LONG_NAME = "variant";
public static final String FEATURE_LONG_NAME = "feature";
public static final String LENIENT_LONG_NAME = "lenient";
public static final String INTERVAL_LONG_NAME = "interval";

public static final String INPUT_SHORT_NAME = "I";
public static final String OUTPUT_SHORT_NAME = "O";
public static final String REFERENCE_SHORT_NAME = "R";
public static final String VARIANT_SHORT_NAME = "V";
public static final String FEATURE_SHORT_NAME = "F";
public static final String LENIENT_SHORT_NAME = "LE";
public static final String INTERVAL_SHORT_NAME = "IN";
public static final String SAMPLE_ALIAS_SHORT_NAME = "ALIAS";
public static final String LIBRARY_NAME_SHORT_NAME = "LIB";
public static final String EXPECTED_INSERT_SIZE_SHORT_NAME = "INSERT";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package org.broadinstitute.hellbender.engine.filters;

import htsjdk.variant.variantcontext.VariantContext;
import org.broadinstitute.hellbender.utils.Utils;

import java.util.Set;
import java.util.HashSet;

/**
* Exclude variants with any of these IDs.
* Matching is done by case-sensitive exact match.
*/
public final class ExcludeIDsVariantFilter implements VariantFilter {
private static final long serialVersionUID = 1L;

private final HashSet<String> excludeIDs = new HashSet<>();

public ExcludeIDsVariantFilter(Set<String> discardIDs) {
Utils.nonNull(discardIDs);
excludeIDs.addAll(discardIDs);
}

@Override
public boolean test(final VariantContext vc) {
return !excludeIDs.contains(vc.getID());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package org.broadinstitute.hellbender.engine.filters;

import htsjdk.variant.variantcontext.VariantContext;
import org.broadinstitute.hellbender.utils.Utils;

import java.util.Set;
import java.util.HashSet;

/**
* Keep only variants with any of these IDs.
* Matching is done by case-sensitive exact match.
*/
public final class IncludeIDsVariantFilter implements VariantFilter {
private final static long serialVersionUID = 1L;

private final HashSet<String> includeIDs = new HashSet<>();

public IncludeIDsVariantFilter(Set<String> keepIDs) {
Utils.nonNull(keepIDs);
includeIDs.addAll(keepIDs);
}

@Override
public boolean test(final VariantContext vc) {
return includeIDs.contains(vc.getID());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package org.broadinstitute.hellbender.engine.filters;

import htsjdk.samtools.util.Locatable;
import htsjdk.variant.variantcontext.VariantContext;
import org.broadinstitute.hellbender.utils.GenomeLoc;
import org.broadinstitute.hellbender.utils.IntervalUtils;
import org.broadinstitute.hellbender.utils.Utils;
import org.broadinstitute.hellbender.utils.variant.GATKVariantContextUtils;

import java.util.List;

/**
* Keep only variants that overlap any of the supplied genomic intervals.
*/
public final class IntervalVariantFilter implements VariantFilter {
private static final long serialVersionUID = 1L;

private final List<GenomeLoc> genomeLocs;

public IntervalVariantFilter(List<GenomeLoc> intervals) {
Utils.nonNull(intervals);
genomeLocs = intervals;
}

@Override
public boolean test( final VariantContext vc ) {
final Locatable targetLoc = GATKVariantContextUtils.getLocation(vc);
return genomeLocs.stream().anyMatch(loc -> IntervalUtils.overlaps(loc, targetLoc));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.broadinstitute.hellbender.engine.filters;

import htsjdk.variant.variantcontext.VariantContext;
import org.broadinstitute.hellbender.utils.Utils;

import java.util.Set;

/**
* Keep only variants with any of these variant types.
*/
public final class VariantTypesVariantFilter implements VariantFilter {
private static final long serialVersionUID = 1L;

private final Set<VariantContext.Type> sampleTypes;

public VariantTypesVariantFilter(Set<VariantContext.Type> includeTypes) {
Utils.nonNull(includeTypes);
sampleTypes = includeTypes;
}

@Override
public boolean test(final VariantContext vc) {
final VariantContext.Type vcSampleType = vc.getType();
return sampleTypes.contains(vcSampleType);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.broadinstitute.hellbender.engine.samples;

/**
* Categorical sample trait for association and analysis
*
* Samples can have unknown status, be affected or unaffected by the
* categorical trait, or they can be marked as actually having an
* other trait value (stored in an associated value in the Sample class)
*
* @author Mark DePristo
* @since Sept. 2011
*/
public enum Affection {
/** Status is unknown */
UNKNOWN,
/** Suffers from the disease */
AFFECTED,
/** Unaffected by the disease */
UNAFFECTED,
/** An "other" trait: value of the trait is stored elsewhere and is an arbitrary string */
OTHER
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.broadinstitute.hellbender.engine.samples;

/**
* ENUM of possible human genders: male, female, or unknown
*/
public enum Gender {
MALE,
FEMALE,
UNKNOWN
}

0 comments on commit 5005695

Please sign in to comment.