NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Python Toolkit for Causal and Probabilistic Reasoning
Last release 5 months ago
30 Apr 2026
Ships fairly regularly
a new release about every 3 months
Most releases are documented
notes for 20 of 29 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
29 releases · first in 2016
Please refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Please refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Thanks to all the contributors.
@AjayBora002 @anusa-saha @Anushka-2406 @balgaly @codejasleen @Cyberpunk-San @hanara2112 @kajal-jotwani @Nimish-4 @officialasishkumar @PewterZz @SayedGameaSayed @Vidhu-sri
DAG.get_random can now generate graphs with a fixed number of edges (#3086).DAG.get_stats() method (#3143).power_divergence test and PC algorithm for better performance (#3356).pgmpy.parameter_estimator package (#3325).SHD to accept covariant arguments in __init__ for composability (#3310)._orient_colliders for better performance (#3195).is_valid_cpd (#3052).__eq__ to check structure equality in LinearGaussianBayesianNetwork (#3276).has_missing_data tag for tubingen dataset (#3231).state_name.py (#3309).BIF, NET, XMLBIF, and UAI readwrite modules (#3226, #3230, #3262, #3263).One column per quarter.
Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Thanks to all the contributors.
@anusa-saha @sabasiddique1 @daehyun99 @DARHWOLF @MAVRICK-1 @fkiraly @Nimish-4 @Spinachboul @arocapedro @Anushka-2406 @kajal-jotwani @mdrazak2001 @Theavinash02 @tysoncung @XAheli @codervinitjangir @Mushfiqur719 @nitishmalang @Vanshitaaa20 @umanshiva @yashnator @Manas-7854 @D03xen @Susmita-Chakrabarty @moksha-hub @whyvineet @Susmita331 @Akhilesh-max @Green-Kedia @Dhiren-Mhatre @Witchyass @mohityadav8 @Jatinbhardwaj-093 @prishasarna @stephanielees @Asc-85129 @adarshh347 @Aniketsy @Premkumar-2004 @JATAYU000 @musabkas @georgmuntingh @hillhack @Rajdeep-naha @samadpls @Sanchay117 @Nuna7 @1betatsu @hardik-xi11
PDAG, ADMG, MAG, AncestralBase, and SimpleCausalModel.DAG, including to_pdag, to_dagitty, to_lavaan, public get_ancestors, edge_strength, get_stats, and __hash__.DAG.to_daft and DAG.to_graphviz can now annotate plots with computed edge strengths.DAG.from_dagitty can now construct LinearGaussianBayesianNetwork instances when the dagitty model includes beta coefficients.pgmpy.causal_discovery with refactored PC, GES, HillClimbSearch, and ExpertInLoop estimators.ExpertKnowledge now supports search_space, richer string representations, temporal-order handling, and tighter integration with causal discovery and ExpertInLoop.pgmpy.identification, including shared identification base classes and adjustment/frontdoor workflows.pgmpy.prediction module with sklearn-compatible causal prediction estimators: NaiveAdjustmentRegressor, DoubleMLRegressor, and NaiveIVRegressor.pgmpy.ci_tests package with class-based CI tests and registry-based lookup, including FisherZ, PearsonrEquivalence, and estimator-configurable GCM.pgmpy.structure_score package and new causal graph evaluation metrics: AdjacencyConfusionMatrix and OrientationConfusionMatrix.LinearGaussianBayesianNetwork now supports JSON load/save, log_likelihood, predict_probability, improved predict, and richer simulation features for interventions, evidence, virtual interventions, and missing-data generation.FunctionalBayesianNetwork sampling now supports vectorized FunctionalCPD functions and interventional simulation.ExpectationMaximization gained apply_smoothing, configurable init_cpds, and support for node-specific priors.DynamicBayesianNetwork.simulate gained a return_format argument.pgmpy.datasets and pgmpy.example_models, with filterable catalogs and on-demand loading.bnlearn, bnrep, and DAG-only registries, including Andes, Barley, Child, Hailfinder, Hepar2, Insurance, Link, Munin 1-4, Pathfinder, Pigs, Sachs, Survey, Water, and continuous models such as magic_irri.DiscreteBayesianNetwork / readwrite support now includes NET/HUGIN files, improved XDSL support, and a JSON schema for Linear Gaussian model serialization.PC, GES, HillClimbSearch, and ExpertInLoop were refactored into sklearn-style causal discovery estimators with fit, learned causal_graph_, and automatic CI-test / structure-score selection based on the data type.exposures, outcomes, and confounders across graph, identification, and prediction APIs.ExpertKnowledge now lives under pgmpy.causal_discovery, and structure scores are organized under pgmpy.structure_score.MarkovNetwork is now deprecated in favor of DiscreteMarkovNetwork.DAG.fit moved to DiscreteBayesianNetwork.fit, and Bayesian-network simulation argument ordering was made more consistent across model classes.scikit-base is now used for object lookup in datasets, metrics, example models, and CI tests.torch / pyro, Graphviz, documentation tooling, and LLM integrations are isolated more cleanly as extras.setup.py to pyproject.toml, and pyparsing is now an explicit dependency for read/write features.list_models and list_datasets now validate filter tags explicitly and expose richer metadata such as has_missing_data and has_index_col.BIF, XMLBIF, NET, and XDSL writers now warn when state names contain commas, and BIFWriter no longer silently rewrites those state names.GES, including the latest algorithmic fix in #3228.PC, along with earlier bugs around max_cond_vars propagation and skeleton building.LinearGaussianBayesianNetwork, including handling of isolated latent nodes and seed=0 in get_random_cpds.LinearGaussianBayesianNetwork.predict, predict_probability, invalid virtual evidence errors, unbiased standard deviation estimation, and several simulation / documentation mismatches.FunctionalBayesianNetwork, ApproxInference, and DBNInference.ExpectationMaximization handling of missing data by treating all-missing columns as latent variables, dropping partially missing rows explicitly, and adding clearer validation.SHD on graphs with isolated nodes, CorrelationScore on very small graphs, MarkovChain.add_transition_model validation, FactorGraph.add_edge defaults, and Bayesian-estimator model reconstruction with isolated nodes.First major Release (Many breaking changes). Please refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md.
First major Release (Many breaking changes). Please refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md.
Thanks @jihyeseo @Nimish-4 @Nuna7 @arocapedro @B3CODER @kollisaisiddartha for the contributions.
pgmpy.metrics.SHD to compute the Structural Hamming Distance between two DAGs.NoisyORCPD class to represent NoisyOr models.ExpertKnowledge class to specify expert knowledge for structure learning algorithms.pgmpy.estimators.SEMEstimator.pgmpy.estimators.CITests.ci_pillai to pgmpy.estimators.CITests.pillai_trace.BayesianNetwork.fit method moved to DAG.fit so that fitting can be done on either model types.pgmpy.factors.continuous.ContinuousFactor class.BayesianModel and MarkovModel classes have been removed.BayesianNetwork class have been removed. Use DiscreteBayesianNetwork instead.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Thanks @tillwenke @coding-famer @jakee417 @tristantreb
pgmpy.utils.discretize.pgmpy.metrics.implied_cis and pgmpy.metrics.fisher_c.. in variables names in BIF file format.virtual_evidence parameter in inference methods to accept DiscreteFactor objects.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Thanks @jakee417 @tristantreb @MatteoFasulo @dfatpnuk @gweesip @eugeniovaretti
init_cpds argument to ExpecattionMaximiation.get_parameters to specify initialization values.CausalInference.get_minimal_adjustment_set to accept string variable names.compat_fns.copy to consider the case when int or float is passed.BayesianNetwork.fit_update when running with CUDA backend.complete_samples_only argument from BaseEstimator.state_counts.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
DAG.to_graphviz and PDAG.to_graphviz methods to convert model to graphviz objects.CausalInference.get_minimal_adjustment_setpgmpy.global_vars.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
DAG.to_pdag method.xml.etree the default parser instead of using lxml.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
state_counts method.lru_cache.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
BayesianNetwork.get_state_probability method to compute the probability of a given evidence.BayesianEstimator.estimate_cpd accepts weighted datasets.CausalInference.estimate_ate with front-door criterion.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
BayesianNetwork.get_random_cpds method to randomly parameterize a network structure.factors.factor_sum_product method for faster sum-product operations using tensor contraction.DynamicBayesianNetwork.initialize_initial_state. #1564factors.factor_product. #1565DiscreteFactor.marginalize and DiscreteFactor.copy methods.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
BayesianNetwork.simulate method.GibbsSampling for it to work with variables with integral names.DAG.active_trail_nodes allows tuples as variable names.UAIReader.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
CausalInference.is_valid_backdoor_adjustment_set to accept str arguments for Z.BayesianNetwork.remove_cpd to work with integral node names.MPLP.map_query to return the variable states instead of probability values.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
fit_update method to BayesianNetwork for updating model using new data.simulate method to BayesianNetwork and DynamicBayesianNetwork to simulated data under different conditions.DynamicBayesianNetwork.fit method to learn model parameters from data.ApproxInference class to do approximate inference on models using sampling.BayesianNetwork.load and BayesianNetwork.save to quickly read and write files.BayesianModel and MarkovModel renamed to BayesianNetwork and MarkovNetwork respectively.DAG.to_daft method.DAG.is_iequivalent method.CausalInference.query method.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
DAG.get_random and BayesianModel.get_random methods to be able to generate random models.CausalInference.query method for doing do operation inference with or without adjustment sets.BDeuScore as another option for structure score when using HillClimbSearch.DAG.is_active_trail to is_dconnected.DAG.do can accept multiple variables in the argument.DiscreteFactor.__eq__ to also consider the state names order.Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Periodical Release. Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
BayesianModelProbability class for calculating pmf for BNs.stochastic which returns stochastic results instead of MAP.pgmpy.utils.get_example_model now doesn't need internet connection to work. Files moved locally.pgmpy.DAG.get_independencies.New conditional independence tests for discrete variables
PC.skeleton_to_pdag.HillClimbSearch when no legal operations.Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
pgmpy.utils.get_example_model function to fetch models from bnlearn repository.SHOW_PROGRESS variable.pgmpy.utils.get_example_model to fetch models from bnlearn's repository.get_value and set_value method to DiscreteFactor to get/set a single value.get_acestral_graph to DAG.sample_discrete method. Sampling algorithms much faster.HillClimbSearch to be faster.Data class.Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
Refer Changelog for details: https://github.com/pgmpy/pgmpy/blob/dev/CHANGELOG.md
max_ci_vars for ConstraintBasedEstimator.pseudo_count for K2 score.DiscreteFactor.reduce accepts both state names and state numbers for variables.BeliefPropagation.query fixed to return normalized CPDs.HillClimbSearch.BayesianModel.to_markov_model fixed to work with disconnected graphs.Documentation updated to include Structural Equation Models(SEM) and Causal Inference.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →