Advanced Cogshop Run
This tutorial summarizes the workflow in tutorials/advanced_cogshop_run.ipynb.
It demonstrates two common patterns:
- Running a case with multiple input files.
- Reusing existing
ShopScenarioinstances across multipleShopCaseruns.
Preparation
Typical setup:
- Initialize
PowerOpsClientfrom config. - Verify credentials and project access.
- Prepare local SHOP input files.
Example helper for uploading files:
from pathlib import Path
def upload_file(local_file_name: str, external_id: str) -> str:
file_path = (Path("example_case_files") / local_file_name).resolve()
uploaded = powerops.cdf.files.upload(
path=str(file_path),
external_id=external_id,
name=local_file_name,
overwrite=True,
)
return uploaded.external_id
Example 1: Multiple SHOP Files in One Case
Step 1: Upload input files
case_file = upload_file("b_example_fornebu_without_commands.yaml", "example_case_fornebu")
commands_file = upload_file("b_example_commands.yaml", "example_commands")
Step 2: Prepare ShopCase
shop_file_list = [
(case_file, "b_example_fornebu_without_commands.yaml", True, ""),
(commands_file, "b_example_commands.yaml", True, ""),
]
shop_case = powerops.cogshop.prepare_shop_case(
shop_file_list=shop_file_list,
shop_version="16.0.3",
start_time=start_time,
end_time=end_time,
model_name="Demo model",
scenario_name="Demo scenario",
)
Step 3: Write and retrieve case
powerops.powermodel.upsert(shop_case)
retrieved_shop_case = powerops.cogshop.retrieve_shop_case(shop_case.external_id)
Step 4: Trigger execution
powerops.cogshop.trigger_shop_case(shop_case.external_id)
Step 5: Inspect results
result_list = powerops.cogshop.list_shop_results_for_case(shop_case.external_id, limit=3)
for result in result_list:
print(result.external_id)
Example 2: Reuse Existing Scenarios
When running multiple cases with the same model/scenario setup, create scenario objects once and reuse them.
Step 1: Create reusable scenarios
from cognite.powerops.client._generated.data_classes import ShopModelWrite, ShopScenarioWrite
reusable_scenario = ShopScenarioWrite(
name="Reusable scenario 16.0.3",
model=ShopModelWrite(name="Reusable model", shop_version="16.0.3"),
)
Step 2: Upsert reusable scenario
powerops.powermodel.upsert(reusable_scenario)
Step 3: Create cases referencing the existing scenario
shop_case_reuse = powerops.cogshop.prepare_shop_case_with_existing_scenario(
shop_file_list=shop_file_list,
start_time=start_time,
end_time=end_time,
shop_scenario_reference=reusable_scenario.external_id,
)
Step 4: Trigger and inspect
powerops.powermodel.upsert(shop_case_reuse)
powerops.cogshop.trigger_shop_case(shop_case_reuse.external_id)
results = powerops.cogshop.list_shop_results_for_case(shop_case_reuse.external_id, limit=3)
Cleanup
After testing, remove created objects so repeated tutorial runs stay deterministic.
Delete created ShopCase / ShopScenario / ShopModel nodes
# Example IDs from this tutorial
cleanup_case_ids = [
shop_case.external_id,
shop_case_reuse.external_id,
]
cleanup_scenario_ids = [
reusable_scenario.external_id,
]
for external_id in cleanup_case_ids + cleanup_scenario_ids:
powerops.powermodel.delete(external_id)
Delete uploaded CDF files used by tutorial runs
# File external IDs returned from upload_file(...)
file_external_ids = [case_file, commands_file]
for file_id in file_external_ids:
powerops.cdf.files.delete(external_id=file_id)
Verify cleanup
# Should return empty/None after deletion
print(powerops.cogshop.retrieve_shop_case(shop_case.external_id))
print(powerops.cdf.files.retrieve(external_id=case_file))
Source Notebook
The complete runnable notebook is stored in the repository at: