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

org.broadinstitute.hellbender.utils.mcmc.ParameterSampler Maven / Gradle / Ivy

There is a newer version: 4.6.0.0
Show newest version
package org.broadinstitute.hellbender.utils.mcmc;


import org.apache.commons.math3.random.RandomGenerator;

/**
 * Interface for generating random samples of a {@link Parameter} value,
 * given an {@link ParameterizedState} and a {@link DataCollection}.
 * @param    type of parameter value to be sampled
 * @param    type of enumerated parameters, see {@link ParameterEnum}
 * @param    type of {@link ParameterizedState}
 * @param    type of {@link DataCollection}
 */
@FunctionalInterface
public interface ParameterSampler & ParameterEnum, S extends ParameterizedState, T extends DataCollection> {
    /**
     * Returns a random sample of a value that is dependent on an {@link ParameterizedState} and a
     * {@link DataCollection}.
     * @param rng               RandomGenerator to use in generating random sample
     * @param state             ParameterizedState to use in generating random sample
     * @param dataCollection    DataCollection to use in generating random sample
     * @return                  random sample of value
     */
    U sample(final RandomGenerator rng, final S state, final T dataCollection);
}