pub struct PermutationPrior { /* private fields */ }Expand description
Fisher–Yates / Lehmer-code uniform prior over permutations of 0..n.
Position i samples a rank at perm#i, uniform over the n−i values
not yet used (a Usize in 0..n−i); the rank sequence decodes to a
permutation against the shrinking available-value list. This coincides
site-for-site with Permutation::to_trace’s Lehmer encoding, so scoring
an existing genome’s trace under replay finds every site with matching
semantics, and:
- every model execution decodes to a valid permutation (density exactly
1/n!), and - under single-site MH, resampling one rank always decodes to a different valid permutation — the rank encoding is what makes single-site moves live (a raw value encoding would turn every single-site change into a duplicate and freeze the chain).
Implementations§
Trait Implementations§
Source§impl Clone for PermutationPrior
impl Clone for PermutationPrior
Source§fn clone(&self) -> PermutationPrior
fn clone(&self) -> PermutationPrior
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PermutationPrior
impl Debug for PermutationPrior
Source§impl GenomePrior for PermutationPrior
impl GenomePrior for PermutationPrior
Source§type Genome = Permutation
type Genome = Permutation
The genome type this prior generates.
Source§fn model(&self) -> Model<Permutation>
fn model(&self) -> Model<Permutation>
The generative program
p(x).Source§fn trace_of(&self, genome: &Self::Genome) -> Trace
fn trace_of(&self, genome: &Self::Genome) -> Trace
Encode a genome as a trace under this prior’s address scheme — the
inverse direction of running
Self::model. The default delegates to
the genome’s canonical TraceGenome::to_trace encoding, which is
correct whenever the prior samples exactly the canonical sites (all the
vector priors here). Priors with their own generative scheme — e.g.
ArithmeticGrammarPrior’s
tree-path grammar — override this so that scoring, weighted traces, and
chain warm-starts work for any genome the prior can express.Auto Trait Implementations§
impl Freeze for PermutationPrior
impl RefUnwindSafe for PermutationPrior
impl Send for PermutationPrior
impl Sync for PermutationPrior
impl Unpin for PermutationPrior
impl UnsafeUnpin for PermutationPrior
impl UnwindSafe for PermutationPrior
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.