All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.broadinstitute.hellbender.tools.sv.cluster.SVClusterEngineArgumentsCollection Maven / Gradle / Ivy

The newest version!
package org.broadinstitute.hellbender.tools.sv.cluster;

import org.broadinstitute.barclay.argparser.Argument;

import java.io.Serializable;

/**
 * Arguments for use with {@link SVClusterEngine}.
 */
public class SVClusterEngineArgumentsCollection implements Serializable {
    private static final long serialVersionUID = 1L;

    protected static final String BASE_INTERVAL_OVERLAP_FRACTION_NAME = "-interval-overlap";
    protected static final String BASE_SIZE_SIMILARITY_FRACTION_NAME = "-size-similarity";
    protected static final String BASE_BREAKEND_WINDOW_NAME = "-breakend-window";
    protected static final String BASE_SAMPLE_OVERLAP_FRACTION_NAME = "-sample-overlap";

    protected static final String BASE_INTERVAL_OVERLAP_FRACTION_DOC = " interval reciprocal overlap fraction";
    protected static final String BASE_SIZE_SIMILARITY_DOC = " size similarity";
    protected static final String BASE_BREAKEND_WINDOW_DOC = " window size for breakend proximity";
    protected static final String BASE_SAMPLE_OVERLAP_FRACTION_DOC = " shared sample overlap fraction";

    public static final String DEPTH_INTERVAL_OVERLAP_FRACTION_NAME = "depth" + BASE_INTERVAL_OVERLAP_FRACTION_NAME;
    public static final String MIXED_INTERVAL_OVERLAP_FRACTION_NAME = "mixed" + BASE_INTERVAL_OVERLAP_FRACTION_NAME;
    public static final String PESR_INTERVAL_OVERLAP_FRACTION_NAME = "pesr" + BASE_INTERVAL_OVERLAP_FRACTION_NAME;

    public static final String DEPTH_SIZE_SIMILARITY_NAME = "depth" + BASE_SIZE_SIMILARITY_FRACTION_NAME;
    public static final String MIXED_SIZE_SIMILARITY_NAME = "mixed" + BASE_SIZE_SIMILARITY_FRACTION_NAME;
    public static final String PESR_SIZE_SIMILARITY_NAME = "pesr" + BASE_SIZE_SIMILARITY_FRACTION_NAME;

    public static final String DEPTH_BREAKEND_WINDOW_NAME = "depth" + BASE_BREAKEND_WINDOW_NAME;
    public static final String MIXED_BREAKEND_WINDOW_NAME = "mixed" + BASE_BREAKEND_WINDOW_NAME;
    public static final String PESR_BREAKEND_WINDOW_NAME = "pesr" + BASE_BREAKEND_WINDOW_NAME;

    public static final String DEPTH_SAMPLE_OVERLAP_FRACTION_NAME = "depth" + BASE_SAMPLE_OVERLAP_FRACTION_NAME;
    public static final String MIXED_SAMPLE_OVERLAP_FRACTION_NAME = "mixed" + BASE_SAMPLE_OVERLAP_FRACTION_NAME;
    public static final String PESR_SAMPLE_OVERLAP_FRACTION_NAME = "pesr" + BASE_SAMPLE_OVERLAP_FRACTION_NAME;

    /**
     * Minimum interval reciprocal overlap fraction to cluster depth-only/depth-only variant pairs.
     */
    @Argument(fullName = DEPTH_INTERVAL_OVERLAP_FRACTION_NAME,
            doc="Depth/Depth" + BASE_INTERVAL_OVERLAP_FRACTION_DOC, optional=true, minValue = 0, maxValue = 1)
    public double depthOverlapFraction = CanonicalSVLinkage.DEFAULT_RECIPROCAL_OVERLAP_DEPTH_ONLY;

    /**
     * Minimum interval reciprocal overlap fraction to cluster depth-only/PESR variant pairs.
     */
    @Argument(fullName = MIXED_INTERVAL_OVERLAP_FRACTION_NAME,
            doc="PESR/Depth" + BASE_INTERVAL_OVERLAP_FRACTION_DOC, optional=true, minValue = 0, maxValue = 1)
    public double mixedOverlapFraction = CanonicalSVLinkage.DEFAULT_RECIPROCAL_OVERLAP_MIXED;

    /**
     * Minimum interval reciprocal overlap fraction to cluster PESR/PESR variant pairs.
     */
    @Argument(fullName = PESR_INTERVAL_OVERLAP_FRACTION_NAME,
            doc="PESR/PESR" + BASE_INTERVAL_OVERLAP_FRACTION_DOC, optional=true, minValue = 0, maxValue = 1)
    public double pesrOverlapFraction = CanonicalSVLinkage.DEFAULT_RECIPROCAL_OVERLAP_PESR;

    /**
     * Minimum size similarity to cluster depth-only/depth-only variant pairs.
     */
    @Argument(fullName = DEPTH_SIZE_SIMILARITY_NAME,
            doc="Depth/Depth" + BASE_SIZE_SIMILARITY_DOC, optional=true, minValue = 0, maxValue = 1)
    public double depthSizeSimilarity = CanonicalSVLinkage.DEFAULT_SIZE_SIMILARITY_DEPTH_ONLY;

    /**
     * Minimum size similarity to cluster depth-only/PESR variant pairs.
     */
    @Argument(fullName = MIXED_SIZE_SIMILARITY_NAME,
            doc="Depth/PESR" + BASE_SIZE_SIMILARITY_DOC, optional=true, minValue = 0, maxValue = 1)
    public double mixedSizeSimilarity = CanonicalSVLinkage.DEFAULT_SIZE_SIMILARITY_MIXED;

    /**
     * Minimum size similarity to cluster PESR/PESR variant pairs.
     */
    @Argument(fullName = PESR_SIZE_SIMILARITY_NAME,
            doc="PESR/PESR" + BASE_SIZE_SIMILARITY_DOC, optional=true, minValue = 0, maxValue = 1)
    public double pesrSizeSimilarity = CanonicalSVLinkage.DEFAULT_SIZE_SIMILARITY_PESR;

    /**
     * Maximum allowed distance between endpoints (in bp) to cluster depth-only/depth-only variant pairs.
     */
    @Argument(fullName = DEPTH_BREAKEND_WINDOW_NAME,
            doc="Depth/Depth" + BASE_BREAKEND_WINDOW_DOC, optional=true, minValue = 0)
    public int depthBreakendWindow = CanonicalSVLinkage.DEFAULT_WINDOW_DEPTH_ONLY;

    /**
     * Maximum allowed distance between endpoints (in bp) to cluster depth-only/PESR variant pairs.
     */
    @Argument(fullName = MIXED_BREAKEND_WINDOW_NAME,
            doc="Depth/PESR" + BASE_BREAKEND_WINDOW_DOC, optional=true, minValue = 0)
    public int mixedBreakendWindow = CanonicalSVLinkage.DEFAULT_WINDOW_MIXED;

    /**
     * Maximum allowed distance between endpoints (in bp) to cluster PESR/PESR variant pairs.
     */
    @Argument(fullName = PESR_BREAKEND_WINDOW_NAME,
            doc="PESR/PESR" + BASE_BREAKEND_WINDOW_DOC, optional=true, minValue = 0)
    public int pesrBreakendWindow = CanonicalSVLinkage.DEFAULT_WINDOW_PESR;

    /**
     * Minimum carrier sample reciprocal overlap fraction to cluster depth-only/depth-only variant pairs.
     */
    @Argument(fullName = DEPTH_SAMPLE_OVERLAP_FRACTION_NAME,
            doc="Depth/Depth" + BASE_SAMPLE_OVERLAP_FRACTION_DOC, optional=true, minValue = 0, maxValue = 1)
    public double depthSampleOverlapFraction = CanonicalSVLinkage.DEFAULT_SAMPLE_OVERLAP_DEPTH_ONLY;

    /**
     * Minimum carrier sample reciprocal overlap fraction to cluster depth-only/PESR variant pairs.
     */
    @Argument(fullName = MIXED_SAMPLE_OVERLAP_FRACTION_NAME,
            doc="Depth/PESR" + BASE_SAMPLE_OVERLAP_FRACTION_DOC, optional=true, minValue = 0, maxValue = 1)
    public double mixedSampleOverlapFraction = CanonicalSVLinkage.DEFAULT_SAMPLE_OVERLAP_MIXED;

    /**
     * Minimum carrier sample reciprocal overlap fraction to cluster PESR/PESR variant pairs.
     */
    @Argument(fullName = PESR_SAMPLE_OVERLAP_FRACTION_NAME,
            doc="PESR/PESR" + BASE_SAMPLE_OVERLAP_FRACTION_DOC, optional=true, minValue = 0, maxValue = 1)
    public double pesrSampleOverlapFraction = CanonicalSVLinkage.DEFAULT_SAMPLE_OVERLAP_PESR;

    public final ClusteringParameters getDepthParameters() {
        return ClusteringParameters.createDepthParameters(depthOverlapFraction, depthSizeSimilarity, depthBreakendWindow, depthSampleOverlapFraction);
    }

    public final ClusteringParameters getMixedParameters() {
        return ClusteringParameters.createMixedParameters(mixedOverlapFraction, mixedSizeSimilarity, mixedBreakendWindow, mixedSampleOverlapFraction);
    }

    public final ClusteringParameters getPESRParameters() {
        return ClusteringParameters.createPesrParameters(pesrOverlapFraction, pesrSizeSimilarity, pesrBreakendWindow, pesrSampleOverlapFraction);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy