Model Parameter JSON
model_params_json lets Phase 6 pass model-specific settings into model
wrappers. Use it when most STREAMLINE run settings can stay shared, but one
model needs a specific constructor value.
The parameter is named model_params_json in .cfg files, notebooks, and the
Phase 6 CLI.
How It Works
model_params_json is a mapping from model ID to parameter overrides:
{
"MODEL_ID": {
"parameter_name": "parameter_value"
}
}
Model IDs are matched case-insensitively against the model wrapper
small_name or full model_name. For example, HEROS, heros, and
ExSTraCS are accepted model keys.
Use exact model wrapper parameter names. For constructor-controlled settings, such as HEROS and ExSTraCS hyperparameters, values must be present before the wrapper builds its Phase 6 parameter grid.
Expert Knowledge
Phase 6 automatically passes Phase 4 feature-importance scores into model
wrappers that expose an expert-knowledge constructor parameter. ExSTraCS uses
this through its expert_knowledge parameter.
The score vector is loaded separately for each CV split and ordered to match
the features in that CV training file after feature selection. STREAMLINE uses
Relief-style scores first when available (MultiSWRFDB, MultiSWRFDB*,
MultiSURF, MultiSURF*) and falls back to mutual information.
You usually do not need to set expert_knowledge yourself. If you do supply
it through model_params_json, your value takes precedence over the automatic
Phase 4 score loading.
Config File Examples
In a .cfg file, place model_params_json in the [p6] section:
[p6]
outcome_type = Binary
models = HEROS,ExSTraCS
model_params_json = {"HEROS": {"iterations": 200000, "pop_size": 2000, "model_iterations": 1000, "model_pop_size": 200, "nu": 1}, "ExSTraCS": {"iterations": 200000, "N": 2000, "nu": 1, "rule_compaction": "QRF"}}
This runs HEROS and ExSTraCS with fixed values. It does not create a broad hyperparameter sweep because every supplied value is a single numeric or string value.
CLI Examples
For a direct Phase 6 CLI run, quote the parameter string:
python -m streamline.p6_modeling.p6_cli \
--output_path out \
--experiment_name DemoBinary \
--outcome_type Binary \
--n_splits 3 \
--models HEROS,ExSTraCS \
--model_params_json '{"HEROS": {"pop_size": 2000, "model_pop_size": 200}, "ExSTraCS": {"N": 5000, "nu": 1}}'
Use None when you want to restore a built-in candidate list for one
parameter. This example searches only HEROS pop_size:
python -m streamline.p6_modeling.p6_cli \
--output_path out \
--experiment_name DemoBinary \
--outcome_type Binary \
--n_splits 3 \
--models HEROS \
--model_params_json '{"HEROS": {"pop_size": None}}'
You can combine fixed values and None in the same CLI value. This keeps
HEROS mostly fixed while searching pop_size, and keeps ExSTraCS mostly fixed
while searching N:
python -m streamline.p6_modeling.p6_cli \
--output_path out \
--experiment_name DemoBinary \
--outcome_type Binary \
--n_splits 3 \
--models HEROS,ExSTraCS \
--model_params_json '{"HEROS": {"iterations": 100000, "pop_size": None, "model_iterations": 500, "model_pop_size": 100, "nu": 1}, "ExSTraCS": {"iterations": 200000, "N": None, "nu": 1, "rule_compaction": "QRF"}}'
To run the built-in candidate sweep for every HEROS and ExSTraCS wrapper
parameter, set each tunable parameter to None:
python -m streamline.p6_modeling.p6_cli \
--output_path out \
--experiment_name DemoBinary \
--outcome_type Binary \
--n_splits 3 \
--models HEROS,ExSTraCS \
--n_trials 200 \
--timeout 900 \
--model_params_json '{"HEROS": {"iterations": None, "pop_size": None, "model_iterations": None, "model_pop_size": None, "nu": None}, "ExSTraCS": {"iterations": None, "N": None, "nu": None, "rule_compaction": None}}'
Notebook Examples
In a notebook parameter block, use a Python dictionary:
P6_MODEL_PARAMS_JSON = {
"HEROS": {
"iterations": 200000,
"pop_size": 2000,
"model_iterations": 1000,
"model_pop_size": 200,
"nu": 1,
},
"ExSTraCS": {
"iterations": 200000,
"N": 2000,
"nu": 1,
"rule_compaction": "QRF",
},
}
Use None in notebooks when you want the built-in candidate list for a
specific parameter:
P6_MODEL_PARAMS_JSON = {
"HEROS": {"pop_size": None},
"ExSTraCS": {"iterations": None},
}
HEROS
HEROS uses these Phase 6 wrapper parameters:
Parameter |
Fixed default |
Candidate list when set to |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Use pop_size for the top-level HEROS population size. Use
model_pop_size for the internal model population size. HEROS does not use an
N alias in STREAMLINE.
Example fixed HEROS settings:
{
"HEROS": {
"iterations": 200000,
"pop_size": 2000,
"model_iterations": 1000,
"model_pop_size": 200,
"nu": 1
}
}
Example HEROS run where only pop_size is searched:
{
"HEROS": {
"iterations": 100000,
"pop_size": None,
"model_iterations": 500,
"model_pop_size": 100,
"nu": 1
}
}
ExSTraCS
ExSTraCS uses these Phase 6 wrapper parameters:
Parameter |
Fixed default |
Candidate list when set to |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
ExSTraCS uses N for population size. HEROS uses pop_size.
When Phase 4 feature-importance results exist, STREAMLINE automatically passes
CV-specific expert knowledge into ExSTraCS. Manual expert_knowledge values in
model_params_json override the automatic Phase 4 scores.
Example fixed ExSTraCS settings:
{
"ExSTraCS": {
"iterations": 200000,
"N": 2000,
"nu": 1,
"rule_compaction": "QRF"
}
}
Example ExSTraCS run where only N is searched:
{
"ExSTraCS": {
"iterations": 200000,
"N": None,
"nu": 1,
"rule_compaction": "QRF"
}
}
Using None
By default, HEROS and ExSTraCS use fixed single-value settings. This protects runs from accidentally launching expensive RBML hyperparameter searches.
Passing None restores the built-in candidate list only for that parameter.
If any model parameter has a candidate list with more than one value, Phase 6
uses Optuna for that model within the configured n_trials and timeout
budget.
For .cfg files:
model_params_json = {"HEROS": {"pop_size": None}}
To sweep all built-in HEROS and ExSTraCS wrapper candidate lists from a
.cfg file:
model_params_json = {"HEROS": {"iterations": None, "pop_size": None, "model_iterations": None, "model_pop_size": None, "nu": None}, "ExSTraCS": {"iterations": None, "N": None, "nu": None, "rule_compaction": None}}
python -m streamline.p6_modeling.p6_cli \
--output_path out \
--experiment_name DemoBinary \
--outcome_type Binary \
--n_splits 3 \
--models HEROS \
--model_params_json '{"HEROS": {"pop_size": None}}'
For notebook dictionaries:
P6_MODEL_PARAMS_JSON = {"HEROS": {"pop_size": None}}
To sweep all built-in HEROS and ExSTraCS wrapper candidate lists from a notebook:
P6_MODEL_PARAMS_JSON = {
"HEROS": {
"iterations": None,
"pop_size": None,
"model_iterations": None,
"model_pop_size": None,
"nu": None,
},
"ExSTraCS": {
"iterations": None,
"N": None,
"nu": None,
"rule_compaction": None,
},
}
Common Mistakes
Use model_params_json, not model_json_param.
Use HEROS pop_size, not N.
Use ExSTraCS N, not pop_size.
Use Python values such as None, True, and False in CLI strings, cfg
files, and notebook dictionaries.