← JinkōCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Jinkō
Snapshot Sep 30, 2026 · 23:13 UTC · version 1.8.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "jinko-calibration-cmaes",
"description": "Create, run, poll, and inspect results for Jinkō CMA-ES calibrations via the jinko-sdk: attach data tables and/or an advanced output set as fitness-function sources, set CMA-ES options and parameter priors, launch and monitor the run, and read performance/results payloads. Use whenever the user needs the SDK mechanics of building or driving a Calibration object. Do not use this skill for calibration business rules (defaults, diagnostics, deliverable rules). Do not use this skill for advanced output set / scoring design authoring — use jinko-output-set. Do not use this skill for data-table creation or validForFitnessFunction checks — use jinko-data-table. Do not use this skill for model or protocol authoring — use jinko-model / jinko-protocol. Do not use this skill for calibration-plan orchestration or iteration workflow.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 270
},
{
"relative_path": "evals/evals.json",
"size_in_bytes": 3362
},
{
"relative_path": "references/creating-a-calibration.md",
"size_in_bytes": 7137
},
{
"relative_path": "references/results-and-inspection.md",
"size_in_bytes": 2622
},
{
"relative_path": "references/running-and-polling.md",
"size_in_bytes": 1381
},
{
"relative_path": "scripts/create_cmaes_calibration.py",
"size_in_bytes": 13578
},
{
"relative_path": "scripts/inspect_calibration.py",
"size_in_bytes": 3461
},
{
"relative_path": "scripts/run_calibration.py",
"size_in_bytes": 3283
}
],
"skill_md_contents": "---\nname: jinko-calibration-cmaes\ndescription: >-\n Create, run, poll, and inspect results for Jinkō CMA-ES calibrations via\n the jinko-sdk: attach data tables and/or an advanced output set as\n fitness-function sources, set CMA-ES options and parameter priors, launch\n and monitor the run, and read performance/results payloads. Use whenever\n the user needs the SDK mechanics of building or driving a Calibration\n object. Do not use this skill for calibration business rules (defaults,\n diagnostics, deliverable rules). Do not use this skill for advanced output\n set / scoring design authoring — use jinko-output-set. Do not use this skill\n for data-table creation or validForFitnessFunction checks — use\n jinko-data-table. Do not use this skill for model or protocol\n authoring — use jinko-model / jinko-protocol. Do not use this skill for\n calibration-plan orchestration or iteration workflow.\ncompatibility: >-\n Check set-up with jinko-sdk-setup. Creating/running calibrations requires\n write and run permissions.\nmetadata:\n author: Nova In Silico\n requires_sdk: \">=1.8,<2.0\"\nlicense: MIT\n---\n\n# Jinkō CMA-ES Calibration SDK Workflows\n\n| UI wording | API project-item type | SDK entry points |\n| ----------- | ---------------------- | ----------------- |\n| Calibration | `Calibration` | `client.create_calibration(...)`, `model.create_calibration(...)`, `Calibration` domain object |\n\nThe calibration manager API is CMA-ES only — no type/method discriminator exists. \"Subsampling\" is an unrelated VPop-generator feature, not a calibration type.\nThis skill is pure SDK mechanics: no defaults, no diagnostics, no when-to-calibrate guidance.\n\n> **PREREQUISITE:** This skill needs an initialized `jinko-sdk` connection and an\n> SDK satisfying its `metadata.requires_sdk` range. Run the `jinko-sdk-setup` skill\n> (`../jinko-sdk-setup/SKILL.md`) and proceed only once its check passes. If that\n> skill is not found, install it from `novainsilico/jinko-skills`.\n\n## Minimum Calibration\n\n- `parameters`: priors to calibrate (required, ≥1).\n- At least one fitness-function source (required): `dataTableDesigns` (data table must report `metadata.public.validForFitnessFunction: True`, see `jinko-data-table`) and/or an advanced output set with objectives (see `jinko-output-set`). This skill creates neither input.\n- `CalibrationOptions`: `seed` + `thresholdWeightedScore` are schema-required and have contract defaults `0` and `1`; `populationSize` + `numberOfIterations` have no contract defaults and are functionally required. The bundled creation script requires population size and iteration count, and uses the contract defaults for omitted seed and threshold; pass all four explicitly when reproducibility policy requires it.\n\nTwo encoding rules are mandatory before creation:\n\n- With `log_transform=True`, `mean` and `std` are in `log10(x)` coordinates, but `min_bound` and `max_bound` remain in the original physical coordinates of `x`. If planned bounds are written in log10 coordinates, exponentiate them first: `physical_bound = 10**log10_bound`. A calibration sanity warning such as `MAX_BOUND_LOWER_THAN_MEAN_LOG` indicates this mapping is inconsistent.\n- For every attached fitness data table, set `options.log_transform_wide_bounds` to every distinct `obsId` in that table unless the user explicitly requests linear bound scaling for a named observable. This is the SDK field behind the UI's **Scale bounds** option.\n\n## Create\n\n```python\nmodel = client.get_model(\"cm-...\")\ndata_table = client.get_data_table(\"dt-...\")\ncalibration = model.create_calibration(\n parameters=[\n {\n \"id\": \"k_elim\",\n \"mean\": -1.0,\n \"std\": 0.5,\n \"log_transform\": True,\n \"min_bound\": 0.001,\n \"max_bound\": 10.0,\n }\n ],\n data_tables=[\n {\n \"data_table\": data_table,\n \"include\": True,\n \"options\": {\n \"weight\": 1.0,\n \"log_transform_wide_bounds\": sorted({\n row[\"obsId\"] for row in data_table.export()\n }),\n },\n }\n ],\n calib_seed=42,\n calib_threshold_weighted_score=0.0,\n calib_number_of_iterations=100,\n calib_population_size=12,\n)\n```\n\nEquivalent client-level call: `client.create_calibration(model=model, ...)`.\n`calibrationOptionsOverride`, `solvingOptionsOverride`, `coreVersion` have no typed kwarg — use `client.create_calibration_from_json(json_content=payload)` / `client.calibrations.create_raw(payload)`.\nSee `references/creating-a-calibration.md` for full field tables.\n\nSolving times can be set post-creation with `calibration.set_solving_times(t_max=timedelta(...), t_step=timedelta(...), additional_periods=[{\"t_max\":timedelta(...), ...])`.\n\n## Run & Poll\n\n```python\ncalibration.run()\nfinal_status = calibration.wait_until_completed(timeout=3600)\n```\n\nSee `references/running-and-polling.md` for `.get_sanity()`, `.status()`, and\n`StoppingReason` values.\n\n## Results\n\n```python\ncalibration.performance() # raw dict\ncalibration.results_summary() # raw dict\ncalibration.objective_weights() # raw dict, {objective_id: weight}\ncalibration.results.sorted_patients(\n sort_by=\"optimizationWeightedScore desc\"\n) # raw, low-level\n```\n\nAll results accessors return unparsed dicts today. See `references/results-and-inspection.md`.\n\n## Project Folder Hygiene\n\nSame as `jinko-trial`/`jinko-data-table`: propose a `YYYY-MM-DD-<experiment>` folder, reuse an exact-name match via `client.get_folder_by_name(name, exact_match_only=True)`, create only on confirmation or `--create-folder --apply`.\n\n## Bundled Scripts\n\n- `scripts/create_cmaes_calibration.py`: dry-run by default, creates a calibration with `--apply`.\n- `scripts/run_calibration.py`: runs and polls an existing calibration with `--apply`.\n- `scripts/inspect_calibration.py`: prints/writes raw performance/results_summary/objective_weights/sorted_patients JSON.\n\n```bash\npython skills/jinko-calibration-cmaes/scripts/create_cmaes_calibration.py --model-sid cm-... --data-table-sid dt-... --parameter \"k_elim:-1.0:0.5:0.001:10.0:log\" --seed 42 --threshold-weighted-score 0.0 --iterations 100 --population-size 12\npython skills/jinko-calibration-cmaes/scripts/create_cmaes_calibration.py --model-sid cm-... --data-table-sid dt-... --parameter \"k_elim:-1.0:0.5:0.001:10.0:log\" --seed 42 --threshold-weighted-score 0.0 --iterations 100 --population-size 12 --folder 2026-07-07-calib --create-folder --apply\npython skills/jinko-calibration-cmaes/scripts/run_calibration.py --calibration-sid ca-... --apply --timeout 3600\npython skills/jinko-calibration-cmaes/scripts/inspect_calibration.py --calibration-sid ca-... --performance --results-summary --objective-weights --output-dir calib-results\n```\n\n## Reference Routing\n\n- `references/creating-a-calibration.md`: full field tables, three creation patterns.\n- `references/running-and-polling.md`: run/stop/status/sanity, `JobStatus`, `StoppingReason`.\n- `references/results-and-inspection.md`: performance/results_summary/objective_weights/results.* field tables and caveats.\n"
}SHA-256: 2093ba58fbc4af344859e4a9f51384ec4029e5cbe927b3fd823b0d971277b79a