Search Results for

    Show / Hide Table of Contents

    Class SequenceDistribution<TSequence, TElement, TElementDistribution, TSequenceManipulator, TAutomaton, TWeightFunction, TWeightFunctionFactory, TThis>

    A base class for implementations of distributions over sequences.

    Inheritance
    Object
    SequenceDistribution<TSequence, TElement, TElementDistribution, TSequenceManipulator, TAutomaton, TWeightFunction, TWeightFunctionFactory, TThis>
    ListDistribution<TElement, TElementDistribution>
    ListDistribution<TList, TElement, TElementDistribution, TThis>
    StringDistribution
    Implements
    IDistribution<TSequence>
    IDistribution
    ICloneable
    Diffable
    SettableToUniform
    HasPoint<TSequence>
    CanGetLogProb<TSequence>
    SettableTo<TThis>
    SettableToProduct<TThis>
    SettableToProduct<TThis, TThis>
    SettableToRatio<TThis>
    SettableToRatio<TThis, TThis>
    SettableToPower<TThis>
    CanGetLogAverageOf<TThis>
    CanGetLogAverageOfPower<TThis>
    CanGetAverageLog<TThis>
    SettableToWeightedSumExact<TThis>
    SettableToWeightedSum<TThis>
    SettableToPartialUniform<TThis>
    CanGetLogNormalizer
    Sampleable<TSequence>
    Inherited Members
    Object.Equals(Object, Object)
    Object.GetType()
    Object.MemberwiseClone()
    Object.ReferenceEquals(Object, Object)
    Namespace: Microsoft.ML.Probabilistic.Distributions
    Assembly: Microsoft.ML.Probabilistic.dll
    Syntax
    [Serializable]
    [DataContract]
    [Quality(QualityBand.Experimental)]
    public abstract class SequenceDistribution<TSequence, TElement, TElementDistribution, TSequenceManipulator, TAutomaton, TWeightFunction, TWeightFunctionFactory, TThis> : IDistribution<TSequence>, IDistribution, ICloneable, Diffable, SettableToUniform, HasPoint<TSequence>, CanGetLogProb<TSequence>, SettableTo<TThis>, SettableToProduct<TThis>, SettableToProduct<TThis, TThis>, SettableToRatio<TThis>, SettableToRatio<TThis, TThis>, SettableToPower<TThis>, CanGetLogAverageOf<TThis>, CanGetLogAverageOfPower<TThis>, CanGetAverageLog<TThis>, SettableToWeightedSumExact<TThis>, SettableToWeightedSum<TThis>, SettableToPartialUniform<TThis>, CanGetLogNormalizer, Sampleable<TSequence> where TSequence : class, IEnumerable<TElement> where TElementDistribution : IImmutableDistribution<TElement, TElementDistribution>, CanGetLogAverageOf<TElementDistribution>, CanComputeProduct<TElementDistribution>, CanCreatePartialUniform<TElementDistribution>, SummableExactly<TElementDistribution>, Sampleable<TElement>, new()
        where TSequenceManipulator : ISequenceManipulator<TSequence, TElement>, new()
        where TAutomaton : Automaton<TSequence, TElement, TElementDistribution, TSequenceManipulator, TAutomaton>, new()
        where TWeightFunction : WeightFunctions<TSequence, TElement, TElementDistribution, TSequenceManipulator, TAutomaton>.IWeightFunction<TWeightFunction>, new()
        where TWeightFunctionFactory : WeightFunctions<TSequence, TElement, TElementDistribution, TSequenceManipulator, TAutomaton>.IWeightFunctionFactory<TWeightFunction>, new()
        where TThis : SequenceDistribution<TSequence, TElement, TElementDistribution, TSequenceManipulator, TAutomaton, TWeightFunction, TWeightFunctionFactory, TThis>, new()
    Type Parameters
    Name Description
    TSequence

    The type of a sequence.

    TElement

    The type of a sequence element.

    TElementDistribution

    The type of a distribution over sequence elements.

    TSequenceManipulator

    The type providing ways to manipulate sequences.

    TAutomaton

    The type of a weighted finite state automaton that can be used to represent every valid function mapping sequences to weights.

    TWeightFunction

    The type of an underlying function mapping sequences to weights.

    TWeightFunctionFactory

    The type of the factory for TWeightFunction.

    TThis

    The type of a concrete distribution class.

    Constructors

    SequenceDistribution()

    Initializes a new instance of the SequenceDistribution<TSequence, TElement, TElementDistribution, TSequenceManipulator, TAutomaton, TWeightFunction, TWeightFunctionFactory, TThis> class with a null weight function. The weight function must be set by the subclass constructor or factory method.

    Declaration
    protected SequenceDistribution()

    Properties

    IsEmpty

    Gets a value indicating whether the current distribution puts all probability mass on the empty sequence.

    Declaration
    public bool IsEmpty { get; }
    Property Value
    Type Description
    Boolean

    IsPointMass

    Gets a value indicating whether the current distribution represents a point mass.

    Declaration
    public bool IsPointMass { get; }
    Property Value
    Type Description
    Boolean

    Point

    Gets or sets the point mass represented by the distribution.

    Declaration
    public TSequence Point { get; set; }
    Property Value
    Type Description
    TSequence

    UsesAutomatonRepresentation

    Gets a value indicating whether the current distribution is represented as an automaton internally.

    Declaration
    public bool UsesAutomatonRepresentation { get; }
    Property Value
    Type Description
    Boolean

    Methods

    Any(Int32, Nullable<Int32>)

    Creates a uniform distribution over sequences of length within the given bounds. If maxLength is set to null, there will be no upper bound on the length, and the resulting distribution will thus be improper.

    Declaration
    public static TThis Any(int minLength = 0, int? maxLength = null)
    Parameters
    Type Name Description
    Int32 minLength

    The minimum possible sequence length.

    Nullable<Int32> maxLength

    The maximum possible sequence length, or null for no upper bound on length. Defaults to null.

    Returns
    Type Description
    TThis

    The created distribution.

    Append(TSequence, Int32)

    Creates a distribution over concatenations of sequences from the current distribution and a given sequence.

    Declaration
    public TThis Append(TSequence sequence, int group = 0)
    Parameters
    Type Name Description
    TSequence sequence

    The sequence to append.

    Int32 group

    The group for the appended sequence.

    Returns
    Type Description
    TThis

    The distribution over the concatenations of sequences.

    Remarks

    The result is equivalent to the distribution produced by the following sampling procedure:

    1. Sample a random sequence from the current distribution.
    2. Append sequence to it and output the result.

    Append(TElement, Int32)

    Creates a distribution over concatenations of sequences from the current distribution and a given element.

    Declaration
    public TThis Append(TElement element, int group = 0)
    Parameters
    Type Name Description
    TElement element

    The element to append.

    Int32 group

    The group for the appended element.

    Returns
    Type Description
    TThis

    The distribution over the concatenations of sequences and the element.

    Remarks

    The result is equivalent to the distribution produced by the following sampling procedure:

    1. Sample a random sequence from the current distribution.
    2. Append the given element to the sampled sequence and output the result.

    Append(TElementDistribution, Int32)

    Creates a distribution over concatenations of sequences from the current distribution and elements from a given distribution.

    Declaration
    public TThis Append(TElementDistribution elementDistribution, int group = 0)
    Parameters
    Type Name Description
    TElementDistribution elementDistribution

    The distribution to generate the elements from.

    Int32 group

    The group for the appended element.

    Returns
    Type Description
    TThis

    The distribution over the concatenations of sequences and elements.

    Remarks

    The result is equivalent to the distribution produced by the following sampling procedure:

    1. Sample a random sequence from the current distribution.
    2. 2) Sample a random element from elementDistribution.
    3. 3) Append the sampled element to the sampled sequence and output the result.

    Append(TThis, Int32)

    Creates a distribution over concatenations of sequences from the current distribution and sequences from a given distribution.

    Declaration
    public TThis Append(TThis dist, int group = 0)
    Parameters
    Type Name Description
    TThis dist

    The distribution over the sequences to append.

    Int32 group

    The group for the appended sequence.

    Returns
    Type Description
    TThis

    The distribution over the concatenations of sequences.

    Remarks

    The result is equivalent to the distribution produced by the following sampling procedure:

    1. Sample a random sequence from the current distribution.
    2. Sample a random sequence from dist.
    3. Output the concatenation of the sampled pair of sequences.

    AppendInPlace(TSequence, Int32)

    Replaces the current distribution by a distribution over concatenations of sequences from the current distribution and a given sequence.

    Declaration
    public void AppendInPlace(TSequence sequence, int group = 0)
    Parameters
    Type Name Description
    TSequence sequence

    The sequence to append.

    Int32 group

    The group for the appended sequence.

    Remarks

    The result is equivalent to the distribution produced by the following sampling procedure:

    1. Sample a random sequence from the current distribution.
    2. Append sequence to it and output the result.

    AppendInPlace(TElement, Int32)

    Replaces the current distribution by a distribution over concatenations of sequences from the current distribution and a given element.

    Declaration
    public void AppendInPlace(TElement element, int group = 0)
    Parameters
    Type Name Description
    TElement element

    The element to append.

    Int32 group

    The group for the appended element.

    Remarks

    The result is equivalent to the distribution produced by the following sampling procedure:

    1. Sample a random sequence from the current distribution.
    2. Append the given element to the sampled sequence and output the result.

    AppendInPlace(TElementDistribution, Int32)

    Replaces the current distribution by a distribution over concatenations of sequences from the current distribution and elements from a given distribution.

    Declaration
    public void AppendInPlace(TElementDistribution elementDistribution, int group = 0)
    Parameters
    Type Name Description
    TElementDistribution elementDistribution

    The distribution to generate the elements from.

    Int32 group

    The group for the appended element.

    Remarks

    The result is equivalent to the distribution produced by the following sampling procedure:

    1. Sample a random sequence from the current distribution.
    2. Sample a random element from elementDistribution.
    3. Append the sampled element to the sampled sequence and output the result.

    AppendInPlace(TThis, Int32)

    Replaces the current distribution by a distribution over concatenations of sequences from the current distribution and sequences from a given distribution.

    Declaration
    public void AppendInPlace(TThis dist, int group = 0)
    Parameters
    Type Name Description
    TThis dist

    The distribution over the sequences to append.

    Int32 group

    The group for the appended sequence.

    Remarks

    The result is equivalent to the distribution produced by the following sampling procedure:

    1. Sample a random sequence from the current distribution.
    2. Sample a random sequence from dist.
    3. Output the concatenation of the sampled pair of sequences.

    ApplyTransducer<TTransducer>(TTransducer)

    Computes a distribution g(b) = sum_a f(a) T(a, b), where f(a) is the current distribution and T(a, b) is a given transducer.

    Declaration
    public TThis ApplyTransducer<TTransducer>(TTransducer transducer)
        where TTransducer : Transducer<TSequence, TElement, TElementDistribution, TSequenceManipulator, TAutomaton, TTransducer>, new()
    Parameters
    Type Name Description
    TTransducer transducer

    The transducer to project on.

    Returns
    Type Description
    TThis

    The projection.

    Type Parameters
    Name Description
    TTransducer

    Clone()

    Creates a copy of the current distribution.

    Declaration
    public TThis Clone()
    Returns
    Type Description
    TThis

    The created copy.

    Concatenate(IEnumerable<TElementDistribution>, Boolean, Boolean)

    Creates a distribution over sequences induced by a given list of distributions over sequence elements where the sequence can optionally end at any length, and the last element can optionally repeat without limit.

    Declaration
    public static TThis Concatenate(IEnumerable<TElementDistribution> elementDistributions, bool allowEarlyEnd = false, bool repeatLastElement = false)
    Parameters
    Type Name Description
    IEnumerable<TElementDistribution> elementDistributions

    Enumerable of distributions over sequence elements and the transition weights.

    Boolean allowEarlyEnd

    Allow the sequence to end at any point.

    Boolean repeatLastElement

    Repeat the last element.

    Returns
    Type Description
    TThis

    The created distribution.

    Contains(TSequence)

    Returns true if the given sequence is in the support of this distribution (i.e. has non-zero probability).

    Declaration
    public bool Contains(TSequence sequence)
    Parameters
    Type Name Description
    TSequence sequence

    The sequence to check.

    Returns
    Type Description
    Boolean

    True if the sequence has non-zero probability under this distribiton, false otherwise.

    Converge(TThis, Double)

    Converges an improper sequence distribution

    Declaration
    public static TThis Converge(TThis dist, double decayWeight = 0.99)
    Parameters
    Type Name Description
    TThis dist

    The original distribution.

    Double decayWeight

    The decay weight.

    Returns
    Type Description
    TThis

    The converged distribution.

    Empty()

    Creates a distribution which puts all probability mass on the empty sequence.

    Declaration
    [Construction(UseWhen = "IsEmpty")]
    public static TThis Empty()
    Returns
    Type Description
    TThis

    The created distribution.

    EnumerateComponents()

    Enumerates components of this distribution.

    Declaration
    public IEnumerable<Tuple<List<TElementDistribution>, double>> EnumerateComponents()
    Returns
    Type Description
    IEnumerable<Tuple<List<TElementDistribution>, Double>>

    For each component, the list of element distributions and the log mixture weight for that component.

    Remarks

    Any sequence distribution can be represented as a mixture of 'simple' sequence distributions where each element is independent. This method enumerates through the components of this distribution treated as such a mixture. Each component is returned as a list of the independent element distributions for each element.

    For some distributions, the number of components may be very large.

    EnumerateSupport(Int32, Boolean)

    Enumerates support of this distribution when possible. Only point mass elements are supported.

    Declaration
    public IEnumerable<TSequence> EnumerateSupport(int maxCount = 1000000, bool tryDeterminize = true)
    Parameters
    Type Name Description
    Int32 maxCount

    The maximum support enumeration count.

    Boolean tryDeterminize

    Try to determinize if this distribution uses a string automaton representation.

    Returns
    Type Description
    IEnumerable<TSequence>

    The strings supporting this distribution

    Exceptions
    Type Condition
    AutomatonException

    Thrown if enumeration is too large.

    Equals(Object)

    Checks if obj equals to this distribution (i.e. represents the same distribution over sequences).

    Declaration
    public override bool Equals(object obj)
    Parameters
    Type Name Description
    Object obj

    The object to compare this distribution with.

    Returns
    Type Description
    Boolean

    true if this distribution is equal to obj, false otherwise.

    Overrides
    Object.Equals(Object)

    FromWeightFunction(TAutomaton)

    Creates a distribution from a given weight (non-normalized probability) function.

    Declaration
    [Construction(new string[]{"ToAutomaton"}, UseWhen = "UsesAutomatonRepresentation")]
    public static TThis FromWeightFunction(TAutomaton weightFunction)
    Parameters
    Type Name Description
    TAutomaton weightFunction
    Returns
    Type Description
    TThis

    The created distribution.

    FromWeightFunction(TWeightFunction)

    Creates a distribution from a given weight (non-normalized probability) function.

    Declaration
    [Construction(new string[]{"GetWeightFunction"})]
    public static TThis FromWeightFunction(TWeightFunction weightFunction)
    Parameters
    Type Name Description
    TWeightFunction weightFunction

    The weight function specifying the distribution.

    Returns
    Type Description
    TThis

    The created distribution.

    GetAverageLog(TThis)

    Computes the expected logarithm of a given distribution under this distribution. Not currently supported.

    Declaration
    public double GetAverageLog(TThis that)
    Parameters
    Type Name Description
    TThis that

    The distribution to take the logarithm of.

    Returns
    Type Description
    Double

    sum_x this.Evaluate(x)*Math.Log(that.Evaluate(x))

    Remarks

    This is also known as the cross entropy.

    GetGroups()

    Declaration
    public Dictionary<int, TThis> GetGroups()
    Returns
    Type Description
    Dictionary<Int32, TThis>

    GetHashCode()

    Gets the hash code of this distribution.

    Declaration
    public override int GetHashCode()
    Returns
    Type Description
    Int32

    The hash code.

    Overrides
    Object.GetHashCode()

    GetLogAverageOf(TThis)

    Returns the logarithm of the probability that the current distribution would draw the same sample as a given one.

    Declaration
    public double GetLogAverageOf(TThis that)
    Parameters
    Type Name Description
    TThis that

    The given distribution.

    Returns
    Type Description
    Double

    The logarithm of the probability that distributions would draw the same sample.

    GetLogAverageOfPower(TThis, Double)

    Computes the log-integral of one distribution times another raised to a power.

    Declaration
    public double GetLogAverageOfPower(TThis that, double power)
    Parameters
    Type Name Description
    TThis that

    The other distribution

    Double power

    The exponent

    Returns
    Type Description
    Double

    Math.Log(sum_x this.Evaluate(x) * Math.Pow(that.Evaluate(x), power))

    Remarks

    This is not the same as GetLogAverageOf(that^power) because it includes the normalization constant of that.

    Powers other than 1 are not currently supported.

    GetLogNormalizer()

    Returns the logarithm of the normalizer of the exponential family representation of this distribution. Normalizer of an improper distribution is defined to be 1.

    Declaration
    public double GetLogNormalizer()
    Returns
    Type Description
    Double

    The logarithm of the normalizer.

    Remarks

    Getting the normalizer is currently supported for improper distributions only.

    GetLogProb(TSequence)

    Gets the logarithm of the probability of a given sequence under this distribution. If the distribution is improper, returns the logarithm of the value of the underlying unnormalized weight function.

    Declaration
    public double GetLogProb(TSequence sequence)
    Parameters
    Type Name Description
    TSequence sequence

    The sequence to get the probability for.

    Returns
    Type Description
    Double

    The logarithm of the probability of the sequence.

    GetNormalizedWeightFunction()

    Returns the underlying weight function.

    Declaration
    public TWeightFunction GetNormalizedWeightFunction()
    Returns
    Type Description
    TWeightFunction

    The underlying weight function.

    Remarks

    The returned weight function is guaranteed to be normalized. If you don't care about an arbitrary scale factor, consider using GetWeightFunction() which has less overhead.

    GetProb(TSequence)

    Gets the probability of a given sequence under this distribution. If the distribution is improper, returns the value of the underlying unnormalized weight function.

    Declaration
    public double GetProb(TSequence sequence)
    Parameters
    Type Name Description
    TSequence sequence

    The sequence to get the probability for.

    Returns
    Type Description
    Double

    The probability of the sequence.

    GetWeightFunction()

    Returns the underlying weight function.

    Declaration
    public TWeightFunction GetWeightFunction()
    Returns
    Type Description
    TWeightFunction

    The underlying weight function.

    Remarks

    The returned weight function might differ from the probability function by an arbitrary scale factor. To ensure that the weight function is normalized, use GetNormalizedWeightFunction().

    HasGroup(Int32)

    Declaration
    public bool HasGroup(int group)
    Parameters
    Type Name Description
    Int32 group
    Returns
    Type Description
    Boolean

    IsPartialUniform()

    Checks whether the distribution is uniform over its support.

    Declaration
    public bool IsPartialUniform()
    Returns
    Type Description
    Boolean

    true if the distribution is uniform over its support, false otherwise.

    IsProper()

    Checks whether the current distribution is proper.

    Declaration
    public bool IsProper()
    Returns
    Type Description
    Boolean

    true if the current distribution is proper, false otherwise.

    IsUniform()

    Checks whether the current distribution is uniform over all possible sequences.

    Declaration
    public bool IsUniform()
    Returns
    Type Description
    Boolean

    true if the current distribution is uniform over all possible sequences, false otherwise.

    IsZero()

    Gets a value indicating whether the current distribution is an improper distribution which assigns zero probability to every sequence.

    Declaration
    public bool IsZero()
    Returns
    Type Description
    Boolean

    true if the current distribution is an improper distribution that assigns zero probability to every sequence, false otherwise.

    MaxDiff(Object)

    Gets a value indicating how close this distribution is to a given one in terms of probabilities they assign to sequences.

    Declaration
    public double MaxDiff(object that)
    Parameters
    Type Name Description
    Object that

    The other distribution.

    Returns
    Type Description
    Double

    A non-negative value, which is close to zero if the two distribution assign similar values to all sequences.

    OneOf(TSequence[])

    Creates a distribution which is uniform over a given set of sequences.

    Declaration
    public static TThis OneOf(params TSequence[] sequences)
    Parameters
    Type Name Description
    TSequence[] sequences

    The set of sequences to create a distribution from.

    Returns
    Type Description
    TThis

    The created distribution.

    OneOf(TThis[])

    Creates a distribution which is a uniform mixture of a given set of distributions.

    Declaration
    public static TThis OneOf(params TThis[] distributions)
    Parameters
    Type Name Description
    TThis[] distributions

    The set of distributions to create a mixture from.

    Returns
    Type Description
    TThis

    The created mixture distribution.

    OneOf(IEnumerable<TSequence>)

    Creates a distribution which is uniform over a given set of sequences.

    Declaration
    public static TThis OneOf(IEnumerable<TSequence> sequences)
    Parameters
    Type Name Description
    IEnumerable<TSequence> sequences

    The set of sequences to create a distribution from.

    Returns
    Type Description
    TThis

    The created distribution.

    OneOf(IEnumerable<TThis>, Boolean, Boolean)

    Creates a distribution which is a uniform mixture of a given set of distributions.

    Declaration
    public static TThis OneOf(IEnumerable<TThis> distributions, bool cloneIfSizeOne = false, bool skipNormalization = false)
    Parameters
    Type Name Description
    IEnumerable<TThis> distributions

    The set of distributions to create a mixture from.

    Boolean cloneIfSizeOne

    If the set has one element, whether to return that element or to clone it.

    Boolean skipNormalization

    Allow normalization to be skipped as it can be expensive

    Returns
    Type Description
    TThis

    The created mixture distribution.

    OneOf(IEnumerable<KeyValuePair<TSequence, Double>>)

    Creates a distribution which assigns specified probabilities to given sequences. Probabilities do not have to be normalized.

    Declaration
    public static TThis OneOf(IEnumerable<KeyValuePair<TSequence, double>> sequenceProbPairs)
    Parameters
    Type Name Description
    IEnumerable<KeyValuePair<TSequence, Double>> sequenceProbPairs

    A list of (sequence, probability) pairs.

    Returns
    Type Description
    TThis

    The created distribution.

    OneOf(Double, TThis, Double, TThis)

    Creates a mixture of a given pair of distributions.

    Declaration
    public static TThis OneOf(double weight1, TThis dist1, double weight2, TThis dist2)
    Parameters
    Type Name Description
    Double weight1

    The weight of the first distribution.

    TThis dist1

    The first distribution.

    Double weight2

    The weight of the second distribution.

    TThis dist2

    The second distribution.

    Returns
    Type Description
    TThis

    The created mixture distribution.

    OneOrMore(TSequence, Nullable<Int32>)

    An alias for Repeat(TThis, Int32, Nullable<Int32>) with the minimum number of repetitions set to 1.

    Declaration
    public static TThis OneOrMore(TSequence sequence, int? maxTimes = null)
    Parameters
    Type Name Description
    TSequence sequence

    The sequence.

    Nullable<Int32> maxTimes

    The maximum number of repetitions, or null for no upper bound. Defaults to null.

    Returns
    Type Description
    TThis

    The created distribution.

    OneOrMore(TElement, Nullable<Int32>)

    An alias for Repeat(TElement, Int32, Nullable<Int32>, DistributionKind) with the minimum number of repetitions set to 1 and uniformity kind set to UniformOverValue.

    Declaration
    public static TThis OneOrMore(TElement element, int? maxTimes = null)
    Parameters
    Type Name Description
    TElement element

    The element.

    Nullable<Int32> maxTimes

    The maximum number of repetitions, or null for no upper bound. Defaults to null.

    Returns
    Type Description
    TThis

    The created distribution.

    OneOrMore(TElementDistribution, Nullable<Int32>)

    An alias for Repeat(TElementDistribution, Int32, Nullable<Int32>, DistributionKind) with the minimum number of repetitions set to 0 and uniformity kind set to UniformOverValue.

    Declaration
    public static TThis OneOrMore(TElementDistribution allowedElements, int? maxTimes = null)
    Parameters
    Type Name Description
    TElementDistribution allowedElements

    The allowed sequence elements.

    Nullable<Int32> maxTimes

    The maximum number of repetitions, or null for no upper bound. Defaults to null.

    Returns
    Type Description
    TThis

    The created distribution.

    OneOrMore(TThis, Nullable<Int32>)

    An alias for Repeat(TThis, Int32, Nullable<Int32>) with the minimum number of repetitions set to 1.

    Declaration
    public static TThis OneOrMore(TThis dist, int? maxTimes = null)
    Parameters
    Type Name Description
    TThis dist

    The distribution.

    Nullable<Int32> maxTimes

    The maximum number of repetitions, or null for no upper bound. Defaults to null.

    Returns
    Type Description
    TThis

    The created distribution.

    Optional(TSequence, Double)

    Creates a mixture of a point mass on the given sequence and a point mass representing an empty sequence.

    Declaration
    public static TThis Optional(TSequence sequence, double prob = 0.5)
    Parameters
    Type Name Description
    TSequence sequence

    The given sequence.

    Double prob

    The probability of the component corresponding to sequence.

    Returns
    Type Description
    TThis

    The created mixture.

    Optional(TThis, Double)

    Creates a mixture of a given distribution and a point mass representing an empty sequence.

    Declaration
    public static TThis Optional(TThis dist, double prob = 0.5)
    Parameters
    Type Name Description
    TThis dist

    The distribution.

    Double prob

    The probability of the component corresponding to dist.

    Returns
    Type Description
    TThis

    The created mixture.

    PointMass(TSequence)

    Creates a point mass distribution.

    Declaration
    [Construction(new string[]{"Point"}, UseWhen = "IsPointMass")]
    public static TThis PointMass(TSequence point)
    Parameters
    Type Name Description
    TSequence point

    The point.

    Returns
    Type Description
    TThis

    The created point mass distribution.

    Product(TThis)

    Returns a product of the current distribution and a given one.

    Declaration
    public TThis Product(TThis that)
    Parameters
    Type Name Description
    TThis that

    The distribution to compute the product with.

    Returns
    Type Description
    TThis

    The product.

    Repeat(TSequence, Int32, Nullable<Int32>)

    Creates a uniform distribution over sequences containing N repeats of the specified sequence, where n lies within the given bounds. If maxTimes is set to null, there will be no upper bound on the number of repeats, and the resulting distribution will thus be improper.

    Declaration
    public static TThis Repeat(TSequence sequence, int minTimes = 1, int? maxTimes = null)
    Parameters
    Type Name Description
    TSequence sequence

    The sequence to repeat.

    Int32 minTimes

    The minimum possible sequence length. Defaults to 1.

    Nullable<Int32> maxTimes

    The maximum possible sequence length, or null for no upper bound on length. Defaults to null.

    Returns
    Type Description
    TThis

    The created distribution.

    Repeat(TElement, Int32, Nullable<Int32>, DistributionKind)

    Creates a uniform distribution over sequences of length within the given bounds. Sequence elements are restricted to be equal to a given element. If maxTimes is set to null, there will be no upper bound on the length, and the resulting distribution will thus be improper.

    Declaration
    public static TThis Repeat(TElement element, int minTimes = 1, int? maxTimes = null, DistributionKind uniformity = DistributionKind.UniformOverValue)
    Parameters
    Type Name Description
    TElement element

    The element.

    Int32 minTimes

    The minimum possible sequence length. Defaults to 1.

    Nullable<Int32> maxTimes

    The maximum possible sequence length, or null for no upper bound on length. Defaults to null.

    DistributionKind uniformity

    The type of uniformity.

    Returns
    Type Description
    TThis

    The created distribution.

    Repeat(TElementDistribution, Int32, Nullable<Int32>, DistributionKind)

    Creates a uniform distribution over sequences of length within the given bounds. Sequence elements are restricted to be non-zero probability elements from a given distribution. If maxTimes is set to null, there will be no upper bound on the length, and the resulting distribution will thus be improper.

    Declaration
    public static TThis Repeat(TElementDistribution allowedElements, int minTimes = 1, int? maxTimes = null, DistributionKind uniformity = DistributionKind.UniformOverValue)
    Parameters
    Type Name Description
    TElementDistribution allowedElements

    The distribution representing allowed sequence elements.

    Int32 minTimes

    The minimum possible sequence length. Defaults to 1.

    Nullable<Int32> maxTimes

    The maximum possible sequence length, or null for no upper bound on length. Defaults to null.

    DistributionKind uniformity

    The type of uniformity

    Returns
    Type Description
    TThis

    The created distribution.

    Repeat(TThis, Int32, Nullable<Int32>)

    Creates a distribution by applying Repeat(TThis, Int32, Nullable<Int32>) to the weight function of a given distribution, which is additionally scaled by the inverse of GetLogAverageOf(TThis) with itself. So, if the given distribution is partial uniform, the result will be partial uniform over the repetitions of sequences covered by the distribution.

    If maxTimes is set to null, there will be no upper bound on the length, and the resulting distribution will thus be improper.

    Declaration
    public static TThis Repeat(TThis dist, int minTimes = 1, int? maxTimes = null)
    Parameters
    Type Name Description
    TThis dist

    The distribution.

    Int32 minTimes

    The minimum number of repetitions. Defaults to 1.

    Nullable<Int32> maxTimes

    The maximum number of repetitions, or null for no upper bound. Defaults to null.

    Returns
    Type Description
    TThis

    The created distribution.

    Sample()

    Draws a sample from the distribution.

    Declaration
    public TSequence Sample()
    Returns
    Type Description
    TSequence

    The drawn sample.

    Sample(TSequence)

    Draws a sample from the distribution.

    Declaration
    public TSequence Sample(TSequence result)
    Parameters
    Type Name Description
    TSequence result

    A pre-allocated storage for the sample (will be ignored).

    Returns
    Type Description
    TSequence

    The drawn sample.

    SetLogValueOverride(Nullable<Double>)

    Sets a value that, if not null, will be returned when computing the log probability of any sequence which is in the support of this distribution.

    Declaration
    public void SetLogValueOverride(double? logValueOverride)
    Parameters
    Type Name Description
    Nullable<Double> logValueOverride

    A non-null value that should be returned when computing the log probability of any sequence which is in the support of this distribution, or null to clear any existing override.

    SetTo(TThis)

    Replaces the current distribution by a copy of the given distribution.

    Declaration
    public void SetTo(TThis that)
    Parameters
    Type Name Description
    TThis that

    The distribution to set the current distribution to.

    SetToPartialUniform()

    Sets the distribution to be uniform over its support.

    Declaration
    public void SetToPartialUniform()
    Remarks

    This function will fail if the weight function of this distribution is represented by an automaton that cannot be determinized.

    SetToPartialUniformOf(TThis)

    Sets the distribution to be uniform over the support of a given distribution.

    Declaration
    public void SetToPartialUniformOf(TThis dist)
    Parameters
    Type Name Description
    TThis dist

    The distribution which support will be used to setup the current distribution.

    Remarks

    This function will fail if the weight function of dist is represented by an automaton that cannot be determinized.

    SetToPower(TThis, Double)

    Replaces the current distribution with a given distribution raised to a given power.

    Declaration
    public void SetToPower(TThis that, double power)
    Parameters
    Type Name Description
    TThis that

    The distribution to raise to the power.

    Double power

    The power.

    Remarks

    Only 0 and 1 are currently supported as powers.

    SetToProduct(TThis, TThis)

    Replaces the current distribution with a product of a given pair of distributions.

    Declaration
    public void SetToProduct(TThis dist1, TThis dist2)
    Parameters
    Type Name Description
    TThis dist1

    The first distribution.

    TThis dist2

    The second distribution.

    SetToProductAndReturnLogNormalizer(TThis, TThis, Boolean)

    Replaces the current distribution with a product of a given pair of distributions Returns the logarithm of the normalizer for the product (as returned by GetLogAverageOf(TThis)).

    Declaration
    public double SetToProductAndReturnLogNormalizer(TThis dist1, TThis dist2, bool tryDeterminize = true)
    Parameters
    Type Name Description
    TThis dist1

    The first distribution.

    TThis dist2

    The second distribution.

    Boolean tryDeterminize

    Whether to try to determinize the result.

    Returns
    Type Description
    Double

    The logarithm of the normalizer for the product.

    SetToRatio(TThis, TThis, Boolean)

    Replaces the current distribution with the ratio of a given pair of distributions. Not currently supported.

    Declaration
    public void SetToRatio(TThis numerator, TThis denominator, bool forceProper)
    Parameters
    Type Name Description
    TThis numerator

    The numerator in the ratio.

    TThis denominator

    The denominator in the ratio.

    Boolean forceProper

    Specifies whether the ratio must be proper.

    SetToSum(Double, TThis, Double, TThis)

    Replaces the current distribution with a mixture of a given pair of distributions.

    Declaration
    public void SetToSum(double weight1, TThis dist1, double weight2, TThis dist2)
    Parameters
    Type Name Description
    Double weight1

    The weight of the first distribution.

    TThis dist1

    The first distribution.

    Double weight2

    The weight of the second distribution.

    TThis dist2

    The second distribution.

    SetToSumLog(Double, TThis, Double, TThis)

    Replaces the current distribution with a mixture of a given pair of distributions.

    Declaration
    public void SetToSumLog(double logWeight1, TThis dist1, double logWeight2, TThis dist2)
    Parameters
    Type Name Description
    Double logWeight1

    The logarithm of the weight of the first distribution.

    TThis dist1

    The first distribution.

    Double logWeight2

    The logarithm of the weight of the second distribution.

    TThis dist2

    The second distribution.

    SetToUniform()

    Replaces the current distribution with an improper distribution which assigns the probability of 1 to every sequence.

    Declaration
    public void SetToUniform()

    SetToUniformOf(TElementDistribution)

    Replaces the current distribution with an improper distribution which assigns the probability of 1 to every sequence. Sequence elements are restricted to be non-zero probability elements from a given distribution.

    Declaration
    public void SetToUniformOf(TElementDistribution allowedElements)
    Parameters
    Type Name Description
    TElementDistribution allowedElements

    The distribution representing allowed sequence elements.

    SetToUniformOf(TElementDistribution, Double)

    Replaces the current distribution with an improper distribution which assigns a given probability to every sequence. Sequence elements are restricted to be non-zero probability elements from a given distribution.

    Declaration
    protected void SetToUniformOf(TElementDistribution allowedElements, double uniformLogProb)
    Parameters
    Type Name Description
    TElementDistribution allowedElements

    The distribution representing allowed sequence elements.

    Double uniformLogProb

    The logarithm of the probability assigned to every allowed sequence.

    SetToZero()

    Replaces the current distribution by an improper zero distribution.

    Declaration
    public void SetToZero()

    SetWeightFunction(TAutomaton, Boolean)

    Replaces the weight function of the current distribution with a given one.

    Declaration
    public void SetWeightFunction(TAutomaton weightFunction, bool normalizeStructure = true)
    Parameters
    Type Name Description
    TAutomaton weightFunction
    Boolean normalizeStructure

    Whether to normalize the structure of the distribution

    SetWeightFunction(TWeightFunction, Boolean)

    Replaces the weight function of the current distribution with a given one.

    Declaration
    public void SetWeightFunction(TWeightFunction weightFunction, bool normalizeStructure = true)
    Parameters
    Type Name Description
    TWeightFunction weightFunction

    The weight function to replace the current one with.

    Boolean normalizeStructure

    Whether to normalize the structure of the distribution

    SingleElement(TElement)

    Creates a distribution which puts all probability mass on a sequence containing only a given element.

    Declaration
    public static TThis SingleElement(TElement element)
    Parameters
    Type Name Description
    TElement element

    The element.

    Returns
    Type Description
    TThis

    The created distribution.

    SingleElement(TElementDistribution)

    Creates a distribution over sequences of length 1 induced by a given distribution over sequence elements.

    Declaration
    public static TThis SingleElement(TElementDistribution elementDistribution)
    Parameters
    Type Name Description
    TElementDistribution elementDistribution

    The distribution over sequence elements.

    Returns
    Type Description
    TThis

    The created distribution.

    Remarks

    The distribution created by this method can differ from the result of Repeat(TElementDistribution, Int32, Nullable<Int32>, DistributionKind) with both min and max number of times to repeat set to 1 since the latter always creates a partial uniform distribution.

    ToAutomaton()

    Returns an automaton representing the underlying weight function.

    Declaration
    public TAutomaton ToAutomaton()
    Returns
    Type Description
    TAutomaton

    An automaton representing the underlying weight function.

    Remarks

    The returned weight function might differ from the probability function by an arbitrary scale factor. To ensure that the weight function is normalized, use ToNormalizedAutomaton().

    ToNormalizedAutomaton()

    Returns an automaton representing the underlying weight function.

    Declaration
    public TAutomaton ToNormalizedAutomaton()
    Returns
    Type Description
    TAutomaton

    An automaton representing the underlying weight function.

    Remarks

    The returned weight function is guaranteed to be normalized. If you don't care about an arbitrary scale factor, consider using ToAutomaton() which has less overhead.

    ToString()

    Returns a string that represents the distribution.

    Declaration
    public override string ToString()
    Returns
    Type Description
    String

    A string that represents the distribution.

    Overrides
    Object.ToString()

    ToString(ISequenceDistributionFormat)

    Returns a string that represents the distribution.

    Declaration
    public string ToString(ISequenceDistributionFormat format)
    Parameters
    Type Name Description
    ISequenceDistributionFormat format

    The format.

    Returns
    Type Description
    String

    A string that represents the distribution.

    ToString(Action<TElementDistribution, StringBuilder>)

    Returns a string that represents the distribution.

    Declaration
    protected string ToString(Action<TElementDistribution, StringBuilder> appendRegex)
    Parameters
    Type Name Description
    Action<TElementDistribution, StringBuilder> appendRegex

    Optional method for appending at the element distribution level.

    Returns
    Type Description
    String

    A string that represents the automaton.

    TryDeterminize()

    Tries to replace the internal representation of the current distribution with an equivalent deterministic automaton, unless the current representation is guaranteed to produce a deterministic automaton on conversion.

    Declaration
    public bool TryDeterminize()
    Returns
    Type Description
    Boolean

    true if the internal representation of the current distribution was successfully replaced with a deterministic automaton or is guaranteed to produce one on direct conversion, false otherwise.

    TryEnumerateSupport(Int32, out IEnumerable<TSequence>, Boolean)

    Enumerates support of this distribution when possible. Only point mass elements are supported.

    Declaration
    public bool TryEnumerateSupport(int maxCount, out IEnumerable<TSequence> result, bool tryDeterminize = true)
    Parameters
    Type Name Description
    Int32 maxCount

    The maximum support enumeration count.

    IEnumerable<TSequence> result

    The strings supporting this distribution.

    Boolean tryDeterminize

    Try to determinize if this distribution uses a string automaton representation.

    Returns
    Type Description
    Boolean

    True if successful, false otherwise.

    Exceptions
    Type Condition
    AutomatonException

    Thrown if enumeration is too large.

    Uniform()

    Creates an improper distribution which assigns the probability of 1 to every sequence.

    Declaration
    [Construction(UseWhen = "IsUniform")]
    public static TThis Uniform()
    Returns
    Type Description
    TThis

    The created uniform distribution.

    UniformOf(TElementDistribution, Double)

    Creates an improper distribution which assigns a given probability to every sequence. Sequence elements are restricted to be non-zero probability elements from a given distribution.

    Declaration
    protected static TThis UniformOf(TElementDistribution allowedElements, double uniformLogProb)
    Parameters
    Type Name Description
    TElementDistribution allowedElements

    The distribution representing allowed sequence elements.

    Double uniformLogProb

    The logarithm of the probability assigned to every allowed sequence.

    Returns
    Type Description
    TThis

    The created distribution.

    Zero()

    Creates an improper distribution which assigns zero probability to every sequence.

    Declaration
    [Construction(UseWhen = "IsZero")]
    public static TThis Zero()
    Returns
    Type Description
    TThis

    The created zero distribution.

    ZeroOrMore(TSequence, Nullable<Int32>)

    An alias for Repeat(TThis, Int32, Nullable<Int32>) with the minimum number of repetitions set to 0.

    Declaration
    public static TThis ZeroOrMore(TSequence sequence, int? maxTimes = null)
    Parameters
    Type Name Description
    TSequence sequence

    The sequence.

    Nullable<Int32> maxTimes

    The maximum number of repetitions, or null for no upper bound. Defaults to null.

    Returns
    Type Description
    TThis

    The created distribution.

    ZeroOrMore(TElement, Nullable<Int32>)

    An alias for Repeat(TElement, Int32, Nullable<Int32>, DistributionKind) with the minimum number of repetitions set to 0 and uniformity kind set to UniformOverValue.

    Declaration
    public static TThis ZeroOrMore(TElement element, int? maxTimes = null)
    Parameters
    Type Name Description
    TElement element

    The element.

    Nullable<Int32> maxTimes

    The maximum number of repetitions, or null for no upper bound. Defaults to null.

    Returns
    Type Description
    TThis

    The created distribution.

    ZeroOrMore(TElementDistribution, Nullable<Int32>)

    An alias for Repeat(TElementDistribution, Int32, Nullable<Int32>, DistributionKind) with the minimum number of repetitions set to 0 and uniformity kind set to UniformOverValue.

    Declaration
    public static TThis ZeroOrMore(TElementDistribution allowedElements, int? maxTimes = null)
    Parameters
    Type Name Description
    TElementDistribution allowedElements

    The allowed sequence elements.

    Nullable<Int32> maxTimes

    The maximum number of repetitions, or null for no upper bound. Defaults to null.

    Returns
    Type Description
    TThis

    The created distribution.

    ZeroOrMore(TThis, Nullable<Int32>)

    An alias for Repeat(TThis, Int32, Nullable<Int32>) with the minimum number of repetitions set to 0.

    Declaration
    public static TThis ZeroOrMore(TThis dist, int? maxTimes = null)
    Parameters
    Type Name Description
    TThis dist

    The distribution.

    Nullable<Int32> maxTimes

    The maximum number of repetitions, or null for no upper bound. Defaults to null.

    Returns
    Type Description
    TThis

    The created distribution.

    Explicit Interface Implementations

    ICloneable.Clone()

    Creates a copy of the current distribution.

    Declaration
    object ICloneable.Clone()
    Returns
    Type Description
    Object

    The created copy.

    Implements

    IDistribution<T>
    IDistribution
    System.ICloneable
    Diffable
    SettableToUniform
    HasPoint<T>
    CanGetLogProb<T>
    SettableTo<T>
    SettableToProduct<T>
    SettableToProduct<T, U>
    SettableToRatio<T>
    SettableToRatio<T, U>
    SettableToPower<T>
    CanGetLogAverageOf<T>
    CanGetLogAverageOfPower<T>
    CanGetAverageLog<T>
    SettableToWeightedSumExact<T>
    SettableToWeightedSum<T>
    SettableToPartialUniform<TDist>
    CanGetLogNormalizer
    Sampleable<T>
    In This Article
    Back to top Copyright © .NET Foundation. All rights reserved.