From f7087ae0939089484c715ca4ef360d1832f7217a Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 26 Feb 2024 13:59:32 -0600 Subject: [PATCH 01/43] Incremental (non-compiling) progress --- lace/examples/column_geweke.rs | 2 +- lace/examples/state_geweke.rs | 4 +- lace/examples/view_geweke.rs | 4 +- lace/lace_cc/src/builders.rs | 143 +++++ lace/lace_cc/src/feature/column.rs | 2 +- lace/lace_cc/src/feature/geweke.rs | 2 +- lace/lace_cc/src/feature/mnar.rs | 2 +- lace/lace_cc/src/feature/traits.rs | 2 +- lace/lace_cc/src/lib.rs | 2 +- lace/lace_cc/src/misc.rs | 51 +- lace/lace_cc/src/state.rs | 533 +++++++++--------- lace/lace_cc/src/state/builder.rs | 29 +- lace/lace_cc/src/transition.rs | 14 +- lace/lace_cc/src/view.rs | 331 ++++++----- lace/lace_cc/tests/state.rs | 8 +- lace/lace_codebook/src/codebook.rs | 41 +- lace/lace_codebook/src/data.rs | 22 +- lace/lace_metadata/src/latest.rs | 244 ++------ lace/lace_metadata/src/lib.rs | 1 + .../{lace_cc => lace_stats}/src/assignment.rs | 266 +-------- lace/lace_stats/src/lib.rs | 3 + lace/lace_stats/src/prior_process.rs | 380 +++++++++++++ lace/tests/engine.rs | 8 +- 23 files changed, 1160 insertions(+), 934 deletions(-) create mode 100644 lace/lace_cc/src/builders.rs rename lace/{lace_cc => lace_stats}/src/assignment.rs (75%) create mode 100644 lace/lace_stats/src/prior_process.rs diff --git a/lace/examples/column_geweke.rs b/lace/examples/column_geweke.rs index 878622b7..1759ac7b 100644 --- a/lace/examples/column_geweke.rs +++ b/lace/examples/column_geweke.rs @@ -15,7 +15,7 @@ fn main() { // The column model uses an assignment as its setting. We'll draw a // 50-length assignment from the prior. let transitions = vec![ - ViewTransition::Alpha, + ViewTransition::PriorProcessParams, ViewTransition::RowAssignment(RowAssignAlg::Slice), ]; let asgn = AssignmentBuilder::new(10).flat().build().unwrap(); diff --git a/lace/examples/state_geweke.rs b/lace/examples/state_geweke.rs index e15bd81c..eeeeddde 100644 --- a/lace/examples/state_geweke.rs +++ b/lace/examples/state_geweke.rs @@ -67,7 +67,7 @@ fn main() { } if !opt.no_state_alpha { - transitions.push(StateTransition::StateAlpha); + transitions.push(StateTransition::StatePriorProcessParams); } if !opt.no_row_reassign { @@ -75,7 +75,7 @@ fn main() { } if !opt.no_view_alpha { - transitions.push(StateTransition::ViewAlphas); + transitions.push(StateTransition::ViewPriorProcessParams); } if !opt.no_priors { diff --git a/lace/examples/view_geweke.rs b/lace/examples/view_geweke.rs index a8e07aea..cf7768f3 100644 --- a/lace/examples/view_geweke.rs +++ b/lace/examples/view_geweke.rs @@ -44,7 +44,9 @@ fn main() { .push(ViewTransition::RowAssignment(opt.alg)); } if !opt.no_view_alpha { - settings.transitions.push(ViewTransition::Alpha); + settings + .transitions + .push(ViewTransition::PriorProcessParams); } if !opt.no_priors { settings.transitions.push(ViewTransition::FeaturePriors); diff --git a/lace/lace_cc/src/builders.rs b/lace/lace_cc/src/builders.rs new file mode 100644 index 00000000..af374e29 --- /dev/null +++ b/lace/lace_cc/src/builders.rs @@ -0,0 +1,143 @@ +use rand::SeedableRng; +use rand_xoshiro::Xoshiro256Plus; +use thiserror::Error; + +use lace_stats::assignment::{Assignment, AssignmentError}; +use lace_stats::prior_process::Process; + +/// Constructs `Assignment`s +#[derive(Clone, Debug)] +pub struct AssignmentBuilder { + n: usize, + asgn: Option>, + prior_process: Option, + seed: Option, +} + +#[derive(Debug, Error, PartialEq)] +pub enum BuildAssignmentError { + #[error("alpha is zero")] + AlphaIsZero, + #[error("non-finite alpha: {alpha}")] + AlphaNotFinite { alpha: f64 }, + #[error("assignment vector is empty")] + EmptyAssignmentVec, + #[error("there are {n_cats} categories but {n} data")] + NLessThanNCats { n: usize, n_cats: usize }, + #[error("invalid assignment: {0}")] + AssignmentError(#[from] AssignmentError), +} + +impl AssignmentBuilder { + /// Create a builder for `n`-length assignments + /// + /// # Arguments + /// - n: the number of data/entries in the assignment + pub fn new(n: usize) -> Self { + AssignmentBuilder { + n, + asgn: None, + prior_process: None, + seed: None, + } + } + + /// Initialize the builder from an assignment vector + /// + /// # Note: + /// The validity of `asgn` will not be verified until `build` is called. + pub fn from_vec(asgn: Vec) -> Self { + AssignmentBuilder { + n: asgn.len(), + asgn: Some(asgn), + prior_process: None, + seed: None, + } + } + + /// Add a prior on the `Crp` `alpha` parameter + #[must_use] + pub fn with_prior_process(mut self, process: Process) -> Self { + self.prior_process = Some(process); + self + } + + /// Set the RNG seed + #[must_use] + pub fn with_seed(mut self, seed: u64) -> Self { + self.seed = Some(seed); + self + } + + /// Set the RNG seed from another RNG + #[must_use] + pub fn seed_from_rng(mut self, rng: &mut R) -> Self { + self.seed = Some(rng.next_u64()); + self + } + + /// Use a *flat* assignment with one partition + #[must_use] + pub fn flat(mut self) -> Self { + self.asgn = Some(vec![0; self.n]); + self + } + + /// Use an assignment with `n_cats`, evenly populated partitions/categories + pub fn with_n_cats( + mut self, + n_cats: usize, + ) -> Result { + if n_cats > self.n { + Err(BuildAssignmentError::NLessThanNCats { n: self.n, n_cats }) + } else { + let asgn: Vec = (0..self.n).map(|i| i % n_cats).collect(); + self.asgn = Some(asgn); + Ok(self) + } + } + + /// Build the assignment and consume the builder + pub fn build(self) -> Result { + use lace_stats::prior_process::{Dirichlet, PriorProcessT}; + + let mut rng = self.seed.map_or_else( + || Xoshiro256Plus::from_entropy(), + Xoshiro256Plus::seed_from_u64, + ); + + let process = self.prior_process.unwrap_or_else(|| { + Process::Dirichlet(Dirichlet::from_prior( + lace_consts::general_alpha_prior(), + &mut rng, + )) + }); + + let n = self.n; + let asgn = self + .asgn + .unwrap_or_else(|| process.draw_assignment(n, &mut rng).asgn); + + let n_cats: usize = asgn.iter().max().map(|&m| m + 1).unwrap_or(0); + let mut counts: Vec = vec![0; n_cats]; + for z in &asgn { + counts[*z] += 1; + } + + let asgn_out = Assignment { + asgn, + counts, + n_cats, + }; + + if lace_stats::validate_assignment!(asgn_out) { + Ok(asgn_out) + } else { + asgn_out + .validate() + .emit_error() + .map_err(BuildAssignmentError::AssignmentError) + .map(|_| asgn_out) + } + } +} diff --git a/lace/lace_cc/src/feature/column.rs b/lace/lace_cc/src/feature/column.rs index da1a6050..52a97d05 100644 --- a/lace/lace_cc/src/feature/column.rs +++ b/lace/lace_cc/src/feature/column.rs @@ -4,6 +4,7 @@ use std::vec::Drain; use enum_dispatch::enum_dispatch; use lace_data::{Category, FeatureData}; use lace_data::{Container, SparseContainer}; +use lace_stats::assignment::Assignment; use lace_stats::prior::csd::CsdHyper; use lace_stats::prior::nix::NixHyper; use lace_stats::prior::pg::PgHyper; @@ -20,7 +21,6 @@ use serde::{de::DeserializeOwned, Deserialize, Serialize}; use std::sync::OnceLock; use super::{Component, MissingNotAtRandom}; -use crate::assignment::Assignment; use crate::component::ConjugateComponent; use crate::feature::traits::{Feature, FeatureHelper, TranslateDatum}; use crate::feature::FType; diff --git a/lace/lace_cc/src/feature/geweke.rs b/lace/lace_cc/src/feature/geweke.rs index 403a1cd6..6db11103 100644 --- a/lace/lace_cc/src/feature/geweke.rs +++ b/lace/lace_cc/src/feature/geweke.rs @@ -3,6 +3,7 @@ use std::collections::BTreeMap; use lace_data::{Container, SparseContainer}; use lace_geweke::{GewekeModel, GewekeResampleData, GewekeSummarize}; +use lace_stats::assignment::Assignment; use lace_stats::prior::csd::CsdHyper; use lace_stats::prior::nix::NixHyper; use lace_stats::prior::pg::PgHyper; @@ -14,7 +15,6 @@ use lace_stats::rv::traits::Rv; use lace_utils::{mean, std}; use rand::Rng; -use crate::assignment::Assignment; use crate::feature::{ColModel, Column, FType, Feature}; use crate::transition::ViewTransition; diff --git a/lace/lace_cc/src/feature/mnar.rs b/lace/lace_cc/src/feature/mnar.rs index b0035630..9b335e0d 100644 --- a/lace/lace_cc/src/feature/mnar.rs +++ b/lace/lace_cc/src/feature/mnar.rs @@ -1,6 +1,6 @@ use super::{ColModel, Column, Component, FType, Feature, FeatureHelper}; -use crate::assignment::Assignment; use lace_data::{Datum, FeatureData, SparseContainer}; +use lace_stats::assignment::Assignment; use lace_stats::rv::dist::{Bernoulli, Beta}; use lace_stats::MixtureType; use rand::Rng; diff --git a/lace/lace_cc/src/feature/traits.rs b/lace/lace_cc/src/feature/traits.rs index 44ac2643..c66cafa9 100644 --- a/lace/lace_cc/src/feature/traits.rs +++ b/lace/lace_cc/src/feature/traits.rs @@ -2,6 +2,7 @@ use enum_dispatch::enum_dispatch; use lace_data::FeatureData; use lace_data::{Datum, SparseContainer}; +use lace_stats::assignment::Assignment; use lace_stats::prior::csd::CsdHyper; use lace_stats::prior::nix::NixHyper; use lace_stats::prior::pg::PgHyper; @@ -13,7 +14,6 @@ use lace_stats::MixtureType; use rand::Rng; use super::Component; -use crate::assignment::Assignment; use crate::feature::{ColModel, Column, FType}; pub trait TranslateDatum diff --git a/lace/lace_cc/src/lib.rs b/lace/lace_cc/src/lib.rs index 7133e9a1..5297a037 100644 --- a/lace/lace_cc/src/lib.rs +++ b/lace/lace_cc/src/lib.rs @@ -9,7 +9,7 @@ )] pub mod alg; -pub mod assignment; +pub mod builders; pub mod component; pub mod config; pub mod feature; diff --git a/lace/lace_cc/src/misc.rs b/lace/lace_cc/src/misc.rs index fb1a85bc..cff4179e 100644 --- a/lace/lace_cc/src/misc.rs +++ b/lace/lace_cc/src/misc.rs @@ -4,8 +4,6 @@ use lace_stats::rv::traits::Rv; use rand::Rng; use serde::{Deserialize, Serialize}; -const MAX_STICK_BREAKING_ITERS: u16 = 1000; - #[derive(Debug, Clone, Hash, PartialEq, Eq, Ord, PartialOrd)] pub struct CrpDraw { pub asgn: Vec, @@ -13,7 +11,7 @@ pub struct CrpDraw { pub n_cats: usize, } -/// Draw from Chinese Restaraunt Process +/// Draw from Chinese Restaurant Process pub fn crp_draw(n: usize, alpha: f64, rng: &mut R) -> CrpDraw { let mut n_cats = 0; let mut weights: Vec = vec![]; @@ -44,53 +42,6 @@ pub fn crp_draw(n: usize, alpha: f64, rng: &mut R) -> CrpDraw { } } -/// The stick breaking algorithm has exceeded the max number of iterations. -#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct TheStickIsDust(u16); - -/// Append new dirchlet weights by stick breaking until the new weight is less -/// than u* -/// -/// **NOTE** This function is only for the slice reassignment kernel. It cuts out all -/// weights that are less that u*, so the sum of the weights will not be 1. -pub fn sb_slice_extend( - mut weights: Vec, - alpha: f64, - u_star: f64, - mut rng: &mut R, -) -> Result, TheStickIsDust> { - let mut b_star = weights.pop().unwrap(); - - // If α is low and we do the dirichlet update w ~ Dir(n_1, ..., n_k, α), - // the final weight will often be zero. In that case, we're done. - if b_star <= 1E-16 { - weights.push(b_star); - return Ok(weights); - } - - let beta = Beta::new(1.0, alpha).unwrap(); - - let mut iters: u16 = 0; - loop { - let vk: f64 = beta.draw(&mut rng); - let bk = vk * b_star; - b_star *= 1.0 - vk; - - if bk >= u_star { - weights.push(bk); - } - - if b_star < u_star { - return Ok(weights); - } - - iters += 1; - if iters > MAX_STICK_BREAKING_ITERS { - return Err(TheStickIsDust(MAX_STICK_BREAKING_ITERS)); - } - } -} - #[cfg(test)] mod tests { use super::*; diff --git a/lace/lace_cc/src/state.rs b/lace/lace_cc/src/state.rs index ca571558..ba3f4c5e 100644 --- a/lace/lace_cc/src/state.rs +++ b/lace/lace_cc/src/state.rs @@ -1,11 +1,16 @@ mod builder; pub use builder::{BuildStateError, Builder}; +use lace_consts::geweke_alpha_prior; use std::convert::TryInto; use std::f64::NEG_INFINITY; use lace_data::{Datum, FeatureData}; -use lace_stats::rv::dist::{Dirichlet, Gamma}; +use lace_stats::assignment::Assignment; +use lace_stats::prior_process::{ + PriorProcess, PriorProcessT, PriorProcessType, Process, +}; +use lace_stats::rv::dist::Dirichlet; use lace_stats::rv::misc::ln_pflip; use lace_stats::rv::traits::*; use lace_stats::MixtureType; @@ -17,7 +22,7 @@ use rayon::prelude::*; use serde::{Deserialize, Serialize}; use crate::alg::{ColAssignAlg, RowAssignAlg}; -use crate::assignment::{Assignment, AssignmentBuilder}; +use crate::builders::AssignmentBuilder; use crate::config::StateUpdateConfig; use crate::feature::Component; use crate::feature::{ColModel, FType, Feature}; @@ -36,32 +41,25 @@ pub struct StateDiagnostics { pub logprior: Vec, } +#[derive(Serialize, Deserialize, Clone, Debug, Default)] +pub struct StateScoreComponents { + pub ln_likelihood: f64, + pub ln_prior: f64, + pub ln_state_prior_process: f64, + pub ln_view_prior_process: f64, +} + /// A cross-categorization state #[derive(Serialize, Deserialize, Clone, Debug)] pub struct State { /// The views of columns pub views: Vec, /// The assignment of columns to views - pub asgn: Assignment, + pub prior_process: PriorProcess, /// The weights of each view in the column mixture pub weights: Vec, - /// The prior on the view CRP alphas - pub view_alpha_prior: Gamma, - /// The log likeihood of the data under the current assignment - #[serde(default)] - pub loglike: f64, - /// The log prior likelihood of component parameters under the prior and of - /// feature prior parameters under the hyperprior - #[serde(default)] - pub log_prior: f64, - /// The log prior likelihood of the row assignments under CRP and of the CRP - /// alpha param under the hyperprior - #[serde(default)] - pub log_view_alpha_prior: f64, - /// The log prior likelihood of column assignment under CRP and of the state - /// CRP alpha param under the hyperprior #[serde(default)] - pub log_state_alpha_prior: f64, + pub score: StateScoreComponents, /// The running diagnostics pub diagnostics: StateDiagnostics, } @@ -70,28 +68,29 @@ unsafe impl Send for State {} unsafe impl Sync for State {} impl State { - pub fn new( - views: Vec, - asgn: Assignment, - view_alpha_prior: Gamma, - ) -> Self { - let weights = asgn.weights(); + pub fn new(views: Vec, asgn: Assignment, process: Process) -> Self { + let prior_process = PriorProcess { asgn, process }; + let weights = prior_process.weight_vec(false); let mut state = State { views, - asgn, + prior_process, weights, - view_alpha_prior, - loglike: 0.0, - log_prior: 0.0, - log_state_alpha_prior: 0.0, - log_view_alpha_prior: 0.0, + score: StateScoreComponents::default(), diagnostics: StateDiagnostics::default(), }; - state.loglike = state.loglike(); + state.score.ln_likelihood = state.loglike(); state } + pub fn asgn(&self) -> &Assignment { + &self.prior_process.asgn + } + + pub fn asgn_mut(&mut self) -> &mut Assignment { + &mut self.prior_process.asgn + } + /// Create a new `Builder` for generating a new `State`. pub fn builder() -> Builder { Builder::new() @@ -100,46 +99,38 @@ impl State { /// Draw a new `State` from the prior pub fn from_prior( mut ftrs: Vec, - state_alpha_prior: Gamma, - view_alpha_prior: Gamma, + state_process: Process, + view_process: Process, rng: &mut R, ) -> Self { let n_cols = ftrs.len(); let n_rows = ftrs.get(0).map(|f| f.len()).unwrap_or(0); - let asgn = AssignmentBuilder::new(n_cols) - .with_prior(state_alpha_prior) - .seed_from_rng(rng) - .build() - .unwrap(); - - let mut views: Vec = (0..asgn.n_cats) + let prior_process = + PriorProcess::from_process(state_process, n_cols, rng); + let mut views: Vec = (0..prior_process.asgn.n_cats) .map(|_| { view::Builder::new(n_rows) - .alpha_prior(view_alpha_prior.clone()) + .prior_process(view_process.clone()) .seed_from_rng(rng) .build() }) .collect(); // TODO: Can we parallellize this? - for (&v, ftr) in asgn.asgn.iter().zip(ftrs.drain(..)) { + for (&v, ftr) in prior_process.asgn.iter().zip(ftrs.drain(..)) { views[v].init_feature(ftr, rng); } - let weights = asgn.weights(); + let weights = prior_process.weight_vec(false); let mut state = State { views, - asgn, + prior_process, weights, - view_alpha_prior, - loglike: 0.0, - log_prior: 0.0, - log_state_alpha_prior: 0.0, - log_view_alpha_prior: 0.0, + score: StateScoreComponents::default(), diagnostics: StateDiagnostics::default(), }; - state.loglike = state.loglike(); + state.score.ln_likelihood = state.loglike(); state } @@ -154,14 +145,14 @@ impl State { /// Get a reference to the features at `col_ix` #[inline] pub fn feature(&self, col_ix: usize) -> &ColModel { - let view_ix = self.asgn.asgn[col_ix]; + let view_ix = self.asgn().asgn[col_ix]; &self.views[view_ix].ftrs[&col_ix] } /// Get a mutable reference to the features at `col_ix` #[inline] pub fn feature_mut(&mut self, col_ix: usize) -> &mut ColModel { - let view_ix = self.asgn.asgn[col_ix]; + let view_ix = self.asgn().asgn[col_ix]; self.views[view_ix].ftrs.get_mut(&col_ix).unwrap() } @@ -169,7 +160,7 @@ impl State { #[inline] pub fn feature_as_mixture(&self, col_ix: usize) -> MixtureType { let weights = { - let view_ix = self.asgn.asgn[col_ix]; + let view_ix = self.asgn().asgn[col_ix]; self.views[view_ix].weights.clone() }; self.feature(col_ix).to_mixture(weights) @@ -206,7 +197,7 @@ impl State { /// Get the feature type (`FType`) of the column at `col_ix` #[inline] pub fn ftype(&self, col_ix: usize) -> FType { - let view_ix = self.asgn.asgn[col_ix]; + let view_ix = self.asgn().asgn[col_ix]; self.views[view_ix].ftrs[&col_ix].ftype() } @@ -223,23 +214,24 @@ impl State { StateTransition::RowAssignment(alg) => { self.reassign_rows(*alg, rng); } - StateTransition::StateAlpha => { - self.log_state_alpha_prior = self - .asgn - .update_alpha(lace_consts::MH_PRIOR_ITERS, rng); + StateTransition::StatePriorProcessParams => { + // FIXME: Add to probability? + self.score.ln_state_prior_process = + self.prior_process.update_params(rng); } - StateTransition::ViewAlphas => { - self.log_view_alpha_prior = self.update_view_alphas(rng); + StateTransition::ViewPriorProcessParams => { + self.score.ln_view_prior_process = + self.update_view_prior_process_params(rng); } StateTransition::FeaturePriors => { - self.log_prior = self.update_feature_priors(rng); + self.score.ln_prior = self.update_feature_priors(rng); } StateTransition::ComponentParams => { self.update_component_params(rng); } } } - self.loglike = self.loglike(); + self.score.ln_likelihood = self.loglike(); } fn reassign_rows( @@ -260,8 +252,11 @@ impl State { } #[inline] - fn update_view_alphas(&mut self, rng: &mut R) -> f64 { - self.views.iter_mut().map(|v| v.update_alpha(rng)).sum() + fn update_view_prior_process_params(&mut self, rng: &mut R) -> f64 { + self.views + .iter_mut() + .map(|v| v.update_prior_process_params(rng)) + .sum() } #[inline] @@ -301,10 +296,10 @@ impl State { } pub fn push_diagnostics(&mut self) { - self.diagnostics.loglike.push(self.loglike); - let log_prior = self.log_prior - + self.log_view_alpha_prior - + self.log_state_alpha_prior; + self.diagnostics.loglike.push(self.score.ln_likelihood); + let log_prior = self.score.ln_prior + + self.score.ln_view_prior_process + + self.score.ln_state_prior_process; self.diagnostics.logprior.push(log_prior); } @@ -312,11 +307,11 @@ impl State { pub fn flatten_cols(&mut self, mut rng: &mut R) { let n_cols = self.n_cols(); let new_asgn_vec = vec![0; n_cols]; - let n_cats = self.asgn.n_cats; + let n_cats = self.asgn().n_cats; let ftrs = { let mut ftrs: Vec = Vec::with_capacity(n_cols); - for (i, &v) in self.asgn.asgn.iter().enumerate() { + for (i, &v) in self.prior_process.asgn.asgn.iter().enumerate() { ftrs.push( self.views[v].remove_feature(i).expect("Feature missing"), ); @@ -347,7 +342,7 @@ impl State { // it does not explicitly update the weights. Non-updated weights means // wrong probabilities. To avoid this, we set the weights by the // partition here. - self.weights = self.asgn.weights(); + self.weights = self.prior_process.weight_vec(false); } ColAssignAlg::Slice => self.reassign_cols_slice(transitions, rng), } @@ -392,10 +387,11 @@ impl State { let p = (k as f64).recip(); ftrs.drain(..).for_each(|mut ftr| { ftr.set_id(self.n_cols()); - self.asgn.push_unassigned(); + self.asgn_mut().push_unassigned(); // insert into random existing view let view_ix = pflip(&vec![p; k], 1, &mut rng)[0]; - self.asgn.reassign(self.n_cols(), view_ix); + let n_cols = self.n_cols(); + self.asgn_mut().reassign(n_cols, view_ix); self.views[view_ix].insert_feature(ftr, &mut rng); }) } @@ -411,7 +407,7 @@ impl State { &self, m: usize, counter_start: usize, - draw_alpha: bool, + draw_process_params: bool, rng: &mut R, ) -> (BTreeMap, Vec) { let mut seeds = Vec::with_capacity(m); @@ -420,22 +416,19 @@ impl State { let seed: u64 = rng.gen(); // assignment for a hypothetical singleton view - let asgn_bldr = AssignmentBuilder::new(self.n_rows()) - .with_prior(self.view_alpha_prior.clone()) - .with_seed(seed); - - // If we do not want to draw a view alpha, take an existing one from the - // first view. This covers the case were we set the view alphas and - // never transitions them, for example if we are doing geweke on a - // subset of transitions. - let tmp_asgn = if draw_alpha { - asgn_bldr - } else { - let alpha = self.views[0].asgn.alpha; - asgn_bldr.with_alpha(alpha) - } - .build() - .unwrap(); + let asgn_bldr = + AssignmentBuilder::new(self.n_rows()).with_seed(seed); + // If we do not want to draw a view process params, take an + // existing process from the first view. This covers the case + // where we set the view process params and never transitions + // them, for example if we are doing geweke on a subset of + // transitions. + let mut process = self.views[0].prior_process.process.clone(); + if draw_process_params { + process.reset_params(rng); + }; + let tmp_asgn = + asgn_bldr.with_prior_process(process).build().unwrap(); seeds.push(seed); @@ -460,20 +453,24 @@ impl State { // `m` parameter is the number of samples for the integration. let m: usize = 1; // TODO: Should this be a parameter in ColAssignAlg? let col_ix = ftr.id(); + let n_cats = self.asgn().n_cats; - // crp alpha divided by the number of MC samples - let a_part = (self.asgn.alpha / m as f64).ln(); + // singletone weight divided by the number of MC samples + let a_part = self.prior_process.process.ln_singleton_weight(n_cats) + - (m as f64).ln(); // score for each view. We will push the singleton view probabilities // later - let mut logps = self.asgn.log_dirvec(false); + let mut logps = (0..n_cats) + .map(|k| self.prior_process.process.ln_gibbs_weight(k)) + .collect::>(); // maintain a vec that holds just the likelihoods let mut ftr_logps: Vec = Vec::with_capacity(logps.len()); // TODO: might be faster with an iterator? for (ix, view) in self.views.iter().enumerate() { - let lp = ftr.asgn_score(&view.asgn); + let lp = ftr.asgn_score(view.asgn()); ftr_logps.push(lp); logps[ix] += lp; } @@ -511,7 +508,7 @@ impl State { // we max the new view index to n_views let v_new = v_new.min(n_views); - self.asgn.reassign(col_ix, v_new); + self.asgn_mut().reassign(col_ix, v_new); self.views[v_new].insert_feature(ftr, rng); logp_out } @@ -546,7 +543,7 @@ impl State { // random order let draw_alpha = transitions .iter() - .any(|&t| t == StateTransition::ViewAlphas); + .any(|&t| t == StateTransition::ViewPriorProcessParams); let mut col_ixs: Vec = (0..self.n_cols()).collect(); col_ixs.shuffle(rng); @@ -569,9 +566,9 @@ impl State { // Check if we're drawing view alpha. If not, we use the user-specified // alpha value for all temporary, singleton assignments - let draw_alpha = transitions + let draw_process_params = transitions .iter() - .any(|&t| t == StateTransition::ViewAlphas); + .any(|&t| t == StateTransition::ViewPriorProcessParams); // determine the number of columns for which to pre-compute transition // probabilities @@ -595,7 +592,9 @@ impl State { // The partial alpha required for the singleton columns. Since we have // `m` singletons to try, we have to divide alpha by m so the singleton // proposal as a whole has the correct mass - let a_part = (self.asgn.alpha / m as f64).ln(); + let n_views = self.n_views(); + let a_part = self.prior_process.process.ln_singleton_weight(n_views) + / (m as f64).ln(); for _ in 0..n_batches { // Number of views at the start of the pre-computation @@ -612,14 +611,14 @@ impl State { .map(|(col_ix, mut t_rng)| { // let mut logps = vec![0_f64; n_views]; - let view_ix = self.asgn.asgn[col_ix]; + let view_ix = self.asgn().asgn[col_ix]; let mut logps: Vec = self .views .iter() .map(|view| { // TODO: we can use Feature::score instead of asgn_score // when the view index is this_view_ix - self.feature(col_ix).asgn_score(&view.asgn) + self.feature(col_ix).asgn_score(view.asgn()) }) .collect(); @@ -627,7 +626,7 @@ impl State { let (tmp_asgns, tmp_asgn_seeds) = self.create_tmp_assigns( m, self.n_views(), - draw_alpha, + draw_process_params, &mut t_rng, ); @@ -640,13 +639,13 @@ impl State { (col_ix, view_ix, logps, tmp_asgn_seeds) }) - .collect::>(); + .collect::, Vec)>>(); for _ in 0..pre_comps.len() { let (col_ix, this_view_ix, mut logps, seeds) = pre_comps.pop().unwrap(); - let is_singleton = self.asgn.counts[this_view_ix] == 1; + let is_singleton = self.asgn().counts[this_view_ix] == 1; let n_views = self.n_views(); logps.iter_mut().take(n_views).enumerate().for_each( @@ -654,7 +653,7 @@ impl State { // add the CRP component to the log likelihood. We must // remove the contribution to the counts of the current // column. - let ct = self.asgn.counts[k] as f64; + let ct = self.asgn().counts[k] as f64; let ln_ct = if k == this_view_ix { // Note that if ct == 1 this is a singleton in which // case the CRP component will be log(0), which @@ -670,20 +669,6 @@ impl State { }, ); - // // New views have appeared since we pre-computed - // let logp_views = logps.len() - seeds.len(); - // if n_views > logp_views { - // let ftr = self.feature(col_ix); - // for view_ix in logp_views..n_views { - // let asgn = &self.views[view_ix].asgn; - // let ln_counts = (self.asgn.counts[view_ix] as f64).ln(); - // let logp = ftr.asgn_score(asgn) + ln_counts; - - // // insert the new logps right before the singleton logps - // logps.insert(view_ix, logp); - // } - // } - let mut v_new = ln_pflip(&logps, 1, false, rng)[0]; if v_new != this_view_ix { @@ -691,18 +676,17 @@ impl State { // Moved to a singleton let seed_ix = v_new - n_views; let seed = seeds[seed_ix]; - let asgn_builder = - AssignmentBuilder::new(self.n_rows()) - .with_prior(self.view_alpha_prior.clone()) - .with_seed(seed); - - let tmp_asgn = if draw_alpha { - asgn_builder - } else { - asgn_builder.with_alpha(self.asgn.alpha) - } - .build() - .unwrap(); + let asgn_bldr = AssignmentBuilder::new(self.n_rows()) + .with_seed(seed); + let mut process = + self.views[0].prior_process.process.clone(); + if draw_process_params { + process.reset_params(rng); + }; + let tmp_asgn = asgn_bldr + .with_prior_process(process) + .build() + .unwrap(); let new_view = view::Builder::from_assignment(tmp_asgn) .seed_from_rng(&mut rng) @@ -715,7 +699,7 @@ impl State { pre_comps.iter_mut().for_each( |(col_ix, _, ref mut logps, _)| { let logp = self.feature(*col_ix).asgn_score( - &self.views.last().unwrap().asgn, + self.views.last().unwrap().asgn(), ); logps.insert(n_views, logp); }, @@ -749,7 +733,7 @@ impl State { // some reason, Engine::insert_data requires the column to be // rebuilt... let ftr = self.extract_ftr(col_ix); - self.asgn.reassign(col_ix, v_new); + self.asgn_mut().reassign(col_ix, v_new); self.views[v_new].insert_feature(ftr, rng); } } @@ -769,16 +753,16 @@ impl State { let draw_alpha = transitions .iter() - .any(|&t| t == StateTransition::ViewAlphas); + .any(|&t| t == StateTransition::ViewPriorProcessParams); self.resample_weights(true, rng); self.append_empty_view(draw_alpha, rng); let log_weights: Vec = self.weights.iter().map(|w| w.ln()).collect(); - let n_cats = self.asgn.n_cats + 1; + let n_cats = self.asgn().n_cats + 1; let mut ftrs: Vec = Vec::with_capacity(n_cols); - for (i, &v) in self.asgn.asgn.iter().enumerate() { + for (i, &v) in self.prior_process.asgn.asgn.iter().enumerate() { ftrs.push( self.views[v].remove_feature(i).expect("Feature missing"), ); @@ -792,7 +776,7 @@ impl State { .iter() .enumerate() .map(|(v, view)| { - ftr.asgn_score(&view.asgn) + log_weights[v] + ftr.asgn_score(view.asgn()) + log_weights[v] }) .collect::>() }) @@ -813,8 +797,6 @@ impl State { transitions: &[StateTransition], rng: &mut R, ) { - use crate::misc::sb_slice_extend; - if self.n_cols() == 1 { return; } @@ -824,13 +806,14 @@ impl State { let n_cols = self.n_cols(); let weights: Vec = { - let dirvec = self.asgn.dirvec(true); + let dirvec = self.prior_process.weight_vec(true); + // FIXME: this only works for Dirichlet process! let dir = Dirichlet::new(dirvec).unwrap(); dir.draw(rng) }; let us: Vec = self - .asgn + .asgn() .asgn .iter() .map(|&zi| { @@ -845,14 +828,16 @@ impl State { .fold(1.0, |umin, &ui| if ui < umin { ui } else { umin }); // Variable shadowing - let weights = - sb_slice_extend(weights, self.asgn.alpha, u_star, rng).unwrap(); + let weights = self + .prior_process + .process + .slice_sb_extend(weights, u_star, rng); let n_new_views = weights.len() - self.weights.len(); let n_views = weights.len(); let mut ftrs: Vec = Vec::with_capacity(n_cols); - for (i, &v) in self.asgn.asgn.iter().enumerate() { + for (i, &v) in self.prior_process.asgn.iter().enumerate() { ftrs.push( self.views[v].remove_feature(i).expect("Feature missing"), ); @@ -860,7 +845,7 @@ impl State { let draw_alpha = transitions .iter() - .any(|&t| t == StateTransition::ViewAlphas); + .any(|&t| t == StateTransition::ViewPriorProcessParams); for _ in 0..n_new_views { self.append_empty_view(draw_alpha, rng); } @@ -876,7 +861,7 @@ impl State { .zip(weights.iter()) .map(|(view, w)| { if w >= ui { - ftr.asgn_score(&view.asgn) + ftr.asgn_score(view.asgn()) } else { NEG_INFINITY } @@ -906,7 +891,7 @@ impl State { #[inline] pub fn datum(&self, row_ix: usize, col_ix: usize) -> Datum { - let view_ix = self.asgn.asgn[col_ix]; + let view_ix = self.asgn().asgn[col_ix]; self.views[view_ix].datum(row_ix, col_ix).unwrap() } @@ -915,7 +900,8 @@ impl State { add_empty_component: bool, rng: &mut R, ) { - let dirvec = self.asgn.dirvec(add_empty_component); + // FIXME: this only works for Dirichlet! + let dirvec = self.prior_process.weight_vec(add_empty_component); let dir = Dirichlet::new(dirvec).unwrap(); self.weights = dir.draw(rng) } @@ -938,11 +924,12 @@ impl State { } } - self.asgn + self.asgn_mut() .set_asgn(new_asgn_vec) .expect("new_asgn_vec is invalid"); - for (ftr, &v) in ftrs.drain(..).zip(self.asgn.asgn.iter()) { + for (ftr, &v) in ftrs.drain(..).zip(self.prior_process.asgn.asgn.iter()) + { self.views[v].insert_feature(ftr, rng) } } @@ -950,20 +937,20 @@ impl State { /// Extract a feature from its view, unassign it, and drop the view if it /// is a singleton. fn extract_ftr(&mut self, ix: usize) -> ColModel { - let v = self.asgn.asgn[ix]; - let ct = self.asgn.counts[v]; + let v = self.asgn().asgn[ix]; + let ct = self.asgn().counts[v]; let ftr = self.views[v].remove_feature(ix).unwrap(); if ct == 1 { self.drop_view(v); } - self.asgn.unassign(ix); + self.asgn_mut().unassign(ix); ftr } pub fn component(&self, row_ix: usize, col_ix: usize) -> Component { - let view_ix = self.asgn.asgn[col_ix]; + let view_ix = self.asgn().asgn[col_ix]; let view = &self.views[view_ix]; - let k = view.asgn.asgn[row_ix]; + let k = view.asgn().asgn[row_ix]; view.ftrs[&col_ix].component(k) } @@ -976,21 +963,18 @@ impl State { fn append_empty_view( &mut self, - draw_alpha: bool, // draw the view CRP alpha from the prior + draw_process_params: bool, rng: &mut R, ) { - let asgn_builder = AssignmentBuilder::new(self.n_rows()) - .with_prior(self.view_alpha_prior.clone()); + let asgn_bldr = + AssignmentBuilder::new(self.n_rows()).with_seed(rng.gen()); - let asgn_builder = if draw_alpha { - asgn_builder - } else { - // The alphas should all be the same, so just take one from another view - let alpha = self.views[0].asgn.alpha; - asgn_builder.with_alpha(alpha) + let mut process = self.views[0].prior_process.process.clone(); + if draw_process_params { + process.reset_params(rng); }; - let asgn = asgn_builder.seed_from_rng(rng).build().unwrap(); + let asgn = asgn_bldr.with_prior_process(process).build().unwrap(); let view = view::Builder::from_assignment(asgn) .seed_from_rng(rng) @@ -1001,7 +985,7 @@ impl State { #[inline] pub fn impute_bounds(&self, col_ix: usize) -> Option<(f64, f64)> { - let view_ix = self.asgn.asgn[col_ix]; + let view_ix = self.asgn().asgn[col_ix]; self.views[view_ix].ftrs[&col_ix].impute_bounds() } @@ -1021,7 +1005,7 @@ impl State { row_ix: usize, col_ix: usize, ) -> Option { - let view_ix = self.asgn.asgn[col_ix]; + let view_ix = self.asgn().asgn[col_ix]; self.views[view_ix].remove_datum(row_ix, col_ix) } @@ -1029,7 +1013,7 @@ impl State { if x.is_missing() { self.remove_datum(row_ix, col_ix); } else { - let view_ix = self.asgn.asgn[col_ix]; + let view_ix = self.asgn().asgn[col_ix]; self.views[view_ix].insert_datum(row_ix, col_ix, x); } } @@ -1047,11 +1031,11 @@ impl State { // Delete a column from the table pub fn del_col(&mut self, ix: usize, rng: &mut R) { - let zi = self.asgn.asgn[ix]; - let is_singleton = self.asgn.counts[zi] == 1; + let zi = self.asgn().asgn[ix]; + let is_singleton = self.asgn().counts[zi] == 1; - self.asgn.unassign(ix); - self.asgn.asgn.remove(ix); + self.asgn_mut().unassign(ix); + self.asgn_mut().asgn.remove(ix); if is_singleton { self.views.remove(zi); @@ -1063,7 +1047,7 @@ impl State { // self.n_cols counts the number of features in views, so this should be // accurate after the remove step above for i in ix..self.n_cols() { - let zi = self.asgn.asgn[i]; + let zi = self.asgn().asgn[i]; let mut ftr = self.views[zi].remove_feature(i + 1).unwrap(); ftr.set_id(i); self.views[zi].ftrs.insert(ftr.id(), ftr); @@ -1106,8 +1090,8 @@ impl State { } pub fn col_weights(&self, col_ix: usize) -> Vec { - let view_ix = self.asgn.asgn[col_ix]; - self.views[view_ix].asgn.weights() + let view_ix = self.asgn().asgn[col_ix]; + self.views[view_ix].prior_process.weight_vec(false) } } @@ -1127,10 +1111,32 @@ pub struct StateGewekeSettings { pub cm_types: Vec, /// Which transitions to do pub transitions: Vec, + /// Which prior process to use for the State assignment + pub state_process_type: PriorProcessType, + /// Which prior process to use for the View assignment + pub view_process_type: PriorProcessType, } impl StateGewekeSettings { - pub fn new(n_rows: usize, cm_types: Vec) -> Self { + pub fn new( + n_rows: usize, + cm_types: Vec, + state_process_type: PriorProcessType, + view_process_type: PriorProcessType, + ) -> Self { + use crate::transition::DEFAULT_STATE_TRANSITIONS; + + StateGewekeSettings { + n_cols: cm_types.len(), + n_rows, + cm_types, + transitions: DEFAULT_STATE_TRANSITIONS.into(), + state_process_type, + view_process_type, + } + } + + pub fn new_dirichlet_process(n_rows: usize, cm_types: Vec) -> Self { use crate::transition::DEFAULT_STATE_TRANSITIONS; StateGewekeSettings { @@ -1138,6 +1144,8 @@ impl StateGewekeSettings { n_rows, cm_types, transitions: DEFAULT_STATE_TRANSITIONS.into(), + state_process_type: PriorProcessType::Dirichlet, + view_process_type: PriorProcessType::Dirichlet, } } @@ -1153,10 +1161,10 @@ impl StateGewekeSettings { .any(|t| matches!(t, StateTransition::RowAssignment(_))) } - pub fn do_alpha_transition(&self) -> bool { + pub fn do_process_params_transition(&self) -> bool { self.transitions .iter() - .any(|t| matches!(t, StateTransition::StateAlpha)) + .any(|t| matches!(t, StateTransition::StatePriorProcessParams)) } } @@ -1179,6 +1187,7 @@ impl GewekeResampleData for State { .iter() .filter_map(|&st| st.try_into().ok()) .collect(), + process_type: s.view_process_type, }; for view in &mut self.views { view.geweke_resample_data(Some(&view_settings), &mut rng); @@ -1243,16 +1252,17 @@ impl GewekeSummarize for State { .iter() .filter_map(|&st| st.try_into().ok()) .collect(), + process_type: settings.view_process_type, }; GewekeStateSummary { n_views: if settings.do_col_asgn_transition() { - Some(self.asgn.n_cats) + Some(self.asgn().n_cats) } else { None }, - alpha: if settings.do_alpha_transition() { - Some(self.asgn.alpha) + alpha: if settings.do_process_params_transition() { + Some(self.prior_process.alpha().unwrap()) } else { None }, @@ -1277,6 +1287,8 @@ impl GewekeModel for State { settings: &StateGewekeSettings, mut rng: &mut impl Rng, ) -> Self { + use lace_stats::prior_process::Dirichlet as PDirichlet; + let has_transition = |t: StateTransition, s: &StateGewekeSettings| { s.transitions.iter().any(|&ti| ti == t) }; @@ -1285,11 +1297,11 @@ impl GewekeModel for State { let do_ftr_prior_transition = has_transition(StateTransition::FeaturePriors, settings); - let do_state_alpha_transition = - has_transition(StateTransition::StateAlpha, settings); + let do_state_process_transition = + has_transition(StateTransition::StatePriorProcessParams, settings); - let do_view_alphas_transition = - has_transition(StateTransition::ViewAlphas, settings); + let do_view_process_transition = + has_transition(StateTransition::ViewPriorProcessParams, settings); let do_col_asgn_transition = settings.do_col_asgn_transition(); let do_row_asgn_transition = settings.do_row_asgn_transition(); @@ -1303,40 +1315,58 @@ impl GewekeModel for State { let n_cols = ftrs.len(); - let asgn_bldr = if do_col_asgn_transition { - AssignmentBuilder::new(n_cols) - } else { - AssignmentBuilder::new(n_cols).flat() - } - .seed_from_rng(&mut rng) - .with_geweke_prior(); + let state_prior_process = { + let process = if do_state_process_transition { + Process::Dirichlet(PDirichlet::from_prior( + geweke_alpha_prior(), + &mut rng, + )) + } else { + Process::Dirichlet(PDirichlet { + prior: geweke_alpha_prior(), + alpha: 1.0, + }) + }; - let asgn = if do_state_alpha_transition { - asgn_bldr.build().unwrap() - } else { - asgn_bldr.with_alpha(1.0).build().unwrap() + let asgn = if do_col_asgn_transition { + AssignmentBuilder::new(n_cols) + } else { + AssignmentBuilder::new(n_cols).flat() + } + .with_prior_process(process.clone()) + .seed_from_rng(&mut rng) + .build() + .unwrap(); + + PriorProcess { process, asgn } }; let view_asgn_bldr = if do_row_asgn_transition { - if do_view_alphas_transition { - AssignmentBuilder::new(settings.n_rows) - } else { - AssignmentBuilder::new(settings.n_rows).with_alpha(1.0) - } - } else if do_view_alphas_transition { - AssignmentBuilder::new(settings.n_rows).flat() - } else { AssignmentBuilder::new(settings.n_rows) - .flat() - .with_alpha(1.0) - } - .with_geweke_prior(); + } else { + AssignmentBuilder::new(settings.n_rows).flat() + }; - let mut views: Vec = (0..asgn.n_cats) + let mut views: Vec = (0..state_prior_process.asgn.n_cats) .map(|_| { + // may need to redraw the process params from the prior many + // times, so Process construction must be a generating function + let process = if do_view_process_transition { + Process::Dirichlet(PDirichlet::from_prior( + geweke_alpha_prior(), + &mut rng, + )) + } else { + Process::Dirichlet(PDirichlet { + prior: geweke_alpha_prior(), + alpha: 1.0, + }) + }; + let asgn = view_asgn_bldr .clone() .seed_from_rng(&mut rng) + .with_prior_process(process) .build() .unwrap(); view::Builder::from_assignment(asgn) @@ -1345,22 +1375,17 @@ impl GewekeModel for State { }) .collect(); - for (&v, ftr) in asgn.asgn.iter().zip(ftrs.drain(..)) { + for (&v, ftr) in + state_prior_process.asgn.asgn.iter().zip(ftrs.drain(..)) + { views[v].geweke_init_feature(ftr, &mut rng); } - let view_alpha_prior = views[0].asgn.prior.clone(); - - let weights = asgn.weights(); State { views, - asgn, - weights, - view_alpha_prior, - loglike: 0.0, - log_prior: 0.0, - log_state_alpha_prior: 0.0, - log_view_alpha_prior: 0.0, + weights: state_prior_process.weight_vec(false), + prior_process: state_prior_process, + score: StateScoreComponents::default(), diagnostics: StateDiagnostics::default(), } } @@ -1385,7 +1410,6 @@ mod test { use super::*; use crate::state::Builder; - use approx::*; use lace_codebook::ColType; #[test] @@ -1403,7 +1427,7 @@ mod test { .build() .expect("Failed to build state"); - assert_eq!(state.asgn.asgn, vec![0, 0, 1, 1]); + assert_eq!(state.asgn().asgn, vec![0, 0, 1, 1]); let ftr = state.extract_ftr(1); @@ -1411,9 +1435,9 @@ mod test { assert_eq!(state.views[0].ftrs.len(), 1); assert_eq!(state.views[1].ftrs.len(), 2); - assert_eq!(state.asgn.asgn, vec![0, usize::max_value(), 1, 1]); - assert_eq!(state.asgn.counts, vec![1, 2]); - assert_eq!(state.asgn.n_cats, 2); + assert_eq!(state.asgn().asgn, vec![0, usize::max_value(), 1, 1]); + assert_eq!(state.asgn().counts, vec![1, 2]); + assert_eq!(state.asgn().n_cats, 2); assert_eq!(ftr.id(), 1); } @@ -1433,16 +1457,16 @@ mod test { .build() .expect("Failed to build state"); - assert_eq!(state.asgn.asgn, vec![0, 1, 1]); + assert_eq!(state.asgn().asgn, vec![0, 1, 1]); let ftr = state.extract_ftr(0); assert_eq!(state.n_views(), 1); assert_eq!(state.views[0].ftrs.len(), 2); - assert_eq!(state.asgn.asgn, vec![usize::max_value(), 0, 0]); - assert_eq!(state.asgn.counts, vec![2]); - assert_eq!(state.asgn.n_cats, 1); + assert_eq!(state.asgn().asgn, vec![usize::max_value(), 0, 0]); + assert_eq!(state.asgn().counts, vec![2]); + assert_eq!(state.asgn().n_cats, 1); assert_eq!(ftr.id(), 0); } @@ -1521,37 +1545,24 @@ mod test { for _ in 0..n_runs { let state = State::geweke_from_prior(settings, &mut rng); - // 1. Check the assignment prior - assert_relative_eq!(state.asgn.prior.shape(), 3.0, epsilon = 1E-12); - assert_relative_eq!(state.asgn.prior.rate(), 3.0, epsilon = 1E-12); // Column assignment is not flat - if state.asgn.asgn.iter().any(|&zi| zi != 0) { + if state.asgn().asgn.iter().any(|&zi| zi != 0) { cols_always_flat = false; } - if !basically_one(state.asgn.alpha) { + if !basically_one(state.prior_process.alpha().unwrap()) { state_alpha_1 = false; } // 2. Check the column priors for view in state.views.iter() { // Check the view assignment priors - assert_relative_eq!( - view.asgn.prior.shape(), - 3.0, - epsilon = 1E-12 - ); - assert_relative_eq!( - view.asgn.prior.rate(), - 3.0, - epsilon = 1E-12 - ); // Check the view assignments aren't flat - if view.asgn.asgn.iter().any(|&zi| zi != 0) { + if view.asgn().asgn.iter().any(|&zi| zi != 0) { rows_always_flat = false; } - if !basically_one(view.asgn.alpha) { + if !basically_one(view.prior_process.alpha().unwrap()) { view_alphas_1 = false; } } @@ -1567,8 +1578,10 @@ mod test { #[test] fn geweke_from_prior_all_transitions() { - let settings = - StateGewekeSettings::new(50, vec![FType::Continuous; 40]); + let settings = StateGewekeSettings::new_dirichlet_process( + 50, + vec![FType::Continuous; 40], + ); let mut rng = rand::thread_rng(); let result = test_asgn_flatness(&settings, 10, &mut rng); assert!(!result.rows_always_flat); @@ -1585,10 +1598,12 @@ mod test { cm_types: vec![FType::Continuous; 20], transitions: vec![ StateTransition::ColumnAssignment(ColAssignAlg::FiniteCpu), - StateTransition::StateAlpha, - StateTransition::ViewAlphas, + StateTransition::StatePriorProcessParams, + StateTransition::ViewPriorProcessParams, StateTransition::FeaturePriors, ], + state_process_type: PriorProcessType::Dirichlet, + view_process_type: PriorProcessType::Dirichlet, }; let mut rng = rand::thread_rng(); let result = test_asgn_flatness(&settings, 100, &mut rng); @@ -1606,10 +1621,12 @@ mod test { cm_types: vec![FType::Continuous; 20], transitions: vec![ StateTransition::RowAssignment(RowAssignAlg::FiniteCpu), - StateTransition::StateAlpha, - StateTransition::ViewAlphas, + StateTransition::StatePriorProcessParams, + StateTransition::ViewPriorProcessParams, StateTransition::FeaturePriors, ], + state_process_type: PriorProcessType::Dirichlet, + view_process_type: PriorProcessType::Dirichlet, }; let mut rng = rand::thread_rng(); let result = test_asgn_flatness(&settings, 100, &mut rng); @@ -1626,10 +1643,12 @@ mod test { n_rows: 50, cm_types: vec![FType::Continuous; 20], transitions: vec![ - StateTransition::StateAlpha, - StateTransition::ViewAlphas, + StateTransition::StatePriorProcessParams, + StateTransition::ViewPriorProcessParams, StateTransition::FeaturePriors, ], + state_process_type: PriorProcessType::Dirichlet, + view_process_type: PriorProcessType::Dirichlet, }; let mut rng = rand::thread_rng(); let result = test_asgn_flatness(&settings, 100, &mut rng); @@ -1650,6 +1669,8 @@ mod test { StateTransition::RowAssignment(RowAssignAlg::FiniteCpu), StateTransition::FeaturePriors, ], + state_process_type: PriorProcessType::Dirichlet, + view_process_type: PriorProcessType::Dirichlet, }; let mut rng = rand::thread_rng(); let result = test_asgn_flatness(&settings, 100, &mut rng); @@ -1705,6 +1726,6 @@ mod test { assert_eq!(state.n_views(), 1); assert_eq!(state.n_cols(), 20); - assert!(state.asgn.asgn.iter().all(|&z| z == 0)) + assert!(state.asgn().asgn.iter().all(|&z| z == 0)) } } diff --git a/lace/lace_cc/src/state/builder.rs b/lace/lace_cc/src/state/builder.rs index 5be95e05..fdc920ed 100644 --- a/lace/lace_cc/src/state/builder.rs +++ b/lace/lace_cc/src/state/builder.rs @@ -3,6 +3,7 @@ use lace_data::SparseContainer; use lace_stats::prior::csd::CsdHyper; use lace_stats::prior::nix::NixHyper; use lace_stats::prior::pg::PgHyper; +use lace_stats::prior_process::Process; use lace_stats::rv::dist::{ Categorical, Gamma, Gaussian, NormalInvChiSquared, Poisson, }; @@ -11,7 +12,7 @@ use rand::SeedableRng; use rand_xoshiro::Xoshiro256Plus; use thiserror::Error; -use crate::assignment::AssignmentBuilder; +use crate::builders::AssignmentBuilder; use crate::feature::{ColModel, Column, Feature}; use crate::state::State; @@ -24,6 +25,7 @@ pub struct Builder { pub col_configs: Option>, pub ftrs: Option>, pub seed: Option, + pub prior_process: Option, } #[derive(Debug, Error, PartialEq)] @@ -106,6 +108,12 @@ impl Builder { self } + #[must_use] + pub fn prior_process(mut self, process: Process) -> Self { + self.prior_process = Some(process); + self + } + /// Build the `State` pub fn build(self) -> Result { let mut rng = match self.seed { @@ -183,12 +191,21 @@ impl Builder { assert_eq!(ftrs.len(), 0); + let process = self.prior_process.unwrap_or_else(|| { + Process::Dirichlet( + lace_stats::prior_process::Dirichlet::from_prior( + lace_consts::state_alpha_prior(), + &mut rng, + ), + ) + }); + let asgn = AssignmentBuilder::from_vec(col_asgn) .seed_from_rng(&mut rng) .build() .unwrap(); - let alpha_prior: Gamma = lace_consts::state_alpha_prior(); - Ok(State::new(views, asgn, alpha_prior)) + + Ok(State::new(views, asgn, process)) } } @@ -313,15 +330,15 @@ mod tests { .expect("Failed to build state") }; - assert_eq!(state_1.asgn.asgn, state_2.asgn.asgn); + assert_eq!(state_1.asgn().asgn, state_2.asgn().asgn); for (view_1, view_2) in state_1.views.iter().zip(state_2.views.iter()) { - assert_eq!(view_1.asgn.asgn, view_2.asgn.asgn); + assert_eq!(view_1.asgn().asgn, view_2.asgn().asgn); } } #[test] - fn n_rows_overriden_by_features() { + fn n_rows_overridden_by_features() { let n_cols = 5; let col_models = { let state = Builder::new() diff --git a/lace/lace_cc/src/transition.rs b/lace/lace_cc/src/transition.rs index bfb5a65e..fc38236a 100644 --- a/lace/lace_cc/src/transition.rs +++ b/lace/lace_cc/src/transition.rs @@ -7,9 +7,9 @@ use crate::ParseError; pub const DEFAULT_STATE_TRANSITIONS: [StateTransition; 5] = [ StateTransition::ColumnAssignment(ColAssignAlg::Slice), - StateTransition::StateAlpha, + StateTransition::StatePriorProcessParams, StateTransition::RowAssignment(RowAssignAlg::Slice), - StateTransition::ViewAlphas, + StateTransition::ViewPriorProcessParams, StateTransition::FeaturePriors, ]; @@ -19,7 +19,7 @@ pub enum ViewTransition { /// Reassign rows to categories RowAssignment(RowAssignAlg), /// Update the alpha (discount) parameters on the CRP - Alpha, + PriorProcessParams, /// Update the feature (column) prior parameters FeaturePriors, /// Update the parameters in the feature components. This is usually done @@ -40,10 +40,10 @@ pub enum StateTransition { RowAssignment(RowAssignAlg), /// Update the alpha (discount) parameter on the column-to-views CRP #[serde(rename = "state_alpha")] - StateAlpha, + StatePriorProcessParams, /// Update the alpha (discount) parameters on the row-to-categories CRP #[serde(rename = "view_alphas")] - ViewAlphas, + ViewPriorProcessParams, /// Update the feature (column) prior parameters #[serde(rename = "feature_priors")] FeaturePriors, @@ -60,7 +60,9 @@ impl TryFrom for ViewTransition { fn try_from(st: StateTransition) -> Result { match st { - StateTransition::ViewAlphas => Ok(ViewTransition::Alpha), + StateTransition::ViewPriorProcessParams => { + Ok(ViewTransition::PriorProcessParams) + } StateTransition::RowAssignment(alg) => { Ok(ViewTransition::RowAssignment(alg)) } diff --git a/lace/lace_cc/src/view.rs b/lace/lace_cc/src/view.rs index 6ba9f346..80f03939 100644 --- a/lace/lace_cc/src/view.rs +++ b/lace/lace_cc/src/view.rs @@ -3,7 +3,11 @@ use std::f64::NEG_INFINITY; use lace_data::{Datum, FeatureData}; use lace_geweke::{GewekeModel, GewekeResampleData, GewekeSummarize}; -use lace_stats::rv::dist::{Dirichlet, Gamma}; +use lace_stats::assignment::Assignment; +use lace_stats::prior_process::{ + PriorProcess, PriorProcessT, PriorProcessType, Process, +}; +use lace_stats::rv::dist::Dirichlet; use lace_stats::rv::misc::ln_pflip; use lace_stats::rv::traits::Rv; use lace_utils::{logaddexp, unused_components, Matrix, Shape}; @@ -13,7 +17,7 @@ use serde::{Deserialize, Serialize}; // use crate::cc::feature::geweke::{gen_geweke_col_models, ColumnGewekeSettings}; use crate::alg::RowAssignAlg; -use crate::assignment::{Assignment, AssignmentBuilder}; +use crate::builders::AssignmentBuilder; use crate::feature::geweke::GewekeColumnSummary; use crate::feature::geweke::{gen_geweke_col_models, ColumnGewekeSettings}; use crate::feature::{ColModel, FType, Feature}; @@ -30,7 +34,7 @@ pub struct View { /// A Map of features indexed by the feature ID pub ftrs: BTreeMap, /// The assignment of rows to categories - pub asgn: Assignment, + pub prior_process: PriorProcess, /// The weights of each category pub weights: Vec, } @@ -38,7 +42,7 @@ pub struct View { /// Builds a `View` pub struct Builder { n_rows: usize, - alpha_prior: Option, + process: Option, asgn: Option, ftrs: Option>, seed: Option, @@ -50,7 +54,7 @@ impl Builder { Builder { n_rows, asgn: None, - alpha_prior: None, + process: None, ftrs: None, seed: None, } @@ -63,7 +67,7 @@ impl Builder { Builder { n_rows: asgn.len(), asgn: Some(asgn), - alpha_prior: None, // is ignored in asgn set + process: None, // is ignored in asgn set ftrs: None, seed: None, } @@ -71,13 +75,9 @@ impl Builder { /// Put a custom `Gamma` prior on the CRP alpha #[must_use] - pub fn alpha_prior(mut self, alpha_prior: Gamma) -> Self { - if self.asgn.is_some() { - panic!("Cannot add alpha_prior once Assignment added"); - } else { - self.alpha_prior = Some(alpha_prior); - self - } + pub fn prior_process(mut self, process: Process) -> Self { + self.process = Some(process); + self } /// Add features to the `View` @@ -103,30 +103,32 @@ impl Builder { /// Build the `View` and consume the builder pub fn build(self) -> View { + use lace_consts::general_alpha_prior; + use lace_stats::prior_process::Dirichlet; + let mut rng = match self.seed { Some(seed) => Xoshiro256Plus::seed_from_u64(seed), None => Xoshiro256Plus::from_entropy(), }; + let process = self.process.unwrap_or_else(|| { + Process::Dirichlet(Dirichlet::from_prior( + general_alpha_prior(), + &mut rng, + )) + }); + let asgn = match self.asgn { Some(asgn) => asgn, - None => { - if self.alpha_prior.is_none() { - AssignmentBuilder::new(self.n_rows) - .seed_from_rng(&mut rng) - .build() - .unwrap() - } else { - AssignmentBuilder::new(self.n_rows) - .with_prior(self.alpha_prior.unwrap()) - .seed_from_rng(&mut rng) - .build() - .unwrap() - } - } + None => process.draw_assignment(self.n_rows, &mut rng), + }; + + let prior_process = PriorProcess { + process, + asgn: asgn.clone(), }; - let weights = asgn.weights(); + let weights = prior_process.weight_vec(false); let mut ftr_tree = BTreeMap::new(); if let Some(mut ftrs) = self.ftrs { for mut ftr in ftrs.drain(..) { @@ -137,17 +139,25 @@ impl Builder { View { ftrs: ftr_tree, - asgn, + prior_process, weights, } } } impl View { + pub fn asgn(&self) -> &Assignment { + &self.prior_process.asgn + } + + pub fn asgn_mut(&mut self) -> &mut Assignment { + &mut self.prior_process.asgn + } + /// The number of rows in the `View` #[inline] pub fn n_rows(&self) -> usize { - self.asgn.asgn.len() + self.asgn().len() } /// The number of columns in the `View` @@ -171,19 +181,13 @@ impl View { /// The number of categories #[inline] pub fn n_cats(&self) -> usize { - self.asgn.n_cats - } - - /// The current value of the CPR alpha parameter - #[inline] - pub fn alpha(&self) -> f64 { - self.asgn.alpha + self.asgn().n_cats } // Extend the columns by a number of cells, increasing the total number of // rows. The added entries will be empty. pub fn extend_cols(&mut self, n_rows: usize) { - (0..n_rows).for_each(|_| self.asgn.push_unassigned()); + (0..n_rows).for_each(|_| self.asgn_mut().push_unassigned()); self.ftrs.values_mut().for_each(|ftr| { (0..n_rows).for_each(|_| ftr.append_datum(Datum::Missing)) }) @@ -195,7 +199,7 @@ impl View { row_ix: usize, col_ix: usize, ) -> Option { - let k = self.asgn.asgn[row_ix]; + let k = self.asgn().asgn[row_ix]; let is_assigned = k != usize::max_value(); if is_assigned { @@ -212,7 +216,7 @@ impl View { return; } - let k = self.asgn.asgn[row_ix]; + let k = self.asgn().asgn[row_ix]; let is_assigned = k != usize::max_value(); let ftr = self.ftrs.get_mut(&col_ix).unwrap(); @@ -267,8 +271,8 @@ impl View { ) { for transition in transitions { match transition { - ViewTransition::Alpha => { - self.update_alpha(&mut rng); + ViewTransition::PriorProcessParams => { + self.update_prior_process_params(&mut rng); } ViewTransition::RowAssignment(alg) => { self.reassign(*alg, &mut rng); @@ -287,7 +291,7 @@ impl View { pub fn default_transitions() -> Vec { vec![ ViewTransition::RowAssignment(RowAssignAlg::FiniteCpu), - ViewTransition::Alpha, + ViewTransition::PriorProcessParams, ViewTransition::FeaturePriors, ] } @@ -365,13 +369,13 @@ impl View { // it does not explicitly update the weights. Non-updated weights means // wrong probabilities. To avoid this, we set the weights by the // partition here. - self.weights = self.asgn.weights(); - debug_assert!(self.asgn.validate().is_valid()); + self.weights = self.prior_process.weight_vec(false); + debug_assert!(self.asgn().validate().is_valid()); } /// Use the finite approximation (on the CPU) to reassign the rows pub fn reassign_rows_finite_cpu(&mut self, mut rng: &mut impl Rng) { - let n_cats = self.asgn.n_cats; + let n_cats = self.n_cats(); let n_rows = self.n_rows(); self.resample_weights(true, &mut rng); @@ -392,17 +396,17 @@ impl View { /// Use the improved slice algorithm to reassign the rows pub fn reassign_rows_slice(&mut self, mut rng: &mut impl Rng) { - use crate::misc::sb_slice_extend; self.resample_weights(false, &mut rng); let weights: Vec = { - let dirvec = self.asgn.dirvec(true); + // FIXME: only works for dirichlet + let dirvec = self.prior_process.weight_vec(true); let dir = Dirichlet::new(dirvec).unwrap(); dir.draw(&mut rng) }; let us: Vec = self - .asgn + .asgn() .asgn .iter() .map(|&zi| { @@ -416,9 +420,10 @@ impl View { us.iter() .fold(1.0, |umin, &ui| if ui < umin { ui } else { umin }); - let weights = - sb_slice_extend(weights, self.asgn.alpha, u_star, &mut rng) - .unwrap(); + let weights = self + .prior_process + .process + .slice_sb_extend(weights, u_star, &mut rng); let n_new_cats = weights.len() - self.weights.len(); let n_cats = weights.len(); @@ -461,7 +466,7 @@ impl View { add_empty_component: bool, mut rng: &mut impl Rng, ) { - let dirvec = self.asgn.dirvec(add_empty_component); + let dirvec = self.prior_process.weight_vec(add_empty_component); let dir = Dirichlet::new(dirvec).unwrap(); self.weights = dir.draw(&mut rng) } @@ -475,8 +480,8 @@ impl View { let i = ixs[0]; let j = ixs[1]; - let zi = self.asgn.asgn[i]; - let zj = self.asgn.asgn[j]; + let zi = self.asgn().asgn[i]; + let zj = self.asgn().asgn[j]; if zi < zj { (i, j, zi, zj) @@ -491,14 +496,15 @@ impl View { assert!(zi < zj); self.sams_merge(i, j, rng); } - debug_assert!(self.asgn.validate().is_valid()); + debug_assert!(self.asgn().validate().is_valid()); } /// MCMC update on the CPR alpha parameter #[inline] - pub fn update_alpha(&mut self, mut rng: &mut impl Rng) -> f64 { - self.asgn - .update_alpha(lace_consts::MH_PRIOR_ITERS, &mut rng) + pub fn update_prior_process_params(&mut self, rng: &mut impl Rng) -> f64 { + self.prior_process.update_params(rng); + // FIXME: should be the new likelihood + 0.0 } /// Insert a new `Feature` into the `View`, but draw the feature @@ -511,8 +517,8 @@ impl View { "Feature {} already in view", id ); - ftr.init_components(self.asgn.n_cats, &mut rng); - ftr.reassign(&self.asgn, &mut rng); + ftr.init_components(self.asgn().n_cats, &mut rng); + ftr.reassign(self.asgn(), &mut rng); self.ftrs.insert(id, ftr); } @@ -530,7 +536,7 @@ impl View { "Feature {} already in view", id ); - ftr.geweke_init(&self.asgn, rng); + ftr.geweke_init(self.asgn(), rng); self.ftrs.insert(id, ftr); } @@ -547,7 +553,7 @@ impl View { "Feature {} already in view", id ); - ftr.reassign(&self.asgn, &mut rng); + ftr.reassign(self.asgn(), &mut rng); self.ftrs.insert(id, ftr); } @@ -570,7 +576,7 @@ impl View { // assignment to preserve canonical order. (0..n).for_each(|_| { self.remove_row(ix); - self.asgn.asgn.remove(ix); + self.asgn_mut().asgn.remove(ix); }); // remove data from features @@ -596,7 +602,7 @@ impl View { #[inline] pub fn refresh_suffstats(&mut self, mut rng: &mut impl Rng) { for ftr in self.ftrs.values_mut() { - ftr.reassign(&self.asgn, &mut rng); + ftr.reassign(&self.prior_process.asgn, &mut rng); } } @@ -615,7 +621,7 @@ impl View { // problem is that I can't iterate on self.asgn then call // self.reinsert_row inside the for_each closure let mut unassigned_rows: Vec = self - .asgn + .asgn() .iter() .enumerate() .filter_map(|(row_ix, &z)| { @@ -640,10 +646,10 @@ impl View { // Remove the row for the purposes of MCMC without deleting its data. #[inline] fn remove_row(&mut self, row_ix: usize) { - let k = self.asgn.asgn[row_ix]; - let is_singleton = self.asgn.counts[k] == 1; + let k = self.asgn().asgn[row_ix]; + let is_singleton = self.asgn().counts[k] == 1; self.forget_row(row_ix, k); - self.asgn.unassign(row_ix); + self.asgn_mut().unassign(row_ix); if is_singleton { self.drop_component(k); @@ -660,25 +666,31 @@ impl View { #[inline] fn reinsert_row(&mut self, row_ix: usize, mut rng: &mut impl Rng) { - let k_new = if self.asgn.n_cats == 0 { + let k_new = if self.asgn().n_cats == 0 { // If empty, assign to category zero debug_assert!(self.ftrs.values().all(|f| f.k() == 0)); self.append_empty_component(&mut rng); 0 } else { // If not empty, do a Gibbs step - let mut logps: Vec = Vec::with_capacity(self.asgn.n_cats + 1); - self.asgn.counts.iter().enumerate().for_each(|(k, &ct)| { + let mut logps: Vec = + Vec::with_capacity(self.asgn().n_cats + 1); + self.asgn().counts.iter().enumerate().for_each(|(k, &ct)| { logps.push( (ct as f64).ln() + self.predictive_score_at(row_ix, k), ); }); - logps.push(self.asgn.alpha.ln() + self.singleton_score(row_ix)); + logps.push( + self.prior_process + .process + .ln_singleton_weight(self.n_cats()) + + self.singleton_score(row_ix), + ); let k_new = ln_pflip(&logps, 1, false, &mut rng)[0]; - if k_new == self.asgn.n_cats { + if k_new == self.n_cats() { self.append_empty_component(&mut rng); } @@ -686,7 +698,7 @@ impl View { }; self.observe_row(row_ix, k_new); - self.asgn.reassign(row_ix, k_new); + self.asgn_mut().reassign(row_ix, k_new); } #[inline] @@ -724,20 +736,20 @@ impl View { } } - self.asgn + self.asgn_mut() .set_asgn(new_asgn_vec) .expect("new asgn is invalid"); self.resample_weights(false, &mut rng); for ftr in self.ftrs.values_mut() { - ftr.reassign(&self.asgn, &mut rng) + ftr.reassign(&self.prior_process.asgn, &mut rng) } } fn set_asgn(&mut self, asgn: Assignment, rng: &mut R) { - self.asgn = asgn; + self.prior_process.asgn = asgn; self.resample_weights(false, rng); for ftr in self.ftrs.values_mut() { - ftr.reassign(&self.asgn, rng) + ftr.reassign(&self.prior_process.asgn, rng) } } @@ -768,7 +780,7 @@ impl View { if calc_reverse { // Get the indices of the columns assigned to the clusters that // were split - self.asgn + self.asgn() .asgn .iter() .enumerate() @@ -785,7 +797,7 @@ impl View { } else { // Get the indices of the columns assigned to the cluster to split let mut row_ixs: Vec = self - .asgn + .asgn() .asgn .iter() .enumerate() @@ -798,17 +810,17 @@ impl View { } fn sams_merge(&mut self, i: usize, j: usize, rng: &mut R) { - use crate::assignment::lcrp; + use lace_stats::assignment::lcrp; use std::cmp::Ordering; - let zi = self.asgn.asgn[i]; - let zj = self.asgn.asgn[j]; + let zi = self.asgn().asgn[i]; + let zj = self.asgn().asgn[j]; let (logp_spt, logq_spt, ..) = self.propose_split(i, j, true, rng); let asgn = { let zs = self - .asgn + .asgn() .asgn .iter() .map(|&z| match z.cmp(&zj) { @@ -819,8 +831,7 @@ impl View { .collect(); AssignmentBuilder::from_vec(zs) - .with_prior(self.asgn.prior.clone()) - .with_alpha(self.asgn.alpha) + .with_prior_process(self.prior_process.process.clone()) .seed_from_rng(rng) .build() .unwrap() @@ -833,8 +844,15 @@ impl View { } }); + // FIXME: only works for CRP let logp_mrg = self.logm(self.n_cats()) - + lcrp(asgn.len(), &asgn.counts, asgn.alpha); + + lcrp( + asgn.len(), + &asgn.counts, + self.prior_process + .process + .ln_singleton_weight(self.n_cats()), + ); self.drop_component(self.n_cats()); @@ -844,12 +862,19 @@ impl View { } fn sams_split(&mut self, i: usize, j: usize, rng: &mut R) { - use crate::assignment::lcrp; + use lace_stats::assignment::lcrp; - let zi = self.asgn.asgn[i]; + let zi = self.asgn().asgn[i]; + // FIXME: only works for CRP let logp_mrg = self.logm(zi) - + lcrp(self.asgn.len(), &self.asgn.counts, self.asgn.alpha); + + lcrp( + self.asgn().len(), + &self.asgn().counts, + self.prior_process + .process + .ln_singleton_weight(self.n_cats()), + ); let (logp_spt, logq_spt, asgn_opt) = self.propose_split(i, j, false, rng); @@ -868,15 +893,15 @@ impl View { calc_reverse: bool, rng: &mut R, ) -> (f64, f64, Option) { - use crate::assignment::lcrp; + use lace_stats::assignment::lcrp; - let zi = self.asgn.asgn[i]; - let zj = self.asgn.asgn[j]; + let zi = self.asgn().asgn[i]; + let zj = self.asgn().asgn[j]; self.append_empty_component(rng); self.append_empty_component(rng); - let zi_tmp = self.asgn.n_cats; + let zi_tmp = self.n_cats(); let zj_tmp = zi_tmp + 1; self.force_observe_row(i, zi_tmp); @@ -885,7 +910,7 @@ impl View { let mut tmp_z: Vec = { // mark everything assigned to the split cluster as unassigned (-1) let mut zs: Vec = self - .asgn + .asgn() .iter() .map(|&z| if z == zi { std::usize::MAX } else { z }) .collect(); @@ -909,7 +934,7 @@ impl View { let lognorm = logaddexp(logp_zi, logp_zj); let assign_to_zi = if calc_reverse { - self.asgn.asgn[ix] == zi + self.asgn().asgn[ix] == zi } else { rng.gen::().ln() < logp_zi - lognorm }; @@ -930,7 +955,14 @@ impl View { let mut logp = self.logm(zi_tmp) + self.logm(zj_tmp); let asgn = if calc_reverse { - logp += lcrp(self.asgn.len(), &self.asgn.counts, self.asgn.alpha); + // FIXME: only works for CRP + logp += lcrp( + self.asgn().len(), + &self.asgn().counts, + self.prior_process + .process + .ln_singleton_weight(self.n_cats()), + ); None } else { tmp_z.iter_mut().for_each(|z| { @@ -941,14 +973,15 @@ impl View { } }); + // FIXME: create (draw) new process outside to carry forward alpha let asgn = AssignmentBuilder::from_vec(tmp_z) - .with_prior(self.asgn.prior.clone()) - .with_alpha(self.asgn.alpha) + .with_prior_process(self.prior_process.process.clone()) .seed_from_rng(rng) .build() .unwrap(); - logp += lcrp(asgn.len(), &asgn.counts, asgn.alpha); + // FIXME: alpha: see above + logp += lcrp(asgn.len(), &asgn.counts, 1.0); Some(asgn) }; @@ -1002,6 +1035,8 @@ pub struct ViewGewekeSettings { pub cm_types: Vec, /// Which transitions to run pub transitions: Vec, + /// Which prior process to use + pub process_type: PriorProcessType, } impl ViewGewekeSettings { @@ -1015,44 +1050,72 @@ impl ViewGewekeSettings { // parameter updates explicitly (they marginalize over the component // parameters) and the data resample relies on the component // parameters. + process_type: PriorProcessType::Dirichlet, transitions: vec![ ViewTransition::RowAssignment(RowAssignAlg::Slice), ViewTransition::FeaturePriors, ViewTransition::ComponentParams, - ViewTransition::Alpha, + ViewTransition::PriorProcessParams, ], } } + pub fn with_pitman_yor_process(mut self) -> Self { + self.process_type = PriorProcessType::PitmanYor; + self + } + + pub fn with_dirichlet_process(mut self) -> Self { + self.process_type = PriorProcessType::Dirichlet; + self + } + pub fn do_row_asgn_transition(&self) -> bool { self.transitions .iter() .any(|t| matches!(t, ViewTransition::RowAssignment(_))) } - pub fn do_alpha_transition(&self) -> bool { + pub fn do_process_params_transition(&self) -> bool { self.transitions .iter() - .any(|t| matches!(t, ViewTransition::Alpha)) + .any(|t| matches!(t, ViewTransition::PriorProcessParams)) } } -fn view_geweke_asgn( +fn view_geweke_asgn( n_rows: usize, - do_alpha_transition: bool, + do_process_params_transition: bool, do_row_asgn_transition: bool, -) -> AssignmentBuilder { - let mut bldr = AssignmentBuilder::new(n_rows).with_geweke_prior(); + process_type: PriorProcessType, + rng: &mut R, +) -> (AssignmentBuilder, Process) { + let process = match process_type { + PriorProcessType::Dirichlet => { + use lace_consts::geweke_alpha_prior; + use lace_stats::prior_process::Dirichlet; + let inner = if do_process_params_transition { + Dirichlet::from_prior(geweke_alpha_prior(), rng) + } else { + Dirichlet { + alpha: 1.0, + prior: geweke_alpha_prior(), + } + }; + Process::Dirichlet(inner) + } + PriorProcessType::PitmanYor => { + unimplemented!() + } + }; + let mut bldr = + AssignmentBuilder::new(n_rows).with_prior_process(process.clone()); if !do_row_asgn_transition { bldr = bldr.flat(); } - if !do_alpha_transition { - bldr = bldr.with_alpha(1.0); - } - - bldr + (bldr, process) } impl GewekeModel for View { @@ -1065,14 +1128,14 @@ impl GewekeModel for View { .iter() .any(|&t| t == ViewTransition::FeaturePriors); - let asgn = view_geweke_asgn( + let (asgn_builder, process) = view_geweke_asgn( settings.n_rows, - settings.do_alpha_transition(), + settings.do_process_params_transition(), settings.do_row_asgn_transition(), - ) - .seed_from_rng(&mut rng) - .build() - .unwrap(); + settings.process_type, + rng, + ); + let asgn = asgn_builder.seed_from_rng(&mut rng).build().unwrap(); // this function sets up dummy features that we can properly populate with // Feature.geweke_init in the next loop @@ -1092,10 +1155,12 @@ impl GewekeModel for View { }) .collect(); + let prior_process = PriorProcess { process, asgn }; + View { ftrs, - weights: asgn.weights(), - asgn, + weights: prior_process.weight_vec(false), + prior_process, } } @@ -1116,8 +1181,10 @@ impl GewekeResampleData for View { rng: &mut impl Rng, ) { let s = settings.unwrap(); - let col_settings = - ColumnGewekeSettings::new(self.asgn.clone(), s.transitions.clone()); + let col_settings = ColumnGewekeSettings::new( + self.asgn().clone(), + s.transitions.clone(), + ); for ftr in self.ftrs.values_mut() { ftr.geweke_resample_data(Some(&col_settings), rng); } @@ -1168,7 +1235,7 @@ impl GewekeSummarize for View { fn geweke_summarize(&self, settings: &ViewGewekeSettings) -> Self::Summary { let col_settings = ColumnGewekeSettings::new( - self.asgn.clone(), + self.asgn().clone(), settings.transitions.clone(), ); @@ -1178,8 +1245,8 @@ impl GewekeSummarize for View { } else { None }, - alpha: if settings.do_alpha_transition() { - Some(self.asgn.alpha) + alpha: if settings.do_process_params_transition() { + Some(self.prior_process.alpha().unwrap()) } else { None }, @@ -1282,7 +1349,7 @@ mod tests { gen_gauss_view(1000, &mut rng) }; - assert_eq!(view_1.asgn.asgn, view_2.asgn.asgn); + assert_eq!(view_1.asgn().asgn, view_2.asgn().asgn); } #[test] @@ -1294,9 +1361,9 @@ mod tests { view.extend_cols(2); - assert_eq!(view.asgn.asgn.len(), 12); - assert_eq!(view.asgn.asgn[10], usize::max_value()); - assert_eq!(view.asgn.asgn[11], usize::max_value()); + assert_eq!(view.asgn().asgn.len(), 12); + assert_eq!(view.asgn().asgn[10], usize::max_value()); + assert_eq!(view.asgn().asgn[11], usize::max_value()); for ftr in view.ftrs.values() { assert_eq!(ftr.len(), 12); @@ -1314,13 +1381,13 @@ mod tests { let components_start = extract_components(&view); - let view_ix_start = view.asgn.asgn[2]; + let view_ix_start = view.asgn().asgn[2]; let component_start = components_start[3][view_ix_start].clone(); view.insert_datum(2, 3, Datum::Continuous(20.22)); let components_end = extract_components(&view); - let view_ix_end = view.asgn.asgn[2]; + let view_ix_end = view.asgn().asgn[2]; let component_end = components_end[3][view_ix_end].clone(); assert_ne!(components_start, components_end); diff --git a/lace/lace_cc/tests/state.rs b/lace/lace_cc/tests/state.rs index c3cbe852..da79c0d3 100644 --- a/lace/lace_cc/tests/state.rs +++ b/lace/lace_cc/tests/state.rs @@ -186,9 +186,9 @@ fn two_part_runner( n_iters: 50, transitions: vec![ StateTransition::ColumnAssignment(first_algs.1), - StateTransition::StateAlpha, + StateTransition::StatePriorProcessParams, StateTransition::RowAssignment(first_algs.0), - StateTransition::ViewAlphas, + StateTransition::ViewPriorProcessParams, StateTransition::FeaturePriors, ], }; @@ -199,9 +199,9 @@ fn two_part_runner( n_iters: 50, transitions: vec![ StateTransition::ColumnAssignment(second_algs.1), - StateTransition::StateAlpha, + StateTransition::StatePriorProcessParams, StateTransition::RowAssignment(second_algs.0), - StateTransition::ViewAlphas, + StateTransition::ViewPriorProcessParams, StateTransition::FeaturePriors, ], }; diff --git a/lace/lace_codebook/src/codebook.rs b/lace/lace_codebook/src/codebook.rs index 11f2c798..393e87b7 100644 --- a/lace/lace_codebook/src/codebook.rs +++ b/lace/lace_codebook/src/codebook.rs @@ -7,7 +7,9 @@ use crate::ValueMap; use lace_stats::prior::csd::CsdHyper; use lace_stats::prior::nix::NixHyper; use lace_stats::prior::pg::PgHyper; -use lace_stats::rv::dist::{Gamma, NormalInvChiSquared, SymmetricDirichlet}; +use lace_stats::rv::dist::{ + Beta, Gamma, NormalInvChiSquared, SymmetricDirichlet, +}; use polars::prelude::DataFrame; use serde::{Deserialize, Serialize}; use std::collections::HashMap; @@ -343,6 +345,21 @@ impl TryFrom> for ColMetadataList { } } +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] +pub enum PriorProcess { + Dirichlet { alpha_prior: Gamma }, + PitmanYor { alpha_prior: Gamma, d_prior: Beta }, +} + +impl Default for PriorProcess { + fn default() -> Self { + Self::Dirichlet { + alpha_prior: lace_consts::general_alpha_prior(), + } + } +} + /// Codebook object for storing information about the dataset #[derive(Serialize, Deserialize, Debug, Clone, PartialEq)] #[serde(deny_unknown_fields)] @@ -350,9 +367,9 @@ pub struct Codebook { /// The name of the table pub table_name: String, /// Prior on State CRP alpha parameter - pub state_alpha_prior: Option, + pub state_prior_process: Option, /// Prior on View CRP alpha parameters - pub view_alpha_prior: Option, + pub view_prior_process: Option, /// The metadata for each column indexed by name pub col_metadata: ColMetadataList, /// Optional misc comments @@ -372,8 +389,8 @@ impl Codebook { Codebook { table_name, col_metadata, - view_alpha_prior: None, - state_alpha_prior: None, + view_prior_process: None, + state_prior_process: None, comments: None, row_names: RowNameList::new(), } @@ -385,15 +402,23 @@ impl Codebook { /// - df: the dataframe /// - cat_cutoff: the maximum value an integer column can take on before it /// is considered Count type instead of Categorical - /// - alpha_prior_opt: Optional Gamma prior on the column and row CRP alpha + /// - state_prior_process: The prior process on the column partition + /// - view_prior_process: The prior process on the row partitions /// - no_hypers: if `true` do not do prior parameter inference pub fn from_df( df: &DataFrame, cat_cutoff: Option, - alpha_prior_opt: Option, + state_prior_process: Option, + view_prior_process: Option, no_hypers: bool, ) -> Result { - df_to_codebook(df, cat_cutoff, alpha_prior_opt, no_hypers) + df_to_codebook( + df, + cat_cutoff, + state_prior_process, + view_prior_process, + no_hypers, + ) } pub fn from_yaml>(path: P) -> io::Result { diff --git a/lace/lace_codebook/src/data.rs b/lace/lace_codebook/src/data.rs index 1e2cffbd..51d7e4d0 100644 --- a/lace/lace_codebook/src/data.rs +++ b/lace/lace_codebook/src/data.rs @@ -1,7 +1,9 @@ +use crate::codebook::PriorProcess; use crate::error::{CodebookError, ReadError}; use crate::{ Codebook, ColMetadata, ColMetadataList, ColType, RowNameList, ValueMap, }; + use lace_stats::prior::csd::CsdHyper; use lace_stats::prior::nix::NixHyper; use lace_stats::prior::pg::PgHyper; @@ -406,7 +408,8 @@ fn rownames_from_index(id_srs: &Series) -> Result { pub fn df_to_codebook( df: &DataFrame, cat_cutoff: Option, - alpha_prior_opt: Option, + state_prior_process: Option, + view_prior_process: Option, no_hypers: bool, ) -> Result { let (col_metadata, row_names) = { @@ -435,13 +438,10 @@ pub fn df_to_codebook( (col_metadata, row_names) }; - let alpha_prior = - alpha_prior_opt.unwrap_or_else(lace_consts::general_alpha_prior); - Ok(Codebook { table_name: "my_table".into(), - state_alpha_prior: Some(alpha_prior.clone()), - view_alpha_prior: Some(alpha_prior), + state_prior_process, + view_prior_process, col_metadata, row_names, comments: None, @@ -460,10 +460,18 @@ pub fn codebook_from_csv>( path: P, cat_cutoff: Option, alpha_prior_opt: Option, + state_prior_process: Option, + view_prior_process: Option, no_hypers: bool, ) -> Result { let df = read_csv(path).unwrap(); - df_to_codebook(&df, cat_cutoff, alpha_prior_opt, no_hypers) + df_to_codebook( + &df, + cat_cutoff, + state_prior_process, + view_prior_process, + no_hypers, + ) } #[cfg(test)] diff --git a/lace/lace_metadata/src/latest.rs b/lace/lace_metadata/src/latest.rs index 2fed4fb2..abe0481a 100644 --- a/lace/lace_metadata/src/latest.rs +++ b/lace/lace_metadata/src/latest.rs @@ -1,9 +1,9 @@ use std::collections::BTreeMap; -use lace_cc::assignment::Assignment; use lace_cc::component::ConjugateComponent; use lace_cc::feature::{ColModel, Column, MissingNotAtRandom}; -use lace_cc::state::{State, StateDiagnostics}; +use lace_cc::prior_process::PriorProcess; +use lace_cc::state::{State, StateDiagnostics, StateScoreComponents}; use lace_cc::traits::{LaceDatum, LaceLikelihood, LacePrior, LaceStat}; use lace_cc::view::View; use lace_data::{FeatureData, SparseContainer}; @@ -20,9 +20,10 @@ use rand_xoshiro::Xoshiro256Plus; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use std::sync::OnceLock; +use crate::versions::v1; use crate::{impl_metadata_version, to_from_newtype, MetadataVersion}; -pub const METADATA_VERSION: i32 = 0; +pub const METADATA_VERSION: i32 = 1; #[derive(Serialize, Deserialize, Debug)] #[serde(deny_unknown_fields)] @@ -35,26 +36,10 @@ pub struct Metadata { pub states: Vec, pub state_ids: Vec, pub codebook: Codebook, - pub data: Option, + pub data: Option, pub rng: Option, } -#[derive(Serialize, Deserialize, Debug)] -#[serde(deny_unknown_fields)] -pub struct DataStore(BTreeMap); - -impl From for DataStore { - fn from(data: lace_data::DataStore) -> Self { - Self(data.0) - } -} - -impl From for lace_data::DataStore { - fn from(data: DataStore) -> Self { - Self(data.0) - } -} - #[derive(Serialize, Deserialize, Debug)] pub struct DatalessStateAndDiagnostics { pub state: DatalessState, @@ -65,16 +50,9 @@ pub struct DatalessStateAndDiagnostics { #[serde(deny_unknown_fields)] pub struct DatalessState { pub views: Vec, - pub asgn: Assignment, + pub prior_process: PriorProcess, pub weights: Vec, - pub view_alpha_prior: Gamma, - pub loglike: f64, - #[serde(default)] - pub log_prior: f64, - #[serde(default)] - pub log_view_alpha_prior: f64, - #[serde(default)] - pub log_state_alpha_prior: f64, + pub score: StateScoreComponents, } /// Marks a state as having no data in its columns @@ -85,13 +63,9 @@ impl From for DatalessStateAndDiagnostics { Self { state: DatalessState { views: state.views.drain(..).map(|view| view.into()).collect(), - asgn: state.asgn, + prior_process: state.prior_process, weights: state.weights, - view_alpha_prior: state.view_alpha_prior, - loglike: state.loglike, - log_prior: state.log_prior, - log_view_alpha_prior: state.log_view_alpha_prior, - log_state_alpha_prior: state.log_state_alpha_prior, + score: state.score, }, diagnostics: state.diagnostics, } @@ -113,21 +87,24 @@ impl From for EmptyState { .map(|id| { let dl_ftr = dl_view.ftrs.remove(&id).unwrap(); let cm: ColModel = match dl_ftr { - DatalessColModel::Continuous(cm) => { - let ecm: EmptyColumn<_, _, _, _> = cm.into(); + v1::DatalessColModel::Continuous(cm) => { + let ecm: v1::EmptyColumn<_, _, _, _> = + cm.into(); ColModel::Continuous(ecm.0) } - DatalessColModel::Categorical(cm) => { - let ecm: EmptyColumn<_, _, _, _> = cm.into(); + v1::DatalessColModel::Categorical(cm) => { + let ecm: v1::EmptyColumn<_, _, _, _> = + cm.into(); ColModel::Categorical(ecm.0) } - DatalessColModel::Count(cm) => { - let ecm: EmptyColumn<_, _, _, _> = cm.into(); + v1::DatalessColModel::Count(cm) => { + let ecm: v1::EmptyColumn<_, _, _, _> = + cm.into(); ColModel::Count(ecm.0) } - DatalessColModel::MissingNotAtRandom(mnar) => { + v1::DatalessColModel::MissingNotAtRandom(mnar) => { let fx: ColModel = (*mnar.fx).into(); - let missing: EmptyColumn<_, _, _, _> = + let missing: v1::EmptyColumn<_, _, _, _> = mnar.missing.into(); ColModel::MissingNotAtRandom( MissingNotAtRandom { @@ -142,7 +119,7 @@ impl From for EmptyState { .collect(); View { - asgn: dl_view.asgn, + prior_process: dl_view.prior_process, weights: dl_view.weights, ftrs, } @@ -151,13 +128,9 @@ impl From for EmptyState { EmptyState(State { views, - asgn: dl_state.state.asgn, + prior_process: dl_state.state.prior_process, weights: dl_state.state.weights, - view_alpha_prior: dl_state.state.view_alpha_prior, - loglike: dl_state.state.loglike, - log_prior: dl_state.state.log_prior, - log_view_alpha_prior: dl_state.state.log_view_alpha_prior, - log_state_alpha_prior: dl_state.state.log_state_alpha_prior, + score: dl_state.state.score, diagnostics: dl_state.diagnostics, }) } @@ -166,8 +139,8 @@ impl From for EmptyState { #[derive(Serialize, Deserialize, Debug)] #[serde(deny_unknown_fields)] pub struct DatalessView { - pub ftrs: BTreeMap, - pub asgn: Assignment, + pub ftrs: BTreeMap, + pub prior_process: PriorProcess, pub weights: Vec, } @@ -180,166 +153,59 @@ impl From for DatalessView { .map(|k| (*k, view.ftrs.remove(k).unwrap().into())) .collect() }, - asgn: view.asgn, + prior_process: view.prior_process, weights: view.weights, } } } -#[derive(Serialize, Deserialize, Debug)] -#[serde(deny_unknown_fields)] -pub enum DatalessColModel { - Continuous(DatalessColumn), - Categorical(DatalessColumn), - Count(DatalessColumn), - MissingNotAtRandom(DatalessMissingNotAtRandom), -} - -impl From for DatalessColModel { - fn from(col_model: ColModel) -> DatalessColModel { - match col_model { - ColModel::Categorical(col) => { - DatalessColModel::Categorical(col.into()) - } - ColModel::Continuous(col) => { - DatalessColModel::Continuous(col.into()) - } - ColModel::Count(col) => DatalessColModel::Count(col.into()), - ColModel::MissingNotAtRandom(mnar) => { - DatalessColModel::MissingNotAtRandom( - DatalessMissingNotAtRandom { - fx: Box::new((*mnar.fx).into()), - missing: mnar.present.into(), - }, - ) - } +impl From for DatalessStateAndDiagnostics { + fn from(state_and_diag: v1::DatalessStateAndDiagnostics) -> Self { + Self { + state: state_and_diag.state.into(), + diagnostics: state_and_diag.diagnostics.into(), } } } -impl From for ColModel { - fn from(col_model: DatalessColModel) -> Self { - match col_model { - DatalessColModel::Continuous(cm) => { - let empty_col: EmptyColumn<_, _, _, _> = cm.into(); - Self::Continuous(empty_col.0) - } - DatalessColModel::Count(cm) => { - let empty_col: EmptyColumn<_, _, _, _> = cm.into(); - Self::Count(empty_col.0) - } - DatalessColModel::Categorical(cm) => { - let empty_col: EmptyColumn<_, _, _, _> = cm.into(); - Self::Categorical(empty_col.0) - } - _ => unimplemented!(), - } +impl From for Codebook { + fn from(codebook: v1::Codebook) -> Self { + Self(lace_codebook::Codebook { + table_name: codebook.0.table_name, + state_alpha_prior: codebook, + view_alpha_prior: , + col_metadata: , + comments: , + row_names: + }) } } -#[derive(Serialize, Deserialize, Debug)] -#[serde(deny_unknown_fields)] -pub struct DatalessMissingNotAtRandom { - fx: Box, - missing: DatalessColumn, -} - -#[derive(Serialize, Deserialize, Debug)] -#[serde(deny_unknown_fields)] -pub struct DatalessColumn -where - X: LaceDatum, - Fx: LaceLikelihood, - Pr: LacePrior, - H: Serialize + DeserializeOwned, - MixtureType: From>, - Fx::Stat: LaceStat, - Pr::LnMCache: Clone + std::fmt::Debug, - Pr::LnPpCache: Send + Sync + Clone + std::fmt::Debug, -{ - pub id: usize, - #[serde(bound(deserialize = "X: serde::de::DeserializeOwned"))] - pub components: Vec>, - #[serde(bound(deserialize = "Pr: serde::de::DeserializeOwned"))] - pub prior: Pr, - #[serde(bound(deserialize = "H: serde::de::DeserializeOwned"))] - pub hyper: H, - #[serde(default)] - pub ignore_hyper: bool, -} - -macro_rules! col2dataless { - ($x:ty, $fx:ty, $pr:ty, $h:ty) => { - impl From> - for DatalessColumn<$x, $fx, $pr, $h> - { - fn from(col: Column<$x, $fx, $pr, $h>) -> Self { - DatalessColumn { - id: col.id, - components: col.components, - prior: col.prior, - hyper: col.hyper, - ignore_hyper: col.ignore_hyper, - } - } - } - }; -} - -col2dataless!(f64, Gaussian, NormalInvChiSquared, NixHyper); -col2dataless!(u8, Categorical, SymmetricDirichlet, CsdHyper); -col2dataless!(u32, Poisson, Gamma, PgHyper); -col2dataless!(bool, Bernoulli, Beta, ()); - -struct EmptyColumn(Column) -where - X: LaceDatum, - Fx: LaceLikelihood, - Fx::Stat: LaceStat, - Pr: LacePrior, - H: Serialize + DeserializeOwned, - Pr::LnMCache: Clone + std::fmt::Debug, - Pr::LnPpCache: Send + Sync + Clone + std::fmt::Debug, - MixtureType: From>; - -macro_rules! dataless2col { - ($x:ty, $fx:ty, $pr:ty, $h:ty) => { - impl From> - for EmptyColumn<$x, $fx, $pr, $h> - { - fn from( - col_dl: DatalessColumn<$x, $fx, $pr, $h>, - ) -> EmptyColumn<$x, $fx, $pr, $h> { - EmptyColumn(Column { - id: col_dl.id, - components: col_dl.components, - prior: col_dl.prior, - hyper: col_dl.hyper, - data: SparseContainer::default(), - ln_m_cache: OnceLock::new(), - ignore_hyper: col_dl.ignore_hyper, - }) - } +impl From for Metadata { + fn from(mut metadata: v1::Metadata) -> Self { + Self { + states: metadata + .states + .drain(..) + .map(|state| state.into()) + .collect(), + state_ids: metadata.state_ids, + codebook: metadata.codebook.into(), + data: metadata.codebook, + rng: metadata.rng, } - }; + } } -dataless2col!(f64, Gaussian, NormalInvChiSquared, NixHyper); -dataless2col!(u8, Categorical, SymmetricDirichlet, CsdHyper); -dataless2col!(u32, Poisson, Gamma, PgHyper); -dataless2col!(bool, Bernoulli, Beta, ()); - impl_metadata_version!(Metadata, METADATA_VERSION); impl_metadata_version!(Codebook, METADATA_VERSION); -impl_metadata_version!(DatalessColModel, METADATA_VERSION); impl_metadata_version!(DatalessView, METADATA_VERSION); impl_metadata_version!(DatalessState, METADATA_VERSION); -impl_metadata_version!(DataStore, METADATA_VERSION); // Create the loaders module for latest crate::loaders!( DatalessStateAndDiagnostics, - DataStore, + v1::DataStore, Codebook, rand_xoshiro::Xoshiro256Plus ); diff --git a/lace/lace_metadata/src/lib.rs b/lace/lace_metadata/src/lib.rs index bbe00195..1ca51b5c 100644 --- a/lace/lace_metadata/src/lib.rs +++ b/lace/lace_metadata/src/lib.rs @@ -13,6 +13,7 @@ mod config; mod error; pub mod latest; mod utils; +pub mod versions; pub use utils::{deserialize_file, save_state, serialize_obj}; diff --git a/lace/lace_cc/src/assignment.rs b/lace/lace_stats/src/assignment.rs similarity index 75% rename from lace/lace_cc/src/assignment.rs rename to lace/lace_stats/src/assignment.rs index d4cfdc1c..8f1e4cb2 100644 --- a/lace/lace_cc/src/assignment.rs +++ b/lace/lace_stats/src/assignment.rs @@ -1,15 +1,9 @@ //! Data structures for assignments of items to components (partitions) -use lace_stats::mh::mh_prior; -use lace_stats::rv::dist::Gamma; -use lace_stats::rv::traits::Rv; -use rand::SeedableRng; -use rand_xoshiro::Xoshiro256Plus; use serde::{Deserialize, Serialize}; use thiserror::Error; -use crate::misc::crp_draw; - /// Validates assignments if the `LACE_NOCHECK` is not set to `"1"`. +#[macro_export] macro_rules! validate_assignment { ($asgn:expr) => {{ let validate_asgn: bool = match option_env!("LACE_NOCHECK") { @@ -28,8 +22,6 @@ macro_rules! validate_assignment { #[allow(dead_code)] #[derive(Serialize, Deserialize, PartialEq, Debug, Clone)] pub struct Assignment { - /// The `Crp` discount parameter - pub alpha: f64, /// The assignment vector. `asgn[i]` is the partition index of the /// ith datum. pub asgn: Vec, @@ -37,8 +29,6 @@ pub struct Assignment { pub counts: Vec, /// The number of partitions/categories pub n_cats: usize, - /// The prior on `alpha` - pub prior: Gamma, } /// The possible ways an assignment can go wrong with incorrect bookkeeping @@ -207,166 +197,6 @@ impl AssignmentDiagnostics { results.drain(..).collect() } } - -/// Constructs `Assignment`s -#[derive(Clone, Debug)] -pub struct AssignmentBuilder { - n: usize, - asgn: Option>, - alpha: Option, - prior: Option, - seed: Option, -} - -#[derive(Debug, Error, PartialEq)] -pub enum BuildAssignmentError { - #[error("alpha is zero")] - AlphaIsZero, - #[error("non-finite alpha: {alpha}")] - AlphaNotFinite { alpha: f64 }, - #[error("assignment vector is empty")] - EmptyAssignmentVec, - #[error("there are {n_cats} categories but {n} data")] - NLessThanNCats { n: usize, n_cats: usize }, - #[error("invalid assignment: {0}")] - AssignmentError(#[from] AssignmentError), -} - -impl AssignmentBuilder { - /// Create a builder for `n`-length assignments - /// - /// # Arguments - /// - n: the number of data/entries in the assignment - pub fn new(n: usize) -> Self { - AssignmentBuilder { - n, - asgn: None, - prior: None, - alpha: None, - seed: None, - } - } - - /// Initialize the builder from an assignment vector - /// - /// # Note: - /// The validity of `asgn` will not be verified until `build` is called. - pub fn from_vec(asgn: Vec) -> Self { - AssignmentBuilder { - n: asgn.len(), - asgn: Some(asgn), - prior: None, - alpha: None, - seed: None, - } - } - - /// Add a prior on the `Crp` `alpha` parameter - #[must_use] - pub fn with_prior(mut self, prior: Gamma) -> Self { - self.prior = Some(prior); - self - } - - /// Use the Geweke `Crp` `alpha` prior - #[must_use] - pub fn with_geweke_prior(mut self) -> Self { - self.prior = Some(lace_consts::geweke_alpha_prior()); - self - } - - /// Set the `Crp` `alpha` to a specific value - #[must_use] - pub fn with_alpha(mut self, alpha: f64) -> Self { - self.alpha = Some(alpha); - self - } - - /// Set the RNG seed - #[must_use] - pub fn with_seed(mut self, seed: u64) -> Self { - self.seed = Some(seed); - self - } - - /// Set the RNG seed from another RNG - #[must_use] - pub fn seed_from_rng(mut self, rng: &mut R) -> Self { - self.seed = Some(rng.next_u64()); - self - } - - /// Use a *flat* assignment with one partition - #[must_use] - pub fn flat(mut self) -> Self { - self.asgn = Some(vec![0; self.n]); - self - } - - /// Use an assignment with `n_cats`, evenly populated partitions/categories - pub fn with_n_cats( - mut self, - n_cats: usize, - ) -> Result { - if n_cats > self.n { - Err(BuildAssignmentError::NLessThanNCats { n: self.n, n_cats }) - } else { - let asgn: Vec = (0..self.n).map(|i| i % n_cats).collect(); - self.asgn = Some(asgn); - Ok(self) - } - } - - /// Build the assignment and consume the builder - pub fn build(self) -> Result { - let prior = self.prior.unwrap_or_else(lace_consts::general_alpha_prior); - - let mut rng_opt = if self.alpha.is_none() || self.asgn.is_none() { - let rng = match self.seed { - Some(seed) => Xoshiro256Plus::seed_from_u64(seed), - None => Xoshiro256Plus::from_entropy(), - }; - Some(rng) - } else { - None - }; - - let alpha = match self.alpha { - Some(alpha) => alpha, - None => prior.draw(&mut rng_opt.as_mut().unwrap()), - }; - - let n = self.n; - let asgn = self.asgn.unwrap_or_else(|| { - crp_draw(n, alpha, &mut rng_opt.as_mut().unwrap()).asgn - }); - - let n_cats: usize = asgn.iter().max().map(|&m| m + 1).unwrap_or(0); - let mut counts: Vec = vec![0; n_cats]; - for z in &asgn { - counts[*z] += 1; - } - - let asgn_out = Assignment { - alpha, - asgn, - counts, - n_cats, - prior, - }; - - if validate_assignment!(asgn_out) { - Ok(asgn_out) - } else { - asgn_out - .validate() - .emit_error() - .map_err(BuildAssignmentError::AssignmentError) - .map(|_| asgn_out) - } - } -} - impl Assignment { /// Replace the assignment vector pub fn set_asgn( @@ -407,52 +237,6 @@ impl Assignment { self.len() == 0 } - /// Returns the Dirichlet posterior - /// - /// # Arguments - /// - /// - append_alpha: if `true` append `alpha` to the end of the vector. This - /// is used primarily for the `FiniteCpu` assignment kernel. - /// - /// # Example - /// - /// ```rust - /// # use lace_cc::assignment::AssignmentBuilder; - /// let assignment = AssignmentBuilder::from_vec(vec![0, 0, 1, 2]) - /// .with_alpha(0.5) - /// .build() - /// .unwrap(); - /// - /// assert_eq!(assignment.asgn, vec![0, 0, 1, 2]); - /// assert_eq!(assignment.counts, vec![2, 1, 1]); - /// assert_eq!(assignment.dirvec(false), vec![2.0, 1.0, 1.0]); - /// assert_eq!(assignment.dirvec(true), vec![2.0, 1.0, 1.0, 0.5]); - /// ``` - pub fn dirvec(&self, append_alpha: bool) -> Vec { - let mut dv: Vec = self.counts.iter().map(|&x| x as f64).collect(); - if append_alpha { - dv.push(self.alpha); - } - dv - } - - /// Returns the log of the Dirichlet posterior - /// - /// # Arguments - /// - /// - append_alpha: if `true` append `alpha` to the end of the vector. This - /// is used primarily for the `FiniteCpu` assignment kernel. - pub fn log_dirvec(&self, append_alpha: bool) -> Vec { - let mut dv: Vec = - self.counts.iter().map(|&x| (x as f64).ln()).collect(); - - if append_alpha { - dv.push(self.alpha.ln()); - } - - dv - } - /// Mark the entry at ix as unassigned. Will remove the entry's contribution /// to `n_cats` and `counts`, and will mark `asgn[ix]` with the unassigned /// designator.. @@ -503,7 +287,7 @@ impl Assignment { /// Append a new, unassigned entry to th end of the assignment /// - /// # Eample + /// # Example /// /// ``` /// # use lace_cc::assignment::AssignmentBuilder; @@ -522,50 +306,6 @@ impl Assignment { self.asgn.push(usize::max_value()) } - /// Returns the proportion of data assigned to each partition/category - /// - /// # Example - /// - /// ```rust - /// # use lace_cc::assignment::AssignmentBuilder; - /// let mut rng = rand::thread_rng(); - /// let assignment = AssignmentBuilder::from_vec(vec![0, 0, 1, 2]) - /// .build() - /// .unwrap(); - /// - /// assert_eq!(assignment.asgn, vec![0, 0, 1, 2]); - /// assert_eq!(assignment.counts, vec![2, 1, 1]); - /// assert_eq!(assignment.weights(), vec![0.5, 0.25, 0.25]); - /// ``` - pub fn weights(&self) -> Vec { - let z: f64 = self.len() as f64; - self.dirvec(false).iter().map(|&w| w / z).collect() - } - - /// The log of the weights - pub fn log_weights(&self) -> Vec { - self.weights().iter().map(|w| w.ln()).collect() - } - - /// Posterior update of `alpha` given the prior and the current assignment - /// vector - pub fn update_alpha( - &mut self, - n_iter: usize, - rng: &mut R, - ) -> f64 { - // TODO: Should we use a different method to draw CRP alpha that can - // extend outside of the bulk of the prior's mass? - let cts = &self.counts; - let n: usize = self.len(); - let loglike = |alpha: &f64| lcrp(n, cts, *alpha); - let prior_ref = &self.prior; - let prior_draw = |rng: &mut R| prior_ref.draw(rng); - let mh_result = mh_prior(self.alpha, loglike, prior_draw, n_iter, rng); - self.alpha = mh_result.x; - mh_result.score_x - } - /// Validates the assignment pub fn validate(&self) -> AssignmentDiagnostics { AssignmentDiagnostics::new(self) @@ -585,8 +325,8 @@ pub fn lcrp(n: usize, cts: &[usize], alpha: f64) -> f64 { #[cfg(test)] mod tests { use super::*; + use crate::rv::dist::Gamma; use approx::*; - use lace_stats::rv::dist::Gamma; #[test] fn zero_count_fails_validation() { diff --git a/lace/lace_stats/src/lib.rs b/lace/lace_stats/src/lib.rs index 5d101ce9..74cf0bd2 100644 --- a/lace/lace_stats/src/lib.rs +++ b/lace/lace_stats/src/lib.rs @@ -8,6 +8,8 @@ clippy::option_option, clippy::implicit_clone )] + +pub mod assignment; mod cdf; mod chi_square; pub mod dist; @@ -19,6 +21,7 @@ pub mod mh; mod mixture_type; mod perm; pub mod prior; +pub mod prior_process; pub mod seq; mod simplex; pub mod uncertainty; diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs new file mode 100644 index 00000000..9b9a3b82 --- /dev/null +++ b/lace/lace_stats/src/prior_process.rs @@ -0,0 +1,380 @@ +use crate::rv::dist::{Beta, Gamma}; +use lace_consts::rv::{misc::pflip, traits::Rv}; +use rand::Rng; +use serde::{Deserialize, Serialize}; + +use crate::assignment::Assignment; + +const MAX_STICK_BREAKING_ITERS: u16 = 10_000; + +pub trait PriorProcessT { + fn ln_gibbs_weight(&self, n_k: usize) -> f64; + + fn ln_singleton_weight(&self, n_cats: usize) -> f64; + + fn weight_vec(&self, asgn: &Assignment, append_new: bool) -> Vec; + + fn slice_sb_extend( + &self, + weights: Vec, + u_star: f64, + rng: &mut R, + ) -> Vec; + + fn draw_assignment(&self, n: usize, rng: &mut R) -> Assignment; + + fn update_params(&mut self, asgn: &Assignment, rng: &mut R) -> f64; + + fn reset_params(&mut self, rng: &mut R); +} + +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +pub struct Dirichlet { + pub alpha: f64, + pub prior: Gamma, +} + +impl Dirichlet { + pub fn from_prior(prior: Gamma, rng: &mut R) -> Self { + Self { + alpha: prior.draw(rng), + prior, + } + } +} + +impl PriorProcessT for Dirichlet { + fn ln_gibbs_weight(&self, n_k: usize) -> f64 { + (n_k as f64).ln() + } + + fn ln_singleton_weight(&self, _n_cats: usize) -> f64 { + self.alpha.ln() + } + + fn weight_vec(&self, asgn: &Assignment, append_new: bool) -> Vec { + let mut weights: Vec = + asgn.counts.iter().map(|&ct| ct as f64).collect(); + + let z = if append_new { + weights.push(self.alpha); + asgn.len() as f64 + self.alpha + } else { + asgn.len() as f64 + }; + + weights.iter_mut().for_each(|ct| *ct /= z); + + weights + } + + fn slice_sb_extend( + &self, + weights: Vec, + u_star: f64, + rng: &mut R, + ) -> Vec { + sb_slice_extend(weights, self.alpha, 0.0, u_star, rng).unwrap() + } + + fn draw_assignment(&self, n: usize, rng: &mut R) -> Assignment { + let mut counts = vec![1]; + let mut ps = vec![1.0, self.alpha]; + let mut zs = vec![0; n]; + + for i in 1..n { + let zi = pflip(&ps, 1, rng)[0]; + zs[i] = zi; + if zi < counts.len() { + ps[zi] += 1.0; + counts[zi] += 1; + } else { + ps[zi] = 1.0; + ps.push(self.alpha); + counts.push(1); + }; + } + + Assignment { + asgn: zs, + n_cats: counts.len(), + counts, + } + } + + fn update_params(&mut self, asgn: &Assignment, rng: &mut R) -> f64 { + unimplemented!() + } + + fn reset_params(&mut self, rng: &mut R) { + // TODO: remove clones + *self = Self::from_prior(self.prior.clone(), rng); + } +} + +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +pub struct PitmanYor { + pub alpha: f64, + pub d: f64, + pub prior_alpha: Gamma, + pub prior_d: Beta, +} + +impl PitmanYor { + pub fn from_prior( + prior_alpha: Gamma, + prior_d: Beta, + rng: &mut R, + ) -> Self { + Self { + alpha: prior_alpha.draw(rng), + d: prior_d.draw(rng), + prior_alpha, + prior_d, + } + } +} + +impl PriorProcessT for PitmanYor { + fn ln_gibbs_weight(&self, n_k: usize) -> f64 { + (n_k as f64 - self.d).ln() + } + + fn ln_singleton_weight(&self, n_cats: usize) -> f64 { + (self.alpha + self.d * (n_cats as f64)).ln() + } + + fn weight_vec(&self, asgn: &Assignment, append_new: bool) -> Vec { + let mut weights: Vec = + asgn.counts.iter().map(|&ct| ct as f64 - self.d).collect(); + + let z = if append_new { + weights.push(self.alpha + self.d * asgn.n_cats as f64); + asgn.len() as f64 + self.alpha + } else { + asgn.len() as f64 + }; + + weights.iter_mut().for_each(|ct| *ct /= z); + + weights + } + + fn slice_sb_extend( + &self, + weights: Vec, + u_star: f64, + rng: &mut R, + ) -> Vec { + sb_slice_extend(weights, self.alpha, self.d, u_star, rng).unwrap() + } + + fn draw_assignment(&self, n: usize, rng: &mut R) -> Assignment { + unimplemented!() + } + + fn update_params(&mut self, asgn: &Assignment, rng: &mut R) -> f64 { + unimplemented!() + } + + fn reset_params(&mut self, rng: &mut R) { + // TODO: remove clones + *self = Self::from_prior( + self.prior_alpha.clone(), + self.prior_d.clone(), + rng, + ); + } +} + +#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +pub enum Process { + Dirichlet(Dirichlet), + PitmanYor(PitmanYor), +} + +impl PriorProcessT for Process { + fn ln_gibbs_weight(&self, n_k: usize) -> f64 { + match self { + Self::Dirichlet(proc) => proc.ln_gibbs_weight(n_k), + Self::PitmanYor(proc) => proc.ln_gibbs_weight(n_k), + } + } + + fn ln_singleton_weight(&self, n_cats: usize) -> f64 { + match self { + Self::Dirichlet(proc) => proc.ln_singleton_weight(n_cats), + Self::PitmanYor(proc) => proc.ln_singleton_weight(n_cats), + } + } + + fn weight_vec(&self, asgn: &Assignment, append_new: bool) -> Vec { + match self { + Self::Dirichlet(proc) => proc.weight_vec(asgn, append_new), + Self::PitmanYor(proc) => proc.weight_vec(asgn, append_new), + } + } + + fn slice_sb_extend( + &self, + weights: Vec, + u_star: f64, + rng: &mut R, + ) -> Vec { + match self { + Self::Dirichlet(proc) => proc.slice_sb_extend(weights, u_star, rng), + Self::PitmanYor(proc) => proc.slice_sb_extend(weights, u_star, rng), + } + } + + fn draw_assignment(&self, n: usize, rng: &mut R) -> Assignment { + match self { + Self::Dirichlet(proc) => proc.draw_assignment(n, rng), + Self::PitmanYor(proc) => proc.draw_assignment(n, rng), + } + } + + fn update_params(&mut self, asgn: &Assignment, rng: &mut R) -> f64 { + match self { + Self::Dirichlet(proc) => proc.update_params(asgn, rng), + Self::PitmanYor(proc) => proc.update_params(asgn, rng), + } + } + + fn reset_params(&mut self, rng: &mut R) { + match self { + Self::Dirichlet(proc) => proc.reset_params(rng), + Self::PitmanYor(proc) => proc.reset_params(rng), + } + } +} + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct PriorProcess { + pub process: Process, + pub asgn: Assignment, +} + +impl PriorProcess { + pub fn from_process( + process: Process, + n: usize, + rng: &mut R, + ) -> Self { + let asgn = process.draw_assignment(n, rng); + Self { process, asgn } + } + + pub fn weight_vec(&self, append_new: bool) -> Vec { + self.process.weight_vec(&self.asgn, append_new) + } + + pub fn update_params(&mut self, rng: &mut R) -> f64 { + self.process.update_params(&self.asgn, rng) + } + + pub fn alpha(&self) -> Option { + match &self.process { + Process::Dirichlet(inner) => Some(inner.alpha), + Process::PitmanYor(inner) => Some(inner.alpha), + } + } +} + +#[derive(Clone, Copy, Debug, Serialize, Deserialize)] +pub enum PriorProcessType { + Dirichlet, + PitmanYor, +} + +/// The stick breaking algorithm has exceeded the max number of iterations. +#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub struct TheStickIsDust(u16); + +// Append new dirchlet weights by stick breaking until the new weight is less +// than u* +// +// **NOTE** This function is only for the slice reassignment kernel. It cuts out +// all weights that are less that u*, so the sum of the weights will not be 1. +fn sb_slice_extend( + mut weights: Vec, + alpha: f64, + d: f64, + u_star: f64, + mut rng: &mut R, +) -> Result, TheStickIsDust> { + let mut b_star = weights.pop().unwrap(); + + // If α is low and we do the dirichlet update w ~ Dir(n_1, ..., n_k, α), + // the final weight will often be zero. In that case, we're done. + if b_star <= 1E-16 { + weights.push(b_star); + return Ok(weights); + } + let n_cats = weights.len() as f64; + + let mut iters: u16 = 0; + loop { + let beta = + Beta::new(1.0 + d, alpha + iters as f64 + n_cats + 1.0).unwrap(); + let vk: f64 = beta.draw(&mut rng); + let bk = vk * b_star; + b_star *= 1.0 - vk; + + if bk >= u_star { + weights.push(bk); + } + + if b_star < u_star { + return Ok(weights); + } + + iters += 1; + if iters > MAX_STICK_BREAKING_ITERS { + return Err(TheStickIsDust(MAX_STICK_BREAKING_ITERS)); + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + const TOL: f64 = 1E-12; + + mod sb_slice { + use super::*; + + #[test] + fn should_return_input_weights_if_alpha_is_zero() { + let mut rng = rand::thread_rng(); + let weights_in: Vec = vec![0.8, 0.2, 0.0]; + let weights_out = + sb_slice_extend(weights_in.clone(), 1.0, 0.0, 0.2, &mut rng) + .unwrap(); + let good = weights_in + .iter() + .zip(weights_out.iter()) + .all(|(wi, wo)| (wi - wo).abs() < TOL); + assert!(good); + } + + #[test] + fn should_return_error_for_zero_u_star() { + let mut rng = rand::thread_rng(); + let weights_in: Vec = vec![0.8, 0.2]; + let u_star = 0.0; + let res = sb_slice_extend(weights_in, 1.0, 0.0, u_star, &mut rng); + assert!(res.is_err()); + } + + #[test] + fn smoke() { + let mut rng = rand::thread_rng(); + let weights_in: Vec = vec![0.8, 0.2]; + let u_star = 0.1; + let res = sb_slice_extend(weights_in, 1.0, 0.0, u_star, &mut rng); + assert!(res.is_ok()); + } + } +} diff --git a/lace/tests/engine.rs b/lace/tests/engine.rs index d287a881..e7f0e878 100644 --- a/lace/tests/engine.rs +++ b/lace/tests/engine.rs @@ -1336,9 +1336,9 @@ mod insert_data { n_iters: 10, transitions: vec![ StateTransition::ColumnAssignment(ColAssignAlg::Gibbs), - StateTransition::StateAlpha, + StateTransition::StatePriorProcessParams, StateTransition::RowAssignment(RowAssignAlg::Gibbs), - StateTransition::ViewAlphas, + StateTransition::ViewPriorProcessParams, StateTransition::FeaturePriors, ], ..Default::default() @@ -1432,9 +1432,9 @@ mod insert_data { n_iters: 10, transitions: vec![ StateTransition::ColumnAssignment(ColAssignAlg::Gibbs), - StateTransition::StateAlpha, + StateTransition::StatePriorProcessParams, StateTransition::RowAssignment(RowAssignAlg::Gibbs), - StateTransition::ViewAlphas, + StateTransition::ViewPriorProcessParams, StateTransition::FeaturePriors, ], ..Default::default() From dab8c622eb24e2c7fb142484eee052ae32b1ac16 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Tue, 27 Feb 2024 21:10:20 -0600 Subject: [PATCH 02/43] More things compiling --- lace/lace_metadata/src/latest.rs | 83 ++++-- lace/lace_metadata/src/lib.rs | 8 +- lace/lace_metadata/src/utils.rs | 7 +- lace/lace_metadata/src/versions/mod.rs | 1 + lace/lace_metadata/src/versions/v1.rs | 366 +++++++++++++++++++++++++ 5 files changed, 436 insertions(+), 29 deletions(-) create mode 100644 lace/lace_metadata/src/versions/mod.rs create mode 100644 lace/lace_metadata/src/versions/v1.rs diff --git a/lace/lace_metadata/src/latest.rs b/lace/lace_metadata/src/latest.rs index abe0481a..c5d85767 100644 --- a/lace/lace_metadata/src/latest.rs +++ b/lace/lace_metadata/src/latest.rs @@ -1,24 +1,13 @@ use std::collections::BTreeMap; -use lace_cc::component::ConjugateComponent; -use lace_cc::feature::{ColModel, Column, MissingNotAtRandom}; -use lace_cc::prior_process::PriorProcess; +use lace_cc::feature::{ColModel, MissingNotAtRandom}; use lace_cc::state::{State, StateDiagnostics, StateScoreComponents}; -use lace_cc::traits::{LaceDatum, LaceLikelihood, LacePrior, LaceStat}; use lace_cc::view::View; -use lace_data::{FeatureData, SparseContainer}; -use lace_stats::prior::csd::CsdHyper; -use lace_stats::prior::nix::NixHyper; -use lace_stats::prior::pg::PgHyper; -use lace_stats::rv::dist::{ - Bernoulli, Beta, Categorical, Gamma, Gaussian, Mixture, - NormalInvChiSquared, Poisson, SymmetricDirichlet, -}; -use lace_stats::MixtureType; +use lace_stats::assignment::Assignment; +use lace_stats::prior_process::{PriorProcess, Process}; use rand_xoshiro::Xoshiro256Plus; -use serde::{de::DeserializeOwned, Deserialize, Serialize}; -use std::sync::OnceLock; +use serde::{Deserialize, Serialize}; use crate::versions::v1; use crate::{impl_metadata_version, to_from_newtype, MetadataVersion}; @@ -159,6 +148,48 @@ impl From for DatalessView { } } +impl From for PriorProcess { + fn from(asgn: v1::Assignment) -> Self { + Self { + asgn: Assignment { + asgn: asgn.asgn, + counts: asgn.counts, + n_cats: asgn.n_cats, + }, + process: Process::Dirichlet(lace_stats::prior_process::Dirichlet { + alpha: asgn.alpha, + prior: asgn.prior, + }), + } + } +} + +impl From for DatalessView { + fn from(view: v1::DatalessView) -> Self { + Self { + ftrs: view.ftrs, + prior_process: view.asgn.into(), + weights: view.weights, + } + } +} + +impl From for DatalessState { + fn from(mut state: v1::DatalessState) -> Self { + Self { + views: state.views.drain(..).map(|view| view.into()).collect(), + prior_process: state.asgn.into(), + weights: state.weights, + score: StateScoreComponents { + ln_likelihood: state.loglike, + ln_prior: state.log_prior, + ln_state_prior_process: state.log_state_alpha_prior, + ln_view_prior_process: state.log_view_alpha_prior, + }, + } + } +} + impl From for DatalessStateAndDiagnostics { fn from(state_and_diag: v1::DatalessStateAndDiagnostics) -> Self { Self { @@ -170,13 +201,19 @@ impl From for DatalessStateAndDiagnostics { impl From for Codebook { fn from(codebook: v1::Codebook) -> Self { - Self(lace_codebook::Codebook { - table_name: codebook.0.table_name, - state_alpha_prior: codebook, - view_alpha_prior: , - col_metadata: , - comments: , - row_names: + Self(lace_codebook::Codebook { + table_name: codebook.table_name, + state_prior_process: codebook.state_alpha_prior.map( + |alpha_prior| lace_codebook::PriorProcess::Dirichlet { + alpha_prior, + }, + ), + view_prior_process: codebook.view_alpha_prior.map(|alpha_prior| { + lace_codebook::PriorProcess::Dirichlet { alpha_prior } + }), + col_metadata: codebook.col_metadata, + comments: codebook.comments, + row_names: codebook.row_names, }) } } @@ -191,7 +228,7 @@ impl From for Metadata { .collect(), state_ids: metadata.state_ids, codebook: metadata.codebook.into(), - data: metadata.codebook, + data: metadata.data, rng: metadata.rng, } } diff --git a/lace/lace_metadata/src/lib.rs b/lace/lace_metadata/src/lib.rs index 1ca51b5c..f1b0d0da 100644 --- a/lace/lace_metadata/src/lib.rs +++ b/lace/lace_metadata/src/lib.rs @@ -59,7 +59,7 @@ macro_rules! to_from_newtype { } /// creates a bunch of helper functions in a `load` module that load the -/// metadata components and create and `Meatadata` object of the appropriate +/// metadata components and create and `Metadata` object of the appropriate /// version. #[macro_export] macro_rules! loaders { @@ -133,7 +133,7 @@ macro_rules! loaders { load(codebook_path, file_config.serialized_type) } - pub(crate) fn load_meatadata>( + pub(crate) fn load_metadata>( path: P, file_config: &$crate::config::FileConfig, ) -> Result { @@ -203,7 +203,9 @@ pub fn load_metadata>( let md_version = file_config.metadata_version; match md_version { - 0 => crate::latest::load::load_meatadata(path, &file_config), + 0 => crate::versions::v1::load::load_metadata(path, &file_config) + .map(|metadata| metadata.into()), + 1 => crate::latest::load::load_metadata(path, &file_config), requested => Err(Error::UnsupportedMetadataVersion { requested, max_supported: crate::latest::METADATA_VERSION, diff --git a/lace/lace_metadata/src/utils.rs b/lace/lace_metadata/src/utils.rs index 18ae56a7..00b1439b 100644 --- a/lace/lace_metadata/src/utils.rs +++ b/lace/lace_metadata/src/utils.rs @@ -9,11 +9,12 @@ use log::info; use rand_xoshiro::Xoshiro256Plus; use serde::{Deserialize, Serialize}; +use crate::latest::Codebook; use crate::latest::DatalessStateAndDiagnostics; -use crate::latest::{Codebook, DataStore}; +use crate::versions::v1::DataStore; use crate::{Error, FileConfig, SerializedType}; -fn extenson_from_path>(path: &P) -> Result<&str, Error> { +fn extension_from_path>(path: &P) -> Result<&str, Error> { path.as_ref() .extension() .and_then(|s| s.to_str()) @@ -28,7 +29,7 @@ fn extenson_from_path>(path: &P) -> Result<&str, Error> { fn serialized_type_from_path>( path: &P, ) -> Result { - let ext = extenson_from_path(path)?; + let ext = extension_from_path(path)?; SerializedType::from_str(ext) } diff --git a/lace/lace_metadata/src/versions/mod.rs b/lace/lace_metadata/src/versions/mod.rs new file mode 100644 index 00000000..a3a6d96c --- /dev/null +++ b/lace/lace_metadata/src/versions/mod.rs @@ -0,0 +1 @@ +pub mod v1; diff --git a/lace/lace_metadata/src/versions/v1.rs b/lace/lace_metadata/src/versions/v1.rs new file mode 100644 index 00000000..0f00b542 --- /dev/null +++ b/lace/lace_metadata/src/versions/v1.rs @@ -0,0 +1,366 @@ +use std::collections::BTreeMap; + +use lace_cc::component::ConjugateComponent; +use lace_cc::feature::{ColModel, Column, MissingNotAtRandom}; +use lace_cc::state::{State, StateDiagnostics}; +use lace_cc::traits::{LaceDatum, LaceLikelihood, LacePrior, LaceStat}; +use lace_cc::view::View; +use lace_data::{FeatureData, SparseContainer}; +use lace_stats::prior::csd::CsdHyper; +use lace_stats::prior::nix::NixHyper; +use lace_stats::prior::pg::PgHyper; +use lace_stats::rv::dist::{ + Bernoulli, Beta, Categorical, Gamma, Gaussian, Mixture, + NormalInvChiSquared, Poisson, SymmetricDirichlet, +}; +use lace_stats::MixtureType; + +use rand_xoshiro::Xoshiro256Plus; +use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use std::sync::OnceLock; + +use crate::{impl_metadata_version, to_from_newtype, MetadataVersion}; + +pub const METADATA_VERSION: i32 = 0; + +// #[derive(Serialize, Deserialize, Debug)] +// #[serde(deny_unknown_fields)] +// pub struct Codebook(pub lace_codebook::Codebook); + +#[derive(Serialize, Deserialize, Debug)] +#[serde(deny_unknown_fields)] +pub struct Assignment { + pub alpha: f64, + pub asgn: Vec, + pub counts: Vec, + pub n_cats: usize, + pub prior: Gamma, +} + +/// Codebook object for storing information about the dataset +#[derive(Serialize, Deserialize, Debug)] +#[serde(deny_unknown_fields)] +pub struct Codebook { + pub table_name: String, + pub state_alpha_prior: Option, + pub view_alpha_prior: Option, + pub col_metadata: lace_codebook::ColMetadataList, + pub comments: Option, + pub row_names: lace_codebook::RowNameList, +} + +// to_from_newtype!(lace_codebook::Codebook, Codebook); + +#[derive(Debug, Serialize, Deserialize)] +pub struct Metadata { + pub states: Vec, + pub state_ids: Vec, + pub codebook: Codebook, + pub data: Option, + pub rng: Option, +} + +#[derive(Serialize, Deserialize, Debug)] +#[serde(deny_unknown_fields)] +pub struct DataStore(BTreeMap); + +impl From for DataStore { + fn from(data: lace_data::DataStore) -> Self { + Self(data.0) + } +} + +impl From for lace_data::DataStore { + fn from(data: DataStore) -> Self { + Self(data.0) + } +} + +#[derive(Serialize, Deserialize, Debug)] +pub struct DatalessStateAndDiagnostics { + pub state: DatalessState, + pub diagnostics: StateDiagnostics, +} + +#[derive(Serialize, Deserialize, Debug)] +#[serde(deny_unknown_fields)] +pub struct DatalessState { + pub views: Vec, + pub asgn: Assignment, + pub weights: Vec, + pub view_alpha_prior: Gamma, + pub loglike: f64, + #[serde(default)] + pub log_prior: f64, + #[serde(default)] + pub log_view_alpha_prior: f64, + #[serde(default)] + pub log_state_alpha_prior: f64, +} + +// /// Marks a state as having no data in its columns +// pub struct EmptyState(pub State); + +// impl From for DatalessStateAndDiagnostics { +// fn from(mut state: lace_cc::state::State) -> Self { +// Self { +// state: DatalessState { +// views: state.views.drain(..).map(|view| view.into()).collect(), +// asgn: state.asgn, +// weights: state.weights, +// view_alpha_prior: state.view_alpha_prior, +// loglike: state.loglike, +// log_prior: state.log_prior, +// log_view_alpha_prior: state.log_view_alpha_prior, +// log_state_alpha_prior: state.log_state_alpha_prior, +// }, +// diagnostics: state.diagnostics, +// } +// } +// } + +// impl From for EmptyState { +// fn from(mut dl_state: DatalessStateAndDiagnostics) -> EmptyState { +// let views = dl_state +// .state +// .views +// .drain(..) +// .map(|mut dl_view| { +// let mut ftr_ids: Vec = +// dl_view.ftrs.keys().copied().collect(); + +// let ftrs: BTreeMap = ftr_ids +// .drain(..) +// .map(|id| { +// let dl_ftr = dl_view.ftrs.remove(&id).unwrap(); +// let cm: ColModel = match dl_ftr { +// DatalessColModel::Continuous(cm) => { +// let ecm: EmptyColumn<_, _, _, _> = cm.into(); +// ColModel::Continuous(ecm.0) +// } +// DatalessColModel::Categorical(cm) => { +// let ecm: EmptyColumn<_, _, _, _> = cm.into(); +// ColModel::Categorical(ecm.0) +// } +// DatalessColModel::Count(cm) => { +// let ecm: EmptyColumn<_, _, _, _> = cm.into(); +// ColModel::Count(ecm.0) +// } +// DatalessColModel::MissingNotAtRandom(mnar) => { +// let fx: ColModel = (*mnar.fx).into(); +// let missing: EmptyColumn<_, _, _, _> = +// mnar.missing.into(); +// ColModel::MissingNotAtRandom( +// MissingNotAtRandom { +// fx: Box::new(fx), +// present: missing.0, +// }, +// ) +// } +// }; +// (id, cm) +// }) +// .collect(); + +// View { +// asgn: dl_view.asgn, +// weights: dl_view.weights, +// ftrs, +// } +// }) +// .collect(); + +// EmptyState(State { +// views, +// asgn: dl_state.state.asgn, +// weights: dl_state.state.weights, +// view_alpha_prior: dl_state.state.view_alpha_prior, +// loglike: dl_state.state.loglike, +// log_prior: dl_state.state.log_prior, +// log_view_alpha_prior: dl_state.state.log_view_alpha_prior, +// log_state_alpha_prior: dl_state.state.log_state_alpha_prior, +// diagnostics: dl_state.diagnostics, +// }) +// } +// } + +#[derive(Serialize, Deserialize, Debug)] +#[serde(deny_unknown_fields)] +pub struct DatalessView { + pub ftrs: BTreeMap, + pub asgn: Assignment, + pub weights: Vec, +} + +// impl From for DatalessView { +// fn from(mut view: View) -> DatalessView { +// DatalessView { +// ftrs: { +// let keys: Vec = view.ftrs.keys().cloned().collect(); +// keys.iter() +// .map(|k| (*k, view.ftrs.remove(k).unwrap().into())) +// .collect() +// }, +// asgn: view.asgn, +// weights: view.weights, +// } +// } +// } + +#[derive(Serialize, Deserialize, Debug)] +#[serde(deny_unknown_fields)] +pub enum DatalessColModel { + Continuous(DatalessColumn), + Categorical(DatalessColumn), + Count(DatalessColumn), + MissingNotAtRandom(DatalessMissingNotAtRandom), +} + +impl From for DatalessColModel { + fn from(col_model: ColModel) -> DatalessColModel { + match col_model { + ColModel::Categorical(col) => { + DatalessColModel::Categorical(col.into()) + } + ColModel::Continuous(col) => { + DatalessColModel::Continuous(col.into()) + } + ColModel::Count(col) => DatalessColModel::Count(col.into()), + ColModel::MissingNotAtRandom(mnar) => { + DatalessColModel::MissingNotAtRandom( + DatalessMissingNotAtRandom { + fx: Box::new((*mnar.fx).into()), + missing: mnar.present.into(), + }, + ) + } + } + } +} + +impl From for ColModel { + fn from(col_model: DatalessColModel) -> Self { + match col_model { + DatalessColModel::Continuous(cm) => { + let empty_col: EmptyColumn<_, _, _, _> = cm.into(); + Self::Continuous(empty_col.0) + } + DatalessColModel::Count(cm) => { + let empty_col: EmptyColumn<_, _, _, _> = cm.into(); + Self::Count(empty_col.0) + } + DatalessColModel::Categorical(cm) => { + let empty_col: EmptyColumn<_, _, _, _> = cm.into(); + Self::Categorical(empty_col.0) + } + _ => unimplemented!(), + } + } +} + +#[derive(Serialize, Deserialize, Debug)] +#[serde(deny_unknown_fields)] +pub struct DatalessMissingNotAtRandom { + pub fx: Box, + pub missing: DatalessColumn, +} + +#[derive(Serialize, Deserialize, Debug)] +#[serde(deny_unknown_fields)] +pub struct DatalessColumn +where + X: LaceDatum, + Fx: LaceLikelihood, + Pr: LacePrior, + H: Serialize + DeserializeOwned, + MixtureType: From>, + Fx::Stat: LaceStat, + Pr::LnMCache: Clone + std::fmt::Debug, + Pr::LnPpCache: Send + Sync + Clone + std::fmt::Debug, +{ + pub id: usize, + #[serde(bound(deserialize = "X: serde::de::DeserializeOwned"))] + pub components: Vec>, + #[serde(bound(deserialize = "Pr: serde::de::DeserializeOwned"))] + pub prior: Pr, + #[serde(bound(deserialize = "H: serde::de::DeserializeOwned"))] + pub hyper: H, + #[serde(default)] + pub ignore_hyper: bool, +} + +macro_rules! col2dataless { + ($x:ty, $fx:ty, $pr:ty, $h:ty) => { + impl From> + for DatalessColumn<$x, $fx, $pr, $h> + { + fn from(col: Column<$x, $fx, $pr, $h>) -> Self { + DatalessColumn { + id: col.id, + components: col.components, + prior: col.prior, + hyper: col.hyper, + ignore_hyper: col.ignore_hyper, + } + } + } + }; +} + +col2dataless!(f64, Gaussian, NormalInvChiSquared, NixHyper); +col2dataless!(u8, Categorical, SymmetricDirichlet, CsdHyper); +col2dataless!(u32, Poisson, Gamma, PgHyper); +col2dataless!(bool, Bernoulli, Beta, ()); + +pub struct EmptyColumn(pub Column) +where + X: LaceDatum, + Fx: LaceLikelihood, + Fx::Stat: LaceStat, + Pr: LacePrior, + H: Serialize + DeserializeOwned, + Pr::LnMCache: Clone + std::fmt::Debug, + Pr::LnPpCache: Send + Sync + Clone + std::fmt::Debug, + MixtureType: From>; + +macro_rules! dataless2col { + ($x:ty, $fx:ty, $pr:ty, $h:ty) => { + impl From> + for EmptyColumn<$x, $fx, $pr, $h> + { + fn from( + col_dl: DatalessColumn<$x, $fx, $pr, $h>, + ) -> EmptyColumn<$x, $fx, $pr, $h> { + EmptyColumn(Column { + id: col_dl.id, + components: col_dl.components, + prior: col_dl.prior, + hyper: col_dl.hyper, + data: SparseContainer::default(), + ln_m_cache: OnceLock::new(), + ignore_hyper: col_dl.ignore_hyper, + }) + } + } + }; +} + +dataless2col!(f64, Gaussian, NormalInvChiSquared, NixHyper); +dataless2col!(u8, Categorical, SymmetricDirichlet, CsdHyper); +dataless2col!(u32, Poisson, Gamma, PgHyper); +dataless2col!(bool, Bernoulli, Beta, ()); + +impl_metadata_version!(Metadata, METADATA_VERSION); +impl_metadata_version!(Codebook, METADATA_VERSION); +impl_metadata_version!(DatalessColModel, METADATA_VERSION); +impl_metadata_version!(DatalessView, METADATA_VERSION); +impl_metadata_version!(DatalessState, METADATA_VERSION); +impl_metadata_version!(DataStore, METADATA_VERSION); + +// Create the loaders module for latest +crate::loaders!( + DatalessStateAndDiagnostics, + DataStore, + Codebook, + rand_xoshiro::Xoshiro256Plus +); From 6049aab7abda475e141be0c5d36110954032e830 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Wed, 28 Feb 2024 13:38:02 -0600 Subject: [PATCH 03/43] Move geweke examples to lace_cc; get view passing Got the view geweke tests passing for SAMS, Slice, and Gibbs using the Dirichlet process under the new PriorProcess abstraction. Lace still doesn't compile, but one thing at a time! --- lace/Cargo.lock | 1 + lace/lace_cc/Cargo.toml | 1 + lace/{ => lace_cc}/examples/state_geweke.rs | 0 lace/{ => lace_cc}/examples/view_geweke.rs | 15 +++-- lace/lace_cc/src/view.rs | 21 +++---- lace/lace_stats/src/prior_process.rs | 67 +++++++++++++++++---- lace/src/data/data_source.rs | 2 +- lace/src/interface/engine/mod.rs | 6 +- lace/src/interface/engine/update_handler.rs | 5 +- lace/src/prelude.rs | 2 +- 10 files changed, 82 insertions(+), 38 deletions(-) rename lace/{ => lace_cc}/examples/state_geweke.rs (100%) rename lace/{ => lace_cc}/examples/view_geweke.rs (90%) diff --git a/lace/Cargo.lock b/lace/Cargo.lock index 7e45cc4c..bb0631a4 100644 --- a/lace/Cargo.lock +++ b/lace/Cargo.lock @@ -1179,6 +1179,7 @@ name = "lace_cc" version = "0.6.0" dependencies = [ "approx", + "clap", "criterion", "enum_dispatch", "itertools 0.12.0", diff --git a/lace/lace_cc/Cargo.toml b/lace/lace_cc/Cargo.toml index 08078830..05af0b2b 100644 --- a/lace/lace_cc/Cargo.toml +++ b/lace/lace_cc/Cargo.toml @@ -28,6 +28,7 @@ itertools = "0.12" [dev-dependencies] approx = "0.5.1" criterion = "0.5" +clap = { version = "4.3.17", features = ["derive"] } [[bench]] name = "state_types" diff --git a/lace/examples/state_geweke.rs b/lace/lace_cc/examples/state_geweke.rs similarity index 100% rename from lace/examples/state_geweke.rs rename to lace/lace_cc/examples/state_geweke.rs diff --git a/lace/examples/view_geweke.rs b/lace/lace_cc/examples/view_geweke.rs similarity index 90% rename from lace/examples/view_geweke.rs rename to lace/lace_cc/examples/view_geweke.rs index cf7768f3..020647c4 100644 --- a/lace/examples/view_geweke.rs +++ b/lace/lace_cc/examples/view_geweke.rs @@ -1,18 +1,17 @@ use clap::Parser; -use lace::prelude::*; -use lace_cc::view::ViewGewekeSettings; -use lace_geweke::GewekeTester; use rand::SeedableRng; use rand_xoshiro::Xoshiro256Plus; +use lace_cc::alg::RowAssignAlg; +use lace_cc::feature::FType; +use lace_cc::transition::ViewTransition; +use lace_cc::view::{View, ViewGewekeSettings}; +use lace_geweke::GewekeTester; + #[derive(Parser, Debug)] #[clap(rename_all = "kebab")] struct Opt { - #[clap( - long, - default_value = "gibbs", - value_parser = ["finite_cpu", "gibbs", "slice", "sams"], - )] + #[clap(long, default_value = "gibbs")] pub alg: RowAssignAlg, #[clap(short, long, default_value = "20")] pub nrows: usize, diff --git a/lace/lace_cc/src/view.rs b/lace/lace_cc/src/view.rs index 80f03939..c3e4c7ad 100644 --- a/lace/lace_cc/src/view.rs +++ b/lace/lace_cc/src/view.rs @@ -400,7 +400,7 @@ impl View { let weights: Vec = { // FIXME: only works for dirichlet - let dirvec = self.prior_process.weight_vec(true); + let dirvec = self.prior_process.weight_vec_unnormed(true); let dir = Dirichlet::new(dirvec).unwrap(); dir.draw(&mut rng) }; @@ -849,9 +849,7 @@ impl View { + lcrp( asgn.len(), &asgn.counts, - self.prior_process - .process - .ln_singleton_weight(self.n_cats()), + self.prior_process.alpha().unwrap(), ); self.drop_component(self.n_cats()); @@ -871,9 +869,7 @@ impl View { + lcrp( self.asgn().len(), &self.asgn().counts, - self.prior_process - .process - .ln_singleton_weight(self.n_cats()), + self.prior_process.alpha().unwrap(), ); let (logp_spt, logq_spt, asgn_opt) = self.propose_split(i, j, false, rng); @@ -959,9 +955,7 @@ impl View { logp += lcrp( self.asgn().len(), &self.asgn().counts, - self.prior_process - .process - .ln_singleton_weight(self.n_cats()), + self.prior_process.alpha().unwrap(), ); None } else { @@ -980,8 +974,11 @@ impl View { .build() .unwrap(); - // FIXME: alpha: see above - logp += lcrp(asgn.len(), &asgn.counts, 1.0); + logp += lcrp( + asgn.len(), + &asgn.counts, + self.prior_process.alpha().unwrap(), + ); Some(asgn) }; diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index 9b9a3b82..b133b0bd 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -12,7 +12,12 @@ pub trait PriorProcessT { fn ln_singleton_weight(&self, n_cats: usize) -> f64; - fn weight_vec(&self, asgn: &Assignment, append_new: bool) -> Vec; + fn weight_vec( + &self, + asgn: &Assignment, + normed: bool, + append_new: bool, + ) -> Vec; fn slice_sb_extend( &self, @@ -52,7 +57,12 @@ impl PriorProcessT for Dirichlet { self.alpha.ln() } - fn weight_vec(&self, asgn: &Assignment, append_new: bool) -> Vec { + fn weight_vec( + &self, + asgn: &Assignment, + normed: bool, + append_new: bool, + ) -> Vec { let mut weights: Vec = asgn.counts.iter().map(|&ct| ct as f64).collect(); @@ -63,7 +73,9 @@ impl PriorProcessT for Dirichlet { asgn.len() as f64 }; - weights.iter_mut().for_each(|ct| *ct /= z); + if normed { + weights.iter_mut().for_each(|ct| *ct /= z); + } weights } @@ -103,7 +115,17 @@ impl PriorProcessT for Dirichlet { } fn update_params(&mut self, asgn: &Assignment, rng: &mut R) -> f64 { - unimplemented!() + // TODO: Should we use a different method to draw CRP alpha that can + // extend outside of the bulk of the prior's mass? + let cts = &asgn.counts; + let n: usize = asgn.len(); + let loglike = |alpha: &f64| crate::assignment::lcrp(n, cts, *alpha); + let prior_ref = &self.prior; + let prior_draw = |rng: &mut R| prior_ref.draw(rng); + let mh_result = + crate::mh::mh_prior(self.alpha, loglike, prior_draw, 100, rng); + self.alpha = mh_result.x; + mh_result.score_x } fn reset_params(&mut self, rng: &mut R) { @@ -144,7 +166,12 @@ impl PriorProcessT for PitmanYor { (self.alpha + self.d * (n_cats as f64)).ln() } - fn weight_vec(&self, asgn: &Assignment, append_new: bool) -> Vec { + fn weight_vec( + &self, + asgn: &Assignment, + normed: bool, + append_new: bool, + ) -> Vec { let mut weights: Vec = asgn.counts.iter().map(|&ct| ct as f64 - self.d).collect(); @@ -155,7 +182,9 @@ impl PriorProcessT for PitmanYor { asgn.len() as f64 }; - weights.iter_mut().for_each(|ct| *ct /= z); + if normed { + weights.iter_mut().for_each(|ct| *ct /= z); + } weights } @@ -208,10 +237,15 @@ impl PriorProcessT for Process { } } - fn weight_vec(&self, asgn: &Assignment, append_new: bool) -> Vec { + fn weight_vec( + &self, + asgn: &Assignment, + normed: bool, + append_new: bool, + ) -> Vec { match self { - Self::Dirichlet(proc) => proc.weight_vec(asgn, append_new), - Self::PitmanYor(proc) => proc.weight_vec(asgn, append_new), + Self::Dirichlet(proc) => proc.weight_vec(asgn, normed, append_new), + Self::PitmanYor(proc) => proc.weight_vec(asgn, normed, append_new), } } @@ -266,7 +300,11 @@ impl PriorProcess { } pub fn weight_vec(&self, append_new: bool) -> Vec { - self.process.weight_vec(&self.asgn, append_new) + self.process.weight_vec(&self.asgn, true, append_new) + } + + pub fn weight_vec_unnormed(&self, append_new: bool) -> Vec { + self.process.weight_vec(&self.asgn, false, append_new) } pub fn update_params(&mut self, rng: &mut R) -> f64 { @@ -313,10 +351,15 @@ fn sb_slice_extend( } let n_cats = weights.len() as f64; + let mut beta = Beta::new(1.0 + d, alpha).unwrap(); + let mut iters: u16 = 0; loop { - let beta = - Beta::new(1.0 + d, alpha + iters as f64 + n_cats + 1.0).unwrap(); + if d > 0.0 { + let b = (iters as f64) + n_cats + 1.0; + beta.set_beta(alpha + b * d).unwrap(); + } + let vk: f64 = beta.draw(&mut rng); let bk = vk * b_star; b_star *= 1.0 - vk; diff --git a/lace/src/data/data_source.rs b/lace/src/data/data_source.rs index c85538f2..23f6d2e2 100644 --- a/lace/src/data/data_source.rs +++ b/lace/src/data/data_source.rs @@ -175,7 +175,7 @@ impl DataSource { use crate::codebook::data; let codebook = match &self { DataSource::Polars(df) => { - data::df_to_codebook(df, None, None, false) + data::df_to_codebook(df, None, None, None, false) } DataSource::Empty => Ok(Codebook::default()), }?; diff --git a/lace/src/interface/engine/mod.rs b/lace/src/interface/engine/mod.rs index 015620bd..bc7925d0 100644 --- a/lace/src/interface/engine/mod.rs +++ b/lace/src/interface/engine/mod.rs @@ -75,7 +75,7 @@ impl HasData for Engine { #[inline] fn summarize_feature(&self, ix: usize) -> SummaryStatistics { let state = &self.states[0]; - let view_ix = state.asgn.asgn[ix]; + let view_ix = state.asgn().asgn[ix]; // XXX: Cloning the data could be very slow state.views[view_ix].ftrs[&ix].clone_data().summarize() } @@ -154,8 +154,8 @@ impl Engine { col_models_from_data_src(codebook, data_source, &mut rng) .map_err(NewEngineError::DataParseError)?; - let state_alpha_prior = codebook - .state_alpha_prior + let state_prior_process = codebook + .state_prior_process .clone() .unwrap_or_else(lace_consts::state_alpha_prior); diff --git a/lace/src/interface/engine/update_handler.rs b/lace/src/interface/engine/update_handler.rs index 7f709d6e..6d34fab6 100644 --- a/lace/src/interface/engine/update_handler.rs +++ b/lace/src/interface/engine/update_handler.rs @@ -418,7 +418,10 @@ impl UpdateHandler for ProgressBar { sender .lock() .unwrap() - .send((state_id, state.log_prior + state.loglike)) + .send(( + state_id, + state.score.ln_prior + state.score.ln_likelihood, + )) .unwrap(); } } diff --git a/lace/src/prelude.rs b/lace/src/prelude.rs index e6ea31b2..e01bf563 100644 --- a/lace/src/prelude.rs +++ b/lace/src/prelude.rs @@ -12,7 +12,6 @@ pub use crate::data::DataSource; pub use lace_cc::{ alg::{ColAssignAlg, RowAssignAlg}, - assignment::AssignmentBuilder, config::StateUpdateConfig, feature::{Column, FType}, state::State, @@ -23,6 +22,7 @@ pub use lace_codebook::{ Codebook, CodebookError, ColMetadata, ColMetadataList, ColType, }; pub use lace_metadata::SerializedType; +pub use lace_stats::assignment::Assignment; pub use lace_stats::prior::{csd::CsdHyper, nix::NixHyper, pg::PgHyper}; pub use lace_stats::rv; pub use lace_utils as utils; From 4d5f27ffb80a2f4fc3dca086361bc4cc0d0c3fe2 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Wed, 28 Feb 2024 14:01:40 -0600 Subject: [PATCH 04/43] Get state geweke example to compile --- lace/Cargo.lock | 37 +++++++++++++++++---------- lace/lace_cc/Cargo.toml | 1 + lace/lace_cc/examples/state_geweke.rs | 31 +++++++++++----------- 3 files changed, 40 insertions(+), 29 deletions(-) diff --git a/lace/Cargo.lock b/lace/Cargo.lock index bb0631a4..185d0098 100644 --- a/lace/Cargo.lock +++ b/lace/Cargo.lock @@ -610,12 +610,12 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" dependencies = [ - "darling_core 0.20.3", - "darling_macro 0.20.3", + "darling_core 0.20.8", + "darling_macro 0.20.8", ] [[package]] @@ -634,9 +634,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" dependencies = [ "fnv", "ident_case", @@ -659,11 +659,11 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.3" +version = "0.20.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" dependencies = [ - "darling_core 0.20.3", + "darling_core 0.20.8", "quote", "syn 2.0.48", ] @@ -1189,6 +1189,7 @@ dependencies = [ "lace_geweke", "lace_stats", "lace_utils", + "plotly", "rand", "rand_xoshiro", "rayon", @@ -1623,6 +1624,12 @@ dependencies = [ "serde", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.45" @@ -2523,7 +2530,7 @@ version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" dependencies = [ - "darling 0.20.3", + "darling 0.20.8", "proc-macro2", "quote", "syn 2.0.48", @@ -2765,12 +2772,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.31" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" dependencies = [ "deranged", "itoa", + "num-conv", "powerfmt", "serde", "time-core", @@ -2785,10 +2793,11 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" dependencies = [ + "num-conv", "time-core", ] diff --git a/lace/lace_cc/Cargo.toml b/lace/lace_cc/Cargo.toml index 05af0b2b..18565d0b 100644 --- a/lace/lace_cc/Cargo.toml +++ b/lace/lace_cc/Cargo.toml @@ -29,6 +29,7 @@ itertools = "0.12" approx = "0.5.1" criterion = "0.5" clap = { version = "4.3.17", features = ["derive"] } +plotly = "0.8" [[bench]] name = "state_types" diff --git a/lace/lace_cc/examples/state_geweke.rs b/lace/lace_cc/examples/state_geweke.rs index eeeeddde..a2f40d41 100644 --- a/lace/lace_cc/examples/state_geweke.rs +++ b/lace/lace_cc/examples/state_geweke.rs @@ -1,27 +1,23 @@ use clap::Parser; -use lace::prelude::*; -use lace_cc::state::StateGewekeSettings; -use lace_geweke::GewekeTester; use plotly::common::Mode; use plotly::layout::Layout; use plotly::{Plot, Scatter}; use rand::SeedableRng; use rand_xoshiro::Xoshiro256Plus; +use lace_cc::alg::{ColAssignAlg, RowAssignAlg}; +use lace_cc::feature::FType; +use lace_cc::state::{State, StateGewekeSettings}; +use lace_cc::transition::StateTransition; +use lace_geweke::GewekeTester; +use lace_stats::prior_process::PriorProcessType; + #[derive(Parser, Debug)] #[clap(rename_all = "kebab")] struct Opt { - #[clap( - long, - default_value = "gibbs", - value_parser = ["finite_cpu", "gibbs", "slice", "sams"], - )] + #[clap(long, default_value = "gibbs")] pub row_alg: RowAssignAlg, - #[clap( - long, - default_value = "gibbs", - value_parser = ["finite_cpu", "gibbs", "slice"], - )] + #[clap(long, default_value = "gibbs")] pub col_alg: ColAssignAlg, #[clap(long, default_value = "50")] pub nrows: usize, @@ -59,7 +55,12 @@ fn main() { // The state's Geweke test settings require the number of rows in the // state (50), and the types of each column. Everything else is filled out // automatically. - let mut settings = StateGewekeSettings::new(opt.nrows, ftypes); + let mut settings = StateGewekeSettings::new( + opt.nrows, + ftypes, + PriorProcessType::Dirichlet, + PriorProcessType::Dirichlet, + ); let mut transitions: Vec = Vec::new(); if !opt.no_col_reassign { @@ -97,7 +98,7 @@ fn main() { res.report(); if let Some(ref key) = opt.plot_var { - use lace::stats::EmpiricalCdf; + use lace_stats::EmpiricalCdf; use lace_utils::minmax; let (min_f, max_f) = minmax(res.forward.get(key).unwrap()); let (min_p, max_p) = minmax(res.posterior.get(key).unwrap()); From 9dcc9543def55acaa614fab4f905d34a90ff45b5 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Wed, 28 Feb 2024 20:20:15 -0600 Subject: [PATCH 05/43] incremental updates --- lace/lace_cc/src/state.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lace/lace_cc/src/state.rs b/lace/lace_cc/src/state.rs index ba3f4c5e..d597d854 100644 --- a/lace/lace_cc/src/state.rs +++ b/lace/lace_cc/src/state.rs @@ -806,7 +806,7 @@ impl State { let n_cols = self.n_cols(); let weights: Vec = { - let dirvec = self.prior_process.weight_vec(true); + let dirvec = self.prior_process.weight_vec_unnormed(true); // FIXME: this only works for Dirichlet process! let dir = Dirichlet::new(dirvec).unwrap(); dir.draw(rng) From edc4c4c51e2c0f4d82995a98c2d8131d4658f780 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 4 Mar 2024 14:12:18 -0600 Subject: [PATCH 06/43] PriorProcess builder --- lace/lace_cc/examples/view_geweke.rs | 8 ++ lace/lace_cc/src/feature/column.rs | 22 ++- lace/lace_cc/src/feature/mnar.rs | 5 +- lace/lace_cc/src/feature/traits.rs | 4 +- lace/lace_cc/src/lib.rs | 4 +- lace/lace_cc/src/misc.rs | 140 +++++++++--------- lace/lace_cc/src/state.rs | 57 ++++---- lace/lace_cc/src/state/builder.rs | 13 +- lace/lace_cc/src/view.rs | 51 +++++-- lace/lace_cc/tests/enum.rs | 12 +- lace/lace_cc/tests/enum_state.rs | 83 +++++++---- lace/lace_cc/tests/state.rs | 13 +- lace/lace_cc/tests/view.rs | 4 +- lace/lace_cc/tests/view_enum.rs | 31 ++-- lace/lace_codebook/src/data.rs | 2 - lace/lace_stats/src/assignment.rs | 146 +++++++++++++++++++ lace/lace_stats/src/prior_process.rs | 205 +++++++++++++++++++++++++-- 17 files changed, 619 insertions(+), 181 deletions(-) diff --git a/lace/lace_cc/examples/view_geweke.rs b/lace/lace_cc/examples/view_geweke.rs index 020647c4..8d22591d 100644 --- a/lace/lace_cc/examples/view_geweke.rs +++ b/lace/lace_cc/examples/view_geweke.rs @@ -21,6 +21,8 @@ struct Opt { pub no_view_alpha: bool, #[clap(long)] pub no_priors: bool, + #[clap(long)] + pub pitman_yor: bool, } fn main() { @@ -42,15 +44,21 @@ fn main() { .transitions .push(ViewTransition::RowAssignment(opt.alg)); } + if !opt.no_view_alpha { settings .transitions .push(ViewTransition::PriorProcessParams); } + if !opt.no_priors { settings.transitions.push(ViewTransition::FeaturePriors); } + if opt.pitman_yor { + settings = settings.with_pitman_yor_process(); + } + settings.transitions.push(ViewTransition::ComponentParams); settings diff --git a/lace/lace_cc/src/feature/column.rs b/lace/lace_cc/src/feature/column.rs index 52a97d05..fd33e203 100644 --- a/lace/lace_cc/src/feature/column.rs +++ b/lace/lace_cc/src/feature/column.rs @@ -712,18 +712,22 @@ impl QmcEntropy for ColModel { mod tests { use super::*; - use crate::assignment::AssignmentBuilder; use crate::feature::{Column, Feature}; use lace_data::{FeatureData, SparseContainer}; + use lace_stats::prior_process::{Builder, Dirichlet, Process}; use lace_stats::prior::nix::NixHyper; fn gauss_fixture() -> ColModel { let mut rng = rand::thread_rng(); - let asgn = AssignmentBuilder::new(5) - .with_alpha(1.0) + let asgn = Builder::new(5) + .with_process(Process::Dirichlet(Dirichlet { + alpha: 1.0, + prior: Gamma::default(), + })) .flat() .build() - .unwrap(); + .unwrap() + .asgn; let data_vec: Vec = vec![0.0, 1.0, 2.0, 3.0, 4.0]; let hyper = NixHyper::default(); let data = SparseContainer::from(data_vec); @@ -736,11 +740,15 @@ mod tests { fn categorical_fixture_u8() -> ColModel { let mut rng = rand::thread_rng(); - let asgn = AssignmentBuilder::new(5) - .with_alpha(1.0) + let asgn = Builder::new(5) + .with_process(Process::Dirichlet(Dirichlet { + alpha: 1.0, + prior: Gamma::default(), + })) .flat() .build() - .unwrap(); + .unwrap() + .asgn; let data_vec: Vec = vec![0, 1, 2, 0, 1]; let data = SparseContainer::from(data_vec); let hyper = CsdHyper::vague(3); diff --git a/lace/lace_cc/src/feature/mnar.rs b/lace/lace_cc/src/feature/mnar.rs index 9b335e0d..eb32fb00 100644 --- a/lace/lace_cc/src/feature/mnar.rs +++ b/lace/lace_cc/src/feature/mnar.rs @@ -278,10 +278,11 @@ mod test { present, }; let mut rng = rand::thread_rng(); - let asgn = crate::assignment::AssignmentBuilder::new(n) + let asgn = lace_stats::prior_process::Builder::new(n) .seed_from_rng(&mut rng) .build() - .unwrap(); + .unwrap() + .asgn; col.reassign(&asgn, &mut rng); (col, asgn) } diff --git a/lace/lace_cc/src/feature/traits.rs b/lace/lace_cc/src/feature/traits.rs index c66cafa9..5f4ceea5 100644 --- a/lace/lace_cc/src/feature/traits.rs +++ b/lace/lace_cc/src/feature/traits.rs @@ -162,8 +162,8 @@ pub(crate) trait FeatureHelper: Feature { #[cfg(test)] mod tests { use super::*; - use crate::assignment::AssignmentBuilder; use approx::*; + use lace_stats::prior_process::Builder as PriorProcessBuilder; use lace_stats::rv::dist::Gaussian; use lace_stats::rv::traits::Rv; @@ -175,7 +175,7 @@ mod tests { let hyper = NixHyper::default(); let prior = NormalInvChiSquared::new_unchecked(0.0, 1.0, 1.0, 1.0); for _ in 0..100 { - let asgn = AssignmentBuilder::new(n_rows).build().unwrap(); + let asgn = PriorProcessBuilder::new(n_rows).build().unwrap().asgn; let xs: Vec = g.sample(n_rows, &mut rng); let data = SparseContainer::from(xs); let mut feature = diff --git a/lace/lace_cc/src/lib.rs b/lace/lace_cc/src/lib.rs index 5297a037..6a8ec542 100644 --- a/lace/lace_cc/src/lib.rs +++ b/lace/lace_cc/src/lib.rs @@ -9,12 +9,12 @@ )] pub mod alg; -pub mod builders; +// pub mod builders; pub mod component; pub mod config; pub mod feature; pub mod massflip; -pub mod misc; +// pub mod misc; pub mod state; pub mod traits; pub mod transition; diff --git a/lace/lace_cc/src/misc.rs b/lace/lace_cc/src/misc.rs index cff4179e..c05403d2 100644 --- a/lace/lace_cc/src/misc.rs +++ b/lace/lace_cc/src/misc.rs @@ -4,83 +4,83 @@ use lace_stats::rv::traits::Rv; use rand::Rng; use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Hash, PartialEq, Eq, Ord, PartialOrd)] -pub struct CrpDraw { - pub asgn: Vec, - pub counts: Vec, - pub n_cats: usize, -} +// #[derive(Debug, Clone, Hash, PartialEq, Eq, Ord, PartialOrd)] +// pub struct CrpDraw { +// pub asgn: Vec, +// pub counts: Vec, +// pub n_cats: usize, +// } -/// Draw from Chinese Restaurant Process -pub fn crp_draw(n: usize, alpha: f64, rng: &mut R) -> CrpDraw { - let mut n_cats = 0; - let mut weights: Vec = vec![]; - let mut asgn: Vec = Vec::with_capacity(n); +// /// Draw from Chinese Restaurant Process +// pub fn crp_draw(n: usize, alpha: f64, rng: &mut R) -> CrpDraw { +// let mut n_cats = 0; +// let mut weights: Vec = vec![]; +// let mut asgn: Vec = Vec::with_capacity(n); - for _ in 0..n { - weights.push(alpha); - let k = pflip(&weights, 1, rng)[0]; - asgn.push(k); +// for _ in 0..n { +// weights.push(alpha); +// let k = pflip(&weights, 1, rng)[0]; +// asgn.push(k); - if k == n_cats { - weights[n_cats] = 1.0; - n_cats += 1; - } else { - weights.truncate(n_cats); - weights[k] += 1.0; - } - } - // convert weights to counts, correcting for possible floating point - // errors - let counts: Vec = - weights.iter().map(|w| (w + 0.5) as usize).collect(); +// if k == n_cats { +// weights[n_cats] = 1.0; +// n_cats += 1; +// } else { +// weights.truncate(n_cats); +// weights[k] += 1.0; +// } +// } +// // convert weights to counts, correcting for possible floating point +// // errors +// let counts: Vec = +// weights.iter().map(|w| (w + 0.5) as usize).collect(); - CrpDraw { - asgn, - counts, - n_cats, - } -} +// CrpDraw { +// asgn, +// counts, +// n_cats, +// } +// } -#[cfg(test)] -mod tests { - use super::*; +// #[cfg(test)] +// mod tests { +// use super::*; - const TOL: f64 = 1E-12; +// const TOL: f64 = 1E-12; - mod sb_slice { - use super::*; +// mod sb_slice { +// use super::*; - #[test] - fn should_return_input_weights_if_alpha_is_zero() { - let mut rng = rand::thread_rng(); - let weights_in: Vec = vec![0.8, 0.2, 0.0]; - let weights_out = - sb_slice_extend(weights_in.clone(), 1.0, 0.2, &mut rng) - .unwrap(); - let good = weights_in - .iter() - .zip(weights_out.iter()) - .all(|(wi, wo)| (wi - wo).abs() < TOL); - assert!(good); - } +// #[test] +// fn should_return_input_weights_if_alpha_is_zero() { +// let mut rng = rand::thread_rng(); +// let weights_in: Vec = vec![0.8, 0.2, 0.0]; +// let weights_out = +// sb_slice_extend(weights_in.clone(), 1.0, 0.2, &mut rng) +// .unwrap(); +// let good = weights_in +// .iter() +// .zip(weights_out.iter()) +// .all(|(wi, wo)| (wi - wo).abs() < TOL); +// assert!(good); +// } - #[test] - fn should_return_error_for_zero_u_star() { - let mut rng = rand::thread_rng(); - let weights_in: Vec = vec![0.8, 0.2]; - let u_star = 0.0; - let res = sb_slice_extend(weights_in, 1.0, u_star, &mut rng); - assert!(res.is_err()); - } +// #[test] +// fn should_return_error_for_zero_u_star() { +// let mut rng = rand::thread_rng(); +// let weights_in: Vec = vec![0.8, 0.2]; +// let u_star = 0.0; +// let res = sb_slice_extend(weights_in, 1.0, u_star, &mut rng); +// assert!(res.is_err()); +// } - #[test] - fn smoke() { - let mut rng = rand::thread_rng(); - let weights_in: Vec = vec![0.8, 0.2]; - let u_star = 0.1; - let res = sb_slice_extend(weights_in, 1.0, u_star, &mut rng); - assert!(res.is_ok()); - } - } -} +// #[test] +// fn smoke() { +// let mut rng = rand::thread_rng(); +// let weights_in: Vec = vec![0.8, 0.2]; +// let u_star = 0.1; +// let res = sb_slice_extend(weights_in, 1.0, u_star, &mut rng); +// assert!(res.is_ok()); +// } +// } +// } diff --git a/lace/lace_cc/src/state.rs b/lace/lace_cc/src/state.rs index d597d854..45891408 100644 --- a/lace/lace_cc/src/state.rs +++ b/lace/lace_cc/src/state.rs @@ -7,6 +7,7 @@ use std::f64::NEG_INFINITY; use lace_data::{Datum, FeatureData}; use lace_stats::assignment::Assignment; +use lace_stats::prior_process::Builder as AssignmentBuilder; use lace_stats::prior_process::{ PriorProcess, PriorProcessT, PriorProcessType, Process, }; @@ -22,7 +23,6 @@ use rayon::prelude::*; use serde::{Deserialize, Serialize}; use crate::alg::{ColAssignAlg, RowAssignAlg}; -use crate::builders::AssignmentBuilder; use crate::config::StateUpdateConfig; use crate::feature::Component; use crate::feature::{ColModel, FType, Feature}; @@ -68,8 +68,7 @@ unsafe impl Send for State {} unsafe impl Sync for State {} impl State { - pub fn new(views: Vec, asgn: Assignment, process: Process) -> Self { - let prior_process = PriorProcess { asgn, process }; + pub fn new(views: Vec, prior_process: PriorProcess) -> Self { let weights = prior_process.weight_vec(false); let mut state = State { @@ -409,7 +408,7 @@ impl State { counter_start: usize, draw_process_params: bool, rng: &mut R, - ) -> (BTreeMap, Vec) { + ) -> (BTreeMap, Vec) { let mut seeds = Vec::with_capacity(m); let tmp_asgns = (0..m) .map(|i| { @@ -427,8 +426,7 @@ impl State { if draw_process_params { process.reset_params(rng); }; - let tmp_asgn = - asgn_bldr.with_prior_process(process).build().unwrap(); + let tmp_asgn = asgn_bldr.with_process(process).build().unwrap(); seeds.push(seed); @@ -482,7 +480,7 @@ impl State { self.create_tmp_assigns(m, n_views, draw_alpha, rng).0; tmp_asgns.iter().for_each(|(_, tmp_asgn)| { - let singleton_logp = ftr.asgn_score(tmp_asgn); + let singleton_logp = ftr.asgn_score(&tmp_asgn.asgn); ftr_logps.push(singleton_logp); logps.push(a_part + singleton_logp); }); @@ -495,10 +493,20 @@ impl State { // If we chose a singleton view... if v_new >= n_views { + // let process = { + // // FIXME: this is not under seed control now that alpha + // // generation has been separated from the assignment. + // let mut process = self.views[0].prior_process.process.clone(); + // if draw_alpha { + // process.reset_params(rng) + // }; + // process + // }; + // This will error if v_new is not in the index, and that is a good. // thing. let tmp_asgn = tmp_asgns.remove(&v_new).unwrap(); - let new_view = view::Builder::from_assignment(tmp_asgn) + let new_view = view::Builder::from_prior_process(tmp_asgn) .seed_from_rng(rng) .build(); self.views.push(new_view); @@ -634,7 +642,7 @@ impl State { // TODO: might be faster with an iterator? for asgn in tmp_asgns.values() { - logps.push(ftr.asgn_score(asgn) + a_part); + logps.push(ftr.asgn_score(&asgn.asgn) + a_part); } (col_ix, view_ix, logps, tmp_asgn_seeds) @@ -683,14 +691,13 @@ impl State { if draw_process_params { process.reset_params(rng); }; - let tmp_asgn = asgn_bldr - .with_prior_process(process) - .build() - .unwrap(); - - let new_view = view::Builder::from_assignment(tmp_asgn) - .seed_from_rng(&mut rng) - .build(); + let tmp_asgn = + asgn_bldr.with_process(process).build().unwrap(); + + let new_view = + view::Builder::from_prior_process(tmp_asgn) + .seed_from_rng(&mut rng) + .build(); self.views.push(new_view); v_new = n_views; @@ -974,9 +981,9 @@ impl State { process.reset_params(rng); }; - let asgn = asgn_bldr.with_prior_process(process).build().unwrap(); + let prior_process = asgn_bldr.with_process(process).build().unwrap(); - let view = view::Builder::from_assignment(asgn) + let view = view::Builder::from_prior_process(prior_process) .seed_from_rng(rng) .build(); @@ -1328,17 +1335,15 @@ impl GewekeModel for State { }) }; - let asgn = if do_col_asgn_transition { + if do_col_asgn_transition { AssignmentBuilder::new(n_cols) } else { AssignmentBuilder::new(n_cols).flat() } - .with_prior_process(process.clone()) + .with_process(process.clone()) .seed_from_rng(&mut rng) .build() - .unwrap(); - - PriorProcess { process, asgn } + .unwrap() }; let view_asgn_bldr = if do_row_asgn_transition { @@ -1366,10 +1371,10 @@ impl GewekeModel for State { let asgn = view_asgn_bldr .clone() .seed_from_rng(&mut rng) - .with_prior_process(process) + .with_process(process.clone()) .build() .unwrap(); - view::Builder::from_assignment(asgn) + view::Builder::from_prior_process(asgn) .seed_from_rng(&mut rng) .build() }) diff --git a/lace/lace_cc/src/state/builder.rs b/lace/lace_cc/src/state/builder.rs index fdc920ed..bfb8c2cb 100644 --- a/lace/lace_cc/src/state/builder.rs +++ b/lace/lace_cc/src/state/builder.rs @@ -3,6 +3,7 @@ use lace_data::SparseContainer; use lace_stats::prior::csd::CsdHyper; use lace_stats::prior::nix::NixHyper; use lace_stats::prior::pg::PgHyper; +use lace_stats::prior_process::Builder as AssignmentBuilder; use lace_stats::prior_process::Process; use lace_stats::rv::dist::{ Categorical, Gamma, Gaussian, NormalInvChiSquared, Poisson, @@ -12,7 +13,6 @@ use rand::SeedableRng; use rand_xoshiro::Xoshiro256Plus; use thiserror::Error; -use crate::builders::AssignmentBuilder; use crate::feature::{ColModel, Column, Feature}; use crate::state::State; @@ -176,13 +176,15 @@ impl Builder { col_asgn.append(&mut vec![view_ix; to_drain]); col_counts.push(to_drain); let ftrs_view = ftrs.drain(0..to_drain).collect(); - let asgn = AssignmentBuilder::new(n_rows) + + let prior_process = AssignmentBuilder::new(n_rows) .with_n_cats(n_cats) .unwrap() .seed_from_rng(&mut rng) .build() .unwrap(); - crate::view::Builder::from_assignment(asgn) + + crate::view::Builder::from_prior_process(prior_process) .features(ftrs_view) .seed_from_rng(&mut rng) .build() @@ -200,12 +202,13 @@ impl Builder { ) }); - let asgn = AssignmentBuilder::from_vec(col_asgn) + let process = AssignmentBuilder::from_vec(col_asgn) .seed_from_rng(&mut rng) + .with_process(process) .build() .unwrap(); - Ok(State::new(views, asgn, process)) + Ok(State::new(views, process)) } } diff --git a/lace/lace_cc/src/view.rs b/lace/lace_cc/src/view.rs index c3e4c7ad..81b3cf83 100644 --- a/lace/lace_cc/src/view.rs +++ b/lace/lace_cc/src/view.rs @@ -4,6 +4,7 @@ use std::f64::NEG_INFINITY; use lace_data::{Datum, FeatureData}; use lace_geweke::{GewekeModel, GewekeResampleData, GewekeSummarize}; use lace_stats::assignment::Assignment; +use lace_stats::prior_process::Builder as AssignmentBuilder; use lace_stats::prior_process::{ PriorProcess, PriorProcessT, PriorProcessType, Process, }; @@ -17,7 +18,6 @@ use serde::{Deserialize, Serialize}; // use crate::cc::feature::geweke::{gen_geweke_col_models, ColumnGewekeSettings}; use crate::alg::RowAssignAlg; -use crate::builders::AssignmentBuilder; use crate::feature::geweke::GewekeColumnSummary; use crate::feature::geweke::{gen_geweke_col_models, ColumnGewekeSettings}; use crate::feature::{ColModel, FType, Feature}; @@ -73,6 +73,16 @@ impl Builder { } } + pub fn from_prior_process(prior_process: PriorProcess) -> Self { + Builder { + n_rows: prior_process.asgn.len(), + asgn: Some(prior_process.asgn), + process: Some(prior_process.process), + ftrs: None, + seed: None, + } + } + /// Put a custom `Gamma` prior on the CRP alpha #[must_use] pub fn prior_process(mut self, process: Process) -> Self { @@ -831,10 +841,11 @@ impl View { .collect(); AssignmentBuilder::from_vec(zs) - .with_prior_process(self.prior_process.process.clone()) + .with_process(self.prior_process.process.clone()) .seed_from_rng(rng) .build() .unwrap() + .asgn }; self.append_empty_component(rng); @@ -969,10 +980,11 @@ impl View { // FIXME: create (draw) new process outside to carry forward alpha let asgn = AssignmentBuilder::from_vec(tmp_z) - .with_prior_process(self.prior_process.process.clone()) + .with_process(self.prior_process.process.clone()) .seed_from_rng(rng) .build() - .unwrap(); + .unwrap() + .asgn; logp += lcrp( asgn.len(), @@ -1087,9 +1099,9 @@ fn view_geweke_asgn( process_type: PriorProcessType, rng: &mut R, ) -> (AssignmentBuilder, Process) { + use lace_consts::geweke_alpha_prior; let process = match process_type { PriorProcessType::Dirichlet => { - use lace_consts::geweke_alpha_prior; use lace_stats::prior_process::Dirichlet; let inner = if do_process_params_transition { Dirichlet::from_prior(geweke_alpha_prior(), rng) @@ -1102,11 +1114,26 @@ fn view_geweke_asgn( Process::Dirichlet(inner) } PriorProcessType::PitmanYor => { - unimplemented!() + use lace_stats::prior_process::PitmanYor; + use lace_stats::rv::dist::Beta; + let inner = if do_process_params_transition { + PitmanYor::from_prior( + geweke_alpha_prior(), + Beta::jeffreys(), + rng, + ) + } else { + PitmanYor { + alpha: 1.0, + d: 0.2, + prior_alpha: geweke_alpha_prior(), + prior_d: Beta::jeffreys(), + } + }; + Process::PitmanYor(inner) } }; - let mut bldr = - AssignmentBuilder::new(n_rows).with_prior_process(process.clone()); + let mut bldr = AssignmentBuilder::new(n_rows).with_process(process.clone()); if !do_row_asgn_transition { bldr = bldr.flat(); @@ -1125,6 +1152,7 @@ impl GewekeModel for View { .iter() .any(|&t| t == ViewTransition::FeaturePriors); + // FIXME: Redundant! asgn_builder builds a PriorProcess let (asgn_builder, process) = view_geweke_asgn( settings.n_rows, settings.do_process_params_transition(), @@ -1147,12 +1175,15 @@ impl GewekeModel for View { .drain(..) .enumerate() .map(|(id, mut ftr)| { - ftr.geweke_init(&asgn, &mut rng); + ftr.geweke_init(&asgn.asgn, &mut rng); (id, ftr) }) .collect(); - let prior_process = PriorProcess { process, asgn }; + let prior_process = PriorProcess { + process, + asgn: asgn.asgn, + }; View { ftrs, diff --git a/lace/lace_cc/tests/enum.rs b/lace/lace_cc/tests/enum.rs index 551be9da..2f260a13 100644 --- a/lace/lace_cc/tests/enum.rs +++ b/lace/lace_cc/tests/enum.rs @@ -4,10 +4,20 @@ use enum_test::*; mod partition { use super::*; - use lace_cc::misc::crp_draw; + use lace_stats::assignment::Assignment; + use lace_stats::prior_process::{Dirichlet, PriorProcessT}; + use lace_stats::rv::dist::Gamma; use rand::rngs::StdRng; use rand::SeedableRng; + fn crp_draw(n: usize, alpha: f64, rng: &mut R) -> Assignment { + let process = Dirichlet { + prior: Gamma::default(), // doesn't matter here, + alpha, + }; + process.draw_assignment(n, rng) + } + #[test] fn empty_partition() { let mut rng = StdRng::seed_from_u64(0xABCD); diff --git a/lace/lace_cc/tests/enum_state.rs b/lace/lace_cc/tests/enum_state.rs index 493a934e..89a15ece 100644 --- a/lace/lace_cc/tests/enum_state.rs +++ b/lace/lace_cc/tests/enum_state.rs @@ -15,13 +15,15 @@ use lace_stats::rv::misc::logsumexp; use rand::Rng; use lace_cc::alg::{ColAssignAlg, RowAssignAlg}; -use lace_cc::assignment::lcrp; -use lace_cc::assignment::AssignmentBuilder; use lace_cc::config::StateUpdateConfig; use lace_cc::feature::{ColModel, FType, Feature}; use lace_cc::state::State; use lace_cc::transition::StateTransition; use lace_cc::view::{Builder, View}; +use lace_stats::assignment::lcrp; +use lace_stats::prior_process::Builder as PriorProcessBuilder; +use lace_stats::prior_process::{Dirichlet, Process}; +use lace_stats::rv::dist::Gamma; use enum_test::{ build_features, normalize_assignment, partition_to_ix, Partition, @@ -84,25 +86,24 @@ fn state_from_partition( mut features: Vec, mut rng: &mut R, ) -> State { - let asgn = AssignmentBuilder::from_vec(partition.col_partition.clone()) - .with_alpha(1.0) - .seed_from_rng(&mut rng) - .build() - .unwrap(); - let mut views: Vec = partition .row_partitions .iter() .map(|zr| { + let process = Process::Dirichlet(Dirichlet { + alpha: 1.0, + prior: Gamma::default(), + }); + // NOTE: We don't need seed control here because both alpha and the // assignment are set, but I'm setting the seed anyway in case the // assignment builder internals change - let asgn = AssignmentBuilder::from_vec(zr.clone()) - .with_alpha(1.0) + let view_prior_process = PriorProcessBuilder::from_vec(zr.clone()) + .with_process(process.clone()) .seed_from_rng(&mut rng) .build() .unwrap(); - Builder::from_assignment(asgn) + Builder::from_prior_process(view_prior_process) .seed_from_rng(&mut rng) .build() }) @@ -114,7 +115,17 @@ fn state_from_partition( .zip(features.drain(..)) .for_each(|(&zi, ftr)| views[zi].insert_feature(ftr, &mut rng)); - State::new(views, asgn, lace_consts::state_alpha_prior()) + let state_prior_process = + PriorProcessBuilder::from_vec(partition.col_partition.clone()) + .with_process(Process::Dirichlet(Dirichlet { + alpha: 1.0, + prior: Gamma::default(), + })) + .seed_from_rng(&mut rng) + .build() + .unwrap(); + + State::new(views, state_prior_process) } /// Generates a random start state from the prior, with default values chosen for the @@ -125,28 +136,35 @@ fn gen_start_state( ) -> State { let n_cols = features.len(); let n_rows = features[0].len(); - let asgn = AssignmentBuilder::new(n_cols) - .with_alpha(1.0) + let process = Process::Dirichlet(Dirichlet { + alpha: 1.0, + prior: Gamma::default(), + }); + + let state_prior_process = PriorProcessBuilder::new(n_cols) + .with_process(process) .seed_from_rng(&mut rng) .build() .unwrap(); - let mut views: Vec = (0..asgn.n_cats) + let mut views: Vec = (0..state_prior_process.asgn.n_cats) .map(|_| { - let asgn = AssignmentBuilder::new(n_rows) - .with_alpha(1.0) + let view_prior_process = PriorProcessBuilder::new(n_rows) + .with_process(state_prior_process.process.clone()) .seed_from_rng(&mut rng) .build() .unwrap(); - Builder::from_assignment(asgn).build() + Builder::from_prior_process(view_prior_process).build() }) .collect(); - asgn.iter() + state_prior_process + .asgn + .iter() .zip(features.drain(..)) .for_each(|(&zi, ftr)| views[zi].insert_feature(ftr, &mut rng)); - State::new(views, asgn, lace_consts::state_alpha_prior()) + State::new(views, state_prior_process) } fn calc_state_ln_posterior( @@ -162,9 +180,9 @@ fn calc_state_ln_posterior( .iter() .for_each(|part| { let state = state_from_partition(part, features.clone(), &mut rng); - let mut score = lcrp(state.n_cols(), &state.asgn.counts, 1.0); + let mut score = lcrp(state.n_cols(), &state.asgn().counts, 1.0); for view in state.views { - score += lcrp(view.n_rows(), &view.asgn.counts, 1.0); + score += lcrp(view.n_rows(), &view.asgn().counts, 1.0); for ftr in view.ftrs.values() { score += ftr.score(); } @@ -184,13 +202,13 @@ fn calc_state_ln_posterior( /// Extract the index from a State fn extract_state_index(state: &State) -> StateIndex { - let normed = normalize_assignment(state.asgn.asgn.clone()); + let normed = normalize_assignment(state.asgn().asgn.clone()); let col_ix: u64 = partition_to_ix(&normed); let row_ixs: Vec = state .views .iter() .map(|v| { - let zn = normalize_assignment(v.asgn.asgn.clone()); + let zn = normalize_assignment(v.asgn().asgn.clone()); partition_to_ix(&zn) }) .collect(); @@ -235,21 +253,24 @@ pub fn state_enum_test( let mut state = gen_start_state(features.clone(), &mut rng); // alphas should start out at 1.0 - assert!((state.asgn.alpha - 1.0).abs() < 1E-16); + assert!((state.prior_process.alpha().unwrap() - 1.0).abs() < 1E-16); assert!(state .views .iter() - .all(|v| (v.asgn.alpha - 1.0).abs() < 1E-16)); + .all(|v| (v.prior_process.alpha().unwrap() - 1.0).abs() < 1E-16)); for _ in 0..n_iters { state.update(update_config.clone(), &mut rng); // all alphas should be 1.0 - assert!((state.asgn.alpha - 1.0).abs() < 1E-16); - assert!(state - .views - .iter() - .all(|v| (v.asgn.alpha - 1.0).abs() < 1E-16)); + assert!((state.prior_process.alpha().unwrap() - 1.0).abs() < 1E-16); + assert!(state.views.iter().all(|v| (v + .prior_process + .alpha() + .unwrap() + - 1.0) + .abs() + < 1E-16)); let ix = extract_state_index(&state); *est_posterior.entry(ix).or_insert(0.0) += inc; diff --git a/lace/lace_cc/tests/state.rs b/lace/lace_cc/tests/state.rs index da79c0d3..386384f4 100644 --- a/lace/lace_cc/tests/state.rs +++ b/lace/lace_cc/tests/state.rs @@ -4,6 +4,7 @@ use lace_cc::feature::{ColModel, Column}; use lace_cc::state::State; use lace_data::{FeatureData, SparseContainer}; use lace_stats::prior::nix::NixHyper; +use lace_stats::prior_process::{Dirichlet, Process}; use lace_stats::rv::dist::{Gamma, Gaussian, NormalInvChiSquared}; use lace_stats::rv::traits::Rv; use rand::Rng; @@ -19,6 +20,13 @@ fn gen_col(id: usize, n: usize, mut rng: &mut R) -> ColModel { ColModel::Continuous(ftr) } +fn default_process(rng: &mut R) -> Process { + Process::Dirichlet(Dirichlet::from_prior( + Gamma::new(1.0, 1.0).unwrap(), + rng, + )) +} + fn gen_all_gauss_state( n_rows: usize, n_cols: usize, @@ -28,10 +36,11 @@ fn gen_all_gauss_state( for i in 0..n_cols { ftrs.push(gen_col(i, n_rows, &mut rng)); } + State::from_prior( ftrs, - Gamma::new(1.0, 1.0).unwrap(), - Gamma::new(1.0, 1.0).unwrap(), + default_process(rng), + default_process(rng), &mut rng, ) } diff --git a/lace/lace_cc/tests/view.rs b/lace/lace_cc/tests/view.rs index 9acb0f0c..44c40e6f 100644 --- a/lace/lace_cc/tests/view.rs +++ b/lace/lace_cc/tests/view.rs @@ -48,7 +48,7 @@ fn finite_reassign_direct_call() { let mut view = gen_gauss_view(10, &mut rng); view.reassign_rows_finite_cpu(&mut rng); - assert!(view.asgn.validate().is_valid()); + assert!(view.asgn().validate().is_valid()); } #[test] @@ -57,7 +57,7 @@ fn finite_reassign_from_reassign() { let mut view = gen_gauss_view(10, &mut rng); view.reassign(RowAssignAlg::FiniteCpu, &mut rng); - assert!(view.asgn.validate().is_valid()); + assert!(view.asgn().validate().is_valid()); } #[test] diff --git a/lace/lace_cc/tests/view_enum.rs b/lace/lace_cc/tests/view_enum.rs index 115ae333..76878ed3 100644 --- a/lace/lace_cc/tests/view_enum.rs +++ b/lace/lace_cc/tests/view_enum.rs @@ -5,17 +5,20 @@ mod enum_test; use std::collections::BTreeMap; -use lace_stats::rv::misc::logsumexp; use rand::Rng; use enum_test::{ build_features, normalize_assignment, partition_to_ix, Partition, }; use lace_cc::alg::RowAssignAlg; -use lace_cc::assignment::{lcrp, AssignmentBuilder}; use lace_cc::feature::{ColModel, FType, Feature}; use lace_cc::transition::ViewTransition; use lace_cc::view::{Builder, View}; +use lace_stats::assignment::lcrp; +use lace_stats::prior_process::Builder as PriorProcessBuilder; +use lace_stats::prior_process::{Dirichlet, Process}; +use lace_stats::rv::dist::Gamma; +use lace_stats::rv::misc::logsumexp; const N_TRIES: u32 = 5; @@ -38,15 +41,18 @@ fn calc_partition_ln_posterior( // NOTE: We don't need seed control here because both alpha and the // assignment are set, but I'm setting the seed anyway in case the // assignment builder internals change - let asgn = AssignmentBuilder::from_vec(z) - .with_alpha(alpha) + let prior_process = PriorProcessBuilder::from_vec(z) + .with_process(Process::Dirichlet(Dirichlet { + alpha, + prior: Gamma::default(), + })) .seed_from_rng(&mut rng) .build() .unwrap(); - let ln_pz = lcrp(n, &asgn.counts, alpha); + let ln_pz = lcrp(n, &prior_process.asgn.counts, alpha); - let view: View = Builder::from_assignment(asgn) + let view: View = Builder::from_prior_process(prior_process) .features(features.clone()) .seed_from_rng(&mut rng) .build(); @@ -92,13 +98,16 @@ pub fn view_enum_test( let inc: f64 = ((n_runs * n_iters) as f64).recip(); for _ in 0..n_runs { - let asgn = AssignmentBuilder::new(n_rows) - .with_alpha(1.0) + let prior_process = PriorProcessBuilder::new(n_rows) + .with_process(Process::Dirichlet(Dirichlet { + alpha: 1.0, + prior: Gamma::default(), + })) .seed_from_rng(&mut rng) .build() .unwrap(); - let mut view = Builder::from_assignment(asgn) + let mut view = Builder::from_prior_process(prior_process) .features(features.clone()) .seed_from_rng(&mut rng) .build(); @@ -106,11 +115,11 @@ pub fn view_enum_test( for _ in 0..n_iters { view.update(10, &transitions, &mut rng); - let normed = normalize_assignment(view.asgn.asgn.clone()); + let normed = normalize_assignment(view.asgn().asgn.clone()); let ix = partition_to_ix(&normed); if !posterior.contains_key(&ix) { - panic!("invalid index!\n{:?}\n{:?}", view.asgn.asgn, normed); + panic!("invalid index!\n{:?}\n{:?}", view.asgn().asgn, normed); } *est_posterior.entry(ix).or_insert(0.0) += inc; diff --git a/lace/lace_codebook/src/data.rs b/lace/lace_codebook/src/data.rs index 51d7e4d0..45b344eb 100644 --- a/lace/lace_codebook/src/data.rs +++ b/lace/lace_codebook/src/data.rs @@ -7,7 +7,6 @@ use crate::{ use lace_stats::prior::csd::CsdHyper; use lace_stats::prior::nix::NixHyper; use lace_stats::prior::pg::PgHyper; -use lace_stats::rv::dist::Gamma; use polars::prelude::{CsvReader, DataFrame, DataType, SerReader, Series}; use std::convert::TryFrom; use std::path::Path; @@ -459,7 +458,6 @@ pub fn read_csv>(path: P) -> Result { pub fn codebook_from_csv>( path: P, cat_cutoff: Option, - alpha_prior_opt: Option, state_prior_process: Option, view_prior_process: Option, no_hypers: bool, diff --git a/lace/lace_stats/src/assignment.rs b/lace/lace_stats/src/assignment.rs index 8f1e4cb2..63a330ae 100644 --- a/lace/lace_stats/src/assignment.rs +++ b/lace/lace_stats/src/assignment.rs @@ -197,7 +197,16 @@ impl AssignmentDiagnostics { results.drain(..).collect() } } + impl Assignment { + pub fn empty() -> Self { + Self { + asgn: Vec::new(), + counts: Vec::new(), + n_cats: 0, + } + } + /// Replace the assignment vector pub fn set_asgn( &mut self, @@ -312,6 +321,143 @@ impl Assignment { } } +// /// Constructs `Assignment`s +// #[derive(Clone, Debug)] +// pub struct AssignmentBuilder { +// n: usize, +// asgn: Option>, +// prior_process: Option, +// seed: Option, +// } + +// #[derive(Debug, Error, PartialEq)] +// pub enum BuildAssignmentError { +// #[error("alpha is zero")] +// AlphaIsZero, +// #[error("non-finite alpha: {alpha}")] +// AlphaNotFinite { alpha: f64 }, +// #[error("assignment vector is empty")] +// EmptyAssignmentVec, +// #[error("there are {n_cats} categories but {n} data")] +// NLessThanNCats { n: usize, n_cats: usize }, +// #[error("invalid assignment: {0}")] +// AssignmentError(#[from] AssignmentError), +// } + +// impl AssignmentBuilder { +// /// Create a builder for `n`-length assignments +// /// +// /// # Arguments +// /// - n: the number of data/entries in the assignment +// pub fn new(n: usize) -> Self { +// AssignmentBuilder { +// n, +// asgn: None, +// prior_process: None, +// seed: None, +// } +// } + +// /// Initialize the builder from an assignment vector +// /// +// /// # Note: +// /// The validity of `asgn` will not be verified until `build` is called. +// pub fn from_vec(asgn: Vec) -> Self { +// AssignmentBuilder { +// n: asgn.len(), +// asgn: Some(asgn), +// prior_process: None, +// seed: None, +// } +// } + +// /// Add a prior on the `Crp` `alpha` parameter +// #[must_use] +// pub fn with_prior_process(mut self, process: Process) -> Self { +// self.prior_process = Some(process); +// self +// } + +// /// Set the RNG seed +// #[must_use] +// pub fn with_seed(mut self, seed: u64) -> Self { +// self.seed = Some(seed); +// self +// } + +// /// Set the RNG seed from another RNG +// #[must_use] +// pub fn seed_from_rng(mut self, rng: &mut R) -> Self { +// self.seed = Some(rng.next_u64()); +// self +// } + +// /// Use a *flat* assignment with one partition +// #[must_use] +// pub fn flat(mut self) -> Self { +// self.asgn = Some(vec![0; self.n]); +// self +// } + +// /// Use an assignment with `n_cats`, evenly populated partitions/categories +// pub fn with_n_cats( +// mut self, +// n_cats: usize, +// ) -> Result { +// if n_cats > self.n { +// Err(BuildAssignmentError::NLessThanNCats { n: self.n, n_cats }) +// } else { +// let asgn: Vec = (0..self.n).map(|i| i % n_cats).collect(); +// self.asgn = Some(asgn); +// Ok(self) +// } +// } + +// /// Build the assignment and consume the builder +// pub fn build(self) -> Result { +// use lace_stats::prior_process::{Dirichlet, PriorProcessT}; + +// let mut rng = self.seed.map_or_else( +// || Xoshiro256Plus::from_entropy(), +// Xoshiro256Plus::seed_from_u64, +// ); + +// let process = self.prior_process.unwrap_or_else(|| { +// Process::Dirichlet(Dirichlet::from_prior( +// lace_consts::general_alpha_prior(), +// &mut rng, +// )) +// }); + +// let n = self.n; +// let asgn = self +// .asgn +// .unwrap_or_else(|| process.draw_assignment(n, &mut rng).asgn); + +// let n_cats: usize = asgn.iter().max().map(|&m| m + 1).unwrap_or(0); +// let mut counts: Vec = vec![0; n_cats]; +// for z in &asgn { +// counts[*z] += 1; +// } + +// let asgn_out = Assignment { +// asgn, +// counts, +// n_cats, +// }; + +// if lace_stats::validate_assignment!(asgn_out) { +// Ok(asgn_out) +// } else { +// asgn_out +// .validate() +// .emit_error() +// .map_err(BuildAssignmentError::AssignmentError) +// .map(|_| asgn_out) +// } +// } +// } + pub fn lcrp(n: usize, cts: &[usize], alpha: f64) -> f64 { let k: f64 = cts.len() as f64; let gsum = cts.iter().fold(0.0, |acc, ct| { diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index b133b0bd..ed04ce9b 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -1,9 +1,10 @@ -use crate::rv::dist::{Beta, Gamma}; use lace_consts::rv::{misc::pflip, traits::Rv}; use rand::Rng; use serde::{Deserialize, Serialize}; +use thiserror::Error; -use crate::assignment::Assignment; +use crate::assignment::{Assignment, AssignmentError}; +use crate::rv::dist::{Beta, Gamma}; const MAX_STICK_BREAKING_ITERS: u16 = 10_000; @@ -90,6 +91,9 @@ impl PriorProcessT for Dirichlet { } fn draw_assignment(&self, n: usize, rng: &mut R) -> Assignment { + if n == 0 { + return Assignment::empty(); + } let mut counts = vec![1]; let mut ps = vec![1.0, self.alpha]; let mut zs = vec![0; n]; @@ -199,11 +203,59 @@ impl PriorProcessT for PitmanYor { } fn draw_assignment(&self, n: usize, rng: &mut R) -> Assignment { - unimplemented!() + if n == 0 { + return Assignment::empty(); + } + + let mut counts = vec![1]; + let mut ps = vec![1.0 - self.d, self.alpha + self.d]; + let mut zs = vec![0; n]; + + for i in 1..n { + let zi = pflip(&ps, 1, rng)[0]; + zs[i] = zi; + if zi < counts.len() { + ps[zi] += 1.0; + counts[zi] += 1; + } else { + ps[zi] = 1.0; + counts.push(1); + ps.push(self.alpha + self.d * counts.len() as f64); + }; + } + + Assignment { + asgn: zs, + n_cats: counts.len(), + counts, + } } fn update_params(&mut self, asgn: &Assignment, rng: &mut R) -> f64 { - unimplemented!() + let cts = &asgn.counts; + let n: usize = asgn.len(); + // TODO: this is not the best way to do this. + let ln_f_alpha = { + let loglike = |alpha: &f64| crate::assignment::lcrp(n, cts, *alpha); + let prior_ref = &self.prior_alpha; + let prior_draw = |rng: &mut R| prior_ref.draw(rng); + let mh_result = + crate::mh::mh_prior(self.alpha, loglike, prior_draw, 100, rng); + self.alpha = mh_result.x; + mh_result.score_x + }; + + let ln_f_d = { + let loglike = |alpha: &f64| crate::assignment::lcrp(n, cts, *alpha); + let prior_ref = &self.prior_alpha; + let prior_draw = |rng: &mut R| prior_ref.draw(rng); + let mh_result = + crate::mh::mh_prior(self.alpha, loglike, prior_draw, 100, rng); + self.d = mh_result.x; + mh_result.score_x + }; + + ln_f_alpha + ln_f_d } fn reset_params(&mut self, rng: &mut R) { @@ -349,15 +401,14 @@ fn sb_slice_extend( weights.push(b_star); return Ok(weights); } - let n_cats = weights.len() as f64; let mut beta = Beta::new(1.0 + d, alpha).unwrap(); let mut iters: u16 = 0; loop { if d > 0.0 { - let b = (iters as f64) + n_cats + 1.0; - beta.set_beta(alpha + b * d).unwrap(); + let n_cats = weights.len() as f64; + beta.set_beta(alpha + d * n_cats).unwrap(); } let vk: f64 = beta.draw(&mut rng); @@ -374,7 +425,145 @@ fn sb_slice_extend( iters += 1; if iters > MAX_STICK_BREAKING_ITERS { - return Err(TheStickIsDust(MAX_STICK_BREAKING_ITERS)); + // return Err(TheStickIsDust(MAX_STICK_BREAKING_ITERS)); + eprintln!( + "The stick is dust, n_cats: {}, u*: {}", + weights.len(), + u_star + ); + return Ok(weights); + } + } +} + +/// Constructs a PriorProcess +#[derive(Clone, Debug)] +pub struct Builder { + n: usize, + asgn: Option>, + process: Option, + seed: Option, +} + +#[derive(Debug, Error, PartialEq)] +pub enum BuildPriorProcessError { + #[error("assignment vector is empty")] + EmptyAssignmentVec, + #[error("there are {n_cats} categories but {n} data")] + NLessThanNCats { n: usize, n_cats: usize }, + #[error("invalid assignment: {0}")] + AssignmentError(#[from] AssignmentError), +} + +impl Builder { + /// Create a builder for `n`-length assignments + /// + /// # Arguments + /// - n: the number of data/entries in the assignment + pub fn new(n: usize) -> Self { + Self { + n, + asgn: None, + process: None, + seed: None, + } + } + + /// Initialize the builder from an assignment vector + /// + /// # Note: + /// The validity of `asgn` will not be verified until `build` is called. + pub fn from_vec(asgn: Vec) -> Self { + Self { + n: asgn.len(), + asgn: Some(asgn), + process: None, + seed: None, + } + } + + /// Select the process type + #[must_use] + pub fn with_process(mut self, process: Process) -> Self { + self.process = Some(process); + self + } + + /// Set the RNG seed + #[must_use] + pub fn with_seed(mut self, seed: u64) -> Self { + self.seed = Some(seed); + self + } + + /// Set the RNG seed from another RNG + #[must_use] + pub fn seed_from_rng(mut self, rng: &mut R) -> Self { + self.seed = Some(rng.next_u64()); + self + } + + /// Use a *flat* assignment with one partition + #[must_use] + pub fn flat(mut self) -> Self { + self.asgn = Some(vec![0; self.n]); + self + } + + /// Use an assignment with `n_cats`, evenly populated partitions/categories + pub fn with_n_cats( + mut self, + n_cats: usize, + ) -> Result { + if n_cats > self.n { + Err(BuildPriorProcessError::NLessThanNCats { n: self.n, n_cats }) + } else { + let asgn: Vec = (0..self.n).map(|i| i % n_cats).collect(); + self.asgn = Some(asgn); + Ok(self) + } + } + + /// Build the assignment and consume the builder + pub fn build(self) -> Result { + use rand::rngs::StdRng; + use rand::SeedableRng; + + let mut rng = self + .seed + .map_or_else(|| StdRng::from_entropy(), StdRng::seed_from_u64); + + let process = self.process.unwrap_or_else(|| { + Process::Dirichlet(Dirichlet::from_prior( + lace_consts::general_alpha_prior(), + &mut rng, + )) + }); + + let n = self.n; + let asgn = self + .asgn + .unwrap_or_else(|| process.draw_assignment(n, &mut rng).asgn); + + let n_cats: usize = asgn.iter().max().map(|&m| m + 1).unwrap_or(0); + let mut counts: Vec = vec![0; n_cats]; + for z in &asgn { + counts[*z] += 1; + } + + let asgn = Assignment { + asgn, + counts, + n_cats, + }; + + if crate::validate_assignment!(asgn) { + Ok(PriorProcess { process, asgn }) + } else { + asgn.validate() + .emit_error() + .map_err(BuildPriorProcessError::AssignmentError)?; + Ok(PriorProcess { process, asgn }) } } } From 99dbdbea18eaa5852a42c888909a47d17bf51e4e Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Tue, 5 Mar 2024 15:37:01 -0600 Subject: [PATCH 07/43] Trying to get Geweke and enumeration tests to pass --- lace/Cargo.lock | 1 + lace/lace_cc/Cargo.toml | 1 + lace/lace_cc/examples/state_geweke.rs | 18 ++++- lace/lace_cc/examples/view_geweke.rs | 4 +- lace/lace_cc/src/state.rs | 109 +++++++++++++------------- lace/lace_cc/src/view.rs | 7 +- 6 files changed, 77 insertions(+), 63 deletions(-) diff --git a/lace/Cargo.lock b/lace/Cargo.lock index 185d0098..d090276c 100644 --- a/lace/Cargo.lock +++ b/lace/Cargo.lock @@ -1194,6 +1194,7 @@ dependencies = [ "rand_xoshiro", "rayon", "serde", + "serde_json", "special", "thiserror", ] diff --git a/lace/lace_cc/Cargo.toml b/lace/lace_cc/Cargo.toml index 18565d0b..aca32705 100644 --- a/lace/lace_cc/Cargo.toml +++ b/lace/lace_cc/Cargo.toml @@ -30,6 +30,7 @@ approx = "0.5.1" criterion = "0.5" clap = { version = "4.3.17", features = ["derive"] } plotly = "0.8" +serde_json = "1" [[bench]] name = "state_types" diff --git a/lace/lace_cc/examples/state_geweke.rs b/lace/lace_cc/examples/state_geweke.rs index a2f40d41..57d7ced7 100644 --- a/lace/lace_cc/examples/state_geweke.rs +++ b/lace/lace_cc/examples/state_geweke.rs @@ -1,3 +1,5 @@ +use std::path::PathBuf; + use clap::Parser; use plotly::common::Mode; use plotly::layout::Layout; @@ -35,6 +37,10 @@ struct Opt { pub no_priors: bool, #[clap(long)] pub plot_var: Option, + #[clap(long, short, default_value = "10000")] + pub niters: usize, + #[clap(long)] + dst: Option, } fn main() { @@ -89,7 +95,7 @@ fn main() { // Initialize a tester given the settings and run. let mut geweke: GewekeTester = GewekeTester::new(settings); - geweke.run(10_000, Some(1), &mut rng); + geweke.run(opt.niters, Some(5), &mut rng); // Reports the deviation from a perfect correspondence between the // forward and posterior CDFs. The best score is zero, the worst possible @@ -126,4 +132,14 @@ fn main() { plot.set_layout(Layout::new()); plot.show(); } + + if let Some(dst) = opt.dst { + let f = std::fs::OpenOptions::new() + .create(true) + .write(true) + .truncate(true) + .open(dst) + .unwrap(); + serde_json::to_writer(f, &res).unwrap(); + } } diff --git a/lace/lace_cc/examples/view_geweke.rs b/lace/lace_cc/examples/view_geweke.rs index 8d22591d..fcca6760 100644 --- a/lace/lace_cc/examples/view_geweke.rs +++ b/lace/lace_cc/examples/view_geweke.rs @@ -23,6 +23,8 @@ struct Opt { pub no_priors: bool, #[clap(long)] pub pitman_yor: bool, + #[clap(long, short, default_value = "10000")] + pub niters: usize, } fn main() { @@ -66,7 +68,7 @@ fn main() { // Initialize a tester given the settings and run. let mut geweke: GewekeTester = GewekeTester::new(settings); - geweke.run(10_000, Some(5), &mut rng); + geweke.run(opt.niters, Some(5), &mut rng); // Reports the deviation from a perfect correspondence between the // forward and posterior CDFs. The best score is zero, the worst possible diff --git a/lace/lace_cc/src/state.rs b/lace/lace_cc/src/state.rs index 45891408..17bde1e8 100644 --- a/lace/lace_cc/src/state.rs +++ b/lace/lace_cc/src/state.rs @@ -402,39 +402,43 @@ impl State { .for_each(|view| view.assign_unassigned(&mut rng)); } - fn create_tmp_assigns( + fn create_tmp_assign( &self, - m: usize, - counter_start: usize, draw_process_params: bool, - rng: &mut R, - ) -> (BTreeMap, Vec) { - let mut seeds = Vec::with_capacity(m); - let tmp_asgns = (0..m) - .map(|i| { - let seed: u64 = rng.gen(); - - // assignment for a hypothetical singleton view - let asgn_bldr = - AssignmentBuilder::new(self.n_rows()).with_seed(seed); - // If we do not want to draw a view process params, take an - // existing process from the first view. This covers the case - // where we set the view process params and never transitions - // them, for example if we are doing geweke on a subset of - // transitions. - let mut process = self.views[0].prior_process.process.clone(); - if draw_process_params { - process.reset_params(rng); - }; - let tmp_asgn = asgn_bldr.with_process(process).build().unwrap(); + seed: u64, + ) -> PriorProcess { + // assignment for a hypothetical singleton view + let mut rng = Xoshiro256Plus::seed_from_u64(seed); + let asgn_bldr = + AssignmentBuilder::new(self.n_rows()).with_seed(rng.gen()); + // If we do not want to draw a view process params, take an + // existing process from the first view. This covers the case + // where we set the view process params and never transitions + // them, for example if we are doing geweke on a subset of + // transitions. + let mut process = self.views[0].prior_process.process.clone(); + if draw_process_params { + process.reset_params(&mut rng); + }; + asgn_bldr.with_process(process).build().unwrap() + } - seeds.push(seed); + fn create_tmp_assigns( + &self, + counter_start: usize, + draw_process_params: bool, + seeds: &[u64], + ) -> BTreeMap { + seeds + .iter() + .enumerate() + .map(|(i, &seed)| { + let tmp_asgn = + self.create_tmp_assign(draw_process_params, seed); (i + counter_start, tmp_asgn) }) - .collect(); - - (tmp_asgns, seeds) + .collect() } /// Insert an unassigned feature into the `State` via the `Gibbs` @@ -453,14 +457,17 @@ impl State { let col_ix = ftr.id(); let n_cats = self.asgn().n_cats; - // singletone weight divided by the number of MC samples + // singleton weight divided by the number of MC samples let a_part = self.prior_process.process.ln_singleton_weight(n_cats) - (m as f64).ln(); // score for each view. We will push the singleton view probabilities // later let mut logps = (0..n_cats) - .map(|k| self.prior_process.process.ln_gibbs_weight(k)) + .map(|k| { + let n_k = self.prior_process.asgn.counts[k]; + self.prior_process.process.ln_gibbs_weight(n_k) + }) .collect::>(); // maintain a vec that holds just the likelihoods @@ -476,8 +483,10 @@ impl State { let n_views = self.n_views(); // here we create the monte carlo estimate for the singleton view - let mut tmp_asgns = - self.create_tmp_assigns(m, n_views, draw_alpha, rng).0; + let mut tmp_asgns = { + let seeds: Vec = (0..m).map(|_| rng.gen()).collect(); + self.create_tmp_assigns(n_views, draw_alpha, &seeds) + }; tmp_asgns.iter().for_each(|(_, tmp_asgn)| { let singleton_logp = ftr.asgn_score(&tmp_asgn.asgn); @@ -493,16 +502,6 @@ impl State { // If we chose a singleton view... if v_new >= n_views { - // let process = { - // // FIXME: this is not under seed control now that alpha - // // generation has been separated from the assignment. - // let mut process = self.views[0].prior_process.process.clone(); - // if draw_alpha { - // process.reset_params(rng) - // }; - // process - // }; - // This will error if v_new is not in the index, and that is a good. // thing. let tmp_asgn = tmp_asgns.remove(&v_new).unwrap(); @@ -547,12 +546,12 @@ impl State { if self.n_cols() == 1 { return; } - // The algorithm is not valid if the columns are not scanned in - // random order let draw_alpha = transitions .iter() .any(|&t| t == StateTransition::ViewPriorProcessParams); + // The algorithm is not valid if the columns are not scanned in + // random order let mut col_ixs: Vec = (0..self.n_cols()).collect(); col_ixs.shuffle(rng); @@ -597,6 +596,7 @@ impl State { n_cols / batch_size + 1 }; + // FIXME: Only works for Dirichlet Process! // The partial alpha required for the singleton columns. Since we have // `m` singletons to try, we have to divide alpha by m so the singleton // proposal as a whole has the correct mass @@ -631,11 +631,13 @@ impl State { .collect(); // Always propose new singletons - let (tmp_asgns, tmp_asgn_seeds) = self.create_tmp_assigns( - m, + let tmp_asgn_seeds: Vec = + (0..m).map(|_| t_rng.gen()).collect(); + + let tmp_asgns = self.create_tmp_assigns( self.n_views(), draw_process_params, - &mut t_rng, + &tmp_asgn_seeds, ); let ftr = self.feature(col_ix); @@ -684,20 +686,15 @@ impl State { // Moved to a singleton let seed_ix = v_new - n_views; let seed = seeds[seed_ix]; - let asgn_bldr = AssignmentBuilder::new(self.n_rows()) - .with_seed(seed); - let mut process = - self.views[0].prior_process.process.clone(); - if draw_process_params { - process.reset_params(rng); - }; - let tmp_asgn = - asgn_bldr.with_process(process).build().unwrap(); + + let prior_process = + self.create_tmp_assign(draw_process_params, seed); let new_view = - view::Builder::from_prior_process(tmp_asgn) + view::Builder::from_prior_process(prior_process) .seed_from_rng(&mut rng) .build(); + self.views.push(new_view); v_new = n_views; diff --git a/lace/lace_cc/src/view.rs b/lace/lace_cc/src/view.rs index 81b3cf83..feb3d0f5 100644 --- a/lace/lace_cc/src/view.rs +++ b/lace/lace_cc/src/view.rs @@ -133,16 +133,13 @@ impl Builder { None => process.draw_assignment(self.n_rows, &mut rng), }; - let prior_process = PriorProcess { - process, - asgn: asgn.clone(), - }; + let prior_process = PriorProcess { process, asgn }; let weights = prior_process.weight_vec(false); let mut ftr_tree = BTreeMap::new(); if let Some(mut ftrs) = self.ftrs { for mut ftr in ftrs.drain(..) { - ftr.reassign(&asgn, &mut rng); + ftr.reassign(&prior_process.asgn, &mut rng); ftr_tree.insert(ftr.id(), ftr); } } From a712c68d35e8e3cebb66f3c52c087bd903cee444 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Wed, 6 Mar 2024 12:53:48 -0600 Subject: [PATCH 08/43] state Gibbs passing enum tests but not Geweke --- lace/lace_cc/src/state.rs | 22 +++++++++++----------- lace/lace_cc/tests/enum_state.rs | 1 + lace/lace_stats/src/prior_process.rs | 11 +++-------- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/lace/lace_cc/src/state.rs b/lace/lace_cc/src/state.rs index 17bde1e8..ccd02436 100644 --- a/lace/lace_cc/src/state.rs +++ b/lace/lace_cc/src/state.rs @@ -334,6 +334,7 @@ impl State { } ColAssignAlg::Gibbs => { self.reassign_cols_gibbs(transitions, rng); + // // FIXME: below alg doesn't pass enum tests // self.reassign_cols_gibbs_precomputed(transitions, rng); // NOTE: The oracle functions use the weights to compute probabilities. @@ -455,19 +456,20 @@ impl State { // `m` parameter is the number of samples for the integration. let m: usize = 1; // TODO: Should this be a parameter in ColAssignAlg? let col_ix = ftr.id(); - let n_cats = self.asgn().n_cats; + let n_views = self.n_views(); // singleton weight divided by the number of MC samples - let a_part = self.prior_process.process.ln_singleton_weight(n_cats) - - (m as f64).ln(); + let p_singleton = + self.prior_process.process.ln_singleton_weight(n_views) + - (m as f64).ln(); // score for each view. We will push the singleton view probabilities // later - let mut logps = (0..n_cats) - .map(|k| { - let n_k = self.prior_process.asgn.counts[k]; - self.prior_process.process.ln_gibbs_weight(n_k) - }) + let mut logps = self + .asgn() + .counts + .iter() + .map(|&n_k| self.prior_process.process.ln_gibbs_weight(n_k)) .collect::>(); // maintain a vec that holds just the likelihoods @@ -480,8 +482,6 @@ impl State { logps[ix] += lp; } - let n_views = self.n_views(); - // here we create the monte carlo estimate for the singleton view let mut tmp_asgns = { let seeds: Vec = (0..m).map(|_| rng.gen()).collect(); @@ -491,7 +491,7 @@ impl State { tmp_asgns.iter().for_each(|(_, tmp_asgn)| { let singleton_logp = ftr.asgn_score(&tmp_asgn.asgn); ftr_logps.push(singleton_logp); - logps.push(a_part + singleton_logp); + logps.push(p_singleton + singleton_logp); }); debug_assert_eq!(n_views + m, logps.len()); diff --git a/lace/lace_cc/tests/enum_state.rs b/lace/lace_cc/tests/enum_state.rs index 89a15ece..c2bb8321 100644 --- a/lace/lace_cc/tests/enum_state.rs +++ b/lace/lace_cc/tests/enum_state.rs @@ -328,6 +328,7 @@ mod tests { FType::$ftype, &mut rng, ); + eprintln!("err: {err}"); err < 0.01 } assert!(flaky_test_passes(N_TRIES, test_fn)); diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index ed04ce9b..e2643dba 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -133,8 +133,7 @@ impl PriorProcessT for Dirichlet { } fn reset_params(&mut self, rng: &mut R) { - // TODO: remove clones - *self = Self::from_prior(self.prior.clone(), rng); + self.alpha = self.prior.draw(rng); } } @@ -259,12 +258,8 @@ impl PriorProcessT for PitmanYor { } fn reset_params(&mut self, rng: &mut R) { - // TODO: remove clones - *self = Self::from_prior( - self.prior_alpha.clone(), - self.prior_d.clone(), - rng, - ); + self.alpha = self.prior_alpha.draw(rng); + self.d = self.prior_d.draw(rng); } } From 9fe0f3d158cda9909ba7509f479b2a3922258219 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Wed, 6 Mar 2024 21:24:23 -0600 Subject: [PATCH 09/43] lace, but not pylace, compiling; untested --- lace/lace_cc/src/view.rs | 6 +-- lace/lace_cc/tests/view_enum.rs | 80 +++++++++++++++++++--------- lace/lace_stats/src/assignment.rs | 10 ++++ lace/lace_stats/src/prior_process.rs | 18 ++++++- lace/src/interface/engine/mod.rs | 48 ++++++++++++----- lace/src/interface/oracle/traits.rs | 22 ++++---- lace/src/interface/oracle/utils.rs | 27 +++++----- 7 files changed, 144 insertions(+), 67 deletions(-) diff --git a/lace/lace_cc/src/view.rs b/lace/lace_cc/src/view.rs index feb3d0f5..b9840204 100644 --- a/lace/lace_cc/src/view.rs +++ b/lace/lace_cc/src/view.rs @@ -682,10 +682,10 @@ impl View { // If not empty, do a Gibbs step let mut logps: Vec = Vec::with_capacity(self.asgn().n_cats + 1); + self.asgn().counts.iter().enumerate().for_each(|(k, &ct)| { - logps.push( - (ct as f64).ln() + self.predictive_score_at(row_ix, k), - ); + let w = self.prior_process.process.ln_gibbs_weight(ct); + logps.push(w + self.predictive_score_at(row_ix, k)); }); logps.push( diff --git a/lace/lace_cc/tests/view_enum.rs b/lace/lace_cc/tests/view_enum.rs index 76878ed3..fd0b2837 100644 --- a/lace/lace_cc/tests/view_enum.rs +++ b/lace/lace_cc/tests/view_enum.rs @@ -14,14 +14,37 @@ use lace_cc::alg::RowAssignAlg; use lace_cc::feature::{ColModel, FType, Feature}; use lace_cc::transition::ViewTransition; use lace_cc::view::{Builder, View}; -use lace_stats::assignment::lcrp; +use lace_stats::assignment::{lcrp, lpyp}; use lace_stats::prior_process::Builder as PriorProcessBuilder; -use lace_stats::prior_process::{Dirichlet, Process}; -use lace_stats::rv::dist::Gamma; +use lace_stats::prior_process::{Dirichlet, PitmanYor, Process}; +use lace_stats::rv::dist::{Beta, Gamma}; use lace_stats::rv::misc::logsumexp; const N_TRIES: u32 = 5; +#[derive(Clone, Copy, Debug)] +pub enum ProcessType { + Dirichlet, + PitmanYor, +} + +impl From for Process { + fn from(proc: ProcessType) -> Self { + match proc { + ProcessType::Dirichlet => Process::Dirichlet(Dirichlet { + alpha: 1.0, + prior: Gamma::default(), + }), + ProcessType::PitmanYor => Process::PitmanYor(PitmanYor { + alpha: 1.2, + d: 0.2, + prior_alpha: Gamma::default(), + prior_d: Beta::jeffreys(), + }), + } + } +} + /// Compute the posterior of all assignments of the features under CRP(alpha) /// /// NOTE: The rng is required, for calling AssignmentBuilder.build, but nothing @@ -29,7 +52,7 @@ const N_TRIES: u32 = 5; #[allow(clippy::ptr_arg)] fn calc_partition_ln_posterior( features: &Vec, - alpha: f64, + proc_type: ProcessType, mut rng: &mut R, ) -> BTreeMap { let n = features[0].len(); @@ -42,15 +65,16 @@ fn calc_partition_ln_posterior( // assignment are set, but I'm setting the seed anyway in case the // assignment builder internals change let prior_process = PriorProcessBuilder::from_vec(z) - .with_process(Process::Dirichlet(Dirichlet { - alpha, - prior: Gamma::default(), - })) + .with_process(proc_type.into()) .seed_from_rng(&mut rng) .build() .unwrap(); - let ln_pz = lcrp(n, &prior_process.asgn.counts, alpha); + let alpha = prior_process.alpha().unwrap(); + let d = prior_process.d().unwrap(); + + // let ln_pz = lcrp(n, &prior_process.asgn.counts, alpha); + let ln_pz = lpyp(n, &prior_process.asgn.counts, alpha, d); let view: View = Builder::from_prior_process(prior_process) .features(features.clone()) @@ -83,10 +107,12 @@ pub fn view_enum_test( n_iters: usize, ftype: FType, row_alg: RowAssignAlg, + proc_type: ProcessType, ) -> f64 { let mut rng = rand::thread_rng(); let features = build_features(n_rows, n_cols, ftype, &mut rng); - let ln_posterior = calc_partition_ln_posterior(&features, 1.0, &mut rng); + let ln_posterior = + calc_partition_ln_posterior(&features, proc_type, &mut rng); let posterior = norm_posterior(&ln_posterior); let transitions: Vec = vec![ @@ -99,10 +125,7 @@ pub fn view_enum_test( for _ in 0..n_runs { let prior_process = PriorProcessBuilder::new(n_rows) - .with_process(Process::Dirichlet(Dirichlet { - alpha: 1.0, - prior: Gamma::default(), - })) + .with_process(proc_type.into()) .seed_from_rng(&mut rng) .build() .unwrap(); @@ -153,7 +176,7 @@ where // TODO: could remove $test name by using mods macro_rules! view_enum_test { - ($ftype: ident, $row_alg: ident) => { + ($ftype: ident, $proctype: ident, $row_alg: ident) => { #[test] fn $row_alg() { fn test_fn() -> bool { @@ -163,32 +186,39 @@ macro_rules! view_enum_test { 1, 5_000, FType::$ftype, - RowAssignAlg::$row_alg + RowAssignAlg::$row_alg, + ProcessType::$proctype, ); + eprintln!("err: {}", err); err < 0.01 } assert!(flaky_test_passes(N_TRIES, test_fn)); } }; - ($ftype: ident, [$($row_alg: ident),+]) => { + ($ftype: ident, $proctype: ident, [$($row_alg: ident),+]) => { #[allow(non_snake_case)] mod $ftype { use super::*; - $( - view_enum_test!($ftype, $row_alg); - )+ + mod $proctype { + use super::*; + $( + view_enum_test!($ftype, $proctype, $row_alg); + )+ + } } }; - ($(($ftype: ident, $row_algs: tt)),+) => { + ($(($ftype: ident, $proctype: ident, $row_algs: tt)),+) => { $( - view_enum_test!($ftype, $row_algs); + view_enum_test!($ftype, $proctype, $row_algs); )+ }; } view_enum_test!( - (Continuous, [Gibbs, Slice, Sams]), - (Categorical, [Gibbs, Slice, Sams]), - (Count, [Gibbs, Slice, Sams]) + // (Continuous, Dirichlet, [Gibbs, Slice, Sams]), + (Continuous, PitmanYor, [Gibbs, Slice, Sams]), + (Categorical, Dirichlet, [Gibbs, Slice, Sams]), + // (Categorical, PitmanYor, [Gibbs, Slice, Sams]), + (Count, Dirichlet, [Gibbs, Slice, Sams]) // (Count, PitmanYor, [Gibbs, Slice, Sams]) ); diff --git a/lace/lace_stats/src/assignment.rs b/lace/lace_stats/src/assignment.rs index 63a330ae..7fc7fd21 100644 --- a/lace/lace_stats/src/assignment.rs +++ b/lace/lace_stats/src/assignment.rs @@ -468,6 +468,16 @@ pub fn lcrp(n: usize, cts: &[usize], alpha: f64) -> f64 { gsum + k.mul_add(alpha.ln(), cpnt_2) } +pub fn lpyp(n: usize, cts: &[usize], alpha: f64, d: f64) -> f64 { + let k: f64 = cts.len() as f64; + let gsum = cts.iter().fold(0.0, |acc, ct| { + acc + ::special::Gamma::ln_gamma(*ct as f64 - d).0 + }); + let cpnt_2 = ::special::Gamma::ln_gamma(alpha + k * d).0 + - ::special::Gamma::ln_gamma(n as f64 + alpha - 1.0).0; + gsum + k.mul_add(alpha.ln(), cpnt_2) +} + #[cfg(test)] mod tests { use super::*; diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index e2643dba..252f5650 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -217,7 +217,7 @@ impl PriorProcessT for PitmanYor { ps[zi] += 1.0; counts[zi] += 1; } else { - ps[zi] = 1.0; + ps[zi] = 1.0 - self.d; counts.push(1); ps.push(self.alpha + self.d * counts.len() as f64); }; @@ -330,6 +330,15 @@ impl PriorProcessT for Process { } } +impl Default for Process { + fn default() -> Self { + Self::Dirichlet(Dirichlet { + alpha: 1.0, + prior: lace_consts::general_alpha_prior(), + }) + } +} + #[derive(Clone, Debug, Serialize, Deserialize)] pub struct PriorProcess { pub process: Process, @@ -364,6 +373,13 @@ impl PriorProcess { Process::PitmanYor(inner) => Some(inner.alpha), } } + + pub fn d(&self) -> Option { + match &self.process { + Process::Dirichlet(inner) => Some(0.0), + Process::PitmanYor(inner) => Some(inner.d), + } + } } #[derive(Clone, Copy, Debug, Serialize, Deserialize)] diff --git a/lace/src/interface/engine/mod.rs b/lace/src/interface/engine/mod.rs index bc7925d0..890fa199 100644 --- a/lace/src/interface/engine/mod.rs +++ b/lace/src/interface/engine/mod.rs @@ -124,6 +124,26 @@ fn col_models_from_data_src( crate::data::df_to_col_models(codebook, df, rng) } +fn emit_prior_process( + prior_process: crate::codebook::PriorProcess, + rng: &mut R, +) -> lace_stats::prior_process::Process { + use lace_stats::prior_process::{Dirichlet, PitmanYor, Process}; + match prior_process { + crate::codebook::PriorProcess::Dirichlet { alpha_prior } => { + let inner = Dirichlet::from_prior(alpha_prior, rng); + Process::Dirichlet(inner) + } + crate::codebook::PriorProcess::PitmanYor { + alpha_prior, + d_prior, + } => { + let inner = PitmanYor::from_prior(alpha_prior, d_prior, rng); + Process::PitmanYor(inner) + } + } +} + /// Maintains and samples states impl Engine { /// Create a new engine @@ -154,23 +174,23 @@ impl Engine { col_models_from_data_src(codebook, data_source, &mut rng) .map_err(NewEngineError::DataParseError)?; - let state_prior_process = codebook - .state_prior_process - .clone() - .unwrap_or_else(lace_consts::state_alpha_prior); + let state_prior_process = emit_prior_process( + codebook.state_prior_process.clone().unwrap_or_default(), + &mut rng, + ); - let view_alpha_prior = codebook - .view_alpha_prior - .clone() - .unwrap_or_else(lace_consts::view_alpha_prior); + let view_prior_process = emit_prior_process( + codebook.view_prior_process.clone().unwrap_or_default(), + &mut rng, + ); let states: Vec = (0..n_states) .map(|_| { let features = col_models.clone(); State::from_prior( features, - state_alpha_prior.clone(), - view_alpha_prior.clone(), + state_prior_process.clone(), + view_prior_process.clone(), &mut rng, ) }) @@ -837,7 +857,7 @@ impl Engine { Ok(()) } - /// Run the Gibbs reassignment kernel on a specific column and row withing + /// Run the Gibbs reassignment kernel on a specific column and row within /// a view. Used when the user would like to focus more updating on /// specific regions of the table. /// @@ -867,7 +887,7 @@ impl Engine { .for_each(|(state, mut trng)| { state.reassign_col_gibbs(col_ix, true, &mut trng); let view = { - let view_ix = state.asgn.asgn[col_ix]; + let view_ix = state.asgn().asgn[col_ix]; &mut state.views[view_ix] }; @@ -875,8 +895,8 @@ impl Engine { // Make sure the view weights are correct so oracle functions // reflect the update correctly. - view.weights = view.asgn.weights(); - debug_assert!(view.asgn.validate().is_valid()); + view.weights = view.prior_process.weight_vec(false); + debug_assert!(view.asgn().validate().is_valid()); }); } diff --git a/lace/src/interface/oracle/traits.rs b/lace/src/interface/oracle/traits.rs index 11e5772b..898a6b24 100644 --- a/lace/src/interface/oracle/traits.rs +++ b/lace/src/interface/oracle/traits.rs @@ -110,7 +110,7 @@ pub trait OracleT: CanOracle { fn ftype(&self, col_ix: Ix) -> Result { let col_ix = col_ix.col_ix(self.codebook())?; let state = &self.states()[0]; - let view_ix = state.asgn.asgn[col_ix]; + let view_ix = state.asgn().asgn[col_ix]; Ok(state.views[view_ix].ftrs[&col_ix].ftype()) } @@ -199,7 +199,7 @@ pub trait OracleT: CanOracle { Ok(1.0) } else { let depprob = self.states().iter().fold(0.0, |acc, state| { - if state.asgn.asgn[col_a] == state.asgn.asgn[col_b] { + if state.asgn().asgn[col_a] == state.asgn().asgn[col_b] { acc + 1.0 } else { acc @@ -351,7 +351,7 @@ pub trait OracleT: CanOracle { let rowsim = self.states().iter().fold(0.0, |acc, state| { let view_ixs: Vec = match wrt.as_ref() { Some(col_ixs) => { - let asgn = &state.asgn.asgn; + let asgn = &state.asgn().asgn; let viewset: BTreeSet = col_ixs.iter().map(|&col_ix| asgn[col_ix]).collect(); viewset.iter().copied().collect() @@ -375,7 +375,7 @@ pub trait OracleT: CanOracle { acc + view_ixs.iter().enumerate().fold( 0.0, |sim, (ix, &view_ix)| { - let asgn = &state.views[view_ix].asgn.asgn; + let asgn = &state.views[view_ix].asgn().asgn; if asgn[row_a] == asgn[row_b] { sim + col_counts.as_ref().map_or(1.0, |cts| cts[ix]) } else { @@ -494,7 +494,7 @@ pub trait OracleT: CanOracle { let compliment = self.states().iter().fold(0.0, |acc, state| { let view_ixs: Vec = match wrt.as_ref() { Some(col_ixs) => { - let asgn = &state.asgn.asgn; + let asgn = &state.asgn().asgn; let viewset: BTreeSet = col_ixs.iter().map(|&col_ix| asgn[col_ix]).collect(); viewset.iter().copied().collect() @@ -503,7 +503,7 @@ pub trait OracleT: CanOracle { }; acc + view_ixs.iter().fold(0.0, |novelty, &view_ix| { - let asgn = &state.views[view_ix].asgn; + let asgn = &state.views[view_ix].asgn(); let z = asgn.asgn[row_ix]; novelty + (asgn.counts[z] as f64) / nf }) / (view_ixs.len() as f64) @@ -1636,8 +1636,8 @@ pub trait OracleT: CanOracle { let state = &self.states()[state_ix]; // Draw from the propoer component in the feature - let view_ix = state.asgn.asgn[col_ix]; - let cpnt_ix = state.views[view_ix].asgn.asgn[row_ix]; + let view_ix = state.asgn().asgn[col_ix]; + let cpnt_ix = state.views[view_ix].asgn().asgn[row_ix]; let ftr = state.feature(col_ix); let x = ftr.draw(cpnt_ix, &mut rng); utils::post_process_datum(x, col_ix, self.codebook()) @@ -2105,7 +2105,7 @@ pub trait OracleT: CanOracle { let mut mixture_types: Vec = states .iter() .map(|state| { - let view_ix = state.asgn.asgn[col_ix]; + let view_ix = state.asgn().asgn[col_ix]; let weights = &utils::given_weights(&[state], &[col_ix], &given)[0]; @@ -2323,8 +2323,8 @@ pub trait OracleT: CanOracle { .iter() .map(|&ix| { let state = &self.states()[ix]; - let view_ix = state.asgn.asgn[col_ix]; - let k = state.views[view_ix].asgn.asgn[row_ix]; + let view_ix = state.asgn().asgn[col_ix]; + let k = state.views[view_ix].asgn().asgn[row_ix]; state.views[view_ix].ftrs[&col_ix].cpnt_logp(&x, k) }) .collect(); diff --git a/lace/src/interface/oracle/utils.rs b/lace/src/interface/oracle/utils.rs index d1ef1609..0a39c528 100644 --- a/lace/src/interface/oracle/utils.rs +++ b/lace/src/interface/oracle/utils.rs @@ -193,7 +193,7 @@ impl<'s, R: rand::Rng> Iterator for Simulator<'s, R> { .col_ixs .iter() .map(|col_ix| { - let view_ix = state.asgn.asgn[*col_ix]; + let view_ix = state.asgn().asgn[*col_ix]; let k = cpnt_ixs[&view_ix]; state.views[view_ix].ftrs[col_ix].draw(k, &mut rng) }) @@ -423,7 +423,7 @@ pub fn single_state_weights( let mut view_weights: BTreeMap> = BTreeMap::new(); col_ixs .iter() - .map(|&ix| state.asgn.asgn[ix]) + .map(|&ix| state.asgn().asgn[ix]) .for_each(|view_ix| { view_weights .entry(view_ix) @@ -442,7 +442,7 @@ pub fn single_state_exp_weights( let mut view_weights: BTreeMap> = BTreeMap::new(); col_ixs .iter() - .map(|&ix| state.asgn.asgn[ix]) + .map(|&ix| state.asgn().asgn[ix]) .for_each(|view_ix| { view_weights.entry(view_ix).or_insert_with(|| { single_view_exp_weights(state, view_ix, given) @@ -464,7 +464,8 @@ fn single_view_weights( match given { Given::Conditions(ref conditions) => { for &(col_ix, ref datum) in conditions { - let in_target_view = state.asgn.asgn[col_ix] == target_view_ix; + let in_target_view = + state.asgn().asgn[col_ix] == target_view_ix; if in_target_view { view.ftrs[&col_ix].accum_weights( datum, @@ -493,7 +494,7 @@ fn single_view_exp_weights( match given { Given::Conditions(ref conditions) => { conditions.iter().for_each(|(ix, datum)| { - let in_target_view = state.asgn.asgn[*ix] == target_view_ix; + let in_target_view = state.asgn().asgn[*ix] == target_view_ix; if in_target_view { view.ftrs[ix].accum_exp_weights(datum, &mut weights); } @@ -588,7 +589,7 @@ fn single_val_logp( col_ixs .iter() .zip(val) - .map(|(col_ix, datum)| (col_ix, state.asgn.asgn[*col_ix], datum)) + .map(|(col_ix, datum)| (col_ix, state.asgn().asgn[*col_ix], datum)) .for_each(|(col_ix, view_ix, datum)| { state.views[view_ix].ftrs[col_ix].accum_weights( datum, @@ -852,7 +853,7 @@ macro_rules! dep_ind_col_mixtures { _ => panic!("Unexpected MixtureType"), }; - if state.asgn.asgn[$col_a] == state.asgn.asgn[$col_b] { + if state.asgn().asgn[$col_a] == state.asgn().asgn[$col_b] { weight += 1.0; mms_dep.push(mm); } else { @@ -1339,7 +1340,7 @@ pub fn continuous_predict( let mixtures = states .iter() .map(|state| { - let view_ix = state.asgn.asgn[col_ix]; + let view_ix = state.asgn().asgn[col_ix]; // NOTE: There is a slight speedup from using given_exp_weights, // but at the cost of panics when there is a large number of // conditions in the given: underflow causes all the weights to @@ -1506,7 +1507,7 @@ macro_rules! predunc_arm { let mix_models: Vec> = $states .iter() .map(|state| { - let view_ix = state.asgn.asgn[$col_ix]; + let view_ix = state.asgn().asgn[$col_ix]; let weights = single_view_weights(&state, view_ix, $given_opt); let mut mixture: Mixture<$cpnt_type> = @@ -1534,7 +1535,7 @@ pub fn predict_uncertainty( states_ixs_opt: Option<&[usize]>, ) -> f64 { let ftype = { - let view_ix = states[0].asgn.asgn[col_ix]; + let view_ix = states[0].asgn().asgn[col_ix]; states[0].views[view_ix].ftrs[&col_ix].ftype() }; let states = select_states(states, states_ixs_opt); @@ -1562,7 +1563,7 @@ pub(crate) fn mnar_uncertainty( .. }) => { // get the index of the view to which this column is assigned - let view_ix = state.asgn.asgn[col_ix]; + let view_ix = state.asgn().asgn[col_ix]; // Get the weights from the view using the given let weights = { let mut weights = @@ -1623,9 +1624,9 @@ macro_rules! impunc_arm { let n_states = $states.len(); let mixtures = (0..n_states) .map(|state_ix| { - let view_ix = $states[state_ix].asgn.asgn[$col_ix]; + let view_ix = $states[state_ix].asgn().asgn[$col_ix]; let view = &$states[state_ix].views[view_ix]; - let k = view.asgn.asgn[$row_ix]; + let k = view.asgn().asgn[$row_ix]; match &view.ftrs[&$col_ix] { ColModel::$variant(ref ftr) => ftr.components[k].fx.clone(), ColModel::MissingNotAtRandom( From 2db31e7eb00521712dde49efa71c6381ae339e6e Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Thu, 7 Mar 2024 13:07:28 -0600 Subject: [PATCH 10/43] pylace compiling --- cli/Cargo.lock | 19 ++--- cli/src/opt.rs | 2 +- lace/lace_cc/src/view.rs | 28 +++++--- lace/lace_stats/src/prior_process.rs | 10 +-- pylace/lace/__init__.py | 2 + pylace/lace/codebook.py | 26 +++---- pylace/lace/utils.py | 20 +++--- pylace/src/lib.rs | 7 +- pylace/src/metadata.rs | 103 +++++++++++++++++---------- pylace/src/transition.rs | 22 +++--- 10 files changed, 138 insertions(+), 101 deletions(-) diff --git a/cli/Cargo.lock b/cli/Cargo.lock index 78b28aef..c65fbe2f 100644 --- a/cli/Cargo.lock +++ b/cli/Cargo.lock @@ -881,7 +881,7 @@ dependencies = [ [[package]] name = "lace" -version = "0.6.0" +version = "0.7.0" dependencies = [ "ctrlc", "dirs", @@ -910,7 +910,7 @@ dependencies = [ [[package]] name = "lace-cli" -version = "0.6.0" +version = "0.7.0" dependencies = [ "approx", "clap", @@ -924,7 +924,7 @@ dependencies = [ [[package]] name = "lace_cc" -version = "0.5.0" +version = "0.6.0" dependencies = [ "enum_dispatch", "itertools", @@ -944,7 +944,7 @@ dependencies = [ [[package]] name = "lace_codebook" -version = "0.5.0" +version = "0.6.0" dependencies = [ "lace_consts", "lace_data", @@ -965,7 +965,7 @@ dependencies = [ [[package]] name = "lace_data" -version = "0.2.0" +version = "0.3.0" dependencies = [ "lace_utils", "serde", @@ -974,7 +974,7 @@ dependencies = [ [[package]] name = "lace_geweke" -version = "0.2.1" +version = "0.3.0" dependencies = [ "indicatif", "lace_stats", @@ -986,7 +986,7 @@ dependencies = [ [[package]] name = "lace_metadata" -version = "0.5.0" +version = "0.6.0" dependencies = [ "bincode", "hex", @@ -1005,7 +1005,7 @@ dependencies = [ [[package]] name = "lace_stats" -version = "0.2.1" +version = "0.3.0" dependencies = [ "itertools", "lace_consts", @@ -1019,9 +1019,10 @@ dependencies = [ [[package]] name = "lace_utils" -version = "0.2.0" +version = "0.3.0" dependencies = [ "rand", + "rayon", ] [[package]] diff --git a/cli/src/opt.rs b/cli/src/opt.rs index 4cd19798..59396c80 100644 --- a/cli/src/opt.rs +++ b/cli/src/opt.rs @@ -48,7 +48,7 @@ impl std::str::FromStr for Transition { pub struct RunArgs { #[clap(name = "LACEFILE_OUT")] pub output: PathBuf, - /// Optinal path to codebook + /// Optional path to codebook #[clap(long = "codebook", short = 'c')] pub codebook: Option, /// Path to .csv data source. May be compressed. diff --git a/lace/lace_cc/src/view.rs b/lace/lace_cc/src/view.rs index b9840204..493d5ec3 100644 --- a/lace/lace_cc/src/view.rs +++ b/lace/lace_cc/src/view.rs @@ -473,7 +473,14 @@ impl View { add_empty_component: bool, mut rng: &mut impl Rng, ) { - let dirvec = self.prior_process.weight_vec(add_empty_component); + let dirvec = + self.prior_process.weight_vec_unnormed(add_empty_component); + + if dirvec.iter().any(|&p| p < 0.0) { + eprintln!("{:?}", dirvec); + eprintln!("{:?}\n", self.prior_process.process); + } + let dir = Dirichlet::new(dirvec).unwrap(); self.weights = dir.draw(&mut rng) } @@ -817,7 +824,7 @@ impl View { } fn sams_merge(&mut self, i: usize, j: usize, rng: &mut R) { - use lace_stats::assignment::lcrp; + use lace_stats::assignment::lpyp; use std::cmp::Ordering; let zi = self.asgn().asgn[i]; @@ -854,10 +861,11 @@ impl View { // FIXME: only works for CRP let logp_mrg = self.logm(self.n_cats()) - + lcrp( + + lpyp( asgn.len(), &asgn.counts, self.prior_process.alpha().unwrap(), + self.prior_process.d().unwrap(), ); self.drop_component(self.n_cats()); @@ -868,16 +876,17 @@ impl View { } fn sams_split(&mut self, i: usize, j: usize, rng: &mut R) { - use lace_stats::assignment::lcrp; + use lace_stats::assignment::lpyp; let zi = self.asgn().asgn[i]; // FIXME: only works for CRP let logp_mrg = self.logm(zi) - + lcrp( + + lpyp( self.asgn().len(), &self.asgn().counts, self.prior_process.alpha().unwrap(), + self.prior_process.d().unwrap(), ); let (logp_spt, logq_spt, asgn_opt) = self.propose_split(i, j, false, rng); @@ -897,7 +906,7 @@ impl View { calc_reverse: bool, rng: &mut R, ) -> (f64, f64, Option) { - use lace_stats::assignment::lcrp; + use lace_stats::assignment::lpyp; let zi = self.asgn().asgn[i]; let zj = self.asgn().asgn[j]; @@ -959,11 +968,11 @@ impl View { let mut logp = self.logm(zi_tmp) + self.logm(zj_tmp); let asgn = if calc_reverse { - // FIXME: only works for CRP - logp += lcrp( + logp += lpyp( self.asgn().len(), &self.asgn().counts, self.prior_process.alpha().unwrap(), + self.prior_process.d().unwrap(), ); None } else { @@ -983,10 +992,11 @@ impl View { .unwrap() .asgn; - logp += lcrp( + logp += lpyp( asgn.len(), &asgn.counts, self.prior_process.alpha().unwrap(), + self.prior_process.d().unwrap(), ); Some(asgn) }; diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index 252f5650..62b273aa 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -235,7 +235,8 @@ impl PriorProcessT for PitmanYor { let n: usize = asgn.len(); // TODO: this is not the best way to do this. let ln_f_alpha = { - let loglike = |alpha: &f64| crate::assignment::lcrp(n, cts, *alpha); + let loglike = + |alpha: &f64| crate::assignment::lpyp(n, cts, *alpha, self.d); let prior_ref = &self.prior_alpha; let prior_draw = |rng: &mut R| prior_ref.draw(rng); let mh_result = @@ -245,11 +246,12 @@ impl PriorProcessT for PitmanYor { }; let ln_f_d = { - let loglike = |alpha: &f64| crate::assignment::lcrp(n, cts, *alpha); - let prior_ref = &self.prior_alpha; + let loglike = + |d: &f64| crate::assignment::lpyp(n, cts, self.alpha, *d); + let prior_ref = &self.prior_d; let prior_draw = |rng: &mut R| prior_ref.draw(rng); let mh_result = - crate::mh::mh_prior(self.alpha, loglike, prior_draw, 100, rng); + crate::mh::mh_prior(self.d, loglike, prior_draw, 100, rng); self.d = mh_result.x; mh_result.score_x }; diff --git a/pylace/lace/__init__.py b/pylace/lace/__init__.py index 349850f1..e99de7f8 100644 --- a/pylace/lace/__init__.py +++ b/pylace/lace/__init__.py @@ -15,6 +15,7 @@ RowKernel, StateTransition, ValueMap, + PriorProcess, ) from lace.engine import Engine @@ -34,6 +35,7 @@ "CountHyper", "CountPrior", "ValueMap", + "PriorProcess", ] __version__ = "0.6.0" diff --git a/pylace/lace/codebook.py b/pylace/lace/codebook.py index a1a8c1b2..39b5b188 100644 --- a/pylace/lace/codebook.py +++ b/pylace/lace/codebook.py @@ -289,18 +289,13 @@ def rename(self, name: str): codebook.codebook.rename(name) return codebook - def set_state_alpha_prior(self, shape: float = 1.0, rate: float = 1.0): + def set_state_alpha_prior(self, prior_process: _lc.PriorProcess): """ - Return a copy of the codebook with a new state CRP alpha prior. + Return a copy of the codebook with a new state PriorProcess. Parameters ---------- - shape: float, optional - The shape of the Gamma distribution prior on alpha: a positive - floating point value in (0, Inf). Default is 1. - rate: float, optional - The rate of the Gamma distribution prior on alpha: a positive - floating point value in (0, Inf). Default is 1. + prior_process: core.PriorProcess Examples -------- @@ -320,21 +315,16 @@ def set_state_alpha_prior(self, shape: float = 1.0, rate: float = 1.0): rows: 50 """ codebook = copy.copy(self) - codebook.codebook.set_state_alpha_prior(shape, rate) + codebook.codebook.set_state_prior_process(prior_process) return codebook - def set_view_alpha_prior(self, shape: float = 1.0, rate: float = 1.0): + def set_view_prior_process(self, prior_process: _lc.PriorProcess): """ - Return a copy of the codebook with a new view CRP alpha prior. + Return a copy of the codebook with a new view PriorProcess. Parameters ---------- - shape: float, optional - The shape of the Gamma distribution prior on alpha: a positive - floating point value in (0, Inf). Default is 1. - rate: float, optional - The rate of the Gamma distribution prior on alpha: a positive - floating point value in (0, Inf). Default is 1. + prior_process: core.PriorProcess Examples -------- @@ -354,7 +344,7 @@ def set_view_alpha_prior(self, shape: float = 1.0, rate: float = 1.0): rows: 50 """ codebook = copy.copy(self) - codebook.codebook.set_view_alpha_prior(shape, rate) + codebook.codebook.set_view_prior_process(prior_process) return codebook def append_column_metadata(self, col_metadata: List[_lc.ColumnMetadata]): diff --git a/pylace/lace/utils.py b/pylace/lace/utils.py index d1ff726d..aa13071f 100644 --- a/pylace/lace/utils.py +++ b/pylace/lace/utils.py @@ -127,36 +127,36 @@ def infer_column_metadata( _COMMON_TRANSITIONS = { "sams": [ - StateTransition.view_alphas(), + StateTransition.view_prior_process_params(), StateTransition.row_assignment(RowKernel.sams()), - StateTransition.view_alphas(), + StateTransition.view_prior_process_params(), StateTransition.row_assignment(RowKernel.sams()), - StateTransition.view_alphas(), + StateTransition.view_prior_process_params(), StateTransition.row_assignment(RowKernel.slice()), StateTransition.component_parameters(), StateTransition.column_assignment(ColumnKernel.gibbs()), - StateTransition.state_alpha(), + StateTransition.state_prior_process_params(), StateTransition.feature_priors(), ], "flat": [ - StateTransition.view_alphas(), + StateTransition.view_prior_process_params(), StateTransition.row_assignment(RowKernel.sams()), - StateTransition.view_alphas(), + StateTransition.view_prior_process_params(), StateTransition.row_assignment(RowKernel.sams()), - StateTransition.view_alphas(), + StateTransition.view_prior_process_params(), StateTransition.component_parameters(), StateTransition.row_assignment(RowKernel.slice()), StateTransition.component_parameters(), - StateTransition.view_alphas(), + StateTransition.view_prior_process_params(), StateTransition.feature_priors(), ], "fast": [ - StateTransition.view_alphas(), + StateTransition.view_prior_process_params(), StateTransition.row_assignment(RowKernel.slice()), StateTransition.component_parameters(), StateTransition.feature_priors(), StateTransition.column_assignment(ColumnKernel.slice()), - StateTransition.state_alpha(), + StateTransition.state_prior_process_params(), ], } diff --git a/pylace/src/lib.rs b/pylace/src/lib.rs index 3b010c6e..3f750b26 100644 --- a/pylace/src/lib.rs +++ b/pylace/src/lib.rs @@ -259,7 +259,7 @@ impl CoreEngine { ); Err(PyErr::new::(msg)) } else { - Ok(self.engine.states[state_ix].asgn.asgn.clone()) + Ok(self.engine.states[state_ix].asgn().asgn.clone()) } } @@ -275,7 +275,7 @@ impl CoreEngine { let asgns = self.engine.states[state_ix] .views .iter() - .map(|view| view.asgn.asgn.clone()) + .map(|view| view.asgn().asgn.clone()) .collect(); Ok(asgns) } @@ -385,7 +385,7 @@ impl CoreEngine { .map(|xs| PySeries(Series::new("mi", xs))) } - /// Row similarlity + /// Row similarity /// /// Parameters /// ---------- @@ -1388,6 +1388,7 @@ fn core(py: Python, m: &PyModule) -> PyResult<()> { m.add_class::()?; m.add_class::()?; m.add_class::()?; + m.add_class::()?; m.add_class::()?; m.add_function(wrap_pyfunction!(infer_srs_metadata, m)?)?; m.add_function(wrap_pyfunction!(metadata::codebook_from_df, m)?)?; diff --git a/pylace/src/metadata.rs b/pylace/src/metadata.rs index 9277930c..79f70962 100644 --- a/pylace/src/metadata.rs +++ b/pylace/src/metadata.rs @@ -5,7 +5,7 @@ use lace::stats::prior::csd::CsdHyper; use lace::stats::prior::nix::NixHyper; use lace::stats::prior::pg::PgHyper; use lace::stats::rv::dist::{ - Gamma, Gaussian, InvGamma, NormalInvChiSquared, SymmetricDirichlet, + Beta, Gamma, Gaussian, InvGamma, NormalInvChiSquared, SymmetricDirichlet, }; use polars::prelude::DataFrame; use pyo3::exceptions::{PyIOError, PyIndexError}; @@ -485,7 +485,8 @@ enum CodebookMethod { Path(PathBuf), Inferred { cat_cutoff: Option, - alpha_prior_opt: Option, + state_prior_process: Option, + view_prior_process: Option, no_hypers: bool, }, Codebook(Codebook), @@ -495,12 +496,43 @@ impl Default for CodebookMethod { fn default() -> Self { Self::Inferred { cat_cutoff: None, - alpha_prior_opt: None, + state_prior_process: None, + view_prior_process: None, no_hypers: false, } } } +#[pyclass] +#[derive(Clone, Debug)] +pub struct PriorProcess(lace::codebook::PriorProcess); + +#[pymethods] +impl PriorProcess { + #[classmethod] + #[pyo3(signature=(alpha_shape=1.0, alpha_rate=1.0, d_a=0.5, d_b=0.5))] + pub fn pitman_yor( + _cls: &PyType, + alpha_shape: f64, + alpha_rate: f64, + d_a: f64, + d_b: f64, + ) -> Self { + PriorProcess(lace::codebook::PriorProcess::PitmanYor { + alpha_prior: Gamma::new(alpha_shape, alpha_rate).unwrap(), + d_prior: Beta::new(d_a, d_b).unwrap(), + }) + } + + #[classmethod] + #[pyo3(signature=(alpha_shape=1.0, alpha_rate=1.0))] + pub fn dirichlet(_cls: &PyType, alpha_shape: f64, alpha_rate: f64) -> Self { + PriorProcess(lace::codebook::PriorProcess::Dirichlet { + alpha_prior: Gamma::new(alpha_shape, alpha_rate).unwrap(), + }) + } +} + #[pyclass] #[derive(Clone, Debug)] pub struct Codebook(pub(crate) lace::codebook::Codebook); @@ -518,25 +550,19 @@ impl Codebook { self.0.table_name = table_name; } - #[pyo3(signature=(shape=1.0, rate=1.0))] - pub fn set_state_alpha_prior( + pub fn set_state_prior_process( &mut self, - shape: f64, - rate: f64, + process: PriorProcess, ) -> PyResult<()> { - let gamma = Gamma::new(shape, rate).map_err(to_pyerr)?; - self.0.state_alpha_prior = Some(gamma); + self.0.state_prior_process = Some(process.0); Ok(()) } - #[pyo3(signature=(shape=1.0, rate=1.0))] - pub fn set_view_alpha_prior( + pub fn set_view_prior_process( &mut self, - shape: f64, - rate: f64, + process: PriorProcess, ) -> PyResult<()> { - let gamma = Gamma::new(shape, rate).map_err(to_pyerr)?; - self.0.view_alpha_prior = Some(gamma); + self.0.view_prior_process = Some(process.0); Ok(()) } @@ -589,13 +615,13 @@ impl Codebook { \n rows: {}", self.0.table_name, self.0 - .state_alpha_prior + .state_prior_process .clone() - .map_or_else(|| String::from("None"), |g| format!("{g}")), + .map_or_else(|| String::from("None"), |p| format!("{:?}", p)), self.0 - .view_alpha_prior + .view_prior_process .clone() - .map_or_else(|| String::from("None"), |g| format!("{g}")), + .map_or_else(|| String::from("None"), |p| format!("{:?}", p)), self.0.col_metadata.len(), self.0.row_names.len() ) @@ -654,7 +680,8 @@ pub fn codebook_from_df( CodebookBuilder { method: CodebookMethod::Inferred { cat_cutoff, - alpha_prior_opt: None, + state_prior_process: None, + view_prior_process: None, no_hypers, }, } @@ -679,22 +706,19 @@ impl CodebookBuilder { } #[classmethod] - #[pyo3(signature = (cat_cutoff=None, alpha_prior_shape_rate=None, use_hypers=true))] + #[pyo3(signature = (cat_cutoff=None, state_prior_process=None, view_prior_process=None, use_hypers=true))] fn infer( _cls: &PyType, cat_cutoff: Option, - alpha_prior_shape_rate: Option<(f64, f64)>, + state_prior_process: Option, + view_prior_process: Option, use_hypers: bool, ) -> PyResult { - let alpha_prior_opt = alpha_prior_shape_rate - .map(|(shape, rate)| Gamma::new(shape, rate)) - .transpose() - .map_err(|e| PyValueError::new_err(e.to_string()))?; - Ok(Self { method: CodebookMethod::Inferred { cat_cutoff, - alpha_prior_opt, + state_prior_process, + view_prior_process, no_hypers: !use_hypers, }, }) @@ -730,14 +754,21 @@ impl CodebookBuilder { } CodebookMethod::Inferred { cat_cutoff, - alpha_prior_opt, + state_prior_process, + view_prior_process, + no_hypers, + } => df_to_codebook( + df, + cat_cutoff, + state_prior_process.map(|p| p.0), + view_prior_process.map(|p| p.0), no_hypers, - } => df_to_codebook(df, cat_cutoff, alpha_prior_opt, no_hypers) - .map_err(|e| { - PyValueError::new_err(format!( - "Failed to infer the Codebook. Error: {e}" - )) - }), + ) + .map_err(|e| { + PyValueError::new_err(format!( + "Failed to infer the Codebook. Error: {e}" + )) + }), CodebookMethod::Codebook(codebook) => Ok(codebook.0), } } @@ -745,7 +776,7 @@ impl CodebookBuilder { fn __repr__(&self) -> String { match &self.method { CodebookMethod::Path(path) => format!("", path.display()), - CodebookMethod::Inferred { cat_cutoff, alpha_prior_opt, no_hypers } => format!("CodebookBuilder Inferred(cat_cutoff={cat_cutoff:?}, alpha_prior_opt={alpha_prior_opt:?}, use_hypers={})", !no_hypers), + CodebookMethod::Inferred { cat_cutoff, state_prior_process, view_prior_process, no_hypers } => format!("CodebookBuilder Inferred(cat_cutoff={cat_cutoff:?}, state_prior_process={state_prior_process:?}, view_prior_process={view_prior_process:?}, use_hypers={})", !no_hypers), CodebookMethod::Codebook(_) => String::from("Codebook (fully specified)"), } } diff --git a/pylace/src/transition.rs b/pylace/src/transition.rs index 7978db47..f45524fc 100644 --- a/pylace/src/transition.rs +++ b/pylace/src/transition.rs @@ -56,7 +56,7 @@ impl RowKernel { } } -/// A particular state transition withing the Markov chain +/// A particular state transition within the Markov chain #[pyclass] #[derive(Clone, Copy)] pub(crate) struct StateTransition(lace::cc::transition::StateTransition); @@ -79,18 +79,18 @@ impl StateTransition { )) } - /// The state alpha (controls the assignment of columns to views) - /// transition. + /// The state prior process parameters (controls the assignment of + /// columns to views) transition. #[staticmethod] - fn state_alpha() -> Self { - Self(lace::cc::transition::StateTransition::StateAlpha) + fn state_prior_process_params() -> Self { + Self(lace::cc::transition::StateTransition::StatePriorProcessParams) } - /// The view alpha (controls the assignment of rows to categories within - /// each view) transition. + /// The view prior process parameters (controls the assignment of rows to + /// categories within each view) transition. #[staticmethod] - fn view_alphas() -> Self { - Self(lace::cc::transition::StateTransition::ViewAlphas) + fn view_prior_process_params() -> Self { + Self(lace::cc::transition::StateTransition::ViewPriorProcessParams) } /// Re-sample the feature prior parameters @@ -149,8 +149,8 @@ impl std::fmt::Display for StateTransition { } St::FeaturePriors => write!(f, "FeaturePriors"), St::ComponentParams => write!(f, "ComponentParams"), - St::StateAlpha => write!(f, "StateAlpha"), - St::ViewAlphas => write!(f, "ViewAlphas"), + St::StatePriorProcessParams => write!(f, "StatePriorProcessParams"), + St::ViewPriorProcessParams => write!(f, "ViewPriorProcessParams"), } } } From 4f693e849a214f182973017f4e779ba184a8677b Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 11 Mar 2024 11:32:37 -0500 Subject: [PATCH 11/43] Got pitman-yor P(parition) correct Enumeration tests pass with PYP! --- lace/lace_stats/src/assignment.rs | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/lace/lace_stats/src/assignment.rs b/lace/lace_stats/src/assignment.rs index 7fc7fd21..ca672952 100644 --- a/lace/lace_stats/src/assignment.rs +++ b/lace/lace_stats/src/assignment.rs @@ -468,14 +468,29 @@ pub fn lcrp(n: usize, cts: &[usize], alpha: f64) -> f64 { gsum + k.mul_add(alpha.ln(), cpnt_2) } +fn ln_py_bracket(x: f64, m: usize, alpha: f64) -> f64 { + if m == 0 { + return 0.0; + } + (1..=m) + .map(|m_i| (x + (m_i as f64 - 1.0) * alpha).ln()) + .sum::() +} + +/// Formula from: +/// Pitman, Jim. "Exchangeable and partially exchangeable random partitions." +/// Probability theory and related fields 102.2 (1995): 145-158. +/// https://www.stat.berkeley.edu/~aldous/206-Exch/Papers/pitman95a.pdf pub fn lpyp(n: usize, cts: &[usize], alpha: f64, d: f64) -> f64 { - let k: f64 = cts.len() as f64; - let gsum = cts.iter().fold(0.0, |acc, ct| { - acc + ::special::Gamma::ln_gamma(*ct as f64 - d).0 - }); - let cpnt_2 = ::special::Gamma::ln_gamma(alpha + k * d).0 - - ::special::Gamma::ln_gamma(n as f64 + alpha - 1.0).0; - gsum + k.mul_add(alpha.ln(), cpnt_2) + let k = cts.len(); + let n = cts.iter().copied().sum::(); + let term_a = ln_py_bracket(alpha + d, k - 1, d); + let term_b = ln_py_bracket(alpha - 1.0, n - 1, 1.0); + let term_c = cts + .iter() + .map(|&ct_i| ln_py_bracket(1.0 - d, ct_i - 1, 1.0)) + .sum::(); + term_a - term_b + term_c } #[cfg(test)] From 5d0a047a1fededa315e3ec15f2c4bed2cf77af67 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 11 Mar 2024 21:13:30 -0500 Subject: [PATCH 12/43] All lace_cc tests pass with pitman-yor --- lace/lace_cc/tests/enum_state.rs | 123 +++++++++++++++++---------- lace/lace_cc/tests/view_enum.rs | 48 +++++++---- lace/lace_stats/src/assignment.rs | 13 ++- lace/lace_stats/src/prior_process.rs | 21 +++++ 4 files changed, 143 insertions(+), 62 deletions(-) diff --git a/lace/lace_cc/tests/enum_state.rs b/lace/lace_cc/tests/enum_state.rs index c2bb8321..e464e0b6 100644 --- a/lace/lace_cc/tests/enum_state.rs +++ b/lace/lace_cc/tests/enum_state.rs @@ -22,8 +22,10 @@ use lace_cc::transition::StateTransition; use lace_cc::view::{Builder, View}; use lace_stats::assignment::lcrp; use lace_stats::prior_process::Builder as PriorProcessBuilder; -use lace_stats::prior_process::{Dirichlet, Process}; -use lace_stats::rv::dist::Gamma; +use lace_stats::prior_process::{ + Dirichlet, PitmanYor, PriorProcessT, PriorProcessType, Process, +}; +use lace_stats::rv::dist::{Beta, Gamma}; use enum_test::{ build_features, normalize_assignment, partition_to_ix, Partition, @@ -128,18 +130,32 @@ fn state_from_partition( State::new(views, state_prior_process) } +fn emit_process(proc_type: PriorProcessType) -> Process { + match proc_type { + PriorProcessType::Dirichlet => Process::Dirichlet(Dirichlet { + alpha: 1.0, + prior: Gamma::default(), + }), + PriorProcessType::PitmanYor => Process::PitmanYor(PitmanYor { + alpha: 1.2, + d: 0.2, + prior_alpha: Gamma::default(), + prior_d: Beta::jeffreys(), + }), + } +} + /// Generates a random start state from the prior, with default values chosen for the /// feature priors, and all CRP alphas set to 1.0. fn gen_start_state( mut features: Vec, + proc_type: PriorProcessType, mut rng: &mut R, ) -> State { let n_cols = features.len(); let n_rows = features[0].len(); - let process = Process::Dirichlet(Dirichlet { - alpha: 1.0, - prior: Gamma::default(), - }); + + let process = emit_process(proc_type); let state_prior_process = PriorProcessBuilder::new(n_cols) .with_process(process) @@ -169,6 +185,8 @@ fn gen_start_state( fn calc_state_ln_posterior( features: Vec, + state_process: &Process, + view_process: &Process, mut rng: &mut R, ) -> HashMap { let n_cols = features.len(); @@ -180,9 +198,9 @@ fn calc_state_ln_posterior( .iter() .for_each(|part| { let state = state_from_partition(part, features.clone(), &mut rng); - let mut score = lcrp(state.n_cols(), &state.asgn().counts, 1.0); + let mut score = state_process.ln_f_partition(state.asgn()); for view in state.views { - score += lcrp(view.n_rows(), &view.asgn().counts, 1.0); + score += view_process.ln_f_partition(view.asgn()); for ftr in view.ftrs.values() { score += ftr.score(); } @@ -234,6 +252,7 @@ pub fn state_enum_test( row_alg: RowAssignAlg, col_alg: ColAssignAlg, ftype: FType, + proc_type: PriorProcessType, mut rng: &mut R, ) -> f64 { let features = build_features(n_rows, n_cols, ftype, &mut rng); @@ -250,34 +269,20 @@ pub fn state_enum_test( let inc: f64 = ((n_runs * n_iters) as f64).recip(); for _ in 0..n_runs { - let mut state = gen_start_state(features.clone(), &mut rng); - - // alphas should start out at 1.0 - assert!((state.prior_process.alpha().unwrap() - 1.0).abs() < 1E-16); - assert!(state - .views - .iter() - .all(|v| (v.prior_process.alpha().unwrap() - 1.0).abs() < 1E-16)); + let mut state = gen_start_state(features.clone(), proc_type, &mut rng); for _ in 0..n_iters { state.update(update_config.clone(), &mut rng); - // all alphas should be 1.0 - assert!((state.prior_process.alpha().unwrap() - 1.0).abs() < 1E-16); - assert!(state.views.iter().all(|v| (v - .prior_process - .alpha() - .unwrap() - - 1.0) - .abs() - < 1E-16)); - let ix = extract_state_index(&state); *est_posterior.entry(ix).or_insert(0.0) += inc; } } - let posterior = calc_state_ln_posterior(features, &mut rng); + let process = emit_process(proc_type); + + let posterior = + calc_state_ln_posterior(features, &process, &process, &mut rng); assert!(!est_posterior.keys().any(|k| !posterior.contains_key(k))); @@ -314,24 +319,50 @@ mod tests { // TODO: could remove $test name by using mods macro_rules! state_enum_test { ($test_name: ident, $ftype: ident, $row_alg: ident, $col_alg: ident) => { - #[test] - fn $test_name() { - fn test_fn() -> bool { - let mut rng = rand::thread_rng(); - let err = state_enum_test( - 3, - 3, - 1, - 10_000, - RowAssignAlg::$row_alg, - ColAssignAlg::$col_alg, - FType::$ftype, - &mut rng, - ); - eprintln!("err: {err}"); - err < 0.01 + mod $test_name { + use super::*; + + #[test] + fn dirichlet() { + fn test_fn() -> bool { + let mut rng = rand::thread_rng(); + let err = state_enum_test( + 3, + 3, + 1, + 10_000, + RowAssignAlg::$row_alg, + ColAssignAlg::$col_alg, + FType::$ftype, + PriorProcessType::Dirichlet, + &mut rng, + ); + eprintln!("err: {err}"); + err < 0.01 + } + assert!(flaky_test_passes(N_TRIES, test_fn)); + } + + #[test] + fn pitman_yor() { + fn test_fn() -> bool { + let mut rng = rand::thread_rng(); + let err = state_enum_test( + 3, + 3, + 1, + 10_000, + RowAssignAlg::$row_alg, + ColAssignAlg::$col_alg, + FType::$ftype, + PriorProcessType::PitmanYor, + &mut rng, + ); + eprintln!("err: {err}"); + err < 0.01 + } + assert!(flaky_test_passes(N_TRIES, test_fn)); } - assert!(flaky_test_passes(N_TRIES, test_fn)); } }; ($(($fn_name: ident, $ftype: ident, $row_alg: ident, $col_alg: ident)),+) => { @@ -353,9 +384,11 @@ mod tests { #[test] fn ln_posterior_length() { + let process = emit_process(PriorProcessType::Dirichlet); let mut rng = rand::thread_rng(); let ftrs = build_features(3, 3, FType::Continuous, &mut rng); - let posterior = calc_state_ln_posterior(ftrs, &mut rng); + let posterior = + calc_state_ln_posterior(ftrs, &process, &process, &mut rng); assert_eq!(posterior.len(), 205) } diff --git a/lace/lace_cc/tests/view_enum.rs b/lace/lace_cc/tests/view_enum.rs index fd0b2837..96109fdf 100644 --- a/lace/lace_cc/tests/view_enum.rs +++ b/lace/lace_cc/tests/view_enum.rs @@ -195,30 +195,48 @@ macro_rules! view_enum_test { assert!(flaky_test_passes(N_TRIES, test_fn)); } }; - ($ftype: ident, $proctype: ident, [$($row_alg: ident),+]) => { + ($modname: ident, $ftype: ident, $proctype: ident, [$($row_alg: ident),+]) => { #[allow(non_snake_case)] - mod $ftype { + mod $modname { use super::*; - mod $proctype { - use super::*; - $( - view_enum_test!($ftype, $proctype, $row_alg); - )+ - } + $( + view_enum_test!($ftype, $proctype, $row_alg); + )+ } }; - ($(($ftype: ident, $proctype: ident, $row_algs: tt)),+) => { + ($(($modname: ident, $ftype: ident, $proctype: ident, $row_algs: tt)),+) => { $( - view_enum_test!($ftype, $proctype, $row_algs); + view_enum_test!($modname, $ftype, $proctype, $row_algs); )+ }; } view_enum_test!( - // (Continuous, Dirichlet, [Gibbs, Slice, Sams]), - (Continuous, PitmanYor, [Gibbs, Slice, Sams]), - (Categorical, Dirichlet, [Gibbs, Slice, Sams]), - // (Categorical, PitmanYor, [Gibbs, Slice, Sams]), - (Count, Dirichlet, [Gibbs, Slice, Sams]) // (Count, PitmanYor, [Gibbs, Slice, Sams]) + ( + ve_continuous_dp, + Continuous, + Dirichlet, + [Gibbs, Slice, Sams] + ), + ( + ve_continuous_pyp, + Continuous, + PitmanYor, + [Gibbs, Slice, Sams] + ), + ( + ve_categorical_dp, + Categorical, + Dirichlet, + [Gibbs, Slice, Sams] + ), + ( + ve_categorical_pyp, + Categorical, + PitmanYor, + [Gibbs, Slice, Sams] + ), + (ve_count_dp, Count, Dirichlet, [Gibbs, Slice, Sams]), + (ve_count_pyp, Count, PitmanYor, [Gibbs, Slice, Sams]) ); diff --git a/lace/lace_stats/src/assignment.rs b/lace/lace_stats/src/assignment.rs index ca672952..14579caf 100644 --- a/lace/lace_stats/src/assignment.rs +++ b/lace/lace_stats/src/assignment.rs @@ -485,12 +485,21 @@ pub fn lpyp(n: usize, cts: &[usize], alpha: f64, d: f64) -> f64 { let k = cts.len(); let n = cts.iter().copied().sum::(); let term_a = ln_py_bracket(alpha + d, k - 1, d); - let term_b = ln_py_bracket(alpha - 1.0, n - 1, 1.0); + let term_b = ln_py_bracket(alpha + 1.0, n - 1, 1.0); let term_c = cts .iter() .map(|&ct_i| ln_py_bracket(1.0 - d, ct_i - 1, 1.0)) .sum::(); - term_a - term_b + term_c + let ln_f = term_a - term_b + term_c; + + // if !ln_f.is_finite() { + // eprintln!("PYP:\na: {alpha}\nd: {d}\ncounts: {cts:?}"); + // eprintln!("ta: {term_a}"); + // eprintln!("tb: {term_b}"); + // eprintln!("tc: {term_c}"); + // } + + ln_f } #[cfg(test)] diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index 62b273aa..dcdf8872 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -32,6 +32,8 @@ pub trait PriorProcessT { fn update_params(&mut self, asgn: &Assignment, rng: &mut R) -> f64; fn reset_params(&mut self, rng: &mut R); + + fn ln_f_partition(&self, asgn: &Assignment) -> f64; } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] @@ -135,6 +137,10 @@ impl PriorProcessT for Dirichlet { fn reset_params(&mut self, rng: &mut R) { self.alpha = self.prior.draw(rng); } + + fn ln_f_partition(&self, asgn: &Assignment) -> f64 { + crate::assignment::lcrp(asgn.len(), &asgn.counts, self.alpha) + } } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] @@ -263,6 +269,10 @@ impl PriorProcessT for PitmanYor { self.alpha = self.prior_alpha.draw(rng); self.d = self.prior_d.draw(rng); } + + fn ln_f_partition(&self, asgn: &Assignment) -> f64 { + crate::assignment::lpyp(asgn.len(), &asgn.counts, self.alpha, self.d) + } } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] @@ -330,6 +340,13 @@ impl PriorProcessT for Process { Self::PitmanYor(proc) => proc.reset_params(rng), } } + + fn ln_f_partition(&self, asgn: &Assignment) -> f64 { + match self { + Self::Dirichlet(proc) => proc.ln_f_partition(asgn), + Self::PitmanYor(proc) => proc.ln_f_partition(asgn), + } + } } impl Default for Process { @@ -382,6 +399,10 @@ impl PriorProcess { Process::PitmanYor(inner) => Some(inner.d), } } + + pub fn ln_f_partition(&self, asgn: &Assignment) -> f64 { + self.process.ln_f_partition(asgn) + } } #[derive(Clone, Copy, Debug, Serialize, Deserialize)] From bae9f3bba6616be158efb5556e25c74c21246915 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Wed, 13 Mar 2024 14:39:50 -0500 Subject: [PATCH 13/43] Clean up prior process methods --- lace/lace_cc/examples/view_geweke.rs | 2 +- lace/lace_cc/src/state.rs | 36 ++++-- lace/lace_cc/src/view.rs | 43 ++------ lace/lace_cc/tests/enum_state.rs | 1 - lace/lace_cc/tests/view_enum.rs | 6 +- lace/lace_metadata/src/latest.rs | 2 +- lace/lace_metadata/src/versions/v1.rs | 7 +- lace/lace_stats/src/assignment.rs | 152 +------------------------- lace/lace_stats/src/prior_process.rs | 39 ++----- lace/src/interface/oracle/mod.rs | 2 +- pylace/lace/codebook.py | 2 +- 11 files changed, 58 insertions(+), 234 deletions(-) diff --git a/lace/lace_cc/examples/view_geweke.rs b/lace/lace_cc/examples/view_geweke.rs index fcca6760..dbc0a4e1 100644 --- a/lace/lace_cc/examples/view_geweke.rs +++ b/lace/lace_cc/examples/view_geweke.rs @@ -23,7 +23,7 @@ struct Opt { pub no_priors: bool, #[clap(long)] pub pitman_yor: bool, - #[clap(long, short, default_value = "10000")] + #[clap(long, short = 'i', default_value = "10000")] pub niters: usize, } diff --git a/lace/lace_cc/src/state.rs b/lace/lace_cc/src/state.rs index ccd02436..6041fd8e 100644 --- a/lace/lace_cc/src/state.rs +++ b/lace/lace_cc/src/state.rs @@ -103,7 +103,7 @@ impl State { rng: &mut R, ) -> Self { let n_cols = ftrs.len(); - let n_rows = ftrs.get(0).map(|f| f.len()).unwrap_or(0); + let n_rows = ftrs.first().map(|f| f.len()).unwrap_or(0); let prior_process = PriorProcess::from_process(state_process, n_cols, rng); let mut views: Vec = (0..prior_process.asgn.n_cats) @@ -168,7 +168,7 @@ impl State { /// Get the number of rows #[inline] pub fn n_rows(&self) -> usize { - self.views.get(0).map(|v| v.n_rows()).unwrap_or(0) + self.views.first().map(|v| v.n_rows()).unwrap_or(0) } /// Get the number of columns @@ -448,7 +448,7 @@ impl State { pub fn insert_feature( &mut self, ftr: ColModel, - draw_alpha: bool, + update_process_params: bool, rng: &mut R, ) -> f64 { // Number of singleton features. For assigning to a singleton, we have @@ -485,7 +485,7 @@ impl State { // here we create the monte carlo estimate for the singleton view let mut tmp_asgns = { let seeds: Vec = (0..m).map(|_| rng.gen()).collect(); - self.create_tmp_assigns(n_views, draw_alpha, &seeds) + self.create_tmp_assigns(n_views, update_process_params, &seeds) }; tmp_asgns.iter().for_each(|(_, tmp_asgn)| { @@ -524,11 +524,11 @@ impl State { pub fn reassign_col_gibbs( &mut self, col_ix: usize, - draw_alpha: bool, + update_process_params: bool, rng: &mut R, ) -> f64 { let ftr = self.extract_ftr(col_ix); - self.insert_feature(ftr, draw_alpha, rng) + self.insert_feature(ftr, update_process_params, rng) } /// Reassign all columns using the Gibbs transition. @@ -546,7 +546,8 @@ impl State { if self.n_cols() == 1 { return; } - let draw_alpha = transitions + + let update_process_params = transitions .iter() .any(|&t| t == StateTransition::ViewPriorProcessParams); @@ -556,7 +557,7 @@ impl State { col_ixs.shuffle(rng); col_ixs.drain(..).for_each(|col_ix| { - self.reassign_col_gibbs(col_ix, draw_alpha, rng); + self.reassign_col_gibbs(col_ix, update_process_params, rng); }) } @@ -1266,7 +1267,10 @@ impl GewekeSummarize for State { None }, alpha: if settings.do_process_params_transition() { - Some(self.prior_process.alpha().unwrap()) + Some(match self.prior_process.process { + Process::Dirichlet(ref inner) => inner.alpha, + Process::PitmanYor(ref inner) => inner.alpha, + }) } else { None }, @@ -1553,9 +1557,15 @@ mod test { cols_always_flat = false; } - if !basically_one(state.prior_process.alpha().unwrap()) { + let alpha = match state.prior_process.process { + Process::Dirichlet(ref inner) => inner.alpha, + Process::PitmanYor(ref inner) => inner.alpha, + }; + + if !basically_one(alpha) { state_alpha_1 = false; } + // 2. Check the column priors for view in state.views.iter() { // Check the view assignment priors @@ -1563,8 +1573,12 @@ mod test { if view.asgn().asgn.iter().any(|&zi| zi != 0) { rows_always_flat = false; } + let view_alpha = match view.prior_process.process { + Process::Dirichlet(ref inner) => inner.alpha, + Process::PitmanYor(ref inner) => inner.alpha, + }; - if !basically_one(view.prior_process.alpha().unwrap()) { + if !basically_one(view_alpha) { view_alphas_1 = false; } } diff --git a/lace/lace_cc/src/view.rs b/lace/lace_cc/src/view.rs index 493d5ec3..f1ec2c20 100644 --- a/lace/lace_cc/src/view.rs +++ b/lace/lace_cc/src/view.rs @@ -824,7 +824,6 @@ impl View { } fn sams_merge(&mut self, i: usize, j: usize, rng: &mut R) { - use lace_stats::assignment::lpyp; use std::cmp::Ordering; let zi = self.asgn().asgn[i]; @@ -859,14 +858,8 @@ impl View { } }); - // FIXME: only works for CRP - let logp_mrg = self.logm(self.n_cats()) - + lpyp( - asgn.len(), - &asgn.counts, - self.prior_process.alpha().unwrap(), - self.prior_process.d().unwrap(), - ); + let logp_mrg = + self.logm(self.n_cats()) + self.prior_process.ln_f_partition(&asgn); self.drop_component(self.n_cats()); @@ -876,18 +869,11 @@ impl View { } fn sams_split(&mut self, i: usize, j: usize, rng: &mut R) { - use lace_stats::assignment::lpyp; - let zi = self.asgn().asgn[i]; // FIXME: only works for CRP - let logp_mrg = self.logm(zi) - + lpyp( - self.asgn().len(), - &self.asgn().counts, - self.prior_process.alpha().unwrap(), - self.prior_process.d().unwrap(), - ); + let logp_mrg = + self.logm(zi) + self.prior_process.ln_f_partition(self.asgn()); let (logp_spt, logq_spt, asgn_opt) = self.propose_split(i, j, false, rng); @@ -906,8 +892,6 @@ impl View { calc_reverse: bool, rng: &mut R, ) -> (f64, f64, Option) { - use lace_stats::assignment::lpyp; - let zi = self.asgn().asgn[i]; let zj = self.asgn().asgn[j]; @@ -968,12 +952,7 @@ impl View { let mut logp = self.logm(zi_tmp) + self.logm(zj_tmp); let asgn = if calc_reverse { - logp += lpyp( - self.asgn().len(), - &self.asgn().counts, - self.prior_process.alpha().unwrap(), - self.prior_process.d().unwrap(), - ); + logp += self.prior_process.ln_f_partition(self.asgn()); None } else { tmp_z.iter_mut().for_each(|z| { @@ -992,12 +971,7 @@ impl View { .unwrap() .asgn; - logp += lpyp( - asgn.len(), - &asgn.counts, - self.prior_process.alpha().unwrap(), - self.prior_process.d().unwrap(), - ); + logp += self.prior_process.ln_f_partition(&asgn); Some(asgn) }; @@ -1281,7 +1255,10 @@ impl GewekeSummarize for View { None }, alpha: if settings.do_process_params_transition() { - Some(self.prior_process.alpha().unwrap()) + Some(match self.prior_process.process { + Process::Dirichlet(ref inner) => inner.alpha, + Process::PitmanYor(ref inner) => inner.alpha, + }) } else { None }, diff --git a/lace/lace_cc/tests/enum_state.rs b/lace/lace_cc/tests/enum_state.rs index e464e0b6..36803ca5 100644 --- a/lace/lace_cc/tests/enum_state.rs +++ b/lace/lace_cc/tests/enum_state.rs @@ -20,7 +20,6 @@ use lace_cc::feature::{ColModel, FType, Feature}; use lace_cc::state::State; use lace_cc::transition::StateTransition; use lace_cc::view::{Builder, View}; -use lace_stats::assignment::lcrp; use lace_stats::prior_process::Builder as PriorProcessBuilder; use lace_stats::prior_process::{ Dirichlet, PitmanYor, PriorProcessT, PriorProcessType, Process, diff --git a/lace/lace_cc/tests/view_enum.rs b/lace/lace_cc/tests/view_enum.rs index 96109fdf..d723a73c 100644 --- a/lace/lace_cc/tests/view_enum.rs +++ b/lace/lace_cc/tests/view_enum.rs @@ -14,7 +14,6 @@ use lace_cc::alg::RowAssignAlg; use lace_cc::feature::{ColModel, FType, Feature}; use lace_cc::transition::ViewTransition; use lace_cc::view::{Builder, View}; -use lace_stats::assignment::{lcrp, lpyp}; use lace_stats::prior_process::Builder as PriorProcessBuilder; use lace_stats::prior_process::{Dirichlet, PitmanYor, Process}; use lace_stats::rv::dist::{Beta, Gamma}; @@ -70,11 +69,8 @@ fn calc_partition_ln_posterior( .build() .unwrap(); - let alpha = prior_process.alpha().unwrap(); - let d = prior_process.d().unwrap(); - // let ln_pz = lcrp(n, &prior_process.asgn.counts, alpha); - let ln_pz = lpyp(n, &prior_process.asgn.counts, alpha, d); + let ln_pz = prior_process.ln_f_partition(&prior_process.asgn); let view: View = Builder::from_prior_process(prior_process) .features(features.clone()) diff --git a/lace/lace_metadata/src/latest.rs b/lace/lace_metadata/src/latest.rs index c5d85767..7b91b5da 100644 --- a/lace/lace_metadata/src/latest.rs +++ b/lace/lace_metadata/src/latest.rs @@ -194,7 +194,7 @@ impl From for DatalessStateAndDiagnostics { fn from(state_and_diag: v1::DatalessStateAndDiagnostics) -> Self { Self { state: state_and_diag.state.into(), - diagnostics: state_and_diag.diagnostics.into(), + diagnostics: state_and_diag.diagnostics, } } } diff --git a/lace/lace_metadata/src/versions/v1.rs b/lace/lace_metadata/src/versions/v1.rs index 0f00b542..2ece9d22 100644 --- a/lace/lace_metadata/src/versions/v1.rs +++ b/lace/lace_metadata/src/versions/v1.rs @@ -1,10 +1,9 @@ use std::collections::BTreeMap; use lace_cc::component::ConjugateComponent; -use lace_cc::feature::{ColModel, Column, MissingNotAtRandom}; -use lace_cc::state::{State, StateDiagnostics}; +use lace_cc::feature::{ColModel, Column}; +use lace_cc::state::StateDiagnostics; use lace_cc::traits::{LaceDatum, LaceLikelihood, LacePrior, LaceStat}; -use lace_cc::view::View; use lace_data::{FeatureData, SparseContainer}; use lace_stats::prior::csd::CsdHyper; use lace_stats::prior::nix::NixHyper; @@ -19,7 +18,7 @@ use rand_xoshiro::Xoshiro256Plus; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use std::sync::OnceLock; -use crate::{impl_metadata_version, to_from_newtype, MetadataVersion}; +use crate::{impl_metadata_version, MetadataVersion}; pub const METADATA_VERSION: i32 = 0; diff --git a/lace/lace_stats/src/assignment.rs b/lace/lace_stats/src/assignment.rs index 14579caf..0ee9d738 100644 --- a/lace/lace_stats/src/assignment.rs +++ b/lace/lace_stats/src/assignment.rs @@ -321,143 +321,6 @@ impl Assignment { } } -// /// Constructs `Assignment`s -// #[derive(Clone, Debug)] -// pub struct AssignmentBuilder { -// n: usize, -// asgn: Option>, -// prior_process: Option, -// seed: Option, -// } - -// #[derive(Debug, Error, PartialEq)] -// pub enum BuildAssignmentError { -// #[error("alpha is zero")] -// AlphaIsZero, -// #[error("non-finite alpha: {alpha}")] -// AlphaNotFinite { alpha: f64 }, -// #[error("assignment vector is empty")] -// EmptyAssignmentVec, -// #[error("there are {n_cats} categories but {n} data")] -// NLessThanNCats { n: usize, n_cats: usize }, -// #[error("invalid assignment: {0}")] -// AssignmentError(#[from] AssignmentError), -// } - -// impl AssignmentBuilder { -// /// Create a builder for `n`-length assignments -// /// -// /// # Arguments -// /// - n: the number of data/entries in the assignment -// pub fn new(n: usize) -> Self { -// AssignmentBuilder { -// n, -// asgn: None, -// prior_process: None, -// seed: None, -// } -// } - -// /// Initialize the builder from an assignment vector -// /// -// /// # Note: -// /// The validity of `asgn` will not be verified until `build` is called. -// pub fn from_vec(asgn: Vec) -> Self { -// AssignmentBuilder { -// n: asgn.len(), -// asgn: Some(asgn), -// prior_process: None, -// seed: None, -// } -// } - -// /// Add a prior on the `Crp` `alpha` parameter -// #[must_use] -// pub fn with_prior_process(mut self, process: Process) -> Self { -// self.prior_process = Some(process); -// self -// } - -// /// Set the RNG seed -// #[must_use] -// pub fn with_seed(mut self, seed: u64) -> Self { -// self.seed = Some(seed); -// self -// } - -// /// Set the RNG seed from another RNG -// #[must_use] -// pub fn seed_from_rng(mut self, rng: &mut R) -> Self { -// self.seed = Some(rng.next_u64()); -// self -// } - -// /// Use a *flat* assignment with one partition -// #[must_use] -// pub fn flat(mut self) -> Self { -// self.asgn = Some(vec![0; self.n]); -// self -// } - -// /// Use an assignment with `n_cats`, evenly populated partitions/categories -// pub fn with_n_cats( -// mut self, -// n_cats: usize, -// ) -> Result { -// if n_cats > self.n { -// Err(BuildAssignmentError::NLessThanNCats { n: self.n, n_cats }) -// } else { -// let asgn: Vec = (0..self.n).map(|i| i % n_cats).collect(); -// self.asgn = Some(asgn); -// Ok(self) -// } -// } - -// /// Build the assignment and consume the builder -// pub fn build(self) -> Result { -// use lace_stats::prior_process::{Dirichlet, PriorProcessT}; - -// let mut rng = self.seed.map_or_else( -// || Xoshiro256Plus::from_entropy(), -// Xoshiro256Plus::seed_from_u64, -// ); - -// let process = self.prior_process.unwrap_or_else(|| { -// Process::Dirichlet(Dirichlet::from_prior( -// lace_consts::general_alpha_prior(), -// &mut rng, -// )) -// }); - -// let n = self.n; -// let asgn = self -// .asgn -// .unwrap_or_else(|| process.draw_assignment(n, &mut rng).asgn); - -// let n_cats: usize = asgn.iter().max().map(|&m| m + 1).unwrap_or(0); -// let mut counts: Vec = vec![0; n_cats]; -// for z in &asgn { -// counts[*z] += 1; -// } - -// let asgn_out = Assignment { -// asgn, -// counts, -// n_cats, -// }; - -// if lace_stats::validate_assignment!(asgn_out) { -// Ok(asgn_out) -// } else { -// asgn_out -// .validate() -// .emit_error() -// .map_err(BuildAssignmentError::AssignmentError) -// .map(|_| asgn_out) -// } -// } -// } - pub fn lcrp(n: usize, cts: &[usize], alpha: f64) -> f64 { let k: f64 = cts.len() as f64; let gsum = cts.iter().fold(0.0, |acc, ct| { @@ -473,7 +336,7 @@ fn ln_py_bracket(x: f64, m: usize, alpha: f64) -> f64 { return 0.0; } (1..=m) - .map(|m_i| (x + (m_i as f64 - 1.0) * alpha).ln()) + .map(|m_i| (m_i as f64 - 1.0).mul_add(alpha, x).ln()) .sum::() } @@ -481,7 +344,7 @@ fn ln_py_bracket(x: f64, m: usize, alpha: f64) -> f64 { /// Pitman, Jim. "Exchangeable and partially exchangeable random partitions." /// Probability theory and related fields 102.2 (1995): 145-158. /// https://www.stat.berkeley.edu/~aldous/206-Exch/Papers/pitman95a.pdf -pub fn lpyp(n: usize, cts: &[usize], alpha: f64, d: f64) -> f64 { +pub fn lpyp(cts: &[usize], alpha: f64, d: f64) -> f64 { let k = cts.len(); let n = cts.iter().copied().sum::(); let term_a = ln_py_bracket(alpha + d, k - 1, d); @@ -490,16 +353,7 @@ pub fn lpyp(n: usize, cts: &[usize], alpha: f64, d: f64) -> f64 { .iter() .map(|&ct_i| ln_py_bracket(1.0 - d, ct_i - 1, 1.0)) .sum::(); - let ln_f = term_a - term_b + term_c; - - // if !ln_f.is_finite() { - // eprintln!("PYP:\na: {alpha}\nd: {d}\ncounts: {cts:?}"); - // eprintln!("ta: {term_a}"); - // eprintln!("tb: {term_b}"); - // eprintln!("tc: {term_c}"); - // } - - ln_f + term_a - term_b + term_c } #[cfg(test)] diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index dcdf8872..f60fa103 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -100,9 +100,9 @@ impl PriorProcessT for Dirichlet { let mut ps = vec![1.0, self.alpha]; let mut zs = vec![0; n]; - for i in 1..n { + for z in zs.iter_mut().take(n).skip(1) { let zi = pflip(&ps, 1, rng)[0]; - zs[i] = zi; + *z = zi; if zi < counts.len() { ps[zi] += 1.0; counts[zi] += 1; @@ -172,7 +172,7 @@ impl PriorProcessT for PitmanYor { } fn ln_singleton_weight(&self, n_cats: usize) -> f64 { - (self.alpha + self.d * (n_cats as f64)).ln() + self.d.mul_add(n_cats as f64, self.alpha).ln() } fn weight_vec( @@ -185,7 +185,7 @@ impl PriorProcessT for PitmanYor { asgn.counts.iter().map(|&ct| ct as f64 - self.d).collect(); let z = if append_new { - weights.push(self.alpha + self.d * asgn.n_cats as f64); + weights.push(self.d.mul_add(asgn.n_cats as f64, self.alpha)); asgn.len() as f64 + self.alpha } else { asgn.len() as f64 @@ -216,16 +216,16 @@ impl PriorProcessT for PitmanYor { let mut ps = vec![1.0 - self.d, self.alpha + self.d]; let mut zs = vec![0; n]; - for i in 1..n { + for z in zs.iter_mut().take(n).skip(1) { let zi = pflip(&ps, 1, rng)[0]; - zs[i] = zi; + *z = zi; if zi < counts.len() { ps[zi] += 1.0; counts[zi] += 1; } else { ps[zi] = 1.0 - self.d; counts.push(1); - ps.push(self.alpha + self.d * counts.len() as f64); + ps.push(self.d.mul_add(counts.len() as f64, self.alpha)); }; } @@ -238,11 +238,10 @@ impl PriorProcessT for PitmanYor { fn update_params(&mut self, asgn: &Assignment, rng: &mut R) -> f64 { let cts = &asgn.counts; - let n: usize = asgn.len(); // TODO: this is not the best way to do this. let ln_f_alpha = { let loglike = - |alpha: &f64| crate::assignment::lpyp(n, cts, *alpha, self.d); + |alpha: &f64| crate::assignment::lpyp(cts, *alpha, self.d); let prior_ref = &self.prior_alpha; let prior_draw = |rng: &mut R| prior_ref.draw(rng); let mh_result = @@ -253,7 +252,7 @@ impl PriorProcessT for PitmanYor { let ln_f_d = { let loglike = - |d: &f64| crate::assignment::lpyp(n, cts, self.alpha, *d); + |d: &f64| crate::assignment::lpyp(cts, self.alpha, *d); let prior_ref = &self.prior_d; let prior_draw = |rng: &mut R| prior_ref.draw(rng); let mh_result = @@ -271,7 +270,7 @@ impl PriorProcessT for PitmanYor { } fn ln_f_partition(&self, asgn: &Assignment) -> f64 { - crate::assignment::lpyp(asgn.len(), &asgn.counts, self.alpha, self.d) + crate::assignment::lpyp(&asgn.counts, self.alpha, self.d) } } @@ -386,20 +385,6 @@ impl PriorProcess { self.process.update_params(&self.asgn, rng) } - pub fn alpha(&self) -> Option { - match &self.process { - Process::Dirichlet(inner) => Some(inner.alpha), - Process::PitmanYor(inner) => Some(inner.alpha), - } - } - - pub fn d(&self) -> Option { - match &self.process { - Process::Dirichlet(inner) => Some(0.0), - Process::PitmanYor(inner) => Some(inner.d), - } - } - pub fn ln_f_partition(&self, asgn: &Assignment) -> f64 { self.process.ln_f_partition(asgn) } @@ -442,7 +427,7 @@ fn sb_slice_extend( loop { if d > 0.0 { let n_cats = weights.len() as f64; - beta.set_beta(alpha + d * n_cats).unwrap(); + beta.set_beta(d.mul_add(n_cats, alpha)).unwrap(); } let vk: f64 = beta.draw(&mut rng); @@ -565,7 +550,7 @@ impl Builder { let mut rng = self .seed - .map_or_else(|| StdRng::from_entropy(), StdRng::seed_from_u64); + .map_or_else(StdRng::from_entropy, StdRng::seed_from_u64); let process = self.process.unwrap_or_else(|| { Process::Dirichlet(Dirichlet::from_prior( diff --git a/lace/src/interface/oracle/mod.rs b/lace/src/interface/oracle/mod.rs index b9116ac7..042e66ef 100644 --- a/lace/src/interface/oracle/mod.rs +++ b/lace/src/interface/oracle/mod.rs @@ -139,7 +139,7 @@ impl Oracle { /// Convert an `Engine` into an `Oracle` pub fn from_engine(engine: Engine) -> Self { let data = { - let data_map = engine.states.get(0).unwrap().clone_data(); + let data_map = engine.states.first().unwrap().clone_data(); DataStore::new(data_map) }; diff --git a/pylace/lace/codebook.py b/pylace/lace/codebook.py index 39b5b188..1c590d47 100644 --- a/pylace/lace/codebook.py +++ b/pylace/lace/codebook.py @@ -289,7 +289,7 @@ def rename(self, name: str): codebook.codebook.rename(name) return codebook - def set_state_alpha_prior(self, prior_process: _lc.PriorProcess): + def set_state_prior_process(self, prior_process: _lc.PriorProcess): """ Return a copy of the codebook with a new state PriorProcess. From 272d56ae3852c997977e3dbfed0d5883ef310f0b Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 18 Mar 2024 12:13:43 -0500 Subject: [PATCH 14/43] making progress on tests --- lace/lace_codebook/src/data.rs | 2 +- lace/lace_codebook/src/formats.rs | 7 +-- lace/lace_stats/src/assignment.rs | 72 +++++++++++++++------------- lace/src/interface/engine/builder.rs | 8 ++-- lace/src/interface/oracle/mod.rs | 6 +-- lace/tests/engine.rs | 2 +- lace/tests/feature.rs | 2 +- 7 files changed, 54 insertions(+), 45 deletions(-) diff --git a/lace/lace_codebook/src/data.rs b/lace/lace_codebook/src/data.rs index 45b344eb..c28746cd 100644 --- a/lace/lace_codebook/src/data.rs +++ b/lace/lace_codebook/src/data.rs @@ -505,7 +505,7 @@ mod test { let file = write_to_tempfile(&data); let codebook = - codebook_from_csv(file.path(), None, None, false).unwrap(); + codebook_from_csv(file.path(), None, None, None, false).unwrap(); assert_eq!(codebook.col_metadata.len(), 5); assert_eq!(codebook.row_names.len(), 5); diff --git a/lace/lace_codebook/src/formats.rs b/lace/lace_codebook/src/formats.rs index 5cb80b85..9f0e8150 100644 --- a/lace/lace_codebook/src/formats.rs +++ b/lace/lace_codebook/src/formats.rs @@ -1,5 +1,4 @@ use crate::ReadError; -use lace_stats::rv::dist::Gamma; use polars::prelude::{ CsvReader, DataFrame, IpcReader, JsonFormat, JsonReader, ParquetReader, SerReader, @@ -54,14 +53,16 @@ macro_rules! codebook_from_fn { pub fn $fn_name>( path: P, cat_cutoff: Option, - alpha_prior_opt: Option, + state_prior_process: Option<$crate::codebook::PriorProcess>, + view_prior_process: Option<$crate::codebook::PriorProcess>, no_hypers: bool, ) -> Result<$crate::codebook::Codebook, $crate::error::CodebookError> { let df = $reader(path).unwrap(); $crate::data::df_to_codebook( &df, cat_cutoff, - alpha_prior_opt, + state_prior_process, + view_prior_process, no_hypers, ) } diff --git a/lace/lace_stats/src/assignment.rs b/lace/lace_stats/src/assignment.rs index 0ee9d738..bc559eac 100644 --- a/lace/lace_stats/src/assignment.rs +++ b/lace/lace_stats/src/assignment.rs @@ -359,17 +359,17 @@ pub fn lpyp(cts: &[usize], alpha: f64, d: f64) -> f64 { #[cfg(test)] mod tests { use super::*; + use crate::prior_process::Builder as AssignmentBuilder; + use crate::prior_process::{Dirichlet, Process}; use crate::rv::dist::Gamma; use approx::*; #[test] fn zero_count_fails_validation() { let asgn = Assignment { - alpha: 1.0, asgn: vec![0, 0, 0, 0], counts: vec![0, 4], n_cats: 1, - prior: Gamma::new(1.0, 1.0).unwrap(), }; let diagnostic = asgn.validate(); @@ -388,11 +388,9 @@ mod tests { #[test] fn bad_counts_fails_validation() { let asgn = Assignment { - alpha: 1.0, asgn: vec![1, 1, 0, 0], counts: vec![2, 3], n_cats: 2, - prior: Gamma::new(1.0, 1.0).unwrap(), }; let diagnostic = asgn.validate(); @@ -411,11 +409,9 @@ mod tests { #[test] fn low_n_cats_fails_validation() { let asgn = Assignment { - alpha: 1.0, asgn: vec![1, 1, 0, 0], counts: vec![2, 2], n_cats: 1, - prior: Gamma::new(1.0, 1.0).unwrap(), }; let diagnostic = asgn.validate(); @@ -434,11 +430,9 @@ mod tests { #[test] fn high_n_cats_fails_validation() { let asgn = Assignment { - alpha: 1.0, asgn: vec![1, 1, 0, 0], counts: vec![2, 2], n_cats: 3, - prior: Gamma::new(1.0, 1.0).unwrap(), }; let diagnostic = asgn.validate(); @@ -457,11 +451,9 @@ mod tests { #[test] fn no_zero_cat_fails_validation() { let asgn = Assignment { - alpha: 1.0, asgn: vec![1, 1, 2, 2], counts: vec![2, 2], n_cats: 2, - prior: Gamma::new(1.0, 1.0).unwrap(), }; let diagnostic = asgn.validate(); @@ -483,29 +475,34 @@ mod tests { // do the test 100 times because it's random for _ in 0..100 { - let asgn = AssignmentBuilder::new(n).build().unwrap(); + let asgn = AssignmentBuilder::new(n).build().unwrap().asgn; assert!(asgn.validate().is_valid()); } } #[test] - fn from_prior_should_have_valid_alpha_and_proper_length() { + fn from_prior_process_should_have_valid_alpha_and_proper_length() { let n: usize = 50; + let mut rng = rand::thread_rng(); + let process = Process::Dirichlet(Dirichlet::from_prior( + Gamma::new(1.0, 1.0).unwrap(), + &mut rng, + )); let asgn = AssignmentBuilder::new(n) - .with_prior(Gamma::new(1.0, 1.0).unwrap()) + .with_process(process) .build() - .unwrap(); + .unwrap() + .asgn; assert!(!asgn.is_empty()); assert_eq!(asgn.len(), n); assert!(asgn.validate().is_valid()); - assert!(asgn.alpha > 0.0); } #[test] fn flat_partition_validation() { let n: usize = 50; - let asgn = AssignmentBuilder::new(n).flat().build().unwrap(); + let asgn = AssignmentBuilder::new(n).flat().build().unwrap().asgn; assert_eq!(asgn.n_cats, 1); assert_eq!(asgn.counts.len(), 1); @@ -516,7 +513,7 @@ mod tests { #[test] fn from_vec() { let z = vec![0, 1, 2, 0, 1, 0]; - let asgn = AssignmentBuilder::from_vec(z).build().unwrap(); + let asgn = AssignmentBuilder::from_vec(z).build().unwrap().asgn; assert_eq!(asgn.n_cats, 3); assert_eq!(asgn.counts[0], 3); assert_eq!(asgn.counts[1], 2); @@ -529,7 +526,8 @@ mod tests { .with_n_cats(5) .expect("Whoops!") .build() - .unwrap(); + .unwrap() + .asgn; assert!(asgn.validate().is_valid()); assert_eq!(asgn.n_cats, 5); assert_eq!(asgn.counts[0], 20); @@ -545,7 +543,8 @@ mod tests { .with_n_cats(5) .expect("Whoops!") .build() - .unwrap(); + .unwrap() + .asgn; assert!(asgn.validate().is_valid()); assert_eq!(asgn.n_cats, 5); assert_eq!(asgn.counts[0], 21); @@ -640,7 +639,7 @@ mod tests { #[test] fn unassign_non_singleton() { let z: Vec = vec![0, 1, 1, 1, 2, 2]; - let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap(); + let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap().asgn; assert_eq!(asgn.n_cats, 3); assert_eq!(asgn.counts, vec![1, 3, 2]); @@ -655,7 +654,7 @@ mod tests { #[test] fn unassign_singleton_low() { let z: Vec = vec![0, 1, 1, 1, 2, 2]; - let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap(); + let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap().asgn; assert_eq!(asgn.n_cats, 3); assert_eq!(asgn.counts, vec![1, 3, 2]); @@ -670,7 +669,7 @@ mod tests { #[test] fn unassign_singleton_high() { let z: Vec = vec![0, 0, 1, 1, 1, 2]; - let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap(); + let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap().asgn; assert_eq!(asgn.n_cats, 3); assert_eq!(asgn.counts, vec![2, 3, 1]); @@ -685,7 +684,7 @@ mod tests { #[test] fn unassign_singleton_middle() { let z: Vec = vec![0, 0, 1, 2, 2, 2]; - let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap(); + let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap().asgn; assert_eq!(asgn.n_cats, 3); assert_eq!(asgn.counts, vec![2, 1, 3]); @@ -700,7 +699,7 @@ mod tests { #[test] fn reassign_to_existing_cat() { let z: Vec = vec![0, 1, 1, 1, 2, 2]; - let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap(); + let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap().asgn; assert_eq!(asgn.n_cats, 3); assert_eq!(asgn.counts, vec![1, 3, 2]); @@ -721,7 +720,7 @@ mod tests { #[test] fn reassign_to_new_cat() { let z: Vec = vec![0, 1, 1, 1, 2, 2]; - let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap(); + let mut asgn = AssignmentBuilder::from_vec(z).build().unwrap().asgn; assert_eq!(asgn.n_cats, 3); assert_eq!(asgn.counts, vec![1, 3, 2]); @@ -768,13 +767,22 @@ mod tests { #[test] fn from_rng_seed_control_works() { - let mut rng_1 = Xoshiro256Plus::seed_from_u64(17_834_795); - let mut rng_2 = Xoshiro256Plus::seed_from_u64(17_834_795); - let asgn_1 = - AssignmentBuilder::new(25).seed_from_rng(&mut rng_1).build(); - let asgn_2 = - AssignmentBuilder::new(25).seed_from_rng(&mut rng_2).build(); - let asgn_3 = AssignmentBuilder::new(25).build(); + use rand::rngs::SmallRng; + use rand::SeedableRng; + + let mut rng_1 = SmallRng::seed_from_u64(17_834_795); + let mut rng_2 = SmallRng::seed_from_u64(17_834_795); + let asgn_1 = AssignmentBuilder::new(25) + .seed_from_rng(&mut rng_1) + .build() + .unwrap() + .asgn; + let asgn_2 = AssignmentBuilder::new(25) + .seed_from_rng(&mut rng_2) + .build() + .unwrap() + .asgn; + let asgn_3 = AssignmentBuilder::new(25).build().unwrap().asgn; assert_eq!(asgn_1, asgn_2); assert_ne!(asgn_1, asgn_3); } diff --git a/lace/src/interface/engine/builder.rs b/lace/src/interface/engine/builder.rs index f8a8141e..3efa80c4 100644 --- a/lace/src/interface/engine/builder.rs +++ b/lace/src/interface/engine/builder.rs @@ -193,11 +193,11 @@ mod tests { for (state_1, state_2) in engine_1.states.iter().zip(engine_2.states.iter()) { - assert_eq!(&state_1.asgn, &state_2.asgn); + assert_eq!(state_1.asgn(), state_2.asgn()); for (view_1, view_2) in state_1.views.iter().zip(state_2.views.iter()) { - assert_eq!(&view_1.asgn, &view_2.asgn); + assert_eq!(view_1.asgn(), view_2.asgn()); } } @@ -208,11 +208,11 @@ mod tests { for (state_1, state_2) in engine_1.states.iter().zip(engine_2.states.iter()) { - assert_eq!(&state_1.asgn, &state_2.asgn); + assert_eq!(state_1.asgn(), state_2.asgn()); for (view_1, view_2) in state_1.views.iter().zip(state_2.views.iter()) { - assert_eq!(&view_1.asgn, &view_2.asgn); + assert_eq!(view_1.asgn(), view_2.asgn()); } } } diff --git a/lace/src/interface/oracle/mod.rs b/lace/src/interface/oracle/mod.rs index 042e66ef..82daec43 100644 --- a/lace/src/interface/oracle/mod.rs +++ b/lace/src/interface/oracle/mod.rs @@ -220,8 +220,8 @@ mod tests { fn dummy_codebook_from_state(state: &State) -> Codebook { Codebook { table_name: "my_table".into(), - state_alpha_prior: None, - view_alpha_prior: None, + state_prior_process: None, + view_prior_process: None, col_metadata: (0..state.n_cols()) .map(|ix| { let ftr = state.feature(ix); @@ -647,7 +647,7 @@ mod tests { // draw from appropriate component from that view let mut xs: Vec = Vec::with_capacity(col_ixs.len()); col_ixs.iter().for_each(|col_ix| { - let view_ix = state.asgn.asgn[*col_ix]; + let view_ix = state.asgn().asgn[*col_ix]; let k = cpnt_ixs[&view_ix]; let x = state.views[view_ix].ftrs[col_ix].draw(k, &mut rng); diff --git a/lace/tests/engine.rs b/lace/tests/engine.rs index e7f0e878..862f6666 100644 --- a/lace/tests/engine.rs +++ b/lace/tests/engine.rs @@ -55,7 +55,7 @@ fn loaded_engine_should_have_same_rng_state() { engine_2.run(5).unwrap(); for (s1, s2) in engine_1.states.iter().zip(engine_2.states.iter()) { - assert_eq!(s1.asgn.asgn, s2.asgn.asgn); + assert_eq!(s1.asgn.asgn(), s2.asgn.asgn()); } } diff --git a/lace/tests/feature.rs b/lace/tests/feature.rs index cf62ddc4..4f22fa06 100644 --- a/lace/tests/feature.rs +++ b/lace/tests/feature.rs @@ -3,10 +3,10 @@ extern crate approx; use std::f64::consts::LN_2; -use lace_cc::assignment::{Assignment, AssignmentBuilder}; use lace_cc::component::ConjugateComponent; use lace_cc::feature::{Column, Feature}; use lace_data::SparseContainer; +use lace_stats::assignment::{Assignment, Builder}; use lace_stats::prior::csd::CsdHyper; use lace_stats::prior::nix::NixHyper; use lace_stats::rv::dist::{ From 1e2e27a513f6d5c5ac07ec7abf6aeb841922c46b Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 18 Mar 2024 13:54:33 -0500 Subject: [PATCH 15/43] lace_stats tests passing --- lace/lace_stats/src/assignment.rs | 118 ++++---------------------- lace/lace_stats/src/prior_process.rs | 122 +++++++++++++++++++++++++-- 2 files changed, 131 insertions(+), 109 deletions(-) diff --git a/lace/lace_stats/src/assignment.rs b/lace/lace_stats/src/assignment.rs index bc559eac..4807d8b2 100644 --- a/lace/lace_stats/src/assignment.rs +++ b/lace/lace_stats/src/assignment.rs @@ -299,11 +299,12 @@ impl Assignment { /// # Example /// /// ``` - /// # use lace_cc::assignment::AssignmentBuilder; + /// # use lace_stats::prior_process::Builder; /// - /// let mut assignment = AssignmentBuilder::from_vec(vec![0, 0, 1]) + /// let mut assignment = Builder::from_vec(vec![0, 0, 1]) /// .build() - /// .unwrap(); + /// .unwrap() + /// .asgn; /// /// assert_eq!(assignment.asgn, vec![0, 0, 1]); /// @@ -554,79 +555,6 @@ mod tests { assert_eq!(asgn.counts[4], 20); } - #[test] - fn dirvec_with_alpha_1() { - let asgn = AssignmentBuilder::from_vec(vec![0, 1, 2, 0, 1, 0]) - .with_alpha(1.0) - .build() - .unwrap(); - let dv = asgn.dirvec(false); - - assert_eq!(dv.len(), 3); - assert_relative_eq!(dv[0], 3.0, epsilon = 10E-10); - assert_relative_eq!(dv[1], 2.0, epsilon = 10E-10); - assert_relative_eq!(dv[2], 1.0, epsilon = 10E-10); - } - - #[test] - fn dirvec_with_alpha_15() { - let asgn = AssignmentBuilder::from_vec(vec![0, 1, 2, 0, 1, 0]) - .with_alpha(1.5) - .build() - .unwrap(); - let dv = asgn.dirvec(true); - - assert_eq!(dv.len(), 4); - assert_relative_eq!(dv[0], 3.0, epsilon = 10E-10); - assert_relative_eq!(dv[1], 2.0, epsilon = 10E-10); - assert_relative_eq!(dv[2], 1.0, epsilon = 10E-10); - assert_relative_eq!(dv[3], 1.5, epsilon = 10E-10); - } - - #[test] - fn log_dirvec_with_alpha_1() { - let asgn = AssignmentBuilder::from_vec(vec![0, 1, 2, 0, 1, 0]) - .with_alpha(1.0) - .build() - .unwrap(); - let ldv = asgn.log_dirvec(false); - - assert_eq!(ldv.len(), 3); - assert_relative_eq!(ldv[0], 3.0_f64.ln(), epsilon = 10E-10); - assert_relative_eq!(ldv[1], 2.0_f64.ln(), epsilon = 10E-10); - assert_relative_eq!(ldv[2], 1.0_f64.ln(), epsilon = 10E-10); - } - - #[test] - fn log_dirvec_with_alpha_15() { - let asgn = AssignmentBuilder::from_vec(vec![0, 1, 2, 0, 1, 0]) - .with_alpha(1.5) - .build() - .unwrap(); - - let ldv = asgn.log_dirvec(true); - - assert_eq!(ldv.len(), 4); - assert_relative_eq!(ldv[0], 3.0_f64.ln(), epsilon = 10E-10); - assert_relative_eq!(ldv[1], 2.0_f64.ln(), epsilon = 10E-10); - assert_relative_eq!(ldv[2], 1.0_f64.ln(), epsilon = 10E-10); - assert_relative_eq!(ldv[3], 1.5_f64.ln(), epsilon = 10E-10); - } - - #[test] - fn weights() { - let asgn = AssignmentBuilder::from_vec(vec![0, 1, 2, 0, 1, 0]) - .with_alpha(1.0) - .build() - .unwrap(); - let weights = asgn.weights(); - - assert_eq!(weights.len(), 3); - assert_relative_eq!(weights[0], 3.0 / 6.0, epsilon = 10E-10); - assert_relative_eq!(weights[1], 2.0 / 6.0, epsilon = 10E-10); - assert_relative_eq!(weights[2], 1.0 / 6.0, epsilon = 10E-10); - } - #[test] fn lcrp_all_ones() { let lcrp_1 = lcrp(4, &[1, 1, 1, 1], 1.0); @@ -738,29 +666,19 @@ mod tests { assert_eq!(asgn.asgn, vec![2, 0, 0, 0, 1, 1]); } - #[test] - fn dirvec_with_unassigned_entry() { - let z: Vec = vec![0, 1, 1, 1, 2, 2]; - let mut asgn = AssignmentBuilder::from_vec(z) - .with_alpha(1.0) - .build() - .unwrap(); - - asgn.unassign(5); - - let dv = asgn.dirvec(false); - - assert_eq!(dv.len(), 3); - assert_relative_eq!(dv[0], 1.0, epsilon = 10e-10); - assert_relative_eq!(dv[1], 3.0, epsilon = 10e-10); - assert_relative_eq!(dv[2], 1.0, epsilon = 10e-10); - } - #[test] fn manual_seed_control_works() { - let asgn_1 = AssignmentBuilder::new(25).with_seed(17_834_795).build(); - let asgn_2 = AssignmentBuilder::new(25).with_seed(17_834_795).build(); - let asgn_3 = AssignmentBuilder::new(25).build(); + let asgn_1 = AssignmentBuilder::new(50) + .with_seed(17_834_795) + .build() + .unwrap() + .asgn; + let asgn_2 = AssignmentBuilder::new(50) + .with_seed(17_834_795) + .build() + .unwrap() + .asgn; + let asgn_3 = AssignmentBuilder::new(50).build().unwrap().asgn; assert_eq!(asgn_1, asgn_2); assert_ne!(asgn_1, asgn_3); } @@ -772,17 +690,17 @@ mod tests { let mut rng_1 = SmallRng::seed_from_u64(17_834_795); let mut rng_2 = SmallRng::seed_from_u64(17_834_795); - let asgn_1 = AssignmentBuilder::new(25) + let asgn_1 = AssignmentBuilder::new(50) .seed_from_rng(&mut rng_1) .build() .unwrap() .asgn; - let asgn_2 = AssignmentBuilder::new(25) + let asgn_2 = AssignmentBuilder::new(50) .seed_from_rng(&mut rng_2) .build() .unwrap() .asgn; - let asgn_3 = AssignmentBuilder::new(25).build().unwrap().asgn; + let asgn_3 = AssignmentBuilder::new(50).build().unwrap().asgn; assert_eq!(asgn_1, asgn_2); assert_ne!(asgn_1, asgn_3); } diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index f60fa103..63b1df19 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -590,6 +590,7 @@ impl Builder { #[cfg(test)] mod tests { use super::*; + use approx::*; const TOL: f64 = 1E-12; @@ -610,15 +611,6 @@ mod tests { assert!(good); } - #[test] - fn should_return_error_for_zero_u_star() { - let mut rng = rand::thread_rng(); - let weights_in: Vec = vec![0.8, 0.2]; - let u_star = 0.0; - let res = sb_slice_extend(weights_in, 1.0, 0.0, u_star, &mut rng); - assert!(res.is_err()); - } - #[test] fn smoke() { let mut rng = rand::thread_rng(); @@ -628,4 +620,116 @@ mod tests { assert!(res.is_ok()); } } + + mod build { + use super::*; + + fn dir_process(alpha: f64) -> Process { + let inner = Dirichlet { + alpha, + prior: Gamma::default(), + }; + Process::Dirichlet(inner) + } + + #[test] + fn dirvec_with_alpha_1() { + let proc = Builder::from_vec(vec![0, 1, 2, 0, 1, 0]) + .with_process(dir_process(1.0)) + .build() + .unwrap(); + let dv = proc.weight_vec_unnormed(false); + + assert_eq!(dv.len(), 3); + assert_relative_eq!(dv[0], 3.0, epsilon = 10E-10); + assert_relative_eq!(dv[1], 2.0, epsilon = 10E-10); + assert_relative_eq!(dv[2], 1.0, epsilon = 10E-10); + } + + #[test] + fn dirvec_with_alpha_15() { + let proc = Builder::from_vec(vec![0, 1, 2, 0, 1, 0]) + .with_process(dir_process(1.5)) + .build() + .unwrap(); + let dv = proc.weight_vec_unnormed(true); + + assert_eq!(dv.len(), 4); + assert_relative_eq!(dv[0], 3.0, epsilon = 10E-10); + assert_relative_eq!(dv[1], 2.0, epsilon = 10E-10); + assert_relative_eq!(dv[2], 1.0, epsilon = 10E-10); + assert_relative_eq!(dv[3], 1.5, epsilon = 10E-10); + } + + #[test] + fn log_dirvec_with_alpha_1() { + let proc = Builder::from_vec(vec![0, 1, 2, 0, 1, 0]) + .with_process(dir_process(1.0)) + .build() + .unwrap(); + + let ldv = (0..3) + .map(|k| proc.process.ln_gibbs_weight(proc.asgn.counts[k])) + .collect::>(); + + assert_eq!(ldv.len(), 3); + assert_relative_eq!(ldv[0], 3.0_f64.ln(), epsilon = 10E-10); + assert_relative_eq!(ldv[1], 2.0_f64.ln(), epsilon = 10E-10); + assert_relative_eq!(ldv[2], 1.0_f64.ln(), epsilon = 10E-10); + } + + #[test] + fn log_dirvec_with_alpha_15() { + let proc = Builder::from_vec(vec![0, 1, 2, 0, 1, 0]) + .with_process(dir_process(1.5)) + .build() + .unwrap(); + + let ldv = (0..3) + .map(|k| proc.process.ln_gibbs_weight(proc.asgn.counts[k])) + .chain(std::iter::once_with(|| { + proc.process.ln_singleton_weight(3) + })) + .collect::>(); + + assert_eq!(ldv.len(), 4); + assert_relative_eq!(ldv[0], 3.0_f64.ln(), epsilon = 10E-10); + assert_relative_eq!(ldv[1], 2.0_f64.ln(), epsilon = 10E-10); + assert_relative_eq!(ldv[2], 1.0_f64.ln(), epsilon = 10E-10); + assert_relative_eq!(ldv[3], 1.5_f64.ln(), epsilon = 10E-10); + } + + #[test] + fn weights() { + let proc = Builder::from_vec(vec![0, 1, 2, 0, 1, 0]) + .with_process(dir_process(1.0)) + .build() + .unwrap(); + + let weights = proc.weight_vec(false); + + assert_eq!(weights.len(), 3); + assert_relative_eq!(weights[0], 3.0 / 6.0, epsilon = 10E-10); + assert_relative_eq!(weights[1], 2.0 / 6.0, epsilon = 10E-10); + assert_relative_eq!(weights[2], 1.0 / 6.0, epsilon = 10E-10); + } + + #[test] + fn dirvec_with_unassigned_entry() { + let z: Vec = vec![0, 1, 1, 1, 2, 2]; + let mut proc = Builder::from_vec(z) + .with_process(dir_process(1.0)) + .build() + .unwrap(); + + proc.asgn.unassign(5); + + let dv = proc.weight_vec_unnormed(false); + + assert_eq!(dv.len(), 3); + assert_relative_eq!(dv[0], 1.0, epsilon = 10e-10); + assert_relative_eq!(dv[1], 3.0, epsilon = 10e-10); + assert_relative_eq!(dv[2], 1.0, epsilon = 10e-10); + } + } } From c2d6f8b5fab13292e9e7ae97556e28f46263eeaf Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 18 Mar 2024 14:01:13 -0500 Subject: [PATCH 16/43] lace_codebook tests passing --- lace/lace_codebook/examples/bench_csv.rs | 2 +- lace/lace_codebook/src/codebook.rs | 20 ++++++++++---------- lace/lace_codebook/src/lib.rs | 21 +++++++++++++-------- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/lace/lace_codebook/examples/bench_csv.rs b/lace/lace_codebook/examples/bench_csv.rs index 274f7afd..e62ffb88 100644 --- a/lace/lace_codebook/examples/bench_csv.rs +++ b/lace/lace_codebook/examples/bench_csv.rs @@ -19,7 +19,7 @@ fn main() { // println!("t_old: {}s", t_old.as_secs_f64()); let now = Instant::now(); - let _codebook = csv_new(path, None, None, true); + let _codebook = csv_new(path, None, None, None, true); let t_new = now.elapsed(); println!("t_new: {}s", t_new.as_secs_f64()); diff --git a/lace/lace_codebook/src/codebook.rs b/lace/lace_codebook/src/codebook.rs index 393e87b7..43043c73 100644 --- a/lace/lace_codebook/src/codebook.rs +++ b/lace/lace_codebook/src/codebook.rs @@ -786,8 +786,8 @@ mod tests { !Categorical k: 2 value_map: !u8 2 - state_alpha_prior: ~ - view_alpha_prior: ~ + state_prior_process: ~ + view_prior_process: ~ comments: ~ row_names: - one @@ -819,8 +819,8 @@ mod tests { coltype: !Categorical k: 2 - state_alpha_prior: ~ - view_alpha_prior: ~ + state_prior_process: ~ + view_prior_process: ~ comments: ~ row_names: - one @@ -835,8 +835,8 @@ mod tests { fn serialize_metadata_list() { let codebook = Codebook { table_name: "my-table".into(), - state_alpha_prior: None, - view_alpha_prior: None, + state_prior_process: None, + view_prior_process: None, comments: None, row_names: RowNameList::new(), col_metadata: ColMetadataList::try_from(vec![ @@ -879,8 +879,8 @@ mod tests { let raw = indoc!( r#" table_name: my-table - state_alpha_prior: null - view_alpha_prior: null + state_prior_process: null + view_prior_process: null col_metadata: - name: one coltype: !Continuous @@ -916,8 +916,8 @@ mod tests { fn serialize_then_deserialize() { let codebook = Codebook { table_name: "my-table".into(), - state_alpha_prior: None, - view_alpha_prior: None, + state_prior_process: None, + view_prior_process: None, comments: None, row_names: RowNameList::new(), col_metadata: ColMetadataList::try_from(vec![ diff --git a/lace/lace_codebook/src/lib.rs b/lace/lace_codebook/src/lib.rs index c420b815..54d04969 100644 --- a/lace/lace_codebook/src/lib.rs +++ b/lace/lace_codebook/src/lib.rs @@ -17,14 +17,19 @@ //! let codebook_str = indoc!(" //! --- //! table_name: two column dataset -//! state_alpha_prior: -//! !Gamma -//! shape: 1.0 -//! rate: 1.0 -//! view_alpha_prior: -//! !Gamma -//! shape: 1.0 -//! rate: 1.0 +//! state_prior_process: +//! !dirichlet +//! alpha_prior: +//! shape: 1.0 +//! rate: 1.0 +//! view_prior_process: +//! !pitman_yor +//! alpha_prior: +//! shape: 1.0 +//! rate: 1.0 +//! d_prior: +//! alpha: 1.0 +//! beta: 2.0 //! col_metadata: //! - name: col_1 //! notes: first column with all fields filled in From 8f2bfc65e5c32fc09e0d90c73c14b6ef457aaca5 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 18 Mar 2024 14:17:44 -0500 Subject: [PATCH 17/43] lace tests compile; don't pass --- lace/examples/column_geweke.rs | 3 ++- lace/tests/engine.rs | 18 +++++++++--------- lace/tests/feature.rs | 29 ++++++++++++----------------- lace/tests/oracle.rs | 17 +++++++++-------- lace/tests/streaming_insert.rs | 5 ++--- 5 files changed, 34 insertions(+), 38 deletions(-) diff --git a/lace/examples/column_geweke.rs b/lace/examples/column_geweke.rs index 1759ac7b..10d3add4 100644 --- a/lace/examples/column_geweke.rs +++ b/lace/examples/column_geweke.rs @@ -1,5 +1,6 @@ use lace::prelude::*; use lace_geweke::*; +use lace_stats::prior_process::Builder as AssignmentBuilder; use lace_stats::rv::dist::{ Categorical, Gaussian, NormalInvChiSquared, SymmetricDirichlet, }; @@ -18,7 +19,7 @@ fn main() { ViewTransition::PriorProcessParams, ViewTransition::RowAssignment(RowAssignAlg::Slice), ]; - let asgn = AssignmentBuilder::new(10).flat().build().unwrap(); + let asgn = AssignmentBuilder::new(10).flat().build().unwrap().asgn; let settings = ColumnGewekeSettings::new(asgn, transitions); diff --git a/lace/tests/engine.rs b/lace/tests/engine.rs index 862f6666..5534342d 100644 --- a/lace/tests/engine.rs +++ b/lace/tests/engine.rs @@ -55,7 +55,7 @@ fn loaded_engine_should_have_same_rng_state() { engine_2.run(5).unwrap(); for (s1, s2) in engine_1.states.iter().zip(engine_2.states.iter()) { - assert_eq!(s1.asgn.asgn(), s2.asgn.asgn()); + assert_eq!(s1.asgn().asgn, s2.asgn().asgn); } } @@ -152,7 +152,7 @@ fn run_engine_after_flatten_cols_smoke_test() { engine.run(1).unwrap(); } -mod contructor { +mod constructor { use super::*; use lace::error::{DataParseError, NewEngineError}; use lace_codebook::{ColMetadata, ColType}; @@ -1754,8 +1754,8 @@ mod insert_data { EngineUpdateConfig { n_iters: 2, transitions: vec![ - StateTransition::StateAlpha, - StateTransition::ViewAlphas, + StateTransition::StatePriorProcessParams, + StateTransition::ViewPriorProcessParams, StateTransition::ComponentParams, StateTransition::FeaturePriors, StateTransition::RowAssignment( @@ -2147,9 +2147,9 @@ mod insert_data { n_iters: 2, transitions: vec![ StateTransition::ColumnAssignment($col_kernel), - StateTransition::StateAlpha, + StateTransition::StatePriorProcessParams, StateTransition::RowAssignment($row_kernel), - StateTransition::ViewAlphas, + StateTransition::ViewPriorProcessParams, StateTransition::FeaturePriors, ], ..Default::default() @@ -2635,14 +2635,14 @@ mod prior_in_codebook { use std::convert::TryInto; use std::io::Write; - // Generate a two-column codebook ('x' and 'y'). The x column will alyways + // Generate a two-column codebook ('x' and 'y'). The x column will always // have a hyper for the x column, but will have a prior defined if set_prior // is true. The y column will have neither a prior or hyper defined. fn gen_codebook(n_rows: usize, set_prior: bool) -> Codebook { Codebook { table_name: String::from("table"), - state_alpha_prior: Some(Gamma::default()), - view_alpha_prior: Some(Gamma::default()), + state_prior_process: None, + view_prior_process: None, col_metadata: { let mut col_metadata = ColMetadataList::new(vec![]).unwrap(); col_metadata diff --git a/lace/tests/feature.rs b/lace/tests/feature.rs index 4f22fa06..fa38a6da 100644 --- a/lace/tests/feature.rs +++ b/lace/tests/feature.rs @@ -6,11 +6,12 @@ use std::f64::consts::LN_2; use lace_cc::component::ConjugateComponent; use lace_cc::feature::{Column, Feature}; use lace_data::SparseContainer; -use lace_stats::assignment::{Assignment, Builder}; +use lace_stats::assignment::Assignment; use lace_stats::prior::csd::CsdHyper; use lace_stats::prior::nix::NixHyper; +use lace_stats::prior_process::Builder as AssignmentBuilder; use lace_stats::rv::dist::{ - Categorical, Gamma, Gaussian, NormalInvChiSquared, SymmetricDirichlet, + Categorical, Gaussian, NormalInvChiSquared, SymmetricDirichlet, }; use lace_stats::rv::traits::Rv; use rand::Rng; @@ -67,7 +68,7 @@ fn three_component_column() -> GaussCol { #[test] fn feature_with_flat_assign_should_have_one_component() { let mut rng = rand::thread_rng(); - let asgn = AssignmentBuilder::new(5).flat().build().unwrap(); + let asgn = AssignmentBuilder::new(5).flat().build().unwrap().asgn; let col = gauss_fixture(&mut rng, &asgn); @@ -78,7 +79,7 @@ fn feature_with_flat_assign_should_have_one_component() { fn feature_with_random_assign_should_have_k_component() { let mut rng = rand::thread_rng(); for _ in 0..50 { - let asgn = AssignmentBuilder::new(5).build().unwrap(); + let asgn = AssignmentBuilder::new(5).build().unwrap().asgn; let col = gauss_fixture(&mut rng, &asgn); assert_eq!(col.components.len(), asgn.n_cats); @@ -90,7 +91,7 @@ fn feature_with_random_assign_should_have_k_component() { #[test] fn append_empty_component_appends_one() { let mut rng = rand::thread_rng(); - let asgn = AssignmentBuilder::new(5).flat().build().unwrap(); + let asgn = AssignmentBuilder::new(5).flat().build().unwrap().asgn; let mut col = gauss_fixture(&mut rng, &asgn); assert_eq!(col.components.len(), 1); @@ -103,13 +104,11 @@ fn append_empty_component_appends_one() { #[test] fn reassign_to_more_components() { let mut rng = rand::thread_rng(); - let asgn_a = AssignmentBuilder::new(5).flat().build().unwrap(); + let asgn_a = AssignmentBuilder::new(5).flat().build().unwrap().asgn; let asgn_b = Assignment { - alpha: 1.0, asgn: vec![0, 0, 0, 1, 1], counts: vec![3, 2], n_cats: 2, - prior: Gamma::new(1.0, 1.0).unwrap(), }; let mut col = gauss_fixture(&mut rng, &asgn_a); @@ -237,13 +236,11 @@ fn gauss_accum_scores_2_cats_no_missing() { #[test] fn asgn_score_under_asgn_gaussian_magnitude() { let mut rng = rand::thread_rng(); - let asgn_a = AssignmentBuilder::new(5).flat().build().unwrap(); + let asgn_a = AssignmentBuilder::new(5).flat().build().unwrap().asgn; let asgn_b = Assignment { - alpha: 1.0, asgn: vec![0, 0, 0, 1, 1], counts: vec![3, 2], n_cats: 2, - prior: Gamma::new(1.0, 1.0).unwrap(), }; let col = gauss_fixture(&mut rng, &asgn_a); @@ -339,13 +336,11 @@ fn cat_u8_accum_scores_2_cats_no_missing() { #[test] fn asgn_score_under_asgn_cat_u8_magnitude() { let mut rng = rand::thread_rng(); - let asgn_a = AssignmentBuilder::new(5).flat().build().unwrap(); + let asgn_a = AssignmentBuilder::new(5).flat().build().unwrap().asgn; let asgn_b = Assignment { - alpha: 1.0, asgn: vec![0, 1, 1, 0, 1], counts: vec![2, 3], n_cats: 2, - prior: Gamma::new(1.0, 1.0).unwrap(), }; let col = categorical_fixture_u8(&mut rng, &asgn_a); @@ -364,9 +359,9 @@ fn asgn_score_under_asgn_cat_u8_magnitude() { // Gaussian // -------- #[test] -fn update_componet_params_should_draw_different_values_for_gaussian() { +fn update_component_params_should_draw_different_values_for_gaussian() { let mut rng = rand::thread_rng(); - let asgn = AssignmentBuilder::new(5).flat().build().unwrap(); + let asgn = AssignmentBuilder::new(5).flat().build().unwrap().asgn; let mut col = gauss_fixture(&mut rng, &asgn); let cpnt_a = col.components[0].clone(); @@ -390,7 +385,7 @@ fn asgn_score_should_be_the_same_as_score_given_current_asgn() { let mut col = Column::new(0, data, prior, hyper.clone()); - let asgn = AssignmentBuilder::new(n).flat().build().unwrap(); + let asgn = AssignmentBuilder::new(n).flat().build().unwrap().asgn; let asgn_score = col.asgn_score(&asgn); col.reassign(&asgn, &mut rng); diff --git a/lace/tests/oracle.rs b/lace/tests/oracle.rs index 1a1954f1..b024057b 100644 --- a/lace/tests/oracle.rs +++ b/lace/tests/oracle.rs @@ -35,12 +35,13 @@ fn gen_all_gauss_state( for i in 0..n_cols { ftrs.push(gen_col(i, n_rows, &mut rng)); } - State::from_prior( - ftrs, - Gamma::new(1.0, 1.0).unwrap(), - Gamma::new(1.0, 1.0).unwrap(), - &mut rng, - ) + let process = lace_stats::prior_process::Process::Dirichlet( + lace_stats::prior_process::Dirichlet::from_prior( + Gamma::default(), + &mut rng, + ), + ); + State::from_prior(ftrs, process.clone(), process, &mut rng) } fn load_states>(filenames: Vec

) -> Vec { @@ -63,8 +64,8 @@ fn dummy_codebook_from_state(state: &State) -> Codebook { Codebook { table_name: "my_table".into(), - state_alpha_prior: None, - view_alpha_prior: None, + state_prior_process: None, + view_prior_process: None, col_metadata: (0..state.n_cols()) .map(|ix| { let ftr = state.feature(ix); diff --git a/lace/tests/streaming_insert.rs b/lace/tests/streaming_insert.rs index 458bd86a..85e61299 100644 --- a/lace/tests/streaming_insert.rs +++ b/lace/tests/streaming_insert.rs @@ -6,7 +6,6 @@ use lace_codebook::{Codebook, ColMetadata, ColType}; use lace_data::Datum; use lace_stats::prior::nix::NixHyper; -use lace_stats::rv::dist::Gamma; use rand::{Rng, SeedableRng}; use rand_xoshiro::Xoshiro256Plus; @@ -63,8 +62,8 @@ fn gen_engine() -> Engine { let codebook = Codebook { table_name: "table".into(), - state_alpha_prior: Some(Gamma::default()), - view_alpha_prior: Some(Gamma::default()), + state_prior_process: None, + view_prior_process: None, col_metadata: (0..14) .map(|i| ColMetadata { name: format!("{}", i), From 80d38c011e78a916609d346378a81e3279bdab05 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 18 Mar 2024 16:04:01 -0500 Subject: [PATCH 18/43] lace tests passing Still need - Metadata conversion tests - Pitman-Yor correctness tests --- cli/resources/datasets/animals/codebook.yaml | 16 +-- .../datasets/satellites/codebook.yaml | 16 +-- lace/lace_cc/src/feature/column.rs | 4 +- lace/lace_cc/src/state.rs | 4 +- lace/lace_cc/src/view.rs | 6 +- lace/lace_cc/tests/enum.rs | 2 +- lace/lace_cc/tests/enum_state.rs | 10 +- lace/lace_cc/tests/view_enum.rs | 6 +- lace/lace_metadata/src/latest.rs | 2 +- lace/lace_stats/src/prior_process.rs | 43 ++++---- lace/resources/datasets/animals/codebook.yaml | 16 +-- .../datasets/satellites/codebook.yaml | 16 +-- .../test/entropy/entropy-state-1.yaml | 92 +++++++++--------- .../test/entropy/entropy-state-2.yaml | 90 ++++++++--------- lace/resources/test/single-categorical.yaml | 63 ++++++------ lace/resources/test/single-continuous.yaml | 68 ++++++------- lace/resources/test/single-count.yaml | 63 ++++++------ lace/resources/test/small/small-state-1.yaml | 90 ++++++++--------- lace/resources/test/small/small-state-2.yaml | 97 +++++++++---------- lace/resources/test/small/small-state-3.yaml | 69 +++++++------ .../test/spread-out-continuous-modes.yaml | 64 ++++++------ 21 files changed, 426 insertions(+), 411 deletions(-) diff --git a/cli/resources/datasets/animals/codebook.yaml b/cli/resources/datasets/animals/codebook.yaml index 9d856418..2c1463b3 100644 --- a/cli/resources/datasets/animals/codebook.yaml +++ b/cli/resources/datasets/animals/codebook.yaml @@ -1,10 +1,12 @@ -table_name: my_table -state_alpha_prior: - shape: 1.0 - rate: 1.0 -view_alpha_prior: - shape: 1.0 - rate: 1.0 +table_name: animals +state_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 +view_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 col_metadata: - name: black coltype: !Categorical diff --git a/cli/resources/datasets/satellites/codebook.yaml b/cli/resources/datasets/satellites/codebook.yaml index 7e750b04..5d7c2390 100644 --- a/cli/resources/datasets/satellites/codebook.yaml +++ b/cli/resources/datasets/satellites/codebook.yaml @@ -1,10 +1,12 @@ -table_name: my_table -state_alpha_prior: - shape: 1.0 - rate: 1.0 -view_alpha_prior: - shape: 1.0 - rate: 1.0 +table_name: satellites +state_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 +view_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 col_metadata: - name: Country_of_Operator coltype: !Categorical diff --git a/lace/lace_cc/src/feature/column.rs b/lace/lace_cc/src/feature/column.rs index fd33e203..0082fdbe 100644 --- a/lace/lace_cc/src/feature/column.rs +++ b/lace/lace_cc/src/feature/column.rs @@ -722,7 +722,7 @@ mod tests { let asgn = Builder::new(5) .with_process(Process::Dirichlet(Dirichlet { alpha: 1.0, - prior: Gamma::default(), + alpha_prior: Gamma::default(), })) .flat() .build() @@ -743,7 +743,7 @@ mod tests { let asgn = Builder::new(5) .with_process(Process::Dirichlet(Dirichlet { alpha: 1.0, - prior: Gamma::default(), + alpha_prior: Gamma::default(), })) .flat() .build() diff --git a/lace/lace_cc/src/state.rs b/lace/lace_cc/src/state.rs index 6041fd8e..baddd2dc 100644 --- a/lace/lace_cc/src/state.rs +++ b/lace/lace_cc/src/state.rs @@ -1331,7 +1331,7 @@ impl GewekeModel for State { )) } else { Process::Dirichlet(PDirichlet { - prior: geweke_alpha_prior(), + alpha_prior: geweke_alpha_prior(), alpha: 1.0, }) }; @@ -1364,7 +1364,7 @@ impl GewekeModel for State { )) } else { Process::Dirichlet(PDirichlet { - prior: geweke_alpha_prior(), + alpha_prior: geweke_alpha_prior(), alpha: 1.0, }) }; diff --git a/lace/lace_cc/src/view.rs b/lace/lace_cc/src/view.rs index f1ec2c20..232c9a16 100644 --- a/lace/lace_cc/src/view.rs +++ b/lace/lace_cc/src/view.rs @@ -1089,7 +1089,7 @@ fn view_geweke_asgn( } else { Dirichlet { alpha: 1.0, - prior: geweke_alpha_prior(), + alpha_prior: geweke_alpha_prior(), } }; Process::Dirichlet(inner) @@ -1107,8 +1107,8 @@ fn view_geweke_asgn( PitmanYor { alpha: 1.0, d: 0.2, - prior_alpha: geweke_alpha_prior(), - prior_d: Beta::jeffreys(), + alpha_prior: geweke_alpha_prior(), + d_prior: Beta::jeffreys(), } }; Process::PitmanYor(inner) diff --git a/lace/lace_cc/tests/enum.rs b/lace/lace_cc/tests/enum.rs index 2f260a13..e8a4b00f 100644 --- a/lace/lace_cc/tests/enum.rs +++ b/lace/lace_cc/tests/enum.rs @@ -12,7 +12,7 @@ mod partition { fn crp_draw(n: usize, alpha: f64, rng: &mut R) -> Assignment { let process = Dirichlet { - prior: Gamma::default(), // doesn't matter here, + alpha_prior: Gamma::default(), // doesn't matter here, alpha, }; process.draw_assignment(n, rng) diff --git a/lace/lace_cc/tests/enum_state.rs b/lace/lace_cc/tests/enum_state.rs index 36803ca5..1909ef36 100644 --- a/lace/lace_cc/tests/enum_state.rs +++ b/lace/lace_cc/tests/enum_state.rs @@ -93,7 +93,7 @@ fn state_from_partition( .map(|zr| { let process = Process::Dirichlet(Dirichlet { alpha: 1.0, - prior: Gamma::default(), + alpha_prior: Gamma::default(), }); // NOTE: We don't need seed control here because both alpha and the @@ -120,7 +120,7 @@ fn state_from_partition( PriorProcessBuilder::from_vec(partition.col_partition.clone()) .with_process(Process::Dirichlet(Dirichlet { alpha: 1.0, - prior: Gamma::default(), + alpha_prior: Gamma::default(), })) .seed_from_rng(&mut rng) .build() @@ -133,13 +133,13 @@ fn emit_process(proc_type: PriorProcessType) -> Process { match proc_type { PriorProcessType::Dirichlet => Process::Dirichlet(Dirichlet { alpha: 1.0, - prior: Gamma::default(), + alpha_prior: Gamma::default(), }), PriorProcessType::PitmanYor => Process::PitmanYor(PitmanYor { alpha: 1.2, d: 0.2, - prior_alpha: Gamma::default(), - prior_d: Beta::jeffreys(), + alpha_prior: Gamma::default(), + d_prior: Beta::jeffreys(), }), } } diff --git a/lace/lace_cc/tests/view_enum.rs b/lace/lace_cc/tests/view_enum.rs index d723a73c..ff773c56 100644 --- a/lace/lace_cc/tests/view_enum.rs +++ b/lace/lace_cc/tests/view_enum.rs @@ -32,13 +32,13 @@ impl From for Process { match proc { ProcessType::Dirichlet => Process::Dirichlet(Dirichlet { alpha: 1.0, - prior: Gamma::default(), + alpha_prior: Gamma::default(), }), ProcessType::PitmanYor => Process::PitmanYor(PitmanYor { alpha: 1.2, d: 0.2, - prior_alpha: Gamma::default(), - prior_d: Beta::jeffreys(), + alpha_prior: Gamma::default(), + d_prior: Beta::jeffreys(), }), } } diff --git a/lace/lace_metadata/src/latest.rs b/lace/lace_metadata/src/latest.rs index 7b91b5da..a00bcb61 100644 --- a/lace/lace_metadata/src/latest.rs +++ b/lace/lace_metadata/src/latest.rs @@ -158,7 +158,7 @@ impl From for PriorProcess { }, process: Process::Dirichlet(lace_stats::prior_process::Dirichlet { alpha: asgn.alpha, - prior: asgn.prior, + alpha_prior: asgn.prior, }), } } diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index 63b1df19..a8dc5226 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -37,16 +37,17 @@ pub trait PriorProcessT { } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename = "snake_case")] pub struct Dirichlet { pub alpha: f64, - pub prior: Gamma, + pub alpha_prior: Gamma, } impl Dirichlet { - pub fn from_prior(prior: Gamma, rng: &mut R) -> Self { + pub fn from_prior(alpha_prior: Gamma, rng: &mut R) -> Self { Self { - alpha: prior.draw(rng), - prior, + alpha: alpha_prior.draw(rng), + alpha_prior, } } } @@ -126,7 +127,7 @@ impl PriorProcessT for Dirichlet { let cts = &asgn.counts; let n: usize = asgn.len(); let loglike = |alpha: &f64| crate::assignment::lcrp(n, cts, *alpha); - let prior_ref = &self.prior; + let prior_ref = &self.alpha_prior; let prior_draw = |rng: &mut R| prior_ref.draw(rng); let mh_result = crate::mh::mh_prior(self.alpha, loglike, prior_draw, 100, rng); @@ -135,7 +136,7 @@ impl PriorProcessT for Dirichlet { } fn reset_params(&mut self, rng: &mut R) { - self.alpha = self.prior.draw(rng); + self.alpha = self.alpha_prior.draw(rng); } fn ln_f_partition(&self, asgn: &Assignment) -> f64 { @@ -144,24 +145,25 @@ impl PriorProcessT for Dirichlet { } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename = "snake_case")] pub struct PitmanYor { pub alpha: f64, pub d: f64, - pub prior_alpha: Gamma, - pub prior_d: Beta, + pub alpha_prior: Gamma, + pub d_prior: Beta, } impl PitmanYor { pub fn from_prior( - prior_alpha: Gamma, - prior_d: Beta, + alpha_prior: Gamma, + d_prior: Beta, rng: &mut R, ) -> Self { Self { - alpha: prior_alpha.draw(rng), - d: prior_d.draw(rng), - prior_alpha, - prior_d, + alpha: alpha_prior.draw(rng), + d: d_prior.draw(rng), + alpha_prior, + d_prior, } } } @@ -242,7 +244,7 @@ impl PriorProcessT for PitmanYor { let ln_f_alpha = { let loglike = |alpha: &f64| crate::assignment::lpyp(cts, *alpha, self.d); - let prior_ref = &self.prior_alpha; + let prior_ref = &self.alpha_prior; let prior_draw = |rng: &mut R| prior_ref.draw(rng); let mh_result = crate::mh::mh_prior(self.alpha, loglike, prior_draw, 100, rng); @@ -253,7 +255,7 @@ impl PriorProcessT for PitmanYor { let ln_f_d = { let loglike = |d: &f64| crate::assignment::lpyp(cts, self.alpha, *d); - let prior_ref = &self.prior_d; + let prior_ref = &self.d_prior; let prior_draw = |rng: &mut R| prior_ref.draw(rng); let mh_result = crate::mh::mh_prior(self.d, loglike, prior_draw, 100, rng); @@ -265,8 +267,8 @@ impl PriorProcessT for PitmanYor { } fn reset_params(&mut self, rng: &mut R) { - self.alpha = self.prior_alpha.draw(rng); - self.d = self.prior_d.draw(rng); + self.alpha = self.alpha_prior.draw(rng); + self.d = self.d_prior.draw(rng); } fn ln_f_partition(&self, asgn: &Assignment) -> f64 { @@ -275,6 +277,7 @@ impl PriorProcessT for PitmanYor { } #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "snake_case")] pub enum Process { Dirichlet(Dirichlet), PitmanYor(PitmanYor), @@ -352,7 +355,7 @@ impl Default for Process { fn default() -> Self { Self::Dirichlet(Dirichlet { alpha: 1.0, - prior: lace_consts::general_alpha_prior(), + alpha_prior: lace_consts::general_alpha_prior(), }) } } @@ -627,7 +630,7 @@ mod tests { fn dir_process(alpha: f64) -> Process { let inner = Dirichlet { alpha, - prior: Gamma::default(), + alpha_prior: Gamma::default(), }; Process::Dirichlet(inner) } diff --git a/lace/resources/datasets/animals/codebook.yaml b/lace/resources/datasets/animals/codebook.yaml index 9d856418..2c1463b3 100644 --- a/lace/resources/datasets/animals/codebook.yaml +++ b/lace/resources/datasets/animals/codebook.yaml @@ -1,10 +1,12 @@ -table_name: my_table -state_alpha_prior: - shape: 1.0 - rate: 1.0 -view_alpha_prior: - shape: 1.0 - rate: 1.0 +table_name: animals +state_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 +view_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 col_metadata: - name: black coltype: !Categorical diff --git a/lace/resources/datasets/satellites/codebook.yaml b/lace/resources/datasets/satellites/codebook.yaml index 7e750b04..5d7c2390 100644 --- a/lace/resources/datasets/satellites/codebook.yaml +++ b/lace/resources/datasets/satellites/codebook.yaml @@ -1,10 +1,12 @@ -table_name: my_table -state_alpha_prior: - shape: 1.0 - rate: 1.0 -view_alpha_prior: - shape: 1.0 - rate: 1.0 +table_name: satellites +state_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 +view_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 col_metadata: - name: Country_of_Operator coltype: !Categorical diff --git a/lace/resources/test/entropy/entropy-state-1.yaml b/lace/resources/test/entropy/entropy-state-1.yaml index 86f1aa06..fef3b3ea 100644 --- a/lace/resources/test/entropy/entropy-state-1.yaml +++ b/lace/resources/test/entropy/entropy-state-1.yaml @@ -1,16 +1,14 @@ --- -loglike: 0.0 +score: + ln_likelihood: 0.0 + ln_prior: 0.0 + ln_state_prior_process: 0.0 + ln_view_prior_process: 0.0 diagnostics: loglike: - 0.0 - nviews: - - 2 - state_alpha: - - 1.0 -view_alpha_prior: - !Gamma - shape: 1.0 - rate: 1.0 + logprior: + - 0.0 views: - ftrs: 0: @@ -90,19 +88,20 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 0 - - 1 - - 1 - counts: - - 2 - - 2 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 0 + - 1 + - 1 + counts: + - 2 + - 2 + n_cats: 2 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: @@ -179,38 +178,41 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 1 - - 1 - - 1 - counts: - - 1 - - 3 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 1 + - 1 + - 1 + counts: + - 1 + - 3 + n_cats: 2 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: - 0.25 - 0.75 alpha: 1 -asgn: - alpha: 1 +prior_process: asgn: - - 0 - - 1 - - 0 - - 1 - counts: - - 2 - - 2 - n_cats: 2 - prior: - !Gamma + alpha: 1 + asgn: + - 0 + - 1 + - 0 + - 1 + counts: + - 2 + - 2 + n_cats: 2 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: diff --git a/lace/resources/test/entropy/entropy-state-2.yaml b/lace/resources/test/entropy/entropy-state-2.yaml index 657de681..4d0cad9f 100644 --- a/lace/resources/test/entropy/entropy-state-2.yaml +++ b/lace/resources/test/entropy/entropy-state-2.yaml @@ -1,15 +1,14 @@ --- +score: + ln_likelihood: 0.0 + ln_prior: 0.0 + ln_state_prior_process: 0.0 + ln_view_prior_process: 0.0 diagnostics: loglike: - 0.0 - nviews: - - 2 - state_alpha: - - 1.0 -view_alpha_prior: - !Gamma - shape: 1.0 - rate: 1.0 + logprior: + - 0.0 views: - ftrs: 0: @@ -88,19 +87,20 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 0 - - 1 - - 1 - counts: - - 2 - - 2 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 0 + - 1 + - 1 + counts: + - 2 + - 2 + n_cats: 2 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: @@ -178,38 +178,40 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 1 - - 1 - - 1 - counts: - - 1 - - 3 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 1 + - 1 + - 1 + counts: + - 1 + - 3 + n_cats: 2 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: - 0.25 - 0.75 alpha: 1 -asgn: - alpha: 1 +prior_process: asgn: - - 0 - - 0 - - 1 - - 1 - counts: - - 2 - - 2 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 0 + - 1 + - 1 + counts: + - 2 + - 2 + n_cats: 2 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: diff --git a/lace/resources/test/single-categorical.yaml b/lace/resources/test/single-categorical.yaml index 6369eaf8..beb105d8 100644 --- a/lace/resources/test/single-categorical.yaml +++ b/lace/resources/test/single-categorical.yaml @@ -1,16 +1,14 @@ --- -loglike: 0.0 +score: + ln_likelihood: 0.0 + ln_prior: 0.0 + ln_state_prior_process: 0.0 + ln_view_prior_process: 0.0 diagnostics: loglike: - 0.0 - nviews: - - 2 - state_alpha: - - 1.0 -view_alpha_prior: - !Gamma - shape: 1.0 - rate: 1.0 + logprior: + - 0.0 views: - ftrs: 0: @@ -52,35 +50,38 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 0 - - 1 - - 1 - counts: - - 2 - - 2 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 0 + - 1 + - 1 + counts: + - 2 + - 2 + n_cats: 2 + process: !dirichlet + alpha: 1.0 + alpha_prior: shape: 1.0 rate: 1.0 weights: - 0.5 - 0.5 alpha: 1 -asgn: - alpha: 1 +prior_process: asgn: - - 0 - counts: - - 1 - n_cats: 1 - prior: - !Gamma - shape: 1.0 - rate: 1.0 + asgn: + - 0 + counts: + - 1 + n_cats: 1 + process: + !dirichlet + alpha: 1.0 + alpha_prior: + shape: 1.0 + rate: 1.0 weights: - 1.0 diff --git a/lace/resources/test/single-continuous.yaml b/lace/resources/test/single-continuous.yaml index c4e780ee..8e47ce54 100644 --- a/lace/resources/test/single-continuous.yaml +++ b/lace/resources/test/single-continuous.yaml @@ -1,16 +1,14 @@ --- -loglike: 0.0 +score: + ln_likelihood: 0.0 + ln_prior: 0.0 + ln_state_prior_process: 0.0 + ln_view_prior_process: 0.0 diagnostics: loglike: - 0.0 - nviews: - - 2 - state_alpha: - - 1.0 -view_alpha_prior: - !Gamma - shape: 1.0 - rate: 1.0 + logprior: + - 0.0 views: - ftrs: 0: @@ -51,35 +49,39 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: + process: + !dirichlet + alpha: 1.0 + alpha_prior: + shape: 1.0 + rate: 1.0 asgn: - - 0 - - 0 - - 1 - - 1 - counts: - - 2 - - 2 - n_cats: 2 - prior: - !Gamma - shape: 1.0 - rate: 1.0 + asgn: + - 0 + - 0 + - 1 + - 1 + counts: + - 2 + - 2 + n_cats: 2 weights: - 0.5 - 0.5 alpha: 1 -asgn: - alpha: 1 +prior_process: asgn: - - 0 - counts: - - 1 - n_cats: 1 - prior: - !Gamma - shape: 1.0 - rate: 1.0 + asgn: + - 0 + counts: + - 1 + n_cats: 1 + process: + !dirichlet + alpha: 1.0 + alpha_prior: + shape: 1.0 + rate: 1.0 weights: - 1.0 diff --git a/lace/resources/test/single-count.yaml b/lace/resources/test/single-count.yaml index d3d0f622..3a77b274 100644 --- a/lace/resources/test/single-count.yaml +++ b/lace/resources/test/single-count.yaml @@ -1,16 +1,14 @@ --- -loglike: 0.0 +score: + ln_likelihood: 0.0 + ln_prior: 0.0 + ln_state_prior_process: 0.0 + ln_view_prior_process: 0.0 diagnostics: - loglike: - - 0.0 - nviews: - - 2 - state_alpha: - - 1.0 -view_alpha_prior: - !Gamma - shape: 1.0 - rate: 1.0 + loglike: + - 0.0 + logprior: + - 0.0 views: - ftrs: 0: @@ -41,34 +39,35 @@ views: scale: 2.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 0 - - 1 - - 1 - counts: - - 2 - - 2 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 0 + - 1 + - 1 + counts: + - 2 + - 2 + n_cats: 2 + process: !dirichlet + alpha: 1.0 + alpha_prior: shape: 1.0 rate: 1.0 weights: - 0.5 - 0.5 - alpha: 1 -asgn: - alpha: 1 +prior_process: asgn: - - 0 - counts: - - 1 - n_cats: 1 - prior: - !Gamma + asgn: + - 0 + counts: + - 1 + n_cats: 1 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: diff --git a/lace/resources/test/small/small-state-1.yaml b/lace/resources/test/small/small-state-1.yaml index 6cc3d5ba..ed16459f 100644 --- a/lace/resources/test/small/small-state-1.yaml +++ b/lace/resources/test/small/small-state-1.yaml @@ -1,16 +1,14 @@ --- -loglike: 0.0 +score: + ln_likelihood: 0.0 + ln_prior: 0.0 + ln_state_prior_process: 0.0 + ln_view_prior_process: 0.0 diagnostics: loglike: - 0.0 - nviews: - - 2 - state_alpha: - - 1.0 -view_alpha_prior: - !Gamma - shape: 1.0 - rate: 1.0 + logprior: + - 0.0 views: - ftrs: 0: @@ -89,19 +87,20 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 0 - - 1 - - 1 - counts: - - 2 - - 2 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 0 + - 1 + - 1 + counts: + - 2 + - 2 + n_cats: 2 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: @@ -147,37 +146,38 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 1 - - 1 - - 1 - counts: - - 1 - - 3 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 1 + - 1 + - 1 + counts: + - 1 + - 3 + n_cats: 2 + process: !dirichlet + alpha: 1.0 + alpha_prior: shape: 1.0 rate: 1.0 weights: - 0.25 - 0.75 - alpha: 1 -asgn: - alpha: 1 +prior_process: asgn: - - 0 - - 1 - - 0 - counts: - - 2 - - 1 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 1 + - 0 + counts: + - 2 + - 1 + n_cats: 2 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: diff --git a/lace/resources/test/small/small-state-2.yaml b/lace/resources/test/small/small-state-2.yaml index d349c322..bbb3ac3b 100644 --- a/lace/resources/test/small/small-state-2.yaml +++ b/lace/resources/test/small/small-state-2.yaml @@ -1,16 +1,14 @@ --- -loglike: 0.0 +score: + ln_likelihood: 0.0 + ln_prior: 0.0 + ln_state_prior_process: 0.0 + ln_view_prior_process: 0.0 diagnostics: - loglike: - - 0.0 - nviews: - - 2 - state_alpha: - - 1.0 -view_alpha_prior: - !Gamma - shape: 1.0 - rate: 1.0 + loglike: + - 0.0 + logprior: + - 0.0 views: - ftrs: 0: @@ -58,27 +56,27 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 1 - - 1 - - 2 - counts: - - 1 - - 2 - - 1 - n_cats: 3 - prior: - !Gamma + asgn: + - 0 + - 1 + - 1 + - 2 + counts: + - 1 + - 2 + - 1 + n_cats: 3 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: - 0.25 - 0.5 - 0.25 - alpha: 1 - ftrs: 1: !Continuous @@ -156,37 +154,38 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 0 - - 1 - - 1 - counts: - - 2 - - 2 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 0 + - 1 + - 1 + counts: + - 2 + - 2 + n_cats: 2 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: - 0.5 - 0.5 - alpha: 1 -asgn: - alpha: 1 +prior_process: asgn: - - 0 - - 1 - - 1 - counts: - - 1 - - 2 - n_cats: 2 - prior: - !Gamma + asgn: + - 0 + - 1 + - 1 + counts: + - 1 + - 2 + n_cats: 2 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: diff --git a/lace/resources/test/small/small-state-3.yaml b/lace/resources/test/small/small-state-3.yaml index 78e61b22..290c9f9c 100644 --- a/lace/resources/test/small/small-state-3.yaml +++ b/lace/resources/test/small/small-state-3.yaml @@ -1,16 +1,14 @@ --- -loglike: 0.0 +score: + ln_likelihood: 0.0 + ln_prior: 0.0 + ln_state_prior_process: 0.0 + ln_view_prior_process: 0.0 diagnostics: - loglike: - - 0.0 - nviews: - - 2 - state_alpha: - - 1.0 -view_alpha_prior: - !Gamma - shape: 1.0 - rate: 1.0 + loglike: + - 0.0 + logprior: + - 0.0 views: - ftrs: 0: @@ -127,38 +125,39 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 1 - - 1 - - 1 - counts: - - 1 - - 3 - n_cats: 2 - prior: - !Gamma + alpha: 1 + asgn: + - 0 + - 1 + - 1 + - 1 + counts: + - 1 + - 3 + n_cats: 2 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: - 0.25 - 0.75 - alpha: 1 -asgn: - alpha: 1 +prior_process: asgn: - - 0 - - 0 - - 0 - counts: - - 3 - n_cats: 1 - prior: - !Gamma + asgn: + - 0 + - 0 + - 0 + counts: + - 3 + n_cats: 1 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: - 1.0 -alpha: 1 diff --git a/lace/resources/test/spread-out-continuous-modes.yaml b/lace/resources/test/spread-out-continuous-modes.yaml index 3ca34fec..f7bd75f6 100644 --- a/lace/resources/test/spread-out-continuous-modes.yaml +++ b/lace/resources/test/spread-out-continuous-modes.yaml @@ -1,16 +1,14 @@ --- -loglike: 0.0 +score: + ln_likelihood: 0.0 + ln_prior: 0.0 + ln_state_prior_process: 0.0 + ln_view_prior_process: 0.0 diagnostics: - loglike: - - 0.0 - nviews: - - 1 - state_alpha: - - 1.0 -view_alpha_prior: - !Gamma - shape: 1.0 - rate: 1.0 + loglike: + - 0.0 + logprior: + - 0.0 views: - ftrs: 0: @@ -58,20 +56,21 @@ views: scale: 1.0 data: n: 0 - asgn: - alpha: 1 + prior_process: asgn: - - 0 - - 0 - - 1 - - 2 - counts: - - 2 - - 1 - - 1 - n_cats: 3 - prior: - !Gamma + asgn: + - 0 + - 0 + - 1 + - 2 + counts: + - 2 + - 1 + - 1 + n_cats: 3 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: @@ -79,15 +78,16 @@ views: - 0.2 - 0.3 alpha: 1 -asgn: - alpha: 1 +prior_process: asgn: - - 0 - counts: - - 1 - n_cats: 1 - prior: - !Gamma + asgn: + - 0 + counts: + - 1 + n_cats: 1 + process: !dirichlet + alpha: 1 + alpha_prior: shape: 1.0 rate: 1.0 weights: From b649e722becb9264efd2b91f3696a01609c5efea Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 18 Mar 2024 22:25:33 -0500 Subject: [PATCH 19/43] lace tests passing for --all-features --- lace/examples/shapes.rs | 13 +++++++--- lace/src/bencher.rs | 49 ++++++++++++++++++++++++++++-------- lace/src/data/data_source.rs | 10 ++++---- lace/tests/engine.rs | 10 ++++---- lace/tests/workflow.rs | 5 ++-- 5 files changed, 60 insertions(+), 27 deletions(-) diff --git a/lace/examples/shapes.rs b/lace/examples/shapes.rs index 366c3697..346b0c53 100644 --- a/lace/examples/shapes.rs +++ b/lace/examples/shapes.rs @@ -108,9 +108,14 @@ mod requires_formats { // generate codebook println!("Generating codebook"); - let codebook = - lace_codebook::data::codebook_from_csv(f.path(), None, None, false) - .unwrap(); + let codebook = lace_codebook::data::codebook_from_csv( + f.path(), + None, + None, + None, + false, + ) + .unwrap(); // generate engine println!("Constructing Engine"); @@ -143,7 +148,7 @@ mod requires_formats { engine .states .iter() - .for_each(|state| print!("{} ", state.views[0].asgn.n_cats)); + .for_each(|state| print!("{} ", state.views[0].asgn().n_cats)); println!("\nPlotting"); plot(xs_in, ys_in, xs_sim, ys_sim); diff --git a/lace/src/bencher.rs b/lace/src/bencher.rs index 5b6b956b..cd63e8d1 100644 --- a/lace/src/bencher.rs +++ b/lace/src/bencher.rs @@ -62,6 +62,26 @@ pub enum GenerateStateError { BuildState(#[from] BuildStateError), } +fn emit_prior_process( + prior_process: crate::codebook::PriorProcess, + rng: &mut R, +) -> lace_stats::prior_process::Process { + use lace_stats::prior_process::{Dirichlet, PitmanYor, Process}; + match prior_process { + crate::codebook::PriorProcess::Dirichlet { alpha_prior } => { + let inner = Dirichlet::from_prior(alpha_prior, rng); + Process::Dirichlet(inner) + } + crate::codebook::PriorProcess::PitmanYor { + alpha_prior, + d_prior, + } => { + let inner = PitmanYor::from_prior(alpha_prior, d_prior, rng); + Process::PitmanYor(inner) + } + } +} + impl BencherSetup { fn gen_state( &mut self, @@ -74,15 +94,22 @@ impl BencherSetup { } => crate::codebook::data::read_csv(path) .map_err(GenerateStateError::Read) .and_then(|df| { - let state_alpha_prior = codebook - .state_alpha_prior - .clone() - .unwrap_or_else(lace_consts::state_alpha_prior); - - let view_alpha_prior = codebook - .view_alpha_prior - .clone() - .unwrap_or_else(lace_consts::view_alpha_prior); + let state_prior_process = { + let prior_process = codebook + .state_prior_process + .clone() + .unwrap_or_default(); + emit_prior_process(prior_process, rng) + }; + + let view_prior_process = { + let prior_process = codebook + .view_prior_process + .clone() + .unwrap_or_default(); + emit_prior_process(prior_process, rng) + }; + let mut codebook_tmp = Box::::default(); // swap codebook into something we can take ownership of @@ -94,8 +121,8 @@ impl BencherSetup { State::from_prior( features, - state_alpha_prior, - view_alpha_prior, + state_prior_process, + view_prior_process, &mut rng, ) }) diff --git a/lace/src/data/data_source.rs b/lace/src/data/data_source.rs index 23f6d2e2..15afa3e4 100644 --- a/lace/src/data/data_source.rs +++ b/lace/src/data/data_source.rs @@ -148,19 +148,19 @@ impl DataSource { use crate::codebook::{data, formats}; let codebook = match &self { DataSource::Ipc(path) => { - formats::codebook_from_ipc(path, None, None, false) + formats::codebook_from_ipc(path, None, None, None, false) } DataSource::Csv(path) => { - formats::codebook_from_csv(path, None, None, false) + formats::codebook_from_csv(path, None, None, None, false) } DataSource::Json(path) => { - formats::codebook_from_json(path, None, None, false) + formats::codebook_from_json(path, None, None, None, false) } DataSource::Parquet(path) => { - formats::codebook_from_parquet(path, None, None, false) + formats::codebook_from_parquet(path, None, None, None, false) } DataSource::Polars(df) => { - data::df_to_codebook(df, None, None, false) + data::df_to_codebook(df, None, None, None, false) } DataSource::Empty => Ok(Codebook::default()), }?; diff --git a/lace/tests/engine.rs b/lace/tests/engine.rs index 5534342d..eec99455 100644 --- a/lace/tests/engine.rs +++ b/lace/tests/engine.rs @@ -2630,7 +2630,7 @@ mod prior_in_codebook { use lace_cc::feature::ColModel; use lace_codebook::{Codebook, ColMetadata, ColMetadataList, ColType}; use lace_stats::prior::nix::NixHyper; - use lace_stats::rv::dist::{Gamma, NormalInvChiSquared}; + use lace_stats::rv::dist::NormalInvChiSquared; use lace_stats::rv::traits::Rv; use std::convert::TryInto; use std::io::Write; @@ -2691,12 +2691,12 @@ mod prior_in_codebook { " --- table_name: table - state_alpha_prior: - !Gamma + state_prior_process: !dirichlet + alpha_prior: shape: 1.0 rate: 1.0 - view_alpha_prior: - !Gamma + view_prior_process: !dirichlet + alpha_prior: shape: 1.0 rate: 1.0 col_metadata: diff --git a/lace/tests/workflow.rs b/lace/tests/workflow.rs index af7d5e2d..6764d633 100644 --- a/lace/tests/workflow.rs +++ b/lace/tests/workflow.rs @@ -35,7 +35,8 @@ fn default_csv_workflow() { let file = datafile(); // default codebook - let codebook = codebook_from_csv(file.path(), None, None, false).unwrap(); + let codebook = + codebook_from_csv(file.path(), None, None, None, false).unwrap(); let rng = rand_xoshiro::Xoshiro256Plus::from_entropy(); let mut engine = Engine::new( 4, @@ -56,7 +57,7 @@ fn satellites_csv_workflow() { // default codebook let codebook = - codebook_from_csv(path.as_path(), None, None, false).unwrap(); + codebook_from_csv(path.as_path(), None, None, None, false).unwrap(); let mut engine: Engine = EngineBuilder::new(DataSource::Csv(path)) .codebook(codebook) From 4142231e6572d59e88c1dac32dfcca3563893b3e Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Tue, 19 Mar 2024 12:51:31 -0500 Subject: [PATCH 20/43] Lace CLI tests pass --- cli/README.md | 2 +- cli/src/opt.rs | 27 +++++++-------- cli/src/routes.rs | 17 +++------- cli/tests/cli.rs | 61 +++++++++------------------------- lace/lace_cc/src/transition.rs | 4 +-- 5 files changed, 34 insertions(+), 77 deletions(-) diff --git a/cli/README.md b/cli/README.md index 7fe00563..25f4a47f 100644 --- a/cli/README.md +++ b/cli/README.md @@ -1 +1 @@ -# Lace CLI \ No newline at end of file +# Lace CLI diff --git a/cli/src/opt.rs b/cli/src/opt.rs index 59396c80..7aabd677 100644 --- a/cli/src/opt.rs +++ b/cli/src/opt.rs @@ -21,8 +21,8 @@ pub enum Transition { ColumnAssignment, ComponentParams, RowAssignment, - StateAlpha, - ViewAlphas, + StatePriorProcessParams, + ViewPriorProcessParams, FeaturePriors, } @@ -33,8 +33,8 @@ impl std::str::FromStr for Transition { match s { "column_assignment" => Ok(Self::ColumnAssignment), "row_assignment" => Ok(Self::RowAssignment), - "state_alpha" => Ok(Self::StateAlpha), - "view_alphas" => Ok(Self::ViewAlphas), + "state_prior_process_params" => Ok(Self::StatePriorProcessParams), + "view_prior_process_params" => Ok(Self::ViewPriorProcessParams), "feature_priors" => Ok(Self::FeaturePriors), "component_params" => Ok(Self::ComponentParams), _ => Err(format!("cannot parse '{s}'")), @@ -141,17 +141,17 @@ impl RunArgs { let transitions = match self.transitions { None => vec![ StateTransition::ColumnAssignment(col_alg), - StateTransition::StateAlpha, + StateTransition::StatePriorProcessParams, StateTransition::RowAssignment(row_alg), - StateTransition::ViewAlphas, + StateTransition::ViewPriorProcessParams, StateTransition::FeaturePriors, ], Some(ref ts) => ts .iter() .map(|t| match t { Transition::FeaturePriors => StateTransition::FeaturePriors, - Transition::StateAlpha => StateTransition::StateAlpha, - Transition::ViewAlphas => StateTransition::ViewAlphas, + Transition::StatePriorProcessParams => StateTransition::StatePriorProcessParams, + Transition::ViewPriorProcessParams => StateTransition::ViewPriorProcessParams, Transition::ComponentParams => StateTransition::ComponentParams, Transition::RowAssignment => StateTransition::RowAssignment(row_alg), Transition::ColumnAssignment => StateTransition::ColumnAssignment(col_alg), @@ -263,9 +263,6 @@ pub struct CodebookArgs { /// Parquet input filename #[clap(long = "parquet", group = "src")] pub parquet_src: Option, - /// CRP alpha prior on columns and rows - #[clap(long, default_value = "1.0, 1.0")] - pub alpha_prior: GammaParameters, /// Codebook out. May be either json or yaml #[clap(name = "CODEBOOK_OUT")] pub output: PathBuf, @@ -342,16 +339,16 @@ mod tests { #[test] fn view_alphas_from_str() { assert_eq!( - Transition::from_str("view_alphas").unwrap(), - Transition::ViewAlphas + Transition::from_str("view_prior_process_params").unwrap(), + Transition::ViewPriorProcessParams ); } #[test] fn state_alpha_from_str() { assert_eq!( - Transition::from_str("state_alpha").unwrap(), - Transition::StateAlpha + Transition::from_str("state_prior_process_params").unwrap(), + Transition::StatePriorProcessParams ); } diff --git a/cli/src/routes.rs b/cli/src/routes.rs index 0bd09137..f557b2bb 100644 --- a/cli/src/routes.rs +++ b/cli/src/routes.rs @@ -3,7 +3,6 @@ use std::time::Duration; use lace::codebook::Codebook; use lace::metadata::{deserialize_file, serialize_obj}; -use lace::stats::rv::dist::Gamma; use lace::update_handler::{CtrlC, ProgressBar, Timeout}; use lace::{Engine, EngineBuilder}; @@ -23,7 +22,6 @@ pub fn summarize_engine(cmd: opt::SummarizeArgs) -> i32 { String::from("State"), String::from("Iters"), String::from("Views"), - String::from("Alpha"), String::from("Score"), ]; @@ -36,9 +34,8 @@ pub fn summarize_engine(cmd: opt::SummarizeArgs) -> i32 { vec![ format!("{id}"), format!("{}", n_iters), - format!("{}", state.asgn.n_cats), - format!("{:.6}", state.asgn.alpha), - format!("{:.6}", state.loglike), + format!("{}", state.asgn().n_cats), + format!("{:.6}", state.score.ln_likelihood + state.score.ln_prior), ] }) .collect(); @@ -202,13 +199,6 @@ pub fn run(cmd: opt::RunArgs) -> i32 { macro_rules! codebook_from { ($path: ident, $fn: ident, $cmd: ident) => {{ - let alpha_prior: Gamma = match $cmd.alpha_prior.try_into() { - Ok(gamma) => gamma, - Err(err) => { - eprint!("Invalid Gamma parameters to CRP prior: {err}"); - return 1; - } - }; if !$path.exists() { eprintln!("Input {:?} not found", $path); return 1; @@ -217,7 +207,8 @@ macro_rules! codebook_from { let codebook = match lace::codebook::formats::$fn( $path, Some($cmd.category_cutoff), - Some(alpha_prior), + None, + None, $cmd.no_hyper, ) { Ok(codebook) => codebook, diff --git a/cli/tests/cli.rs b/cli/tests/cli.rs index 51b8aa56..997f6ee0 100644 --- a/cli/tests/cli.rs +++ b/cli/tests/cli.rs @@ -104,12 +104,12 @@ mod run { " --- table_name: my_data - state_alpha_prior: - !Gamma + state_prior_process: !dirichlet + alpha_prior: shape: 1.0 rate: 1.0 - view_alpha_prior: - !Gamma + view_prior_process: !dirichlet + alpha_prior: shape: 1.0 rate: 1.0 col_metadata: @@ -161,14 +161,17 @@ mod run { " --- table_name: my_data - state_alpha_prior: - !Gamma + state_prior_process: !dirichlet + alpha_prior: shape: 1.0 rate: 1.0 - view_alpha_prior: - !Gamma + view_prior_process: !pitman_yor + alpha_prior: shape: 1.0 rate: 1.0 + d_prior: + alpha: 0.5 + beta: 0.5 col_metadata: - name: z coltype: @@ -403,9 +406,9 @@ mod run { save_config: ~ transitions: - !row_assignment slice - - !view_alphas + - !view_prior_process_params - !column_assignment finite_cpu - - !state_alpha + - !state_prior_process_params - !feature_priors " ); @@ -551,7 +554,7 @@ mod run { .arg("--run-config") .arg(config.path()) .arg("--transitions") - .arg("state_alpha,row_assignment") + .arg("state_prior_process_params,row_assignment") .arg(dirname) .output() .expect("failed to execute process"); @@ -734,7 +737,7 @@ mod run { .arg("-q") .args(["--n-states", "4", "--n-iters", "10", "--flat-columns"]) .arg("--transitions") - .arg("state_alpha,view_alphas,component_params,row_assignment,feature_priors") + .arg("state_prior_process_params,view_prior_process_params,component_params,row_assignment,feature_priors") .arg("--csv") .arg(csv::animals()) .arg(dir.path().to_str().unwrap()) @@ -833,40 +836,6 @@ macro_rules! test_codebook_under_fmt { }); assert!(no_hypers); } - - #[test] - fn with_good_alpha_params() { - let fileout = tempfile::Builder::new().suffix(".yaml").tempfile().unwrap(); - let output = Command::new(LACE_CMD) - .arg("codebook") - .arg($flag) - .arg($crate::$mod::animals()) - .arg(fileout.path().to_str().unwrap()) - .arg("--alpha-prior") - .arg("2.3, 2.1") - .output() - .expect("failed to execute process"); - - assert!(output.status.success()); - } - - #[test] - fn with_bad_alpha_params() { - let fileout = tempfile::Builder::new().suffix(".yaml").tempfile().unwrap(); - let output = Command::new(LACE_CMD) - .arg("codebook") - .arg($flag) - .arg($crate::$mod::animals()) - .arg(fileout.path().to_str().unwrap()) - .arg("--alpha-prior") - .arg("2.3, -0.1") - .output() - .expect("failed to execute process"); - - assert!(!output.status.success()); - let err = String::from_utf8_lossy(output.stderr.as_slice()); - assert!(err.contains("must be greater than zero")); - } } }; } diff --git a/lace/lace_cc/src/transition.rs b/lace/lace_cc/src/transition.rs index fc38236a..719dc4b6 100644 --- a/lace/lace_cc/src/transition.rs +++ b/lace/lace_cc/src/transition.rs @@ -39,10 +39,10 @@ pub enum StateTransition { #[serde(rename = "row_assignment")] RowAssignment(RowAssignAlg), /// Update the alpha (discount) parameter on the column-to-views CRP - #[serde(rename = "state_alpha")] + #[serde(rename = "state_prior_process_params")] StatePriorProcessParams, /// Update the alpha (discount) parameters on the row-to-categories CRP - #[serde(rename = "view_alphas")] + #[serde(rename = "view_prior_process_params")] ViewPriorProcessParams, /// Update the feature (column) prior parameters #[serde(rename = "feature_priors")] From ffc92c308a3fcc23c0bb5ad5b1871a4e204f8c01 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Tue, 19 Mar 2024 13:28:05 -0500 Subject: [PATCH 21/43] pylace tests passing --- lace/lace_codebook/src/codebook.rs | 16 ++++++++++++++ lace/lace_stats/src/prior_process.rs | 16 ++++++++++++++ pylace/lace/__init__.py | 2 +- pylace/lace/codebook.py | 32 ++++++++++++++++------------ pylace/lace/engine.py | 2 +- pylace/src/metadata.rs | 8 +++---- pylace/tests/test_docs.py | 1 + 7 files changed, 57 insertions(+), 20 deletions(-) diff --git a/lace/lace_codebook/src/codebook.rs b/lace/lace_codebook/src/codebook.rs index 43043c73..d851fb1c 100644 --- a/lace/lace_codebook/src/codebook.rs +++ b/lace/lace_codebook/src/codebook.rs @@ -352,6 +352,22 @@ pub enum PriorProcess { PitmanYor { alpha_prior: Gamma, d_prior: Beta }, } +impl std::fmt::Display for PriorProcess { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + PriorProcess::Dirichlet { alpha_prior } => { + write!(f, "DP(α ~ {})", alpha_prior) + } + PriorProcess::PitmanYor { + alpha_prior, + d_prior, + } => { + write!(f, "PYP(α ~ {}, d ~ {})", alpha_prior, d_prior) + } + } + } +} + impl Default for PriorProcess { fn default() -> Self { Self::Dirichlet { diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index a8dc5226..15fb1f7c 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -52,6 +52,12 @@ impl Dirichlet { } } +impl std::fmt::Display for Dirichlet { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "Dirichlet(α({}) ~ {})", self.alpha, self.alpha_prior) + } +} + impl PriorProcessT for Dirichlet { fn ln_gibbs_weight(&self, n_k: usize) -> f64 { (n_k as f64).ln() @@ -153,6 +159,16 @@ pub struct PitmanYor { pub d_prior: Beta, } +impl std::fmt::Display for PitmanYor { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!( + f, + "Pitman-Yor(α({}) ~ {}, d({}) ~ {})", + self.alpha, self.alpha_prior, self.d, self.d_prior + ) + } +} + impl PitmanYor { pub fn from_prior( alpha_prior: Gamma, diff --git a/pylace/lace/__init__.py b/pylace/lace/__init__.py index e99de7f8..82fd8b15 100644 --- a/pylace/lace/__init__.py +++ b/pylace/lace/__init__.py @@ -12,10 +12,10 @@ ContinuousPrior, CountHyper, CountPrior, + PriorProcess, RowKernel, StateTransition, ValueMap, - PriorProcess, ) from lace.engine import Engine diff --git a/pylace/lace/codebook.py b/pylace/lace/codebook.py index 1c590d47..12bc54c8 100644 --- a/pylace/lace/codebook.py +++ b/pylace/lace/codebook.py @@ -274,14 +274,14 @@ def rename(self, name: str): >>> codebook = Animals().codebook >>> codebook # doctest: +NORMALIZE_WHITESPACE Codebook 'my_table' - state_alpha_prior: G(α: 1, β: 1) - view_alpha_prior: G(α: 1, β: 1) + state_prior_process: DP(α ~ G(α: 1, β: 1)) + view_prior_process: DP(α ~ G(α: 1, β: 1)) columns: 85 rows: 50 >>> codebook.rename("Dennis") Codebook 'Dennis' - state_alpha_prior: G(α: 1, β: 1) - view_alpha_prior: G(α: 1, β: 1) + state_prior_process: DP(α ~ G(α: 1, β: 1)) + view_prior_process: DP(α ~ G(α: 1, β: 1)) columns: 85 rows: 50 """ @@ -300,17 +300,19 @@ def set_state_prior_process(self, prior_process: _lc.PriorProcess): Examples -------- >>> from lace.examples import Animals + >>> from lace import PriorProcess >>> codebook = Animals().codebook >>> codebook # doctest: +NORMALIZE_WHITESPACE Codebook 'my_table' - state_alpha_prior: G(α: 1, β: 1) - view_alpha_prior: G(α: 1, β: 1) + state_prior_process: DP(α ~ G(α: 1, β: 1)) + view_prior_process: DP(α ~ G(α: 1, β: 1)) columns: 85 rows: 50 - >>> codebook.set_state_alpha_prior(2.0, 3.1) + >>> process = PriorProcess.pitman_yor(1.0, 2.0, 0.5, 0.5) + >>> codebook.set_state_prior_process(process) Codebook 'my_table' - state_alpha_prior: G(α: 2, β: 3.1) - view_alpha_prior: G(α: 1, β: 1) + state_prior_process: PYP(α ~ G(α: 1, β: 2), d ~ Beta(α: 0.5, β: 0.5)) + view_prior_process: DP(α ~ G(α: 1, β: 1)) columns: 85 rows: 50 """ @@ -329,17 +331,19 @@ def set_view_prior_process(self, prior_process: _lc.PriorProcess): Examples -------- >>> from lace.examples import Animals + >>> from lace import PriorProcess >>> codebook = Animals().codebook >>> codebook # doctest: +NORMALIZE_WHITESPACE Codebook 'my_table' - state_alpha_prior: G(α: 1, β: 1) - view_alpha_prior: G(α: 1, β: 1) + state_prior_process: DP(α ~ G(α: 1, β: 1)) + view_prior_process: DP(α ~ G(α: 1, β: 1)) columns: 85 rows: 50 - >>> codebook.set_view_alpha_prior(2.0, 3.1) + >>> process = PriorProcess.pitman_yor(1.0, 2.0, 0.5, 0.5) + >>> codebook.set_view_prior_process(process) Codebook 'my_table' - state_alpha_prior: G(α: 1, β: 1) - view_alpha_prior: G(α: 2, β: 3.1) + state_prior_process: DP(α ~ G(α: 1, β: 1)) + view_prior_process: PYP(α ~ G(α: 1, β: 2), d ~ Beta(α: 0.5, β: 0.5)) columns: 85 rows: 50 """ diff --git a/pylace/lace/engine.py b/pylace/lace/engine.py index bc735869..c93ab506 100644 --- a/pylace/lace/engine.py +++ b/pylace/lace/engine.py @@ -1011,7 +1011,7 @@ def update( ... timeout=30, ... transitions=[ ... StateTransition.row_assignment(RowKernel.slice()), - ... StateTransition.view_alphas(), + ... StateTransition.view_prior_process_params(), ... ], ... ) diff --git a/pylace/src/metadata.rs b/pylace/src/metadata.rs index 79f70962..1706e77a 100644 --- a/pylace/src/metadata.rs +++ b/pylace/src/metadata.rs @@ -609,19 +609,19 @@ impl Codebook { pub fn __repr__(&self) -> String { format!( "Codebook '{}'\ - \n state_alpha_prior: {}\ - \n view_alpha_prior: {}\ + \n state_prior_process: {}\ + \n view_prior_process: {}\ \n columns: {}\ \n rows: {}", self.0.table_name, self.0 .state_prior_process .clone() - .map_or_else(|| String::from("None"), |p| format!("{:?}", p)), + .map_or_else(|| String::from("None"), |p| format!("{}", p)), self.0 .view_prior_process .clone() - .map_or_else(|| String::from("None"), |p| format!("{:?}", p)), + .map_or_else(|| String::from("None"), |p| format!("{}", p)), self.0.col_metadata.len(), self.0.row_names.len() ) diff --git a/pylace/tests/test_docs.py b/pylace/tests/test_docs.py index 2a5b4d83..e7e153c6 100644 --- a/pylace/tests/test_docs.py +++ b/pylace/tests/test_docs.py @@ -32,6 +32,7 @@ def runtest(mod): if __name__ == "__main__": runtest("lace.engine") runtest("lace.analysis") + runtest("lace.codebook") if not NOPLOT: runtest("lace.plot") From 2ba83e858de68586be0e6faebc65944570c0fd2a Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Tue, 19 Mar 2024 15:17:27 -0500 Subject: [PATCH 22/43] Get the book working --- book/lace_preprocess_mdbook_yaml/Cargo.lock | 14 +++-- book/lace_preprocess_mdbook_yaml/src/lib.rs | 65 +++++++-------------- book/src/SUMMARY.md | 1 + book/src/codebook-ref.md | 52 ++++++++++++----- book/src/pcc/prior-processes.md | 12 ++++ book/src/workflow/model.md | 2 +- 6 files changed, 79 insertions(+), 67 deletions(-) create mode 100644 book/src/pcc/prior-processes.md diff --git a/book/lace_preprocess_mdbook_yaml/Cargo.lock b/book/lace_preprocess_mdbook_yaml/Cargo.lock index 6828ef28..18a23fe1 100644 --- a/book/lace_preprocess_mdbook_yaml/Cargo.lock +++ b/book/lace_preprocess_mdbook_yaml/Cargo.lock @@ -1019,7 +1019,7 @@ dependencies = [ [[package]] name = "lace_codebook" -version = "0.5.0" +version = "0.6.0" dependencies = [ "lace_consts", "lace_data", @@ -1040,7 +1040,7 @@ dependencies = [ [[package]] name = "lace_data" -version = "0.2.0" +version = "0.3.0" dependencies = [ "lace_utils", "serde", @@ -1068,7 +1068,7 @@ dependencies = [ [[package]] name = "lace_stats" -version = "0.2.1" +version = "0.3.0" dependencies = [ "itertools", "lace_consts", @@ -1082,9 +1082,10 @@ dependencies = [ [[package]] name = "lace_utils" -version = "0.2.0" +version = "0.3.0" dependencies = [ "rand", + "rayon", ] [[package]] @@ -2200,14 +2201,15 @@ checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "rv" -version = "0.16.2" +version = "0.16.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ad4c180111696893363158f59ee1b15500947365270b7460a432fc207f926bf" +checksum = "c07e0a3b756794c7ea2f05d93760ffb946ff4f94b255d92444d94c19fd71f4ab" dependencies = [ "doc-comment", "lru", "nalgebra", "num", + "num-traits", "peroxide", "rand", "rand_distr", diff --git a/book/lace_preprocess_mdbook_yaml/src/lib.rs b/book/lace_preprocess_mdbook_yaml/src/lib.rs index 4fc562d4..04d1a8c8 100644 --- a/book/lace_preprocess_mdbook_yaml/src/lib.rs +++ b/book/lace_preprocess_mdbook_yaml/src/lib.rs @@ -1,5 +1,3 @@ -use std::collections::HashMap; - use anyhow::anyhow; use log::debug; use mdbook::{ @@ -12,7 +10,15 @@ use regex::Regex; use serde::Deserialize; -type GammaMap = HashMap; +#[derive(Deserialize)] +struct ViewPriorProcess { + pub view_prior_process: lace_codebook::PriorProcess, +} + +#[derive(Deserialize)] +struct StatePriorProcess { + pub state_prior_process: lace_codebook::PriorProcess, +} fn check_deserialize_yaml(input: &str) -> anyhow::Result<()> where @@ -54,17 +60,14 @@ macro_rules! check_deserialize_arm { } } -fn check_deserialize_dyn( - input: &str, - type_name: &str, - format: &str, -) -> anyhow::Result<()> { +fn check_deserialize_dyn(input: &str, type_name: &str, format: &str) -> anyhow::Result<()> { check_deserialize_arm!( input, type_name, format, [ - GammaMap, + ViewPriorProcess, + StatePriorProcess, lace_codebook::ColMetadata, lace_codebook::ColMetadataList ] @@ -80,35 +83,21 @@ impl YamlTester { YamlTester } - fn examine_chapter_content( - &self, - content: &str, - re: &Regex, - ) -> anyhow::Result<()> { + fn examine_chapter_content(&self, content: &str, re: &Regex) -> anyhow::Result<()> { let parser = Parser::new(content); let mut code_block = Some(String::new()); for event in parser { match event { - Event::Start(Tag::CodeBlock(CodeBlockKind::Fenced( - ref code_block_string, - ))) => { + Event::Start(Tag::CodeBlock(CodeBlockKind::Fenced(ref code_block_string))) => { if re.is_match(code_block_string) { - debug!( - "YAML Block Start, identifier string={}", - code_block_string - ); + debug!("YAML Block Start, identifier string={}", code_block_string); code_block = Some(String::new()); } } - Event::End(Tag::CodeBlock(CodeBlockKind::Fenced( - ref code_block_string, - ))) => { + Event::End(Tag::CodeBlock(CodeBlockKind::Fenced(ref code_block_string))) => { if let Some(captures) = re.captures(code_block_string) { - debug!( - "Code Block End, identifier string={}", - code_block_string - ); + debug!("Code Block End, identifier string={}", code_block_string); let serialization_format = captures .get(1) @@ -119,21 +108,13 @@ impl YamlTester { .get(2) .ok_or(anyhow!("No deserialize type found"))? .as_str(); - debug!( - "Target deserialization type is {}", - target_type - ); + debug!("Target deserialization type is {}", target_type); let final_block = code_block.take(); - let final_block = - final_block.ok_or(anyhow!("No YAML text found"))?; + let final_block = final_block.ok_or(anyhow!("No YAML text found"))?; debug!("Code block ended up as\n{}", final_block); - check_deserialize_dyn( - &final_block, - target_type, - serialization_format, - )?; + check_deserialize_dyn(&final_block, target_type, serialization_format)?; } } Event::Text(ref text) => { @@ -154,11 +135,7 @@ impl Preprocessor for YamlTester { "lace-yaml-tester" } - fn run( - &self, - _ctx: &PreprocessorContext, - book: Book, - ) -> anyhow::Result { + fn run(&self, _ctx: &PreprocessorContext, book: Book) -> anyhow::Result { debug!("Starting the run"); let re = Regex::new(r"^(yaml|json).*,deserializeTo=([^,]+)").unwrap(); for book_item in book.iter() { diff --git a/book/src/SUMMARY.md b/book/src/SUMMARY.md index 98ee2027..b2560037 100644 --- a/book/src/SUMMARY.md +++ b/book/src/SUMMARY.md @@ -16,6 +16,7 @@ - [Data Simulation](./pcc/simulate.md) - [In- and out-of-table operations](./pcc/inouttable.md) - [Adding data to a model](./pcc/add-data.md) + - [Prior processes](./pcc/prior-processes.md) - [Preparing your data](./data/basics.md) - [Codebook reference](./codebook-ref.md) - [Appendix](./appendix/appendix.md) diff --git a/book/src/codebook-ref.md b/book/src/codebook-ref.md index d9b33789..a5fbad4d 100644 --- a/book/src/codebook-ref.md +++ b/book/src/codebook-ref.md @@ -16,30 +16,50 @@ information about String name of the table. For your reference. -### `state_alpha_prior` +### `state_prior_process` -A gamma prior on the Chinese Restaurant Process (CRP) alpha parameter assigning -columns to views. +The prior process used for assigning columns to views. Can either be a Dirichlet process with a Gamma prior on alpha: -Example with a gamma prior +```yaml,deserializeTo=StatePriorProcess +state_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 +``` + +or a Pitman-Yor process with a Gamma prior on alpha and a Beta prior on d. -```yaml,deserializeTo=GammaMap -state_alpha_prior: - shape: 1.0 - rate: 1.0 +```yaml,deserializeTo=StatePriorProcess +state_prior_process: !pitman_yor + alpha_prior: + shape: 1.0 + rate: 1.0 + d_prior: + alpha: 0.5 + beta: 0.5 ``` -### `view_alpha_prior` +### `view_prior_process` -A gamma prior on the Chinese Restaurant Process (CRP) alpha parameter assigning -rows within views to categories. +The prior process used for assigning rows to categories. Can either be a Dirichlet process with a Gamma prior on alpha: + +```yaml,deserializeTo=ViewPriorProcess +view_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 +``` -Example with a gamma prior +or a Pitman-Yor process with a Gamma prior on alpha and a Beta prior on d. -```yaml,deserializeTo=GammaMap -view_alpha_prior: - shape: 1.0 - rate: 1.0 +```yaml,deserializeTo=StatePriorProcess +view_prior_process: !pitman_yor + alpha_prior: + shape: 1.0 + rate: 1.0 + d_prior: + alpha: 0.5 + beta: 0.5 ``` ### `col_metadata` diff --git a/book/src/pcc/prior-processes.md b/book/src/pcc/prior-processes.md new file mode 100644 index 00000000..8563e4d5 --- /dev/null +++ b/book/src/pcc/prior-processes.md @@ -0,0 +1,12 @@ +# Prior Processes + +In Lace (and in Bayesian nonparametrics) we put a prior on the number of parameters. This *prior process* formalizes how instances are distributed to an unknown number of categories. Lace gives you two options + +- The one-parameter Dirichlet process, `DP(α)` +- The two-parameter Pitman-Yor process, `PYP(α, d)` + +The Dirichlet process more heavily penalizes new categories with an exponential fall off while the Pitman-Yor process has a power law fall off in the number for categories. When d = 0, Pitman-Yor is equivalent to the Dirichlet process. + +While Pitman-Yor may fit the data better it will create more parameters, which will cause model training to take longer. + +For those looking for a good introduction to prior process, [this slide deck](https://www.gatsby.ucl.ac.uk/~ywteh/teaching/probmodels/lecture5bnp.pdf) from Yee Whye Teh is a good resource. diff --git a/book/src/workflow/model.md b/book/src/workflow/model.md index 47370cd1..b35d68a3 100644 --- a/book/src/workflow/model.md +++ b/book/src/workflow/model.md @@ -219,7 +219,7 @@ engine.update( save_path="mydata.lace", transitions=[ StateTransition.row_assignment(RowKernel.slice()), - StateTransition.view_alphas(), + StateTransition.view_prior_process_params(), ], ) ``` From 8fee02a57c482b8118a62e04e33839870958267a Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Tue, 19 Mar 2024 20:11:34 -0500 Subject: [PATCH 23/43] fix field in benchmarks --- lace/benches/insert_data.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lace/benches/insert_data.rs b/lace/benches/insert_data.rs index d6509305..0a3e04e3 100644 --- a/lace/benches/insert_data.rs +++ b/lace/benches/insert_data.rs @@ -42,8 +42,8 @@ fn build_engine(nrows: usize, ncols: usize) -> Engine { let codebook = Codebook { table_name: "table".into(), - state_alpha_prior: None, - view_alpha_prior: None, + state_prior_process: None, + view_prior_process: None, col_metadata, comments: None, row_names: (0..nrows) From a92ca9d2fbb826355b398ac5ca01ffd7fb00af46 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Wed, 20 Mar 2024 13:00:16 -0500 Subject: [PATCH 24/43] Attempt to get prev version seed ctrl working --- lace/lace_stats/src/prior_process.rs | 61 ++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 17 deletions(-) diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index 15fb1f7c..ff3eada5 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -100,28 +100,55 @@ impl PriorProcessT for Dirichlet { } fn draw_assignment(&self, n: usize, rng: &mut R) -> Assignment { - if n == 0 { - return Assignment::empty(); - } - let mut counts = vec![1]; - let mut ps = vec![1.0, self.alpha]; - let mut zs = vec![0; n]; + // if n == 0 { + // return Assignment::empty(); + // } + // let mut counts = vec![1]; + // let mut ps = vec![1.0, self.alpha]; + // let mut zs = vec![0; n]; + + // for z in zs.iter_mut().take(n).skip(1) { + // let zi = pflip(&ps, 1, rng)[0]; + // *z = zi; + // if zi < counts.len() { + // ps[zi] += 1.0; + // counts[zi] += 1; + // } else { + // ps[zi] = 1.0; + // ps.push(self.alpha); + // counts.push(1); + // }; + // } + // + // Assignment { + // asgn: zs, + // n_cats: counts.len(), + // counts, + // } + let mut n_cats = 0; + let mut weights: Vec = vec![]; + let mut asgn: Vec = Vec::with_capacity(n); + + for _ in 0..n { + weights.push(self.alpha); + let k = pflip(&weights, 1, rng)[0]; + asgn.push(k); - for z in zs.iter_mut().take(n).skip(1) { - let zi = pflip(&ps, 1, rng)[0]; - *z = zi; - if zi < counts.len() { - ps[zi] += 1.0; - counts[zi] += 1; + if k == n_cats { + weights[n_cats] = 1.0; + n_cats += 1; } else { - ps[zi] = 1.0; - ps.push(self.alpha); - counts.push(1); - }; + weights.truncate(n_cats); + weights[k] += 1.0; + } } + // convert weights to counts, correcting for possible floating point + // errors + let counts: Vec = + weights.iter().map(|w| (w + 0.5) as usize).collect(); Assignment { - asgn: zs, + asgn, n_cats: counts.len(), counts, } From 45f1cc4573b0b4529e5b52944a6a7f019f326bab Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Wed, 20 Mar 2024 13:43:55 -0500 Subject: [PATCH 25/43] Fix pylace dataset codebooks --- .../lace/resources/datasets/animals/codebook.yaml | 14 ++++++++------ .../resources/datasets/satellites/codebook.yaml | 14 ++++++++------ 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/pylace/lace/resources/datasets/animals/codebook.yaml b/pylace/lace/resources/datasets/animals/codebook.yaml index 9d856418..120c53da 100644 --- a/pylace/lace/resources/datasets/animals/codebook.yaml +++ b/pylace/lace/resources/datasets/animals/codebook.yaml @@ -1,10 +1,12 @@ table_name: my_table -state_alpha_prior: - shape: 1.0 - rate: 1.0 -view_alpha_prior: - shape: 1.0 - rate: 1.0 +state_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 +view_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 col_metadata: - name: black coltype: !Categorical diff --git a/pylace/lace/resources/datasets/satellites/codebook.yaml b/pylace/lace/resources/datasets/satellites/codebook.yaml index 766042da..1349907f 100644 --- a/pylace/lace/resources/datasets/satellites/codebook.yaml +++ b/pylace/lace/resources/datasets/satellites/codebook.yaml @@ -1,10 +1,12 @@ table_name: my_data -state_alpha_prior: !Gamma - shape: 1.0 - rate: 1.0 -view_alpha_prior: - shape: 1.0 - rate: 1.0 +state_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 +view_prior_process: !dirichlet + alpha_prior: + shape: 1.0 + rate: 1.0 col_metadata: - name: Country_of_Operator coltype: !Categorical From 04f12732b7d98ef4b6b4c8ace4bd3f7c9cfbc80d Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Thu, 21 Mar 2024 11:24:52 -0500 Subject: [PATCH 26/43] Nevermind --- lace/lace_stats/src/prior_process.rs | 61 ++++++++-------------------- 1 file changed, 17 insertions(+), 44 deletions(-) diff --git a/lace/lace_stats/src/prior_process.rs b/lace/lace_stats/src/prior_process.rs index ff3eada5..15fb1f7c 100644 --- a/lace/lace_stats/src/prior_process.rs +++ b/lace/lace_stats/src/prior_process.rs @@ -100,55 +100,28 @@ impl PriorProcessT for Dirichlet { } fn draw_assignment(&self, n: usize, rng: &mut R) -> Assignment { - // if n == 0 { - // return Assignment::empty(); - // } - // let mut counts = vec![1]; - // let mut ps = vec![1.0, self.alpha]; - // let mut zs = vec![0; n]; - - // for z in zs.iter_mut().take(n).skip(1) { - // let zi = pflip(&ps, 1, rng)[0]; - // *z = zi; - // if zi < counts.len() { - // ps[zi] += 1.0; - // counts[zi] += 1; - // } else { - // ps[zi] = 1.0; - // ps.push(self.alpha); - // counts.push(1); - // }; - // } - // - // Assignment { - // asgn: zs, - // n_cats: counts.len(), - // counts, - // } - let mut n_cats = 0; - let mut weights: Vec = vec![]; - let mut asgn: Vec = Vec::with_capacity(n); - - for _ in 0..n { - weights.push(self.alpha); - let k = pflip(&weights, 1, rng)[0]; - asgn.push(k); + if n == 0 { + return Assignment::empty(); + } + let mut counts = vec![1]; + let mut ps = vec![1.0, self.alpha]; + let mut zs = vec![0; n]; - if k == n_cats { - weights[n_cats] = 1.0; - n_cats += 1; + for z in zs.iter_mut().take(n).skip(1) { + let zi = pflip(&ps, 1, rng)[0]; + *z = zi; + if zi < counts.len() { + ps[zi] += 1.0; + counts[zi] += 1; } else { - weights.truncate(n_cats); - weights[k] += 1.0; - } + ps[zi] = 1.0; + ps.push(self.alpha); + counts.push(1); + }; } - // convert weights to counts, correcting for possible floating point - // errors - let counts: Vec = - weights.iter().map(|w| (w + 0.5) as usize).collect(); Assignment { - asgn, + asgn: zs, n_cats: counts.len(), counts, } From 59f3de3e8a3f1d9c91925bf93a1d0488ab8b3ecc Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Fri, 29 Mar 2024 15:00:39 -0500 Subject: [PATCH 27/43] Fix engine.py doctests --- pylace/lace/engine.py | 309 +++++++++++++++++------------------ pylace/tests/example_test.py | 2 +- 2 files changed, 154 insertions(+), 157 deletions(-) diff --git a/pylace/lace/engine.py b/pylace/lace/engine.py index 2cd426ab..d729b218 100644 --- a/pylace/lace/engine.py +++ b/pylace/lace/engine.py @@ -208,7 +208,7 @@ def seed(self, rng_seed: int): │ --- ┆ --- ┆ --- ┆ --- │ │ u32 ┆ u32 ┆ u32 ┆ u32 │ ╞═══════╪══════╪══════════╪═══════╡ - │ 34 ┆ 49 ┆ 20 ┆ 49 │ + │ 34 ┆ 48 ┆ 26 ┆ 35 │ └───────┴──────┴──────────┴───────┘ If we set the seed, we get the same data. @@ -410,7 +410,7 @@ def flatten_columns(self): >>> engine.column_assignment(0) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0] >>> engine.column_assignment(1) - [0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 0, 2, 2, 2, 2, 0] + [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] >>> engine.flatten_columns() >>> engine.column_assignment(0) [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] @@ -470,7 +470,7 @@ def row_assignments(self, state_ix: int): >>> from lace.examples import Animals >>> animals = Animals() >>> animals.row_assignments(0)[1][11] - 3 + 1 """ return self.engine.row_assignments(state_ix) @@ -503,18 +503,18 @@ def feature_params( >>> gauss_params = sats.feature_params("Period_minutes") >>> g = gauss_params[1][0] >>> g - Gaussian(mu=97.38792034245135, sigma=8.864698646528195) + Gaussian(mu=2216.995855497483, sigma=2809.7999447423026) >>> g.mu - 97.38792034245135 + 2216.995855497483 Get categorical weights from the Satellites dataset >>> cat_params = sats.feature_params("Class_of_Orbit", state_ixs=[2]) >>> c = cat_params[2][0] >>> c - Categorical_4(weights=[0.7196355242414928, ..., 0.12915471912497747]) + Categorical_4(weights=[0.23464953242044007, ..., 0.04544555912284563]) >>> c.weights # doctest: +ELLIPSIS - [0.7196355242414928, ..., 0.12915471912497747] + [0.23464953242044007, ..., 0.04544555912284563] You can also select columns by integer index @@ -522,7 +522,7 @@ def feature_params( 'Class_of_Orbit' >>> params = sats.feature_params(3) >>> params[0][1] - Categorical_4(weights=[0.0016550494108113051, ..., 0.000028906241993218738]) + Categorical_4(weights=[0.0010264756471345055, ..., 0.9963828657821785]) """ if state_ixs is None: @@ -571,17 +571,16 @@ def diagnostics(self, name: str = "score"): │ --- ┆ --- ┆ --- ┆ --- │ │ f64 ┆ f64 ┆ f64 ┆ f64 │ ╞══════════════╪══════════════╪══════════════╪══════════════╡ - │ -2882.424453 ┆ -2809.0876 ┆ -2638.714156 ┆ -2604.137622 │ - │ -2695.299327 ┆ -2666.497867 ┆ -2608.185358 ┆ -2576.545684 │ - │ -2642.539971 ┆ -2532.638368 ┆ -2576.463401 ┆ -2568.516617 │ - │ -2488.369418 ┆ -2513.134161 ┆ -2549.299382 ┆ -2554.131179 │ + │ -2533.503142 ┆ -2531.11451 ┆ -2488.379725 ┆ -2527.653495 │ + │ -2510.144546 ┆ -2519.318755 ┆ -2449.46579 ┆ -2529.866394 │ + │ -2494.957427 ┆ -2527.118066 ┆ -2417.423267 ┆ -2518.054613 │ + │ -2517.055318 ┆ -2534.235993 ┆ -2413.22879 ┆ -2523.029661 │ │ … ┆ … ┆ … ┆ … │ - │ -1972.005746 ┆ -2122.788121 ┆ -1965.921104 ┆ -1969.328651 │ - │ -1966.516529 ┆ -2117.398333 ┆ -1993.351756 ┆ -1986.589833 │ - │ -1969.400394 ┆ -2147.941128 ┆ -1968.697139 ┆ -1988.805311 │ - │ -1920.217666 ┆ -2081.368421 ┆ -1909.655836 ┆ -1920.432849 │ + │ -1763.593686 ┆ -1601.3273 ┆ -1873.277623 ┆ -1767.766707 │ + │ -1724.87438 ┆ -1648.269934 ┆ -1906.093392 ┆ -1809.921707 │ + │ -1776.739292 ┆ -1670.216919 ┆ -1898.314835 ┆ -1756.702674 │ + │ -1733.91896 ┆ -1665.882412 ┆ -1900.749398 ┆ -1750.687124 │ └──────────────┴──────────────┴──────────────┴──────────────┘ - """ diag = self.engine.diagnostics() @@ -627,11 +626,11 @@ def edit_cell(self, row: Union[str, int], col: Union[str, int], value): │ --- ┆ --- ┆ --- │ │ str ┆ u8 ┆ f64 │ ╞════════════╪════════╪═══════════╡ - │ pig ┆ 1 ┆ 1.565845 │ - │ rhinoceros ┆ 1 ┆ 1.094639 │ - │ buffalo ┆ 1 ┆ 1.094639 │ - │ chihuahua ┆ 1 ┆ 0.802085 │ - │ chimpanzee ┆ 1 ┆ 0.723817 │ + │ pig ┆ 1 ┆ 1.574539 │ + │ buffalo ┆ 1 ┆ 1.240631 │ + │ rhinoceros ┆ 1 ┆ 1.076105 │ + │ collie ┆ 0 ┆ 0.72471 │ + │ chimpanzee ┆ 1 ┆ 0.697159 │ └────────────┴────────┴───────────┘ >>> # change pig to not fierce >>> animals.edit_cell('pig', 'fierce', 0) @@ -644,11 +643,11 @@ def edit_cell(self, row: Union[str, int], col: Union[str, int], value): │ --- ┆ --- ┆ --- │ │ str ┆ u8 ┆ f64 │ ╞════════════╪════════╪═══════════╡ - │ rhinoceros ┆ 1 ┆ 1.094639 │ - │ buffalo ┆ 1 ┆ 1.094639 │ - │ chihuahua ┆ 1 ┆ 0.802085 │ - │ chimpanzee ┆ 1 ┆ 0.723817 │ - │ dalmatian ┆ 0 ┆ 0.594919 │ + │ buffalo ┆ 1 ┆ 1.240631 │ + │ rhinoceros ┆ 1 ┆ 1.076105 │ + │ collie ┆ 0 ┆ 0.72471 │ + │ chimpanzee ┆ 1 ┆ 0.697159 │ + │ chihuahua ┆ 1 ┆ 0.614058 │ └────────────┴────────┴───────────┘ Set a value to missing @@ -662,7 +661,7 @@ def edit_cell(self, row: Union[str, int], col: Union[str, int], value): │ --- ┆ --- ┆ --- │ │ str ┆ u8 ┆ f64 │ ╞═══════╪════════╪═════════════╡ - │ pig ┆ 0 ┆ 0.07593 │ + │ pig ┆ 0 ┆ 0.094179 │ └───────┴────────┴─────────────┘ """ @@ -1088,14 +1087,14 @@ def entropy(self, cols, n_mc_samples: int = 1000): >>> from lace.examples import Animals >>> animals = Animals() >>> animals.entropy(["slow"]) - 0.6755931727528786 + 0.6812321322736966 >>> animals.entropy(["water"]) - 0.49836129824622094 + 0.46626932307630625 Joint entropy >>> animals.entropy(["swims", "fast"]) - 0.9552642751735604 + 0.9367950081783651 We can use entropies to compute mutual information, I(X, Y) = H(X) + H(Y) - H(X, Y). @@ -1108,7 +1107,7 @@ def entropy(self, cols, n_mc_samples: int = 1000): >>> h_fast = animals.entropy(["fast"]) >>> h_swims_and_fast = animals.entropy(["swims", "fast"]) >>> h_swims + h_fast - h_swims_and_fast - 3.510013543328583e-05 + 7.03684751313105e-06 But swimming and having flippers are mutually predictive, so we should see more mutual information. @@ -1116,7 +1115,7 @@ def entropy(self, cols, n_mc_samples: int = 1000): >>> h_flippers = animals.entropy(["flippers"]) >>> h_swims_and_flippers = animals.entropy(["swims", "flippers"]) >>> h_swims + h_flippers - h_swims_and_flippers - 0.19361180218629537 + 0.18686797893023643 """ return self.engine.entropy(cols, n_mc_samples) @@ -1178,9 +1177,9 @@ def logp( shape: (3,) Series: 'logp' [f64] [ - 0.523575 - 0.06601 - 0.380453 + 0.515602 + 0.06607 + 0.38637 ] Conditioning using ``given`` @@ -1192,9 +1191,9 @@ def logp( shape: (3,) Series: 'logp' [f64] [ - 0.000349 - 0.000756 - 0.998017 + 0.000975 + 0.018733 + 0.972718 ] Ask about the likelihood of values belonging to multiple features @@ -1209,9 +1208,9 @@ def logp( shape: (3,) Series: 'logp' [f64] [ - 0.000306 - 0.000008 - 0.016546 + 0.000353 + 0.000006 + 0.015253 ] An example of the scaled variant: @@ -1223,9 +1222,9 @@ def logp( shape: (3,) Series: 'logp_scaled' [f64] [ - 0.137554 - 0.167357 - 0.577699 + 0.260898 + 0.133143 + 0.592816 ] For columns which we explicitly model missing-not-at-random data, we can @@ -1234,13 +1233,13 @@ def logp( >>> from math import exp >>> no_long_geo = pl.Series("longitude_radians_of_geo", [None]) >>> exp(engine.logp(no_long_geo)) - 0.631030460838865 + 0.626977387513902 The probability of a value missing (not-at-random) changes depending on the conditions. >>> exp(engine.logp(no_long_geo, given={"Class_of_Orbit": "GEO"})) - 0.048855132811982976 + 0.07779133514786091 And we can condition on missingness @@ -1251,9 +1250,9 @@ def logp( shape: (3,) Series: 'logp' [f64] [ - 0.827158 - 0.099435 - 0.029606 + 0.818785 + 0.090779 + 0.04799 ] Plot the marginal distribution of `Period_minutes` for each state @@ -1325,15 +1324,15 @@ def inconsistency(self, values, given=None): │ --- ┆ --- │ │ str ┆ f64 │ ╞════════════════╪═══════════════╡ - │ collie ┆ 0.816517 │ - │ beaver ┆ 0.809991 │ - │ rabbit ┆ 0.785911 │ - │ polar+bear ┆ 0.783775 │ + │ beaver ┆ 0.830524 │ + │ collie ┆ 0.826842 │ + │ rabbit ┆ 0.80862 │ + │ skunk ┆ 0.801401 │ │ … ┆ … │ - │ killer+whale ┆ 0.513013 │ - │ blue+whale ┆ 0.503965 │ - │ dolphin ┆ 0.480259 │ - │ humpback+whale ┆ 0.434979 │ + │ walrus ┆ 0.535375 │ + │ blue+whale ┆ 0.48628 │ + │ killer+whale ┆ 0.466145 │ + │ humpback+whale ┆ 0.433302 │ └────────────────┴───────────────┘ Find satellites with inconsistent orbital periods @@ -1371,15 +1370,15 @@ def inconsistency(self, values, given=None): │ --- ┆ --- ┆ --- │ │ str ┆ f64 ┆ f64 │ ╞═══════════════════════════════════╪═══════════════╪════════════════╡ - │ Intelsat 903 ┆ 1.973348 ┆ 1436.16 │ - │ TianLian 2 (TL-1-02, CTDRS) ┆ 1.3645 ┆ 1436.1 │ - │ QZS-1 (Quazi-Zenith Satellite Sy… ┆ 1.364247 ┆ 1436.0 │ - │ Compass G-8 (Beidou IGSO-3) ┆ 1.364093 ┆ 1435.93 │ + │ Intelsat 903 ┆ 1.767642 ┆ 1436.16 │ + │ Mercury 2 (Advanced Vortex 2, US… ┆ 1.649006 ┆ 1436.12 │ + │ INSAT 4CR (Indian National Satel… ┆ 1.648992 ┆ 1436.11 │ + │ QZS-1 (Quazi-Zenith Satellite Sy… ┆ 1.64879 ┆ 1436.0 │ │ … ┆ … ┆ … │ - │ Navstar GPS II-24 (Navstar SVN 3… ┆ 0.646141 ┆ 716.69 │ - │ Navstar GPS IIR-10 (Navstar SVN … ┆ 0.646027 ┆ 716.47 │ - │ Navstar GPS IIR-M-6 (Navstar SVN… ┆ 0.645991 ┆ 716.4 │ - │ BSAT-3B ┆ 0.625282 ┆ 1365.61 │ + │ Glonass 723 (Glonass 37-3, Cosmo… ┆ 0.646552 ┆ 680.75 │ + │ Glonass 721 (Glonass 37-1, Cosmo… ┆ 0.646474 ┆ 680.91 │ + │ Glonass 730 (Glonass 41-1, Cosmo… ┆ 0.646183 ┆ 681.53 │ + │ Wind (International Solar-Terres… ┆ 0.526911 ┆ 19700.45 │ └───────────────────────────────────┴───────────────┴────────────────┘ It looks like Intelsat 903 is the most inconsistent by a good amount. @@ -1476,14 +1475,13 @@ def surprisal( │ --- ┆ --- ┆ --- │ │ str ┆ f64 ┆ f64 │ ╞═══════════════════════════════════╪═══════════════════╪═══════════╡ - │ International Space Station (ISS… ┆ 30.0 ┆ 7.02499 │ - │ Landsat 7 ┆ 15.0 ┆ 4.869031 │ - │ Milstar DFS-5 (USA 164, Milstar … ┆ 0.0 ┆ 4.74869 │ - │ Optus B3 ┆ 0.5 ┆ 4.653549 │ - │ SDS III-3 (Satellite Data System… ┆ 0.5 ┆ 4.558333 │ + │ International Space Station (ISS… ┆ 30.0 ┆ 11.423102 │ + │ Milstar DFS-5 (USA 164, Milstar … ┆ 0.0 ┆ 6.661427 │ + │ DSP 21 (USA 159) (Defense Suppor… ┆ 0.5 ┆ 6.366436 │ + │ DSP 22 (USA 176) (Defense Suppor… ┆ 0.5 ┆ 6.366436 │ + │ Intelsat 701 ┆ 0.5 ┆ 6.366436 │ └───────────────────────────────────┴───────────────────┴───────────┘ - Compute the surprisal for specific cells >>> engine.surprisal( @@ -1495,8 +1493,8 @@ def surprisal( │ --- ┆ --- ┆ --- │ │ str ┆ f64 ┆ f64 │ ╞══════════════╪═══════════════════╪═══════════╡ - │ Landsat 7 ┆ 15.0 ┆ 4.869031 │ - │ Intelsat 701 ┆ 0.5 ┆ 4.533067 │ + │ Landsat 7 ┆ 15.0 ┆ 4.588265 │ + │ Intelsat 701 ┆ 0.5 ┆ 6.366436 │ └──────────────┴───────────────────┴───────────┘ Compute the surprisal of specific values in specific cells @@ -1512,8 +1510,8 @@ def surprisal( │ --- ┆ --- ┆ --- │ │ str ┆ f64 ┆ f64 │ ╞══════════════╪═══════════════════╪═══════════╡ - │ Landsat 7 ┆ 10.0 ┆ 3.037384 │ - │ Intelsat 701 ┆ 10.0 ┆ 2.559729 │ + │ Landsat 7 ┆ 10.0 ┆ 2.984587 │ + │ Intelsat 701 ┆ 10.0 ┆ 2.52041 │ └──────────────┴───────────────────┴───────────┘ Compute the surprisal of multiple values in a single cell @@ -1526,10 +1524,10 @@ def surprisal( shape: (4,) Series: 'surprisal' [f64] [ - 3.126282 - 2.938583 - 2.24969 - 3.037384 + 3.225658 + 3.036696 + 2.273096 + 2.984587 ] Surprisal will be different under different_states @@ -1546,8 +1544,8 @@ def surprisal( │ --- ┆ --- ┆ --- │ │ str ┆ f64 ┆ f64 │ ╞══════════════╪═══════════════════╪═══════════╡ - │ Landsat 7 ┆ 10.0 ┆ 2.743636 │ - │ Intelsat 701 ┆ 10.0 ┆ 2.587096 │ + │ Landsat 7 ┆ 10.0 ┆ 3.431414 │ + │ Intelsat 701 ┆ 10.0 ┆ 2.609992 │ └──────────────┴───────────────────┴───────────┘ """ @@ -1596,11 +1594,11 @@ def simulate( │ --- ┆ --- │ │ str ┆ f64 │ ╞════════════════╪════════════════╡ - │ MEO ┆ 2807.568333 │ - │ GEO ┆ 1421.333515 │ - │ LEO ┆ 92.435621 │ - │ GEO ┆ 1435.7067 │ - │ LEO ┆ 84.896787 │ + │ LEO ┆ 140.214617 │ + │ MEO ┆ 707.76105 │ + │ MEO ┆ 649.888366 │ + │ LEO ┆ 109.460389 │ + │ GEO ┆ 1309.460359 │ └────────────────┴────────────────┘ Simulate a pair of columns conditioned on another @@ -1616,11 +1614,11 @@ def simulate( │ --- ┆ --- │ │ str ┆ f64 │ ╞════════════════╪════════════════╡ - │ GEO ┆ 1439.041087 │ - │ GEO ┆ 1426.020318 │ - │ GEO ┆ 1430.553113 │ - │ GEO ┆ 1451.192889 │ - │ GEO ┆ 1431.855712 │ + │ LEO ┆ 97.079974 │ + │ GEO ┆ -45.703234 │ + │ LEO ┆ 114.135217 │ + │ LEO ┆ 103.676199 │ + │ GEO ┆ 1434.897091 │ └────────────────┴────────────────┘ Simulate missing values for columns that are missing not-at-random @@ -1632,11 +1630,11 @@ def simulate( │ --- │ │ f64 │ ╞══════════════════════════╡ + │ -2.719645 │ + │ -0.154891 │ │ null │ │ null │ - │ null │ - │ null │ - │ null │ + │ 0.712423 │ └──────────────────────────┘ >>> engine.simulate( ... ["longitude_radians_of_geo"], @@ -1649,11 +1647,11 @@ def simulate( │ --- │ │ f64 │ ╞══════════════════════════╡ - │ 0.396442 │ - │ 0.794023 │ - │ 0.643669 │ - │ -0.005531 │ - │ 1.827976 │ + │ 0.850506 │ + │ 0.666353 │ + │ 0.682146 │ + │ 0.221179 │ + │ 2.621126 │ └──────────────────────────┘ If we simulate using ``given`` conditions, we can include the @@ -1671,11 +1669,11 @@ def simulate( │ --- ┆ --- ┆ --- │ │ f64 ┆ str ┆ str │ ╞════════════════╪════════════════╪════════════════╡ - │ 1436.038447 ┆ Communications ┆ GEO │ - │ 1447.908161 ┆ Communications ┆ GEO │ - │ 1452.635331 ┆ Communications ┆ GEO │ - │ 1443.983013 ┆ Communications ┆ GEO │ - │ 1437.544045 ┆ Communications ┆ GEO │ + │ 1426.679095 ┆ Communications ┆ GEO │ + │ 54.08657 ┆ Communications ┆ GEO │ + │ 1433.563215 ┆ Communications ┆ GEO │ + │ 1436.388876 ┆ Communications ┆ GEO │ + │ 1434.298969 ┆ Communications ┆ GEO │ └────────────────┴────────────────┴────────────────┘ """ @@ -1719,13 +1717,12 @@ def draw(self, row: Union[int, str], col: Union[int, str], n: int = 1): shape: (5,) Series: 'Period_minutes' [f64] [ - 110.076567 - 108.096406 - 102.34334 - 90.175641 - 94.512276 + 125.0209 + 173.739372 + 103.887763 + 115.319662 + 98.08124 ] - """ srs = self.engine.draw(row, col, n) return utils.return_srs(srs) @@ -1771,18 +1768,18 @@ def predict( >>> from lace.examples import Animals >>> animals = Animals() >>> animals.predict("swims") - (0, 0.04384630488890182) + (0, 0.03782005724890601) Predict whether an animal swims given that it has flippers >>> animals.predict("swims", given={"flippers": 1}) - (1, 0.09588592928237495) + (1, 0.08920133574559677) Let's confuse lace and see what happens to its uncertainty. Let's predict whether an non-water animal with flippers swims >>> animals.predict("swims", given={"flippers": 1, "water": 0}) - (0, 0.36077426258767503) + (0, 0.23777388425463844) If you want to save time and you do not care about quantifying your epistemic uncertainty, you don't have to compute uncertainty. @@ -1828,19 +1825,19 @@ def variability( >>> from lace.examples import Satellites >>> sats = Satellites() >>> sats.variability("Period_minutes") - 691324.3941953736 + 709857.0508301815 Compute the variance of Period_minutes for geosynchronous satellite >>> sats.variability("Period_minutes", given={"Class_of_Orbit": "GEO"}) - 136818.61181890886 + 148682.45531411088 Compute the entropy of Class_of_orbit >>> sats.variability("Class_of_Orbit") - 0.9362550555890782 + 0.9571321355529944 >>> sats.variability("Class_of_Orbit", given={"Period_minutes": 1440.0}) - 0.01569677151657056 + 0.1455965989424529 """ return self.engine.variability(target, given, state_ixs) @@ -1909,15 +1906,15 @@ def impute( │ --- ┆ --- ┆ --- │ │ str ┆ str ┆ f64 │ ╞═══════════════════════════════════╪═════════════════╪═════════════╡ - │ AAUSat-3 ┆ Sun-Synchronous ┆ 0.186415 │ - │ ABS-1 (LMI-1, Lockheed Martin-In… ┆ Sun-Synchronous ┆ 0.360331 │ - │ ABS-1A (Koreasat 2, Mugunghwa 2,… ┆ Sun-Synchronous ┆ 0.425853 │ - │ ABS-2i (MBSat, Mobile Broadcasti… ┆ Sun-Synchronous ┆ 0.360331 │ + │ AAUSat-3 ┆ Sun-Synchronous ┆ 0.190897 │ + │ ABS-1 (LMI-1, Lockheed Martin-In… ┆ Sun-Synchronous ┆ 0.422782 │ + │ ABS-1A (Koreasat 2, Mugunghwa 2,… ┆ Sun-Synchronous ┆ 0.422782 │ + │ ABS-2i (MBSat, Mobile Broadcasti… ┆ Sun-Synchronous ┆ 0.422782 │ │ … ┆ … ┆ … │ - │ Zhongxing 20A ┆ Sun-Synchronous ┆ 0.360331 │ - │ Zhongxing 22A (Chinastar 22A) ┆ Sun-Synchronous ┆ 0.404823 │ - │ Zhongxing 2A (Chinasat 2A) ┆ Sun-Synchronous ┆ 0.360331 │ - │ Zhongxing 9 (Chinasat 9, Chinast… ┆ Sun-Synchronous ┆ 0.360331 │ + │ Zhongxing 20A ┆ Sun-Synchronous ┆ 0.422782 │ + │ Zhongxing 22A (Chinastar 22A) ┆ Sun-Synchronous ┆ 0.422782 │ + │ Zhongxing 2A (Chinasat 2A) ┆ Sun-Synchronous ┆ 0.422782 │ + │ Zhongxing 9 (Chinasat 9, Chinast… ┆ Sun-Synchronous ┆ 0.422782 │ └───────────────────────────────────┴─────────────────┴─────────────┘ Impute a defined set of rows @@ -1929,8 +1926,8 @@ def impute( │ --- ┆ --- ┆ --- │ │ str ┆ str ┆ f64 │ ╞═══════════════╪════════════════════════╪═════════════╡ - │ AAUSat-3 ┆ Technology Development ┆ 0.238355 │ - │ Zhongxing 20A ┆ Communications ┆ 0.129248 │ + │ AAUSat-3 ┆ Technology Development ┆ 0.236857 │ + │ Zhongxing 20A ┆ Communications ┆ 0.142772 │ └───────────────┴────────────────────────┴─────────────┘ Uncertainty is optional @@ -2088,12 +2085,12 @@ def mi( >>> from lace.examples import Animals >>> engine = Animals() >>> engine.mi([("swims", "flippers")]) - 0.27197816458827445 + 0.2785114781561444 You can select different normalizations of mutual information >>> engine.mi([("swims", "flippers")], mi_type="unnormed") - 0.19361180218629537 + 0.18686797893023643 Multiple pairs as inputs gets you a polars ``Series`` @@ -2106,8 +2103,8 @@ def mi( shape: (2,) Series: 'mi' [f64] [ - 0.271978 - 0.005378 + 0.278511 + 0.012031 ] """ @@ -2163,25 +2160,25 @@ def rowsim( >>> from lace.examples import Animals >>> animals = Animals() >>> animals.rowsim([("beaver", "polar+bear")]) - 0.6059523809523808 + 0.5305059523809523 What about if we weight similarity by columns and not the standard views? >>> animals.rowsim([("beaver", "polar+bear")], col_weighted=True) - 0.5698529411764706 + 0.5095588235294117 Not much change. How similar are they with respect to how we model their swimming? >>> animals.rowsim([("beaver", "polar+bear")], wrt=["swims"]) - 0.875 + 1.0 Very similar. But will all animals that swim be highly similar with respect to their swimming? >>> animals.rowsim([("otter", "polar+bear")], wrt=["swims"]) - 0.375 + 0.3125 Lace predicts an otter's swimming for different reasons than a polar bear's. @@ -2199,8 +2196,8 @@ def rowsim( shape: (2,) Series: 'rowsim' [f64] [ - 0.629315 - 0.772545 + 0.712798 + 0.841518 ] """ @@ -2243,13 +2240,13 @@ def pairwise_fn(self, fn_name, indices: Optional[list] = None, **kwargs): │ str ┆ str ┆ f64 │ ╞═══════╪═══════╪══════════╡ │ wolf ┆ wolf ┆ 1.0 │ - │ wolf ┆ rat ┆ 0.71689 │ - │ wolf ┆ otter ┆ 0.492262 │ - │ rat ┆ wolf ┆ 0.71689 │ + │ wolf ┆ rat ┆ 0.801339 │ + │ wolf ┆ otter ┆ 0.422619 │ + │ rat ┆ wolf ┆ 0.801339 │ │ rat ┆ rat ┆ 1.0 │ - │ rat ┆ otter ┆ 0.613095 │ - │ otter ┆ wolf ┆ 0.492262 │ - │ otter ┆ rat ┆ 0.613095 │ + │ rat ┆ otter ┆ 0.572173 │ + │ otter ┆ wolf ┆ 0.422619 │ + │ otter ┆ rat ┆ 0.572173 │ │ otter ┆ otter ┆ 1.0 │ └───────┴───────┴──────────┘ @@ -2267,13 +2264,13 @@ def pairwise_fn(self, fn_name, indices: Optional[list] = None, **kwargs): │ str ┆ str ┆ f64 │ ╞═══════╪═══════╪══════════╡ │ wolf ┆ wolf ┆ 1.0 │ - │ wolf ┆ rat ┆ 0.642647 │ - │ wolf ┆ otter ┆ 0.302206 │ - │ rat ┆ wolf ┆ 0.642647 │ + │ wolf ┆ rat ┆ 0.804412 │ + │ wolf ┆ otter ┆ 0.323529 │ + │ rat ┆ wolf ┆ 0.804412 │ │ rat ┆ rat ┆ 1.0 │ - │ rat ┆ otter ┆ 0.491176 │ - │ otter ┆ wolf ┆ 0.302206 │ - │ otter ┆ rat ┆ 0.491176 │ + │ rat ┆ otter ┆ 0.469853 │ + │ otter ┆ wolf ┆ 0.323529 │ + │ otter ┆ rat ┆ 0.469853 │ │ otter ┆ otter ┆ 1.0 │ └───────┴───────┴──────────┘ @@ -2288,13 +2285,13 @@ def pairwise_fn(self, fn_name, indices: Optional[list] = None, **kwargs): │ str ┆ str ┆ f64 │ ╞══════════╪══════════════╪══════════╡ │ antelope ┆ antelope ┆ 1.0 │ - │ antelope ┆ grizzly+bear ┆ 0.464137 │ - │ antelope ┆ killer+whale ┆ 0.479613 │ - │ antelope ┆ beaver ┆ 0.438467 │ + │ antelope ┆ grizzly+bear ┆ 0.457589 │ + │ antelope ┆ killer+whale ┆ 0.469494 │ + │ antelope ┆ beaver ┆ 0.332589 │ │ … ┆ … ┆ … │ - │ dolphin ┆ walrus ┆ 0.724702 │ - │ dolphin ┆ raccoon ┆ 0.340923 │ - │ dolphin ┆ cow ┆ 0.482887 │ + │ dolphin ┆ walrus ┆ 0.799851 │ + │ dolphin ┆ raccoon ┆ 0.236607 │ + │ dolphin ┆ cow ┆ 0.441964 │ │ dolphin ┆ dolphin ┆ 1.0 │ └──────────┴──────────────┴──────────┘ diff --git a/pylace/tests/example_test.py b/pylace/tests/example_test.py index 8a87c765..a11765d9 100644 --- a/pylace/tests/example_test.py +++ b/pylace/tests/example_test.py @@ -13,4 +13,4 @@ def test_animals(): assert engine.shape == (50, 85) swim_cat, swim_unc = engine.predict("swims") assert swim_cat == 0 - assert_almost_equal(swim_unc, 0.04384630, 6) + assert_almost_equal(swim_unc, 0.03782005724890601, 6) From 82d1d6a9819143399cd45bc9c5cb125287f54a02 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Fri, 29 Mar 2024 15:16:57 -0500 Subject: [PATCH 28/43] Get doctests to pass --- pylace/lace/analysis.py | 150 ++++++++++++++++++++-------------------- 1 file changed, 75 insertions(+), 75 deletions(-) diff --git a/pylace/lace/analysis.py b/pylace/lace/analysis.py index a07d6858..68ee352c 100644 --- a/pylace/lace/analysis.py +++ b/pylace/lace/analysis.py @@ -268,15 +268,15 @@ def held_out_neglogp( │ --- ┆ --- ┆ --- │ │ list[str] ┆ f64 ┆ i64 │ ╞═════════════════════════╪═════════════════════╪═══════════╡ - │ null ┆ 7.808063 ┆ 0 │ - │ ["Apogee_km"] ┆ 5.082683 ┆ 1 │ - │ ["Eccentricity"] ┆ 2.931816 ┆ 2 │ - │ ["Launch_Vehicle"] ┆ 2.931816 ┆ 3 │ + │ null ┆ 7.115493 ┆ 0 │ + │ ["Apogee_km"] ┆ 4.484848 ┆ 1 │ + │ ["Eccentricity"] ┆ 3.022424 ┆ 2 │ + │ ["Date_of_Launch"] ┆ 3.022424 ┆ 3 │ │ … ┆ … ┆ … │ - │ ["Power_watts"] ┆ 2.932103 ┆ 15 │ - │ ["Inclination_radians"] ┆ 2.933732 ┆ 16 │ - │ ["Users"] ┆ 2.940667 ┆ 17 │ - │ ["Perigee_km"] ┆ 3.956759 ┆ 18 │ + │ ["Launch_Site"] ┆ 3.022426 ┆ 15 │ + │ ["Power_watts"] ┆ 3.022582 ┆ 16 │ + │ ["Inclination_radians"] ┆ 3.024748 ┆ 17 │ + │ ["Perigee_km"] ┆ 4.025416 ┆ 18 │ └─────────────────────────┴─────────────────────┴───────────┘ If we don't want to use the greedy search, we can enumerate, but we need to @@ -297,15 +297,15 @@ def held_out_neglogp( │ --- ┆ --- ┆ --- │ │ list[str] ┆ f64 ┆ i64 │ ╞═══════════════════════════════════╪═════════════════════╪═══════════╡ - │ null ┆ 7.853468 ┆ 0 │ - │ ["Apogee_km"] ┆ 5.106627 ┆ 1 │ - │ ["Apogee_km", "Eccentricity"] ┆ 2.951662 ┆ 2 │ - │ ["Apogee_km", "Country_of_Operat… ┆ 2.951254 ┆ 3 │ - │ ["Apogee_km", "Country_of_Operat… ┆ 2.952801 ┆ 4 │ - │ ["Apogee_km", "Country_of_Contra… ┆ 2.956224 ┆ 5 │ - │ ["Apogee_km", "Country_of_Contra… ┆ 2.96479 ┆ 6 │ - │ ["Apogee_km", "Country_of_Contra… ┆ 2.992173 ┆ 7 │ - │ ["Apogee_km", "Class_of_Orbit", … ┆ 3.956759 ┆ 8 │ + │ null ┆ 7.187543 ┆ 0 │ + │ ["Apogee_km"] ┆ 4.502691 ┆ 1 │ + │ ["Apogee_km", "Eccentricity"] ┆ 3.033792 ┆ 2 │ + │ ["Apogee_km", "Country_of_Operat… ┆ 3.033296 ┆ 3 │ + │ ["Apogee_km", "Country_of_Contra… ┆ 3.035064 ┆ 4 │ + │ ["Apogee_km", "Country_of_Contra… ┆ 3.037117 ┆ 5 │ + │ ["Apogee_km", "Country_of_Contra… ┆ 3.046293 ┆ 6 │ + │ ["Apogee_km", "Country_of_Contra… ┆ 3.076149 ┆ 7 │ + │ ["Apogee_km", "Class_of_Orbit", … ┆ 4.025416 ┆ 8 │ └───────────────────────────────────┴─────────────────────┴───────────┘ """ @@ -382,14 +382,14 @@ def held_out_inconsistency( │ --- ┆ --- ┆ --- │ │ list[str] ┆ f64 ┆ i64 │ ╞═════════════════════════╪═══════════════════════════╪═══════════╡ - │ null ┆ 1.973348 ┆ 0 │ - │ ["Apogee_km"] ┆ 1.284557 ┆ 1 │ - │ ["Eccentricity"] ┆ 0.740964 ┆ 2 │ - │ ["Launch_Vehicle"] ┆ 0.740964 ┆ 3 │ + │ null ┆ 1.767642 ┆ 0 │ + │ ["Apogee_km"] ┆ 1.114133 ┆ 1 │ + │ ["Eccentricity"] ┆ 0.750835 ┆ 2 │ + │ ["Date_of_Launch"] ┆ 0.750835 ┆ 3 │ │ … ┆ … ┆ … │ - │ ["Power_watts"] ┆ 0.741036 ┆ 15 │ - │ ["Inclination_radians"] ┆ 0.741448 ┆ 16 │ - │ ["Users"] ┆ 0.743201 ┆ 17 │ + │ ["Launch_Site"] ┆ 0.750836 ┆ 15 │ + │ ["Power_watts"] ┆ 0.750874 ┆ 16 │ + │ ["Inclination_radians"] ┆ 0.751413 ┆ 17 │ │ ["Perigee_km"] ┆ 1.0 ┆ 18 │ └─────────────────────────┴───────────────────────────┴───────────┘ @@ -411,14 +411,14 @@ def held_out_inconsistency( │ --- ┆ --- ┆ --- │ │ list[str] ┆ f64 ┆ i64 │ ╞═══════════════════════════════════╪═══════════════════════════╪═══════════╡ - │ null ┆ 1.984823 ┆ 0 │ - │ ["Apogee_km"] ┆ 1.290609 ┆ 1 │ - │ ["Apogee_km", "Eccentricity"] ┆ 0.74598 ┆ 2 │ - │ ["Apogee_km", "Country_of_Operat… ┆ 0.745877 ┆ 3 │ - │ ["Apogee_km", "Country_of_Operat… ┆ 0.746268 ┆ 4 │ - │ ["Apogee_km", "Country_of_Contra… ┆ 0.747133 ┆ 5 │ - │ ["Apogee_km", "Country_of_Contra… ┆ 0.749297 ┆ 6 │ - │ ["Apogee_km", "Country_of_Contra… ┆ 0.756218 ┆ 7 │ + │ null ┆ 1.785541 ┆ 0 │ + │ ["Apogee_km"] ┆ 1.118565 ┆ 1 │ + │ ["Apogee_km", "Eccentricity"] ┆ 0.753659 ┆ 2 │ + │ ["Apogee_km", "Country_of_Operat… ┆ 0.753536 ┆ 3 │ + │ ["Apogee_km", "Country_of_Contra… ┆ 0.753975 ┆ 4 │ + │ ["Apogee_km", "Country_of_Contra… ┆ 0.754485 ┆ 5 │ + │ ["Apogee_km", "Country_of_Contra… ┆ 0.756765 ┆ 6 │ + │ ["Apogee_km", "Country_of_Contra… ┆ 0.764182 ┆ 7 │ │ ["Apogee_km", "Class_of_Orbit", … ┆ 1.0 ┆ 8 │ └───────────────────────────────────┴───────────────────────────┴───────────┘ @@ -488,21 +488,21 @@ def held_out_uncertainty( ... quiet=True, ... ) # doctest: +NORMALIZE_WHITESPACE shape: (19, 3) - ┌──────────────────────────────────┬─────────────────────────┬───────────┐ - │ feature_rmed ┆ HoldOutFunc.Uncertainty ┆ keys_rmed │ - │ --- ┆ --- ┆ --- │ - │ list[str] ┆ f64 ┆ i64 │ - ╞══════════════════════════════════╪═════════════════════════╪═══════════╡ - │ null ┆ 0.43212 ┆ 0 │ - │ ["Perigee_km"] ┆ 0.43212 ┆ 1 │ - │ ["Class_of_Orbit"] ┆ 0.43212 ┆ 2 │ - │ ["Source_Used_for_Orbital_Data"] ┆ 0.431921 ┆ 3 │ - │ … ┆ … ┆ … │ - │ ["Country_of_Operator"] ┆ 0.054156 ┆ 15 │ - │ ["Country_of_Contractor"] ┆ 0.06069 ┆ 16 │ - │ ["Dry_Mass_kg"] ┆ 0.139502 ┆ 17 │ - │ ["Inclination_radians"] ┆ 0.089026 ┆ 18 │ - └──────────────────────────────────┴─────────────────────────┴───────────┘ + ┌───────────────────────────┬─────────────────────────┬───────────┐ + │ feature_rmed ┆ HoldOutFunc.Uncertainty ┆ keys_rmed │ + │ --- ┆ --- ┆ --- │ + │ list[str] ┆ f64 ┆ i64 │ + ╞═══════════════════════════╪═════════════════════════╪═══════════╡ + │ null ┆ 0.505795 ┆ 0 │ + │ ["Purpose"] ┆ 0.505794 ┆ 1 │ + │ ["Launch_Mass_kg"] ┆ 0.499515 ┆ 2 │ + │ ["Country_of_Contractor"] ┆ 0.497596 ┆ 3 │ + │ … ┆ … ┆ … │ + │ ["Expected_Lifetime"] ┆ 0.252419 ┆ 15 │ + │ ["Launch_Vehicle"] ┆ 0.225609 ┆ 16 │ + │ ["Users"] ┆ 0.19823 ┆ 17 │ + │ ["Country_of_Operator"] ┆ 0.185145 ┆ 18 │ + └───────────────────────────┴─────────────────────────┴───────────┘ If we don't want to use the greedy search, we can enumerate, but we need to be mindful that the number of conditions we must enumerate over is 2^n @@ -522,15 +522,15 @@ def held_out_uncertainty( │ --- ┆ --- ┆ --- │ │ list[str] ┆ f64 ┆ i64 │ ╞═══════════════════════════════════╪═════════════════════════╪═══════════╡ - │ null ┆ 0.445501 ┆ 0 │ - │ ["Expected_Lifetime"] ┆ 0.437647 ┆ 1 │ - │ ["Apogee_km", "Eccentricity"] ┆ 0.05561 ┆ 2 │ - │ ["Apogee_km", "Country_of_Operat… ┆ 0.055283 ┆ 3 │ - │ ["Apogee_km", "Country_of_Operat… ┆ 0.056185 ┆ 4 │ - │ ["Apogee_km", "Country_of_Operat… ┆ 0.057624 ┆ 5 │ - │ ["Apogee_km", "Country_of_Contra… ┆ 0.0595 ┆ 6 │ - │ ["Apogee_km", "Country_of_Contra… ┆ 0.077359 ┆ 7 │ - │ ["Apogee_km", "Class_of_Orbit", … ┆ 0.089026 ┆ 8 │ + │ null ┆ 0.515391 ┆ 0 │ + │ ["Class_of_Orbit"] ┆ 0.484085 ┆ 1 │ + │ ["Apogee_km", "Eccentricity"] ┆ 0.260645 ┆ 2 │ + │ ["Apogee_km", "Class_of_Orbit", … ┆ 0.251961 ┆ 3 │ + │ ["Apogee_km", "Class_of_Orbit", … ┆ 0.247123 ┆ 4 │ + │ ["Apogee_km", "Class_of_Orbit", … ┆ 0.220715 ┆ 5 │ + │ ["Apogee_km", "Class_of_Orbit", … ┆ 0.211055 ┆ 6 │ + │ ["Apogee_km", "Class_of_Orbit", … ┆ 0.1979 ┆ 7 │ + │ ["Apogee_km", "Class_of_Orbit", … ┆ 0.185145 ┆ 8 │ └───────────────────────────────────┴─────────────────────────┴───────────┘ """ @@ -656,7 +656,7 @@ def attributable_inconsistency( ... quiet=True, ... ) # doctest: +NORMALIZE_WHITESPACE >>> frac - 0.2930260843667006 + 0.2702093046733929 """ @@ -730,7 +730,7 @@ def attributable_neglogp( ... quiet=True, ... ) # doctest: +NORMALIZE_WHITESPACE >>> frac - 0.29302608436670047 + 0.2702093046733929 """ @@ -801,7 +801,7 @@ def attributable_uncertainty( ... quiet=True, ... ) # doctest: +NORMALIZE_WHITESPACE >>> frac - 0.1814171785207335 + 0.17905287760659047 """ @@ -950,15 +950,15 @@ def explain_prediction( │ --- ┆ --- │ │ str ┆ f64 │ ╞══════════════════════════════╪═════════════╡ - │ Country_of_Operator ┆ 2.4617e-16 │ - │ Users ┆ -2.1412e-15 │ - │ Purpose ┆ -8.0193e-15 │ - │ Class_of_Orbit ┆ -2.2727e-15 │ + │ Country_of_Operator ┆ 3.9980e-15 │ + │ Users ┆ -3.4701e-13 │ + │ Purpose ┆ -5.3209e-15 │ + │ Class_of_Orbit ┆ -1.8481e-15 │ │ … ┆ … │ - │ Launch_Site ┆ -5.8214e-16 │ - │ Launch_Vehicle ┆ -9.6101e-16 │ - │ Source_Used_for_Orbital_Data ┆ -9.1997e-15 │ - │ Inclination_radians ┆ -1.5407e-15 │ + │ Launch_Site ┆ -4.2856e-13 │ + │ Launch_Vehicle ┆ -8.2878e-14 │ + │ Source_Used_for_Orbital_Data ┆ 1.7684e-14 │ + │ Inclination_radians ┆ -2.6242e-13 │ └──────────────────────────────┴─────────────┘ Get the importances using the 'ablative-dist' method, which measures how @@ -977,15 +977,15 @@ def explain_prediction( │ --- ┆ --- │ │ str ┆ f64 │ ╞══════════════════════════════╪═══════════╡ - │ Country_of_Operator ┆ -0.000109 │ - │ Users ┆ 0.081289 │ - │ Purpose ┆ 0.18938 │ - │ Class_of_Orbit ┆ 0.000119 │ + │ Country_of_Operator ┆ -0.012699 │ + │ Users ┆ 0.003983 │ + │ Purpose ┆ -0.042624 │ + │ Class_of_Orbit ┆ -0.00122 │ │ … ┆ … │ - │ Launch_Site ┆ 0.003411 │ - │ Launch_Vehicle ┆ -0.018817 │ - │ Source_Used_for_Orbital_Data ┆ 0.001454 │ - │ Inclination_radians ┆ 0.057333 │ + │ Launch_Site ┆ -0.011698 │ + │ Launch_Vehicle ┆ -0.09602 │ + │ Source_Used_for_Orbital_Data ┆ -0.027222 │ + │ Inclination_radians ┆ 0.012758 │ └──────────────────────────────┴───────────┘ """ From 612ee9ee8f892d4c3fc56c2ebfc385150288092d Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Fri, 29 Mar 2024 15:28:02 -0500 Subject: [PATCH 29/43] remove lace_cc misc.rs --- lace/lace_cc/src/misc.rs | 86 ---------------------------------------- 1 file changed, 86 deletions(-) delete mode 100644 lace/lace_cc/src/misc.rs diff --git a/lace/lace_cc/src/misc.rs b/lace/lace_cc/src/misc.rs deleted file mode 100644 index c05403d2..00000000 --- a/lace/lace_cc/src/misc.rs +++ /dev/null @@ -1,86 +0,0 @@ -use lace_stats::rv::dist::Beta; -use lace_stats::rv::misc::pflip; -use lace_stats::rv::traits::Rv; -use rand::Rng; -use serde::{Deserialize, Serialize}; - -// #[derive(Debug, Clone, Hash, PartialEq, Eq, Ord, PartialOrd)] -// pub struct CrpDraw { -// pub asgn: Vec, -// pub counts: Vec, -// pub n_cats: usize, -// } - -// /// Draw from Chinese Restaurant Process -// pub fn crp_draw(n: usize, alpha: f64, rng: &mut R) -> CrpDraw { -// let mut n_cats = 0; -// let mut weights: Vec = vec![]; -// let mut asgn: Vec = Vec::with_capacity(n); - -// for _ in 0..n { -// weights.push(alpha); -// let k = pflip(&weights, 1, rng)[0]; -// asgn.push(k); - -// if k == n_cats { -// weights[n_cats] = 1.0; -// n_cats += 1; -// } else { -// weights.truncate(n_cats); -// weights[k] += 1.0; -// } -// } -// // convert weights to counts, correcting for possible floating point -// // errors -// let counts: Vec = -// weights.iter().map(|w| (w + 0.5) as usize).collect(); - -// CrpDraw { -// asgn, -// counts, -// n_cats, -// } -// } - -// #[cfg(test)] -// mod tests { -// use super::*; - -// const TOL: f64 = 1E-12; - -// mod sb_slice { -// use super::*; - -// #[test] -// fn should_return_input_weights_if_alpha_is_zero() { -// let mut rng = rand::thread_rng(); -// let weights_in: Vec = vec![0.8, 0.2, 0.0]; -// let weights_out = -// sb_slice_extend(weights_in.clone(), 1.0, 0.2, &mut rng) -// .unwrap(); -// let good = weights_in -// .iter() -// .zip(weights_out.iter()) -// .all(|(wi, wo)| (wi - wo).abs() < TOL); -// assert!(good); -// } - -// #[test] -// fn should_return_error_for_zero_u_star() { -// let mut rng = rand::thread_rng(); -// let weights_in: Vec = vec![0.8, 0.2]; -// let u_star = 0.0; -// let res = sb_slice_extend(weights_in, 1.0, u_star, &mut rng); -// assert!(res.is_err()); -// } - -// #[test] -// fn smoke() { -// let mut rng = rand::thread_rng(); -// let weights_in: Vec = vec![0.8, 0.2]; -// let u_star = 0.1; -// let res = sb_slice_extend(weights_in, 1.0, u_star, &mut rng); -// assert!(res.is_ok()); -// } -// } -// } From 4bf68cb0a63032c8f0922dba1da08b7aad036a07 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Sat, 30 Mar 2024 08:48:36 -0500 Subject: [PATCH 30/43] Fixing doctests --- lace/lace_stats/src/assignment.rs | 9 ++++++--- lace/src/interface/oracle/traits.rs | 9 +++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lace/lace_stats/src/assignment.rs b/lace/lace_stats/src/assignment.rs index 4807d8b2..01a8e4ab 100644 --- a/lace/lace_stats/src/assignment.rs +++ b/lace/lace_stats/src/assignment.rs @@ -668,17 +668,20 @@ mod tests { #[test] fn manual_seed_control_works() { - let asgn_1 = AssignmentBuilder::new(50) + let n = 100; + let asgn_1 = AssignmentBuilder::new(n) .with_seed(17_834_795) .build() .unwrap() .asgn; - let asgn_2 = AssignmentBuilder::new(50) + + let asgn_2 = AssignmentBuilder::new(n) .with_seed(17_834_795) .build() .unwrap() .asgn; - let asgn_3 = AssignmentBuilder::new(50).build().unwrap().asgn; + + let asgn_3 = AssignmentBuilder::new(n).build().unwrap().asgn; assert_eq!(asgn_1, asgn_2); assert_ne!(asgn_1, asgn_3); } diff --git a/lace/src/interface/oracle/traits.rs b/lace/src/interface/oracle/traits.rs index 898a6b24..6650bff8 100644 --- a/lace/src/interface/oracle/traits.rs +++ b/lace/src/interface/oracle/traits.rs @@ -1817,13 +1817,11 @@ pub trait OracleT: CanOracle { /// # use lace::OracleT; /// # use lace_data::{Datum, Category}; /// # let oracle = Example::Satellites.oracle().unwrap(); - /// let (imp, _) = oracle.impute( + /// let (imp, unc): (Datum, Option) = oracle.impute( /// "X-Sat", /// "longitude_radians_of_geo", /// true, /// ).unwrap(); - /// - /// assert!((imp.to_f64_opt().unwrap() - 0.18514237733859296).abs() < 1e-10); /// ``` fn impute( &self, @@ -1956,7 +1954,7 @@ pub trait OracleT: CanOracle { /// ``` /// /// Note that the uncertainty when the prediction is missing is the - /// uncertainty only off the missing prediction. For example, the + /// uncertainty only of the missing prediction. For example, the /// `longitude_radians_of_geo` value is only present for geosynchronous /// satellites, which have an orbital period of around 1440 minutes. We can /// see the uncertainty drop as we condition on periods farther away from @@ -1969,7 +1967,7 @@ pub trait OracleT: CanOracle { /// let (pred_close, unc_close) = oracle.predict( /// "longitude_radians_of_geo", /// &Given::Conditions(vec![ - /// ("Period_minutes", Datum::Continuous(1200.0)) + /// ("Period_minutes", Datum::Continuous(1400.0)) /// ]), /// true, /// None, @@ -1987,7 +1985,6 @@ pub trait OracleT: CanOracle { /// ).unwrap(); /// /// assert_eq!(pred_far, Datum::Missing); - /// dbg!(&unc_far, &unc_close); /// assert!(unc_far.unwrap() < unc_close.unwrap()); /// ``` fn predict( From 6c7fc015beaa985edbafb899c733d6a5b3fe0b4c Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Sat, 30 Mar 2024 21:10:16 -0500 Subject: [PATCH 31/43] Fixed test in mdbook --- book/src/codebook-ref.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/book/src/codebook-ref.md b/book/src/codebook-ref.md index a5fbad4d..eaf2c8ca 100644 --- a/book/src/codebook-ref.md +++ b/book/src/codebook-ref.md @@ -52,7 +52,7 @@ view_prior_process: !dirichlet or a Pitman-Yor process with a Gamma prior on alpha and a Beta prior on d. -```yaml,deserializeTo=StatePriorProcess +```yaml,deserializeTo=ViewPriorProcess view_prior_process: !pitman_yor alpha_prior: shape: 1.0 From 2f8a4a5d2662a1ed6cd2f98cdb5bba974a9f44bc Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 1 Apr 2024 10:51:32 -0500 Subject: [PATCH 32/43] Add metadata read/convert tests --- .../resources/test/metadata/v0/codebook.yaml | 316 ++++++++++++++++++ .../resources/test/metadata/v0/data.parquet | Bin 0 -> 11902 bytes .../v0/metadata.lace/0.diagnostics.csv | 2 + .../test/metadata/v0/metadata.lace/0.state | Bin 0 -> 10674 bytes .../v0/metadata.lace/1.diagnostics.csv | 2 + .../test/metadata/v0/metadata.lace/1.state | Bin 0 -> 6194 bytes .../v0/metadata.lace/2.diagnostics.csv | 2 + .../test/metadata/v0/metadata.lace/2.state | Bin 0 -> 12274 bytes .../v0/metadata.lace/3.diagnostics.csv | 2 + .../test/metadata/v0/metadata.lace/3.state | Bin 0 -> 6562 bytes .../metadata/v0/metadata.lace/config.yaml | 2 + .../metadata/v0/metadata.lace/lace.codebook | Bin 0 -> 2763 bytes .../test/metadata/v0/metadata.lace/lace.data | Bin 0 -> 8160 bytes .../test/metadata/v0/metadata.lace/rng.yaml | 5 + .../resources/test/metadata/v1/codebook.yaml | 312 +++++++++++++++++ .../v1/metadata.lace/0.diagnostics.csv | 11 + .../test/metadata/v1/metadata.lace/0.state | Bin 0 -> 7147 bytes .../v1/metadata.lace/1.diagnostics.csv | 11 + .../test/metadata/v1/metadata.lace/1.state | Bin 0 -> 7131 bytes .../v1/metadata.lace/2.diagnostics.csv | 11 + .../test/metadata/v1/metadata.lace/2.state | Bin 0 -> 5375 bytes .../v1/metadata.lace/3.diagnostics.csv | 11 + .../test/metadata/v1/metadata.lace/3.state | Bin 0 -> 5799 bytes .../metadata/v1/metadata.lace/config.yaml | 2 + .../metadata/v1/metadata.lace/lace.codebook | Bin 0 -> 2732 bytes .../test/metadata/v1/metadata.lace/lace.data | Bin 0 -> 8160 bytes .../test/metadata/v1/metadata.lace/rng.yaml | 5 + lace/lace_metadata/tests/convert.rs | 21 ++ 28 files changed, 715 insertions(+) create mode 100644 lace/lace_metadata/resources/test/metadata/v0/codebook.yaml create mode 100644 lace/lace_metadata/resources/test/metadata/v0/data.parquet create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/0.diagnostics.csv create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/0.state create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/1.diagnostics.csv create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/1.state create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/2.diagnostics.csv create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/2.state create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/3.diagnostics.csv create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/3.state create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/config.yaml create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/lace.codebook create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/lace.data create mode 100644 lace/lace_metadata/resources/test/metadata/v0/metadata.lace/rng.yaml create mode 100644 lace/lace_metadata/resources/test/metadata/v1/codebook.yaml create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/0.diagnostics.csv create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/0.state create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/1.diagnostics.csv create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/1.state create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/2.diagnostics.csv create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/2.state create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/3.diagnostics.csv create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/3.state create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/config.yaml create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/lace.codebook create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/lace.data create mode 100644 lace/lace_metadata/resources/test/metadata/v1/metadata.lace/rng.yaml create mode 100644 lace/lace_metadata/tests/convert.rs diff --git a/lace/lace_metadata/resources/test/metadata/v0/codebook.yaml b/lace/lace_metadata/resources/test/metadata/v0/codebook.yaml new file mode 100644 index 00000000..95511be3 --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v0/codebook.yaml @@ -0,0 +1,316 @@ +table_name: my_data +state_alpha_prior: + shape: 2.0 + rate: 1.0 +view_alpha_prior: + shape: 1.0 + rate: 2.0 +col_metadata: +- name: cat + coltype: !Categorical + k: 3 + hyper: + pr_alpha: + shape: 1.0 + scale: 1.0 + value_map: !string + 0: blue + 1: green + 2: red + prior: null + notes: null + missing_not_at_random: false +- name: cts + coltype: !Continuous + hyper: + pr_m: + mu: -0.12554951392089267 + sigma: 1.0060712163273107 + pr_k: + shape: 1.0 + rate: 1.0 + pr_v: + shape: 5.298317366548036 + scale: 5.298317366548036 + pr_s2: + shape: 5.298317366548036 + scale: 1.0121792923223145 + prior: null + notes: null + missing_not_at_random: false +- name: count + coltype: !Count + hyper: + pr_shape: + shape: 1.2463818344393327 + rate: 1.0 + pr_rate: + shape: 67.03804379304536 + scale: 1.0 + prior: null + notes: null + missing_not_at_random: false +- name: cat_msng + coltype: !Categorical + k: 3 + hyper: + pr_alpha: + shape: 1.0 + scale: 1.0 + value_map: !string + 0: blue + 1: green + 2: red + prior: null + notes: null + missing_not_at_random: false +- name: cts_msng + coltype: !Continuous + hyper: + pr_m: + mu: -0.1339303540874964 + sigma: 1.018971505873358 + pr_k: + shape: 1.0 + rate: 1.0 + pr_v: + shape: 4.941642422609304 + scale: 4.941642422609304 + pr_s2: + shape: 4.941642422609304 + scale: 1.038302929781819 + prior: null + notes: null + missing_not_at_random: true +- name: count_msng + coltype: !Continuous + hyper: + pr_m: + mu: 87.98571428571428 + sigma: 67.47147394209178 + pr_k: + shape: 1.0 + rate: 1.0 + pr_v: + shape: 4.941642422609304 + scale: 4.941642422609304 + pr_s2: + shape: 4.941642422609304 + scale: 4552.399795918369 + prior: null + notes: null + missing_not_at_random: true +- name: count_msgn + coltype: !Count + hyper: + pr_shape: + shape: 1.148060403429 + rate: 1.0 + pr_rate: + shape: 76.72567926097102 + scale: 1.0 + prior: null + notes: null + missing_not_at_random: true +comments: null +row_names: +- '0' +- '1' +- '2' +- '3' +- '4' +- '5' +- '6' +- '7' +- '8' +- '9' +- '10' +- '11' +- '12' +- '13' +- '14' +- '15' +- '16' +- '17' +- '18' +- '19' +- '20' +- '21' +- '22' +- '23' +- '24' +- '25' +- '26' +- '27' +- '28' +- '29' +- '30' +- '31' +- '32' +- '33' +- '34' +- '35' +- '36' +- '37' +- '38' +- '39' +- '40' +- '41' +- '42' +- '43' +- '44' +- '45' +- '46' +- '47' +- '48' +- '49' +- '50' +- '51' +- '52' +- '53' +- '54' +- '55' +- '56' +- '57' +- '58' +- '59' +- '60' +- '61' +- '62' +- '63' +- '64' +- '65' +- '66' +- '67' +- '68' +- '69' +- '70' +- '71' +- '72' +- '73' +- '74' +- '75' +- '76' +- '77' +- '78' +- '79' +- '80' +- '81' +- '82' +- '83' +- '84' +- '85' +- '86' +- '87' +- '88' +- '89' +- '90' +- '91' +- '92' +- '93' +- '94' +- '95' +- '96' +- '97' +- '98' +- '99' +- '100' +- '101' +- '102' +- '103' +- '104' +- '105' +- '106' +- '107' +- '108' +- '109' +- '110' +- '111' +- '112' +- '113' +- '114' +- '115' +- '116' +- '117' +- '118' +- '119' +- '120' +- '121' +- '122' +- '123' +- '124' +- '125' +- '126' +- '127' +- '128' +- '129' +- '130' +- '131' +- '132' +- '133' +- '134' +- '135' +- '136' +- '137' +- '138' +- '139' +- '140' +- '141' +- '142' +- '143' +- '144' +- '145' +- '146' +- '147' +- '148' +- '149' +- '150' +- '151' +- '152' +- '153' +- '154' +- '155' +- '156' +- '157' +- '158' +- '159' +- '160' +- '161' +- '162' +- '163' +- '164' +- '165' +- '166' +- '167' +- '168' +- '169' +- '170' +- '171' +- '172' +- '173' +- '174' +- '175' +- '176' +- '177' +- '178' +- '179' +- '180' +- '181' +- '182' +- '183' +- '184' +- '185' +- '186' +- '187' +- '188' +- '189' +- '190' +- '191' +- '192' +- '193' +- '194' +- '195' +- '196' +- '197' +- '198' +- '199' diff --git a/lace/lace_metadata/resources/test/metadata/v0/data.parquet b/lace/lace_metadata/resources/test/metadata/v0/data.parquet new file mode 100644 index 0000000000000000000000000000000000000000..1a3767988e6d86bdd6791075907b83694c484836 GIT binary patch literal 11902 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 HpXdJuBKmb~ literal 0 HcmV?d00001 diff --git a/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/0.diagnostics.csv b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/0.diagnostics.csv new file mode 100644 index 00000000..467c5235 --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/0.diagnostics.csv @@ -0,0 +1,2 @@ +loglike,logprior +-10925.41459790704,-248.52943029952922 diff --git a/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/0.state b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/0.state new file mode 100644 index 0000000000000000000000000000000000000000..41a9459e9ef82658195ab6e2b899eaefa4f921a4 GIT binary patch literal 10674 zcmeHN3s6*L6kdEltYkcm!88&_Qb7VsQ^Wrk#Ycg>AtzKq0Y#CgqC9d1AE=m!s30J3 zQVRitLNhK81yoQHR4^gLP(i@mMW_g{UG|>4a2@7?M%v8X8900X|2yY=|99{1IlC~L zBYDWstk|Wm6&o2w+)yeewgvi*)11UdC1lKn8}FZ#QO+aMExZp1P1obty(91C%3Mau zd8V5?9lDUboO*PX&11By=(Kyc*DZ98#0#gMd#_fVk0fcN)+#1qyq~@rrrQ9Q`;GPb zB3$(-VN{}G8AX8P!5UTpRsmK4RsmLlAt?Zj4jLNxk|fZWIGDZ;zARa7q{xmC{eb@l zx&Fip`SKRI^^bRO!)dxcmeHHSaK^K8&7Uf5@D>s;HoWFSoMd-9%eA2%SE{P+w2!yP zqx@>mEm>Uea-XO)m@{Ep^sdpu`Y zVM(k=Z#W1DX!iZ&Q|S{QA}9dDD};OP(EXqRog}M*fVWZ(=mmD&L<;0O2)FX6Ur$C* zGlKkJi@g11(9A&)C2=SIM_gTusC`=Jq`$irQ_*7J)XY*s(rW+!_5P9px1*NX1MD!-$id>7a6>%@y*|Xl^<}CDjS}LZAwmNLT|j@p!TT8akVjHiI{CnQ zc4|T~R@N$ZnHebRBg={+mqZki_Mv7(br8y*av?2Tb{`UGZ@0Ny zeGGMG`5eq}k9e*zit9pccyBq>{vfE}=e7N(4aJ>!yM_Gnh3Uz-MLqnAagH_q5yTN$ zUQrpg3=iaf*Yp@)n>!*gu-p!VroFJ7V0`wv=2-3ziTJh&H`z_&lm63Eyc0g2*W+zO z1Yn(b_h}AW{y_GrIWilThoSi`DylOCZPc`~>%u%U_X2Y)DKF9pL=|5ocn*gF|8l4; z$H~d`DfJsmp7E*4Bb$P|gVp;*`NNI&qVY^|!=0b0{;S$&x^DkhU0yfd zL*+BjbzypcWZEC>ea6K1W$O%dzQOVv2nP)gEKCtFEx@D%`;v1&L*h_VN!M)dy7bmW zRC+w}qDN>mYMWm=Cu~Ln!gu3Tv&JV;lMY=6u@Brp!&?SVxn(JQ;>Zc3H&5*p68ro| zEHQ}_5G7y+J=Fo}dq&x^u+Wvs*{y&#&8bGlghP&A0g`&A*{4+3Du9mFbNez(T_V9Mq+M^n`VY z0}JbbC+lE|%#Z5!4=a&?sIpvSq8;<^p4(n>iq{^K~YfK8qd=YSo q`m+M$sj=9vlx=${&whuc;)aw-c_E#`Q**jE<^?3Q9e-PALf$_CA5WA3 literal 0 HcmV?d00001 diff --git a/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/1.diagnostics.csv b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/1.diagnostics.csv new file mode 100644 index 00000000..a3e36b48 --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/1.diagnostics.csv @@ -0,0 +1,2 @@ +loglike,logprior +-11192.073888273855,-125.03911560348585 diff --git a/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/1.state b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/1.state new file mode 100644 index 0000000000000000000000000000000000000000..259fad551868c28e4c7e9e7c591a17a206d2c6f7 GIT binary patch literal 6194 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 AF#rGn literal 0 HcmV?d00001 diff --git a/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/3.diagnostics.csv b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/3.diagnostics.csv new file mode 100644 index 00000000..2daa298a --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/3.diagnostics.csv @@ -0,0 +1,2 @@ +loglike,logprior +-11498.565830803074,-91.28149757903498 diff --git a/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/3.state b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/3.state new file mode 100644 index 0000000000000000000000000000000000000000..ef5665387518e7e5bb7f9ab8c3d176ff02935d20 GIT binary patch literal 6562 zcmeHLeN2-_7=IN+ai|k)hRULjnsgf}5{3)7dWUh?Ek(Yj%ml$0o!Nq*gCRJQ89!n% zNXVvDCn~7h*aT6W1O#)H5~#W|KX4JF;ADaOjGN_V%COJ$Jw7 z>(?gFT|ET)@nkrPp%Y*Ycr?m0^^2CXWTrYODlXW9jEq}%MNvA+S5GS9GIm;{KgXe= zWrvO&Y({Thxmj*%??wj-{+Oh(+(8lPORGvlji`q4t#8-NYV$WE8fE|!igr!k7$U3UULcm6{1-E&G-M{1(SQXH)pjY<&SAK zUrsJS^LzZJC@nUzh;4QAV$$nlvC~fw9LYTBs$UJ)wR0P6Iaw8OE4+tHlZ7>1jj)lq z$Nx3uCfP_n^93F?KgJXnG5iqwdFie<{xTIm%NtNc7(+e8gkVG0Dc*nQUw%Ikk5jj- zQY6P~$AEJowBCG1W|3p>SPLajgdDz1E zSM$f01hu)S(4XIolC@FYss=yIWA;X`WuF;OVzE#tOn4)!#2DTs{#Kwc+Rtq!y8|m$ z?5IumJS`Gg!xBgeND4>_ND4>_3`qePKyVKLn+Ac=Dqwye?h}yA^&HM%Oeek5kd~;l zku!FUpL+LwvhH#G?6w;=a)LPnkDAe#VjRPd#BpD!Sbr~4XC^_9>PrtO>}0v>Hy?d< z5AmlC;?$?+Oy=*;P>!v8uiZVIIYW#`dC;Q+z35JVAZHU`Lqi!@^W;5aBFURTRwSrA59%EE6qj?MG!H*8`7SgZI)Y^ZO%Ge+yU+(VgGHO0hZflH?aoZL zikGUDv1_-lS0-TU?otpG;9GgDe1?A)0_C8P={bw{@2T!Ypu{r;2rk!$&Y$c#8#pzl zwtZ5nwxh_w;|ue-t=cdycn}YGdzmt)@MxLa2@Hx$C@CN*ASoazASv)X1z<7`^#T9u z{LYJg=dEZg3l4GI<$}o#=fLMDHSqXz=7%Yo5%`hNW%c#18IVDp>Rq0637sf7b)kA< qhxjH2zd)0Gt@^7*efE@jW7~ZK^u;~8xct=#`puhUjYVgs>7N2Z?Sy~; literal 0 HcmV?d00001 diff --git a/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/config.yaml b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/config.yaml new file mode 100644 index 00000000..f0154028 --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/config.yaml @@ -0,0 +1,2 @@ +metadata_version: 0 +serialized_type: bincode diff --git a/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/lace.codebook b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/lace.codebook new file mode 100644 index 0000000000000000000000000000000000000000..2b13f8c432420863738ee6836ba9115c87d53bb1 GIT binary patch literal 2763 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 literal 0 HcmV?d00001 diff --git a/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/rng.yaml b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/rng.yaml new file mode 100644 index 00000000..c951a030 --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v0/metadata.lace/rng.yaml @@ -0,0 +1,5 @@ +s: +- 6739545338414267512 +- 6183947708318209450 +- 3453482548197079121 +- 4896452037606409197 diff --git a/lace/lace_metadata/resources/test/metadata/v1/codebook.yaml b/lace/lace_metadata/resources/test/metadata/v1/codebook.yaml new file mode 100644 index 00000000..8207fb5b --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v1/codebook.yaml @@ -0,0 +1,312 @@ +table_name: my_table +state_prior_process: null +view_prior_process: null +col_metadata: +- name: cat + coltype: !Categorical + k: 3 + hyper: + pr_alpha: + shape: 1.0 + scale: 1.0 + value_map: !string + 0: blue + 1: green + 2: red + prior: null + notes: null + missing_not_at_random: false +- name: cts + coltype: !Continuous + hyper: + pr_m: + mu: -0.12554951392089267 + sigma: 1.0060712163273107 + pr_k: + shape: 1.0 + rate: 1.0 + pr_v: + shape: 5.298317366548036 + scale: 5.298317366548036 + pr_s2: + shape: 5.298317366548036 + scale: 1.0121792923223145 + prior: null + notes: null + missing_not_at_random: false +- name: count + coltype: !Count + hyper: + pr_shape: + shape: 1.2463818344393327 + rate: 1.0 + pr_rate: + shape: 67.03804379304536 + scale: 1.0 + prior: null + notes: null + missing_not_at_random: false +- name: cat_msng + coltype: !Categorical + k: 3 + hyper: + pr_alpha: + shape: 1.0 + scale: 1.0 + value_map: !string + 0: blue + 1: green + 2: red + prior: null + notes: null + missing_not_at_random: false +- name: cts_msng + coltype: !Continuous + hyper: + pr_m: + mu: -0.1339303540874964 + sigma: 1.018971505873358 + pr_k: + shape: 1.0 + rate: 1.0 + pr_v: + shape: 4.941642422609304 + scale: 4.941642422609304 + pr_s2: + shape: 4.941642422609304 + scale: 1.038302929781819 + prior: null + notes: null + missing_not_at_random: false +- name: count_msng + coltype: !Continuous + hyper: + pr_m: + mu: 87.98571428571428 + sigma: 67.47147394209178 + pr_k: + shape: 1.0 + rate: 1.0 + pr_v: + shape: 4.941642422609304 + scale: 4.941642422609304 + pr_s2: + shape: 4.941642422609304 + scale: 4552.399795918369 + prior: null + notes: null + missing_not_at_random: false +- name: count_msgn + coltype: !Count + hyper: + pr_shape: + shape: 1.148060403429 + rate: 1.0 + pr_rate: + shape: 76.72567926097102 + scale: 1.0 + prior: null + notes: null + missing_not_at_random: false +comments: null +row_names: +- '0' +- '1' +- '2' +- '3' +- '4' +- '5' +- '6' +- '7' +- '8' +- '9' +- '10' +- '11' +- '12' +- '13' +- '14' +- '15' +- '16' +- '17' +- '18' +- '19' +- '20' +- '21' +- '22' +- '23' +- '24' +- '25' +- '26' +- '27' +- '28' +- '29' +- '30' +- '31' +- '32' +- '33' +- '34' +- '35' +- '36' +- '37' +- '38' +- '39' +- '40' +- '41' +- '42' +- '43' +- '44' +- '45' +- '46' +- '47' +- '48' +- '49' +- '50' +- '51' +- '52' +- '53' +- '54' +- '55' +- '56' +- '57' +- '58' +- '59' +- '60' +- '61' +- '62' +- '63' +- '64' +- '65' +- '66' +- '67' +- '68' +- '69' +- '70' +- '71' +- '72' +- '73' +- '74' +- '75' +- '76' +- '77' +- '78' +- '79' +- '80' +- '81' +- '82' +- '83' +- '84' +- '85' +- '86' +- '87' +- '88' +- '89' +- '90' +- '91' +- '92' +- '93' +- '94' +- '95' +- '96' +- '97' +- '98' +- '99' +- '100' +- '101' +- '102' +- '103' +- '104' +- '105' +- '106' +- '107' +- '108' +- '109' +- '110' +- '111' +- '112' +- '113' +- '114' +- '115' +- '116' +- '117' +- '118' +- '119' +- '120' +- '121' +- '122' +- '123' +- '124' +- '125' +- '126' +- '127' +- '128' +- '129' +- '130' +- '131' +- '132' +- '133' +- '134' +- '135' +- '136' +- '137' +- '138' +- '139' +- '140' +- '141' +- '142' +- '143' +- '144' +- '145' +- '146' +- '147' +- '148' +- '149' +- '150' +- '151' +- '152' +- '153' +- '154' +- '155' +- '156' +- '157' +- '158' +- '159' +- '160' +- '161' +- '162' +- '163' +- '164' +- '165' +- '166' +- '167' +- '168' +- '169' +- '170' +- '171' +- '172' +- '173' +- '174' +- '175' +- '176' +- '177' +- '178' +- '179' +- '180' +- '181' +- '182' +- '183' +- '184' +- '185' +- '186' +- '187' +- '188' +- '189' +- '190' +- '191' +- '192' +- '193' +- '194' +- '195' +- '196' +- '197' +- '198' +- '199' diff --git a/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/0.diagnostics.csv b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/0.diagnostics.csv new file mode 100644 index 00000000..8af4f6ab --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/0.diagnostics.csv @@ -0,0 +1,11 @@ +loglike,logprior +-9322.573577333967,0.8011617909578268 +-8091.773286295056,17.57728505848032 +-7102.691003107509,-20.450860835926722 +-6109.692165910345,6.399352506589128 +-5544.004421332932,-3.0875989795577103 +-5092.780889446918,7.681785880761241 +-4705.777292758443,-12.024459034238777 +-4382.645397384758,-4.177482580888658 +-4037.8726667513747,-11.29922787781795 +-3994.6107845240213,-14.339492405667933 diff --git a/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/0.state b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/0.state new file mode 100644 index 0000000000000000000000000000000000000000..01b8b70dc5328ceed9dff8ec9275ec08876c2515 GIT binary patch literal 7147 zcmeHLYgA2X7%p8@Yt0l&sAh~JGnAqRnfks#rCM=Z2a{@L3>s;M+!C6s6Uim_JJT?P zQjw|LcI8rJM4_asri)uTCr;x!S{lk9 zZ5}%`LtG;_^61ht(Io-Ylh-I<#U)zX=US}y-D>K4e8R~jH+$;TJU?VTEm>e)7cu%5 zTI~ATM_e+S!dEFVWg~4wba?an^GP(XKDzL?VYxKL-OIrINC$fL zUa46ni6$;jx)|F^8i`WgK*VQYQE&|{-bnKu;u@O)FT89js+}j{OthEp)%v7? z+i`oj#n1_j+)%z2Iwc)MmFUQ$Jw-mI;L(U$0}1Dy5pQ+3=^5u+KK9aqW%XP?Wr3={ zlG^h1eR;G~`Oufz8?UZ<#!Vf(CGbjQJ@;69Mp(3;gp=<<{)2u>hR+6m2=DXhyCbJ< zohad=y{gxz?vrrg3(~?|b0nNKU-F^PK&lL5J-w)Dr#ORS=e|^}OPNQXcc{Y~$pP0G zZn*ht&vBIjv@qC<_O$h&7-q5ikDq2*OsAVFTq0h5{g(D#XZ1AC-i~I!=~}b7$eLnU z!R{rU7G1QX*LIya6o309{pQxPEu!snXjbWR&k0%%6vI#~!9R#9@ZHDpnC|NjjUP)b z?o2g3Id}lYW=E}b7`5`5h}xD*ZOVJ(P%r(SSAUTB(1~`E#QLIGGDvLE#Ysm(j^{pc z6t4)U5)(g($=?%c!CHgZ{$LT-Nv0aQ{EFm{I<7Gs z|Iv-zp7x%u8j4&RuA52M896#y23OLYgJ~u@)J`=Fh1Kdv8qse_&F!r_==2SmtNeS- zZ83xdn~-t4=f==Y3H5J%)`(P_SJWRpNMF^=n$%G*lkQvNVW&BuktB7_F0TJQh76b0 zZ4L32s(y_EL_w>5vK>zqbsGE~cPKxU+u5p4B|kEIOJgXPtLiO-hho~1q^korx_=5uxM;$ne$OBQ&a<)#0qYim+ z7TG-d0-*M ze{j4Uakj)667|FR2G9Y^s(lQH7v3d>vv;O%etnaSIw{*_vNneFaGhE@%d&v5{&E}C zcH})PmX*47&#&dYmfbK+KV3o4^SV_;vTWNUF4@tj>B-Y`L@#N@jCuWwxj|8;PHuiu z63EvFb-q|r_wWL@&3)%BT~}YK**))tbwn;#kf-}R&?1kZ&;4TwmkQ#paTgX@TUW*9 zlM}y^h38DGxDqG5)46vli6QSd(`wjF?+2CKOtfkKD} z3#d+qo7-Bwkl(+J<0iJ&2kUOFp4GK=zgVBTI;;y18~O^>3B^$-g#T9^`T&L2gE+fy z#Dx&^63VyM59@;;zGVpcvT@Y2@z!#6^~kGxj^c$0ywv$a-&TZwTkBZ8(E6dn{=tEG`C=X0d7(a!-FSqK{XIe) z=<&18_>F6#$mQ2AD+8|Akg#c|W==6XPqbcIiYFVTkng%iURdCJfE4C7MQOj?M;`5; zHNjUuQgx_c*D2>%EB0ua*+;K`Rz2sEE%F(YD&=~4X3m;iCFSsC8#;woIREd7@NrbZ zHAd6<_Ms8ZSu*m04&UVEh=%e4Tm$_*Ufj3elFf;;9-AEbNJ7x`Y<}N3&CVHI;@J7? zq~5cs^h#b{+Sx)9IIZT~bmM2l)#A!Sh|R*ORt1y2Xc9k+kBPoRAQ?GtF9K>GyRHUYf!@R9=uD&3SX zqtY)7-B-oswRjidWPlR}kX^}#p6|1GOS301_#hA5FN@j~_q>Rt>iv~qpOQm5>V$4{ iNh&6NvbnS&j)@r|_xz3;UFw!G)%oyV53imX==2Zh`(8c( literal 0 HcmV?d00001 diff --git a/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/1.diagnostics.csv b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/1.diagnostics.csv new file mode 100644 index 00000000..393387f6 --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/1.diagnostics.csv @@ -0,0 +1,11 @@ +loglike,logprior +-9609.92370618558,-13.14814572031007 +-8678.653104315887,-11.71974328539811 +-7778.630766283191,-11.168982762963822 +-4914.483172879051,-24.279491361061424 +-4384.694911219802,-2.399070504063549 +-4358.782617401552,-3.786398860100305 +-4232.529895337348,-8.448527259869834 +-4096.343492636015,8.544125037466497 +-3917.593292727098,10.223971445645432 +-3732.6427709200702,-6.678249358526918 diff --git a/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/1.state b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/1.state new file mode 100644 index 0000000000000000000000000000000000000000..70222a46c18186ed3577539b7f681f989a2248b2 GIT binary patch literal 7131 zcmeHLX;2hL7+pk-w;aNvfCq>QkyS(_2DKXqmWiSqLJ1xaEKw9As1*^63Lan*EG*Qr z5=sui5CYIr5dF<5zao&fIUFkFbR{86NbPmrIV0wVA?N&@3+RXMnv$uLXpL&SCD64aM zQI|$dPr4o!)_YU^j`c%QY26&XSEoX*)6t%vwFI8>qr*Gq+fLEg!yd^&7m8_Oep6ZO z5A!MJs*uI4p?TvzogQkti%M+8p*iKxi10;4}3o4aVuxKchbR2C+j&&Wr1pZCAH-1MLb%leDbG;1z z<=Qg7SeUc&38&quj}c!#Oof<_ROHy+UMuBBTv!oVYS7FLE>37E%9L=ro%-nU^+r4z zsOBTpDKxyF)WD4z6n)Hm=o3!z)X=?rUNgtrFxQ3XKj;zXbS5anM&+l>NK`jXfEyxD z;2e0aV#w^&tc7%DxVk~5#Vm@O;wC>d-KiYX?>(gFgA5m0Sx==gHK&D>c9~N&z5Flv zF_j)odUMRpqfMjwRcji1(U!U5mH1KF z>J7J@7u!=bZR2eR;nGAuDqOnpc2Zgit=pHVd)L96K5Cq@N0wJF{|ISkR8r0 z)Y^V$g0S{7sf{nzvea%Tc6UrF8b04br8-_xopv`W{&7J3#Ig=6SYak1%OYmi%=}%O zvKSQH*TXme1Qqn%M5=jRnrvt z#3(wx_YPyz>LYYbR-s?3ueYjMiu~Rq^gvlaw5CBGjkrH*k$t5Zyr^|JNe*RSCd%JSHyB@sL|F{yNO-P;{zL)HLF&LkJH-lK#?n7&##>8 zCMnZIy0t2i(pN(AnE~*1kUs)CJGzQPi)RsZ;P8bGc_8xOtd8Z-BhDh8)zE>%pGD;1 zgZ%q))T8c05#zA)WqqN8KbvRkp=0Y12O%Cxvz*nl9Cd6Q z9Q}bW5Opj^9QDY91L4c+k!S0m2eNs#j?Lq~K!5ek(#whF&SRF)90!19{DDw(s!(XHrZ-cl${!#O`MLK8RT9F zAQ-o^`67oom%1CTH`y%Z2Ic683v;Dhu)8(2*e>Pr_+sdkbOBZ1b{8HURj*(-!)rpS zZ&Yy_$!8NXH3ZoQ$Dh_0E|zeZ``bPm%6f&F{6j+SSCpJKZyl=gQ>Hq+(xEBx1kQ0W zt6Zxdd#%akOj@r5_cfQ02xYY(!2j$?-GW?hbXt6v^8g=Of1^d~qTMs%Ea_7<@?1NC zPfUUF#4X3f3_E&R2orFHm&fCn`?WGw555? zj31lBm4+2*WH@%1q+;BzU#(h(`bSj8@Os(q8)2m@@4WMEgTIz;1FYU|n?TRN|LYEX z?CbAipWlZr9`<@z{-J(7`tIofHb?B_*ohGbz8;jc_Sc<_#9(r|iC@Mq1os;#pFPfj zk|!SPN*~?gQm!tseIRa9{X)+CV?wf;RyLRJydkpL(T}c;s#S{$sN|O0x@Co2t|Uzw zO(QcTZNxBB|7q-iE95+{Z#F$YrcCeO8>wr|e*Itz9m?XCm6bIW7QB9p`R4BumgIf( z8)^3}gPu`)I?&UBo(}YM;JPJP2)WzAZuDtQcx4ojlO6s^9>{e$2biC(ljkw;8M9fodlDV OLj`rZmquh`yuSe<{55|7 literal 0 HcmV?d00001 diff --git a/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/2.diagnostics.csv b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/2.diagnostics.csv new file mode 100644 index 00000000..cb605f0a --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/2.diagnostics.csv @@ -0,0 +1,11 @@ +loglike,logprior +-7820.733122404915,1.8584824986981152 +-5631.531862829009,-18.035523971478796 +-4829.045061186832,-12.881169652516501 +-4275.600507658869,-13.90060813571345 +-3985.183487089194,-17.950836613327276 +-3726.706477619133,-20.18027368130369 +-3558.9431204799303,-15.093427209793461 +-3524.300832642899,-16.792937576289212 +-3517.030236367397,-18.33508257674344 +-3485.1648002590455,-15.8390617875546 diff --git a/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/2.state b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/2.state new file mode 100644 index 0000000000000000000000000000000000000000..4302ede28ca612db7fd0a297ab14f5e6923bdd76 GIT binary patch literal 5375 zcmd5l5%yjfqPs4ZL6>n0nHf~nR2pN*Wm1+hhEncR zA}S{0E2=4xIYsC?%B^U+Ej2|obM8v6Avq_<&H2sNf=;BrD!Ha1v3ht$yRd; zH|n);UUzRUYkU2Sb4(od)sXBOZh}Ohpa7mU)Zz7C@HmbZS1(c+RWwxQC*{=;8Ok35 zYaFJSt~SvKOyTOD{yBZ+$8`kF@A7W6I^B@SwK}KfrZcD0j@7+I z(46lr&wUny#N4UvFIQOHSENfdRQdqHy8$TsU#_P z+!;mn_WcZ#Mwe*IH7V(~hS(iBFv3TqMOpM+U0zWpYUg7b9S6Z0he7 zIRmMH@zLh>COm#hPkP;-WEC=?(@&z4JGA`chBXdzV(=R$>VKZthFML?vaBa)KG`uK zAx!ZS7iZ@h?OotXgB;g+=N8}LmPeb~7e{6jG#7Ha$>aKWVs3YpK~8#16UoszIBApe z9WJ4NOS;pgdZMypi(>PQ7P8k{Jtl8SI(ZZ8JR`~=m3z4D-jGB~xhDChodV}p%t+Iq zEH(^w4=g{z^VgQFZ>d^-x%1iM#hDWP@LzbGS!d*dY@LmJ%7gB|@}c{`VNcHi9*{kU zP#!$Cju;3Yi@mKw2V{NOScoT-XZ5{};m=}k{oYrHK3Jcg=D`E9K0S@0XOY#T&gOd? ze<;8A^U*nW`@zc**A!eskOzia7U~`>t0cR#_HRG#nMQCk zK)nO8R^d1CTjLSF+{cwt`AtnzsaoJz1y9|_H1}|1T@u!pF6tMQYC{L`43q0&tiLuSxIQr zkIgwqUYR2$@->p=n%O zFMAjNlx%AK?F}0$-M;;Wtt{6F))b&YR%h3w4(j{xXJ>8ZG%G37S)m0g;kIC9o<1|wVZ3U+8k)!Ue%}xC2~WQ7}OBELw&69LqQoyU-9;x*D z!&#Qo^+d9vO6q|-sq;nc&?#+)=$xC+uVz=c%Z4ebuZW~(P1WJE9B)vu*}~F-)3~=v zs$ITT>tyPO>TA6-JUn^FV*hrI|D%pL?z(#*B6Sa$)$k(J!>La8Oi5qkRS4R9^r#L5Wa}P1ELNT;vp}@WB*^v`m-_o&_8@x9-BuU2p?c~e&7iq_Cp=} z0NFZXc3)Nx9_z#A**fCx{J`s}AIn1wWY2>b`v8UV@L>@;i literal 0 HcmV?d00001 diff --git a/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/3.diagnostics.csv b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/3.diagnostics.csv new file mode 100644 index 00000000..3be23ffc --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/3.diagnostics.csv @@ -0,0 +1,11 @@ +loglike,logprior +-10887.659117268042,4.4677284438580696 +-10748.404837614287,-2.3130437622533906 +-10735.24505083381,-7.558075372957182 +-10702.25510289215,-8.764376465644666 +-10705.612794045579,-3.8903977043777562 +-10666.769325387486,-10.779826270298251 +-10318.86014024385,-1.4776990027086931 +-10124.650167386344,-0.9534088286827629 +-9915.202418761974,-17.308900887721407 +-9824.615186461757,-12.127615173204081 diff --git a/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/3.state b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/3.state new file mode 100644 index 0000000000000000000000000000000000000000..4148a53d452104bfcc050bdf03266a9857e2307a GIT binary patch literal 5799 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 literal 0 HcmV?d00001 diff --git a/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/lace.data b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/lace.data new file mode 100644 index 0000000000000000000000000000000000000000..056161e09011d5ccb6a72faa861e6d0aa6002731 GIT binary patch literal 8160 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 literal 0 HcmV?d00001 diff --git a/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/rng.yaml b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/rng.yaml new file mode 100644 index 00000000..f866d400 --- /dev/null +++ b/lace/lace_metadata/resources/test/metadata/v1/metadata.lace/rng.yaml @@ -0,0 +1,5 @@ +s: +- 6673150548032836391 +- 8660570340892567824 +- 6313710878850318851 +- 13781755498804928295 diff --git a/lace/lace_metadata/tests/convert.rs b/lace/lace_metadata/tests/convert.rs new file mode 100644 index 00000000..73bb3f61 --- /dev/null +++ b/lace/lace_metadata/tests/convert.rs @@ -0,0 +1,21 @@ +use std::path::PathBuf; + +#[test] +fn read_v0() { + let path = PathBuf::from("resources") + .join("test") + .join("metadata") + .join("v0") + .join("metadata.lace"); + let _metadata = lace_metadata::load_metadata(path); +} + +#[test] +fn read_v1() { + let path = PathBuf::from("resources") + .join("test") + .join("metadata") + .join("v1") + .join("metadata.lace"); + let _metadata = lace_metadata::load_metadata(path); +} From 92168560eb0e61725e07d62e0d5762bdaa6c2487 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Mon, 1 Apr 2024 12:06:07 -0500 Subject: [PATCH 33/43] Increase number of states for flaky test --- lace/tests/engine.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lace/tests/engine.rs b/lace/tests/engine.rs index eec99455..77bf97cc 100644 --- a/lace/tests/engine.rs +++ b/lace/tests/engine.rs @@ -229,7 +229,7 @@ fn engine_build_without_flat_col_is_not_flat() { let path = animals_data_path(); let df = lace_codebook::data::read_csv(path).unwrap(); let engine = EngineBuilder::new(DataSource::Polars(df)) - .with_nstates(8) + .with_nstates(32) .build() .unwrap(); assert!(engine.states.iter().any(|state| state.n_views() > 1)); From 39a51e2f58e2ad490b6af786069cd77336a08cc1 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Tue, 2 Apr 2024 10:12:49 -0500 Subject: [PATCH 34/43] Fix book and add CRP figures --- CHANGELOG.md | 3 +++ book/src/pcc/img/crp.png | Bin 0 -> 266495 bytes book/src/pcc/img/pyp.png | Bin 0 -> 472830 bytes book/src/pcc/prior-processes.md | 11 ++++++++++- book/src/workflow/codebook.md | 2 +- book/src/workflow/model.md | 6 +++--- lace/Cargo.lock | 2 +- 7 files changed, 18 insertions(+), 6 deletions(-) create mode 100644 book/src/pcc/img/crp.png create mode 100644 book/src/pcc/img/pyp.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 71e3698c..52bc4a03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +- Added ability Pitman-Yor prior process +- Users now specify the prior process in the codebook +- `StateAlpha` and `ViewAlpha` transitions are now `StatePriorProcessParams` and `ViewPriorProcessParams` ## [python-0.7.1] - 2024-02-27 diff --git a/book/src/pcc/img/crp.png b/book/src/pcc/img/crp.png new file mode 100644 index 0000000000000000000000000000000000000000..20419171ae095dc728b608a59c8c0619aa774c6c GIT binary patch literal 266495 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

vQ}0lv)z2q%nyeMvW%>;i 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

oD6 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 MU$-oKsmIa(2ALpd?f?J) literal 0 HcmV?d00001 diff --git a/book/src/pcc/img/pyp.png b/book/src/pcc/img/pyp.png new file mode 100644 index 0000000000000000000000000000000000000000..745608451fd64a7f2ef8fc545804786b089f2c24 GIT binary patch literal 472830 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 mCb=z6$S3dVSlu%Gi-WpigM^u_R|g3zYb?X{ zkf;|ZZ=hU2R3zdzX%fQI>Bv}iV!aIGdMGMVN>7b{sas)g?vK7lDVBF&Gl0pB0C!j9 z2{L;dW>@Au=*rH;j^@@6MC=ax2onXS|C=?WU|4JLRaf4H7F8Zbgt~Rk*`!wg>qJFZ z@AESRG8$AJo-_Y1p1gm}sh#WT+;Ms?Xqmdj7%6Ki$B;N>6HV<9NMw64`Fa7GdIx4`t2bKc@BlU_RS>qaHKfd7cHj% zaSA{~fjt0VgTeKHeKIpAs}WmC`{|)GW79EFa7x=fds6K*{vis>U%Pc{A;r1RsFM~- z*(|up404>!Npnw?#iQ!>+tpm?I;6lP<7H)0+0xtk>=8f>Q-$D(~BOV!W*|8v=4VppJ1`Wv1 zv@d&!Pe!GGr41wwW)u#Av7D|Eqk^13V7RM>F99pM^#a!S9z*d6moC1JO|?v5KSTJ^Yo(Wx5kMlW*yFGN-(4^21tr z(WtD0mDx7`e5#edS>n|qsOm$f$=P^#t*BvR66M1Dz!U3n&O1o*puMTF{ zj%=UCHPXUbzjARqooGfu<>1J0YUagLneG*+rWku>6{c5-V?xM$It{5kwr(K3;`0eO^@MB2@0jV z+5AUxT!c0f={=v89O;WQCZ1Ph2{BlN7bQ;Pl6X~e>JJVVA)SI(3eDLwM0U0l6LShU zUmErU31c%xpl*;cN7NWiE34({WxuiY0)m%w7XJt1pk^Y`O@XN>G*n7J?6NPycsSt<9H7ifmMW4V4#USDW947+6PMQn@1B2-J zJ%8IB*G*V3FRgsbcO$c=b|8zx!U5Dfa z8c|jCQgg>a?@1@W&KEg$)v0t#gB8V2czh=P94leNX7tbkn;7vjLjHi?2&?r~&BnEJ zp3alMRm6tD)1ywg4mmkBg6kS8PDY@Rw27YOA?)z$TVT_M%}F{k=-CC_84g0YjX8So zNNLWRbaV%N>FF8rG<)lt7Z>;y(QTst=NA<|^*h=}eHTb(q=UbEBcW!ng8{8O=ZN%O zl=_rhC&5?t`TLpNNjocf3c4CbQ4;c~Z^`u?o$?k}d*w(+Q_BSMGUr@F{)P(-+XioO zwQ+8!nvL_e_R#gs%bM@HTZ#ir;HRGqWO)eh!KphA<*r(A>uh7Qcfq``@AZ6BRY<~< z|M^Muk)%;0?hND(a##zfx9Toek*cwm53WsUpV~R$^IYnyU%n*oP{e@l)WId*gNR9j z?`VMC4M^SkUErtwm|o|s7gMSDCJ4tcB7(7o!GH}bfuDgWN$ubvh|+_Nlje2ouR7^z z%YT(9hKV{4M=$=?a#CQ{>wsN+m(&o(vaQA5FCNp%Jg6eLn#ndsH6YUvIYKl5^$c{bYf{Q!VZng;DtEpMsbX4APEKLjyoQEY41T8k`nZ_1F1^WMEON#W z0SA>sN-$?~4H`oKupD-uWl?{h$5sK>sF?pze`XR+t|C@nw5l?|>R|2a;o>6>Gz{0v zxHo}guH%UurrO>O#EcBrA<{WfNzs)PPmbkK)_jciqxU2*2srSF=;mPmVZ(;g)lS%T z;HQw&Gdo^kJuzTm{M)H)zilje+GEupuk(wSLNUvtL~d|p5kOg>I584&dzry0Se8Rz zv%uKLh@@MLQ$(E?q^i{uwlM@RZ+!n$57H9qV{YBp59YlfoN3h`hjo~vk?}nS?<6iR z4hYXr3LPFf1Wn+?B;x$i?-FCV4f;4N02k%V`BgqTYJR&X?J!y&R6ZmJQ|RgzDIGTm zBmtgzQDO)%G#BpHMz+IPyYxAj>*{?n4{lnf;X22IV$ zR|of6GAlF%ueiNuDI*2%!8U6(w+<(<h?5%@i(^&quL{V#L`R<|Q|r^? zI;W+-u=nAO3KQV$kZb~B`QN^S)oUjnOPry115~;cb<7}UoUs7Zp@udN1_qcI<%DAH zXvFh*F!Og2%^Q-P(utN}pcFDmL57#-e`Rfy{KT8-<;aY)ObrZ|?LS={-~7CjWQ*=h z7H>>i2g6JrPCF(#Zhjf8=o6z;x{jj#mlE`LW0PlgvDD|-Jul=Ry2;&L>GZmOX9-D@ zth!&$go+%o1q}`JOkHh02_N(|I(;eR9FlLb(U5Ck7KGet$HeMb6= z@#DRwjdvGpgW|jWaUoz5R56Dh_U^J+Bs^ipm=FTk4!H3lJDZCEkq(^0S3m{N-J4lP znDb+K#7&UBbL-ZJme&RXe@kHL`lg6AaU-^%Ef^!_?D8)U zMEV+ct6*t{rRW#2`Z0> zK?Kw$mDpy36Q!k!ZYLKv=y$|FAw`abBgdf;E(OPq#T2b_?mTWDe`x1(9T})=1^M~! zo9r{It%oPE4NkU=_7wlK5ImvYn4p0jq<`l(mGf2M)r}&jMY74cn|f|NhD5_8nPRoU z>tW<*4*D*_m@SVUKGXoi2uBW1L0q$RrAht*SX^=|Cmp>gu(f*a@0|O2v53>}q(sCZ zuKr9EaTr=sh*2B56g-OfzibYdSAfY6a)>5uAbqBO|6?b=%3t372-afU6{@CPXVFm} zXS+;mN)V(dyvN;Mfnol;mvL%lT?{=ecKnr#4BCgV%ItXWUyi~fu3GcMWk*~tj(7j> z7AF?72k2o~(Jy|TC-4a#DjtDPD~&D^k32G{8aV*1RtB-*R60DUNq(2FuP-BjHHNI!?$j193f{`9EuhI6gZnh4rPESN*Ixvu50;`{;guQlaITXTBYQ&`d#)$o_VX8BCd+~I$bL<3W$m*_KSPS$;+E! z=8$;6aWKPEoDc`F(A=zx`=6}#^XURMss(`@P;RHn=qLnBzNT_hct)UZSl`-fcfK9w zRlSUn-7qrfT<4d2$1VSJnZNFOH6sP#*RGHAA1Md*bc|yAe%J{2rttRvbU^S2Akr~{ z^!U-EM?&5~O=|LC2cLYd{;D;<>ubZpma+LybMG~N8s%r|6zt?I{#-6O!_KqpuAo}g zpjwf0W5}5kvp0Ah`+P?c259sjzql|$2|M9Zv4010B~H16hhj%Jiptr4(~WpAW-2t$ z1g6Q2WU#ghhVSCd{E3Q%11^yD8h*P-OVub(eSm&Vl~K6KUNU}H+_nRZBp6c42hB}QeF5n*s~hb1`+lg3 zE(PSSgFOK%Ffrb`_SvIBG(p2aTq^(3GBe4628p7>C_@eoIPj`=XpF8L)73Uia>d`5 z!6_Z?W}{&QR8)KkrxFBI(8Pbu=l<&$dour1oc_>1sotQ&wU5{RdSI>4*;#*H$W#v_ z9C>33Bh#>r4nmh{Gzyvxi}=^HZldzsjeV;zXk6(mruHf@?Xv8*>`5N)*U>B#R+e=5 zA)o2P7sv!d6>pRYr2TUt=5sYOOkYy-gd?7B;#bp8L{JXHBc~#PK?vy-?a#;Ma43!{ zI1qj@Z~-x-5#0#xGN=NJWn@0f$C^2-@AOK#w4=gpT=)O-6qx(ellG0!%7jKuCX^Gt zSzjOrpu%eGzIrIb!;N^eh)0|Z+`?9YERxE|Fp8O2v+=oQ+K7HTmkPH)#>NqUZ3qlQ zaphB6$DuypAH03zhWv=zN_G!nwR3GA%u^Zgg=z}6AOzogfE?BmEiGV!d6L0aa-ablag8>;AvGiFa*0}*+rK8aE6E^{nB5n zN|m+!I>2zkiJ8VYOF}!w=n^?r)vl+X9IS_>{+gU7K0JY zrN^9bb`9}jfXA=LQEr8Bxrx48IfS;`rofI0F7#};geSwpoqk@CN4=Adbk+oFDU1jO z^wD>!pQmeIWQZ<DPw?f_+6a#1?&Wn4gbqfhjWHt9s7bQ7aX(; z%dW97$QcJ;4StsHc9e@{b8Dww+1(B@*o)X1!d-wELc-zGNOHaolni(D} z`stSKQ%l`a)H?9DAH!~XNYvpgMf@cBdtU>725Pw{%xnaH#BOWAuyGD(_lTI!N|7ao zpkc_o-KS4G%AL{GAun`ktz44udjt)|I_h|X&57IcrdCjX^MdvIxrKWjk(nT1f>+5-N#@+ zAmdSFA_pf7uyYZQ9pH%<$jWAu7Y@@1Q3C`Now>QWpM(fnOL$l~QaI!UzcNG?=0+<09_%_GF-g8%wCESLCdi_Kc`Pv1)X=;e%aiB+6{+|oog?cm z<&8VwY#sd>byN)ePaJF?&d*`oaqM@0HmKmB z;7g+)+x*?CPDuu)>OTvN@zInmMKa%-_XHXv?n_7)h12J`WR-D#Ih%vWc~EyOtr-bj z289p=_9J3@#IzZGEWyOCp?Bpcg$-4(=^i{XX!TQM0lka=)F(LD@*<>}rBC9R9Sxxm zm@7v-w!Q#%34ZdCrfm#{Z6ru1f~iSyhKB+BT7HhZCSW;Ew>pZUjJ<~sA5Op(UM&amvemK-o^3TI61es? z--+(Qa8Dco4P}Ew70zS&aAXB=|4ZXDHtK14%qiyst$tD!;3Os{BcRmoBy&hO^B%oQ zQd9MGnJ$^vs%b-WGG)l=)NFDFAUVGk|N4l_BOavvF%Qy`M=*i~M(MTCRZ47#ngw4)D1_NxLd4 zLAO_Vf~C@>j|{}xxkfu*&_k7ThoDYu9K@xCcrr9HB7HDK?nCa^_ED_u0&I>)PCL%< zTEe@vpLexaM&$4-zZopsMRn(O04q2}9jz??8CD%3d~tJ>G$xpkB60m6O6 zOY2b!kD^QMBU?jovIPjSz@MpoKhLJ_$N2Sw*N!JNU6#&@K7d0=DYV2&?rgCES4Nmo z*dL|U?u2793(2C@(oMMDfpPoREys^sP?DqI{2-qLV38u^EAFLgyE{0PlW=KpbwHXO{@hT% z^4zk)(Onh0Xj<8_=8ub*oK^r*4893)ltAxaK)$tx*%FF*f=80Kt!PwmrL{U{}LnpUgv~$ zYZ>k1s5~jcFZNCs_WP9bg1zdXC^pR3ndxc42Pj-*DVt6BWd%$YNZ_rsJXA9}%- zbYP~r0RWzy!iw_;K}zGK4JRB2Oy-V}$Bm)R!+vrD{fOw~*%Q<~$Bp;e(lqnb2}a!- z3S>yWxYKX>+(0xn#C#?--9QjJZ{L@^(^YHlNN5x40|cWn(m+6JOIV=OHhd`#^Y$kg zk_j$@oGyy`Nf<5GFq6Tn8ZZ^%r7WP0yW?-S?C#B&WB`D>cA}R@z37|dKQ;0cJ?AK* zTr4r(9efmyn5Y=DVa<5EHSqI7itiJD5yW)1_vsQ-P)_F6lv28iO`{ir zOiCLZXeIy=r|0v4+zWB0Up)c4b3kb3lJN!12SOYoW0ufMM?aJhzuLP|H2v|2X5j?bw6q5{VbEXK$Ngv-`D(t#=@W3p(hJ>fC;!NdT*+DCPT#z%uPlVZ zadJMIi5h3j_*w9fDlvOr7yAua8Ln|^MLp@EXJU1v$B99J6SFW(pCgkTMcM*KL~b4P zL+D^ImGeEm1F_;|&<)`d7`xg}=syg5;@dZ`0^qogoFI)U{&i&40JU7VqYd^!ZcA+o zXtvch$3)^c43@Q@ORw082|scoI8I8+#LyM|7etX$QyZV|G~)lE?9Ice{@Uo_Q;H}G zX_BFnsWel`7#&lTq=Z7INQjDLF3OZd11e)0WFA6g49O6cA|X>UXUHtPYaicddVjz7 zkGHGqx%&20=X3UF?|t9*y4PAa^No{>(W9ULQrR#lBW_^Ok`Z?u9Ah*

Y4v?izQi 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
oBznEgW|Hmot$N|C*5m*+<{~J@ z=!Y<&pAH81zdykkyURGvxj*H`JVE<18xWN3FsT9Kxqbf_8(T}@DvCMf^i$#CPvP3~ z3N8@<6Z;>qRg#vI`{zd3xR6=S)?40BS~G{w?tsbCh%hpECMtBC3??^g!)m5Qqz)&7 zHw2#5Pq0ma#NlFOA>tFdS5NSsu#RpQDxfco92d$VN#E8apNReWA3t;(rD;YJ6qpCEAeCPg2r32N{Y%_bFqXR9w8VnLNGSPU9mZ)HLT#B z_qkf0F)9IPePYq838mBh0>R8mbxCOZ3d^=}3{o6)Q^qh*phQI*Q1J;ml{TOaV{8GS!kbKavJd%M& z7P8Q~gmdKx;XOoDV~oY?F*WX!=gg8?cmIXl8AIlM_We2ZHNI`C_ zDEsSAde!M0Q*XJ#sw^g2_V@IokB5By{00_q=Nqtym(DP7$-DkW(R}|L|06!}V}yYiTP0^1|UxcYNRj;WI@I(3GrT z)J>{tb=P`r-2Wyl!`R6OlUEz+eeW7kF6}hvecJU5MU2s9KZ%w-0=O!^@!)JMf$P<; z5e|$>?&su4GH4YBj#yiqJ^0J3x*k|ty~C0Lk7E%*m7nskW~a+{db8`NaryBA z99k>DM59UA`xZo0W?&5i>t<+7`4bvBL0cY962*rl$9EO0jC_j*710t#5VIxq*u9?G z=?AVw3=6smrf77l45!q0)Jt=-5Ft^C)mK~p;4`Py)LJzET_(>J^9H06YH zq$Q9-R62-bBBqP7y)I!1M|b{QXqJ?g{S?V7F>v~8a@gaF)w}X}!xpvcW@#FN1{wr| z8T-#~b02)XmSEA>@+$Tfw2KUAg(`*pPnUXdlzfoS%z^;AP}CssKx%Oj{@(Q87Tqyb z@t=Tcj&juDYX`Z-CCG@;JkxFPk|oP8;^x6O94X2gpBWjVZbs3NN1DvX$h!$@b6B`R4%XGW3 zTZG^&Ibg>TKMO4Ck)c)-J`6}Oal?>AtBlRhhI);)nZt>>|7;4+Lk_%{h;cY!X5-${ zmtajP|LXk5$Nf9eplXK9Mus7p=75jia((@Q^RBW<2H?9sfMX?X&gPO>ejkpKjMf>j zr}gq8o+U~N|07`1t@8Elzy9|(axWa#!NT)^z{w8sp+P}jdzz%W_Pd#pN(NrvFkBhG zD3%H+J+URrIt1V|GYn)868%HEuF$wC&T?11wIpLWabOoFVdBiSLn~5Q_ahlFG9hSk zj?v3Jy}sdSwl=)e0B2m)DTFunH%^1gK6%|= zLTeG#A~nv*48YFqE~aQpG5||XZ+^Jv>rbCPetZNwuTv0G*dciy^}@yR+nozqYOK}4 z2@IKi$@li1tAAcwIN}{ym{5RuN;s&W)v|k+)phnFZ6HJEh7~n6HTIC`AxS7gJrdb_ zt7^?|xzLJWaK)Gq;H9jevy|u{fIkUURd#ZrF=I5NIajnMgf-Fu*zq=37Pcecn%>Ob z%)rcl7Dyx1ODU`R9{O^!ji%0FiCTWgUiLzk1mrLbgZT=51APz(GAT|w(f)b|(#lGl zuv8ay3~;K0EF2RqYZb=_{gdGW8A2@i&+C0({s!H)+dksqJ|r>V@x21ork10E{Vo}z z0ghI6&H=Bgp1wZCZPwnuNfbeX76Jb0fhVzvAxjkt_0MS;QXK#Mbdh4#poP$JG~-*#>3 zcHr+w8P~1r9`MOl(F_2Y1}PaDSF=M%ad(wV%`U6Ffm;$*nP)`D zRNp5G>!ojw($SO=yw0483|h8AdtPsy2D8=-3}%vg;~mi}aKIKHKJ(O`1{*v>%I6B_ zR1_!`Mt%K(;a10*=YOepPG1I=NY975h6Yxa&xE9lbG*NubhPuta-`Fxj4ghFpH-r! zMMl>Jr$iOvp$fZ-U_goZx~MuSc<^5?O4ml;U!tf#MLeLAl9CB%fK@(jx|Js46dHx5B2chL-*z&A+R>Zk(mRq}u@n)EKP}p%5kHaH(w=W*de_jYS0hhnb>C6B5 z95|F6(Q~M@<@G+na{vr!=H!$ryqhvyO4&X#&u}<3^RFeiX`)$U(RZzKO)r*e+qgsb zXpBtrwn&EVHMP#3iKX4GGqPtN_7Bbo?tgWvl;m^-Bkv;7}cR>!>&9`jB@~e z!3F^?I9x;%RuZM#zA%{J8T>}VW@b%;Uh`Yp=>jy0&!87G5{+2LmS+5(e(~P!CFsn-1X6_ zIw=s7@0T~RBGPX+YYiAY4e-9?Q0&msQAEcok^~1z623wDy}B;P=)kmMb!jj}|Lqkn z0e*wzpJ?*m|FoDUwc;<7_|N~fx73z7|M%aH{`;Bq|8GCib_EL#paam)^0iq45W}G; zVHvlgD#kK>bX3OJcWqARUg})~H$rMv{ju@8QPkR?B-1@$a1`-ZJx$QHf-LGG1{fKr zut4hc=fG&{9ZGehhJ?Q$M@|T9=LUk_D~0xSXZD6=;={R}{n$Yv5b#tN=>LUGa>7_U z(NLH&3Uh{QKr}>~DI6un5LyW)4GF9M{6VkMx}15lFUgLgk4aNoG>wteK7cCwY+@pc z>QDeQC`Jn*moDB#vw$)CM~U2lz_f?r7#QslL13#P)hWz7REnlh8Zx#pIn3L7vd>?U zSTcR=J|miqfrk%hC{BCdRFp)dP1)F2!CKe{hVX~9>i@qp=j%tE$^^O zjR7N~h9VXM_R$csJfa43JSPr;IaCE zy@L5sN` zwQCq0HqhO00K0X2fq&0+E(GaE6WsD9fI5S3qbDBf79uNTJ!#d2>%Dk{Cq9F2bMdJ0 z$PCIVKyK>XShxZFams=r7%kd=pL|b^o7kg^;L=@LQFaG63w@uj%|(P#Cv7SyD4?uU zh{Fa-Kt*(`HIRDy(T!>Gg5bZR`A+R?#v%heb96 z{~|+W_^imlvjG}L2>@}Sn7!ap*Nt#S7ekN~`3D~vHxaU55}P-jUX&)MvGW1M69D_3 z(%PWg$m@Tmi`aEQ(}$MulqumW>2Z~yi&ZIK4nrh^7mQqEY+P2BCMyty7;eIuktIu) zRzPS&!*2e>5DQ1z3jsJ`FBI6Npqy|6V^StS44gLNfi;k}2=Ku=gxjHF5q7!{7+h~Y!>z-R|^FfFQqv4ujSk-rSMO=w9oz%Huh!f-}L7P`O5dV2lNo!8U2 zSN44;5m}3gp0$iEoQk1CJl87#AbC;Lb|W>pii4>P;WS_ns1>FGJ)0M6Wlt_`Jm?^I z0MSiIXcq>xu#6#sjjRRLtPDdnG?10hm{Hcl!a^R{@pS2^{f&D4khPtQin6Dq4nSBj zTZVB!T5Gm>bM-$vtp`P%<|(_^Pocc*eeb8G7ff}N0bR&!wKN;wHxF9UuV^hE{3 zymPh@)o1j{gP;#uP{hZ(knS9V?O`MbTSXauCXhb8OA!yHR@8zZ`#v&wXbudTjC%nT z$^s*Q3V_Dw z5+cAv>iyE-fr-$!M1IU4vr4|02##R8bR_`ai?az{Ors{=9^$$V@?e32IYO$8EvkIq zPd8G(g=!?Y5GDP$N=o4yj0eV2J=9oHQ6aNox$qdrnK<^?E7OrF5L2v2hzW2LaqG5c z?Vdm#6u*vc1a5++>#IcRVnx#!ZDumjcWb>AcX zB9{U%HUrs?$cz9y8{BjqK}<#~dZ64V;=vMFW){82tW=Qo;N@|sj;DmlcJOwxhbrYwH%mEQMJC#+UIS`cfdzb1-Yg1GDdN2+Tpa0iy8)Xi&$wU;VWS^L+~+V&l7- z8)|g6ZNWuu+|#x8P-mWZJ3I}{SfBB2S%)q}JZV1o9+-_<5CHrp^PF|Cq9Mo6)EZQ@Tp@kio#MQdf1mj=rcw483z2k53*%R* zIYe?0lcD!A)Mi7idGG6nAAdYzp4~2V>&`q|Wdf6Ih--SUSM>aLHQ*jCulJyTJfWG( zD$uWRdX&ua@KVxX46%;I80GeGV0LCZx}i5I{nYEX+3(^xzQ+xW?zav zLkW)oe|?Iv5}8dPO*)C(ga*12cIbht7cCxcDuJ2FWTsyr9&ulcx`gkJCpU^^2yMu6)Z41f-KWe}!h zLN&QqhziimNw;2B(6`Wr;rL*U>b zsapxhQDZfwL@?n~(qZ2@=3V}W3bek)6sudj>_t$tkz|INmj>%Md3qi^Nd8c8WQPmA z@JiswYVyPeM%F~30jGMPu_|WVF(CGz7^dElO9f13W$0aVfP zT>~qa(OX#=AHm}Ci-|{}1lZ%$$+obbLb0e&S!tyZsRhP(kX?@hs&;hc(PMlBKdy{g z@Y=^P#3J&)9i0V}iJ=dwCi?rhfhZ!#*qw}c5EO-WNfjhHMTd!DkpIyWCN!IrOqP}g z9mBZhF8VOlht}u|_9K}juzU#jxMv^{=h+yB3I_z@PkhW)pG9ve+ZgJABJd>DAr6L6 zWe5ReQx_EhG2fUC`))FYz#z}%1k6s}>GM=wnw&~eQ5o;y!Xz6nK>Aqfv~)H{jxHSs zn%jX#|0AXor{#TG_|~I%5+yCLQIdv=aQW9)s|Meq^+q=DG&6|?JBqu5M`Yaatf}+M z(Bu;e(syziA4BSP06igl0JM5Ij!8_6IFoYTH3Gy>JlZ1&3`6h6o2-E0URpt~WguUX zw*ttcW7&n{kZQ6<5DQO;`y<6gp_3FnV2bjNa*(vb5r5Jb;xwV*g}5>2qO)8{H;En~ zhQ~E`3vi+vkp(!)ZbEb(p;`}54{Tl(XA;adPwm)31ZlDaX$Yp!gIe%aP0i>`X}C2F zzC}0mA#iiduz3_bTpMf$#0kG>?DkM-hAD{*G)Uy?4#k1b+Cs_EwKD|;8YP@lrzB0L z+MrUtow^e~g(7RLN`kd~(Z@t4Z~}GuG|Iy;YKJczqIn2np^Er0gtRm(r61-ir?IRV zxtCKhSP2c;w;`aX(lk9-V?V~~UPogIRlW0DA)Uvtg!hY_IMXkI$OB95ZKN}K9qdkRnL;v=hx~D!u#p0N#wsovk{P;J2b!it)I4M#{e`` zMAavq1N9mZ(w^dLOQDKJyNnM%cUgAN9rvUv0rZ@Bjm@CEkLWL{N1y8LIR5@WRI4W~ lw95a7k~I7OiHF4(ORi6{V)Z<&TEO77<|hl&v>$Dc{4b)1rbqw) literal 0 HcmV?d00001 diff --git a/book/src/pcc/prior-processes.md b/book/src/pcc/prior-processes.md index 8563e4d5..3a6fb8a7 100644 --- a/book/src/pcc/prior-processes.md +++ b/book/src/pcc/prior-processes.md @@ -7,6 +7,15 @@ In Lace (and in Bayesian nonparametrics) we put a prior on the number of paramet The Dirichlet process more heavily penalizes new categories with an exponential fall off while the Pitman-Yor process has a power law fall off in the number for categories. When d = 0, Pitman-Yor is equivalent to the Dirichlet process. -While Pitman-Yor may fit the data better it will create more parameters, which will cause model training to take longer. +![Dirichlet Process](img/crp.png) + +**Figure**: Category ID (y-axis) by instance number (x-axis) for Dirichlet process draws for various values of alpha. + +Pitman-Yor may fit the data better but (and because) it will create more parameters, which will cause model training to take longer. + +![Pitman-Yor Process](img/pyp.png) + +**Figure**: Category ID (y-axis) by instance number (x-axis) for Pitman-Yor process draws for various values of alpha and d. + For those looking for a good introduction to prior process, [this slide deck](https://www.gatsby.ucl.ac.uk/~ywteh/teaching/probmodels/lecture5bnp.pdf) from Yee Whye Teh is a good resource. diff --git a/book/src/workflow/codebook.md b/book/src/workflow/codebook.md index 98205e0b..2788c219 100644 --- a/book/src/workflow/codebook.md +++ b/book/src/workflow/codebook.md @@ -49,7 +49,7 @@ let df = CsvReader::from_path(paths.data) .unwrap(); // Create the default codebook -let codebook = Codebook::from_df(&df, None, None, false).unwrap(); +let codebook = Codebook::from_df(&df, None, None, None, false).unwrap(); ``` diff --git a/book/src/workflow/model.md b/book/src/workflow/model.md index b35d68a3..e13299f5 100644 --- a/book/src/workflow/model.md +++ b/book/src/workflow/model.md @@ -125,7 +125,7 @@ let df = CsvReader::from_path(paths.data) .unwrap(); // Create the default codebook -let codebook = Codebook::from_df(&df, None, None, false).unwrap(); +let codebook = Codebook::from_df(&df, None, None, None, false).unwrap(); // Build an rng let rng = Xoshiro256Plus::from_entropy(); @@ -156,12 +156,12 @@ let run_config = EngineUpdateConfig::new() .n_iters(100) .transitions(vec![ StateTransition::ColumnAssignment(ColAssignAlg::Gibbs), - StateTransition::StateAlpha, + StateTransition::StatePriorProcessParams, StateTransition::RowAssignment(RowAssignAlg::Sams), StateTransition::ComponentParams, StateTransition::RowAssignment(RowAssignAlg::Slice), StateTransition::ComponentParams, - StateTransition::ViewAlphas, + StateTransition::ViewPriorProcessParams, StateTransition::FeaturePriors, ]); diff --git a/lace/Cargo.lock b/lace/Cargo.lock index fcabe039..d9daa165 100644 --- a/lace/Cargo.lock +++ b/lace/Cargo.lock @@ -1141,7 +1141,7 @@ dependencies = [ [[package]] name = "lace" -version = "0.7.0" +version = "0.8.0" dependencies = [ "approx", "clap", From 0c15294bd16400621b3024883da335bb57ca9274 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Tue, 2 Apr 2024 11:36:43 -0500 Subject: [PATCH 35/43] Update pitman-yor image in book --- book/src/pcc/img/pyp.png | Bin 472830 -> 434693 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/book/src/pcc/img/pyp.png b/book/src/pcc/img/pyp.png index 745608451fd64a7f2ef8fc545804786b089f2c24..a0867cfedaba275524f77eec29569309b9f560e4 100644 GIT binary patch literal 434693 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
-_n= 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 mCb=z6$S3dVSlu%Gi-WpigM^u_R|g3zYb?X{ zkf;|ZZ=hU2R3zdzX%fQI>Bv}iV!aIGdMGMVN>7b{sas)g?vK7lDVBF&Gl0pB0C!j9 z2{L;dW>@Au=*rH;j^@@6MC=ax2onXS|C=?WU|4JLRaf4H7F8Zbgt~Rk*`!wg>qJFZ z@AESRG8$AJo-_Y1p1gm}sh#WT+;Ms?Xqmdj7%6Ki$B;N>6HV<9NMw64`Fa7GdIx4`t2bKc@BlU_RS>qaHKfd7cHj% zaSA{~fjt0VgTeKHeKIpAs}WmC`{|)GW79EFa7x=fds6K*{vis>U%Pc{A;r1RsFM~- z*(|up404>!Npnw?#iQ!>+tpm?I;6lP<7H)0+0xtk>=8f>Q-$D(~BOV!W*|8v=4VppJ1`Wv1 zv@d&!Pe!GGr41wwW)u#Av7D|Eqk^13V7RM>F99pM^#a!S9z*d6moC1JO|?v5KSTJ^Yo(Wx5kMlW*yFGN-(4^21tr z(WtD0mDx7`e5#edS>n|qsOm$f$=P^#t*BvR66M1Dz!U3n&O1o*puMTF{ zj%=UCHPXUbzjARqooGfu<>1J0YUagLneG*+rWku>6{c5-V?xM$It{5kwr(K3;`0eO^@MB2@0jV z+5AUxT!c0f={=v89O;WQCZ1Ph2{BlN7bQ;Pl6X~e>JJVVA)SI(3eDLwM0U0l6LShU zUmErU31c%xpl*;cN7NWiE34({WxuiY0)m%w7XJt1pk^Y`O@XN>G*n7J?6NPycsSt<9H7ifmMW4V4#USDW947+6PMQn@1B2-J zJ%8IB*G*V3FRgsbcO$c=b|8zx!U5Dfa z8c|jCQgg>a?@1@W&KEg$)v0t#gB8V2czh=P94leNX7tbkn;7vjLjHi?2&?r~&BnEJ zp3alMRm6tD)1ywg4mmkBg6kS8PDY@Rw27YOA?)z$TVT_M%}F{k=-CC_84g0YjX8So zNNLWRbaV%N>FF8rG<)lt7Z>;y(QTst=NA<|^*h=}eHTb(q=UbEBcW!ng8{8O=ZN%O zl=_rhC&5?t`TLpNNjocf3c4CbQ4;c~Z^`u?o$?k}d*w(+Q_BSMGUr@F{)P(-+XioO zwQ+8!nvL_e_R#gs%bM@HTZ#ir;HRGqWO)eh!KphA<*r(A>uh7Qcfq``@AZ6BRY<~< z|M^Muk)%;0?hND(a##zfx9Toek*cwm53WsUpV~R$^IYnyU%n*oP{e@l)WId*gNR9j z?`VMC4M^SkUErtwm|o|s7gMSDCJ4tcB7(7o!GH}bfuDgWN$ubvh|+_Nlje2ouR7^z z%YT(9hKV{4M=$=?a#CQ{>wsN+m(&o(vaQA5FCNp%Jg6eLn#ndsH6YUvIYKl5^$c{bYf{Q!VZng;DtEpMsbX4APEKLjyoQEY41T8k`nZ_1F1^WMEON#W z0SA>sN-$?~4H`oKupD-uWl?{h$5sK>sF?pze`XR+t|C@nw5l?|>R|2a;o>6>Gz{0v zxHo}guH%UurrO>O#EcBrA<{WfNzs)PPmbkK)_jciqxU2*2srSF=;mPmVZ(;g)lS%T z;HQw&Gdo^kJuzTm{M)H)zilje+GEupuk(wSLNUvtL~d|p5kOg>I584&dzry0Se8Rz zv%uKLh@@MLQ$(E?q^i{uwlM@RZ+!n$57H9qV{YBp59YlfoN3h`hjo~vk?}nS?<6iR z4hYXr3LPFf1Wn+?B;x$i?-FCV4f;4N02k%V`BgqTYJR&X?J!y&R6ZmJQ|RgzDIGTm zBmtgzQDO)%G#BpHMz+IPyYxAj>*{?n4{lnf;X22IV$ zR|of6GAlF%ueiNuDI*2%!8U6(w+<(<h?5%@i(^&quL{V#L`R<|Q|r^? zI;W+-u=nAO3KQV$kZb~B`QN^S)oUjnOPry115~;cb<7}UoUs7Zp@udN1_qcI<%DAH zXvFh*F!Og2%^Q-P(utN}pcFDmL57#-e`Rfy{KT8-<;aY)ObrZ|?LS={-~7CjWQ*=h z7H>>i2g6JrPCF(#Zhjf8=o6z;x{jj#mlE`LW0PlgvDD|-Jul=Ry2;&L>GZmOX9-D@ zth!&$go+%o1q}`JOkHh02_N(|I(;eR9FlLb(U5Ck7KGet$HeMb6= z@#DRwjdvGpgW|jWaUoz5R56Dh_U^J+Bs^ipm=FTk4!H3lJDZCEkq(^0S3m{N-J4lP znDb+K#7&UBbL-ZJme&RXe@kHL`lg6AaU-^%Ef^!_?D8)U zMEV+ct6*t{rRW#2`Z0> zK?Kw$mDpy36Q!k!ZYLKv=y$|FAw`abBgdf;E(OPq#T2b_?mTWDe`x1(9T})=1^M~! zo9r{It%oPE4NkU=_7wlK5ImvYn4p0jq<`l(mGf2M)r}&jMY74cn|f|NhD5_8nPRoU z>tW<*4*D*_m@SVUKGXoi2uBW1L0q$RrAht*SX^=|Cmp>gu(f*a@0|O2v53>}q(sCZ zuKr9EaTr=sh*2B56g-OfzibYdSAfY6a)>5uAbqBO|6?b=%3t372-afU6{@CPXVFm} zXS+;mN)V(dyvN;Mfnol;mvL%lT?{=ecKnr#4BCgV%ItXWUyi~fu3GcMWk*~tj(7j> z7AF?72k2o~(Jy|TC-4a#DjtDPD~&D^k32G{8aV*1RtB-*R60DUNq(2FuP-BjHHNI!?$j193f{`9EuhI6gZnh4rPESN*Ixvu50;`{;guQlaITXTBYQ&`d#)$o_VX8BCd+~I$bL<3W$m*_KSPS$;+E! z=8$;6aWKPEoDc`F(A=zx`=6}#^XURMss(`@P;RHn=qLnBzNT_hct)UZSl`-fcfK9w zRlSUn-7qrfT<4d2$1VSJnZNFOH6sP#*RGHAA1Md*bc|yAe%J{2rttRvbU^S2Akr~{ z^!U-EM?&5~O=|LC2cLYd{;D;<>ubZpma+LybMG~N8s%r|6zt?I{#-6O!_KqpuAo}g zpjwf0W5}5kvp0Ah`+P?c259sjzql|$2|M9Zv4010B~H16hhj%Jiptr4(~WpAW-2t$ z1g6Q2WU#ghhVSCd{E3Q%11^yD8h*P-OVub(eSm&Vl~K6KUNU}H+_nRZBp6c42hB}QeF5n*s~hb1`+lg3 zE(PSSgFOK%Ffrb`_SvIBG(p2aTq^(3GBe4628p7>C_@eoIPj`=XpF8L)73Uia>d`5 z!6_Z?W}{&QR8)KkrxFBI(8Pbu=l<&$dour1oc_>1sotQ&wU5{RdSI>4*;#*H$W#v_ z9C>33Bh#>r4nmh{Gzyvxi}=^HZldzsjeV;zXk6(mruHf@?Xv8*>`5N)*U>B#R+e=5 zA)o2P7sv!d6>pRYr2TUt=5sYOOkYy-gd?7B;#bp8L{JXHBc~#PK?vy-?a#;Ma43!{ zI1qj@Z~-x-5#0#xGN=NJWn@0f$C^2-@AOK#w4=gpT=)O-6qx(ellG0!%7jKuCX^Gt zSzjOrpu%eGzIrIb!;N^eh)0|Z+`?9YERxE|Fp8O2v+=oQ+K7HTmkPH)#>NqUZ3qlQ zaphB6$DuypAH03zhWv=zN_G!nwR3GA%u^Zgg=z}6AOzogfE?BmEiGV!d6L0aa-ablag8>;AvGiFa*0}*+rK8aE6E^{nB5n zN|m+!I>2zkiJ8VYOF}!w=n^?r)vl+X9IS_>{+gU7K0JY zrN^9bb`9}jfXA=LQEr8Bxrx48IfS;`rofI0F7#};geSwpoqk@CN4=Adbk+oFDU1jO z^wD>!pQmeIWQZ<DPw?f_+6a#1?&Wn4gbqfhjWHt9s7bQ7aX(; z%dW97$QcJ;4StsHc9e@{b8Dww+1(B@*o)X1!d-wELc-zGNOHaolni(D} z`stSKQ%l`a)H?9DAH!~XNYvpgMf@cBdtU>725Pw{%xnaH#BOWAuyGD(_lTI!N|7ao zpkc_o-KS4G%AL{GAun`ktz44udjt)|I_h|X&57IcrdCjX^MdvIxrKWjk(nT1f>+5-N#@+ zAmdSFA_pf7uyYZQ9pH%<$jWAu7Y@@1Q3C`Now>QWpM(fnOL$l~QaI!UzcNG?=0+<09_%_GF-g8%wCESLCdi_Kc`Pv1)X=;e%aiB+6{+|oog?cm z<&8VwY#sd>byN)ePaJF?&d*`oaqM@0HmKmB z;7g+)+x*?CPDuu)>OTvN@zInmMKa%-_XHXv?n_7)h12J`WR-D#Ih%vWc~EyOtr-bj z289p=_9J3@#IzZGEWyOCp?Bpcg$-4(=^i{XX!TQM0lka=)F(LD@*<>}rBC9R9Sxxm zm@7v-w!Q#%34ZdCrfm#{Z6ru1f~iSyhKB+BT7HhZCSW;Ew>pZUjJ<~sA5Op(UM&amvemK-o^3TI61es? z--+(Qa8Dco4P}Ew70zS&aAXB=|4ZXDHtK14%qiyst$tD!;3Os{BcRmoBy&hO^B%oQ zQd9MGnJ$^vs%b-WGG)l=)NFDFAUVGk|N4l_BOavvF%Qy`M=*i~M(MTCRZ47#ngw4)D1_NxLd4 zLAO_Vf~C@>j|{}xxkfu*&_k7ThoDYu9K@xCcrr9HB7HDK?nCa^_ED_u0&I>)PCL%< zTEe@vpLexaM&$4-zZopsMRn(O04q2}9jz??8CD%3d~tJ>G$xpkB60m6O6 zOY2b!kD^QMBU?jovIPjSz@MpoKhLJ_$N2Sw*N!JNU6#&@K7d0=DYV2&?rgCES4Nmo z*dL|U?u2793(2C@(oMMDfpPoREys^sP?DqI{2-qLV38u^EAFLgyE{0PlW=KpbwHXO{@hT% z^4zk)(Onh0Xj<8_=8ub*oK^r*4893)ltAxaK)$tx*%FF*f=80Kt!PwmrL{U{}LnpUgv~$ zYZ>k1s5~jcFZNCs_WP9bg1zdXC^pR3ndxc42Pj-*DVt6BWd%$YNZ_rsJXA9}%- zbYP~r0RWzy!iw_;K}zGK4JRB2Oy-V}$Bm)R!+vrD{fOw~*%Q<~$Bp;e(lqnb2}a!- z3S>yWxYKX>+(0xn#C#?--9QjJZ{L@^(^YHlNN5x40|cWn(m+6JOIV=OHhd`#^Y$kg zk_j$@oGyy`Nf<5GFq6Tn8ZZ^%r7WP0yW?-S?C#B&WB`D>cA}R@z37|dKQ;0cJ?AK* zTr4r(9efmyn5Y=DVa<5EHSqI7itiJD5yW)1_vsQ-P)_F6lv28iO`{ir zOiCLZXeIy=r|0v4+zWB0Up)c4b3kb3lJN!12SOYoW0ufMM?aJhzuLP|H2v|2X5j?bw6q5{VbEXK$Ngv-`D(t#=@W3p(hJ>fC;!NdT*+DCPT#z%uPlVZ zadJMIi5h3j_*w9fDlvOr7yAua8Ln|^MLp@EXJU1v$B99J6SFW(pCgkTMcM*KL~b4P zL+D^ImGeEm1F_;|&<)`d7`xg}=syg5;@dZ`0^qogoFI)U{&i&40JU7VqYd^!ZcA+o zXtvch$3)^c43@Q@ORw082|scoI8I8+#LyM|7etX$QyZV|G~)lE?9Ice{@Uo_Q;H}G zX_BFnsWel`7#&lTq=Z7INQjDLF3OZd11e)0WFA6g49O6cA|X>UXUHtPYaicddVjz7 zkGHGqx%&20=X3UF?|t9*y4PAa^No{>(W9ULQrR#lBW_^Ok`Z?u9Ah*

Y4v?izQi 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%0A@`_|uX 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
oBznEgW|Hmot$N|C*5m*+<{~J@ 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 From 982c4d9e3dccce1af6df9b8d766e8d3ab1bc6eb2 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Tue, 9 Apr 2024 15:10:05 -0500 Subject: [PATCH 36/43] updating versions --- CHANGELOG.md | 28 +++++++++++++++++++++++++--- cli/Cargo.lock | 14 +++++++------- cli/Cargo.toml | 4 ++-- lace/Cargo.lock | 10 +++++----- lace/Cargo.toml | 12 ++++++------ lace/lace_cc/Cargo.toml | 8 ++++---- lace/lace_codebook/Cargo.toml | 6 ++---- lace/lace_geweke/Cargo.toml | 4 ++-- lace/lace_metadata/Cargo.toml | 8 ++++---- lace/lace_metadata/src/config.rs | 2 +- lace/lace_stats/Cargo.toml | 2 +- pylace/Cargo.lock | 14 +++++++------- pylace/Cargo.toml | 4 ++-- pylace/pyproject.toml | 2 +- 14 files changed, 69 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52bc4a03..90cef260 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,29 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [rust-0.8.0] - 2024-04-10 + +### Added + - Added ability Pitman-Yor prior process -- Users now specify the prior process in the codebook + - Users now specify the prior process (and its prior) in the codebook +- `lace_stats::prior_process::Builder` + +### Changed + +- Offloaded a lot of `Assignment` functionality to `PriorProcess` +- `StateAlpha` and `ViewAlpha` transitions are now `StatePriorProcessParams` and `ViewPriorProcessParams` +- Changed `SerializedType` default to `Bincode` +- moved `Assignment` from `lace_cc` to `lace_stats` + +## [python-0.8.0] 2024-04-10 + +### Added + +- Added ability Pitman-Yor prior process + +### Changed + - `StateAlpha` and `ViewAlpha` transitions are now `StatePriorProcessParams` and `ViewPriorProcessParams` ## [python-0.7.1] - 2024-02-27 @@ -281,7 +301,9 @@ Initial release on [PyPi](https://pypi.org/) Initial release on [crates.io](https://crates.io/) -[unreleased]: https://github.com/promised-ai/lace/compare/python-0.7.1...HEAD +[unreleased]: https://github.com/promised-ai/lace/compare/python-0.8.0...HEAD +[rust-0.8.0]: https://github.com/promised-ai/lace/compare/rust-0.7.0...rust-0.8.0 +[python-0.8.0]: https://github.com/promised-ai/lace/compare/python-0.7.1...python-0.8.0 [python-0.7.1]: https://github.com/promised-ai/lace/compare/python-0.7.0...python-0.7.1 [python-0.7.0]: https://github.com/promised-ai/lace/compare/python-0.6.0...python-0.7.0 [rust-0.7.0]: https://github.com/promised-ai/lace/compare/rust-0.6.0...rust-0.7.0 diff --git a/cli/Cargo.lock b/cli/Cargo.lock index 6873681a..5521fcef 100644 --- a/cli/Cargo.lock +++ b/cli/Cargo.lock @@ -881,7 +881,7 @@ dependencies = [ [[package]] name = "lace" -version = "0.7.0" +version = "0.8.0" dependencies = [ "ctrlc", "dirs", @@ -910,7 +910,7 @@ dependencies = [ [[package]] name = "lace-cli" -version = "0.7.0" +version = "0.8.0" dependencies = [ "approx", "clap", @@ -924,7 +924,7 @@ dependencies = [ [[package]] name = "lace_cc" -version = "0.6.0" +version = "0.7.0" dependencies = [ "enum_dispatch", "itertools", @@ -944,7 +944,7 @@ dependencies = [ [[package]] name = "lace_codebook" -version = "0.6.0" +version = "0.7.0" dependencies = [ "lace_consts", "lace_data", @@ -974,7 +974,7 @@ dependencies = [ [[package]] name = "lace_geweke" -version = "0.3.0" +version = "0.4.0" dependencies = [ "indicatif", "lace_stats", @@ -986,7 +986,7 @@ dependencies = [ [[package]] name = "lace_metadata" -version = "0.6.0" +version = "0.7.0" dependencies = [ "bincode", "hex", @@ -1005,7 +1005,7 @@ dependencies = [ [[package]] name = "lace_stats" -version = "0.3.0" +version = "0.4.0" dependencies = [ "itertools", "lace_consts", diff --git a/cli/Cargo.toml b/cli/Cargo.toml index 38d9689b..c4d5b1bf 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lace-cli" -version = "0.7.0" +version = "0.8.0" authors = ["Promised AI"] edition = "2021" rust-version = "1.62.0" @@ -17,7 +17,7 @@ name = "lace" path = "src/main.rs" [dependencies] -lace = { path = "../lace", version = "0.7.0", features = ["formats", "ctrlc_handler"]} +lace = { path = "../lace", version = "0.8.0", features = ["formats", "ctrlc_handler"]} clap = { version = "4.3.17", features = ["derive"] } env_logger = "0.10" serde_yaml = "0.9.4" diff --git a/lace/Cargo.lock b/lace/Cargo.lock index d9daa165..b187c373 100644 --- a/lace/Cargo.lock +++ b/lace/Cargo.lock @@ -1176,7 +1176,7 @@ dependencies = [ [[package]] name = "lace_cc" -version = "0.6.0" +version = "0.7.0" dependencies = [ "approx", "clap", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "lace_codebook" -version = "0.6.0" +version = "0.7.0" dependencies = [ "indoc", "lace_consts", @@ -1235,7 +1235,7 @@ dependencies = [ [[package]] name = "lace_geweke" -version = "0.3.0" +version = "0.4.0" dependencies = [ "indicatif", "lace_stats", @@ -1247,7 +1247,7 @@ dependencies = [ [[package]] name = "lace_metadata" -version = "0.6.0" +version = "0.7.0" dependencies = [ "bincode", "hex", @@ -1267,7 +1267,7 @@ dependencies = [ [[package]] name = "lace_stats" -version = "0.3.0" +version = "0.4.0" dependencies = [ "approx", "criterion", diff --git a/lace/Cargo.toml b/lace/Cargo.toml index 62cd52e0..c88d3bbf 100644 --- a/lace/Cargo.toml +++ b/lace/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lace" -version = "0.7.0" +version = "0.8.0" authors = ["Promised AI"] build = "build.rs" edition = "2021" @@ -31,14 +31,14 @@ name = "lace" path = "src/lib.rs" [dependencies] -lace_cc = { path = "lace_cc", version = "0.6.0" } +lace_cc = { path = "lace_cc", version = "0.7.0" } lace_utils = { path = "lace_utils", version = "0.3.0" } -lace_stats = { path = "lace_stats", version = "0.3.0" } -lace_codebook = { path = "lace_codebook", version = "0.6.0", default_features=false} -lace_geweke = { path = "lace_geweke", version = "0.3.0" } +lace_stats = { path = "lace_stats", version = "0.4.0" } +lace_codebook = { path = "lace_codebook", version = "0.7.0", default_features=false} +lace_geweke = { path = "lace_geweke", version = "0.4.0" } lace_consts = { path = "lace_consts", version = "0.2.1" } lace_data = { path = "lace_data", version = "0.3.0" } -lace_metadata = { path = "lace_metadata", version = "0.6.0" } +lace_metadata = { path = "lace_metadata", version = "0.7.0" } dirs = { version="5", optional = true} num = "0.4" rand_xoshiro = { version="0.6", features = ["serde1"] } diff --git a/lace/lace_cc/Cargo.toml b/lace/lace_cc/Cargo.toml index aca32705..5c092ca1 100644 --- a/lace/lace_cc/Cargo.toml +++ b/lace/lace_cc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lace_cc" -version = "0.6.0" +version = "0.7.0" authors = ["Promised AI"] edition = "2021" exclude = ["tests/*", "resources/test/*", "target/*"] @@ -11,11 +11,11 @@ description = "Core of the Lace cross-categorization engine library" [dependencies] lace_utils = { path = "../lace_utils", version = "0.3.0" } -lace_stats = { path = "../lace_stats", version = "0.3.0" } -lace_geweke = { path = "../lace_geweke", version = "0.3.0" } +lace_stats = { path = "../lace_stats", version = "0.4.0" } +lace_geweke = { path = "../lace_geweke", version = "0.4.0" } lace_consts = { path = "../lace_consts", version = "0.2.1" } lace_data = { path = "../lace_data", version = "0.3.0" } -lace_codebook = { path = "../lace_codebook", version = "0.6.0" } +lace_codebook = { path = "../lace_codebook", version = "0.7.0" } rand = {version="0.8", features=["serde1"]} rayon = "1.5" serde = { version = "1", features = ["derive"] } diff --git a/lace/lace_codebook/Cargo.toml b/lace/lace_codebook/Cargo.toml index 824a12ba..a279569a 100644 --- a/lace/lace_codebook/Cargo.toml +++ b/lace/lace_codebook/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lace_codebook" -version = "0.6.0" +version = "0.7.0" authors = ["Promised.ai"] edition = "2021" license = "BUSL-1.1" @@ -10,7 +10,7 @@ description = "Contains the Lace codebook specification as well as utilities for [dependencies] lace_consts = { path = "../lace_consts", version = "0.2.1" } -lace_stats = { path = "../lace_stats", version = "0.3.0" } +lace_stats = { path = "../lace_stats", version = "0.4.0" } lace_utils = { path = "../lace_utils", version = "0.3.0" } lace_data = { path = "../lace_data", version = "0.3.0" } serde = { version = "1", features = ["derive"] } @@ -19,9 +19,7 @@ thiserror = "1.0.11" polars = { version = "0.36", default_features=false, features=["csv", "dtype-i8", "dtype-i16", "dtype-u8", "dtype-u16"] } [features] -# default = ["formats"] formats = ["polars/json", "polars/ipc", "polars/decompress", "polars/parquet"] -# formats = [] [dev-dependencies] tempfile = "3.3.0" diff --git a/lace/lace_geweke/Cargo.toml b/lace/lace_geweke/Cargo.toml index 34920f4e..db782e19 100644 --- a/lace/lace_geweke/Cargo.toml +++ b/lace/lace_geweke/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lace_geweke" -version = "0.3.0" +version = "0.4.0" authors = ["Promised AI"] edition = "2021" license = "BUSL-1.1" @@ -9,7 +9,7 @@ repository = "https://github.com/promised-ai/lace" description = "Geweke tester for Lace" [dependencies] -lace_stats = { path = "../lace_stats", version = "0.3.0" } +lace_stats = { path = "../lace_stats", version = "0.4.0" } lace_utils = { path = "../lace_utils", version = "0.3.0" } serde = { version = "1", features = ["derive"] } serde_yaml = "0.9.4" diff --git a/lace/lace_metadata/Cargo.toml b/lace/lace_metadata/Cargo.toml index 8662dd51..7d8d2296 100644 --- a/lace/lace_metadata/Cargo.toml +++ b/lace/lace_metadata/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lace_metadata" -version = "0.6.0" +version = "0.7.0" authors = ["Promised AI"] edition = "2021" license = "BUSL-1.1" @@ -9,10 +9,10 @@ repository = "https://github.com/promised-ai/lace" description = "Archive of the metadata (savefile) formats for Lace. In charge of versioning and conversion." [dependencies] -lace_stats = { path = "../lace_stats", version = "0.3.0" } +lace_stats = { path = "../lace_stats", version = "0.4.0" } lace_data = { path = "../lace_data", version = "0.3.0" } -lace_codebook = { path = "../lace_codebook", version = "0.6.0" } -lace_cc = { path = "../lace_cc", version = "0.6.0" } +lace_codebook = { path = "../lace_codebook", version = "0.7.0" } +lace_cc = { path = "../lace_cc", version = "0.7.0" } serde = { version = "1", features = ["derive"] } serde_yaml = "0.9.4" serde_json = "1" diff --git a/lace/lace_metadata/src/config.rs b/lace/lace_metadata/src/config.rs index 18254a70..6bba2345 100644 --- a/lace/lace_metadata/src/config.rs +++ b/lace/lace_metadata/src/config.rs @@ -28,7 +28,7 @@ impl FromStr for SerializedType { impl Default for SerializedType { fn default() -> Self { - Self::Yaml + Self::Bincode } } diff --git a/lace/lace_stats/Cargo.toml b/lace/lace_stats/Cargo.toml index c402aba6..d5b441e0 100644 --- a/lace/lace_stats/Cargo.toml +++ b/lace/lace_stats/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lace_stats" -version = "0.3.0" +version = "0.4.0" rust-version = "1.62.0" authors = ["Promised AI"] edition = "2021" diff --git a/pylace/Cargo.lock b/pylace/Cargo.lock index 6cc3342e..75d1782f 100644 --- a/pylace/Cargo.lock +++ b/pylace/Cargo.lock @@ -521,7 +521,7 @@ dependencies = [ [[package]] name = "lace" -version = "0.7.0" +version = "0.8.0" dependencies = [ "dirs", "indexmap", @@ -549,7 +549,7 @@ dependencies = [ [[package]] name = "lace_cc" -version = "0.6.0" +version = "0.7.0" dependencies = [ "enum_dispatch", "itertools", @@ -569,7 +569,7 @@ dependencies = [ [[package]] name = "lace_codebook" -version = "0.6.0" +version = "0.7.0" dependencies = [ "lace_consts", "lace_data", @@ -599,7 +599,7 @@ dependencies = [ [[package]] name = "lace_geweke" -version = "0.3.0" +version = "0.4.0" dependencies = [ "indicatif", "lace_stats", @@ -611,7 +611,7 @@ dependencies = [ [[package]] name = "lace_metadata" -version = "0.6.0" +version = "0.7.0" dependencies = [ "bincode", "hex", @@ -630,7 +630,7 @@ dependencies = [ [[package]] name = "lace_stats" -version = "0.3.0" +version = "0.4.0" dependencies = [ "itertools", "lace_consts", @@ -1345,7 +1345,7 @@ checksum = "fe7765e19fb2ba6fd4373b8d90399f5321683ea7c11b598c6bbaa3a72e9c83b8" [[package]] name = "pylace" -version = "0.7.1" +version = "0.8.0" dependencies = [ "bincode", "lace", diff --git a/pylace/Cargo.toml b/pylace/Cargo.toml index 45a86ba7..3612514a 100644 --- a/pylace/Cargo.toml +++ b/pylace/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pylace" -version = "0.7.1" +version = "0.8.0" edition = "2021" license = "BUSL-1.1" @@ -9,7 +9,7 @@ name = "lace" crate-type = ["cdylib"] [dependencies] -lace = { path = "../lace", version="0.7.0" } +lace = { path = "../lace", version="0.8.0" } lace_utils = { path = "../lace/lace_utils", version="0.3.0" } rand = "0.8.5" rand_xoshiro = "0.6.0" diff --git a/pylace/pyproject.toml b/pylace/pyproject.toml index b67f36e2..b827dba9 100644 --- a/pylace/pyproject.toml +++ b/pylace/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "maturin" [project] name = "pylace" -version = "0.7.1" +version = "0.8.0" description = "A probabalistic programming ML tool for science" requires-python = ">=3.8" classifiers = [ From c4bed756c50895ff013e02491534aa76b6e2a342 Mon Sep 17 00:00:00 2001 From: Mike Schmidt Date: Thu, 25 Apr 2024 12:36:36 -0600 Subject: [PATCH 37/43] feat(python): Added `remove_rows` to pylace CoreEngine which removes rows based on index. --- pylace/src/lib.rs | 57 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/pylace/src/lib.rs b/pylace/src/lib.rs index 3f750b26..c53e43dd 100644 --- a/pylace/src/lib.rs +++ b/pylace/src/lib.rs @@ -13,7 +13,7 @@ use df::{DataFrameLike, PyDataFrame, PySeries}; use lace::data::DataSource; use lace::metadata::SerializedType; use lace::prelude::ColMetadataList; -use lace::{EngineUpdateConfig, FType, HasStates, OracleT}; +use lace::{Datum, EngineUpdateConfig, FType, HasStates, OracleT, TableIndex}; use polars::prelude::{DataFrame, NamedFrom, Series}; use pyo3::create_exception; use pyo3::exceptions::{PyIndexError, PyRuntimeError, PyValueError}; @@ -1179,6 +1179,61 @@ impl CoreEngine { Ok(()) } + /// Remove Rows at the given indices + fn remove_rows(&mut self, rows: &PyList) -> PyResult { + let remove: Vec = rows + .into_iter() + .map(|x| x.str().map(|s| s.to_string())) + .collect::>>()?; + + let row_idxs: Vec = remove + .iter() + .map(|row_name| { + self.engine.codebook.row_index(row_name).ok_or_else(|| { + PyIndexError::new_err(format!( + "{row_name} is not a valid row index" + )) + }) + }) + .collect::>>()?; + + let mut df = polars::frame::DataFrame::empty(); + let index = polars::series::Series::new( + "index", + remove.iter().map(|x| x.clone()).collect::>(), + ); + df.with_column(index).map_err(to_pyerr)?; + + for col_ix in 0..self.engine.n_cols() { + let values = row_idxs + .iter() + .map(|&row_ix| { + self.engine.datum(row_ix, col_ix).map_err(to_pyerr) + }) + .collect::>>()?; + + let ftype = self.engine.ftype(col_ix).map_err(to_pyerr)?; + let srs = utils::vec_to_srs( + values, + col_ix, + ftype, + &self.engine.codebook, + )?; + df.with_column(srs.0).map_err(to_pyerr)?; + } + + self.engine + .remove_data( + row_idxs + .into_iter() + .map(|idx| TableIndex::Row(idx)) + .collect::>>(), + ) + .map_err(to_pyerr)?; + + Ok(PyDataFrame(df)) + } + /// Append new columns to the Engine fn append_columns( &mut self, From d1f89158e6f2f28b6dc7f8605b99d40c2befc9db Mon Sep 17 00:00:00 2001 From: Mike Schmidt Date: Thu, 25 Apr 2024 16:40:10 -0600 Subject: [PATCH 38/43] feat(python): Added Codebook.with_index to create a new codebook from an existing one fixup: Updated based on comments from @swandog --- pylace/src/lib.rs | 19 ++++++++++++++----- pylace/src/metadata.rs | 9 +++++++++ 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/pylace/src/lib.rs b/pylace/src/lib.rs index c53e43dd..192e52e0 100644 --- a/pylace/src/lib.rs +++ b/pylace/src/lib.rs @@ -1179,7 +1179,19 @@ impl CoreEngine { Ok(()) } - /// Remove Rows at the given indices + /// Remove Rows at the given indices. + /// + /// Example + /// ------- + /// + /// >>> import lace + /// >>> engine = lace.Engine('animals.rp') + /// >>> n_rows = engine.shape[0] + /// >>> removed = engine.remove_rows(["wolf", "ox"]) + /// >>> removed["index"].to_list() + /// ["wolf", "ox"] + /// >>> n_rows - 1 == engine.shape[0] + /// True fn remove_rows(&mut self, rows: &PyList) -> PyResult { let remove: Vec = rows .into_iter() @@ -1198,10 +1210,7 @@ impl CoreEngine { .collect::>>()?; let mut df = polars::frame::DataFrame::empty(); - let index = polars::series::Series::new( - "index", - remove.iter().map(|x| x.clone()).collect::>(), - ); + let index = polars::series::Series::new("index", remove); df.with_column(index).map_err(to_pyerr)?; for col_ix in 0..self.engine.n_cols() { diff --git a/pylace/src/metadata.rs b/pylace/src/metadata.rs index 1706e77a..87ad430f 100644 --- a/pylace/src/metadata.rs +++ b/pylace/src/metadata.rs @@ -668,6 +668,15 @@ impl Codebook { Ok(()) } } + + /// Create a new codebook with the same columns but row indices from another dataframe. + fn with_index(&self, new_index: Vec) -> PyResult { + let row_names = RowNameList::try_from(new_index).map_err(to_pyerr)?; + Ok(Self(lace::codebook::Codebook { + row_names, + ..self.0.clone() + })) + } } #[pyfunction] From 1fb140f283bff25d77e9d0395f6d694df905a668 Mon Sep 17 00:00:00 2001 From: Mike Schmidt Date: Thu, 2 May 2024 16:29:19 -0600 Subject: [PATCH 39/43] feat(python): Added tests for Codebook.with_index and Engine.remove_rows fixup: Corrected formatting in the python module --- pylace/lace/engine.py | 37 ++++++++++++++++++++++++++++++++++- pylace/src/lib.rs | 9 +++------ pylace/tests/test_codebook.py | 8 ++++++++ pylace/tests/test_engine.py | 10 ++++++++++ 4 files changed, 57 insertions(+), 7 deletions(-) diff --git a/pylace/lace/engine.py b/pylace/lace/engine.py index d729b218..aed646c3 100644 --- a/pylace/lace/engine.py +++ b/pylace/lace/engine.py @@ -2,7 +2,7 @@ import itertools as it from os import PathLike -from typing import TYPE_CHECKING, Dict, List, Optional, Union +from typing import TYPE_CHECKING, Dict, List, Optional, Union, Set import pandas as pd import plotly.express as px @@ -2387,6 +2387,41 @@ def clustermap( else: return ClusterMap(df, linkage) + def remove_rows( + self, + indices: Union[pd.Series, List[str], pd.Series, Set[str]], + ) -> pl.DataFrame: + """ + Remove rows from the table. + + Parameters + ---------- + indices: Union[pd.Series, List[str], pd.Series, Set[str]] + Rows to remove from the Engine, specified by index or id name. + + Example + ------- + Remove crab and squid from the animals example engine. + + >>> from lace.examples import Animals + >>> engine = Animals() + >>> n_rows = engine.n_rows + >>> removed = engine.remove_rows(["cow", "wolf"]) + >>> n_rows == engine.n_rows + 1 + True + >>> removed["index"] # doctest: +NORMALIZE_WHITESPACE + ┌────────┐ + │ index │ + │ --- │ + │ str │ + ╞════════╡ + │ cow │ + │ wolf │ + └────────┘ + + """ + return self.engine.remove_rows(indices) + class _TqdmUpdateHandler: def __init__(self): diff --git a/pylace/src/lib.rs b/pylace/src/lib.rs index 192e52e0..9690ca1c 100644 --- a/pylace/src/lib.rs +++ b/pylace/src/lib.rs @@ -1190,13 +1190,10 @@ impl CoreEngine { /// >>> removed = engine.remove_rows(["wolf", "ox"]) /// >>> removed["index"].to_list() /// ["wolf", "ox"] - /// >>> n_rows - 1 == engine.shape[0] + /// >>> n_rows - 2 == engine.shape[0] /// True - fn remove_rows(&mut self, rows: &PyList) -> PyResult { - let remove: Vec = rows - .into_iter() - .map(|x| x.str().map(|s| s.to_string())) - .collect::>>()?; + fn remove_rows(&mut self, rows: &Bound) -> PyResult { + let remove: Vec = rows.extract()?; let row_idxs: Vec = remove .iter() diff --git a/pylace/tests/test_codebook.py b/pylace/tests/test_codebook.py index c8dd9a09..f354f17b 100644 --- a/pylace/tests/test_codebook.py +++ b/pylace/tests/test_codebook.py @@ -3,6 +3,7 @@ import polars as pl import lace +from lace.examples import Animals def test_engine_from_polars_with_codebook_smoke(): @@ -65,3 +66,10 @@ def test_engine_with_boolean_string_columns(): assert str(engine.codebook.column_metadata["b"].value_map) == str( lace.ValueMap.bool() ) + + +def test_with_index(): + codebook = Animals().engine.codebook + new_codebook = codebook.with_index(["a", "b", "c"]) + + assert new_codebook.shape[0] == 3 diff --git a/pylace/tests/test_engine.py b/pylace/tests/test_engine.py index 55d17119..b55604eb 100644 --- a/pylace/tests/test_engine.py +++ b/pylace/tests/test_engine.py @@ -11,3 +11,13 @@ def test_deep_copy(): assert a.columns == b.columns assert a.shape == b.shape + + +def test_remove_rows(): + from lace.examples import Animals + + engine = Animals() + n_rows = engine.n_rows + removed = engine.remove_rows(["cow", "wolf"]) + assert n_rows == engine.n_rows + 2 + assert removed["index"].len() == 2 From 9238cc5042e38096abef436ba36afe2ae40858f4 Mon Sep 17 00:00:00 2001 From: Mike Schmidt Date: Tue, 30 Apr 2024 16:25:10 -0600 Subject: [PATCH 40/43] chore: Updated CI's maturin, ARM building on MacOS 14, and book versions --- .github/scripts/find_compatible_wheel.py | 20 +++++++++++------ .github/workflows/python-build-test.yaml | 24 +++++++++++---------- book/lace_preprocess_mdbook_yaml/Cargo.toml | 4 ++-- pylace/pyproject.toml | 2 +- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/.github/scripts/find_compatible_wheel.py b/.github/scripts/find_compatible_wheel.py index af3a9a34..08857173 100644 --- a/.github/scripts/find_compatible_wheel.py +++ b/.github/scripts/find_compatible_wheel.py @@ -10,23 +10,29 @@ description="Program to find wheels in a directory compatible with the current version of Python" ) -parser.add_argument("package", help="The name of the package that you are searching for a wheel for") +parser.add_argument( + "package", help="The name of the package that you are searching for a wheel for" +) parser.add_argument("dir", help="the directory under which to search for the wheels") -args=parser.parse_args() +args = parser.parse_args() -wheel=None +wheel = None for tag in sys_tags(): print(f"Looking for file matching tag {tag}", file=sys.stderr) - matches=glob.glob(args.package + "*" + str(tag) + "*.whl", root_dir=args.dir) + matches = glob.glob(args.package + "*" + str(tag) + "*.whl", root_dir=args.dir) if len(matches) == 1: - wheel=matches[0] + wheel = matches[0] break elif len(matches) > 1: - print("Found multiple matches for the same tag " + str(tag), matches, file=sys.stderr) + print( + f"Found multiple matches for the same tag `{tag}`", + matches, + file=sys.stderr, + ) -if wheel: +if wheel: print(os.path.join(args.dir, wheel)) else: sys.exit("Did not find compatible wheel") diff --git a/.github/workflows/python-build-test.yaml b/.github/workflows/python-build-test.yaml index caecdb8a..0259ba33 100644 --- a/.github/workflows/python-build-test.yaml +++ b/.github/workflows/python-build-test.yaml @@ -20,7 +20,7 @@ jobs: defaults: run: working-directory: pylace - + steps: - uses: actions/checkout@v4 @@ -30,7 +30,7 @@ jobs: python-version: '3.12' cache: 'pip' cache-dependency-path: "pylace/requirements-lint.txt" - + - name: Install Python dependencies run: | pip install --upgrade pip @@ -102,10 +102,11 @@ jobs: - name: Build wheels uses: PyO3/maturin-action@v1 with: + maturin-version: 1.5.1 target: ${{ matrix.target }} args: --release --out dist -i python3.8 -i python3.9 -i python3.10 -i python3.11 -i python3.12 --manifest-path pylace/Cargo.toml manylinux: auto - + - name: Install dev dependencies run: | pip install --upgrade pip @@ -113,7 +114,6 @@ jobs: - name: Install pylace run: | - ls -l ./dist WHEEL_FILE=$(python3 .github/scripts/find_compatible_wheel.py pylace ./dist) echo "Installing $WHEEL_FILE" pip install $WHEEL_FILE @@ -147,9 +147,10 @@ jobs: - name: Build wheels uses: PyO3/maturin-action@v1 with: + maturin-version: 1.5.1 target: ${{ matrix.target }} args: --release --out dist -i python3.8 -i python3.9 -i python3.10 -i python3.11 -i python3.12 --manifest-path pylace/Cargo.toml - + - name: Install dev dependencies run: | pip install --upgrade pip @@ -157,7 +158,6 @@ jobs: - name: Install pylace run: | - ls -l ./dist $WHEEL_FILE = (python3 .github/scripts/find_compatible_wheel.py pylace ./dist) echo "Installing $WHEEL_FILE" pip install $WHEEL_FILE @@ -172,11 +172,15 @@ jobs: path: dist macos: - runs-on: macos-latest needs: ["lint-python", "lint-rust"] strategy: matrix: - target: [x86_64, aarch64] + include: + - os: macos-latest + target: aarch64 + - os: macos-13 + target: x86_64 + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 @@ -190,24 +194,22 @@ jobs: - name: Build wheels uses: PyO3/maturin-action@v1 with: + maturin-version: 1.5.1 target: ${{ matrix.target }} args: --release --out dist -i python3.8 -i python3.9 -i python3.10 -i python3.11 -i python3.12 --manifest-path pylace/Cargo.toml - name: Install dev dependencies - if: ${{ matrix.target != 'aarch64' }} run: | pip install --upgrade pip pip install -r pylace/requirements-dev.txt - name: Install pylace - if: ${{ matrix.target != 'aarch64' }} run: | WHEEL_FILE=$(python3 .github/scripts/find_compatible_wheel.py pylace ./dist) echo "Installing $WHEEL_FILE" pip install $WHEEL_FILE - name: Run Tests - if: ${{ matrix.target != 'aarch64' }} run: pytest pylace/tests - name: Upload wheels diff --git a/book/lace_preprocess_mdbook_yaml/Cargo.toml b/book/lace_preprocess_mdbook_yaml/Cargo.toml index b202e30a..7a3c0a9e 100644 --- a/book/lace_preprocess_mdbook_yaml/Cargo.toml +++ b/book/lace_preprocess_mdbook_yaml/Cargo.toml @@ -16,8 +16,8 @@ path = "src/main.rs" anyhow = "1.0" clap = "4.2" env_logger = "0.10" -lace_codebook = { path = "../../lace/lace_codebook", version = "0.6.0" } -lace_stats = { path = "../../lace/lace_stats", version = "0.3.0" } +lace_codebook = { path = "../../lace/lace_codebook", version = "0.7.0" } +lace_stats = { path = "../../lace/lace_stats", version = "0.4.0" } log = "0.4" mdbook = "0.4" pulldown-cmark = { version = "0.9", default-features = false } diff --git a/pylace/pyproject.toml b/pylace/pyproject.toml index b827dba9..6651421b 100644 --- a/pylace/pyproject.toml +++ b/pylace/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["maturin>=0.13,<0.14"] +requires = ["maturin>=1.0,<2"] build-backend = "maturin" [project] From a063d09898c02e940a1ee5c7423cdbb24a7d6f78 Mon Sep 17 00:00:00 2001 From: Mike Schmidt Date: Wed, 1 May 2024 07:58:23 -0600 Subject: [PATCH 41/43] feat: Updated pyo3 --- .github/scripts/find_compatible_wheel.py | 2 +- pylace/Cargo.lock | 482 ++++++++++++----------- pylace/Cargo.toml | 2 +- pylace/pyproject.toml | 4 + pylace/requirements-dev.txt | 10 +- pylace/src/df.rs | 17 +- pylace/src/lib.rs | 108 ++--- pylace/src/metadata.rs | 26 +- pylace/src/update_handler.rs | 8 +- pylace/src/utils.rs | 128 +++--- 10 files changed, 420 insertions(+), 367 deletions(-) diff --git a/.github/scripts/find_compatible_wheel.py b/.github/scripts/find_compatible_wheel.py index 08857173..99343631 100644 --- a/.github/scripts/find_compatible_wheel.py +++ b/.github/scripts/find_compatible_wheel.py @@ -21,7 +21,7 @@ for tag in sys_tags(): print(f"Looking for file matching tag {tag}", file=sys.stderr) - matches = glob.glob(args.package + "*" + str(tag) + "*.whl", root_dir=args.dir) + matches = glob.glob(f"{args.package}*{tag}*.whl", root_dir=args.dir) if len(matches) == 1: wheel = matches[0] break diff --git a/pylace/Cargo.lock b/pylace/Cargo.lock index 75d1782f..1b6d316c 100644 --- a/pylace/Cargo.lock +++ b/pylace/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ahash" -version = "0.8.7" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", @@ -17,18 +17,18 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "allocator-api2" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "android-tzdata" @@ -56,9 +56,9 @@ dependencies = [ [[package]] name = "argminmax" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "202108b46429b765ef483f8a24d5c46f48c14acfdacc086dd4ab6dddf6bcdbd2" +checksum = "52424b59d69d69d5056d508b260553afd91c57e21849579cd1f50ee8b8b88eaa" dependencies = [ "num-traits", ] @@ -96,9 +96,9 @@ checksum = "9ae037714f313c1353189ead58ef9eec30a8e8dc101b2622d461418fd59e28a9" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "bincode" @@ -111,56 +111,51 @@ dependencies = [ [[package]] name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.4.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" +checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.60", ] [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "065a29261d53ba54260972629f9ca6bffa69bac13cd1fed61420f7fa68b9f8bd" dependencies = [ "jobserver", "libc", + "once_cell", ] [[package]] @@ -171,25 +166,25 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] name = "comfy-table" -version = "7.1.0" +version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c64043d6c7b7a4c58e39e7efccfdea7b93d885a795d0c054a69dbbf4dd52686" +checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" dependencies = [ "crossterm", "strum", - "strum_macros", + "strum_macros 0.26.2", "unicode-width", ] @@ -214,9 +209,9 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "crossbeam-channel" -version = "0.5.11" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176dc175b78f56c0f321911d9c8eb2b77a78a4860b9c19db83835fea1a46649b" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" dependencies = [ "crossbeam-utils", ] @@ -261,7 +256,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" dependencies = [ - "bitflags 2.4.2", + "bitflags", "crossterm_winapi", "libc", "parking_lot", @@ -306,15 +301,15 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "dyn-clone" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "either" -version = "1.9.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" [[package]] name = "encode_unicode" @@ -324,14 +319,14 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "enum_dispatch" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e" +checksum = "aa18ce2bc66555b3218614519ac839ddb759a7d6720732f979ef8d13be147ecd" dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.60", ] [[package]] @@ -360,9 +355,9 @@ checksum = "ee1b05cbd864bcaecbd3455d6d967862d446e4ebfc3c2e5e5b9841e53cba6673" [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", "js-sys", @@ -388,9 +383,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", @@ -405,9 +400,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -426,9 +421,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.59" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -449,20 +444,20 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "serde", ] [[package]] name = "indicatif" -version = "0.17.7" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" +checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" dependencies = [ "console", "instant", @@ -473,9 +468,9 @@ dependencies = [ [[package]] name = "indoc" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "instant" @@ -488,33 +483,33 @@ dependencies = [ [[package]] name = "itertools" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.27" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.67" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -658,9 +653,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.152" +version = "0.2.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" [[package]] name = "libm" @@ -670,20 +665,19 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.2", + "bitflags", "libc", - "redox_syscall", ] [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -691,9 +685,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "lru" @@ -745,9 +739,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memmap2" @@ -760,18 +754,18 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] [[package]] name = "multiversion" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2c7b9d7fe61760ce5ea19532ead98541f6b4c495d87247aff9826445cf6872a" +checksum = "c4851161a11d3ad0bf9402d90ffc3967bf231768bfd7aeb61755ad06dbf1a142" dependencies = [ "multiversion-macros", "target-features", @@ -779,9 +773,9 @@ dependencies = [ [[package]] name = "multiversion-macros" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26a83d8500ed06d68877e9de1dde76c1dbb83885dcdbda4ef44ccbc3fbda2ac8" +checksum = "79a74ddee9e0c27d2578323c13905793e91622148f138ba29738f9dddb835e90" dependencies = [ "proc-macro2", "quote", @@ -791,9 +785,9 @@ dependencies = [ [[package]] name = "nalgebra" -version = "0.32.3" +version = "0.32.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307ed9b18cc2423f29e83f84fd23a8e73628727990181f18641a8b5dc2ab1caa" +checksum = "3ea4908d4f23254adda3daa60ffef0f1ac7b8c3e9a864cf3cc154b251908a2ef" dependencies = [ "approx", "matrixmultiply", @@ -837,9 +831,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +checksum = "3135b08af27d103b0a51f2ae0f8632117b7b185ccf931445affa8df530576a41" dependencies = [ "num-bigint", "num-complex", @@ -862,9 +856,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" dependencies = [ "num-traits", "serde", @@ -872,19 +866,18 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" dependencies = [ "autocfg", "num-integer", @@ -905,9 +898,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", "libm", @@ -949,9 +942,9 @@ checksum = "efa535d5117d3661134dbf1719b6f0ffe06f2375843b13935db186cd094105eb" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" dependencies = [ "lock_api", "parking_lot_core", @@ -959,15 +952,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] @@ -1008,9 +1001,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "planus" @@ -1054,7 +1047,7 @@ dependencies = [ "fast-float", "foreign_vec", "getrandom", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "itoa", "lz4", "multiversion", @@ -1089,12 +1082,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0f5efe734b6cbe5f97ea769be8360df5324fade396f1f3f5ad7fe9360ca4a23" dependencies = [ "ahash", - "bitflags 2.4.2", + "bitflags", "bytemuck", "chrono", "comfy-table", "either", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "indexmap", "num-traits", "once_cell", @@ -1162,7 +1155,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d7105b40905bb38e8fc4a7fd736594b7491baa12fad3ac492969ca221a1b5d5" dependencies = [ "ahash", - "bitflags 2.4.2", + "bitflags", "glob", "once_cell", "polars-arrow", @@ -1188,7 +1181,7 @@ dependencies = [ "argminmax", "bytemuck", "either", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "indexmap", "memchr", "num-traits", @@ -1212,7 +1205,7 @@ dependencies = [ "crossbeam-channel", "crossbeam-queue", "enum_dispatch", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "num-traits", "polars-arrow", "polars-compute", @@ -1246,7 +1239,7 @@ dependencies = [ "rayon", "regex", "smartstring", - "strum_macros", + "strum_macros 0.25.3", "version_check", ] @@ -1305,7 +1298,7 @@ checksum = "b174ca4a77ad47d7b91a0460aaae65bbf874c8bfbaaa5308675dadef3976bbda" dependencies = [ "ahash", "bytemuck", - "hashbrown 0.14.3", + "hashbrown 0.14.5", "indexmap", "num-traits", "once_cell", @@ -1330,18 +1323,18 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.76" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] [[package]] name = "puruspe" -version = "0.2.0" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe7765e19fb2ba6fd4373b8d90399f5321683ea7c11b598c6bbaa3a72e9c83b8" +checksum = "06a1eed715f625eaa95fba5e049dcf7bc06fa396d6d2e55015b3764e234dfd3f" [[package]] name = "pylace" @@ -1362,15 +1355,16 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.20.2" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a89dc7a5850d0e983be1ec2a463a171d20990487c3cfcd68b5363f1ee3d6fe0" +checksum = "a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "parking_lot", + "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", @@ -1379,9 +1373,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.20.2" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07426f0d8fe5a601f26293f300afd1a7b1ed5e78b2a705870c5f30893c5163be" +checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50" dependencies = [ "once_cell", "target-lexicon", @@ -1389,9 +1383,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.20.2" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb7dec17e17766b46bca4f1a4215a85006b4c2ecde122076c562dd058da6cf1" +checksum = "01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403" dependencies = [ "libc", "pyo3-build-config", @@ -1399,33 +1393,34 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.20.2" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f738b4e40d50b5711957f142878cfa0f28e054aa0ebdfc3fd137a843f74ed3" +checksum = "77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.48", + "syn 2.0.60", ] [[package]] name = "pyo3-macros-backend" -version = "0.20.2" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc910d4851847827daf9d6cdd4a823fbdaab5b8818325c5e97a86da79e8881f" +checksum = "08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c" dependencies = [ "heck", "proc-macro2", + "pyo3-build-config", "quote", - "syn 2.0.48", + "syn 2.0.60", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -1490,9 +1485,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -1500,9 +1495,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -1510,18 +1505,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", @@ -1530,9 +1525,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", @@ -1542,9 +1537,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", @@ -1553,26 +1548,27 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" [[package]] name = "rv" -version = "0.16.3" +version = "0.16.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35f602941aca67593b30eea71a0b372e50e3ad63e7aa6b98b2ea18ff74ba9cf8" +checksum = "c07e0a3b756794c7ea2f05d93760ffb946ff4f94b255d92444d94c19fd71f4ab" dependencies = [ "doc-comment", "lru", "nalgebra", "num", + "num-traits", "peroxide", "rand", "rand_distr", @@ -1582,9 +1578,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "safe_arch" @@ -1603,29 +1599,29 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" -version = "1.0.196" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.60", ] [[package]] name = "serde_json" -version = "1.0.111" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4" +checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" dependencies = [ "itoa", "ryu", @@ -1634,9 +1630,9 @@ dependencies = [ [[package]] name = "serde_yaml" -version = "0.9.30" +version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1bf28c79a99f70ee1f1d83d10c875d2e70618417fda01ad1785e027579d9d38" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ "indexmap", "itoa", @@ -1666,9 +1662,9 @@ checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "smallvec" -version = "1.12.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2593d31f82ead8df961d8bd23a64c2ccf2eb5dd34b0a34bfb4dd54011c72009e" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smartstring" @@ -1719,9 +1715,9 @@ checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strum" -version = "0.25.0" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" [[package]] name = "strum_macros" @@ -1733,7 +1729,20 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.48", + "syn 2.0.60", +] + +[[package]] +name = "strum_macros" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6cf59daf282c0a494ba14fd21610a0325f9f90ec9d1231dea26bcb1d696c946" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.60", ] [[package]] @@ -1749,9 +1758,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" dependencies = [ "proc-macro2", "quote", @@ -1760,9 +1769,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.30.5" +version = "0.30.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fb4f3438c8f6389c864e61221cbc97e9bca98b4daf39a5beb7bea660f528bb2" +checksum = "87341a165d73787554941cd5ef55ad728011566fe714e987d1b976c15dbc3a83" dependencies = [ "cfg-if", "core-foundation-sys", @@ -1774,34 +1783,34 @@ dependencies = [ [[package]] name = "target-features" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfb5fa503293557c5158bd215fdc225695e567a77e453f5d4452a50a193969bd" +checksum = "c1bbb9f3c5c463a01705937a24fdabc5047929ac764b2d5b9cf681c1f5041ed5" [[package]] name = "target-lexicon" -version = "0.12.13" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.60", ] [[package]] @@ -1827,9 +1836,9 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" [[package]] name = "unindent" @@ -1839,9 +1848,9 @@ checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" [[package]] name = "unsafe-libyaml" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" [[package]] name = "version_check" @@ -1857,9 +1866,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.90" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1867,24 +1876,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.90" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.60", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.90" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1892,28 +1901,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.90" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.60", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.90" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wide" -version = "0.7.13" +version = "0.7.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c68938b57b33da363195412cfc5fc37c9ed49aa9cfe2156fde64b8d2c9498242" +checksum = "0f0e39d2c603fdc0504b12b458cf1f34e0b937ed2f4f2dc20796e3e86f34e11f" dependencies = [ "bytemuck", "safe_arch", @@ -1948,7 +1957,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core", - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -1957,7 +1966,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -1975,7 +1984,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -1995,17 +2004,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -2016,9 +2026,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -2028,9 +2038,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -2040,9 +2050,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -2052,9 +2068,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -2064,9 +2080,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -2076,9 +2092,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -2088,15 +2104,15 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "xxhash-rust" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53be06678ed9e83edb1745eb72efc0bbcd7b5c3c35711a860906aed827a13d61" +checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" [[package]] name = "zerocopy" @@ -2115,32 +2131,32 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.60", ] [[package]] name = "zstd" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" +checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "7.0.0" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e" +checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" +version = "2.0.10+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" dependencies = [ "cc", "pkg-config", diff --git a/pylace/Cargo.toml b/pylace/Cargo.toml index 3612514a..5876af55 100644 --- a/pylace/Cargo.toml +++ b/pylace/Cargo.toml @@ -13,7 +13,7 @@ lace = { path = "../lace", version="0.8.0" } lace_utils = { path = "../lace/lace_utils", version="0.3.0" } rand = "0.8.5" rand_xoshiro = "0.6.0" -pyo3 = { version = "0.20", features = ["extension-module"] } +pyo3 = { version = "0.21", features = ["extension-module"] } serde_json = "1.0.91" serde_yaml = "0.9.17" polars = "0.36" diff --git a/pylace/pyproject.toml b/pylace/pyproject.toml index 6651421b..fc161712 100644 --- a/pylace/pyproject.toml +++ b/pylace/pyproject.toml @@ -131,3 +131,7 @@ strict = true [tool.black] line-length = 80 + + +[tool.maturin] +module-name = "lace.core" diff --git a/pylace/requirements-dev.txt b/pylace/requirements-dev.txt index e5f4356a..aacb02b0 100644 --- a/pylace/requirements-dev.txt +++ b/pylace/requirements-dev.txt @@ -3,8 +3,8 @@ # Dependencies # Tooling -hypothesis==6.65.2 -maturin==0.14.10 -pytest==7.2.0 -pytest-cov==4.0.0 -pytest-xdist==3.1.0 +hypothesis==6.100.2 +maturin==1.5.1 +pytest==8.2.0 +pytest-cov==5.0.0 +pytest-xdist==3.6.1 diff --git a/pylace/src/df.rs b/pylace/src/df.rs index b7d05c00..d7200ac6 100644 --- a/pylace/src/df.rs +++ b/pylace/src/df.rs @@ -4,10 +4,10 @@ use polars::series::Series; use polars_arrow::ffi; use pyo3::exceptions::{PyException, PyIOError, PyValueError}; use pyo3::ffi::Py_uintptr_t; -use pyo3::types::PyModule; +use pyo3::types::{PyAnyMethods, PyModule}; use pyo3::{ - create_exception, FromPyObject, IntoPy, PyAny, PyErr, PyObject, PyResult, - Python, ToPyObject, + create_exception, Bound, FromPyObject, IntoPy, PyAny, PyErr, PyObject, + PyResult, Python, ToPyObject, }; #[derive(Debug)] @@ -146,7 +146,7 @@ impl<'a> FromPyObject<'a> for PyDataFrame { pub(crate) fn to_py_array( array: ArrayRef, py: Python, - pyarrow: &PyModule, + pyarrow: &Bound, ) -> PyResult { let schema = Box::new(ffi::export_field_to_c(&ArrowField::new( "", @@ -173,10 +173,11 @@ impl IntoPy for PySeries { let s = self.0.rechunk(); let name = s.name(); let arr = s.to_arrow(0); - let pyarrow = py.import("pyarrow").expect("pyarrow not installed"); - let polars = py.import("polars").expect("polars not installed"); + let pyarrow = + py.import_bound("pyarrow").expect("pyarrow not installed"); + let polars = py.import_bound("polars").expect("polars not installed"); - let arg = to_py_array(arr, py, pyarrow).unwrap(); + let arg = to_py_array(arr, py, &pyarrow).unwrap(); let s = polars.call_method1("from_arrow", (arg,)).unwrap(); let s = s.call_method1("rename", (name,)).unwrap(); s.to_object(py) @@ -194,7 +195,7 @@ impl IntoPy for PyDataFrame { .map(|s| PySeries(s.clone()).into_py(py)) .collect::>(); - let polars = py.import("polars").expect("polars not installed"); + let polars = py.import_bound("polars").expect("polars not installed"); let df_object = polars.call_method1("DataFrame", (pyseries,)).unwrap(); df_object.into_py(py) } diff --git a/pylace/src/lib.rs b/pylace/src/lib.rs index 9690ca1c..c0c6624c 100644 --- a/pylace/src/lib.rs +++ b/pylace/src/lib.rs @@ -114,7 +114,7 @@ impl CoreEngine { /// Load a Engine from metadata #[classmethod] - fn load(_cls: &PyType, path: PathBuf) -> PyResult { + fn load(_cls: &Bound, path: PathBuf) -> PyResult { let (engine, rng) = { let mut engine = lace::Engine::load(path) .map_err(|e| EngineLoadError::new_err(e.to_string()))?; @@ -143,7 +143,7 @@ impl CoreEngine { } /// Return a copy of the engine - fn __deepcopy__(&self, _memo: &PyDict) -> Self { + fn __deepcopy__(&self, _memo: &Bound) -> Self { self.clone() } @@ -238,7 +238,7 @@ impl CoreEngine { .collect() } - fn ftype(&self, col: &PyAny) -> PyResult { + fn ftype(&self, col: &Bound) -> PyResult { let col_ix = utils::value_to_name(col, &self.col_indexer)?; self.engine .ftype(col_ix) @@ -284,9 +284,9 @@ impl CoreEngine { fn feature_params<'p>( &self, py: Python<'p>, - col: &PyAny, + col: &Bound, state_ix: usize, - ) -> PyResult<&'p PyAny> { + ) -> PyResult> { use component::ComponentParams; let col_ix = utils::value_to_index(col, &self.col_indexer)?; @@ -302,16 +302,16 @@ impl CoreEngine { let mixture = self.engine.states[state_ix].feature_as_mixture(col_ix); match ComponentParams::from(mixture) { ComponentParams::Bernoulli(params) => { - Ok(params.into_py(py).into_ref(py)) + Ok(params.into_py(py).into_bound(py)) } ComponentParams::Categorical(params) => { - Ok(params.into_py(py).into_ref(py)) + Ok(params.into_py(py).into_bound(py)) } ComponentParams::Gaussian(params) => { - Ok(params.into_py(py).into_ref(py)) + Ok(params.into_py(py).into_bound(py)) } ComponentParams::Poisson(params) => { - Ok(params.into_py(py).into_ref(py)) + Ok(params.into_py(py).into_bound(py)) } } } @@ -361,7 +361,7 @@ impl CoreEngine { /// array([0.125, 0. ]) /// >>> engine.depprob([('swims', 'flippers'), ('swims', 'fast')]) /// array([0.875, 0.25 ]) - fn depprob(&self, col_pairs: &PyList) -> PyResult { + fn depprob(&self, col_pairs: &Bound) -> PyResult { let pairs = list_to_pairs(col_pairs, &self.col_indexer)?; self.engine .depprob_pw(&pairs) @@ -373,11 +373,11 @@ impl CoreEngine { #[pyo3(signature=(col_pairs, n_mc_samples=1000, mi_type="iqr"))] fn mi( &self, - col_pairs: &PyList, + col_pairs: &Bound, n_mc_samples: usize, mi_type: &str, ) -> PyResult { - let pairs = list_to_pairs(col_pairs, &self.col_indexer)?; + let pairs = list_to_pairs(&col_pairs, &self.col_indexer)?; let mi_type = utils::str_to_mitype(mi_type)?; self.engine .mi_pw(&pairs, n_mc_samples, mi_type) @@ -440,8 +440,8 @@ impl CoreEngine { #[pyo3(signature=(row_pairs, wrt=None, col_weighted=false))] fn rowsim( &self, - row_pairs: &PyList, - wrt: Option<&PyAny>, + row_pairs: &Bound, + wrt: Option<&Bound>, col_weighted: bool, ) -> PyResult { let variant = if col_weighted { @@ -465,8 +465,8 @@ impl CoreEngine { fn pairwise_fn( &self, fn_name: &str, - pairs: &PyList, - fn_kwargs: Option<&PyDict>, + pairs: &Bound, + fn_kwargs: Option<&Bound>, ) -> PyResult { match fn_name { "depprob" => self.depprob(pairs).map(|xs| (xs, &self.col_indexer)), @@ -481,9 +481,9 @@ impl CoreEngine { "rowsim" => { let args = fn_kwargs.map_or_else( || Ok(utils::RowsimArgs::default()), - utils::rowsim_args_from_dict, + |dict| utils::rowsim_args_from_dict(dict), )?; - self.rowsim(pairs, args.wrt, args.col_weighted) + self.rowsim(pairs, args.wrt.as_ref(), args.col_weighted) .map(|xs| (xs, &self.row_indexer)) } _ => Err(PyErr::new::(format!( @@ -544,8 +544,8 @@ impl CoreEngine { #[pyo3(signature = (cols, given=None, n=1))] fn simulate( &mut self, - cols: &PyAny, - given: Option<&PyDict>, + cols: &Bound, + given: Option<&Bound>, n: usize, ) -> PyResult { let col_ixs = pyany_to_indices(cols, &self.col_indexer)?; @@ -583,8 +583,8 @@ impl CoreEngine { #[pyo3(signature = (row, col, n=1))] fn draw( &mut self, - row: &PyAny, - col: &PyAny, + row: &Bound, + col: &Bound, n: usize, ) -> PyResult { let row_ix = utils::value_to_index(row, &self.row_indexer)?; @@ -636,8 +636,8 @@ impl CoreEngine { /// ``` fn logp( &self, - values: &PyAny, - given: Option<&PyDict>, + values: &Bound, + given: Option<&Bound>, state_ixs: Option>, ) -> PyResult { let df_vals = @@ -664,8 +664,8 @@ impl CoreEngine { fn logp_scaled( &self, - values: &PyAny, - given: Option<&PyDict>, + values: &Bound, + given: Option<&Bound>, state_ixs: Option>, ) -> PyResult { let df_vals = @@ -693,9 +693,9 @@ impl CoreEngine { #[pyo3(signature=(col, rows=None, values=None, state_ixs=None))] fn surprisal( &self, - col: &PyAny, - rows: Option<&PyAny>, - values: Option<&PyAny>, + col: &Bound, + rows: Option<&Bound>, + values: Option<&Bound>, state_ixs: Option>, ) -> PyResult { let col_ix = utils::value_to_index(col, &self.col_indexer)?; @@ -817,7 +817,11 @@ impl CoreEngine { } #[pyo3(signature=(row, wrt=None))] - fn novelty(&self, row: &PyAny, wrt: Option<&PyAny>) -> PyResult { + fn novelty( + &self, + row: &Bound, + wrt: Option<&Bound>, + ) -> PyResult { let row_ix = utils::value_to_index(row, &self.row_indexer)?; let wrt = wrt .map(|cols| utils::pyany_to_indices(cols, &self.col_indexer)) @@ -828,7 +832,11 @@ impl CoreEngine { } #[pyo3(signature=(cols, n_mc_samples=1000))] - fn entropy(&self, cols: &PyAny, n_mc_samples: usize) -> PyResult { + fn entropy( + &self, + cols: &Bound, + n_mc_samples: usize, + ) -> PyResult { let col_ixs = utils::pyany_to_indices(cols, &self.col_indexer)?; self.engine .entropy(&col_ixs, n_mc_samples) @@ -855,8 +863,8 @@ impl CoreEngine { #[pyo3(signature=(col, rows=None, with_uncertainty=true))] fn impute( &mut self, - col: &PyAny, - rows: Option<&PyAny>, + col: &Bound, + rows: Option<&Bound>, with_uncertainty: bool, ) -> PyResult { use lace::cc::feature::Feature; @@ -938,8 +946,8 @@ impl CoreEngine { #[pyo3(signature=(target, given=None, state_ixs=None, with_uncertainty=true))] fn predict( &self, - target: &PyAny, - given: Option<&PyDict>, + target: &Bound, + given: Option<&Bound>, state_ixs: Option>, with_uncertainty: bool, ) -> PyResult> { @@ -972,8 +980,8 @@ impl CoreEngine { #[pyo3(signature=(target, given=None, state_ixs=None))] fn variability( &self, - target: &PyAny, - given: Option<&PyDict>, + target: &Bound, + given: Option<&Bound>, state_ixs: Option>, ) -> PyResult { let col_ix = value_to_index(target, &self.col_indexer)?; @@ -1123,7 +1131,7 @@ impl CoreEngine { /// ... ) /// >>> /// >>> engine.append_rows(row) - fn append_rows(&mut self, rows: &PyAny) -> PyResult<()> { + fn append_rows(&mut self, rows: &Bound) -> PyResult<()> { let df_vals = pandas_to_insert_values( rows, &self.col_indexer, @@ -1243,7 +1251,7 @@ impl CoreEngine { /// Append new columns to the Engine fn append_columns( &mut self, - cols: &PyAny, + cols: &Bound, mut metadata: Vec, ) -> PyResult<()> { let suppl_types = Some( @@ -1316,7 +1324,7 @@ impl CoreEngine { } /// Delete a given column from the ``Engine`` - fn del_column(&mut self, col: &PyAny) -> PyResult<()> { + fn del_column(&mut self, col: &Bound) -> PyResult<()> { let col_ix = utils::value_to_index(col, &self.col_indexer)?; self.col_indexer.drop_by_ix(col_ix)?; self.engine.del_column(col_ix).map_err(to_pyerr) @@ -1334,9 +1342,9 @@ impl CoreEngine { /// The new value at the cell fn edit_cell( &mut self, - row: &PyAny, - col: &PyAny, - value: &PyAny, + row: &Bound, + col: &Bound, + value: &Bound, ) -> PyResult<()> { let row_ix = utils::value_to_index(row, &self.row_indexer)?; let col_ix = utils::value_to_index(col, &self.col_indexer)?; @@ -1360,7 +1368,7 @@ impl CoreEngine { fn categorical_support( &self, - col: &PyAny, + col: &Bound, ) -> PyResult>> { use lace::codebook::ValueMap as Vm; let col_ix = utils::value_to_index(col, &self.col_indexer)?; @@ -1397,7 +1405,7 @@ impl CoreEngine { } pub fn __getstate__(&self, py: Python) -> PyResult { - Ok(PyBytes::new( + Ok(PyBytes::new_bound( py, &bincode::serialize(&self).map_err(|e| { PyValueError::new_err(format!( @@ -1434,7 +1442,8 @@ create_exception!(lace, EngineUpdateError, pyo3::exceptions::PyException); /// A Python module implemented in Rust. #[pymodule] -fn core(py: Python, m: &PyModule) -> PyResult<()> { +#[pyo3(name = "core")] +fn core(py: Python, m: &Bound) -> PyResult<()> { m.add_class::()?; m.add_class::()?; m.add_class::()?; @@ -1453,7 +1462,10 @@ fn core(py: Python, m: &PyModule) -> PyResult<()> { m.add_class::()?; m.add_function(wrap_pyfunction!(infer_srs_metadata, m)?)?; m.add_function(wrap_pyfunction!(metadata::codebook_from_df, m)?)?; - m.add("EngineLoadError", py.get_type::())?; - m.add("EngineUpdateError", py.get_type::())?; + m.add("EngineLoadError", py.get_type_bound::())?; + m.add( + "EngineUpdateError", + py.get_type_bound::(), + )?; Ok(()) } diff --git a/pylace/src/metadata.rs b/pylace/src/metadata.rs index 87ad430f..27aa53dd 100644 --- a/pylace/src/metadata.rs +++ b/pylace/src/metadata.rs @@ -278,7 +278,7 @@ impl ValueMap { /// Create a map of ``k`` unsigned integers #[classmethod] #[pyo3(signature = (k))] - pub fn int(_cls: &PyType, k: usize) -> Self { + pub fn int(_cls: &Bound, k: usize) -> Self { Self(lace::codebook::ValueMap::U8(k)) } @@ -295,7 +295,7 @@ impl ValueMap { /// The strings are not unique #[classmethod] #[pyo3(signature = (values))] - pub fn string(_cls: &PyType, values: Vec) -> PyResult { + pub fn string(_cls: &Bound, values: Vec) -> PyResult { lace::codebook::ValueMap::try_from(values) .map_err(PyValueError::new_err) .map(Self) @@ -303,7 +303,7 @@ impl ValueMap { /// Create a map from boolean #[classmethod] - pub fn bool(_cls: &PyType) -> Self { + pub fn bool(_cls: &Bound) -> Self { Self(lace::codebook::ValueMap::Bool) } @@ -349,7 +349,7 @@ impl ColumnMetadata { #[classmethod] #[pyo3(signature = (name, prior=None, hyper=None))] pub fn continuous( - _cls: &PyType, + _cls: &Bound, name: String, prior: Option, hyper: Option, @@ -386,7 +386,7 @@ impl ColumnMetadata { #[classmethod] #[pyo3(signature = (name, k, value_map=None, prior=None, hyper=None))] pub fn categorical( - _cls: &PyType, + _cls: &Bound, name: String, k: usize, value_map: Option, @@ -423,7 +423,7 @@ impl ColumnMetadata { #[classmethod] #[pyo3(signature = (name, prior=None, hyper=None))] pub fn count( - _cls: &PyType, + _cls: &Bound, name: String, prior: Option, hyper: Option, @@ -512,7 +512,7 @@ impl PriorProcess { #[classmethod] #[pyo3(signature=(alpha_shape=1.0, alpha_rate=1.0, d_a=0.5, d_b=0.5))] pub fn pitman_yor( - _cls: &PyType, + _cls: &Bound, alpha_shape: f64, alpha_rate: f64, d_a: f64, @@ -526,7 +526,11 @@ impl PriorProcess { #[classmethod] #[pyo3(signature=(alpha_shape=1.0, alpha_rate=1.0))] - pub fn dirichlet(_cls: &PyType, alpha_shape: f64, alpha_rate: f64) -> Self { + pub fn dirichlet( + _cls: &Bound, + alpha_shape: f64, + alpha_rate: f64, + ) -> Self { PriorProcess(lace::codebook::PriorProcess::Dirichlet { alpha_prior: Gamma::new(alpha_shape, alpha_rate).unwrap(), }) @@ -708,7 +712,7 @@ pub struct CodebookBuilder { impl CodebookBuilder { #[classmethod] /// Load a Codebook from a path. - fn load(_cls: &PyType, path: PathBuf) -> Self { + fn load(_cls: &Bound, path: PathBuf) -> Self { Self { method: CodebookMethod::Path(path), } @@ -717,7 +721,7 @@ impl CodebookBuilder { #[classmethod] #[pyo3(signature = (cat_cutoff=None, state_prior_process=None, view_prior_process=None, use_hypers=true))] fn infer( - _cls: &PyType, + _cls: &Bound, cat_cutoff: Option, state_prior_process: Option, view_prior_process: Option, @@ -734,7 +738,7 @@ impl CodebookBuilder { } #[classmethod] - fn codebook(_cls: &PyType, codebook: Codebook) -> Self { + fn codebook(_cls: &Bound, codebook: Codebook) -> Self { Self { method: CodebookMethod::Codebook(codebook), } diff --git a/pylace/src/update_handler.rs b/pylace/src/update_handler.rs index 023e18e3..643834ea 100644 --- a/pylace/src/update_handler.rs +++ b/pylace/src/update_handler.rs @@ -4,7 +4,7 @@ use std::sync::{Arc, Mutex}; use lace::cc::state::State; use lace::update_handler::UpdateHandler; use lace::EngineUpdateConfig; -use pyo3::{pyclass, IntoPy, Py, PyAny}; +use pyo3::{prelude::PyDictMethods, pyclass, IntoPy, Py, PyAny}; /// Python version of `EngineUpdateConfig`. #[derive(Clone, Debug)] @@ -36,7 +36,7 @@ impl PyUpdateHandler { macro_rules! pydict { ($py: expr, $($key:tt : $val:expr),* $(,)?) => {{ - let map = pyo3::types::PyDict::new($py); + let map = pyo3::types::PyDict::new_bound($py); $( let _ = map.set_item($key, $val.into_py($py)) .expect("Should be able to set item in PyDict"); @@ -59,7 +59,7 @@ macro_rules! call_pyhandler_noret { ); handler - .call_method(py, $func_name, (), kwargs.into()) + .call_method_bound(py, $func_name, (), Some(&kwargs)) .expect("Expected python call_method to return successfully"); }) }}; @@ -79,7 +79,7 @@ macro_rules! call_pyhandler_ret { ); handler - .call_method(py, $func_name, (), kwargs.into()) + .call_method_bound(py, $func_name, (), Some(&kwargs)) .expect("Expected python call_method to return successfully") .extract(py) .expect("Failed to extract expected type") diff --git a/pylace/src/utils.rs b/pylace/src/utils.rs index 033dcd94..a7848640 100644 --- a/pylace/src/utils.rs +++ b/pylace/src/utils.rs @@ -184,7 +184,7 @@ pub(crate) struct MiArgs { #[derive(Default)] pub(crate) struct RowsimArgs<'a> { - pub(crate) wrt: Option<&'a PyAny>, + pub(crate) wrt: Option>, pub(crate) col_weighted: bool, } @@ -205,7 +205,7 @@ pub(crate) fn coltype_to_ftype(col_type: &ColType) -> FType { } } -pub(crate) fn mi_args_from_dict(dict: &PyDict) -> PyResult { +pub(crate) fn mi_args_from_dict(dict: &Bound) -> PyResult { let n_mc_samples: Option = dict .get_item("n_mc_samples")? .map(|any| any.extract::()) @@ -222,13 +222,15 @@ pub(crate) fn mi_args_from_dict(dict: &PyDict) -> PyResult { }) } -pub(crate) fn rowsim_args_from_dict(dict: &PyDict) -> PyResult { +pub(crate) fn rowsim_args_from_dict<'a>( + dict: &'a Bound<'a, PyDict>, +) -> PyResult> { let col_weighted: Option = dict .get_item("col_weighted")? .map(|any| any.extract::()) .transpose()?; - let wrt: Option<&PyAny> = dict.get_item("wrt")?; + let wrt: Option> = dict.get_item("wrt")?; Ok(RowsimArgs { wrt, @@ -427,7 +429,7 @@ impl Indexer { } pub(crate) fn pairs_list_iter<'a>( - pairs: &'a PyList, + pairs: &'a Bound<'a, PyList>, indexer: &'a Indexer, ) -> impl Iterator> + 'a { pairs.iter().map(|item| { @@ -438,28 +440,36 @@ pub(crate) fn pairs_list_iter<'a>( "A pair consists of two items", )) } else { - value_to_index(&ixs[0], indexer).and_then(|a| { - value_to_index(&ixs[1], indexer).map(|b| (a, b)) - }) + ixs.get_item(0) + .and_then(|a| value_to_index(&a, indexer)) + .and_then(|a| { + ixs.get_item(1) + .and_then(|b| value_to_index(&b, indexer)) + .map(|b| (a, b)) + }) } }) .unwrap_or_else(|_| { - let ixs: &PyTuple = item.downcast()?; + let ixs: &Bound = item.downcast()?; if ixs.len() != 2 { Err(PyErr::new::( "A pair consists of two items", )) } else { - value_to_index(&ixs[0], indexer).and_then(|a| { - value_to_index(&ixs[1], indexer).map(|b| (a, b)) - }) + ixs.get_item(0) + .and_then(|a| value_to_index(&a, indexer)) + .and_then(|a| { + ixs.get_item(1) + .and_then(|b| value_to_index(&b, indexer)) + .map(|b| (a, b)) + }) } }) }) } pub(crate) fn list_to_pairs<'a>( - pairs: &'a PyList, + pairs: &'a Bound, indexer: &'a Indexer, ) -> PyResult> { pairs_list_iter(pairs, indexer).collect() @@ -501,11 +511,12 @@ pub(crate) fn datum_to_value(datum: Datum) -> PyResult> { }) } -fn pyany_to_category(val: &PyAny) -> PyResult { +fn pyany_to_category(val: &Bound) -> PyResult { use lace::Category; - let name = val.get_type().name()?; + let ty = val.get_type(); + let name = ty.name()?; - match name { + match name.as_ref() { "int" => { let x = val.downcast::()?.extract::()?; Ok(Category::U8(x)) @@ -518,7 +529,7 @@ fn pyany_to_category(val: &PyAny) -> PyResult { let x = val.downcast::()?.extract::()?; Ok(Category::String(x)) } - "int64" | "int32" | "int16" | "int8" => { + "numpy.int64" | "numpy.int32" | "numpy.int16" | "numpy.int8" => { let x = val.call_method("__int__", (), None)?.extract::()?; Ok(Category::U8(x)) } @@ -528,7 +539,10 @@ fn pyany_to_category(val: &PyAny) -> PyResult { } } -pub(crate) fn value_to_datum(val: &PyAny, ftype: FType) -> PyResult { +pub(crate) fn value_to_datum( + val: &Bound, + ftype: FType, +) -> PyResult { if val.is_none() { return Ok(Datum::Missing); } @@ -558,7 +572,7 @@ pub(crate) fn value_to_datum(val: &PyAny, ftype: FType) -> PyResult { } pub(crate) fn value_to_name( - val: &PyAny, + val: &Bound, indexer: &Indexer, ) -> PyResult { val.extract::().or_else(|_| { @@ -572,7 +586,7 @@ pub(crate) fn value_to_name( } pub(crate) fn value_to_index( - val: &PyAny, + val: &Bound, indexer: &Indexer, ) -> PyResult { val.extract::().or_else(|_| { @@ -588,16 +602,16 @@ pub(crate) fn value_to_index( } pub(crate) fn pyany_to_indices( - cols: &PyAny, + cols: &Bound, indexer: &Indexer, ) -> PyResult> { cols.iter()? - .map(|res| res.and_then(|val| value_to_index(val, indexer))) + .map(|res| res.and_then(|val| value_to_index(&val, indexer))) .collect() } pub(crate) fn dict_to_given( - dict_opt: Option<&PyDict>, + dict_opt: Option<&Bound>, engine: &lace::Engine, indexer: &Indexer, ) -> PyResult> { @@ -608,9 +622,9 @@ pub(crate) fn dict_to_given( let conditions = dict .iter() .map(|(key, value)| { - value_to_index(key, indexer).and_then(|ix| { + value_to_index(&key, indexer).and_then(|ix| { value_to_datum( - value, + &value, engine.ftype(ix).expect( "Index from indexer ought to be valid.", ), @@ -625,7 +639,7 @@ pub(crate) fn dict_to_given( } } -pub(crate) fn srs_to_strings(srs: &PyAny) -> PyResult> { +pub(crate) fn srs_to_strings(srs: &Bound) -> PyResult> { let list: &PyList = srs.call_method0("to_list")?.extract()?; list.iter() @@ -661,23 +675,23 @@ pub(crate) fn parts_to_insert_values( } pub(crate) fn pyany_to_data( - data: &PyAny, + data: &Bound, ftype: FType, ) -> PyResult> { data.iter()? - .map(|res| res.and_then(|val| value_to_datum(val, ftype))) + .map(|res| res.and_then(|val| value_to_datum(&val, ftype))) .collect() } fn process_row_dict( - row_dict: &PyDict, + row_dict: &Bound, _col_indexer: &Indexer, engine: &lace::Engine, suppl_types: Option<&HashMap>, ) -> PyResult> { let mut row_data: Vec = Vec::with_capacity(row_dict.len()); for (name_any, value_any) in row_dict { - let col_name: &PyString = name_any.downcast()?; + let col_name: &Bound = name_any.downcast()?; let col_name = col_name.to_str()?; let ftype = engine .codebook @@ -692,21 +706,21 @@ fn process_row_dict( ))) })?; - row_data.push(value_to_datum(value_any, ftype)?); + row_data.push(value_to_datum(&value_any, ftype)?); } Ok(row_data) } // Works on list of dicts fn values_to_data( - data: &PyList, + data: &Bound, col_indexer: &Indexer, engine: &lace::Engine, suppl_types: Option<&HashMap>, ) -> PyResult>> { data.iter() .map(|row_any| { - let row_dict: &PyDict = row_any.downcast()?; + let row_dict: &Bound = row_any.downcast()?; process_row_dict(row_dict, col_indexer, engine, suppl_types) }) .collect() @@ -723,7 +737,7 @@ pub(crate) struct DataFrameComponents { // FIXME: pass the 'py' in so that we can handle errors better. The // `Python::with_gil` thing makes using `?` a pain. fn df_to_values( - df: &PyAny, + df: &Bound, col_indexer: &Indexer, engine: &lace::Engine, suppl_types: Option<&HashMap>, @@ -734,12 +748,12 @@ fn df_to_values( if columns.get_type().name()?.contains("Index") { // Is a Pandas dataframe let index = df.getattr("index")?; - let row_names = srs_to_strings(index).ok(); + let row_names = srs_to_strings(&index).ok(); let cols = columns.call_method0("tolist")?.to_object(py); - let kwargs = PyDict::new(py); + let kwargs = PyDict::new_bound(py); kwargs.set_item("orient", "records")?; - let data = df.call_method("to_dict", (), Some(kwargs))?; + let data = df.call_method("to_dict", (), Some(&kwargs))?; (cols, data, row_names) } else { // Is a Polars dataframe @@ -749,11 +763,11 @@ fn df_to_values( // Find all the index columns let mut index_col_names = list .iter() - .map(|s| s.extract::<&str>()) + .map(|s| s.extract::()) .map(|s| { s.map(|s| { - if is_index_col(s) { - Some(String::from(s)) + if is_index_col(&s) { + Some(s) } else { None } @@ -784,7 +798,7 @@ fn df_to_values( // Get the indices from the index if it exists let row_names = df.get_item(index_name) - .and_then(srs_to_strings) + .and_then(|srs: pyo3::Bound<'_, pyo3::PyAny>| srs_to_strings(&srs)) .map_err(|err| { PyValueError::new_err(format!( "Indices in index '{index_name}' are not strings: {err}")) @@ -794,7 +808,7 @@ fn df_to_values( (df, Some(row_names)) } else { - (df, None) + (df.clone(), None) }; let data = df.call_method0("to_dicts")?; @@ -802,19 +816,19 @@ fn df_to_values( } }; - let data: &PyList = data.extract()?; - let columns: &PyList = columns.extract(py)?; + let data: Bound = data.extract()?; + let columns: Bound = columns.extract(py)?; // will return nothing if there are unknown column names let col_ixs = columns .iter() - .map(|col_name| value_to_index(col_name, col_indexer)) + .map(|col_name| value_to_index(&col_name, col_indexer)) .collect::, _>>() .ok(); let col_names = columns .iter() .map(|name| name.extract()) .collect::, _>>()?; - let values = values_to_data(data, col_indexer, engine, suppl_types)?; + let values = values_to_data(&data, col_indexer, engine, suppl_types)?; Ok(DataFrameComponents { col_ixs, @@ -826,35 +840,36 @@ fn df_to_values( } fn srs_to_column_values( - srs: &PyAny, + srs: &Bound, indexer: &Indexer, engine: &lace::Engine, suppl_types: Option<&HashMap>, ) -> PyResult { let data = srs.call_method0("to_frame")?; - df_to_values(data, indexer, engine, suppl_types) + df_to_values(&data, indexer, engine, suppl_types) } fn srs_to_row_values( - srs: &PyAny, + srs: &Bound, indexer: &Indexer, engine: &lace::Engine, suppl_types: Option<&HashMap>, ) -> PyResult { let data = srs.call_method0("to_frame")?.call_method0("transpose")?; - df_to_values(data, indexer, engine, suppl_types) + df_to_values(&data, indexer, engine, suppl_types) } pub(crate) fn pandas_to_logp_values( - xs: &PyAny, + xs: &Bound, indexer: &Indexer, engine: &lace::Engine, ) -> PyResult { - let type_name = xs.get_type().name()?; + let ty = xs.get_type(); + let type_name = ty.name()?; - match type_name { + match type_name.as_ref() { "DataFrame" => df_to_values(xs, indexer, engine, None), "Series" => srs_to_column_values(xs, indexer, engine, None), t => Err(PyErr::new::(format!( @@ -864,14 +879,15 @@ pub(crate) fn pandas_to_logp_values( } pub(crate) fn pandas_to_insert_values( - xs: &PyAny, + xs: &Bound, col_indexer: &Indexer, engine: &lace::Engine, suppl_types: Option<&HashMap>, ) -> PyResult { - let type_name = xs.get_type().name()?; + let ty = xs.get_type(); + let type_name = ty.name()?; - match type_name { + match type_name.as_ref() { "DataFrame" => df_to_values(xs, col_indexer, engine, suppl_types), "Series" => srs_to_row_values(xs, col_indexer, engine, suppl_types), t => Err(PyErr::new::(format!( From 4092fdfff5c775d4eee5aa3e0d19c93c2cc0aeba Mon Sep 17 00:00:00 2001 From: Mike Schmidt Date: Wed, 1 May 2024 19:00:50 -0600 Subject: [PATCH 42/43] chore: Updated changelog and citation --- .github/workflows/changelog.yaml | 2 +- CHANGELOG.md | 7 +++++-- CITATION.cff | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.github/workflows/changelog.yaml b/.github/workflows/changelog.yaml index e4ad53b7..7ed08df9 100644 --- a/.github/workflows/changelog.yaml +++ b/.github/workflows/changelog.yaml @@ -12,7 +12,7 @@ jobs: steps: - uses: actions/checkout@v4 - + - run: | eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" brew install nbbrd/tap/heylogs diff --git a/CHANGELOG.md b/CHANGELOG.md index 90cef260..e35455b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,15 +20,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Changed `SerializedType` default to `Bincode` - moved `Assignment` from `lace_cc` to `lace_stats` -## [python-0.8.0] 2024-04-10 +## [python-0.8.0] - 2024-04-10 ### Added -- Added ability Pitman-Yor prior process +- Added ability Pitman-Yor prior process. +- Added `remove_rows` to `Engine`. +- Added `with_index` to `CodeBook`. ### Changed - `StateAlpha` and `ViewAlpha` transitions are now `StatePriorProcessParams` and `ViewPriorProcessParams` +- Updated Pyo3 version to 0.21 ## [python-0.7.1] - 2024-02-27 diff --git a/CITATION.cff b/CITATION.cff index 153a78d9..50abe654 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -34,5 +34,5 @@ keywords: - Bayesian - Machine Learning license: BUSL-1.1 -version: 0.7.0 +version: 0.8.0 date-released: '2024-02-07' From 0d405decf4c4e728187a0d54206bedec6e532b02 Mon Sep 17 00:00:00 2001 From: Baxter Eaves Date: Tue, 21 May 2024 10:48:14 -0500 Subject: [PATCH 43/43] Added note about refactor to contributing --- CONTRIBUTING.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a6e2835e..d3f2da7a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,8 @@ # Contributing to Lace +> :warning: Note that we are in the process of a major refector and are unlikely +> to accept any contributions apart from simple bugfixes + ## General Guidelines - Don't use getters and setters if it causes indirection in a performance heavy

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%0A@`_|uX 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