Validation#
examples/pipeline/validation.py#
import json
import os
import sys
import time
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
from ionworks import Ionworks
# Setup Ionworks client and pipeline
client = Ionworks()
# Choose how to access the data
# DATA_ACCESS_METHOD = "database"
DATA_ACCESS_METHOD = "direct"
data_config = "file:examples/data/chen_synthetic_0.5C/time_series.csv"
with open("examples/data/Chen2020.json") as f:
parameter_values = json.load(f)
# Define entry configuration to provide parameters
entry_config = {"values": parameter_values}
# Define validation configuration
validation_config = {
"objectives": {
"test": {
"objective": "CurrentDriven",
"model": {"type": "SPMe"},
"data": {"data": data_config},
}
},
"summary_stats": [{"type": "RMSE"}, {"type": "MAE"}, {"type": "Max"}],
}
# Create pipeline config
pipeline_config = {
"elements": {
"entry": {**entry_config, "element_type": "entry"},
"validate": {**validation_config, "element_type": "validation"},
},
}
# Submit pipeline
pipeline = client.pipeline.create(pipeline_config)
# Get job results
while True:
pipeline = client.pipeline.get(pipeline.id)
print(f"Pipeline {pipeline.id} status: {pipeline.status}")
if pipeline.status == "completed":
result = client.pipeline.result(pipeline.id)
print("Pipeline completed")
print("Summary Stats:", result.element_results["validate"]["summary_stats"])
break
elif pipeline.status == "failed":
print("Pipeline failed")
print("Error:", pipeline.error)
break
time.sleep(1)