Easily bootstrap Monaco Monte Carlo simulations with a dictionary based workflow.
Project description
Monaco Dictionary Utils
A Python library for easily bootstrapping Monaco Monte Carlo simulations with a dictionary-based workflow.
Overview
Monaco Dictionary Utils provides a simplified interface for creating and running Monte Carlo simulations using the Monaco framework. It streamlines the process of setting up simulations by allowing you to define model factories, input parameters, and distributions using dictionary-based configuration.
Features
- Dictionary-based configuration: Define simulations using simple dictionary structures
- Model factory support: Create models from factory functions with configurable parameters
- Input variable management: Handle both probabilistic distributions and constants
- Output conversion: Convert simulation results to easily accessible dictionary format
- Parameter normalization: Automatic parameter name normalization for consistency
Installation
uv add monaco-dict-utils
Requirements
- Python ≥ 3.11
- Monaco ≥ 0.16.0
Quick Start
from monaco_dict_utils import sim_factory, outvals_to_dict
# Define your model factory
def my_model_factory(param1, param2):
def model(x, y):
return {"result": x * param1 + y * param2}
return model
# Configure simulation
factory_vars = {"param1": 2, "param2": 3}
invars = {
"x": {"dist": "uniform", "params": {"loc": 0, "scale": 1}},
"y": {"dist": "_constant", "params": 5}
}
# Create and run simulation
sim = sim_factory(
name="my_simulation",
model_factory=my_model_factory,
factory_vars=factory_vars,
invars=invars,
ndraws=1000
)
sim.run()
# Convert outputs to dictionary
results = outvals_to_dict(sim)
API Reference
sim_factory(name, model_factory, factory_vars, invars, ndraws, *, verbose=True, debug=False)
Create a Monte Carlo simulation from a model factory and parameters.
Parameters:
name(str): Name of the simulationmodel_factory(Callable): Factory function that creates the modelfactory_vars(dict): Dictionary of variables to pass to model factoryinvars(dict): Dictionary mapping input names to distribution parametersndraws(int): Number of Monte Carlo draws to simulateverbose(bool, optional): Whether to print simulation progress. Defaults to True.debug(bool, optional): Whether to run in debug mode. Defaults to False.
Returns:
Sim: Configured Monaco Sim object ready to run simulations
Example:
sim = sim_factory(
name="example_sim",
model_factory=my_factory,
factory_vars={"param": 10},
invars={"x": {"dist": "normal", "params": {"loc": 0, "scale": 1}}},
ndraws=5000
)
outvals_to_dict(sim)
Convert simulation output values to a dictionary.
Parameters:
sim(Sim): A Monaco Sim object that has been run
Returns:
dict: Dictionary mapping output variable names to numpy arrays of output values
Example:
results = outvals_to_dict(sim)
# results = {"Result": array([1.23, 4.56, ...]), "Other_Output": array([...])}
Input Variables Configuration
The invars dictionary supports two types of inputs:
1. Probabilistic Distributions
For random variables, specify a distribution and its parameters:
invars = {
"temperature": {
"dist": "normal",
"params": {"loc": 20, "scale": 5}
},
"pressure": {
"dist": "uniform",
"params": {"loc": 10, "scale": 2}
}
}
2. Constants
For constant values, use the special _constant distribution:
invars = {
"gravity": {
"dist": "_constant",
"params": 9.81
},
"config": {
"dist": "_constant",
"params": {"setting1": 100, "setting2": 200}
}
}
Parameter Normalization
The library automatically normalizes parameter names by:
- Converting to lowercase
- Removing special characters
- Replacing spaces with underscores
For example: "Air Temperature" becomes "air_temperature"
Output Formatting
Output values are automatically formatted with:
- Title case conversion
- Underscore preservation
- Example:
"time_savings"becomes"Time_Savings"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file monaco_dict_utils-0.1.0.tar.gz.
File metadata
- Download URL: monaco_dict_utils-0.1.0.tar.gz
- Upload date:
- Size: 7.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa0c997a1a5480a8487c0e047668a3caebcd7b3276d22102e332fa6b1d9db133
|
|
| MD5 |
5c8738853ecca95635c8714d2eb6140c
|
|
| BLAKE2b-256 |
113c1ab278bd2f3ce478a03fc2b33411a75a2850e26e0a3a266f808e42c92d63
|
Provenance
The following attestation bundles were made for monaco_dict_utils-0.1.0.tar.gz:
Publisher:
publish.yml on hbmartin/monaco-dict-utils
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
monaco_dict_utils-0.1.0.tar.gz -
Subject digest:
fa0c997a1a5480a8487c0e047668a3caebcd7b3276d22102e332fa6b1d9db133 - Sigstore transparency entry: 278658560
- Sigstore integration time:
-
Permalink:
hbmartin/monaco-dict-utils@d6a056285ea199044494dee3a6ae9a39470cf6fc -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/hbmartin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d6a056285ea199044494dee3a6ae9a39470cf6fc -
Trigger Event:
release
-
Statement type:
File details
Details for the file monaco_dict_utils-0.1.0-py3-none-any.whl.
File metadata
- Download URL: monaco_dict_utils-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9ae55ba34c68e5396f2f7cdcb5d338832173230bc268d094d46a991ae2605c0
|
|
| MD5 |
deaa51efc557435db13c5e6bcafed880
|
|
| BLAKE2b-256 |
5b49aaad78af64fef98decbed8c6d4c70785ddae20e34b7903caee6226781ce6
|
Provenance
The following attestation bundles were made for monaco_dict_utils-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on hbmartin/monaco-dict-utils
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
monaco_dict_utils-0.1.0-py3-none-any.whl -
Subject digest:
b9ae55ba34c68e5396f2f7cdcb5d338832173230bc268d094d46a991ae2605c0 - Sigstore transparency entry: 278658571
- Sigstore integration time:
-
Permalink:
hbmartin/monaco-dict-utils@d6a056285ea199044494dee3a6ae9a39470cf6fc -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/hbmartin
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d6a056285ea199044494dee3a6ae9a39470cf6fc -
Trigger Event:
release
-
Statement type: