mixle 0.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mixle-0.6.0/LICENSE +21 -0
- mixle-0.6.0/MANIFEST.in +1 -0
- mixle-0.6.0/NOTICE +21 -0
- mixle-0.6.0/PKG-INFO +435 -0
- mixle-0.6.0/README.md +349 -0
- mixle-0.6.0/mixle/__init__.py +62 -0
- mixle-0.6.0/mixle/analysis/__init__.py +112 -0
- mixle-0.6.0/mixle/analysis/covariance_shrinkage.py +171 -0
- mixle-0.6.0/mixle/analysis/coverage.py +334 -0
- mixle-0.6.0/mixle/analysis/extreme.py +229 -0
- mixle-0.6.0/mixle/analysis/kde.py +201 -0
- mixle-0.6.0/mixle/analysis/kriging.py +306 -0
- mixle-0.6.0/mixle/analysis/max_stable.py +115 -0
- mixle-0.6.0/mixle/analysis/rank_aggregation.py +210 -0
- mixle-0.6.0/mixle/analysis/spatial_mixture.py +124 -0
- mixle-0.6.0/mixle/capability.py +854 -0
- mixle-0.6.0/mixle/contracts.py +131 -0
- mixle-0.6.0/mixle/data/__init__.py +113 -0
- mixle-0.6.0/mixle/data/core.py +116 -0
- mixle-0.6.0/mixle/data/encoded_io.py +54 -0
- mixle-0.6.0/mixle/data/hashing.py +106 -0
- mixle-0.6.0/mixle/data/partition.py +59 -0
- mixle-0.6.0/mixle/data/schema.py +194 -0
- mixle-0.6.0/mixle/data/sources/__init__.py +46 -0
- mixle-0.6.0/mixle/data/sources/arrow_source.py +66 -0
- mixle-0.6.0/mixle/data/sources/graph_source.py +299 -0
- mixle-0.6.0/mixle/data/sources/hadoop_source.py +71 -0
- mixle-0.6.0/mixle/data/sources/mongo_source.py +48 -0
- mixle-0.6.0/mixle/data/sources/pandas_source.py +110 -0
- mixle-0.6.0/mixle/data/sources/spark_source.py +46 -0
- mixle-0.6.0/mixle/data/sources/sql_source.py +45 -0
- mixle-0.6.0/mixle/data/sources/text_source.py +78 -0
- mixle-0.6.0/mixle/data/structure.py +122 -0
- mixle-0.6.0/mixle/data/validate.py +69 -0
- mixle-0.6.0/mixle/dist.py +13 -0
- mixle-0.6.0/mixle/doe/__init__.py +198 -0
- mixle-0.6.0/mixle/doe/_contracts.py +67 -0
- mixle-0.6.0/mixle/doe/active.py +167 -0
- mixle-0.6.0/mixle/doe/analysis.py +234 -0
- mixle-0.6.0/mixle/doe/batch.py +185 -0
- mixle-0.6.0/mixle/doe/bayesopt.py +482 -0
- mixle-0.6.0/mixle/doe/calibrate.py +115 -0
- mixle-0.6.0/mixle/doe/constrained.py +207 -0
- mixle-0.6.0/mixle/doe/designs.py +288 -0
- mixle-0.6.0/mixle/doe/entropy.py +117 -0
- mixle-0.6.0/mixle/doe/factorial.py +197 -0
- mixle-0.6.0/mixle/doe/mixture.py +85 -0
- mixle-0.6.0/mixle/doe/multifidelity.py +117 -0
- mixle-0.6.0/mixle/doe/multiobjective.py +126 -0
- mixle-0.6.0/mixle/doe/optimal.py +288 -0
- mixle-0.6.0/mixle/doe/optimizer.py +171 -0
- mixle-0.6.0/mixle/doe/propagate.py +145 -0
- mixle-0.6.0/mixle/doe/sensitivity.py +215 -0
- mixle-0.6.0/mixle/doe/trust_region.py +198 -0
- mixle-0.6.0/mixle/engines/__init__.py +128 -0
- mixle-0.6.0/mixle/engines/arithmetic.py +191 -0
- mixle-0.6.0/mixle/engines/base.py +179 -0
- mixle-0.6.0/mixle/engines/jax_engine.py +142 -0
- mixle-0.6.0/mixle/engines/numpy_engine.py +127 -0
- mixle-0.6.0/mixle/engines/precision.py +170 -0
- mixle-0.6.0/mixle/engines/symbolic_engine.py +567 -0
- mixle-0.6.0/mixle/engines/symbolic_export.py +279 -0
- mixle-0.6.0/mixle/engines/torch_engine.py +297 -0
- mixle-0.6.0/mixle/enumeration/__init__.py +94 -0
- mixle-0.6.0/mixle/enumeration/algorithms.py +53 -0
- mixle-0.6.0/mixle/enumeration/assignment.py +104 -0
- mixle-0.6.0/mixle/enumeration/best_first.py +651 -0
- mixle-0.6.0/mixle/enumeration/density_rank.py +943 -0
- mixle-0.6.0/mixle/enumeration/hmm_paths.py +101 -0
- mixle-0.6.0/mixle/enumeration/model_enumeration.py +327 -0
- mixle-0.6.0/mixle/enumeration/quantization/__init__.py +1 -0
- mixle-0.6.0/mixle/enumeration/quantization/core.py +634 -0
- mixle-0.6.0/mixle/enumeration/quantization/parallel.py +189 -0
- mixle-0.6.0/mixle/enumeration/quantization/seek.py +384 -0
- mixle-0.6.0/mixle/enumeration/quantization/semiring.py +370 -0
- mixle-0.6.0/mixle/enumeration/spanning.py +110 -0
- mixle-0.6.0/mixle/enumeration/streams.py +107 -0
- mixle-0.6.0/mixle/inference/__init__.py +387 -0
- mixle-0.6.0/mixle/inference/_advi.py +103 -0
- mixle-0.6.0/mixle/inference/backends.py +127 -0
- mixle-0.6.0/mixle/inference/block_gibbs.py +84 -0
- mixle-0.6.0/mixle/inference/calibration.py +368 -0
- mixle-0.6.0/mixle/inference/conformal.py +233 -0
- mixle-0.6.0/mixle/inference/cross_validation.py +336 -0
- mixle-0.6.0/mixle/inference/diagnostics.py +250 -0
- mixle-0.6.0/mixle/inference/em.py +781 -0
- mixle-0.6.0/mixle/inference/errors_in_variables.py +150 -0
- mixle-0.6.0/mixle/inference/estimation.py +1074 -0
- mixle-0.6.0/mixle/inference/fisher.py +788 -0
- mixle-0.6.0/mixle/inference/glm.py +491 -0
- mixle-0.6.0/mixle/inference/gradient_fit.py +656 -0
- mixle-0.6.0/mixle/inference/mcmc/__init__.py +85 -0
- mixle-0.6.0/mixle/inference/mcmc/conjugate.py +158 -0
- mixle-0.6.0/mixle/inference/mcmc/gradients.py +91 -0
- mixle-0.6.0/mixle/inference/mcmc/nuts_numba.py +245 -0
- mixle-0.6.0/mixle/inference/mcmc/nuts_torch.py +249 -0
- mixle-0.6.0/mixle/inference/mcmc/parameter_bridge.py +467 -0
- mixle-0.6.0/mixle/inference/mcmc/proposals.py +372 -0
- mixle-0.6.0/mixle/inference/mcmc/samplers.py +1077 -0
- mixle-0.6.0/mixle/inference/model_comparison.py +174 -0
- mixle-0.6.0/mixle/inference/multiple_testing.py +224 -0
- mixle-0.6.0/mixle/inference/nonparametric.py +510 -0
- mixle-0.6.0/mixle/inference/objectives.py +756 -0
- mixle-0.6.0/mixle/inference/ordinal.py +186 -0
- mixle-0.6.0/mixle/inference/posterior.py +223 -0
- mixle-0.6.0/mixle/inference/priors.py +274 -0
- mixle-0.6.0/mixle/inference/production/__init__.py +43 -0
- mixle-0.6.0/mixle/inference/production/drift.py +181 -0
- mixle-0.6.0/mixle/inference/production/monitor.py +84 -0
- mixle-0.6.0/mixle/inference/production/provenance.py +307 -0
- mixle-0.6.0/mixle/inference/production/registry.py +176 -0
- mixle-0.6.0/mixle/inference/production/serving.py +113 -0
- mixle-0.6.0/mixle/inference/resampling.py +442 -0
- mixle-0.6.0/mixle/inference/robust.py +215 -0
- mixle-0.6.0/mixle/inference/scoring.py +349 -0
- mixle-0.6.0/mixle/inference/streaming.py +248 -0
- mixle-0.6.0/mixle/inference/survival.py +543 -0
- mixle-0.6.0/mixle/inference/target.py +581 -0
- mixle-0.6.0/mixle/models/__init__.py +98 -0
- mixle-0.6.0/mixle/models/_forest.py +246 -0
- mixle-0.6.0/mixle/models/_kernels.py +100 -0
- mixle-0.6.0/mixle/models/_result.py +30 -0
- mixle-0.6.0/mixle/models/dependence.py +193 -0
- mixle-0.6.0/mixle/models/dirichlet_process_mixture.py +317 -0
- mixle-0.6.0/mixle/models/gaussian_process.py +238 -0
- mixle-0.6.0/mixle/models/grammar.py +196 -0
- mixle-0.6.0/mixle/models/knowledge_graph.py +197 -0
- mixle-0.6.0/mixle/models/neural.py +320 -0
- mixle-0.6.0/mixle/models/partially_observable_markov_decision_process.py +324 -0
- mixle-0.6.0/mixle/models/random_forest.py +301 -0
- mixle-0.6.0/mixle/models/random_graph.py +361 -0
- mixle-0.6.0/mixle/models/sparse_gaussian_process.py +110 -0
- mixle-0.6.0/mixle/ops.py +134 -0
- mixle-0.6.0/mixle/ppl/__init__.py +249 -0
- mixle-0.6.0/mixle/ppl/_grid.py +52 -0
- mixle-0.6.0/mixle/ppl/_lowering.py +634 -0
- mixle-0.6.0/mixle/ppl/_result.py +88 -0
- mixle-0.6.0/mixle/ppl/autograd.py +523 -0
- mixle-0.6.0/mixle/ppl/conformal.py +305 -0
- mixle-0.6.0/mixle/ppl/core.py +1882 -0
- mixle-0.6.0/mixle/ppl/diagnostics.py +285 -0
- mixle-0.6.0/mixle/ppl/distributions.py +357 -0
- mixle-0.6.0/mixle/ppl/field.py +1186 -0
- mixle-0.6.0/mixle/ppl/inference.py +2455 -0
- mixle-0.6.0/mixle/ppl/predictive.py +143 -0
- mixle-0.6.0/mixle/ppl/priors.py +72 -0
- mixle-0.6.0/mixle/ppl/provenance.py +47 -0
- mixle-0.6.0/mixle/ppl/regression.py +734 -0
- mixle-0.6.0/mixle/ppl/rough_paths.py +75 -0
- mixle-0.6.0/mixle/ppl/statespace.py +127 -0
- mixle-0.6.0/mixle/ppl/summarize.py +75 -0
- mixle-0.6.0/mixle/ppl/survival.py +154 -0
- mixle-0.6.0/mixle/ppl/vmp.py +527 -0
- mixle-0.6.0/mixle/process.py +28 -0
- mixle-0.6.0/mixle/relations.py +1126 -0
- mixle-0.6.0/mixle/stats/__init__.py +1966 -0
- mixle-0.6.0/mixle/stats/bayes/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/bayes/conjugate.py +1133 -0
- mixle-0.6.0/mixle/stats/bayes/dict_dirichlet.py +196 -0
- mixle-0.6.0/mixle/stats/bayes/dirichlet.py +1010 -0
- mixle-0.6.0/mixle/stats/bayes/dirichlet_process_mixture.py +758 -0
- mixle-0.6.0/mixle/stats/bayes/hierarchical_dirichlet_process_mixture.py +688 -0
- mixle-0.6.0/mixle/stats/bayes/multivariate_normal_gamma.py +211 -0
- mixle-0.6.0/mixle/stats/bayes/normal_gamma.py +195 -0
- mixle-0.6.0/mixle/stats/bayes/normal_wishart.py +232 -0
- mixle-0.6.0/mixle/stats/bayes/pitman_yor.py +372 -0
- mixle-0.6.0/mixle/stats/bayes/symmetric_dirichlet.py +141 -0
- mixle-0.6.0/mixle/stats/combinator/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/combinator/_base.py +88 -0
- mixle-0.6.0/mixle/stats/combinator/censored.py +291 -0
- mixle-0.6.0/mixle/stats/combinator/composite.py +1170 -0
- mixle-0.6.0/mixle/stats/combinator/conditional.py +1494 -0
- mixle-0.6.0/mixle/stats/combinator/exponential_tilt.py +539 -0
- mixle-0.6.0/mixle/stats/combinator/finite_stochastic_transform.py +296 -0
- mixle-0.6.0/mixle/stats/combinator/hurdle.py +294 -0
- mixle-0.6.0/mixle/stats/combinator/ignored.py +288 -0
- mixle-0.6.0/mixle/stats/combinator/null_dist.py +457 -0
- mixle-0.6.0/mixle/stats/combinator/optional.py +893 -0
- mixle-0.6.0/mixle/stats/combinator/record.py +598 -0
- mixle-0.6.0/mixle/stats/combinator/select.py +823 -0
- mixle-0.6.0/mixle/stats/combinator/sequence.py +1366 -0
- mixle-0.6.0/mixle/stats/combinator/survival.py +257 -0
- mixle-0.6.0/mixle/stats/combinator/transform.py +558 -0
- mixle-0.6.0/mixle/stats/combinator/truncated.py +316 -0
- mixle-0.6.0/mixle/stats/combinator/weighted.py +481 -0
- mixle-0.6.0/mixle/stats/combinator/zero_inflated.py +266 -0
- mixle-0.6.0/mixle/stats/compute/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/compute/_sampling.py +48 -0
- mixle-0.6.0/mixle/stats/compute/backend.py +65 -0
- mixle-0.6.0/mixle/stats/compute/capabilities.py +110 -0
- mixle-0.6.0/mixle/stats/compute/declarations.py +1493 -0
- mixle-0.6.0/mixle/stats/compute/decomposition.py +122 -0
- mixle-0.6.0/mixle/stats/compute/encoded.py +93 -0
- mixle-0.6.0/mixle/stats/compute/exp_family.py +501 -0
- mixle-0.6.0/mixle/stats/compute/fused_codegen.py +1238 -0
- mixle-0.6.0/mixle/stats/compute/fused_kernels.py +1415 -0
- mixle-0.6.0/mixle/stats/compute/fused_nested.py +341 -0
- mixle-0.6.0/mixle/stats/compute/gradient.py +622 -0
- mixle-0.6.0/mixle/stats/compute/kernel.py +677 -0
- mixle-0.6.0/mixle/stats/compute/pdist.py +1220 -0
- mixle-0.6.0/mixle/stats/compute/posterior.py +279 -0
- mixle-0.6.0/mixle/stats/compute/sampling_api.py +103 -0
- mixle-0.6.0/mixle/stats/compute/sequence.py +606 -0
- mixle-0.6.0/mixle/stats/compute/stacked.py +657 -0
- mixle-0.6.0/mixle/stats/compute/torch_mixture.py +278 -0
- mixle-0.6.0/mixle/stats/directional/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/directional/bingham.py +260 -0
- mixle-0.6.0/mixle/stats/directional/kent.py +295 -0
- mixle-0.6.0/mixle/stats/directional/projected_normal.py +224 -0
- mixle-0.6.0/mixle/stats/directional/von_mises.py +413 -0
- mixle-0.6.0/mixle/stats/directional/von_mises_fisher.py +775 -0
- mixle-0.6.0/mixle/stats/directional/watson.py +246 -0
- mixle-0.6.0/mixle/stats/directional/wrapped_cauchy.py +208 -0
- mixle-0.6.0/mixle/stats/directional/wrapped_normal.py +215 -0
- mixle-0.6.0/mixle/stats/graphs/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/graphs/erdos_renyi_graph.py +380 -0
- mixle-0.6.0/mixle/stats/graphs/hyperedge_replacement_grammar.py +603 -0
- mixle-0.6.0/mixle/stats/graphs/knowledge_graph.py +602 -0
- mixle-0.6.0/mixle/stats/graphs/random_dot_product_graph.py +274 -0
- mixle-0.6.0/mixle/stats/graphs/stochastic_block_graph.py +596 -0
- mixle-0.6.0/mixle/stats/graphs/temporal_graph_grammar.py +2311 -0
- mixle-0.6.0/mixle/stats/graphs/vertex_replacement_grammar.py +954 -0
- mixle-0.6.0/mixle/stats/latent/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/latent/_hidden_markov_numba_kernels.py +298 -0
- mixle-0.6.0/mixle/stats/latent/chained_attention.py +353 -0
- mixle-0.6.0/mixle/stats/latent/dirac_length.py +1023 -0
- mixle-0.6.0/mixle/stats/latent/gaussian_mixture.py +368 -0
- mixle-0.6.0/mixle/stats/latent/heterogeneous_mixture.py +1180 -0
- mixle-0.6.0/mixle/stats/latent/heterogeneous_pcfg.py +1439 -0
- mixle-0.6.0/mixle/stats/latent/hidden_association.py +951 -0
- mixle-0.6.0/mixle/stats/latent/hidden_markov.py +4060 -0
- mixle-0.6.0/mixle/stats/latent/hierarchical.py +189 -0
- mixle-0.6.0/mixle/stats/latent/hierarchical_mixture.py +1251 -0
- mixle-0.6.0/mixle/stats/latent/hmm_determinize.py +426 -0
- mixle-0.6.0/mixle/stats/latent/indian_buffet_process.py +638 -0
- mixle-0.6.0/mixle/stats/latent/integer_hidden_association.py +1508 -0
- mixle-0.6.0/mixle/stats/latent/integer_probabilistic_latent_semantic_indexing.py +1375 -0
- mixle-0.6.0/mixle/stats/latent/joint_mixture.py +1316 -0
- mixle-0.6.0/mixle/stats/latent/labeled_lda.py +1611 -0
- mixle-0.6.0/mixle/stats/latent/lda.py +1728 -0
- mixle-0.6.0/mixle/stats/latent/lookback_hidden_markov_model.py +1378 -0
- mixle-0.6.0/mixle/stats/latent/mixture.py +1883 -0
- mixle-0.6.0/mixle/stats/latent/probabilistic_pca.py +318 -0
- mixle-0.6.0/mixle/stats/latent/quantized_hidden_markov_model.py +958 -0
- mixle-0.6.0/mixle/stats/latent/responsibility_attention.py +461 -0
- mixle-0.6.0/mixle/stats/latent/segmental_hidden_markov_model.py +751 -0
- mixle-0.6.0/mixle/stats/latent/semi_supervised_hidden_markov_model.py +507 -0
- mixle-0.6.0/mixle/stats/latent/semi_supervised_mixture.py +1070 -0
- mixle-0.6.0/mixle/stats/latent/tree_hidden_markov_model.py +2564 -0
- mixle-0.6.0/mixle/stats/latent/variational_embedding_attention.py +427 -0
- mixle-0.6.0/mixle/stats/latent/variational_multihop_attention.py +365 -0
- mixle-0.6.0/mixle/stats/matrix/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/matrix/inverse_wishart.py +165 -0
- mixle-0.6.0/mixle/stats/matrix/lkj.py +264 -0
- mixle-0.6.0/mixle/stats/matrix/matrix_normal.py +253 -0
- mixle-0.6.0/mixle/stats/matrix/wishart.py +325 -0
- mixle-0.6.0/mixle/stats/missing.py +94 -0
- mixle-0.6.0/mixle/stats/multivariate/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/multivariate/categorical_multinomial.py +1097 -0
- mixle-0.6.0/mixle/stats/multivariate/composition.py +212 -0
- mixle-0.6.0/mixle/stats/multivariate/diagonal_gaussian.py +887 -0
- mixle-0.6.0/mixle/stats/multivariate/dirichlet_multinomial.py +231 -0
- mixle-0.6.0/mixle/stats/multivariate/gaussian_copula.py +223 -0
- mixle-0.6.0/mixle/stats/multivariate/integer_multinomial.py +1206 -0
- mixle-0.6.0/mixle/stats/multivariate/multivariate_gaussian.py +965 -0
- mixle-0.6.0/mixle/stats/multivariate/multivariate_student_t.py +472 -0
- mixle-0.6.0/mixle/stats/processes/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/processes/birth_death.py +335 -0
- mixle-0.6.0/mixle/stats/processes/chinese_restaurant_process.py +236 -0
- mixle-0.6.0/mixle/stats/processes/hawkes_process.py +430 -0
- mixle-0.6.0/mixle/stats/processes/inhomogeneous_poisson.py +336 -0
- mixle-0.6.0/mixle/stats/processes/multivariate_hawkes.py +390 -0
- mixle-0.6.0/mixle/stats/processes/power_law_hawkes.py +279 -0
- mixle-0.6.0/mixle/stats/processes/renewal_process.py +289 -0
- mixle-0.6.0/mixle/stats/processes/temporal.py +353 -0
- mixle-0.6.0/mixle/stats/rankings/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/rankings/_permutation_kernels.py +271 -0
- mixle-0.6.0/mixle/stats/rankings/bradley_terry.py +272 -0
- mixle-0.6.0/mixle/stats/rankings/ewens.py +268 -0
- mixle-0.6.0/mixle/stats/rankings/generalized_mallows.py +612 -0
- mixle-0.6.0/mixle/stats/rankings/generalized_mallows_model.py +308 -0
- mixle-0.6.0/mixle/stats/rankings/low_rank_permutation.py +309 -0
- mixle-0.6.0/mixle/stats/rankings/mallows.py +387 -0
- mixle-0.6.0/mixle/stats/rankings/matching.py +369 -0
- mixle-0.6.0/mixle/stats/rankings/paired_comparison.py +515 -0
- mixle-0.6.0/mixle/stats/rankings/plackett_luce.py +530 -0
- mixle-0.6.0/mixle/stats/rankings/spearman_rho.py +655 -0
- mixle-0.6.0/mixle/stats/rankings/thurstone.py +341 -0
- mixle-0.6.0/mixle/stats/sequences/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/sequences/_keyed_accumulator.py +56 -0
- mixle-0.6.0/mixle/stats/sequences/integer_markov_chain.py +1390 -0
- mixle-0.6.0/mixle/stats/sequences/markov_chain.py +2001 -0
- mixle-0.6.0/mixle/stats/sequences/markov_transform.py +848 -0
- mixle-0.6.0/mixle/stats/sequences/sparse_markov_transform.py +942 -0
- mixle-0.6.0/mixle/stats/sets/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/sets/bernoulli_set.py +898 -0
- mixle-0.6.0/mixle/stats/sets/integer_bernoulli_edit.py +1001 -0
- mixle-0.6.0/mixle/stats/sets/integer_bernoulli_set.py +555 -0
- mixle-0.6.0/mixle/stats/sets/integer_step_bernoulli_edit.py +352 -0
- mixle-0.6.0/mixle/stats/trees/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/trees/chow_liu_tree.py +713 -0
- mixle-0.6.0/mixle/stats/trees/integer_chow_liu_tree.py +733 -0
- mixle-0.6.0/mixle/stats/trees/spanning_tree.py +413 -0
- mixle-0.6.0/mixle/stats/univariate/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/beta.py +448 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/exgaussian.py +343 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/exponential.py +675 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/gamma.py +770 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/gaussian.py +815 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/generalized_extreme_value.py +309 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/generalized_gaussian.py +266 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/generalized_pareto.py +267 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/gumbel.py +342 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/half_normal.py +382 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/inverse_gamma.py +425 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/inverse_gaussian.py +452 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/laplace.py +325 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/log_gaussian.py +797 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/logistic.py +302 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/nakagami.py +220 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/pareto.py +378 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/rayleigh.py +331 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/rician.py +238 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/skew_normal.py +271 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/student_t.py +310 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/tweedie.py +298 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/uniform.py +317 -0
- mixle-0.6.0/mixle/stats/univariate/continuous/weibull.py +385 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/__init__.py +1 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/bernoulli.py +450 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/beta_binomial.py +214 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/binomial.py +1128 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/categorical.py +994 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/geometric.py +784 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/integer_categorical.py +1046 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/integer_uniform_spike.py +805 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/logseries.py +384 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/negative_binomial.py +522 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/point_mass.py +251 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/poisson.py +813 -0
- mixle-0.6.0/mixle/stats/univariate/discrete/skellam.py +284 -0
- mixle-0.6.0/mixle/tests/admm_test.py +46 -0
- mixle-0.6.0/mixle/tests/anisotropic_kernel_test.py +46 -0
- mixle-0.6.0/mixle/tests/api_naming_aliases_test.py +234 -0
- mixle-0.6.0/mixle/tests/arithmetic_constants_test.py +78 -0
- mixle-0.6.0/mixle/tests/assignment_kbest_test.py +75 -0
- mixle-0.6.0/mixle/tests/audit_fixes_regression_test.py +175 -0
- mixle-0.6.0/mixle/tests/auto_precision_test.py +88 -0
- mixle-0.6.0/mixle/tests/automatic_beta_test.py +39 -0
- mixle-0.6.0/mixle/tests/automatic_detectors_test.py +38 -0
- mixle-0.6.0/mixle/tests/automatic_exgaussian_test.py +36 -0
- mixle-0.6.0/mixle/tests/automatic_generalized_extreme_value_test.py +46 -0
- mixle-0.6.0/mixle/tests/automatic_generalized_gaussian_test.py +44 -0
- mixle-0.6.0/mixle/tests/automatic_generalized_pareto_test.py +46 -0
- mixle-0.6.0/mixle/tests/automatic_gof_test.py +43 -0
- mixle-0.6.0/mixle/tests/automatic_gumbel_test.py +34 -0
- mixle-0.6.0/mixle/tests/automatic_input_types_test.py +34 -0
- mixle-0.6.0/mixle/tests/automatic_inverse_gaussian_test.py +40 -0
- mixle-0.6.0/mixle/tests/automatic_logistic_test.py +38 -0
- mixle-0.6.0/mixle/tests/automatic_lognormal_test.py +64 -0
- mixle-0.6.0/mixle/tests/automatic_mixture_test.py +37 -0
- mixle-0.6.0/mixle/tests/automatic_model_weights_test.py +49 -0
- mixle-0.6.0/mixle/tests/automatic_negative_binomial_test.py +28 -0
- mixle-0.6.0/mixle/tests/automatic_pareto_test.py +38 -0
- mixle-0.6.0/mixle/tests/automatic_scientific_test.py +419 -0
- mixle-0.6.0/mixle/tests/automatic_skew_normal_test.py +37 -0
- mixle-0.6.0/mixle/tests/automatic_studentt_test.py +39 -0
- mixle-0.6.0/mixle/tests/automatic_test.py +211 -0
- mixle-0.6.0/mixle/tests/automatic_tweedie_test.py +43 -0
- mixle-0.6.0/mixle/tests/automatic_weibull_test.py +37 -0
- mixle-0.6.0/mixle/tests/backend_scoring_test.py +1814 -0
- mixle-0.6.0/mixle/tests/balance_test.py +238 -0
- mixle-0.6.0/mixle/tests/base_dist_test.py +446 -0
- mixle-0.6.0/mixle/tests/bayes_streaming_test.py +387 -0
- mixle-0.6.0/mixle/tests/bayes_test.py +886 -0
- mixle-0.6.0/mixle/tests/bernoulli_conjugate_boundary_test.py +34 -0
- mixle-0.6.0/mixle/tests/beta_binomial_test.py +47 -0
- mixle-0.6.0/mixle/tests/bingham_test.py +88 -0
- mixle-0.6.0/mixle/tests/birth_death_test.py +57 -0
- mixle-0.6.0/mixle/tests/block_gibbs_test.py +67 -0
- mixle-0.6.0/mixle/tests/bradley_terry_test.py +72 -0
- mixle-0.6.0/mixle/tests/calibration_diagnostics_test.py +133 -0
- mixle-0.6.0/mixle/tests/calibration_test.py +60 -0
- mixle-0.6.0/mixle/tests/capability_test.py +306 -0
- mixle-0.6.0/mixle/tests/cardinality_milp_test.py +57 -0
- mixle-0.6.0/mixle/tests/categorical_expfamily_test.py +86 -0
- mixle-0.6.0/mixle/tests/categorical_test.py +52 -0
- mixle-0.6.0/mixle/tests/cdf_coverage_test.py +47 -0
- mixle-0.6.0/mixle/tests/cdf_discrete_test.py +42 -0
- mixle-0.6.0/mixle/tests/censored_test.py +100 -0
- mixle-0.6.0/mixle/tests/chained_attention_test.py +137 -0
- mixle-0.6.0/mixle/tests/checkpoint_test.py +85 -0
- mixle-0.6.0/mixle/tests/chinese_restaurant_process_test.py +65 -0
- mixle-0.6.0/mixle/tests/chisquare_gof_test.py +39 -0
- mixle-0.6.0/mixle/tests/chow_liu_tree_test.py +209 -0
- mixle-0.6.0/mixle/tests/clique_test.py +47 -0
- mixle-0.6.0/mixle/tests/composition_test.py +71 -0
- mixle-0.6.0/mixle/tests/compute_kernel_test.py +767 -0
- mixle-0.6.0/mixle/tests/compute_metadata_test.py +1815 -0
- mixle-0.6.0/mixle/tests/conditional_audit_test.py +63 -0
- mixle-0.6.0/mixle/tests/conformal_array_test.py +123 -0
- mixle-0.6.0/mixle/tests/conformal_test.py +226 -0
- mixle-0.6.0/mixle/tests/conftest.py +253 -0
- mixle-0.6.0/mixle/tests/conjugate_test.py +342 -0
- mixle-0.6.0/mixle/tests/consistency_fixes_regression_test.py +113 -0
- mixle-0.6.0/mixle/tests/continuous_cdf_test.py +147 -0
- mixle-0.6.0/mixle/tests/count_dp_seek_logprob_test.py +49 -0
- mixle-0.6.0/mixle/tests/coupled_multiset_enum_test.py +230 -0
- mixle-0.6.0/mixle/tests/covariance_shrinkage_test.py +69 -0
- mixle-0.6.0/mixle/tests/coverage_estimation_test.py +145 -0
- mixle-0.6.0/mixle/tests/cross_validation_test.py +151 -0
- mixle-0.6.0/mixle/tests/dask_encoded_data_test.py +175 -0
- mixle-0.6.0/mixle/tests/data_layer_test.py +176 -0
- mixle-0.6.0/mixle/tests/dataframe_adapter_test.py +171 -0
- mixle-0.6.0/mixle/tests/decomposition_test.py +138 -0
- mixle-0.6.0/mixle/tests/dense_mass_hmc_test.py +36 -0
- mixle-0.6.0/mixle/tests/density_rank_test.py +324 -0
- mixle-0.6.0/mixle/tests/dirac_length_engine_test.py +40 -0
- mixle-0.6.0/mixle/tests/dirichlet_multinomial_test.py +46 -0
- mixle-0.6.0/mixle/tests/distribution_additions_test.py +420 -0
- mixle-0.6.0/mixle/tests/docstring_references_test.py +54 -0
- mixle-0.6.0/mixle/tests/doe_active_test.py +64 -0
- mixle-0.6.0/mixle/tests/doe_analysis_test.py +81 -0
- mixle-0.6.0/mixle/tests/doe_batch_test.py +73 -0
- mixle-0.6.0/mixle/tests/doe_bayesopt_test.py +201 -0
- mixle-0.6.0/mixle/tests/doe_constrained_test.py +93 -0
- mixle-0.6.0/mixle/tests/doe_criteria_sensitivity_test.py +75 -0
- mixle-0.6.0/mixle/tests/doe_designs_test.py +150 -0
- mixle-0.6.0/mixle/tests/doe_entropy_test.py +53 -0
- mixle-0.6.0/mixle/tests/doe_factorial_test.py +78 -0
- mixle-0.6.0/mixle/tests/doe_mixture_test.py +56 -0
- mixle-0.6.0/mixle/tests/doe_multifidelity_test.py +44 -0
- mixle-0.6.0/mixle/tests/doe_multiobjective_test.py +66 -0
- mixle-0.6.0/mixle/tests/doe_optimal_test.py +132 -0
- mixle-0.6.0/mixle/tests/doe_optimizer_test.py +108 -0
- mixle-0.6.0/mixle/tests/doe_turbo_test.py +68 -0
- mixle-0.6.0/mixle/tests/drift_test.py +74 -0
- mixle-0.6.0/mixle/tests/em_nonfinite_guard_test.py +109 -0
- mixle-0.6.0/mixle/tests/em_strategies_test.py +331 -0
- mixle-0.6.0/mixle/tests/encoded_data_backend_registry_test.py +66 -0
- mixle-0.6.0/mixle/tests/engine_accumulate_parity_test.py +90 -0
- mixle-0.6.0/mixle/tests/engine_op_parity_test.py +141 -0
- mixle-0.6.0/mixle/tests/engine_test.py +205 -0
- mixle-0.6.0/mixle/tests/entropy_methods_test.py +57 -0
- mixle-0.6.0/mixle/tests/enumeration_test.py +639 -0
- mixle-0.6.0/mixle/tests/enumerator_coverage_test.py +207 -0
- mixle-0.6.0/mixle/tests/enumerator_methods_test.py +51 -0
- mixle-0.6.0/mixle/tests/errors_in_variables_test.py +44 -0
- mixle-0.6.0/mixle/tests/estimator_stability_test.py +104 -0
- mixle-0.6.0/mixle/tests/ewens_test.py +64 -0
- mixle-0.6.0/mixle/tests/exgaussian_test.py +143 -0
- mixle-0.6.0/mixle/tests/exp_family_fisher_test.py +53 -0
- mixle-0.6.0/mixle/tests/exp_family_test.py +276 -0
- mixle-0.6.0/mixle/tests/exponential_tilt_test.py +177 -0
- mixle-0.6.0/mixle/tests/extreme_value_test.py +115 -0
- mixle-0.6.0/mixle/tests/field_sample_test.py +93 -0
- mixle-0.6.0/mixle/tests/field_test.py +225 -0
- mixle-0.6.0/mixle/tests/finite_stochastic_transform_test.py +118 -0
- mixle-0.6.0/mixle/tests/fisher_view_test.py +740 -0
- mixle-0.6.0/mixle/tests/fused_codegen_test.py +612 -0
- mixle-0.6.0/mixle/tests/fused_em_association_test.py +209 -0
- mixle-0.6.0/mixle/tests/fused_em_hmm_family_test.py +194 -0
- mixle-0.6.0/mixle/tests/fused_em_mixtures_test.py +188 -0
- mixle-0.6.0/mixle/tests/fused_em_support_bound_merge_test.py +58 -0
- mixle-0.6.0/mixle/tests/fused_em_test.py +176 -0
- mixle-0.6.0/mixle/tests/fused_em_variational_test.py +164 -0
- mixle-0.6.0/mixle/tests/gamma_audit_test.py +59 -0
- mixle-0.6.0/mixle/tests/gaussian_copula_test.py +42 -0
- mixle-0.6.0/mixle/tests/gaussian_process_matern_test.py +80 -0
- mixle-0.6.0/mixle/tests/gaussian_process_monotone_test.py +65 -0
- mixle-0.6.0/mixle/tests/generalized_extreme_value_test.py +41 -0
- mixle-0.6.0/mixle/tests/generalized_gaussian_test.py +54 -0
- mixle-0.6.0/mixle/tests/generalized_mallows_model_test.py +58 -0
- mixle-0.6.0/mixle/tests/generalized_mallows_test.py +101 -0
- mixle-0.6.0/mixle/tests/generalized_pareto_test.py +45 -0
- mixle-0.6.0/mixle/tests/generated_kernel_parity_test.py +160 -0
- mixle-0.6.0/mixle/tests/gev_gpd_moments_test.py +40 -0
- mixle-0.6.0/mixle/tests/geweke_test.py +29 -0
- mixle-0.6.0/mixle/tests/glm_test.py +152 -0
- mixle-0.6.0/mixle/tests/gradient_fit_test.py +612 -0
- mixle-0.6.0/mixle/tests/gradient_gamma_prior_audit_test.py +68 -0
- mixle-0.6.0/mixle/tests/graph_coloring_test.py +51 -0
- mixle-0.6.0/mixle/tests/graph_distribution_test.py +218 -0
- mixle-0.6.0/mixle/tests/graph_engine_test.py +51 -0
- mixle-0.6.0/mixle/tests/graph_source_audit_test.py +38 -0
- mixle-0.6.0/mixle/tests/gumbel_test.py +61 -0
- mixle-0.6.0/mixle/tests/half_normal_test.py +67 -0
- mixle-0.6.0/mixle/tests/hawkes_process_test.py +121 -0
- mixle-0.6.0/mixle/tests/heterogeneous_pcfg_test.py +239 -0
- mixle-0.6.0/mixle/tests/hidden_association_empty_given_audit_test.py +97 -0
- mixle-0.6.0/mixle/tests/hidden_association_engine_test.py +80 -0
- mixle-0.6.0/mixle/tests/hidden_association_keys_test.py +93 -0
- mixle-0.6.0/mixle/tests/hierarchical_test.py +62 -0
- mixle-0.6.0/mixle/tests/hmixture_engine_test.py +57 -0
- mixle-0.6.0/mixle/tests/hmm_determinize_test.py +132 -0
- mixle-0.6.0/mixle/tests/hmm_engine_test.py +193 -0
- mixle-0.6.0/mixle/tests/hmm_keys_test.py +36 -0
- mixle-0.6.0/mixle/tests/hmm_numba_parity_test.py +63 -0
- mixle-0.6.0/mixle/tests/hmm_sampler_batching_test.py +217 -0
- mixle-0.6.0/mixle/tests/hmm_steady_state_test.py +73 -0
- mixle-0.6.0/mixle/tests/hmm_terminal_states_test.py +223 -0
- mixle-0.6.0/mixle/tests/hmm_zero_prob_test.py +92 -0
- mixle-0.6.0/mixle/tests/hurdle_test.py +53 -0
- mixle-0.6.0/mixle/tests/hvis_test.py +1319 -0
- mixle-0.6.0/mixle/tests/hyperedge_replacement_grammar_test.py +122 -0
- mixle-0.6.0/mixle/tests/ibp_test.py +117 -0
- mixle-0.6.0/mixle/tests/iis_test.py +56 -0
- mixle-0.6.0/mixle/tests/infer_backends_test.py +177 -0
- mixle-0.6.0/mixle/tests/infer_facade_test.py +186 -0
- mixle-0.6.0/mixle/tests/infer_parallel_chains_test.py +52 -0
- mixle-0.6.0/mixle/tests/inhomogeneous_poisson_test.py +57 -0
- mixle-0.6.0/mixle/tests/int_hidden_association_engine_test.py +63 -0
- mixle-0.6.0/mixle/tests/int_hidden_association_test.py +117 -0
- mixle-0.6.0/mixle/tests/int_plsi_engine_test.py +49 -0
- mixle-0.6.0/mixle/tests/integer_categorical_expfamily_test.py +71 -0
- mixle-0.6.0/mixle/tests/integer_markov_chain_audit_test.py +78 -0
- mixle-0.6.0/mixle/tests/integer_markov_chain_support_test.py +40 -0
- mixle-0.6.0/mixle/tests/integer_multinomial_expfamily_test.py +92 -0
- mixle-0.6.0/mixle/tests/inverse_gamma_test.py +76 -0
- mixle-0.6.0/mixle/tests/inverse_wishart_test.py +44 -0
- mixle-0.6.0/mixle/tests/jax_engine_test.py +100 -0
- mixle-0.6.0/mixle/tests/jmixture_engine_test.py +56 -0
- mixle-0.6.0/mixle/tests/kde_test.py +95 -0
- mixle-0.6.0/mixle/tests/kent_test.py +82 -0
- mixle-0.6.0/mixle/tests/kernels_ext_test.py +375 -0
- mixle-0.6.0/mixle/tests/kernels_test.py +258 -0
- mixle-0.6.0/mixle/tests/key_validation_test.py +59 -0
- mixle-0.6.0/mixle/tests/knowledge_gradient_test.py +49 -0
- mixle-0.6.0/mixle/tests/knowledge_graph_test.py +176 -0
- mixle-0.6.0/mixle/tests/kriging_test.py +138 -0
- mixle-0.6.0/mixle/tests/ks_gof_test.py +39 -0
- mixle-0.6.0/mixle/tests/latent_posterior_test.py +176 -0
- mixle-0.6.0/mixle/tests/lda_engine_test.py +64 -0
- mixle-0.6.0/mixle/tests/lda_len_test.py +144 -0
- mixle-0.6.0/mixle/tests/leaf_engine_test.py +80 -0
- mixle-0.6.0/mixle/tests/lightning_encoded_data_test.py +55 -0
- mixle-0.6.0/mixle/tests/lineage_test.py +98 -0
- mixle-0.6.0/mixle/tests/lkj_test.py +74 -0
- mixle-0.6.0/mixle/tests/llda_alpha_test.py +222 -0
- mixle-0.6.0/mixle/tests/llda_engine_test.py +90 -0
- mixle-0.6.0/mixle/tests/local_parallel_chunks_test.py +79 -0
- mixle-0.6.0/mixle/tests/log_density_convenience_test.py +68 -0
- mixle-0.6.0/mixle/tests/logei_acquisition_test.py +51 -0
- mixle-0.6.0/mixle/tests/logseries_test.py +72 -0
- mixle-0.6.0/mixle/tests/lookback_hmm_engine_test.py +109 -0
- mixle-0.6.0/mixle/tests/lookback_lag0_test.py +284 -0
- mixle-0.6.0/mixle/tests/lookback_terminal_states_test.py +93 -0
- mixle-0.6.0/mixle/tests/low_rank_permutation_test.py +59 -0
- mixle-0.6.0/mixle/tests/mallows_test.py +107 -0
- mixle-0.6.0/mixle/tests/marginal_seek_test.py +220 -0
- mixle-0.6.0/mixle/tests/markov_chain_audit_test.py +117 -0
- mixle-0.6.0/mixle/tests/markov_transform_engine_test.py +85 -0
- mixle-0.6.0/mixle/tests/matching_test.py +87 -0
- mixle-0.6.0/mixle/tests/matrix_normal_test.py +49 -0
- mixle-0.6.0/mixle/tests/max_flow_test.py +46 -0
- mixle-0.6.0/mixle/tests/max_stable_test.py +48 -0
- mixle-0.6.0/mixle/tests/mcmc_autograd_test.py +110 -0
- mixle-0.6.0/mixle/tests/mcmc_convergence_test.py +125 -0
- mixle-0.6.0/mixle/tests/mcmc_diagnostics_test.py +57 -0
- mixle-0.6.0/mixle/tests/mcmc_summary_test.py +39 -0
- mixle-0.6.0/mixle/tests/mcmc_test.py +772 -0
- mixle-0.6.0/mixle/tests/measurement_error_test.py +79 -0
- mixle-0.6.0/mixle/tests/milp_test.py +48 -0
- mixle-0.6.0/mixle/tests/min_arborescence_test.py +67 -0
- mixle-0.6.0/mixle/tests/missing_data_test.py +193 -0
- mixle-0.6.0/mixle/tests/mixture_conditional_test.py +100 -0
- mixle-0.6.0/mixle/tests/mixture_heterogeneous_test.py +104 -0
- mixle-0.6.0/mixle/tests/mixture_stability_test.py +203 -0
- mixle-0.6.0/mixle/tests/mode_methods_test.py +59 -0
- mixle-0.6.0/mixle/tests/model_comparison_test.py +88 -0
- mixle-0.6.0/mixle/tests/model_decomposition_test.py +155 -0
- mixle-0.6.0/mixle/tests/model_enumeration_test.py +201 -0
- mixle-0.6.0/mixle/tests/model_helpers_test.py +226 -0
- mixle-0.6.0/mixle/tests/model_parallel_test.py +455 -0
- mixle-0.6.0/mixle/tests/moment_methods_test.py +97 -0
- mixle-0.6.0/mixle/tests/multi_field_test.py +141 -0
- mixle-0.6.0/mixle/tests/multiple_testing_test.py +120 -0
- mixle-0.6.0/mixle/tests/multivariate_gaussian_audit_test.py +43 -0
- mixle-0.6.0/mixle/tests/multivariate_hawkes_test.py +75 -0
- mixle-0.6.0/mixle/tests/mvn_conditional_test.py +53 -0
- mixle-0.6.0/mixle/tests/mvt_conditional_test.py +49 -0
- mixle-0.6.0/mixle/tests/mvt_test.py +71 -0
- mixle-0.6.0/mixle/tests/nakagami_test.py +56 -0
- mixle-0.6.0/mixle/tests/namespaces_test.py +58 -0
- mixle-0.6.0/mixle/tests/negative_binomial_estimator_test.py +105 -0
- mixle-0.6.0/mixle/tests/nonparametric_test.py +133 -0
- mixle-0.6.0/mixle/tests/numerical_guards_test.py +113 -0
- mixle-0.6.0/mixle/tests/numerics_test.py +422 -0
- mixle-0.6.0/mixle/tests/nuts_mass_adaptation_test.py +67 -0
- mixle-0.6.0/mixle/tests/nuts_torch_test.py +77 -0
- mixle-0.6.0/mixle/tests/objective_resolution_test.py +84 -0
- mixle-0.6.0/mixle/tests/objectives_test.py +498 -0
- mixle-0.6.0/mixle/tests/ops_project_test.py +42 -0
- mixle-0.6.0/mixle/tests/ops_test.py +75 -0
- mixle-0.6.0/mixle/tests/ordinal_test.py +88 -0
- mixle-0.6.0/mixle/tests/paired_comparison_test.py +79 -0
- mixle-0.6.0/mixle/tests/parallel_test.py +221 -0
- mixle-0.6.0/mixle/tests/pareto_expfamily_test.py +59 -0
- mixle-0.6.0/mixle/tests/particle_filter_test.py +61 -0
- mixle-0.6.0/mixle/tests/pcfg_engine_test.py +68 -0
- mixle-0.6.0/mixle/tests/permutation_kernels_test.py +106 -0
- mixle-0.6.0/mixle/tests/pitman_yor_test.py +119 -0
- mixle-0.6.0/mixle/tests/placement_test.py +390 -0
- mixle-0.6.0/mixle/tests/plackett_luce_partial_mle_test.py +57 -0
- mixle-0.6.0/mixle/tests/plackett_luce_partial_test.py +59 -0
- mixle-0.6.0/mixle/tests/plackett_luce_test.py +84 -0
- mixle-0.6.0/mixle/tests/posterior_test.py +94 -0
- mixle-0.6.0/mixle/tests/power_law_hawkes_test.py +63 -0
- mixle-0.6.0/mixle/tests/ppca_test.py +77 -0
- mixle-0.6.0/mixle/tests/ppl_composite_sampling_test.py +207 -0
- mixle-0.6.0/mixle/tests/ppl_constraints_test.py +232 -0
- mixle-0.6.0/mixle/tests/ppl_convergence_diagnostics_test.py +81 -0
- mixle-0.6.0/mixle/tests/ppl_core_test.py +281 -0
- mixle-0.6.0/mixle/tests/ppl_engine_test.py +52 -0
- mixle-0.6.0/mixle/tests/ppl_hetero_regression_test.py +64 -0
- mixle-0.6.0/mixle/tests/ppl_hierarchical_test.py +126 -0
- mixle-0.6.0/mixle/tests/ppl_inference_test.py +484 -0
- mixle-0.6.0/mixle/tests/ppl_lda_test.py +33 -0
- mixle-0.6.0/mixle/tests/ppl_leaf_families_test.py +234 -0
- mixle-0.6.0/mixle/tests/ppl_loo_stacking_test.py +44 -0
- mixle-0.6.0/mixle/tests/ppl_model_comparison_test.py +132 -0
- mixle-0.6.0/mixle/tests/ppl_new_distributions_test.py +111 -0
- mixle-0.6.0/mixle/tests/ppl_plate_test.py +102 -0
- mixle-0.6.0/mixle/tests/ppl_predictive_test.py +50 -0
- mixle-0.6.0/mixle/tests/ppl_provenance_test.py +39 -0
- mixle-0.6.0/mixle/tests/ppl_regression_test.py +296 -0
- mixle-0.6.0/mixle/tests/ppl_relabel_test.py +60 -0
- mixle-0.6.0/mixle/tests/ppl_semimix_test.py +48 -0
- mixle-0.6.0/mixle/tests/ppl_separation_test.py +45 -0
- mixle-0.6.0/mixle/tests/ppl_soft_constraints_test.py +132 -0
- mixle-0.6.0/mixle/tests/ppl_statespace_test.py +65 -0
- mixle-0.6.0/mixle/tests/ppl_summarize_test.py +48 -0
- mixle-0.6.0/mixle/tests/ppl_survival_test.py +65 -0
- mixle-0.6.0/mixle/tests/ppl_vector_params_test.py +178 -0
- mixle-0.6.0/mixle/tests/ppl_vmp_test.py +152 -0
- mixle-0.6.0/mixle/tests/priors_test.py +69 -0
- mixle-0.6.0/mixle/tests/projected_normal_test.py +61 -0
- mixle-0.6.0/mixle/tests/propagate_test.py +58 -0
- mixle-0.6.0/mixle/tests/provenance_test.py +140 -0
- mixle-0.6.0/mixle/tests/quantization_test.py +486 -0
- mixle-0.6.0/mixle/tests/quantized_hmm_test.py +339 -0
- mixle-0.6.0/mixle/tests/quantized_index_test.py +378 -0
- mixle-0.6.0/mixle/tests/quantized_triangular_hmm_test.py +174 -0
- mixle-0.6.0/mixle/tests/random_forest_leaf_test.py +123 -0
- mixle-0.6.0/mixle/tests/random_graph_models_test.py +85 -0
- mixle-0.6.0/mixle/tests/rank_aggregation_test.py +117 -0
- mixle-0.6.0/mixle/tests/ranking_lazy_enumerator_test.py +73 -0
- mixle-0.6.0/mixle/tests/ray_encoded_data_test.py +64 -0
- mixle-0.6.0/mixle/tests/rdpg_test.py +62 -0
- mixle-0.6.0/mixle/tests/reflective_hmc_test.py +68 -0
- mixle-0.6.0/mixle/tests/relation_sample_test.py +72 -0
- mixle-0.6.0/mixle/tests/relations_test.py +229 -0
- mixle-0.6.0/mixle/tests/renewal_process_test.py +54 -0
- mixle-0.6.0/mixle/tests/resampling_test.py +181 -0
- mixle-0.6.0/mixle/tests/responsibility_attention_test.py +231 -0
- mixle-0.6.0/mixle/tests/rician_test.py +55 -0
- mixle-0.6.0/mixle/tests/robust_covariance_test.py +154 -0
- mixle-0.6.0/mixle/tests/rough_paths_test.py +58 -0
- mixle-0.6.0/mixle/tests/sampler_accuracy_test.py +215 -0
- mixle-0.6.0/mixle/tests/sampler_batching_test.py +89 -0
- mixle-0.6.0/mixle/tests/sampler_seed_test.py +574 -0
- mixle-0.6.0/mixle/tests/sampler_vectorization_test.py +68 -0
- mixle-0.6.0/mixle/tests/sampling_api_test.py +58 -0
- mixle-0.6.0/mixle/tests/scipy_golden_test.py +80 -0
- mixle-0.6.0/mixle/tests/scoring_rules_test.py +152 -0
- mixle-0.6.0/mixle/tests/segmental_engine_test.py +49 -0
- mixle-0.6.0/mixle/tests/segmental_hmm_test.py +126 -0
- mixle-0.6.0/mixle/tests/segmental_terminal_states_test.py +69 -0
- mixle-0.6.0/mixle/tests/semi_supervised_hmm_test.py +123 -0
- mixle-0.6.0/mixle/tests/semi_supervised_terminal_states_test.py +70 -0
- mixle-0.6.0/mixle/tests/sensitivity_test.py +51 -0
- mixle-0.6.0/mixle/tests/serialization_test.py +352 -0
- mixle-0.6.0/mixle/tests/serving_test.py +88 -0
- mixle-0.6.0/mixle/tests/skellam_logseries_methods_test.py +36 -0
- mixle-0.6.0/mixle/tests/skellam_test.py +78 -0
- mixle-0.6.0/mixle/tests/skew_kurtosis_test.py +44 -0
- mixle-0.6.0/mixle/tests/skew_normal_test.py +46 -0
- mixle-0.6.0/mixle/tests/spanning_tree_test.py +159 -0
- mixle-0.6.0/mixle/tests/spark_encoded_data_test.py +142 -0
- mixle-0.6.0/mixle/tests/sparse_gaussian_process_test.py +71 -0
- mixle-0.6.0/mixle/tests/sparse_markov_engine_test.py +61 -0
- mixle-0.6.0/mixle/tests/sparse_markov_transform_test.py +117 -0
- mixle-0.6.0/mixle/tests/spatial_mixture_test.py +79 -0
- mixle-0.6.0/mixle/tests/spearman_rho_test.py +80 -0
- mixle-0.6.0/mixle/tests/spherical_kernels_test.py +94 -0
- mixle-0.6.0/mixle/tests/ss_mixture_engine_test.py +55 -0
- mixle-0.6.0/mixle/tests/stable_matching_test.py +52 -0
- mixle-0.6.0/mixle/tests/stats_bayes_beta_group_test.py +144 -0
- mixle-0.6.0/mixle/tests/stats_bayes_dirichlet_group_test.py +214 -0
- mixle-0.6.0/mixle/tests/stats_bayes_dpm_test.py +334 -0
- mixle-0.6.0/mixle/tests/stats_bayes_gamma_group_test.py +207 -0
- mixle-0.6.0/mixle/tests/stats_bayes_gaussian_test.py +97 -0
- mixle-0.6.0/mixle/tests/stats_bayes_markov_test.py +228 -0
- mixle-0.6.0/mixle/tests/stats_bayes_mixture_test.py +198 -0
- mixle-0.6.0/mixle/tests/stats_bayes_mvgaussian_group_test.py +225 -0
- mixle-0.6.0/mixle/tests/stats_bayes_setdist_test.py +135 -0
- mixle-0.6.0/mixle/tests/stats_bayes_wrappers_test.py +299 -0
- mixle-0.6.0/mixle/tests/streaming_estimation_test.py +276 -0
- mixle-0.6.0/mixle/tests/summarize_test.py +38 -0
- mixle-0.6.0/mixle/tests/survival_regression_test.py +164 -0
- mixle-0.6.0/mixle/tests/survival_test.py +51 -0
- mixle-0.6.0/mixle/tests/symbolic_export_test.py +164 -0
- mixle-0.6.0/mixle/tests/temporal_audit_test.py +93 -0
- mixle-0.6.0/mixle/tests/temporal_graph_grammar_test.py +539 -0
- mixle-0.6.0/mixle/tests/temporal_test.py +129 -0
- mixle-0.6.0/mixle/tests/thompson_acquisition_test.py +47 -0
- mixle-0.6.0/mixle/tests/thurstone_test.py +55 -0
- mixle-0.6.0/mixle/tests/torch_engine_ext_test.py +372 -0
- mixle-0.6.0/mixle/tests/torch_engine_test.py +241 -0
- mixle-0.6.0/mixle/tests/torchrun_encoded_data_test.py +239 -0
- mixle-0.6.0/mixle/tests/tree_hmm_engine_test.py +66 -0
- mixle-0.6.0/mixle/tests/tree_hmm_len_test.py +121 -0
- mixle-0.6.0/mixle/tests/tree_hmm_sampler_guard_test.py +72 -0
- mixle-0.6.0/mixle/tests/tree_hmm_zero_prob_test.py +62 -0
- mixle-0.6.0/mixle/tests/truncated_distribution_test.py +78 -0
- mixle-0.6.0/mixle/tests/truncation_bound_test.py +90 -0
- mixle-0.6.0/mixle/tests/tsp_test.py +44 -0
- mixle-0.6.0/mixle/tests/tweedie_test.py +87 -0
- mixle-0.6.0/mixle/tests/utils_test.py +66 -0
- mixle-0.6.0/mixle/tests/variational_embedding_attention_test.py +143 -0
- mixle-0.6.0/mixle/tests/variational_multihop_attention_test.py +101 -0
- mixle-0.6.0/mixle/tests/vmf_test.py +123 -0
- mixle-0.6.0/mixle/tests/von_mises_test.py +79 -0
- mixle-0.6.0/mixle/tests/watson_test.py +49 -0
- mixle-0.6.0/mixle/tests/wave_bayes1_test.py +294 -0
- mixle-0.6.0/mixle/tests/wave_bayes2_test.py +299 -0
- mixle-0.6.0/mixle/tests/wave_bayes3_test.py +276 -0
- mixle-0.6.0/mixle/tests/wave_bayes4_test.py +186 -0
- mixle-0.6.0/mixle/tests/wave_core_test.py +247 -0
- mixle-0.6.0/mixle/tests/wave_hmmlegacy_test.py +148 -0
- mixle-0.6.0/mixle/tests/wave_latent_test.py +298 -0
- mixle-0.6.0/mixle/tests/wave_lookback_test.py +166 -0
- mixle-0.6.0/mixle/tests/wave_markov_test.py +467 -0
- mixle-0.6.0/mixle/tests/wave_multinomial_enum_test.py +221 -0
- mixle-0.6.0/mixle/tests/wave_mvn_test.py +270 -0
- mixle-0.6.0/mixle/tests/wave_select_test.py +297 -0
- mixle-0.6.0/mixle/tests/wave_setdist_test.py +313 -0
- mixle-0.6.0/mixle/tests/wishart_test.py +72 -0
- mixle-0.6.0/mixle/tests/wrapped_cauchy_test.py +48 -0
- mixle-0.6.0/mixle/tests/wrapped_normal_test.py +53 -0
- mixle-0.6.0/mixle/tests/zero_count_estimate_test.py +123 -0
- mixle-0.6.0/mixle/tests/zero_inflated_test.py +112 -0
- mixle-0.6.0/mixle/utils/__init__.py +52 -0
- mixle-0.6.0/mixle/utils/aliasing.py +95 -0
- mixle-0.6.0/mixle/utils/automatic/__init__.py +30 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/__init__.py +83 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/beta.py +68 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/exgaussian.py +106 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/generalized_extreme_value.py +77 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/generalized_gaussian.py +90 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/generalized_pareto.py +108 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/gumbel.py +82 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/inverse_gaussian.py +80 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/laplace.py +43 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/logistic.py +62 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/negative_binomial.py +71 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/pareto.py +80 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/skew_normal.py +90 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/tweedie.py +82 -0
- mixle-0.6.0/mixle/utils/automatic/detectors/weibull.py +70 -0
- mixle-0.6.0/mixle/utils/automatic/factories.py +449 -0
- mixle-0.6.0/mixle/utils/automatic/profiling.py +2000 -0
- mixle-0.6.0/mixle/utils/builder.py +53 -0
- mixle-0.6.0/mixle/utils/evaluation.py +186 -0
- mixle-0.6.0/mixle/utils/hvis/__init__.py +295 -0
- mixle-0.6.0/mixle/utils/hvis/affinity.py +725 -0
- mixle-0.6.0/mixle/utils/hvis/embed.py +380 -0
- mixle-0.6.0/mixle/utils/hvis/neighbors.py +341 -0
- mixle-0.6.0/mixle/utils/hvis/tsne.py +797 -0
- mixle-0.6.0/mixle/utils/metrics.py +170 -0
- mixle-0.6.0/mixle/utils/optional_deps.py +73 -0
- mixle-0.6.0/mixle/utils/optsutil.py +191 -0
- mixle-0.6.0/mixle/utils/parallel/__init__.py +29 -0
- mixle-0.6.0/mixle/utils/parallel/balance.py +192 -0
- mixle-0.6.0/mixle/utils/parallel/lightning_data.py +138 -0
- mixle-0.6.0/mixle/utils/parallel/model_decomposition.py +371 -0
- mixle-0.6.0/mixle/utils/parallel/model_parallel.py +410 -0
- mixle-0.6.0/mixle/utils/parallel/mpi.py +205 -0
- mixle-0.6.0/mixle/utils/parallel/multiprocessing.py +284 -0
- mixle-0.6.0/mixle/utils/parallel/planner.py +1860 -0
- mixle-0.6.0/mixle/utils/parallel/ray_data.py +159 -0
- mixle-0.6.0/mixle/utils/parallel/torchrun.py +250 -0
- mixle-0.6.0/mixle/utils/pvalues.py +116 -0
- mixle-0.6.0/mixle/utils/serialization.py +402 -0
- mixle-0.6.0/mixle/utils/special.py +349 -0
- mixle-0.6.0/mixle/utils/vector.py +606 -0
- mixle-0.6.0/mixle.egg-info/PKG-INFO +435 -0
- mixle-0.6.0/mixle.egg-info/SOURCES.txt +792 -0
- mixle-0.6.0/mixle.egg-info/dependency_links.txt +1 -0
- mixle-0.6.0/mixle.egg-info/requires.txt +84 -0
- mixle-0.6.0/mixle.egg-info/top_level.txt +1 -0
- mixle-0.6.0/pyproject.toml +168 -0
- mixle-0.6.0/setup.cfg +4 -0
mixle-0.6.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023, Lawrence Livermore National Security, LLC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
mixle-0.6.0/MANIFEST.in
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
include README.md
|
mixle-0.6.0/NOTICE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
This work was produced under the auspices of the U.S. Department of
|
|
2
|
+
Energy by Lawrence Livermore National Laboratory under Contract
|
|
3
|
+
DE-AC52-07NA27344.
|
|
4
|
+
|
|
5
|
+
This work was prepared as an account of work sponsored by an agency of
|
|
6
|
+
the United States Government. Neither the United States Government nor
|
|
7
|
+
Lawrence Livermore National Security, LLC, nor any of their employees
|
|
8
|
+
makes any warranty, expressed or implied, or assumes any legal liability
|
|
9
|
+
or responsibility for the accuracy, completeness, or usefulness of any
|
|
10
|
+
information, apparatus, product, or process disclosed, or represents that
|
|
11
|
+
its use would not infringe privately owned rights.
|
|
12
|
+
|
|
13
|
+
Reference herein to any specific commercial product, process, or service
|
|
14
|
+
by trade name, trademark, manufacturer, or otherwise does not necessarily
|
|
15
|
+
constitute or imply its endorsement, recommendation, or favoring by the
|
|
16
|
+
United States Government or Lawrence Livermore National Security, LLC.
|
|
17
|
+
|
|
18
|
+
The views and opinions of authors expressed herein do not necessarily
|
|
19
|
+
state or reflect those of the United States Government or Lawrence
|
|
20
|
+
Livermore National Security, LLC, and shall not be used for advertising
|
|
21
|
+
or product endorsement purposes.
|
mixle-0.6.0/PKG-INFO
ADDED
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mixle
|
|
3
|
+
Version: 0.6.0
|
|
4
|
+
Summary: A package for estimating heterogeneous probability density functions.
|
|
5
|
+
Author-email: Grant Boquet <grant.boquet@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/gmboquet/mixle
|
|
8
|
+
Project-URL: Repository, https://github.com/gmboquet/mixle
|
|
9
|
+
Keywords: machine learning,density estimation,statistics,heterogeneous data
|
|
10
|
+
Classifier: Programming Language :: Python
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Development Status :: 4 - Beta
|
|
16
|
+
Classifier: Intended Audience :: Developers
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
License-File: NOTICE
|
|
21
|
+
Requires-Dist: numpy>=1.26
|
|
22
|
+
Requires-Dist: scipy>=1.11
|
|
23
|
+
Requires-Dist: mpmath>=1.3
|
|
24
|
+
Provides-Extra: numba
|
|
25
|
+
Requires-Dist: numba>=0.59; extra == "numba"
|
|
26
|
+
Requires-Dist: tbb>=2021.6; extra == "numba"
|
|
27
|
+
Provides-Extra: pandas
|
|
28
|
+
Requires-Dist: pandas>=2.0; extra == "pandas"
|
|
29
|
+
Provides-Extra: arrow
|
|
30
|
+
Requires-Dist: pyarrow>=14; extra == "arrow"
|
|
31
|
+
Provides-Extra: sql
|
|
32
|
+
Requires-Dist: sqlalchemy>=2.0; extra == "sql"
|
|
33
|
+
Provides-Extra: mongo
|
|
34
|
+
Requires-Dist: pymongo>=4.3; extra == "mongo"
|
|
35
|
+
Provides-Extra: hadoop
|
|
36
|
+
Requires-Dist: pyarrow>=14; extra == "hadoop"
|
|
37
|
+
Requires-Dist: fsspec>=2023.1.0; extra == "hadoop"
|
|
38
|
+
Provides-Extra: data
|
|
39
|
+
Requires-Dist: pandas>=2.0; extra == "data"
|
|
40
|
+
Requires-Dist: pyarrow>=14; extra == "data"
|
|
41
|
+
Requires-Dist: sqlalchemy>=2.0; extra == "data"
|
|
42
|
+
Requires-Dist: pymongo>=4.3; extra == "data"
|
|
43
|
+
Requires-Dist: fsspec>=2023.1.0; extra == "data"
|
|
44
|
+
Provides-Extra: grammar
|
|
45
|
+
Requires-Dist: networkx>=3.0; extra == "grammar"
|
|
46
|
+
Provides-Extra: gmpy2
|
|
47
|
+
Requires-Dist: gmpy2>=2.1; extra == "gmpy2"
|
|
48
|
+
Provides-Extra: spark
|
|
49
|
+
Requires-Dist: pyspark>=3.4; extra == "spark"
|
|
50
|
+
Provides-Extra: dask
|
|
51
|
+
Requires-Dist: dask>=2023.5.0; extra == "dask"
|
|
52
|
+
Requires-Dist: distributed>=2023.5.0; extra == "dask"
|
|
53
|
+
Provides-Extra: torch
|
|
54
|
+
Requires-Dist: torch>=2.0; extra == "torch"
|
|
55
|
+
Provides-Extra: jax
|
|
56
|
+
Requires-Dist: jax>=0.4; extra == "jax"
|
|
57
|
+
Requires-Dist: numpyro>=0.13; extra == "jax"
|
|
58
|
+
Provides-Extra: mpi
|
|
59
|
+
Requires-Dist: mpi4py>=3.1; extra == "mpi"
|
|
60
|
+
Provides-Extra: umap
|
|
61
|
+
Requires-Dist: umap-learn>=0.5.4; extra == "umap"
|
|
62
|
+
Provides-Extra: sympy
|
|
63
|
+
Requires-Dist: sympy>=1.12; extra == "sympy"
|
|
64
|
+
Provides-Extra: sage
|
|
65
|
+
Requires-Dist: passagemath-symbolics>=10.4; extra == "sage"
|
|
66
|
+
Provides-Extra: test
|
|
67
|
+
Requires-Dist: pytest>=8; extra == "test"
|
|
68
|
+
Requires-Dist: pytest-xdist>=3.0; extra == "test"
|
|
69
|
+
Provides-Extra: lint
|
|
70
|
+
Requires-Dist: ruff==0.15.17; extra == "lint"
|
|
71
|
+
Requires-Dist: mypy>=1.0; extra == "lint"
|
|
72
|
+
Provides-Extra: all
|
|
73
|
+
Requires-Dist: numba>=0.59; extra == "all"
|
|
74
|
+
Requires-Dist: tbb>=2021.6; extra == "all"
|
|
75
|
+
Requires-Dist: pyspark>=3.4; extra == "all"
|
|
76
|
+
Requires-Dist: dask>=2023.5.0; extra == "all"
|
|
77
|
+
Requires-Dist: distributed>=2023.5.0; extra == "all"
|
|
78
|
+
Requires-Dist: torch>=2.0; extra == "all"
|
|
79
|
+
Requires-Dist: mpi4py>=3.1; extra == "all"
|
|
80
|
+
Requires-Dist: umap-learn>=0.5.4; extra == "all"
|
|
81
|
+
Requires-Dist: pandas>=2.0; extra == "all"
|
|
82
|
+
Requires-Dist: pyarrow>=14; extra == "all"
|
|
83
|
+
Requires-Dist: sqlalchemy>=2.0; extra == "all"
|
|
84
|
+
Requires-Dist: networkx>=3.0; extra == "all"
|
|
85
|
+
Dynamic: license-file
|
|
86
|
+
|
|
87
|
+
<p align="left">
|
|
88
|
+
<img src="https://raw.githubusercontent.com/gmboquet/mixle/main/mixle_logo.png" alt="mixle" width="120"/>
|
|
89
|
+
</p>
|
|
90
|
+
|
|
91
|
+
# mixle
|
|
92
|
+
|
|
93
|
+

|
|
94
|
+

|
|
95
|
+

|
|
96
|
+
|
|
97
|
+
**Automatic inference for composable models of heterogeneous data.** A single observation can be a
|
|
98
|
+
tuple of a category, a real, a count sequence, a vector, a set, or a tree — and mixle fits a
|
|
99
|
+
probabilistic model to a dataset of them, *choosing the inference from the model itself* (conjugate /
|
|
100
|
+
EM / MAP / variational / MCMC), locally on vectorized NumPy/Numba or distributed across Spark, Dask,
|
|
101
|
+
Ray, MPI, or Torch (GPU).
|
|
102
|
+
|
|
103
|
+
The unit of composition is the distribution: leaves (Gaussian, categorical, Poisson, …) combine into
|
|
104
|
+
tuples, tuples become mixture components, mixtures become HMM emissions, to any depth. A model and the
|
|
105
|
+
estimator that fits it have the same shape — so **what you can express, you can fit**.
|
|
106
|
+
|
|
107
|
+
## Contents
|
|
108
|
+
|
|
109
|
+
[Installation](#installation) · [Quickstart](#quickstart) · [Core concepts](#core-concepts) ·
|
|
110
|
+
[Distribution catalog](#distribution-catalog) · [Probabilistic programming](#probabilistic-programming-mixleppl) ·
|
|
111
|
+
[Frequentist & Bayesian](#frequentist--bayesian) · [Engines & orchestration](#engines--orchestration) ·
|
|
112
|
+
[Enumeration & ranking](#enumeration--ranking) · [Beyond fitting](#beyond-fitting) ·
|
|
113
|
+
[Examples](#examples) · [Tests](#tests) · [Maintainers & contributors](#maintainers--contributors) · [License](#license)
|
|
114
|
+
|
|
115
|
+
## Installation
|
|
116
|
+
|
|
117
|
+
Python 3.10+ (developed on 3.12). On PyPI as `mixle`; the import name is `mixle`.
|
|
118
|
+
|
|
119
|
+
```sh
|
|
120
|
+
pip install mixle # base (numpy, scipy, mpmath): every distribution + local EM
|
|
121
|
+
pip install "mixle[all]" # acceleration, scale-out, and connectors
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The base install fits every distribution locally. Acceleration and scale-out are opt-in extras:
|
|
125
|
+
|
|
126
|
+
| Extra | Adds |
|
|
127
|
+
| --- | --- |
|
|
128
|
+
| `numba` | JIT-compiled hot paths (falls back to pure NumPy when absent) |
|
|
129
|
+
| `torch` | GPU / autograd engine |
|
|
130
|
+
| `spark` · `dask` · `mpi` | distributed estimation backends |
|
|
131
|
+
| `pandas` · `arrow` · `sql` · `mongo` · `hadoop` · `data` | data-source connectors |
|
|
132
|
+
| `gmpy2` | GMP-FFT big-integer multiply for count-DP ranking |
|
|
133
|
+
| `umap` | model-based UMAP embeddings |
|
|
134
|
+
| `sympy` · `sage` | symbolic / closed-form export |
|
|
135
|
+
| `grammar` | graph-grammar models (networkx) |
|
|
136
|
+
|
|
137
|
+
Development: `git clone … && pip install -e ".[all]"`.
|
|
138
|
+
|
|
139
|
+
## Quickstart
|
|
140
|
+
|
|
141
|
+
Each record here is a `(category, real, variable-length count sequence)`. Fit a two-component mixture
|
|
142
|
+
straight from a list of records:
|
|
143
|
+
|
|
144
|
+
```python
|
|
145
|
+
from mixle.stats import *
|
|
146
|
+
from mixle.inference import optimize
|
|
147
|
+
|
|
148
|
+
data = [
|
|
149
|
+
('a', -0.4, [5, 7]), ('b', 4.9, [11, 9]),
|
|
150
|
+
('a', 0.2, [6, 5, 4]), ('b', 5.3, [10, 12, 11]),
|
|
151
|
+
('a', -1.1, [4, 6]), ('b', 4.5, [9, 10]),
|
|
152
|
+
('a', 0.7, [5, 5]), ('b', 5.1, [12, 8]),
|
|
153
|
+
('a', -0.2, [7, 6, 5]), ('b', 4.7, [9, 11]),
|
|
154
|
+
]
|
|
155
|
+
|
|
156
|
+
# The estimator mirrors the distribution's structure exactly.
|
|
157
|
+
est = MixtureEstimator([CompositeEstimator((
|
|
158
|
+
CategoricalEstimator(),
|
|
159
|
+
GaussianEstimator(),
|
|
160
|
+
SequenceEstimator(PoissonEstimator(), len_estimator=CategoricalEstimator()),
|
|
161
|
+
))] * 2)
|
|
162
|
+
|
|
163
|
+
model = optimize(data, est, max_its=100)
|
|
164
|
+
model.sampler(seed=0).sample(3) # draw new records from the fitted model
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
You don't have to spell the estimator out. `optimize` (and `fit`) also accept a **prototype
|
|
168
|
+
distribution** — its matching estimator is taken automatically — or just the data, from which an
|
|
169
|
+
estimator is inferred:
|
|
170
|
+
|
|
171
|
+
```python
|
|
172
|
+
proto = MixtureDistribution([GaussianDistribution(-1, 1), GaussianDistribution(1, 1)], [0.5, 0.5])
|
|
173
|
+
optimize(reals, proto) # build the model's shape once, fit it directly
|
|
174
|
+
optimize(reals) # or let mixle infer the estimator from the data
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
The same model in the shorter [`mixle.ppl`](#probabilistic-programming-mixleppl) dialect is a few lines.
|
|
178
|
+
|
|
179
|
+
## Core concepts
|
|
180
|
+
|
|
181
|
+
Each family is five cooperating pieces:
|
|
182
|
+
|
|
183
|
+
| Piece | Role |
|
|
184
|
+
| ----------------- | ------------------------------------------------------------------------- |
|
|
185
|
+
| `...Distribution` | parameters + `log_density(x)` and vectorized `seq_log_density(encoded)` |
|
|
186
|
+
| `...Sampler` | draw observations — `dist.sampler(seed).sample(size)` |
|
|
187
|
+
| `...Estimator` | declares the model to fit; closed-form M-step in `estimate()` |
|
|
188
|
+
| `...Accumulator` | sufficient statistics for the E-step, mergeable across data partitions |
|
|
189
|
+
| `...DataEncoder` | packs raw Python records into arrays for the fast path |
|
|
190
|
+
|
|
191
|
+
`optimize(data, est)` (in `mixle.inference`) runs EM to convergence — vectorized locally, or
|
|
192
|
+
distributed via `backend=`. It also accepts a distribution **prototype** (`optimize(data, proto)`) or
|
|
193
|
+
nothing but the data (`optimize(data)`, which infers the estimator). Related entry points:
|
|
194
|
+
|
|
195
|
+
- `best_of` — multi-restart EM
|
|
196
|
+
- `StreamingEstimator` — online EM
|
|
197
|
+
- `fit_mle` / `fit_map` — autograd fitting with typed priors
|
|
198
|
+
- `mixle.utils.automatic.get_estimator(data)` — infer an estimator from raw data
|
|
199
|
+
|
|
200
|
+
Families live in `mixle.stats`; operations on them are grouped by concern:
|
|
201
|
+
|
|
202
|
+
- `mixle.inference` — fit: MLE / EM / MAP / conjugate / NUTS / VI / Fisher
|
|
203
|
+
- `mixle.enumeration` — rank / top-k / unranking
|
|
204
|
+
- `mixle.ops` — quantize / condition / marginalize / project
|
|
205
|
+
- `mixle.describe(x)` — report what any object supports
|
|
206
|
+
|
|
207
|
+
Drawing is a method, not a concern: `dist.sampler(seed).sample(n)`.
|
|
208
|
+
|
|
209
|
+
## Distribution catalog
|
|
210
|
+
|
|
211
|
+
About 90 families in `mixle.stats`. The distinguishing feature: the **combinators model a whole
|
|
212
|
+
heterogeneous record as one distribution**. One observation under each:
|
|
213
|
+
|
|
214
|
+
| Model | One observation |
|
|
215
|
+
| --- | --- |
|
|
216
|
+
| `GaussianDistribution` / `PoissonDistribution` / `CategoricalDistribution` | `-0.31` / `7` / `'b'` |
|
|
217
|
+
| `MultivariateGaussianDistribution` | `[1.2, -0.4, 0.8]` |
|
|
218
|
+
| `CompositeDistribution((Cat, Gaussian, Poisson))` | `('a', -0.31, 7)` |
|
|
219
|
+
| `RecordDistribution({...})` | `{'country': 'US', 'age': 41, 'spend': 12.5}` |
|
|
220
|
+
| `SequenceDistribution(Poisson)` | `[5, 4, 6]` (variable length) |
|
|
221
|
+
| `OptionalDistribution(Gaussian)` | `-0.31` or `None` |
|
|
222
|
+
| `MixtureDistribution([...])` / `HiddenMarkovModelDistribution` | a component's shape, with the cluster / state latent |
|
|
223
|
+
|
|
224
|
+
- **Univariate:** Gaussian, Student-t/Cauchy, Logistic, LogGaussian, Laplace, Uniform, Exponential,
|
|
225
|
+
Gamma, Inverse Gamma/Gaussian, Half-Normal, Gumbel, Beta, Weibull, Rayleigh, Pareto, Poisson,
|
|
226
|
+
Bernoulli, Geometric, Binomial, Negative Binomial, Log-Series, von Mises, Dirichlet, categorical;
|
|
227
|
+
multivariate/diagonal Gaussian, von Mises–Fisher, multivariate Student-t.
|
|
228
|
+
- **Combinators:** Composite (tuples), Record (named fields), Sequence, Optional (missing data),
|
|
229
|
+
Transform, Conditional, Weighted.
|
|
230
|
+
- **Latent structure:** mixtures (plain, heterogeneous, hierarchical, joint, semi-supervised), LDA,
|
|
231
|
+
PLSI, probabilistic PCA, HMMs (standard, segmental, lookback, tree, quantized), PCFGs, Markov chains,
|
|
232
|
+
hidden associations, IBP, Pitman-Yor processes, Bernoulli sets.
|
|
233
|
+
- **Permutations & graphs:** Mallows / Plackett-Luce, matchings, spanning trees, random graphs
|
|
234
|
+
(Erdős–Rényi, stochastic block, random dot-product), Spearman ranking, and graph grammars over
|
|
235
|
+
networks (vertex-replacement / NLC and hyperedge-replacement) — `log_density` is the marginal
|
|
236
|
+
likelihood, computed by parsing the graph back to the start symbol.
|
|
237
|
+
- **Bayesian:** conjugate priors (NormalGamma, NormalWishart, MvnGamma, Dirichlet, SymmetricDirichlet)
|
|
238
|
+
and variational Dirichlet-process / hierarchical-DP mixtures.
|
|
239
|
+
|
|
240
|
+
Estimator knobs (every family): `pseudo_count` (regularization) · `prior=` (conjugate; `None` is MLE) ·
|
|
241
|
+
`keys` (tie statistics across parts). One stem per family — `<Stem>Distribution`, `<Stem>Estimator`,
|
|
242
|
+
`<Stem>Sampler`, and so on.
|
|
243
|
+
|
|
244
|
+
## Probabilistic programming (`mixle.ppl`)
|
|
245
|
+
|
|
246
|
+
A concise dialect over the same distributions. **One rule:** any parameter slot is a value, the token
|
|
247
|
+
`free` (estimate it), or another distribution (a prior).
|
|
248
|
+
|
|
249
|
+
```python
|
|
250
|
+
from mixle.ppl import Normal, Mix, Markov, Field, free
|
|
251
|
+
|
|
252
|
+
Normal(0.0, 1.0) # fixed parameters
|
|
253
|
+
Normal(free, free) # estimate the mean and standard deviation
|
|
254
|
+
Normal(Normal(0, 10), 1.0) # a prior on the mean (hierarchical)
|
|
255
|
+
|
|
256
|
+
data = [-2.1, 1.9, -1.8, 2.3, -2.0, 2.1] # reals from two clusters
|
|
257
|
+
m = Mix([Normal(free, free), Normal(free, free)]).fit(data)
|
|
258
|
+
m.posterior(data) # per-point responsibilities
|
|
259
|
+
|
|
260
|
+
seqs = [[0.1, 5.1, 4.9], [4.8, 5.0], [0.0, 0.2]] # variable-length real sequences
|
|
261
|
+
Markov(Normal(free, free), states=2).fit(seqs) # 2-state Gaussian HMM
|
|
262
|
+
|
|
263
|
+
# y[i] ~ Normal(b0 + b1*x[i] + b2*z[i], sd) — a linear model
|
|
264
|
+
Normal(free * Field("x") + free * Field("z") + free, free).fit(y, given={"x": x, "z": z})
|
|
265
|
+
|
|
266
|
+
a, b = Normal(0, 10, name="a"), Normal(0, 10, name="b")
|
|
267
|
+
Mix([Normal(a, 1), Normal(b, 1)]).fit(data, constraints=a < b) # ordered means break label-switching
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
- **`how=`** selects the route: `auto` takes an exact path when one exists, else
|
|
271
|
+
`conjugate | em | map | vi | vmp | mcmc | hmc | nuts | ensemble`.
|
|
272
|
+
- **Constraints** among named variables are plain comparisons (combine with `& | ~`) and shape both
|
|
273
|
+
inference and sampling.
|
|
274
|
+
- **Closed form:** for conjugate / exponential-family / mixture models, `.fit(...)` returns the exact
|
|
275
|
+
posterior.
|
|
276
|
+
- **Constructors:** `Mix · Seq · Markov · LDA · MVN · DiagGaussian · LocalLevel · AR1 · Graph`;
|
|
277
|
+
`compare([m1, m2], data)` ranks fitted models.
|
|
278
|
+
|
|
279
|
+
A slot is not limited to a single value/`free`/prior — it can be an **expression over latents**, and
|
|
280
|
+
latents can be coupled, indexed, or grouped. All of the below fit through the same `how=` routes:
|
|
281
|
+
|
|
282
|
+
```python
|
|
283
|
+
from mixle.ppl import Normal, Poisson, Field, Group, free, potential
|
|
284
|
+
|
|
285
|
+
a, b = Normal(0, 10, name="a"), Normal(0, 10, name="b")
|
|
286
|
+
Normal(a + b, 1.0).fit(data) # deterministic expressions over latents
|
|
287
|
+
Normal(0.0, a.exp()).fit(data) # …and transforms of them
|
|
288
|
+
Normal(a, 1.0).fit(data, potentials=potential(lambda av, bv: -0.5 * (av - bv) ** 2, a, b)) # custom log-factors
|
|
289
|
+
|
|
290
|
+
Normal(Normal(0, 5).each(), free).fit(groups) # random effects: one list per group
|
|
291
|
+
Normal(Normal(0, 5).each(by="school"), free).fit(y, given={"school": labels}) # …or a flat array + index
|
|
292
|
+
Poisson(free * Field("x") + Group("g")).fit(counts, given={"x": x, "g": g}) # non-Normal GLMM (PQL)
|
|
293
|
+
|
|
294
|
+
theta = free(8) # a latent vector, indexed by data
|
|
295
|
+
Normal(theta[Field("g")], free).fit(y, given={"g": labels}) # y[i] ~ Normal(theta[g[i]], sd)
|
|
296
|
+
|
|
297
|
+
Categorical(free).fit(labels) # the category set is inferred from the data
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
- **Custom factors:** `potential(fn, *vars)` adds an arbitrary `fn(*values)` log-term to the joint
|
|
301
|
+
(the equivalent of Stan's `target +=`), and may introduce auxiliary latents.
|
|
302
|
+
- **Hierarchies & GLMMs:** `.each()` / `.each(by=...)` are random effects; `Group(...)` is the same in a
|
|
303
|
+
regression predictor, for a Normal, Poisson, or Bernoulli response.
|
|
304
|
+
- **Diagnostics:** a multi-chain fit (`how="nuts", chains=4`) folds per-parameter R̂ and ESS straight
|
|
305
|
+
into `m.result.summary()`; `waic` / `loo` / `compare` rank fitted models.
|
|
306
|
+
|
|
307
|
+
The dialect is thin — the `mixle.stats` classes underneath are untouched.
|
|
308
|
+
|
|
309
|
+
## Frequentist & Bayesian
|
|
310
|
+
|
|
311
|
+
The prior is the only switch — no prior is MLE; a conjugate `prior=` makes the same machinery Bayesian:
|
|
312
|
+
|
|
313
|
+
```python
|
|
314
|
+
from mixle.inference.priors import NormalGammaPrior
|
|
315
|
+
|
|
316
|
+
GaussianEstimator() # MLE
|
|
317
|
+
GaussianEstimator(prior=NormalGammaPrior()) # closed-form conjugate posterior — same optimize() call
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
- `optimize` / `fit` pick the objective from the model — likelihood, MAP, or variational ELBO.
|
|
321
|
+
- `BayesianStreamingEstimator` carries a posterior across batches; `mixle.stats.bayes` adds
|
|
322
|
+
(hierarchical) Dirichlet-process mixtures.
|
|
323
|
+
- Gradient MAP with typed priors: `mixle.inference.gradient_fit.fit_map`
|
|
324
|
+
(`NormalGammaPrior` / `DirichletPrior` / `MixturePrior`).
|
|
325
|
+
- **Honest densities:** `supports(x, ExactDensity)` / `describe(x)` flag when a model's `log_density`
|
|
326
|
+
is a variational bound (e.g. LDA's per-document ELBO) rather than the exact `log p(x)`.
|
|
327
|
+
|
|
328
|
+
## Engines & orchestration
|
|
329
|
+
|
|
330
|
+
Distributions own the likelihood and sufficient-statistic math; **compute engines** supply the array
|
|
331
|
+
ops, device, and precision — so **scale-out is a backend argument, not a rewrite**:
|
|
332
|
+
|
|
333
|
+
```python
|
|
334
|
+
from mixle.engines import TorchEngine
|
|
335
|
+
|
|
336
|
+
optimize(data, est, engine=TorchEngine(device="cuda", dtype="float32")) # GPU
|
|
337
|
+
optimize(data, est, precision="auto") # stats still accumulate in float64
|
|
338
|
+
optimize(rdd, est, backend="spark") # also: mp · dask · mpi · ray · lightning
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
- The same EM contract runs unchanged on NumPy, Numba, Torch, or a symbolic backend.
|
|
342
|
+
- New frameworks register a factory (`register_encoded_data_backend`) — no dispatch to edit.
|
|
343
|
+
- The planner (`mixle.utils.parallel.planner`) turns a hardware budget into a memory-aware placement
|
|
344
|
+
(chunking, device assignment, Torch sharding) you compute once and reuse.
|
|
345
|
+
- The `SymbolicEngine` runs a density through SymPy, so a model can emit its closed-form log-density
|
|
346
|
+
as LaTeX / SymPy / Sage.
|
|
347
|
+
|
|
348
|
+
## Enumeration & ranking
|
|
349
|
+
|
|
350
|
+
Discrete and structured models **enumerate their support in descending-probability order** and answer
|
|
351
|
+
exact **rank / cumulative-probability** queries — even when the support is enormous or unbounded:
|
|
352
|
+
|
|
353
|
+
```python
|
|
354
|
+
e = dist.enumerator()
|
|
355
|
+
e.top_k(5) # the 5 most probable (value, log_prob)
|
|
356
|
+
e.top_p(0.95) # smallest set covering 95% of the mass (the nucleus)
|
|
357
|
+
e.rank(value) # how many values are strictly more probable than `value`
|
|
358
|
+
e.seek(10_000) # the ~10,000th most probable value, by structural count-DP
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
- **Decomposable families** (Composite / Record / Sequence / MarkovChain): rank ↔ value is an exact
|
|
362
|
+
count-DP at any depth (`count_dp_rank`, `count_dp_seek`); budget-bounded quantized indexes
|
|
363
|
+
(`count_budget_index`) seek the most-probable region of an infinite support (the `gmpy2` extra uses
|
|
364
|
+
GMP's FFT multiply for the big-integer convolution).
|
|
365
|
+
- **Non-decomposable families** (mixtures, HMMs): exact marginal rank is provably hard, so they return
|
|
366
|
+
the Viterbi bound or a certified Monte-Carlo estimate (`density_rank`, with a standard error) — never
|
|
367
|
+
a silent approximation.
|
|
368
|
+
- **Continuous families** realize the same operations through `cdf(x)` / `quantile(q)`.
|
|
369
|
+
|
|
370
|
+
## Beyond fitting
|
|
371
|
+
|
|
372
|
+
- **Inference** (`mixle.inference`): `mcmc` (MH / HMC / NUTS / VMP), `em` (hard, annealed, ECM,
|
|
373
|
+
Monte-Carlo, variational, online, restart), `fisher` (geometry views), and the `Posterior` algebra —
|
|
374
|
+
`posterior(model, data, over="latent"|"params"|"predictive")` returns one object you `sample` /
|
|
375
|
+
`mean` / `interval`. An engine-agnostic facade runs NUTS/ADVI on any differentiable target with
|
|
376
|
+
parallel chains (R̂ + pooled ESS).
|
|
377
|
+
- **Design & analysis of experiments** (`mixle.doe`): space-filling designs, GP Bayesian optimization,
|
|
378
|
+
and the analysis half — Sobol/Morris sensitivity, uncertainty propagation, Kennedy-O'Hagan calibration.
|
|
379
|
+
- **Embeddings** (`mixle.utils.hvis`): model-based t-SNE / UMAP over per-record posteriors.
|
|
380
|
+
- **Supervised & non-iid models** (`mixle.models`): GP regression, neural regressors, random forests
|
|
381
|
+
(a conditional `p(y | x)` leaf), random graphs, grammars, knowledge graphs.
|
|
382
|
+
- **MLOps** (`mixle.inference.production`): reproducible model artifacts (`fit_with_provenance` → a
|
|
383
|
+
`Header` with config, data hash, model-hash lineage, convergence, timing, resources, env), drift
|
|
384
|
+
detection + a `Monitor` (retrain-and-swap), and a versioned `Registry` + `Service` (scoring +
|
|
385
|
+
activity logging). A container / Kubernetes serving layer lives in the separate
|
|
386
|
+
[mixle-deploy](https://github.com/gmboquet/mixle-deploy) package.
|
|
387
|
+
|
|
388
|
+
## Examples
|
|
389
|
+
|
|
390
|
+
Self-contained scripts in [examples/](https://github.com/gmboquet/mixle/tree/main/examples)
|
|
391
|
+
— each samples from a known model, refits, and recovers it (no downloads):
|
|
392
|
+
|
|
393
|
+
```sh
|
|
394
|
+
cd examples
|
|
395
|
+
python gallery_univariate_example.py # tour the scalar families (also gallery_{multivariate,combinators,…})
|
|
396
|
+
python gallery_structured_example.py # mixtures / HMMs / LDA / latent-variable models
|
|
397
|
+
python ppl_example.py # the equation-style mixle.ppl surface
|
|
398
|
+
python production_example.py # provenance, registry, serving, drift, checkpoints
|
|
399
|
+
python scaling_example.py # the same fit distributed by backend= (local / mp / mpi / spark)
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
**Distributed backends** (see `scaling_example.py`): `local` and `mp` run out of the box; `mpi` and Spark
|
|
403
|
+
need a launcher. Spark also needs a JVM (Java 17/21) with workers on the driver's Python:
|
|
404
|
+
|
|
405
|
+
```sh
|
|
406
|
+
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
|
|
407
|
+
export PYSPARK_PYTHON=/path/to/venv/bin/python PYSPARK_DRIVER_PYTHON=$PYSPARK_PYTHON
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
## Tests
|
|
411
|
+
|
|
412
|
+
```sh
|
|
413
|
+
python -m pytest # fast gate (parallel), ~25 s
|
|
414
|
+
python -m pytest -m "not optional and not benchmark" # full suite incl. slow tests
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
`base_dist_test.py` exercises each family end to end: sampler repeatability, `str`/`eval` round-trips,
|
|
418
|
+
vectorized-vs-scalar density agreement, EM convergence. See
|
|
419
|
+
[`mixle/tests/README.md`](https://github.com/gmboquet/mixle/blob/main/mixle/tests/README.md).
|
|
420
|
+
|
|
421
|
+
## Maintainers & contributors
|
|
422
|
+
|
|
423
|
+
Maintained by **Grant Boquet** ([@gmboquet](https://github.com/gmboquet) ·
|
|
424
|
+
grant.boquet@gmail.com).
|
|
425
|
+
|
|
426
|
+
mixle began life as **pysparkplug**, developed at Lawrence Livermore National Laboratory; thanks to the
|
|
427
|
+
LLNL contributors who built the original library and to everyone in the
|
|
428
|
+
[git history](https://github.com/gmboquet/mixle/graphs/contributors). Contributions, issues, and
|
|
429
|
+
discussion are welcome — open a PR or an issue.
|
|
430
|
+
|
|
431
|
+
## License
|
|
432
|
+
|
|
433
|
+
MIT — see [LICENSE](https://github.com/gmboquet/mixle/blob/main/LICENSE).
|
|
434
|
+
|
|
435
|
+
© 2014–2025, developed at Lawrence Livermore National Laboratory (LLNL-CODE-844837).
|