{
 "about": {
  "method": "outlier-candidates",
  "origin": "Self-constructed data with seeded noise and planted departures; not experimental data",
  "ruling": "CSO memo of 11 October 2026, item 7 (docs/board/memos/2026-10-11-cso-assay-depth-stage.md)",
  "alpha": 0.05,
  "minimumResidualDf": 6,
  "grubbsMinimumN": 6,
  "zeroResidual": 1e-20,
  "fourPL": "y = bottom + (top - bottom) / (1 + 10^((logIC50 - x) * hill)), x = log10 concentration; fitted by curve_fit (lm, tolerances 1e-15); the engine is tested on these estimates",
  "tolerances": {
   "leverage, residuals, internal and external t": "1e-6 relative (1e-9 absolute for a residual)",
   "p and adjusted p, G, critical values": "1e-6 relative",
   "candidates, indices and withheld reasons": "exact"
  },
  "recordedOn": "2026-10-13",
  "script": "pipeline/assay-analyser/oracles/outliers_scipy.py",
  "scriptSha256": "db14b97e5cf9e09bbc81a8268f561256deca44c3202e045b50a7a78a394d7deb",
  "helper": {
   "script": "pipeline/assay-analyser/oracles/stage_a_oracle.py",
   "sha256": "492d85ca2fa6750db80b1c64214fd4a0b13cd4c588267244f6262c504c73e3e8"
  },
  "environment": {
   "image": "ghcr.io/biotechmat/drybench/oracle-env:11b8a5e4456df7eb@sha256:7e69891ca1d9f24838660e0a9887bdb654ce7771d2f2ac7e7275e9b1eb3b6a09",
   "r": "R version 4.4.3 (2025-02-28)",
   "packages": {
    "jsonlite": "2.0.0",
    "car": "3.1-5",
    "outliers": "0.15"
   },
   "python": "3.11.15",
   "numpy": "2.0.2",
   "scipy": "1.13.1",
   "recordedOn": "2026-10-13",
   "cpu": "INTEL(R) XEON(R) PLATINUM 8573C",
   "cpuClass": "x86-64-v3",
   "simd": [
    "SSSE3",
    "SSE41",
    "POPCNT",
    "SSE42",
    "AVX",
    "F16C",
    "FMA3",
    "AVX2"
   ],
   "openblasCore": "Haswell",
   "threads": 1
  },
  "crossCheck": {
   "tool": "R stats::rstudent, hatvalues; car::outlierTest; outliers::grubbs.test",
   "version": "R version 4.4.3 (2025-02-28)",
   "car": "3.1-5",
   "outliers": "0.15",
   "script": "pipeline/assay-analyser/oracles/r/outlier_checks.R",
   "scriptSha256": "59a2ec78b788450f5cf561e15b6a19e6477f745adee5624ba92d2046bf901c5d",
   "ran": true,
   "settings": "lm(y ~ x); outlierTest(cutoff = Inf, n.max = Inf) for every Bonferroni p; grubbs.test(type = 10, two.sided = TRUE) for G, and its p only where 2 res <= 1 (the package folds a doubled p above 1 to 2 - p; the CSO's ruling 1(e) of 13 October 2026, as amended); car::outlierTest(lm(x ~ 1)) as the gate on the Grubbs p in every group",
   "notCompared": "the 4PL cases (R has no hat matrix for nls; the SciPy numeric Jacobian is the oracle there)",
   "tolerances": {
    "all": "1e-6 relative"
   },
   "cases": 5,
   "agreeing": 5,
   "result": [
    {
     "case": "linear-planted",
     "rstudentRelative": 7.187238866441206e-14,
     "hatRelative": 5.647656255701885e-16,
     "bonferroniRelative": 1.4390242344661603e-14,
     "agrees": true
    },
    {
     "case": "linear-clean",
     "rstudentRelative": 1.5743002032714418e-14,
     "hatRelative": 2.1807952269422717e-15,
     "bonferroniRelative": 9.780417671229223e-15,
     "agrees": true
    },
    {
     "case": "control-planted",
     "GRelative": 5.645219187384613e-16,
     "carBonferroni": 0.00193139786501834,
     "carRelative": 2.907825132871702e-14,
     "packageP": 0.00193139786501817,
     "packageRelative": 5.894240134199396e-14,
     "agrees": true
    },
    {
     "case": "control-clean",
     "GRelative": 4.820877115542828e-16,
     "carBonferroni": 0.273148601606079,
     "carRelative": 5.0806732036023254e-15,
     "packageP": 0.273148601606078,
     "packageRelative": 1.422588497008651e-15,
     "agrees": true
    },
    {
     "case": "control-even",
     "GRelative": 4.661965561750348e-16,
     "carBonferroni": 1.07179676972447,
     "carRelative": 0.0,
     "packageP": 0.928203230275511,
     "packagePNote": "outliers two-sided fold (2 res > 1); engine reports the bound",
     "agrees": true
    }
   ]
  }
 },
 "oracle": {
  "engine": "NumPy (hat matrix by inversion), SciPy curve_fit, scipy.stats.t",
  "jacobian": "central finite differences, step 1e-6 x max(1, |parameter|)"
 },
 "cases": [
  {
   "name": "linear-planted",
   "about": "Twelve points on a line with one raised by 3 (ten residual SDs)",
   "kind": "linear",
   "x": [
    1.0,
    2.0,
    3.0,
    4.0,
    5.0,
    6.0,
    7.0,
    8.0,
    9.0,
    10.0,
    11.0,
    12.0
   ],
   "y": [
    2.921999,
    4.546979,
    6.245338,
    8.928321,
    10.481744,
    12.50424,
    17.776189,
    16.257799,
    18.852831,
    19.925738,
    22.756667,
    24.71796
   ],
   "intercept": 0.8347664696969654,
   "slope": 1.998700094405595,
   "result": {
    "status": "tested",
    "n": 12,
    "p": 2,
    "df": 9,
    "threshold": 3.807878444724721,
    "observations": [
     {
      "index": 0,
      "residual": 0.08853243589743931,
      "leverage": 0.2948717948717948,
      "internal": 0.1028380196006694,
      "external": 0.09761234099181708,
      "p": 0.9243794201292655,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 1,
      "residual": -0.2851876585081552,
      "leverage": 0.2249417249417249,
      "internal": -0.3159722066616698,
      "external": -0.30126522003058137,
      "p": 0.7700566557544837,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 2,
      "residual": -0.585528752913751,
      "leverage": 0.16899766899766902,
      "internal": -0.6265163941841603,
      "external": -0.6063857865535213,
      "p": 0.5592411050341758,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 3,
      "residual": 0.09875415268065524,
      "leverage": 0.12703962703962704,
      "internal": 0.10309638481357901,
      "external": 0.09785783807382681,
      "p": 0.9241899050998252,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 4,
      "residual": -0.34652294172494,
      "leverage": 0.09906759906759906,
      "internal": -0.3560993852646502,
      "external": -0.33998805606173815,
      "p": 0.7416657412166563,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 5,
      "residual": -0.3227270361305372,
      "leverage": 0.08508158508158509,
      "internal": -0.32910122546118664,
      "external": -0.31391744660910464,
      "p": 0.760737929943496,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 6,
      "residual": 2.950521869463868,
      "leverage": 0.0850815850815851,
      "internal": 3.0087976967564325,
      "external": 9.27487305839463,
      "p": 6.670983368886746e-06,
      "adjustedP": 8.005180042664095e-05,
      "candidate": true
     },
     {
      "index": 7,
      "residual": -0.5665682249417259,
      "leverage": 0.0990675990675991,
      "internal": -0.5822257989844137,
      "external": -0.5619547730682609,
      "p": 0.5878665313886993,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 8,
      "residual": 0.029763680652678204,
      "leverage": 0.12703962703962707,
      "internal": 0.031072393319598362,
      "external": 0.029479283710137864,
      "p": 0.9771256988038874,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 9,
      "residual": -0.8960294137529168,
      "leverage": 0.16899766899766905,
      "internal": -0.9587524346052326,
      "external": -0.9544777922730174,
      "p": 0.364773571630583,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 10,
      "residual": -0.06380050815851135,
      "leverage": 0.22494172494172504,
      "internal": -0.0706874464850106,
      "external": -0.0670767601290658,
      "p": 0.9479870853743573,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 11,
      "residual": -0.10120760256410577,
      "leverage": 0.29487179487179493,
      "internal": -0.11756131310203008,
      "external": -0.11160560407099102,
      "p": 0.9135855486307973,
      "adjustedP": 1.0,
      "candidate": false
     }
    ]
   }
  },
  {
   "name": "linear-clean",
   "about": "Ten points on a falling line, noise only",
   "kind": "linear",
   "x": [
    1.0,
    2.0,
    3.0,
    4.0,
    5.0,
    6.0,
    7.0,
    8.0,
    9.0,
    10.0
   ],
   "y": [
    0.541957,
    -0.260579,
    -1.223104,
    -2.513341,
    -3.060066,
    -3.574609,
    -4.303203,
    -5.560401,
    -6.44525,
    -6.769796
   ],
   "intercept": 1.2387970666666674,
   "slope": -0.8282975030303035,
   "result": {
    "status": "tested",
    "n": 10,
    "p": 2,
    "df": 7,
    "threshold": 4.029337177642761,
    "observations": [
     {
      "index": 0,
      "residual": 0.13145743636363605,
      "leverage": 0.34545454545454546,
      "internal": 0.6449545404708215,
      "external": 0.6196236692094899,
      "p": 0.5551295218147965,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 1,
      "residual": 0.1572189393939395,
      "leverage": 0.24848484848484853,
      "internal": 0.7198629856154075,
      "external": 0.6962991978591765,
      "p": 0.5086944692960337,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 2,
      "residual": 0.02299144242424278,
      "leverage": 0.17575757575757575,
      "internal": 0.10052002505400773,
      "external": 0.09408731009505258,
      "p": 0.9276763046946426,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 3,
      "residual": -0.4389480545454538,
      "leverage": 0.1272727272727273,
      "internal": -1.8650380912169646,
      "external": -2.320540087221824,
      "p": 0.05335199774839903,
      "adjustedP": 0.5335199774839903,
      "candidate": false
     },
     {
      "index": 4,
      "residual": -0.15737555151515004,
      "leverage": 0.10303030303030306,
      "internal": -0.6595720308221154,
      "external": -0.6344651865917009,
      "p": 0.545945703163105,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 5,
      "residual": 0.15637895151515258,
      "leverage": 0.10303030303030306,
      "internal": 0.655395209965336,
      "external": 0.6302186209698769,
      "p": 0.5485639933510912,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 6,
      "residual": 0.25608245454545653,
      "leverage": 0.1272727272727273,
      "internal": 1.0880639002129504,
      "external": 1.102642949507486,
      "p": 0.3066423296676962,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 7,
      "residual": -0.1728180424242396,
      "leverage": 0.17575757575757578,
      "internal": -0.7555712962120195,
      "external": -0.7334255202475385,
      "p": 0.4871294866760405,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 8,
      "residual": -0.2293695393939359,
      "leverage": 0.24848484848484853,
      "internal": -1.050221061621755,
      "external": -1.0580312761111568,
      "p": 0.32518018032576795,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 9,
      "residual": 0.27438196363636713,
      "leverage": 0.3454545454545455,
      "internal": 1.346168753672172,
      "external": 1.431790082712802,
      "p": 0.19530187848335895,
      "adjustedP": 1.0,
      "candidate": false
     }
    ]
   }
  },
  {
   "name": "linear-exact",
   "about": "Eight points exactly on a line: no residual scale",
   "kind": "linear",
   "x": [
    1.0,
    2.0,
    3.0,
    4.0,
    5.0,
    6.0,
    7.0,
    8.0
   ],
   "y": [
    1.75,
    2.0,
    2.25,
    2.5,
    2.75,
    3.0,
    3.25,
    3.5
   ],
   "intercept": 1.5000000000000009,
   "slope": 0.24999999999999967,
   "result": {
    "status": "withheld",
    "reason": "zero-residual",
    "n": 8,
    "p": 2
   }
  },
  {
   "name": "linear-seven",
   "about": "Seven points: n - p = 5, below the floor of six",
   "kind": "linear",
   "x": [
    1.0,
    2.0,
    3.0,
    4.0,
    5.0,
    6.0,
    7.0
   ],
   "y": [
    2.921999,
    4.546979,
    6.245338,
    8.928321,
    10.481744,
    12.50424,
    14.776189
   ],
   "intercept": 0.6701874285714305,
   "slope": 1.9897677857142857,
   "result": {
    "status": "withheld",
    "reason": "degrees-of-freedom",
    "n": 7,
    "p": 2
   }
  },
  {
   "name": "4pl-planted",
   "about": "Eight concentrations in duplicate, one replicate raised by 25 percent of the span",
   "kind": "4pl",
   "x": [
    -9.0,
    -9.0,
    -8.5,
    -8.5,
    -8.0,
    -8.0,
    -7.5,
    -7.5,
    -7.0,
    -7.0,
    -6.5,
    -6.5,
    -6.0,
    -6.0,
    -5.5,
    -5.5
   ],
   "y": [
    98.35774,
    99.567809,
    99.641266,
    100.852773,
    94.970167,
    98.597491,
    97.671398,
    94.549401,
    75.812919,
    104.537101,
    57.962983,
    55.096754,
    24.691782,
    23.641125,
    12.358501,
    9.894122
   ],
   "free": [
    "top",
    "bottom",
    "logIC50",
    "hill"
   ],
   "fixed": {},
   "estimates": {
    "top": 98.79664505290764,
    "bottom": 9.439583038625349,
    "logIC50": -6.457775788777295,
    "hill": -1.634933376378192
   },
   "result": {
    "status": "tested",
    "n": 16,
    "p": 4,
    "df": 11,
    "threshold": 3.7654430288789307,
    "observations": [
     {
      "index": 0,
      "residual": -0.4326715614195962,
      "leverage": 0.14353420497215977,
      "internal": -0.07573123740471034,
      "external": -0.0725244726593513,
      "p": 0.9434864399145302,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 1,
      "residual": 0.7773974385803939,
      "leverage": 0.14353420497215977,
      "internal": 0.13606919249738123,
      "external": 0.13037695168951008,
      "p": 0.8986219161870821,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 2,
      "residual": 0.8855497825252172,
      "leverage": 0.14038372518691208,
      "internal": 0.1547149850779676,
      "external": 0.14827627987672512,
      "p": 0.884807918574735,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 3,
      "residual": 2.0970567825252147,
      "leverage": 0.14038372518691208,
      "internal": 0.36637817005708573,
      "external": 0.3527589351859952,
      "p": 0.7309357105937395,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 4,
      "residual": -3.558320655241687,
      "leverage": 0.12686490585540214,
      "internal": -0.616845034564074,
      "external": -0.6001760409635427,
      "p": 0.5605498916395709,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 5,
      "residual": 0.06900334475831471,
      "leverage": 0.12686490585540214,
      "internal": 0.011961926623947922,
      "external": 0.011452741092057314,
      "p": 0.991067309596374,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 6,
      "residual": 0.6071961017124323,
      "leverage": 0.10728024394468003,
      "internal": 0.10409817491349765,
      "external": 0.0997114462032852,
      "p": 0.9223674386075358,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 7,
      "residual": -2.514800898287561,
      "leverage": 0.10728024394468003,
      "internal": -0.43113943426886703,
      "external": -0.4160192468748275,
      "p": 0.6853967970936674,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 8,
      "residual": -12.713003154258402,
      "leverage": 0.31623037522555336,
      "internal": -2.49037625216114,
      "external": -3.4302140784422406,
      "p": 0.00562093051883249,
      "adjustedP": 0.08993488830131983,
      "candidate": false
     },
     {
      "index": 9,
      "residual": 16.01117884574161,
      "leverage": 0.31623037522555336,
      "internal": 3.136462650304889,
      "external": 7.073724776177705,
      "p": 2.062118635442921e-05,
      "adjustedP": 0.00032993898167086737,
      "candidate": true
     },
     {
      "index": 10,
      "residual": 0.30136367606194625,
      "leverage": 0.38292257034354127,
      "internal": 0.06214308187575183,
      "external": 0.05950704700492392,
      "p": 0.9536155853052797,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 11,
      "residual": -2.564865323938058,
      "leverage": 0.38292257034354127,
      "internal": -0.5288913312598318,
      "external": -0.5123820532708084,
      "p": 0.618514740312254,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 12,
      "residual": 1.7197264957518534,
      "leverage": 0.33808711717073825,
      "internal": 0.34239757424004086,
      "external": 0.32943389999358186,
      "p": 0.7480154023964767,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 13,
      "residual": 0.6690694957518524,
      "leverage": 0.33808711717073825,
      "internal": 0.13321174786185164,
      "external": 0.12763494544351647,
      "p": 0.9007413119178156,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 14,
      "residual": 0.555248927031256,
      "leverage": 0.444696857301014,
      "internal": 0.1206964164925217,
      "external": 0.11562822679913884,
      "p": 0.9100310296687928,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 15,
      "residual": -1.909130072968745,
      "leverage": 0.444696857301014,
      "internal": -0.4149943335459394,
      "external": -0.4002090413758414,
      "p": 0.6966650663877194,
      "adjustedP": 1.0,
      "candidate": false
     }
    ]
   }
  },
  {
   "name": "4pl-clean",
   "about": "Eight concentrations in duplicate, noise only",
   "kind": "4pl",
   "x": [
    -9.0,
    -9.0,
    -8.5,
    -8.5,
    -8.0,
    -8.0,
    -7.5,
    -7.5,
    -7.0,
    -7.0,
    -6.5,
    -6.5,
    -6.0,
    -6.0,
    -5.5,
    -5.5
   ],
   "y": [
    98.040646,
    101.643114,
    98.847112,
    97.61556,
    96.764012,
    98.167373,
    92.983907,
    92.753263,
    83.216224,
    81.101897,
    48.753981,
    51.650144,
    24.541205,
    20.912133,
    8.123271,
    8.761176
   ],
   "free": [
    "top",
    "bottom",
    "logIC50",
    "hill"
   ],
   "fixed": {},
   "estimates": {
    "top": 98.94009480018211,
    "bottom": 3.883592171999459,
    "logIC50": -6.5020078167039195,
    "hill": -1.258788572367962
   },
   "result": {
    "status": "tested",
    "n": 16,
    "p": 4,
    "df": 11,
    "threshold": 3.7654430288789307,
    "observations": [
     {
      "index": 0,
      "residual": -0.831336348426845,
      "leverage": 0.176914951493754,
      "internal": -0.5443444650470401,
      "external": -0.5277263330012568,
      "p": 0.6081696618041436,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 1,
      "residual": 2.7711316515731568,
      "leverage": 0.176914951493754,
      "internal": 1.8144884189233184,
      "external": 2.0393910799114847,
      "p": 0.06617338103897089,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 2,
      "residual": 0.1964898531448398,
      "leverage": 0.1599324979276435,
      "internal": 0.12735102184387873,
      "external": 0.12201179930213252,
      "p": 0.9050901540929973,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 3,
      "residual": -1.0350621468551537,
      "leverage": 0.1599324979276435,
      "internal": -0.6708551101453375,
      "external": -0.6546888710437979,
      "p": 0.5261207150398682,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 4,
      "residual": -0.9550936826563685,
      "leverage": 0.12443445235117573,
      "internal": -0.6063467281970839,
      "external": -0.5896356984082031,
      "p": 0.5673484912326194,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 5,
      "residual": 0.44826731734363534,
      "leverage": 0.12443445235117573,
      "internal": 0.2845850895726107,
      "external": 0.27339361554629504,
      "p": 0.789615673002109,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 6,
      "residual": -0.9639926030518353,
      "leverage": 0.13968944995480254,
      "internal": -0.6173983653208066,
      "external": -0.6007320735673448,
      "p": 0.5601924998700947,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 7,
      "residual": -1.1946366030518334,
      "leverage": 0.13968944995480254,
      "internal": -0.7651165408755146,
      "external": -0.7510928852718252,
      "p": 0.4683610420547234,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 8,
      "residual": 2.4335542751481114,
      "leverage": 0.3252190326529799,
      "internal": 1.759863656306087,
      "external": 1.9561858246509498,
      "p": 0.07630904599407767,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 9,
      "residual": 0.31922727514810845,
      "leverage": 0.3252190326529799,
      "internal": 0.23085430449279262,
      "external": 0.22151861429223918,
      "p": 0.8287472267538509,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 10,
      "residual": -2.5195653592171396,
      "leverage": 0.33156136089582355,
      "internal": -1.830687658262405,
      "external": -2.0646104683331137,
      "p": 0.06335951426340011,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 11,
      "residual": 0.3765976407828546,
      "leverage": 0.33156136089582355,
      "internal": 0.2736315811732409,
      "external": 0.2628034600260481,
      "p": 0.7975591779729252,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 12,
      "residual": 2.670541683185011,
      "leverage": 0.29552751813839023,
      "internal": 1.8901085320240474,
      "external": 2.1594043353651227,
      "p": 0.05376000474247227,
      "adjustedP": 0.8601600758795563,
      "candidate": false
     },
     {
      "index": 13,
      "residual": -0.9585303168149899,
      "leverage": 0.29552751813839023,
      "internal": -0.6784115527659458,
      "external": -0.6623556287074239,
      "p": 0.5213789415617669,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 14,
      "residual": -0.6977487292570466,
      "leverage": 0.4467207365854303,
      "internal": -0.5572450966240378,
      "external": -0.5405614129470221,
      "p": 0.5995843721568375,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 15,
      "residual": -0.05984372925704662,
      "leverage": 0.4467207365854303,
      "internal": -0.04779317151561681,
      "external": -0.0457628336353507,
      "p": 0.9643195130694013,
      "adjustedP": 1.0,
      "candidate": false
     }
    ]
   }
  },
  {
   "name": "4pl-bottom-fixed",
   "about": "Ten concentrations, bottom fixed at 0 (three free parameters), one point lowered",
   "kind": "4pl",
   "x": [
    -9.0,
    -8.6,
    -8.2,
    -7.8,
    -7.4,
    -7.0,
    -6.6,
    -6.199999999999999,
    -5.8,
    -5.4
   ],
   "y": [
    97.509311,
    96.23095,
    70.787324,
    86.970345,
    72.168614,
    48.735667,
    28.100203,
    16.510545,
    6.81087,
    2.232009
   ],
   "free": [
    "top",
    "logIC50",
    "hill"
   ],
   "fixed": {
    "bottom": 0.0
   },
   "estimates": {
    "bottom": 0.0,
    "top": 93.44187297572368,
    "logIC50": -6.939036763585765,
    "hill": -0.9637508807713588
   },
   "result": {
    "status": "tested",
    "n": 10,
    "p": 3,
    "df": 6,
    "threshold": 4.316827103636574,
    "observations": [
     {
      "index": 0,
      "residual": 5.022049794143612,
      "leverage": 0.4287102166581087,
      "internal": 0.8792273373527578,
      "external": 0.8630556398625652,
      "p": 0.4212603615097418,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 1,
      "residual": 5.074839013917298,
      "leverage": 0.32433891917060853,
      "internal": 0.8169701998351575,
      "external": 0.7952289726374135,
      "p": 0.45677692368045497,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 2,
      "residual": -17.28910961183479,
      "leverage": 0.22799246753069236,
      "internal": -2.603815788031943,
      "external": -13.593556717046198,
      "p": 9.836985952195142e-06,
      "adjustedP": 9.836985952195142e-05,
      "candidate": true
     },
     {
      "index": 3,
      "residual": 5.574603682536093,
      "leverage": 0.2632299349274527,
      "internal": 0.8594020957262293,
      "external": 0.8412698735083922,
      "p": 0.43244025341663334,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 4,
      "residual": 3.438068068784233,
      "leverage": 0.40988149231367293,
      "internal": 0.5922338823856537,
      "external": 0.5625773585783164,
      "p": 0.5941027723433587,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 5,
      "residual": -1.1407708518298065,
      "leverage": 0.37772747944227064,
      "internal": -0.191362352582764,
      "external": -0.17763235138678482,
      "p": 0.8648569063278477,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 6,
      "residual": -1.829854333971035,
      "leverage": 0.36785784312643494,
      "internal": -0.3045492534050748,
      "external": -0.2838445661506905,
      "p": 0.7860699198457882,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 7,
      "residual": 1.3296335343807133,
      "leverage": 0.3447016164192043,
      "internal": 0.21735058259641668,
      "external": 0.2019100119443766,
      "p": 0.8466588692562083,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 8,
      "residual": -0.09839881227723968,
      "leverage": 0.18716087977987333,
      "internal": -0.014442286460601167,
      "external": -0.013371158304193078,
      "p": 0.9897651948304689,
      "adjustedP": 1.0,
      "candidate": false
     },
     {
      "index": 9,
      "residual": -0.7413637322077329,
      "leverage": 0.06839915063168131,
      "internal": -0.10164003258467841,
      "external": -0.09416989938142747,
      "p": 0.9280402352560542,
      "adjustedP": 1.0,
      "candidate": false
     }
    ]
   }
  },
  {
   "name": "4pl-nine",
   "about": "Nine points, four free parameters: n - p = 5, below the floor",
   "kind": "4pl",
   "x": [
    -9.0,
    -9.0,
    -8.5,
    -8.5,
    -8.0,
    -8.0,
    -7.5,
    -7.5,
    -7.0
   ],
   "y": [
    98.35774,
    99.567809,
    99.641266,
    100.852773,
    94.970167,
    98.597491,
    97.671398,
    94.549401,
    75.812919
   ],
   "free": [
    "top",
    "bottom",
    "logIC50",
    "hill"
   ],
   "fixed": {},
   "estimates": {
    "top": 98.96989213941306,
    "bottom": -35074.531549478255,
    "logIC50": -5.12775236460294,
    "hill": -1.699699172452794
   },
   "result": {
    "status": "withheld",
    "reason": "degrees-of-freedom",
    "n": 9,
    "p": 4
   }
  }
 ],
 "groups": [
  {
   "name": "control-planted",
   "about": "Eight positive-control wells, one raised by six SDs",
   "values": [
    99.0895,
    103.4108,
    102.7247,
    101.6019,
    102.3525,
    118.8743,
    99.2723,
    97.7241
   ],
   "result": {
    "status": "tested",
    "n": 8,
    "mean": 103.13126249999999,
    "sd": 6.670799124101037,
    "index": 5,
    "value": 118.8743,
    "G": 2.3599927395687486,
    "critical": 2.126645087195628,
    "p": 0.0019313978650182838,
    "candidate": true
   }
  },
  {
   "name": "control-clean",
   "about": "Eight negative-control wells, noise only",
   "values": [
    4.3696,
    5.5208,
    3.9929,
    5.1325,
    7.0866,
    5.8863,
    4.1097,
    5.3467
   ],
   "result": {
    "status": "tested",
    "n": 8,
    "mean": 5.1806375,
    "sd": 1.034523108818054,
    "index": 4,
    "value": 7.0866,
    "G": 1.842358555119729,
    "critical": 2.126645087195628,
    "p": 0.2731486016060776,
    "candidate": false
   }
  },
  {
   "name": "control-even",
   "about": "Eight evenly spread wells, no candidate: the Bonferroni bound is 1, where grubbs.test's two-sided p folds",
   "values": [
    96.0,
    97.0,
    98.0,
    99.0,
    100.0,
    101.0,
    102.0,
    103.0
   ],
   "result": {
    "status": "tested",
    "n": 8,
    "mean": 99.5,
    "sd": 2.449489742783178,
    "index": 0,
    "value": 96.0,
    "G": 1.4288690166235207,
    "critical": 2.126645087195628,
    "p": 1.0,
    "candidate": false
   }
  },
  {
   "name": "control-five",
   "about": "Five wells: below the group floor of six",
   "values": [
    99.0895,
    103.4108,
    102.7247,
    101.6019,
    102.3525
   ],
   "result": {
    "status": "withheld",
    "reason": "group-size",
    "n": 5
   }
  },
  {
   "name": "control-constant",
   "about": "Six identical wells",
   "values": [
    50.0,
    50.0,
    50.0,
    50.0,
    50.0,
    50.0
   ],
   "result": {
    "status": "withheld",
    "reason": "no-spread",
    "n": 6
   }
  }
 ]
}
