use lace::cc::feature::geweke::ColumnGewekeSettings;
use lace::geweke::*;
use lace::prelude::*;
use lace::stats::prior_process::Builder as AssignmentBuilder;
use rv::dist::Categorical;
use rv::dist::Gaussian;
use rv::dist::NormalInvChiSquared;
use rv::dist::SymmetricDirichlet;
type ContinuousColumn = Column<f64, Gaussian, NormalInvChiSquared, NixHyper>;
type CategoricalColumn = Column<u32, Categorical, SymmetricDirichlet, CsdHyper>;
fn main() {
let mut rng = rand::rng();
let transitions = vec![
ViewTransition::PriorProcessParams,
ViewTransition::RowAssignment(RowAssignAlg::Slice),
];
let asgn = AssignmentBuilder::new(10).flat().build().unwrap().asgn;
let settings = ColumnGewekeSettings::new(asgn, transitions);
let mut geweke_cont: GewekeTester<ContinuousColumn> =
GewekeTester::new(settings.clone());
geweke_cont.run(10_000, Some(10), &mut rng);
println!("Continuous");
geweke_cont.result().report();
let mut geweke_cat: GewekeTester<CategoricalColumn> =
GewekeTester::new(settings);
geweke_cat.run(1_000, Some(10), &mut rng);
println!("\nCategorical");
geweke_cat.result().report();
}