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

org.broadinstitute.hellbender.tools.copynumber.models.CopyRatioState Maven / Gradle / Ivy

The newest version!
package org.broadinstitute.hellbender.tools.copynumber.models;

import org.broadinstitute.hellbender.utils.mcmc.Parameter;
import org.broadinstitute.hellbender.utils.mcmc.ParameterizedState;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.BitSet;
import java.util.List;
import java.util.stream.IntStream;

/**
 * The state of the copy-ratio model, containing: 

* 1. the global variance

* 2. the global outlier probability

* 3. log2 mean copy ratios for each segment

* 4. outlier indicators for each copy-ratio interval

*

* See docs/CNV/archived/archived-CNV-methods.pdf for details. * * @author Samuel Lee <[email protected]> */ final class CopyRatioState extends ParameterizedState { static final class SegmentMeans extends ArrayList { private static final long serialVersionUID = 951753L; SegmentMeans(final List segmentMeans) { super(new ArrayList<>(segmentMeans)); } } static final class OutlierIndicators extends BitSet { private static final long serialVersionUID = 357159L; OutlierIndicators(final List outlierIndicators) { super(outlierIndicators.size()); IntStream.range(0, outlierIndicators.size()).filter(outlierIndicators::get).forEach(this::set); } } CopyRatioState(final double variance, final double outlierProbability, final SegmentMeans segmentMeans, final OutlierIndicators outlierIndicators) { super(Arrays.asList( new Parameter<>(CopyRatioParameter.VARIANCE, variance), new Parameter<>(CopyRatioParameter.OUTLIER_PROBABILITY, outlierProbability), new Parameter<>(CopyRatioParameter.SEGMENT_MEANS, segmentMeans), new Parameter<>(CopyRatioParameter.OUTLIER_INDICATORS, outlierIndicators))); } double variance() { return get(CopyRatioParameter.VARIANCE, Double.class); } double outlierProbability() { return get(CopyRatioParameter.OUTLIER_PROBABILITY, Double.class); } double segmentMean(final int segmentIndex) { return get(CopyRatioParameter.SEGMENT_MEANS, CopyRatioState.SegmentMeans.class).get(segmentIndex); } boolean outlierIndicator(final int copyRatioIndex) { return get(CopyRatioParameter.OUTLIER_INDICATORS, CopyRatioState.OutlierIndicators.class).get(copyRatioIndex); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy