← JinkōCONTENT HISTORY

Update to Jinkō

Snapshot Sep 30, 2026 · 23:13 UTC · version 1.8.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "jinko-trial",
  "description": "Create, sanity-check, run, poll, and download results for Jinkō in-silico trials via the jinko-sdk. Use this skill whenever the user wants to set up a trial from a computational model and simple output set, optionally attach a vpop, protocol, data table, or advanced scoring output set, launch a trial, wait for completion, inspect completed trials, or download TimeSeries and Scalar results as pandas DataFrames. Do not use this skill for model editing, vpop creation, protocol design authoring, data-table upload, output-set creation/editing, or trial visualization.",
  "included_files": [
    {
      "relative_path": "agents/openai.yaml",
      "size_in_bytes": 241
    },
    {
      "relative_path": "evals/evals.json",
      "size_in_bytes": 2601
    },
    {
      "relative_path": "references/trial-results.md",
      "size_in_bytes": 1157
    },
    {
      "relative_path": "references/trial-setup.md",
      "size_in_bytes": 6397
    },
    {
      "relative_path": "scripts/find_completed_trial_results.py",
      "size_in_bytes": 4872
    },
    {
      "relative_path": "scripts/setup_and_run_trial.py",
      "size_in_bytes": 16055
    }
  ],
  "skill_md_contents": "---\nname: jinko-trial\ndescription: >-\n  Create, sanity-check, run, poll, and download results for Jinkō in-silico trials via the jinko-sdk. Use this skill whenever the user wants to set up a trial from a computational model and simple output set, optionally attach a vpop, protocol, data table, or advanced scoring output set, launch a trial, wait for completion, inspect completed trials, or download TimeSeries and Scalar results as pandas DataFrames. Do not use this skill for model editing, vpop creation, protocol design authoring, data-table upload, output-set creation/editing, or trial visualization.\ncompatibility: >-\n  Check set-up with the `jinko-sdk-setup` skill. Creating/running trials requires write and run permissions in the Jinkō project. Result DataFrame conversion requires pandas; raw ZIP/CSV download works without pandas.\nmetadata:\n  author: Nova In Silico\n  requires_sdk: \">=1.8,<2.0\"\nlicense: MIT\n---\n\n# Jinkō Trial SDK Workflows\n\nUse this skill for trial setup, sanity checks, run/poll, and result download. Keep creation of upstream assets in their dedicated skills: `jinko-model`, `jinko-vpop`, `jinko-protocol`, `jinko-data-table`, and `jinko-output-set` (simple and advanced output sets).\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 Trial\n\nA minimum trial is composed of:\n\n- A computational model.\n- Solving options, using the model defaults unless an override is explicitly provided.\n- A simple output set, defined as the list of component time series that should be saved and visualized. Use `model.time_dependent_ids()` as the default output ids when the user has not specified ids.\n\nOptional trial inputs:\n\n- Vpop.\n- Protocol design.\n- Data table design(s).\n- Advanced output set/scoring design.\n\n## Sanity Constraints\n\nDo not launch while trial sanity reports errors. **Always confirm this by calling `trial.sanity()` — not by re-running standalone checks from upstream skills (`validate_scoring_formula`, `client.validate_scoring_condition`, `scoring_design.diagnostics`, etc.).** Those checks only validate an asset in isolation; they cannot see how it behaves once bound to this concrete trial. `trial.sanity()` is the same trial-context check the Jinkō UI runs before launch and is the source of truth for launch-readiness — see `references/trial-setup.md` for the pre-launch workflow and `errors after standalone validation passed` troubleshooting.\n\nTypical constraints surfaced by trial sanity:\n\n- The computational model cannot have sanity errors.\n- All descriptors in the protocol must correspond to model components.\n- All descriptors in the vpop must correspond to model components.\n- All descriptors in data-table `obsId` columns must correspond to model components.\n- All data-table `armScope` values must correspond to protocol arms when a protocol is used.\n- The advanced output set (scoring design) must resolve cleanly against this trial's model outputs and simple output set — this can fail here (`ADVANCED_OUTPUTS_ERRORS`) even when `jinko-output-set`'s standalone validation passed.\n\nIf sanity errors are reported, show them and ask whether the user wants help fixing the upstream asset.\n\n## Core SDK Methods\n\n- Create simple output set: `client.create_simple_output_set(model, model.time_dependent_ids())` unless explicit output ids were requested. See `jinko-output-set` for measure shapes and advanced output sets (constraints/scalars/objectives).\n- Create trial: `client.create_trial(model, data_tables=..., vpop=..., protocol=..., simple_output_set=..., advanced_output_set=...)`.\n- Edit solving options after creation: `trial.edit_solving_options({...})`; use `trial.get_solving_options()` to inspect them. For solving times, prefer `trial.get_solving_times()` / `trial.set_solving_times(t_max=timedelta(...), t_step=timedelta(...), additional_periods=[{\"t_max\":timedelta(...), ...])`.\n- Pre-launch sanity check (required before `run()`): `trial.sanity()` — returns a raw `dict` (the JSON response, not a typed object) with one component report per key (`model`, `protocol`, `vpop`, `outputSet` for the simple output set, `scorings` for the advanced output set, `dataTables`, `solvingTimes`), each with `[\"sanity\"][\"errors\"]`/`[\"sanity\"][\"warnings\"]` and `[\"sanity\"][\"componentsSanity\"]` for per-component detail.\n- Run trial: `trial.run()`.\n- Poll: `trial.wait_until_completed(timeout=1800)`.\n- Discover time series: `trial.output_ids()`.\n- Discover scalars and arms: `trial.results.summary()`.\n- Download time series as pandas when available: `trial.results.timeseries({...}).to_dataframe()`.\n- Download scalars as pandas when available: `trial.results.scalars([...]).to_dataframe()`.\n- Without pandas, use `TabularDownload.raw_bytes`; result payloads may be CSV or zipped CSV.\n\nWhen data tables are attached, pass them through the supported `data_tables=` argument. Require each data table to report `metadata.public.validForFitnessFunction is True` before creating the trial; reject `False`, missing, and malformed values.\n\n## Project Folder Hygiene\n\n- Prefer creating output sets and trials inside a dedicated Jinkō folder instead of the project root. At the start of a workflow, ask for or propose a folder name, for example `YYYY-MM-DD-<experiment-name>`.\n- Reuse an existing exact-match folder when possible: `client.get_folder_by_name(name, exact_match_only=True)`.\n- If the folder does not exist, create it only after user confirmation or when a script is run with `--apply`.\n- Resolve one folder object or folder id, then pass `folder=folder` to trial creation calls. For simple output sets, create them first and then move them with `output_set.move_to_folder(folder)`.\n\n## Retry And Reuse Hygiene\n\n- For one user request, keep one named local setup script and update it rather than creating `run_v2.py`, `run_v3.py`, and similar copies.\n- When a trial or output set fails validation, inspect and repair the existing item first. Re-run `trial.sanity()` after the repair.\n- Create a new trial or output set only when the user requests an independent scenario, the existing item is immutable/incompatible, or a repair would destroy a result the user asked to preserve. State the reason when creating a replacement.\n\n## Bundled Scripts\n\n- `scripts/find_completed_trial_results.py`: lists trials, finds the first completed one, prints its summary, and downloads TimeSeries and Scalar results to pandas DataFrames.\n- `scripts/setup_and_run_trial.py`: creates a simple output set, creates a trial from model plus optional assets, sanity-checks, optionally runs, polls, and optionally downloads results.\n\nExamples:\n\n```bash\npython skills/jinko-trial/scripts/find_completed_trial_results.py --limit 20 --output-dir trial-results\npython skills/jinko-trial/scripts/setup_and_run_trial.py --model-sid cm-...\npython skills/jinko-trial/scripts/setup_and_run_trial.py --model-sid cm-... --output-id Drug\npython skills/jinko-trial/scripts/setup_and_run_trial.py --model-sid cm-... --output-id Drug --folder 2026-06-15-trial-run --create-folder --apply --run\npython skills/jinko-trial/scripts/setup_and_run_trial.py --model-sid cm-... --output-id Drug --vpop-sid vp-... --protocol-design-sid pd-... --data-table-sid dt-... --apply --run --download-results\n```\n\n## Reference Routing\n\n- Read `references/trial-setup.md` for trial creation, the safe pre-launch sanity-check workflow, and troubleshooting `ADVANCED_OUTPUTS_ERRORS`/\"The following advanced outputs have errors\".\n- Read `references/trial-results.md` for completed-trial discovery and result downloads.\n"
}

SHA-256: 65c024b2bac801c96d9cb661c1724da53d728d8593904ee82231bd746f387ddf