Input/Output Formats for Bayesian Networks

PyAgrum supports several formats for saving and loading graphical models, but not all formats preserve every feature of the models. Below is a guide to the supported formats and their capabilities.

Supported Formats

Warning

Only the native JSON formats (jgum and bgum), pickle, and BIFXML guarantee complete preservation of all graphical model features. Other formats may lose some of this information during serialization.

BIFXML (complete preservation)

The BIFXML format is recommended for interoperability with other Bayesian network tools. It preserves all features and attributes of the model.

import pyagrum as gum

# Save to BIFXML
gum.saveBN(bn, "model.bifxml")

# Load from BIFXML
bn = gum.loadBN("model.bifxml")

Pickle (Alternative for complete preservation)

The Python pickle format is also supported for complete preservation.

import pyagrum as gum
import pickle

# Save model
with open('model.pkl', 'wb') as f:
    pickle.dump(bn, f)

# Load model
with open('model.pkl', 'rb') as f:
    bn2 = pickle.load(f)

# or easily
gum.saveBN(bn, "model.pkl")
bn2 = gum.loadBN("model.pkl")

Other Supported Formats

The following formats are supported but may not preserve all model features:

  • Net (.net): Standard format for Bayesian networks but may lose some metadata.

  • DSL (.dsl): GeNIe format with some limitations.

  • UAI (.uai): Very simple format for Bayesian networks and Markov networks with limitations.

  • BIF (.bif): Format for Bayesian networks with limitations.

  • etc. (see pyagrum.availableBNExts() for a complete list).

See also

JGUM / BGUM Format Reference

Complete JSON/binary format specification covering BN, InfluenceDiagram and MarkovRandomField.