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

org.broadinstitute.hellbender.utils.locusiterator.LIBSDownsamplingInfo Maven / Gradle / Ivy

The newest version!
package org.broadinstitute.hellbender.utils.locusiterator;

import org.broadinstitute.hellbender.utils.Utils;
import org.broadinstitute.hellbender.utils.downsampling.DownsampleType;
import org.broadinstitute.hellbender.utils.downsampling.DownsamplingMethod;

import java.io.Serializable;

/**
 * Simple wrapper about the information LIBS needs about downsampling
 */
public final class LIBSDownsamplingInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    private final boolean performDownsampling;
    private final int toCoverage;

    /**
     * @param performDownsampling whether to downsample
     * @param toCoverage what coverage to downsample to (or -1 if no downsampling)
     */
    public LIBSDownsamplingInfo(final boolean performDownsampling, final int toCoverage) {
        Utils.validateArg(toCoverage >= -1, "toCoverage must be at least -1 (special value) but was " + toCoverage);
        this.performDownsampling = performDownsampling;
        this.toCoverage = toCoverage;
    }

    public boolean isPerformDownsampling() {
        return performDownsampling;
    }

    public int getToCoverage() {
        return toCoverage;
    }

    public static LIBSDownsamplingInfo toDownsamplingInfo(final DownsamplingMethod downsamplingMethod) {
        final boolean performDownsampling = downsamplingMethod != null &&
                downsamplingMethod.type == DownsampleType.BY_SAMPLE &&
                downsamplingMethod.toCoverage != null;

        final int toCoverage = performDownsampling ? downsamplingMethod.toCoverage : 0;

        return new LIBSDownsamplingInfo(performDownsampling, toCoverage);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy