Core package
The top-level idmtools_calibra package contains the central orchestration classes for running calibrations.
CalibManager
| from idmtools_calibra.calib_manager import CalibManager
|
The top-level entry point. Manages the multi-iteration calibration loop: sampling parameters, commissioning simulations, analyzing results, and updating the algorithm state.
Constructor
1
2
3
4
5
6
7
8
9
10
11
12
13 | CalibManager(
task,
map_sample_to_model_input_fn,
sites,
next_point,
platform=None,
name='calib_test',
sim_runs_per_param_set=1,
max_iterations=5,
plotters=None,
map_replicates_callback=None,
directory='.'
)
|
| Parameter |
Type |
Default |
Description |
task |
ITask |
— |
An idmtools task (e.g. PythonTask, EMODTask) |
map_sample_to_model_input_fn |
callable |
— |
Callback (simulation, sample_row) -> dict that applies one parameter sample to the task |
sites |
List[CalibSite] |
— |
One or more calibration sites providing reference data and analyzers |
next_point |
NextPointAlgorithm |
— |
Sampling algorithm instance (e.g. OptimTool, IMIS) |
platform |
IPlatform |
None |
idmtools platform; defaults to the current platform context |
name |
str |
'calib_test' |
Calibration name; also used as the output directory name |
sim_runs_per_param_set |
int |
1 |
Number of replicate simulations per parameter sample |
max_iterations |
int |
5 |
Maximum number of calibration iterations |
plotters |
List[BasePlotter] |
None |
Diagnostic plotters run after each iteration |
map_replicates_callback |
callable |
None |
Callback for sweeping the replicate seed (defaults to Run_Number) |
directory |
str |
'.' |
Root directory under which the calibration folder is created |
Key methods
run_calibration(**kwargs)
Start or resume a calibration. All parameters are passed as keyword arguments.
| Keyword |
Type |
Default |
Description |
resume |
bool |
False |
Resume an existing calibration |
iteration |
int |
None |
Iteration number to resume from |
iter_step |
str |
None |
Phase to resume from: 'commission', 'analyze', 'plot', 'next_point' |
loop |
bool |
True |
Continue to subsequent iterations after resuming |
max_iterations |
int |
None |
Override the max iterations set in the constructor |
backup |
bool |
False |
Back up Calibration.json before resuming |
dry_run |
bool |
False |
Preview resume action without executing |
directory |
str |
None |
Override the calibration directory |
open_for_reading(calibration_directory) (classmethod)
Open an existing calibration directory for reading results without executing anything.
| cm = CalibManager.open_for_reading('my_calibration')
|
Example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 | from idmtools_calibra.calib_manager import CalibManager
from idmtools_calibra.algorithms.optim_tool import OptimTool
from idmtools.entities.command_task import CommandTask
task = CommandTask(command='python model.py')
calib = CalibManager(
task=task,
map_sample_to_model_input_fn=my_map_fn,
sites=[my_site],
next_point=OptimTool(params=[...]),
name='my_calibration',
max_iterations=10,
)
calib.run_calibration()
# Resume from iteration 3, analyze phase:
calib.run_calibration(resume=True, iteration=3, iter_step='analyze')
|
CalibSite
| from idmtools_calibra.calib_site import CalibSite
|
Abstract base class for calibration sites. A site pairs reference (observed) data with the analyzers that compare model output against it.
Constructor
| Parameter |
Type |
Description |
name |
str |
Unique name for this calibration site |
Abstract methods to implement
| Method |
Returns |
Description |
get_analyzers() |
List[IAnalyzer] |
Return analyzer instances for this site |
get_setup_functions() |
List[callable] |
Return functions that configure the task for this site |
get_reference_data(reference_type=None) |
DataFrame |
Return the reference/observed data |
Example
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | from idmtools_calibra.calib_site import CalibSite
import pandas as pd
class MySite(CalibSite):
def __init__(self):
super().__init__(name='my_site')
def get_analyzers(self):
return [MyAnalyzer(site=self)]
def get_setup_functions(self):
return []
def get_reference_data(self, reference_type=None):
return pd.read_csv('reference/data.csv')
|
RMSESiteSingleChannel
| from idmtools_calibra.rmse_site import RMSESiteSingleChannel
|
A ready-to-use CalibSite subclass for RMSE-based calibration of a single output channel. Reads reference data from a CSV and wires up an RMSEAnalyzer automatically.
Constructor
| RMSESiteSingleChannel(
name,
reference_sources={'just_one': 'reference/output.csv'}
)
|
| Parameter |
Type |
Default |
Description |
name |
str |
— |
Site name |
reference_sources |
dict |
{'just_one': 'reference/output.csv'} |
Dict mapping a key to the path of the reference CSV file. The CSV must have an independent column (first) and a dependent column (second). |
Example
| from idmtools_calibra.rmse_site import RMSESiteSingleChannel
site = RMSESiteSingleChannel(
name='solar_site',
reference_sources={'data': 'reference/output.csv'}
)
|
IterationState
| from idmtools_calibra.iteration_state import IterationState
|
Holds all state for a single calibration iteration: parameter samples, simulation IDs, analyzer results, and timestamps. Serialized to and deserialized from Calibration.json to support resuming.
Key attributes
| Attribute |
Type |
Description |
iteration |
int |
Current iteration number |
calibration_name |
str |
Name of the calibration |
calibration_directory |
str |
Path to the calibration output directory |
samples_for_this_iteration |
dict |
Parameter samples drawn for this iteration |
experiment_id |
str |
ID of the commissioned experiment |
results |
dict |
Per-site analyzer results |
all_results |
DataFrame |
Combined results across all sites |
summary_table |
DataFrame |
Summary statistics |
ResumeManager
| from idmtools_calibra.utilities.resume_manager import ResumeManager
|
Manages resuming a calibration from a specific iteration and phase. Restores CalibManager state, validates the requested iteration and step, and re-enters the calibration loop at exactly the right point. Used internally by CalibManager.run_calibration(resume=True, ...).
Constructor
| ResumeManager(
calib_manager,
iteration=None,
iter_step=None,
max_iterations=None,
loop=True,
backup=False,
dry_run=False
)
|
| Parameter |
Type |
Default |
Description |
calib_manager |
CalibManager |
— |
The calibration manager to resume |
iteration |
int |
None |
Iteration to resume from; auto-detects the latest if None |
iter_step |
str |
None |
Phase to resume from: 'commission', 'analyze', 'plot', 'next_point'; auto-detects if None |
max_iterations |
int |
None |
Override max iterations; uses calib_manager.max_iterations if None |
loop |
bool |
True |
Continue to subsequent iterations after resuming |
backup |
bool |
False |
Back up Calibration.json before resuming |
dry_run |
bool |
False |
Print the resume plan without executing |
Key method
resume()
Restores all state and re-enters the calibration loop at the resolved iteration and step. Prints a summary of the resume plan before executing.
| rm = ResumeManager(calib_manager=calib, iteration=2, iter_step='analyze')
rm.resume()
|
Utility functions
set_parameter_sweep_callback
| from idmtools_calibra.calib_manager import set_parameter_sweep_callback
|
Convenience callback compatible with CalibManager.map_replicates_callback. Sets a named parameter on the simulation task, supporting both task.config.parameters (EMOD-style) and task.parameters (JSON-configured tasks).
| set_parameter_sweep_callback(simulation, param='Run_Number', value=42)
|
generate_ll_all
| from idmtools_calibra.utilities.ll_all_generator import generate_ll_all
generate_ll_all(calib_manager, iteration, ll_all_name)
|
Method rebuild ll_all.csv.