{
 "about": {
  "method": "assay-drift",
  "recordedOn": "2026-10-13",
  "script": "pipeline/assay-analyser/oracles/assay_drift.py",
  "scriptSha256": "66ea0d9cff4fa5ce878a91fa53f64e200982b17d2f91129384db6e4b5b4db9b4",
  "origin": "Self-constructed series of log10 C50, Z' and runs; no fit is run here",
  "environment": {
   "image": "ghcr.io/biotechmat/drybench/oracle-env:d6cd987911c17af3@sha256:52c2da8b4a62b2a916a0a44ef276834f8c473115a3d4d73b9809ce4cbd4c8e2c",
   "python": "3.11.15"
  },
  "crossCheck": {
   "ran": false,
   "why": "R qcc and trend run in the oracle image when Rscript is present"
  },
  "tolerances": {
   "centre, MRbar, sigma and limits": "1e-9 relative",
   "Pettitt K, location and flag": "exact",
   "p": "1e-6 relative",
   "statuses, gaps, outside and left-out runs": "exact"
  }
 },
 "constants": {
  "d2": "1.128",
  "minPoints": 3,
  "minLimits": 8,
  "minTest": 10,
  "alpha": 0.05
 },
 "cases": [
  {
   "name": "stable",
   "points": [
    {
     "run": "Run 1",
     "value": -6.02
    },
    {
     "run": "Run 2",
     "value": -5.97
    },
    {
     "run": "Run 3",
     "value": -6.05
    },
    {
     "run": "Run 4",
     "value": -6.01
    },
    {
     "run": "Run 5",
     "value": -5.96
    },
    {
     "run": "Run 6",
     "value": -6.03
    },
    {
     "run": "Run 7",
     "value": -5.99
    },
    {
     "run": "Run 8",
     "value": -6.04
    },
    {
     "run": "Run 9",
     "value": -5.98
    },
    {
     "run": "Run 10",
     "value": -6.0
    },
    {
     "run": "Run 11",
     "value": -6.02
    },
    {
     "run": "Run 12",
     "value": -5.97
    },
    {
     "run": "Run 13",
     "value": -6.01
    },
    {
     "run": "Run 14",
     "value": -5.99
    }
   ],
   "expected": {
    "n": 14,
    "gaps": [],
    "centre": -6.002857142857143,
    "mrBar": 0.045384615384615384,
    "status": "limits",
    "sigma": 0.04023458810692853,
    "ucl": -5.882153378536358,
    "lcl": -6.123560907177929,
    "outside": [],
    "pettitt": {
     "K": 14,
     "location": 8,
     "lastRunBefore": "Run 8",
     "p": 1.0,
     "flagged": false,
     "direction": "higher"
    }
   }
  },
  {
   "name": "step-shift-at-run-6",
   "points": [
    {
     "run": "Run 1",
     "value": -6.02
    },
    {
     "run": "Run 2",
     "value": -5.97
    },
    {
     "run": "Run 3",
     "value": -6.05
    },
    {
     "run": "Run 4",
     "value": -6.01
    },
    {
     "run": "Run 5",
     "value": -5.96
    },
    {
     "run": "Run 6",
     "value": -6.03
    },
    {
     "run": "Run 7",
     "value": -5.71
    },
    {
     "run": "Run 8",
     "value": -5.66
    },
    {
     "run": "Run 9",
     "value": -5.74
    },
    {
     "run": "Run 10",
     "value": -5.69
    },
    {
     "run": "Run 11",
     "value": -5.72
    },
    {
     "run": "Run 12",
     "value": -5.68
    },
    {
     "run": "Run 13",
     "value": -5.7
    },
    {
     "run": "Run 14",
     "value": -5.73
    }
   ],
   "expected": {
    "n": 14,
    "gaps": [],
    "centre": -5.833571428571428,
    "mrBar": 0.07,
    "status": "limits",
    "sigma": 0.06205673758865248,
    "ucl": -5.647401215805471,
    "lcl": -6.019741641337386,
    "outside": [
     "Run 1",
     "Run 3",
     "Run 6"
    ],
    "pettitt": {
     "K": 48,
     "location": 6,
     "lastRunBefore": "Run 6",
     "p": 0.01815346847883241,
     "flagged": true,
     "direction": "higher"
    }
   }
  },
  {
   "name": "single-outlier",
   "points": [
    {
     "run": "Run 1",
     "value": -6.02
    },
    {
     "run": "Run 2",
     "value": -5.97
    },
    {
     "run": "Run 3",
     "value": -6.05
    },
    {
     "run": "Run 4",
     "value": -6.01
    },
    {
     "run": "Run 5",
     "value": -5.96
    },
    {
     "run": "Run 6",
     "value": -6.03
    },
    {
     "run": "Run 7",
     "value": -5.99
    },
    {
     "run": "Run 8",
     "value": -5.4
    },
    {
     "run": "Run 9",
     "value": -5.98
    },
    {
     "run": "Run 10",
     "value": -6.0
    },
    {
     "run": "Run 11",
     "value": -6.02
    },
    {
     "run": "Run 12",
     "value": -5.97
    },
    {
     "run": "Run 13",
     "value": -6.01
    },
    {
     "run": "Run 14",
     "value": -5.99
    }
   ],
   "expected": {
    "n": 14,
    "gaps": [],
    "centre": -5.957142857142857,
    "mrBar": 0.12692307692307692,
    "status": "limits",
    "sigma": 0.11252045826513912,
    "ucl": -5.6195814823474395,
    "lcl": -6.294704231938274,
    "outside": [
     "Run 8"
    ],
    "pettitt": {
     "K": 17,
     "location": 4,
     "lastRunBefore": "Run 4",
     "p": 1.0,
     "flagged": false,
     "direction": "higher"
    }
   }
  },
  {
   "name": "linear-trend",
   "points": [
    {
     "run": "Run 1",
     "value": -6.21
    },
    {
     "run": "Run 2",
     "value": -6.155
    },
    {
     "run": "Run 3",
     "value": -6.14
    },
    {
     "run": "Run 4",
     "value": -6.085
    },
    {
     "run": "Run 5",
     "value": -6.07
    },
    {
     "run": "Run 6",
     "value": -6.015
    },
    {
     "run": "Run 7",
     "value": -6.0
    },
    {
     "run": "Run 8",
     "value": -5.945
    },
    {
     "run": "Run 9",
     "value": -5.93
    },
    {
     "run": "Run 10",
     "value": -5.875
    },
    {
     "run": "Run 11",
     "value": -5.86
    },
    {
     "run": "Run 12",
     "value": -5.805
    },
    {
     "run": "Run 13",
     "value": -5.79
    },
    {
     "run": "Run 14",
     "value": -5.735
    }
   ],
   "expected": {
    "n": 14,
    "gaps": [],
    "centre": -5.9725,
    "mrBar": 0.03653846153846154,
    "status": "limits",
    "sigma": 0.03239225313693399,
    "ucl": -5.875323240589198,
    "lcl": -6.069676759410802,
    "outside": [
     "Run 1",
     "Run 2",
     "Run 3",
     "Run 4",
     "Run 5",
     "Run 10",
     "Run 11",
     "Run 12",
     "Run 13",
     "Run 14"
    ],
    "pettitt": {
     "K": 49,
     "location": 7,
     "lastRunBefore": "Run 7",
     "p": 0.014893166141848676,
     "flagged": true,
     "direction": "higher"
    }
   }
  },
  {
   "name": "seven-runs",
   "points": [
    {
     "run": "Run 1",
     "value": -6.02
    },
    {
     "run": "Run 2",
     "value": -5.97
    },
    {
     "run": "Run 3",
     "value": -6.05
    },
    {
     "run": "Run 4",
     "value": -6.01
    },
    {
     "run": "Run 5",
     "value": -5.96
    },
    {
     "run": "Run 6",
     "value": -6.03
    },
    {
     "run": "Run 7",
     "value": -5.99
    }
   ],
   "expected": {
    "n": 7,
    "gaps": [],
    "centre": -6.0042857142857144,
    "status": "no-limits"
   }
  },
  {
   "name": "nine-runs",
   "points": [
    {
     "run": "Run 1",
     "value": -6.02
    },
    {
     "run": "Run 2",
     "value": -5.97
    },
    {
     "run": "Run 3",
     "value": -6.05
    },
    {
     "run": "Run 4",
     "value": -6.01
    },
    {
     "run": "Run 5",
     "value": -5.96
    },
    {
     "run": "Run 6",
     "value": -6.03
    },
    {
     "run": "Run 7",
     "value": -5.99
    },
    {
     "run": "Run 8",
     "value": -6.04
    },
    {
     "run": "Run 9",
     "value": -5.98
    }
   ],
   "expected": {
    "n": 9,
    "gaps": [],
    "centre": -6.0055555555555555,
    "mrBar": 0.055,
    "status": "limits",
    "sigma": 0.04875886524822695,
    "ucl": -5.859278959810875,
    "lcl": -6.151832151300236,
    "outside": []
   }
  },
  {
   "name": "all-withheld",
   "points": [
    {
     "run": "Run 1",
     "value": null,
     "reason": "withheld"
    },
    {
     "run": "Run 2",
     "value": null,
     "reason": "withheld"
    },
    {
     "run": "Run 3",
     "value": null,
     "reason": "withheld"
    },
    {
     "run": "Run 4",
     "value": null,
     "reason": "withheld"
    },
    {
     "run": "Run 5",
     "value": null,
     "reason": "withheld"
    },
    {
     "run": "Run 6",
     "value": null,
     "reason": "withheld"
    }
   ],
   "expected": {
    "n": 0,
    "gaps": [
     {
      "run": "Run 1",
      "reason": "withheld"
     },
     {
      "run": "Run 2",
      "reason": "withheld"
     },
     {
      "run": "Run 3",
      "reason": "withheld"
     },
     {
      "run": "Run 4",
      "reason": "withheld"
     },
     {
      "run": "Run 5",
      "reason": "withheld"
     },
     {
      "run": "Run 6",
      "reason": "withheld"
     }
    ],
    "status": "too-few-runs"
   }
  },
  {
   "name": "constant",
   "points": [
    {
     "run": "Run 1",
     "value": 0.71
    },
    {
     "run": "Run 2",
     "value": 0.71
    },
    {
     "run": "Run 3",
     "value": 0.71
    },
    {
     "run": "Run 4",
     "value": 0.71
    },
    {
     "run": "Run 5",
     "value": 0.71
    },
    {
     "run": "Run 6",
     "value": 0.71
    },
    {
     "run": "Run 7",
     "value": 0.71
    },
    {
     "run": "Run 8",
     "value": 0.71
    },
    {
     "run": "Run 9",
     "value": 0.71
    },
    {
     "run": "Run 10",
     "value": 0.71
    }
   ],
   "expected": {
    "n": 10,
    "gaps": [],
    "centre": 0.71,
    "mrBar": 0.0,
    "status": "no-variation",
    "pettitt": {
     "K": 0,
     "location": 1,
     "lastRunBefore": "Run 1",
     "p": 1.0,
     "flagged": false,
     "direction": "lower"
    }
   }
  },
  {
   "name": "gaps-inside",
   "points": [
    {
     "run": "Run 1",
     "value": -6.02
    },
    {
     "run": "Run 2",
     "value": -5.97
    },
    {
     "run": "Run 3",
     "value": -6.05
    },
    {
     "run": "Run 4",
     "value": -6.01
    },
    {
     "run": "Run 5",
     "value": null,
     "reason": "withheld"
    },
    {
     "run": "Run 6",
     "value": -5.96
    },
    {
     "run": "Run 7",
     "value": -6.03
    },
    {
     "run": "Run 8",
     "value": -5.99
    },
    {
     "run": "Run 9",
     "value": -6.04
    },
    {
     "run": "Run 10",
     "value": -5.98
    },
    {
     "run": "Run 11",
     "value": null,
     "reason": "withheld"
    },
    {
     "run": "Run 12",
     "value": null,
     "reason": "withheld"
    },
    {
     "run": "Run 13",
     "value": -6.0
    },
    {
     "run": "Run 14",
     "value": -6.02
    },
    {
     "run": "Run 15",
     "value": -5.97
    },
    {
     "run": "Run 16",
     "value": -6.01
    },
    {
     "run": "Run 17",
     "value": -5.99
    }
   ],
   "expected": {
    "n": 14,
    "gaps": [
     {
      "run": "Run 5",
      "reason": "withheld"
     },
     {
      "run": "Run 11",
      "reason": "withheld"
     },
     {
      "run": "Run 12",
      "reason": "withheld"
     }
    ],
    "centre": -6.002857142857143,
    "mrBar": 0.045384615384615384,
    "status": "limits",
    "sigma": 0.04023458810692853,
    "ucl": -5.882153378536358,
    "lcl": -6.123560907177929,
    "outside": [],
    "pettitt": {
     "K": 14,
     "location": 8,
     "lastRunBefore": "Run 9",
     "p": 1.0,
     "flagged": false,
     "direction": "higher"
    }
   }
  },
  {
   "name": "mixed-relative-and-absolute",
   "series": "ic50",
   "runs": [
    {
     "run": "Run 1",
     "kind": "rel",
     "scale": "percent",
     "norm": "percent",
     "weighting": "none",
     "log": -6.01
    },
    {
     "run": "Run 2",
     "kind": "rel",
     "scale": "percent",
     "norm": "percent",
     "weighting": "none",
     "log": -5.98
    },
    {
     "run": "Run 3",
     "kind": "abs",
     "scale": "percent",
     "norm": "percent",
     "weighting": "none",
     "log": -6.1
    },
    {
     "run": "Run 4",
     "kind": "rel",
     "scale": "percent",
     "norm": "percent",
     "weighting": "none",
     "log": null,
     "reason": "not bracketed"
    },
    {
     "run": "Run 5",
     "kind": "rel",
     "scale": "percent",
     "norm": "percent",
     "weighting": "1/y2",
     "log": -6.0
    },
    {
     "run": "Run 6",
     "kind": "rel",
     "scale": "percent",
     "norm": "percent",
     "weighting": "none",
     "log": -6.04
    }
   ],
   "expected": {
    "points": [
     {
      "run": "Run 1",
      "value": -6.01
     },
     {
      "run": "Run 2",
      "value": -5.98
     },
     {
      "run": "Run 4",
      "value": null,
      "reason": "not bracketed"
     },
     {
      "run": "Run 6",
      "value": -6.04
     }
    ],
    "leftOut": [
     {
      "run": "Run 3",
      "reason": "different-quantity"
     },
     {
      "run": "Run 5",
      "reason": "different-quantity"
     }
    ],
    "chart": {
     "n": 3,
     "gaps": [
      {
       "run": "Run 4",
       "reason": "not bracketed"
      }
     ],
     "centre": -6.01,
     "status": "no-limits"
    }
   }
  },
  {
   "name": "zprime-with-a-failed-plate",
   "series": "zprime",
   "runs": [
    {
     "run": "Run 1",
     "plates": [
      0.72,
      0.68
     ]
    },
    {
     "run": "Run 2",
     "plates": [
      0.7
     ]
    },
    {
     "run": "Run 3",
     "plates": [
      null,
      0.66
     ]
    },
    {
     "run": "Run 4",
     "plates": [
      null
     ]
    },
    {
     "run": "Run 5",
     "plates": [
      0.74,
      0.7,
      0.69
     ]
    }
   ],
   "expected": {
    "points": [
     {
      "run": "Run 1",
      "value": 0.7
     },
     {
      "run": "Run 2",
      "value": 0.7
     },
     {
      "run": "Run 3",
      "value": 0.66
     },
     {
      "run": "Run 4",
      "value": null,
      "reason": "no-valid-zprime"
     },
     {
      "run": "Run 5",
      "value": 0.71
     }
    ],
    "leftOut": [],
    "chart": {
     "n": 4,
     "gaps": [
      {
       "run": "Run 4",
       "reason": "no-valid-zprime"
      }
     ],
     "centre": 0.6925,
     "status": "no-limits"
    }
   }
  }
 ]
}
