{
 "about": {
  "method": "curve-comparison",
  "recordedOn": "2026-10-13",
  "script": "pipeline/assay-analyser/oracles/curve_compare_v2.py",
  "scriptSha256": "54f37b9571c7915fc098f8d6e71dda4dcb00e809307da101d0773fde0643f6bd",
  "rScript": "pipeline/assay-analyser/oracles/r/curve_compare_drc.R",
  "rScriptSha256": "988f9bee7a7ce238d6901aaae6766b135db40927be31a4e2b5a614c59decfc97",
  "basedOn": {
   "script": "pipeline/assay-analyser/oracles/curve_compare.py",
   "sha256": "5bafcb4acca66a7c1de1f0266cfb3c9b10077e4f9396691b158bf6a8433213d6",
   "predecessor": "curve-compare.json",
   "changed": "the drc cross-check's agreement rules only (agree): p compared where p > 1e-12, the Wald SE at 1e-2"
  },
  "origin": "Self-constructed curves from known parameters with seeded noise recorded as the responses, and the worked MTT plate (input below); the coverage replicates from a seeded NumPy generator",
  "input": "pipeline/assay-analyser/fixtures/mtt-example.json",
  "inputSha256": "50029b58c869ecb47767215f6b6ba9b54ef33575a77dcd1044cf2c6b3c2a8214",
  "environment": {
   "image": "ghcr.io/biotechmat/drybench/oracle-env:11b8a5e4456df7eb@sha256:7e69891ca1d9f24838660e0a9887bdb654ce7771d2f2ac7e7275e9b1eb3b6a09",
   "python": "3.11.15",
   "scipy": "1.13.1",
   "numpy": "2.0.2",
   "recordedOn": "2026-10-13",
   "r": "R version 4.4.3 (2025-02-28)",
   "packages": {
    "drc": "4.0-0",
    "jsonlite": "2.0.0"
   },
   "cpu": "AMD EPYC 9V45 96-Core Processor",
   "cpuClass": "x86-64-v3",
   "simd": [
    "SSSE3",
    "SSE41",
    "POPCNT",
    "SSE42",
    "AVX",
    "F16C",
    "FMA3",
    "AVX2"
   ],
   "openblasCore": "Haswell",
   "threads": 1
  },
  "crossCheck": {
   "tool": "R drc",
   "ran": true,
   "version": "4.0-0",
   "r": "R version 4.4.3 (2025-02-28)",
   "result": "every RSS, F, p and delta within tolerance; the Wald SE within 1e-2 (observed against Gauss-Newton information)",
   "agrees": true,
   "worst": {
    "rss": 3.038450320581769e-15,
    "F": 6.950807249456473e-15,
    "p": 2.42881576836229e-07,
    "delta": 3.5660778797118314e-08,
    "se": 0.0070693924608108
   },
   "rows": [
    {
     "case": "same-midpoint",
     "converged": true,
     "rssConstrained": 2.2500584637827804e-16,
     "rssShared": 2.184161391141412e-16,
     "F": 6.950807249456473e-15,
     "p": 3.6487171098166703e-16,
     "deltas": {
      "B": {
       "delta": 3.5660778797118314e-08,
       "edcompLog10Ratio": 0.00395683472630024,
       "fieller": {
        "row": "A/B:50/50",
        "log10Ratio": 0.00395683472630024,
        "lowOfInverse": 0.973482744528454,
        "highOfInverse": 1.00866334696822
       },
       "deltaMethod": {
        "row": "A/B:50/50",
        "log10Ratio": 0.00395683472630024,
        "lowOfInverse": 0.973341972826336,
        "highOfInverse": 1.00851888772173
       },
       "se": 0.0029377902196108473
      }
     }
    },
    {
     "case": "shifted-midpoint",
     "converged": true,
     "rssConstrained": 7.050823887694817e-16,
     "rssShared": 2.368252044066514e-15,
     "F": 4.195449325209679e-16,
     "p": "both below 1e-12",
     "deltas": {
      "B": {
       "delta": 5.095200648799636e-09,
       "edcompLog10Ratio": -0.0674470918636651,
       "fieller": {
        "row": "A/B:50/50",
        "log10Ratio": -0.0674470918636651,
        "lowOfInverse": 1.14061711731339,
        "highOfInverse": 1.19635223695625
       },
       "deltaMethod": {
        "row": "A/B:50/50",
        "log10Ratio": -0.0674470918636651,
        "lowOfInverse": 1.14015352958154,
        "highOfInverse": 1.19586932568572
       },
       "se": 0.00071628151416813
      }
     }
    },
    {
     "case": "shifted-hill-shared",
     "converged": true,
     "rssConstrained": 0.0,
     "rssShared": 8.406392552567941e-16,
     "F": 5.715166021389641e-16,
     "p": "both below 1e-12",
     "deltas": {
      "B": {
       "delta": 4.5850324392749775e-15,
       "edcompLog10Ratio": -0.068426414937172,
       "fieller": {
        "row": "A/B:50/50",
        "log10Ratio": -0.068426414937172,
        "lowOfInverse": 1.14779271844539,
        "highOfInverse": 1.19404020880904
       },
       "deltaMethod": {
        "row": "A/B:50/50",
        "log10Ratio": -0.068426414937172,
        "lowOfInverse": 1.14752868642889,
        "highOfInverse": 1.19376778500053
       },
       "se": 0.0026524900594135253
      }
     }
    },
    {
     "case": "shifted-plateaus-shared",
     "converged": true,
     "rssConstrained": 7.693195628179653e-16,
     "rssShared": 3.038450320581769e-15,
     "F": 6.102851867989928e-16,
     "p": 1.930876019254212e-10,
     "deltas": {
      "B": {
       "delta": 1.2920010510223766e-09,
       "edcompLog10Ratio": -0.0235543130281576,
       "fieller": {
        "row": "A/B:50/50",
        "log10Ratio": -0.0235543130281576,
        "lowOfInverse": 1.04062608188719,
        "highOfInverse": 1.07111896104784
       },
       "deltaMethod": {
        "row": "A/B:50/50",
        "log10Ratio": -0.0235543130281576,
        "lowOfInverse": 1.04048916642998,
        "highOfInverse": 1.07097788433928
       },
       "se": 0.0023784507611568396
      }
     }
    },
    {
     "case": "three-curves",
     "converged": true,
     "rssConstrained": 3.6797035698375244e-16,
     "rssShared": 1.4767053673385903e-15,
     "F": 1.246446968518292e-15,
     "p": "both below 1e-12",
     "deltas": {
      "B": {
       "delta": 4.8217080270294794e-09,
       "edcompLog10Ratio": -0.0283219523544229,
       "fieller": {
        "row": "A/B:50/50",
        "log10Ratio": -0.0283219523544229,
        "lowOfInverse": 1.04510407258467,
        "highOfInverse": 1.09018527756219
       },
       "deltaMethod": {
        "row": "A/B:50/50",
        "log10Ratio": -0.0283219523544229,
        "lowOfInverse": 1.04485069439409,
        "highOfInverse": 1.08992351818478
       },
       "se": 0.0028270813213184653
      },
      "C": {
       "delta": 1.288685299551656e-08,
       "edcompLog10Ratio": 0.0194125940333445,
       "fieller": {
        "row": "A/C:50/50",
        "log10Ratio": 0.0194125940333445,
        "lowOfInverse": 0.938658994041071,
        "highOfInverse": 0.97417969800378
       },
       "deltaMethod": {
        "row": "A/C:50/50",
        "log10Ratio": 0.0194125940333445,
        "lowOfInverse": 0.93852653851175,
        "highOfInverse": 0.974043736069229
       },
       "se": 0.0009260266740388296
      }
     }
    },
    {
     "case": "fixed-plateaus",
     "converged": true,
     "rssConstrained": 2.035219006136817e-16,
     "rssShared": 1.6004205479099994e-15,
     "F": 6.867242512117973e-16,
     "p": 9.83246807704632e-11,
     "deltas": {
      "B": {
       "delta": 5.377742816342371e-15,
       "edcompLog10Ratio": -0.0176947864584812,
       "fieller": {
        "row": "A/B:50/50",
        "log10Ratio": -0.0176947864584812,
        "lowOfInverse": 1.02833729322448,
        "highOfInverse": 1.0550097230981
       },
       "deltaMethod": {
        "row": "A/B:50/50",
        "log10Ratio": -0.0176947864584812,
        "lowOfInverse": 1.02824980989714,
        "highOfInverse": 1.05492052356881
       },
       "se": 0.000410494037848219
      }
     }
    },
    {
     "case": "poorly-determined",
     "converged": true,
     "rssConstrained": 5.208359008104448e-16,
     "rssShared": 6.640129160462097e-16,
     "F": 2.7762240357286547e-15,
     "p": 1.0349354573304582e-13,
     "deltas": {
      "B": {
       "delta": 1.480727155867778e-09,
       "edcompLog10Ratio": -0.103261502355896,
       "fieller": {
        "row": "A/B:50/50",
        "log10Ratio": -0.103261502355896,
        "lowOfInverse": 1.18719722635355,
        "highOfInverse": 1.35810892118117
       },
       "deltaMethod": {
        "row": "A/B:50/50",
        "log10Ratio": -0.103261502355896,
        "lowOfInverse": 1.18320689669638,
        "highOfInverse": 1.3536238807668
       }
      }
     }
    },
    {
     "case": "reference-swapped",
     "converged": true,
     "rssConstrained": 7.050823887694817e-16,
     "rssShared": 2.368252044066514e-15,
     "F": 4.195449325209679e-16,
     "p": "both below 1e-12",
     "deltas": {
      "A": {
       "delta": 5.095200648799636e-09,
       "edcompLog10Ratio": 0.0674470918636651,
       "fieller": {
        "row": "A/B:50/50",
        "log10Ratio": 0.0674470918636651,
        "low": 1.14061711731339,
        "high": 1.19635223695625
       },
       "deltaMethod": {
        "row": "A/B:50/50",
        "log10Ratio": 0.0674470918636651,
        "low": 1.14015352958154,
        "high": 1.19586932568572
       },
       "se": 0.0007162799913267441
      }
     }
    },
    {
     "case": "metamorphic-units",
     "converged": true,
     "rssConstrained": 3.525411943847405e-16,
     "rssShared": 1.3814803590387989e-15,
     "F": 1.0488623313024204e-15,
     "p": "both below 1e-12",
     "deltas": {
      "B": {
       "delta": 3.004458185434809e-13,
       "edcompLog10Ratio": -0.046043372064351,
       "fieller": {
        "row": "A/B:50/50",
        "log10Ratio": -0.046043372064351,
        "lowOfInverse": 1.09412524637179,
        "highOfInverse": 1.12995944867203
       },
       "deltaMethod": {
        "row": "A/B:50/50",
        "log10Ratio": -0.046043372064351,
        "lowOfInverse": 1.09392837749631,
        "highOfInverse": 1.12975714071182
       },
       "se": 0.0007254917636493646
      }
     }
    },
    {
     "case": "mtt-compounds-a-b",
     "converged": true,
     "rssConstrained": 4.3004995338779374e-16,
     "sharedNotCompared": "the shared-midpoint fit runs to its limit; R's shared fit and anova are recorded, not compared",
     "rRssShared": 3439.70177714807,
     "rAnova": {
      "F": 173.533779652774,
      "p": 0,
      "columns": [
       "ModelDf",
       "RSS",
       "Df",
       "F value",
       "p value"
      ],
      "df": [
       53,
       52
      ]
     },
     "deltas": {
      "Compound B": {
       "delta": 3.499573865521473e-12,
       "edcompLog10Ratio": 0.0751137378554346,
       "fieller": {
        "row": "Compound A/Compound B:50/50",
        "log10Ratio": 0.0751137378554346,
        "lowOfInverse": 0.825385973858415,
        "highOfInverse": 0.85736115678525
       },
       "deltaMethod": {
        "row": "Compound A/Compound B:50/50",
        "log10Ratio": 0.0751137378554346,
        "lowOfInverse": 0.825190348810992,
        "highOfInverse": 0.857159284400821
       },
       "se": 0.0070693924608108
      }
     }
    },
    {
     "case": "rising-curves",
     "converged": true,
     "rssConstrained": 1.1279823513480243e-16,
     "rssShared": 2.0045986822729592e-15,
     "F": 3.3225201006939847e-16,
     "p": 2.42881576836229e-07,
     "deltas": {
      "B": {
       "delta": 6.650960764843823e-10,
       "edcompLog10Ratio": -0.029492701010616,
       "fieller": {
        "row": "A/B:50/50",
        "log10Ratio": -0.029492701010616,
        "lowOfInverse": 1.05485673594691,
        "highOfInverse": 1.08593456913556
       },
       "deltaMethod": {
        "row": "A/B:50/50",
        "log10Ratio": -0.029492701010616,
        "lowOfInverse": 1.05473092344642,
        "highOfInverse": 1.08580586704797
       },
       "se": 0.0002582630384077278
      }
     }
    }
   ],
   "tolerances": {
    "rss": 1e-06,
    "F": 1e-05,
    "p": "1e-4 where p > 1e-12, else both below 1e-12",
    "delta": 1e-05,
    "Wald SE": "1e-2 (drc's Hessian against the engine's J'J)"
   },
   "note": "EDcomp's delta-method and Fieller intervals are on the C50 ratio's linear scale and are recorded as information only; the engine's intervals are on log10 C50"
  },
  "tolerances": {
   "RSS": "1e-6 relative",
   "F": "1e-5 relative",
   "p": "1e-4 relative",
   "delta and its Wald bounds": "1e-6 absolute in log10 units",
   "profile bounds on delta": "within 1e-3 log10 of the direct profile",
   "statuses, readings and withholdings": "exact"
  },
  "coverage": {
   "replicates": 2000,
   "seed": 20261012,
   "designs": [
    {
     "design": "duplicates-11x2",
     "about": "Two curves, eleven half-log concentrations in duplicate, Hill -1, 0 to 100 percent, true delta 0.5, noise SD 5",
     "replicates": 2000,
     "errors": 0,
     "compared": 2000,
     "ratioWithheldFraction": 0.0,
     "midpointRejectionRate": 1.0,
     "midpointWithheldFraction": 0.0,
     "midpointRejectionWilson95": [
      0.9980829527187469,
      0.9999999999999998
     ],
     "profile": {
      "coverage": 0.954,
      "wilson95": [
       0.9439163444279334,
       0.9623429766406889
      ]
     },
     "wald": {
      "coverage": 0.9525,
      "wilson95": [
       0.9422790928066445,
       0.9609859794038216
      ]
     },
     "profileUnresolvedFraction": 0.0
    },
    {
     "design": "single-8x1",
     "about": "Two curves, eight half-log concentrations once each (10^-8.5 to 10^-5 M), Hill -1, true delta 0.5, noise SD 5",
     "replicates": 2000,
     "errors": 0,
     "compared": 2000,
     "ratioWithheldFraction": 0.3,
     "midpointRejectionRate": 0.7685,
     "midpointWithheldFraction": 0.1035,
     "midpointRejectionWilson95": [
      0.7495103570396379,
      0.7864601885703292
     ],
     "profile": {
      "coverage": 0.9342857142857143,
      "wilson95": [
       0.9200813694044833,
       0.9461133083203849
      ]
     },
     "wald": {
      "coverage": 0.9385714285714286,
      "wilson95": [
       0.9247535947329497,
       0.949989056785256
      ]
     },
     "profileUnresolvedFraction": 0.004285714285714286
    },
    {
     "design": "null-11x2",
     "about": "Two curves from one midpoint (true delta 0), duplicates: the midpoint test's rejection rate is its size",
     "replicates": 2000,
     "errors": 0,
     "compared": 2000,
     "ratioWithheldFraction": 0.0,
     "midpointRejectionRate": 0.0465,
     "midpointWithheldFraction": 0.0,
     "midpointRejectionWilson95": [
      0.03810906851120825,
      0.056629693372888146
     ],
     "profile": {
      "coverage": 0.9535,
      "wilson95": [
       0.9433703066271119,
       0.9618909314887917
      ]
     },
     "wald": {
      "coverage": 0.951,
      "wilson95": [
       0.9406443633026171,
       0.9596264600496927
      ]
     },
     "profileUnresolvedFraction": 0.0
    }
   ],
   "unresolvedSides": "counted as open",
   "gate": "the two delta designs must cover at least 0.90 by the profile before the copy says approximate 95 percent",
   "gatePassed": true
  }
 },
 "oracle": {
  "engine": "scipy.optimize.least_squares (trf, bounded)",
  "F": "scipy.stats.f.sf",
  "threshold": "RSS_min (1 + scipy.stats.f.ppf(0.95, 1, df) / df)",
  "wald": "scipy.stats.t.ppf(0.975, df), SE from a central-difference Jacobian",
  "root": "scipy.optimize.brentq, xtol 1e-12",
  "scipy": "1.13.1",
  "numpy": "2.0.2",
  "python": "3.11.15"
 },
 "cases": [
  {
   "name": "same-midpoint",
   "about": "Two curves from one midpoint (100 nM, Hill -1, 0 to 100 percent), different noise: consistent with one midpoint",
   "scale": "percent",
   "shared": [],
   "reference": "A",
   "curves": [
    {
     "id": "A",
     "label": "A",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.82176908167399,
      105.123769081674,
      103.90890099009901,
      96.96890099009902,
      95.74265699682844,
      94.82465699682844,
      93.1880909090909,
      90.6850909090909,
      78.96269266479578,
      68.58569266479579,
      56.266,
      49.614,
      26.747307335204212,
      23.47930733520421,
      7.574909090909092,
      10.942909090909092,
      6.3633430031715505,
      2.2553430031715505,
      0.3790990099009901,
      3.73309900990099,
      -3.1657690816739787,
      -5.742769081673979
     ],
     "fixed": {}
    },
    {
     "id": "B",
     "label": "B",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.65776908167399,
      103.869769081674,
      101.975900990099,
      101.90590099009901,
      103.40965699682843,
      92.11265699682843,
      88.40109090909091,
      85.6260909090909,
      75.54369266479578,
      79.96969266479579,
      49.912,
      51.984,
      16.38230733520421,
      24.61330733520421,
      5.462909090909092,
      16.19290909090909,
      6.612343003171551,
      6.862343003171551,
      0.7590990099009901,
      3.44109900990099,
      2.9472309183260212,
      -1.0627690816739788
     ],
     "fixed": {}
    }
   ],
   "expected": {
    "own": [
     {
      "id": "A",
      "estimates": {
       "top": 102.05217453317756,
       "bottom": -2.341797919469941,
       "logIC50": -6.977215002004882,
       "hill": -0.8789278066471243
      },
      "rss": 213.53006425553676,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.064580730685492
       },
       "high": {
        "status": "crossing",
        "value": -6.889933146206401
       },
       "threshold": 265.890879522831,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "B",
      "estimates": {
       "top": 101.37374580292395,
       "bottom": 1.6182947510079133,
       "logIC50": -7.041074515905391,
       "hill": -0.9971277828137884
      },
      "rss": 291.731641391376,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.136663974102561
       },
       "high": {
        "status": "crossing",
        "value": -6.9474246303010805
       },
       "threshold": 363.26867125073124,
       "unbounded": false,
       "poorlyDetermined": false
      }
     }
    ],
    "status": "compared",
    "separate": {
     "rss": 505.2617056469129,
     "df": 36
    },
    "constrained": {
     "rss": 505.2617056469129,
     "df": 36,
     "estimates": [
      {
       "top": 102.05217453241627,
       "bottom": -2.3417979231053496,
       "logIC50": -6.977215001972854,
       "hill": -0.8789278068444554
      },
      {
       "top": 101.37374580315984,
       "bottom": 1.6182947458292498,
       "logIC50": -7.041074515990082,
       "hill": -0.997127781772329
      }
     ]
    },
    "shared": {
     "rss": 520.5056649325941,
     "df": 37,
     "estimates": [
      {
       "top": 102.73123466371048,
       "bottom": -1.7178682904812523,
       "logIC50": -7.011786994203881,
       "hill": -0.8767115569629801
      },
      {
       "top": 100.79332792721532,
       "bottom": 1.1395580146772404,
       "logIC50": -7.011786994203881,
       "hill": -1.0005957116036224
      }
     ]
    },
    "midpointTest": {
     "F": 1.0861352209186075,
     "df1": 1,
     "df2": 36,
     "p": 0.3042776381973169,
     "alpha": 0.05,
     "preferFull": false
    },
    "midpointWithheld": null,
    "reading": "consistent with one midpoint",
    "constraintTests": {},
    "ratio": {
     "reference": "A",
     "withheld": null,
     "rssMin": 505.2617056469129,
     "df": 36,
     "fQuantile": 4.1131652768128895,
     "threshold": 562.9901751849723,
     "tQuantile": 2.0280940009804502,
     "deltas": {
      "B": {
       "estimate": -0.06385951401722778,
       "wald": {
        "low": -0.18858658570153736,
        "high": 0.060867557667081795,
        "se": 0.06149965022529145
       },
       "profile": {
        "low": {
         "status": "crossing",
         "value": -0.1888692448993124
        },
        "high": {
         "status": "crossing",
         "value": 0.06048197702505425
        }
       }
      }
     }
    }
   }
  },
  {
   "name": "shifted-midpoint",
   "about": "B ten-fold less potent than A (100 nM against 1 uM): the data do not support one midpoint; delta near 1",
   "scale": "percent",
   "shared": [],
   "reference": "A",
   "curves": [
    {
     "id": "A",
     "label": "A",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.82176908167399,
      105.123769081674,
      103.90890099009901,
      96.96890099009902,
      95.74265699682844,
      94.82465699682844,
      93.1880909090909,
      90.6850909090909,
      78.96269266479578,
      68.58569266479579,
      56.266,
      49.614,
      26.747307335204212,
      23.47930733520421,
      7.574909090909092,
      10.942909090909092,
      6.3633430031715505,
      2.2553430031715505,
      0.3790990099009901,
      3.73309900990099,
      -3.1657690816739787,
      -5.742769081673979
     ],
     "fixed": {}
    },
    {
     "id": "B",
     "label": "B",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.94138722023703,
      104.15338722023704,
      102.86609990009991,
      102.79609990009992,
      106.15976908167399,
      94.86276908167399,
      96.50190099009902,
      93.72690099009901,
      96.50365699682844,
      100.92965699682844,
      90.82109090909091,
      92.8930909090909,
      68.33169266479578,
      76.56269266479578,
      46.372,
      57.102000000000004,
      27.57230733520421,
      27.82230733520421,
      8.859909090909092,
      11.541909090909092,
      5.69734300317155,
      1.6873430031715506
     ],
     "fixed": {}
    }
   ],
   "expected": {
    "own": [
     {
      "id": "A",
      "estimates": {
       "top": 102.05217453317756,
       "bottom": -2.341797919469941,
       "logIC50": -6.977215002004882,
       "hill": -0.8789278066471243
      },
      "rss": 213.53006425553676,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.064580730685492
       },
       "high": {
        "status": "crossing",
        "value": -6.889933146206401
       },
       "threshold": 265.890879522831,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "B",
      "estimates": {
       "top": 101.48625108129055,
       "bottom": -1.8973238035103543,
       "logIC50": -5.973584536300235,
       "hill": -0.8651927819513412
      },
      "rss": 270.18718439120795,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -6.0962026117012735
       },
       "high": {
        "status": "crossing",
        "value": -5.823952746032676
       },
       "threshold": 336.4411861348129,
       "unbounded": false,
       "poorlyDetermined": false
      }
     }
    ],
    "status": "compared",
    "separate": {
     "rss": 483.7172486467447,
     "df": 36
    },
    "constrained": {
     "rss": 483.7172486467447,
     "df": 36,
     "estimates": [
      {
       "top": 102.05217451368343,
       "bottom": -2.3417980784699717,
       "logIC50": -6.977214999475264,
       "hill": -0.8789278048463571
      },
      {
       "top": 101.48625106355013,
       "bottom": -1.897323584160966,
       "logIC50": -5.97358453854277,
       "hill": -0.8651927870589554
      }
     ]
    },
    "shared": {
     "rss": 2304.2176715563755,
     "df": 37,
     "estimates": [
      {
       "top": 134.9124463356865,
       "bottom": -81.93415668237535,
       "logIC50": -6.0484013348381325,
       "hill": -0.24070461897101747
      },
      {
       "top": 101.71655341296425,
       "bottom": 1.6222080726467243,
       "logIC50": -6.0484013348381325,
       "hill": -0.913635249519428
      }
     ]
    },
    "midpointTest": {
     "F": 135.48827420997895,
     "df1": 1,
     "df2": 36,
     "p": 9.25074319174021e-14,
     "alpha": 0.05,
     "preferFull": true
    },
    "midpointWithheld": null,
    "reading": "the data do not support one midpoint",
    "constraintTests": {},
    "ratio": {
     "reference": "A",
     "withheld": null,
     "rssMin": 483.7172486467446,
     "df": 36,
     "fQuantile": 4.1131652768128895,
     "threshold": 538.9841650614462,
     "tQuantile": 2.0280940009804502,
     "deltas": {
      "B": {
       "estimate": 1.0036304608577404,
       "wald": {
        "low": 0.8539760865201039,
        "high": 1.153284835195377,
        "se": 0.07379064987386605
       },
       "profile": {
        "low": {
         "status": "crossing",
         "value": 0.8588432780497763
        },
        "high": {
         "status": "crossing",
         "value": 1.162823771157039
        }
       }
      }
     }
    }
   }
  },
  {
   "name": "shifted-hill-shared",
   "about": "The shifted pair with Hill named as a shared constraint; its own nested test against the separate fit",
   "scale": "percent",
   "shared": [
    "hill"
   ],
   "reference": "A",
   "curves": [
    {
     "id": "A",
     "label": "A",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.82176908167399,
      105.123769081674,
      103.90890099009901,
      96.96890099009902,
      95.74265699682844,
      94.82465699682844,
      93.1880909090909,
      90.6850909090909,
      78.96269266479578,
      68.58569266479579,
      56.266,
      49.614,
      26.747307335204212,
      23.47930733520421,
      7.574909090909092,
      10.942909090909092,
      6.3633430031715505,
      2.2553430031715505,
      0.3790990099009901,
      3.73309900990099,
      -3.1657690816739787,
      -5.742769081673979
     ],
     "fixed": {}
    },
    {
     "id": "B",
     "label": "B",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.97174109043695,
      104.18374109043695,
      102.95969082463724,
      102.88969082463724,
      106.44338722023703,
      95.14638722023703,
      97.33376147191983,
      94.55876147191982,
      98.78093161496699,
      103.20693161496699,
      96.08334961177454,
      98.15534961177453,
      75.7232469183438,
      83.9542469183438,
      46.372,
      57.102000000000004,
      20.180753081656192,
      20.430753081656192,
      3.5976503882254742,
      6.279650388225474,
      3.420068385033029,
      -0.5899316149669708
     ],
     "fixed": {}
    }
   ],
   "expected": {
    "own": [
     {
      "id": "A",
      "estimates": {
       "top": 102.05217453317756,
       "bottom": -2.341797919469941,
       "logIC50": -6.977215002004882,
       "hill": -0.8789278066471243
      },
      "rss": 213.53006425553676,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.064580730685492
       },
       "high": {
        "status": "crossing",
        "value": -6.889933146206401
       },
       "threshold": 265.890879522831,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "B",
      "estimates": {
       "top": 101.11292377543744,
       "bottom": -0.6420166379526243,
       "logIC50": -5.987529247874253,
       "hill": -1.203764934142866
      },
      "rss": 262.7190965869174,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -6.06986634441563
       },
       "high": {
        "status": "crossing",
        "value": -5.8993082156708345
       },
       "threshold": 327.1418097610007,
       "unbounded": false,
       "poorlyDetermined": false
      }
     }
    ],
    "status": "compared",
    "separate": {
     "rss": 476.2491608424542,
     "df": 36
    },
    "constrained": {
     "rss": 560.551453136853,
     "df": 37,
     "estimates": [
      {
       "top": 100.14308088583833,
       "bottom": -0.4286185049852584,
       "logIC50": -6.976566205200572,
       "hill": -1.02372195049774
      },
      {
       "top": 102.03565603694175,
       "bottom": -4.075832602955565,
       "logIC50": -5.959575210004255,
       "hill": -1.02372195049774
      }
     ]
    },
    "shared": {
     "rss": 4327.6337434187535,
     "df": 38,
     "estimates": [
      {
       "top": 94.243888042093,
       "bottom": -16.68948065504118,
       "logIC50": -6.417677670707384,
       "hill": -0.743803341508712
      },
      {
       "top": 110.14170597936956,
       "bottom": 6.1105884323047555,
       "logIC50": -6.417677670707384,
       "hill": -0.743803341508712
      }
     ]
    },
    "midpointTest": {
     "F": 248.65165179832584,
     "df1": 1,
     "df2": 37,
     "p": 5.273969888608717e-18,
     "alpha": 0.05,
     "preferFull": true
    },
    "midpointWithheld": null,
    "reading": "the data do not support one midpoint",
    "constraintTests": {
     "hill": {
      "rss": 560.551453136853,
      "df": 37,
      "test": {
       "F": 6.372467968720075,
       "df1": 1,
       "df2": 36,
       "p": 0.01614084866475618,
       "alpha": 0.05,
       "preferFull": true
      },
      "withheld": null
     }
    },
    "ratio": {
     "reference": "A",
     "withheld": null,
     "rssMin": 560.551453136853,
     "df": 37,
     "fQuantile": 4.105455897235966,
     "threshold": 622.7492712175255,
     "tQuantile": 2.0261924630291093,
     "deltas": {
      "B": {
       "estimate": 1.0169909951963172,
       "wald": {
        "low": 0.8909543356505629,
        "high": 1.1430276547420715,
        "se": 0.06220369577198629
       },
       "profile": {
        "low": {
         "status": "crossing",
         "value": 0.8923779638442827
        },
        "high": {
         "status": "crossing",
         "value": 1.1460879454051585
        }
       }
      }
     }
    }
   }
  },
  {
   "name": "shifted-plateaus-shared",
   "about": "The shifted pair with Top and Bottom named as shared constraints, each its own nested test",
   "scale": "percent",
   "shared": [
    "top",
    "bottom"
   ],
   "reference": "A",
   "curves": [
    {
     "id": "A",
     "label": "A",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.82176908167399,
      105.123769081674,
      103.90890099009901,
      96.96890099009902,
      95.74265699682844,
      94.82465699682844,
      93.1880909090909,
      90.6850909090909,
      78.96269266479578,
      68.58569266479579,
      56.266,
      49.614,
      26.747307335204212,
      23.47930733520421,
      7.574909090909092,
      10.942909090909092,
      6.3633430031715505,
      2.2553430031715505,
      0.3790990099009901,
      3.73309900990099,
      -3.1657690816739787,
      -5.742769081673979
     ],
     "fixed": {}
    },
    {
     "id": "B",
     "label": "B",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      95.85606714644396,
      100.06806714644397,
      98.59722843741883,
      98.52722843741884,
      101.31875562133685,
      90.02175562133685,
      89.93135513895032,
      87.15635513895032,
      85.17013341063513,
      89.59613341063513,
      69.43050584757549,
      71.50250584757548,
      36.52701806010679,
      44.75801806010679,
      18.042680828918474,
      28.772680828918475,
      13.390642718934345,
      13.640642718934345,
      5.047813182181249,
      7.72981318218125,
      6.364903598080717,
      2.3549035980807167
     ],
     "fixed": {}
    }
   ],
   "expected": {
    "own": [
     {
      "id": "A",
      "estimates": {
       "top": 102.05217453317756,
       "bottom": -2.341797919469941,
       "logIC50": -6.977215002004882,
       "hill": -0.8789278066471243
      },
      "rss": 213.53006425553676,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.064580730685492
       },
       "high": {
        "status": "crossing",
        "value": -6.889933146206401
       },
       "threshold": 265.890879522831,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "B",
      "estimates": {
       "top": 97.43750956768156,
       "bottom": 4.601928890655836,
       "logIC50": -6.644539337006826,
       "hill": -0.9621071284837598
      },
      "rss": 286.79528455425765,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -6.749075021289282
       },
       "high": {
        "status": "crossing",
        "value": -6.534630391769628
       },
       "threshold": 357.12184473411855,
       "unbounded": false,
       "poorlyDetermined": false
      }
     }
    ],
    "status": "compared",
    "separate": {
     "rss": 500.3253488097945,
     "df": 36
    },
    "constrained": {
     "rss": 591.1033241124865,
     "df": 38,
     "estimates": [
      {
       "top": 99.89871991714291,
       "bottom": 0.05642102608922922,
       "logIC50": -6.980095405266176,
       "hill": -0.9704746608186648
      },
      {
       "top": 99.89871991714291,
       "bottom": 0.05642102608922922,
       "logIC50": -6.611607226561132,
       "hill": -0.8050488400485696
      }
     ]
    },
    "shared": {
     "rss": 1496.6423765631755,
     "df": 39,
     "estimates": [
      {
       "top": 100.46255910847161,
       "bottom": 0.7453454587853646,
       "logIC50": -6.831105082521999,
       "hill": -0.9569635647499318
      },
      {
       "top": 100.46255910847161,
       "bottom": 0.7453454587853646,
       "logIC50": -6.831105082521999,
       "hill": -0.7805378533089616
      }
     ]
    },
    "midpointTest": {
     "F": 58.21399168206656,
     "df1": 1,
     "df2": 38,
     "p": 3.514196821750932e-09,
     "alpha": 0.05,
     "preferFull": true
    },
    "midpointWithheld": null,
    "reading": "the data do not support one midpoint",
    "constraintTests": {
     "top": {
      "rss": 547.2747420479552,
      "df": 37,
      "test": {
       "F": 3.3781581536783785,
       "df1": 1,
       "df2": 36,
       "p": 0.07432929593960629,
       "alpha": 0.05,
       "preferFull": false
      },
      "withheld": null
     },
     "bottom": {
      "rss": 571.6154964840727,
      "df": 37,
      "test": {
       "F": 5.129552844722411,
       "df1": 1,
       "df2": 36,
       "p": 0.029639322928826945,
       "alpha": 0.05,
       "preferFull": true
      },
      "withheld": null
     }
    },
    "ratio": {
     "reference": "A",
     "withheld": null,
     "rssMin": 591.1033241124862,
     "df": 38,
     "fQuantile": 4.098171730880841,
     "threshold": 654.8518223468939,
     "tQuantile": 2.024394163911969,
     "deltas": {
      "B": {
       "estimate": 0.3684881770619491,
       "wald": {
        "low": 0.2707508577685715,
        "high": 0.4662254963553267,
        "se": 0.04827978712629193
       },
       "profile": {
        "low": {
         "status": "crossing",
         "value": 0.27104408304879807
        },
        "high": {
         "status": "crossing",
         "value": 0.46614087316057606
        }
       }
      }
     }
    }
   }
  },
  {
   "name": "three-curves",
   "about": "Three curves against reference A: delta for B (0.5) and C (-0.3)",
   "scale": "percent",
   "shared": [],
   "reference": "A",
   "curves": [
    {
     "id": "A",
     "label": "A",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.82176908167399,
      105.123769081674,
      103.90890099009901,
      96.96890099009902,
      95.74265699682844,
      94.82465699682844,
      93.1880909090909,
      90.6850909090909,
      78.96269266479578,
      68.58569266479579,
      56.266,
      49.614,
      26.747307335204212,
      23.47930733520421,
      7.574909090909092,
      10.942909090909092,
      6.3633430031715505,
      2.2553430031715505,
      0.3790990099009901,
      3.73309900990099,
      -3.1657690816739787,
      -5.742769081673979
     ],
     "fixed": {}
    },
    {
     "id": "B",
     "label": "B",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.87309990009992,
      104.08509990009992,
      102.65076908167399,
      102.58076908167399,
      105.484900990099,
      94.18790099009901,
      94.42665699682844,
      91.65165699682844,
      90.47809090909091,
      94.90409090909091,
      75.88669266479579,
      77.95869266479578,
      42.357,
      50.588,
      20.39730733520421,
      31.12730733520421,
      12.637909090909092,
      12.887909090909092,
      2.8343430031715506,
      5.516343003171551,
      3.62209900990099,
      -0.3879009900990098
     ],
     "fixed": {}
    },
    {
     "id": "C",
     "label": "C",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      106.67999876585661,
      87.0599987658566,
      101.87576961274205,
      98.32276961274205,
      99.33790568972323,
      95.60790568972324,
      90.6752469183438,
      83.4932469183438,
      59.248682015314316,
      63.635682015314316,
      35.1140575416878,
      31.959057541687798,
      12.691688860321005,
      16.558688860321006,
      7.589672103420393,
      2.796672103420393,
      0.08916622418296072,
      -5.6668337758170395,
      7.215687873668797,
      -0.39831212633120283,
      5.507238528080173,
      1.828238528080172
     ],
     "fixed": {}
    }
   ],
   "expected": {
    "own": [
     {
      "id": "A",
      "estimates": {
       "top": 102.05217453317756,
       "bottom": -2.341797919469941,
       "logIC50": -6.977215002004882,
       "hill": -0.8789278066471243
      },
      "rss": 213.53006425553676,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.064580730685492
       },
       "high": {
        "status": "crossing",
        "value": -6.889933146206401
       },
       "threshold": 265.890879522831,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "B",
      "estimates": {
       "top": 101.51707589158177,
       "bottom": 1.3104236094229067,
       "logIC50": -6.536724083689325,
       "hill": -0.9448613581623022
      },
      "rss": 284.6025957057057,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -6.636614704106463
       },
       "high": {
        "status": "crossing",
        "value": -6.4304247124755785
       },
       "threshold": 354.39147527305914,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "C",
      "estimates": {
       "top": 100.14169614118616,
       "bottom": 1.4836880946020257,
       "logIC50": -7.296165896080118,
       "hill": -1.104955127749901
      },
      "rss": 428.736873662379,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.403509850227839
       },
       "high": {
        "status": "crossing",
        "value": -7.189075010331862
       },
       "threshold": 533.8696675777493,
       "unbounded": false,
       "poorlyDetermined": false
      }
     }
    ],
    "status": "compared",
    "separate": {
     "rss": 926.8695336236214,
     "df": 54
    },
    "constrained": {
     "rss": 926.8695336236214,
     "df": 54,
     "estimates": [
      {
       "top": 102.05217451642741,
       "bottom": -2.3417980168283186,
       "logIC50": -6.977215000572988,
       "hill": -0.8789278063978372
      },
      {
       "top": 101.51707590700981,
       "bottom": 1.3104234342228445,
       "logIC50": -6.536724082282943,
       "hill": -0.9448613531093317
      },
      {
       "top": 100.14169616304129,
       "bottom": 1.4836879653501176,
       "logIC50": -7.296165894932032,
       "hill": -1.104955123371263
      }
     ]
    },
    "shared": {
     "rss": 3079.4724590595747,
     "df": 56,
     "estimates": [
      {
       "top": 102.14464588531041,
       "bottom": -2.2489457756134286,
       "logIC50": -6.982132770498396,
       "hill": -0.8788684628018406
      },
      {
       "top": 110.75182310545601,
       "bottom": 8.20614141104708,
       "logIC50": -6.982132770498396,
       "hill": -0.7557978786359172
      },
      {
       "top": 94.8982142057617,
       "bottom": -4.521384678718351,
       "logIC50": -6.982132770498396,
       "hill": -0.9736113735265125
      }
     ]
    },
    "midpointTest": {
     "F": 62.70599785446388,
     "df1": 2,
     "df2": 54,
     "p": 8.329935377804523e-15,
     "alpha": 0.05,
     "preferFull": true
    },
    "midpointWithheld": null,
    "reading": "the data do not support one midpoint",
    "constraintTests": {},
    "ratio": {
     "reference": "A",
     "withheld": null,
     "rssMin": 926.8695336236214,
     "df": 54,
     "fQuantile": 4.019540960205442,
     "threshold": 995.8619420526336,
     "tQuantile": 2.004879288188057,
     "deltas": {
      "B": {
       "estimate": 0.4404909182900454,
       "wald": {
        "low": 0.29853563430052554,
        "high": 0.5824462022795652,
        "se": 0.07080490323076473
       },
       "profile": {
        "low": {
         "status": "crossing",
         "value": 0.2991665152102967
        },
        "high": {
         "status": "crossing",
         "value": 0.5850423505318856
        }
       }
      },
      "C": {
       "estimate": -0.3189508943590438,
       "wald": {
        "low": -0.4510851075118699,
        "high": -0.18681668120621764,
        "se": 0.06590631861544374
       },
       "profile": {
        "low": {
         "status": "crossing",
         "value": -0.4512878321537076
        },
        "high": {
         "status": "crossing",
         "value": -0.1865981665638576
        }
       }
      }
     }
    }
   }
  },
  {
   "name": "fixed-plateaus",
   "about": "Top 100 and Bottom 0 fixed on both curves (percent of control): two free parameters per curve",
   "scale": "percent",
   "shared": [],
   "reference": "A",
   "curves": [
    {
     "id": "A",
     "label": "A",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.82176908167399,
      105.123769081674,
      103.90890099009901,
      96.96890099009902,
      95.74265699682844,
      94.82465699682844,
      93.1880909090909,
      90.6850909090909,
      78.96269266479578,
      68.58569266479579,
      56.266,
      49.614,
      26.747307335204212,
      23.47930733520421,
      7.574909090909092,
      10.942909090909092,
      6.3633430031715505,
      2.2553430031715505,
      0.3790990099009901,
      3.73309900990099,
      -3.1657690816739787,
      -5.742769081673979
     ],
     "fixed": {
      "top": 100.0,
      "bottom": 0.0
     }
    },
    {
     "id": "B",
     "label": "B",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.81476147191982,
      104.02676147191983,
      102.46731212633121,
      102.39731212633122,
      104.91483377581703,
      93.61783377581703,
      92.71932789657961,
      89.94432789657961,
      85.88831113967899,
      90.31431113967899,
      66.5259424583122,
      68.59794245831219,
      31.043317984685693,
      39.274317984685695,
      13.005753081656184,
      23.735753081656185,
      9.482094310276757,
      9.732094310276757,
      1.7252303872579509,
      4.407230387257951,
      3.259001234143384,
      -0.7509987658566161
     ],
     "fixed": {
      "top": 100.0,
      "bottom": 0.0
     }
    }
   ],
   "expected": {
    "own": [
     {
      "id": "A",
      "estimates": {
       "top": 100.0,
       "bottom": 0.0,
       "logIC50": -6.980721450814751,
       "hill": -0.9671483251748058
      },
      "rss": 243.3730238275357,
      "df": 20,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.040606299929892
       },
       "high": {
        "status": "crossing",
        "value": -6.920907053439475
       },
       "threshold": 296.32178826829414,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "B",
      "estimates": {
       "top": 100.0,
       "bottom": 0.0,
       "logIC50": -6.702016958162319,
       "hill": -0.9707356444803145
      },
      "rss": 315.22453927901404,
      "df": 20,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -6.769576981466097
       },
       "high": {
        "status": "crossing",
        "value": -6.6340993898541525
       },
       "threshold": 383.80547571040296,
       "unbounded": false,
       "poorlyDetermined": false
      }
     }
    ],
    "status": "compared",
    "separate": {
     "rss": 558.5975631065498,
     "df": 40
    },
    "constrained": {
     "rss": 558.5975631065498,
     "df": 40,
     "estimates": [
      {
       "top": 100.0,
       "bottom": 0.0,
       "logIC50": -6.980721450814751,
       "hill": -0.9671483251748058
      },
      {
       "top": 100.0,
       "bottom": 0.0,
       "logIC50": -6.702016958162319,
       "hill": -0.9707356444803145
      }
     ]
    },
    "shared": {
     "rss": 1136.569638474892,
     "df": 41,
     "estimates": [
      {
       "top": 100.0,
       "bottom": 0.0,
       "logIC50": -6.840025672914889,
       "hill": -0.9533550045999916
      },
      {
       "top": 100.0,
       "bottom": 0.0,
       "logIC50": -6.840025672914889,
       "hill": -0.9624897411114623
      }
     ]
    },
    "midpointTest": {
     "F": 41.387368190727074,
     "df1": 1,
     "df2": 40,
     "p": 1.1630574904308872e-07,
     "alpha": 0.05,
     "preferFull": true
    },
    "midpointWithheld": null,
    "reading": "the data do not support one midpoint",
    "constraintTests": {},
    "ratio": {
     "reference": "A",
     "withheld": null,
     "rssMin": 558.5975631065498,
     "df": 40,
     "fQuantile": 4.084745733301651,
     "threshold": 615.6407884198544,
     "tQuantile": 2.0210753903062733,
     "deltas": {
      "B": {
       "estimate": 0.278704492652432,
       "wald": {
        "low": 0.19112274347579336,
        "high": 0.36628624182907066,
        "se": 0.043334231665334635
       },
       "profile": {
        "low": {
         "status": "crossing",
         "value": 0.19122258765305103
        },
        "high": {
         "status": "crossing",
         "value": 0.36637312257458515
        }
       }
      }
     }
    }
   }
  },
  {
   "name": "poorly-determined",
   "about": "B's midpoint near the top of the tested range with a shallow slope and noisy plateau: its own interval is wider than two log10 units, so the ratio is withheld; the F test is still reported",
   "scale": "percent",
   "shared": [],
   "reference": "A",
   "curves": [
    {
     "id": "A",
     "label": "A",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.82176908167399,
      105.123769081674,
      103.90890099009901,
      96.96890099009902,
      95.74265699682844,
      94.82465699682844,
      93.1880909090909,
      90.6850909090909,
      78.96269266479578,
      68.58569266479579,
      56.266,
      49.614,
      26.747307335204212,
      23.47930733520421,
      7.574909090909092,
      10.942909090909092,
      6.3633430031715505,
      2.2553430031715505,
      0.3790990099009901,
      3.73309900990099,
      -3.1657690816739787,
      -5.742769081673979
     ],
     "fixed": {}
    },
    {
     "id": "B",
     "label": "B",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      106.86797943275005,
      90.11797943275005,
      84.09152138840007,
      70.57652138840007,
      96.12246125969271,
      112.13046125969271,
      99.64392244440491,
      104.4309224444049,
      108.87041089712179,
      89.81741089712179,
      123.84259575961597,
      88.55059575961597,
      98.5268550672625,
      122.1868550672625,
      88.97568291216677,
      91.26168291216678,
      76.93052072864229,
      85.39452072864229,
      48.345877042959984,
      63.144877042959976,
      70.38939447268314,
      55.56139447268313
     ],
     "fixed": {}
    }
   ],
   "expected": {
    "own": [
     {
      "id": "A",
      "estimates": {
       "top": 102.05217453317756,
       "bottom": -2.341797919469941,
       "logIC50": -6.977215002004882,
       "hill": -0.8789278066471243
      },
      "rss": 213.53006425553676,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.064580730685492
       },
       "high": {
        "status": "crossing",
        "value": -6.889933146206401
       },
       "threshold": 265.890879522831,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "B",
      "estimates": {
       "top": 98.97908354997304,
       "bottom": 58.65581564341862,
       "logIC50": -5.500733480083468,
       "hill": -2.3921937783354346
      },
      "rss": 3278.9123743617442,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -6.098009505332882
       },
       "high": {
        "status": "crossing",
        "value": -3.857550294335486
       },
       "threshold": 4082.9514950831194,
       "unbounded": false,
       "poorlyDetermined": true
      }
     }
    ],
    "status": "compared",
    "separate": {
     "rss": 3492.442438617278,
     "df": 36
    },
    "constrained": {
     "rss": 3492.442438617278,
     "df": 36,
     "estimates": [
      {
       "top": 102.05217451639686,
       "bottom": -2.341798147536045,
       "logIC50": -6.977214998360427,
       "hill": -0.8789278036208203
      },
      {
       "top": 98.97908365218755,
       "bottom": 58.65581543958491,
       "logIC50": -5.500733480167607,
       "hill": -2.3921934222290284
      }
     ]
    },
    "shared": {
     "rss": 5478.777173121343,
     "df": 37,
     "estimates": [
      {
       "top": 175.40550105573593,
       "bottom": -151.51306540068867,
       "logIC50": -5.527114371509852,
       "hill": -0.15127089357104123
      },
      {
       "top": 99.14174260840285,
       "bottom": 58.964998525432264,
       "logIC50": -5.527114371509852,
       "hill": -2.261930746990027
      }
     ]
    },
    "midpointTest": {
     "F": 20.475083469223243,
     "df1": 1,
     "df2": 36,
     "p": 6.351097185951953e-05,
     "alpha": 0.05,
     "preferFull": true
    },
    "midpointWithheld": null,
    "reading": "the data do not support one midpoint",
    "constraintTests": {},
    "ratio": {
     "reference": "A",
     "withheld": "poorly-determined"
    }
   }
  },
  {
   "name": "own-fit-at-box",
   "about": "B's own fit runs to its box (a shallow curve whose midpoint the data do not reach): no comparison is made",
   "scale": "percent",
   "shared": [],
   "reference": "A",
   "curves": [
    {
     "id": "A",
     "label": "A",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.82176908167399,
      105.123769081674,
      103.90890099009901,
      96.96890099009902,
      95.74265699682844,
      94.82465699682844,
      93.1880909090909,
      90.6850909090909,
      78.96269266479578,
      68.58569266479579,
      56.266,
      49.614,
      26.747307335204212,
      23.47930733520421,
      7.574909090909092,
      10.942909090909092,
      6.3633430031715505,
      2.2553430031715505,
      0.3790990099009901,
      3.73309900990099,
      -3.1657690816739787,
      -5.742769081673979
     ],
     "fixed": {}
    },
    {
     "id": "B",
     "label": "B",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      93.93831631234163,
      106.19331631234164,
      110.16543684266698,
      110.08043684266697,
      117.72299160004309,
      95.69299160004309,
      104.53823162617604,
      95.43423162617603,
      83.96482046277382,
      91.17382046277382,
      97.85842651680137,
      87.34442651680138,
      91.32999710034238,
      104.44799710034239,
      93.07604209450814,
      93.09404209450814,
      81.06645753418307,
      75.86245753418308,
      44.7973335052317,
      73.38933350523169,
      31.484605527316866,
      48.71260552731687
     ],
     "fixed": {}
    }
   ],
   "expected": {
    "own": [
     {
      "id": "A",
      "estimates": {
       "top": 102.05217453317756,
       "bottom": -2.341797919469941,
       "logIC50": -6.977215002004882,
       "hill": -0.8789278066471243
      },
      "rss": 213.53006425553676,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.064580730685492
       },
       "high": {
        "status": "crossing",
        "value": -6.889933146206401
       },
       "threshold": 265.890879522831,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "B",
      "estimates": {
       "top": 103.49827610012164,
       "bottom": -1693.283115927206,
       "logIC50": -1.004143628360801,
       "hill": -0.40905327528765006
      },
      "rss": 1739.2971124015912,
      "df": 18,
      "atBox": true,
      "profile": null
     }
    ],
    "status": "refused",
    "reason": "own-fit-at-box"
   }
  },
  {
   "name": "reference-swapped",
   "about": "The shifted pair with B as the reference: delta negated, the F test unchanged",
   "scale": "percent",
   "shared": [],
   "reference": "B",
   "curves": [
    {
     "id": "A",
     "label": "A",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.82176908167399,
      105.123769081674,
      103.90890099009901,
      96.96890099009902,
      95.74265699682844,
      94.82465699682844,
      93.1880909090909,
      90.6850909090909,
      78.96269266479578,
      68.58569266479579,
      56.266,
      49.614,
      26.747307335204212,
      23.47930733520421,
      7.574909090909092,
      10.942909090909092,
      6.3633430031715505,
      2.2553430031715505,
      0.3790990099009901,
      3.73309900990099,
      -3.1657690816739787,
      -5.742769081673979
     ],
     "fixed": {}
    },
    {
     "id": "B",
     "label": "B",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      99.94138722023703,
      104.15338722023704,
      102.86609990009991,
      102.79609990009992,
      106.15976908167399,
      94.86276908167399,
      96.50190099009902,
      93.72690099009901,
      96.50365699682844,
      100.92965699682844,
      90.82109090909091,
      92.8930909090909,
      68.33169266479578,
      76.56269266479578,
      46.372,
      57.102000000000004,
      27.57230733520421,
      27.82230733520421,
      8.859909090909092,
      11.541909090909092,
      5.69734300317155,
      1.6873430031715506
     ],
     "fixed": {}
    }
   ],
   "expected": {
    "own": [
     {
      "id": "A",
      "estimates": {
       "top": 102.05217453317756,
       "bottom": -2.341797919469941,
       "logIC50": -6.977215002004882,
       "hill": -0.8789278066471243
      },
      "rss": 213.53006425553676,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.064580730685492
       },
       "high": {
        "status": "crossing",
        "value": -6.889933146206401
       },
       "threshold": 265.890879522831,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "B",
      "estimates": {
       "top": 101.48625108129055,
       "bottom": -1.8973238035103543,
       "logIC50": -5.973584536300235,
       "hill": -0.8651927819513412
      },
      "rss": 270.18718439120795,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -6.0962026117012735
       },
       "high": {
        "status": "crossing",
        "value": -5.823952746032676
       },
       "threshold": 336.4411861348129,
       "unbounded": false,
       "poorlyDetermined": false
      }
     }
    ],
    "status": "compared",
    "separate": {
     "rss": 483.7172486467447,
     "df": 36
    },
    "constrained": {
     "rss": 483.7172486467447,
     "df": 36,
     "estimates": [
      {
       "top": 102.05217451368343,
       "bottom": -2.3417980784699717,
       "logIC50": -6.977214999475264,
       "hill": -0.8789278048463571
      },
      {
       "top": 101.48625106355013,
       "bottom": -1.897323584160966,
       "logIC50": -5.97358453854277,
       "hill": -0.8651927870589554
      }
     ]
    },
    "shared": {
     "rss": 2304.2176715563755,
     "df": 37,
     "estimates": [
      {
       "top": 134.9124463356865,
       "bottom": -81.93415668237535,
       "logIC50": -6.0484013348381325,
       "hill": -0.24070461897101747
      },
      {
       "top": 101.71655341296425,
       "bottom": 1.6222080726467243,
       "logIC50": -6.0484013348381325,
       "hill": -0.913635249519428
      }
     ]
    },
    "midpointTest": {
     "F": 135.48827420997895,
     "df1": 1,
     "df2": 36,
     "p": 9.25074319174021e-14,
     "alpha": 0.05,
     "preferFull": true
    },
    "midpointWithheld": null,
    "reading": "the data do not support one midpoint",
    "constraintTests": {},
    "ratio": {
     "reference": "B",
     "withheld": null,
     "rssMin": 483.7172486467446,
     "df": 36,
     "fQuantile": 4.1131652768128895,
     "threshold": 538.9841650614462,
     "tQuantile": 2.0280940009804502,
     "deltas": {
      "A": {
       "estimate": -1.0036304609140179,
       "wald": {
        "low": -1.1532848354793912,
        "high": -0.8539760863486445,
        "se": 0.07379064998615707
       },
       "profile": {
        "low": {
         "status": "crossing",
         "value": -1.162823771157039
        },
        "high": {
         "status": "crossing",
         "value": -0.8588432780497762
        }
       }
      }
     }
    }
   }
  },
  {
   "name": "metamorphic-units",
   "about": "The shifted pair with every concentration x 1e-3 (log10 shifted by -3): delta, F and the RSS unchanged",
   "scale": "percent",
   "shared": [],
   "reference": "A",
   "curves": [
    {
     "id": "A",
     "label": "A",
     "x": [
      -12.5,
      -12.5,
      -12.0,
      -12.0,
      -11.5,
      -11.5,
      -11.0,
      -11.0,
      -10.5,
      -10.5,
      -10.0,
      -10.0,
      -9.5,
      -9.5,
      -9.0,
      -9.0,
      -8.5,
      -8.5,
      -8.0,
      -8.0,
      -7.5,
      -7.5
     ],
     "y": [
      99.82176908167399,
      105.123769081674,
      103.90890099009901,
      96.96890099009902,
      95.74265699682844,
      94.82465699682844,
      93.1880909090909,
      90.6850909090909,
      78.96269266479578,
      68.58569266479579,
      56.266,
      49.614,
      26.747307335204212,
      23.47930733520421,
      7.574909090909092,
      10.942909090909092,
      6.3633430031715505,
      2.2553430031715505,
      0.3790990099009901,
      3.73309900990099,
      -3.1657690816739787,
      -5.742769081673979
     ],
     "fixed": {}
    },
    {
     "id": "B",
     "label": "B",
     "x": [
      -12.5,
      -12.5,
      -12.0,
      -12.0,
      -11.5,
      -11.5,
      -11.0,
      -11.0,
      -10.5,
      -10.5,
      -10.0,
      -10.0,
      -9.5,
      -9.5,
      -9.0,
      -9.0,
      -8.5,
      -8.5,
      -8.0,
      -8.0,
      -7.5,
      -7.5
     ],
     "y": [
      99.94138722023703,
      104.15338722023704,
      102.86609990009991,
      102.79609990009992,
      106.15976908167399,
      94.86276908167399,
      96.50190099009902,
      93.72690099009901,
      96.50365699682844,
      100.92965699682844,
      90.82109090909091,
      92.8930909090909,
      68.33169266479578,
      76.56269266479578,
      46.372,
      57.102000000000004,
      27.57230733520421,
      27.82230733520421,
      8.859909090909092,
      11.541909090909092,
      5.69734300317155,
      1.6873430031715506
     ],
     "fixed": {}
    }
   ],
   "expected": {
    "own": [
     {
      "id": "A",
      "estimates": {
       "top": 102.05217434897911,
       "bottom": -2.34179776194428,
       "logIC50": -9.977215001250702,
       "hill": -0.8789278155820747
      },
      "rss": 213.53006425553676,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -10.064580730685492
       },
       "high": {
        "status": "crossing",
        "value": -9.889933146206403
       },
       "threshold": 265.890879522831,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "B",
      "estimates": {
       "top": 101.48625105485192,
       "bottom": -1.8973229954270827,
       "logIC50": -8.973584546515086,
       "hill": -0.8651927918995496
      },
      "rss": 270.18718439120835,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -9.096202611701274
       },
       "high": {
        "status": "crossing",
        "value": -8.823952746032676
       },
       "threshold": 336.4411861348134,
       "unbounded": false,
       "poorlyDetermined": false
      }
     }
    ],
    "status": "compared",
    "separate": {
     "rss": 483.7172486467452,
     "df": 36
    },
    "constrained": {
     "rss": 483.7172486467452,
     "df": 36,
     "estimates": [
      {
       "top": 102.0521743489798,
       "bottom": -2.3417977619777735,
       "logIC50": -9.977215001250903,
       "hill": -0.8789278155780448
      },
      {
       "top": 101.4862510548489,
       "bottom": -1.8973229954370936,
       "logIC50": -8.973584546515339,
       "hill": -0.8651927919136516
      }
     ]
    },
    "shared": {
     "rss": 2304.217671556377,
     "df": 37,
     "estimates": [
      {
       "top": 134.91244862800013,
       "bottom": -81.93415778956225,
       "logIC50": -9.048401360245057,
       "hill": -0.24070461346182337
      },
      {
       "top": 101.7165532915936,
       "bottom": 1.622209851358051,
       "logIC50": -9.048401360245057,
       "hill": -0.9136352799581305
      }
     ]
    },
    "midpointTest": {
     "F": 135.48827420997887,
     "df1": 1,
     "df2": 36,
     "p": 9.250743191740299e-14,
     "alpha": 0.05,
     "preferFull": true
    },
    "midpointWithheld": null,
    "reading": "the data do not support one midpoint",
    "constraintTests": {},
    "ratio": {
     "reference": "A",
     "withheld": null,
     "rssMin": 483.7172486467452,
     "df": 36,
     "fQuantile": 4.1131652768128895,
     "threshold": 538.9841650614468,
     "tQuantile": 2.0280940009804502,
     "deltas": {
      "B": {
       "estimate": 1.0036304547355641,
       "wald": {
        "low": 0.8539760817190862,
        "high": 1.153284827752042,
        "se": 0.0737906492224373
       },
       "profile": {
        "low": {
         "status": "crossing",
         "value": 0.8588432780497781
        },
        "high": {
         "status": "crossing",
         "value": 1.1628237711570413
        }
       }
      }
     }
    }
   }
  },
  {
   "name": "mtt-compounds-a-b",
   "about": "The worked MTT plate (pipeline/assay-analyser/fixtures/mtt-example.json), Compounds A and B as percent of the plate's controls: forcing one midpoint drives B's fit to the edge of its search, so the midpoint F test is withheld; the difference of log C50s from the constrained fit is given (CSO ruling of 12 October 2026)",
   "scale": "percent",
   "shared": [],
   "reference": "Compound A",
   "curves": [
    {
     "id": "Compound A",
     "label": "Compound A",
     "x": [
      -4.0,
      -4.477121254719663,
      -4.954242509439325,
      -5.431363764158987,
      -5.9084850188786495,
      -6.385606273598312,
      -6.862727528317975,
      -7.339848783037637,
      -7.8169700377573,
      -8.294091292476962,
      -4.0,
      -4.477121254719663,
      -4.954242509439325,
      -5.431363764158987,
      -5.9084850188786495,
      -6.385606273598312,
      -6.862727528317975,
      -7.339848783037637,
      -7.8169700377573,
      -8.294091292476962,
      -4.0,
      -4.477121254719663,
      -4.954242509439325,
      -5.431363764158987,
      -5.9084850188786495,
      -6.385606273598312,
      -6.862727528317975,
      -7.339848783037637,
      -7.8169700377573,
      -8.294091292476962
     ],
     "y": [
      4.14595452141724,
      5.33051295610788,
      12.860920148069804,
      35.5367530407192,
      74.6271813855103,
      81.73453199365414,
      105.93336858804865,
      86.47276573241672,
      107.7102062400846,
      100.2644103648863,
      3.2998413537810687,
      6.345848757271286,
      12.522474881015334,
      33.0830248545743,
      68.87361184558435,
      83.76520359598096,
      99.84135378106822,
      97.2184029613961,
      95.10312004230565,
      96.96456901110523,
      3.2998413537810687,
      8.122686409307244,
      13.453199365415124,
      32.575356953992596,
      65.40454785827605,
      86.81121099947119,
      88.9264939185616,
      102.2104706504495,
      97.2184029613961,
      96.96456901110523
     ],
     "fixed": {}
    },
    {
     "id": "Compound B",
     "label": "Compound B",
     "x": [
      -4.0,
      -4.477121254719663,
      -4.954242509439325,
      -5.431363764158987,
      -5.9084850188786495,
      -6.385606273598312,
      -6.862727528317975,
      -7.339848783037637,
      -7.8169700377573,
      -8.294091292476962,
      -4.0,
      -4.477121254719663,
      -4.954242509439325,
      -5.431363764158987,
      -5.9084850188786495,
      -6.385606273598312,
      -6.862727528317975,
      -7.339848783037637,
      -7.8169700377573,
      -8.294091292476962,
      -4.0,
      -4.477121254719663,
      -4.954242509439325,
      -5.431363764158987,
      -5.9084850188786495,
      -6.385606273598312,
      -6.862727528317975,
      -7.339848783037637,
      -7.8169700377573,
      -8.294091292476962
     ],
     "y": [
      16.414595452141725,
      18.02221047065045,
      15.314648334214699,
      19.71443680592279,
      22.083553675304074,
      39.09042834479112,
      62.527763088313066,
      73.44262295081968,
      98.3183500793231,
      89.09571655208885,
      15.314648334214699,
      16.076150185087254,
      18.191433104177687,
      21.660497091485986,
      28.514013749338975,
      42.89793759915388,
      62.189317821258605,
      80.88841882601797,
      89.8572184029614,
      94.17239555790587,
      12.437863564251717,
      17.091485986250664,
      18.02221047065045,
      17.176097303014277,
      26.906398730830247,
      43.15177154944474,
      61.427815970386035,
      79.78847170809094,
      94.51084082496034,
      93.49550502379694
     ],
     "fixed": {}
    }
   ],
   "expected": {
    "own": [
     {
      "id": "Compound A",
      "estimates": {
       "top": 98.23627953208944,
       "bottom": 3.0369018010253126,
       "logIC50": -5.665647204192236,
       "hill": -1.2823903912343009
      },
      "rss": 565.5376752025097,
      "df": 26,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -5.742723710965986
       },
       "high": {
        "status": "crossing",
        "value": -5.58672565330437
       },
       "threshold": 657.4419254050944,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "Compound B",
      "estimates": {
       "top": 96.78878389902883,
       "bottom": 15.538387446334902,
       "logIC50": -6.73539803183427,
       "hill": -0.9791144934350114
      },
      "rss": 227.5341772138992,
      "df": 26,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -6.819066123562383
       },
       "high": {
        "status": "crossing",
        "value": -6.657062684801799
       },
       "threshold": 264.5102424155985,
       "unbounded": false,
       "poorlyDetermined": false
      }
     }
    ],
    "status": "compared",
    "separate": {
     "rss": 793.0718524164093,
     "df": 52
    },
    "constrained": {
     "rss": 793.0718524164093,
     "df": 52,
     "estimates": [
      {
       "top": 98.23627953208944,
       "bottom": 3.0369018010253126,
       "logIC50": -5.665647204192236,
       "hill": -1.2823903912343009
      },
      {
       "top": 96.78878389902883,
       "bottom": 15.538387446334902,
       "logIC50": -6.73539803183427,
       "hill": -0.9791144934350114
      }
     ]
    },
    "shared": {
     "rss": 3439.7017771504525,
     "df": 53,
     "estimates": [
      {
       "top": 98.23689176175024,
       "bottom": 3.038450266557635,
       "logIC50": -5.665696924495042,
       "hill": -1.2824139375269699
      },
      {
       "top": 2156.814532594295,
       "bottom": -2084.907456371429,
       "logIC50": -5.665696924495042,
       "hill": -0.008770641902506753
      }
     ]
    },
    "midpointTest": null,
    "midpointWithheld": {
     "parameter": "bottom",
     "curve": "Compound B"
    },
    "reading": null,
    "constraintTests": {},
    "ratio": {
     "reference": "Compound A",
     "withheld": null,
     "rssMin": 793.0718524164091,
     "df": 52,
     "fQuantile": 4.026631400264279,
     "threshold": 854.4835451780567,
     "tQuantile": 2.006646805061688,
     "deltas": {
      "Compound B": {
       "estimate": -1.0697508246875262,
       "wald": {
        "low": -1.1919603345839782,
        "high": -0.9475413147910743,
        "se": 0.06090235191772828
       },
       "profile": {
        "low": {
         "status": "crossing",
         "value": -1.1955617228081303
        },
        "high": {
         "status": "crossing",
         "value": -0.9508493835930371
        }
       }
      }
     }
    }
   }
  },
  {
   "name": "rising-curves",
   "about": "Two rising (activation) curves, Hill +1.2, B 0.4 log10 to the right: delta near 0.4",
   "scale": "percent",
   "shared": [],
   "reference": "A",
   "curves": [
    {
     "id": "A",
     "label": "A",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      0.23690009990009991,
      5.5389000999001,
      5.29552856191522,
      -1.6444714380847798,
      0.36816622418296086,
      -0.5498337758170391,
      8.21409431027676,
      5.71109431027676,
      23.064000891310172,
      12.687000891310174,
      56.266,
      49.614,
      82.64599910868982,
      79.37799910868982,
      92.54890568972323,
      95.91690568972324,
      101.73783377581704,
      97.62983377581703,
      98.99247143808476,
      102.34647143808476,
      96.41909990009992,
      93.84209990009992
     ],
     "fixed": {}
    },
    {
     "id": "B",
     "label": "B",
     "x": [
      -9.5,
      -9.5,
      -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,
      -5.0,
      -5.0,
      -4.5,
      -4.5
     ],
     "y": [
      0.00610215099587633,
      4.218102150995876,
      3.0976521225579337,
      3.0276521225579334,
      6.9970676104824125,
      -4.299932389517587,
      -0.4614621061780464,
      -3.2364621061780467,
      7.2479319697100175,
      11.673931969710019,
      24.78792064662891,
      26.859920646628908,
      49.221139188366735,
      57.452139188366736,
      80.36706946347533,
      91.09706946347534,
      98.97932189603375,
      99.22932189603375,
      98.58101824748285,
      101.26301824748283,
      102.33091409286305,
      98.32091409286305
     ],
     "fixed": {}
    }
   ],
   "expected": {
    "own": [
     {
      "id": "A",
      "estimates": {
       "top": 98.51015265122412,
       "bottom": 1.318771026392166,
       "logIC50": -7.020944436439786,
       "hill": 1.3493157450293345
      },
      "rss": 218.78197965757843,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -7.085900099214462
       },
       "high": {
        "status": "crossing",
        "value": -6.955613541847658
       },
       "threshold": 272.4306443578063,
       "unbounded": false,
       "poorlyDetermined": false
      }
     },
     {
      "id": "B",
      "estimates": {
       "top": 101.93003709715857,
       "bottom": 1.1557319387250582,
       "logIC50": -6.559984829443767,
       "hill": 1.2193166759282181
      },
      "rss": 285.15692322397655,
      "df": 18,
      "atBox": false,
      "profile": {
       "low": {
        "status": "crossing",
        "value": -6.639012329349128
       },
       "high": {
        "status": "crossing",
        "value": -6.480835862591646
       },
       "threshold": 355.0817323190194,
       "unbounded": false,
       "poorlyDetermined": false
      }
     }
    ],
    "status": "compared",
    "separate": {
     "rss": 503.93890288155507,
     "df": 36
    },
    "constrained": {
     "rss": 503.93890288155507,
     "df": 36,
     "estimates": [
      {
       "top": 98.5101526483117,
       "bottom": 1.318771019143739,
       "logIC50": -7.020944436406891,
       "hill": 1.3493157456014802
      },
      {
       "top": 101.93003709648916,
       "bottom": 1.1557319628657816,
       "logIC50": -6.559984829287617,
       "hill": 1.2193166770014687
      }
     ]
    },
    "shared": {
     "rss": 1701.3904886843934,
     "df": 37,
     "estimates": [
      {
       "top": 103.36882813966413,
       "bottom": 4.450800466725349,
       "logIC50": -6.7982123556510405,
       "hill": 1.185546732529982
      },
      {
       "top": 97.02870592213982,
       "bottom": -2.739867723788202,
       "logIC50": -6.7982123556510405,
       "hill": 1.1446620097915179
      }
     ]
    },
    "midpointTest": {
     "F": 85.54262598582167,
     "df1": 1,
     "df2": 36,
     "p": 4.7938664690615474e-11,
     "alpha": 0.05,
     "preferFull": true
    },
    "midpointWithheld": null,
    "reading": "the data do not support one midpoint",
    "constraintTests": {},
    "ratio": {
     "reference": "A",
     "withheld": null,
     "rssMin": 503.9389028815549,
     "df": 36,
     "fQuantile": 4.1131652768128895,
     "threshold": 561.5162361306548,
     "tQuantile": 2.0280940009804502,
     "deltas": {
      "B": {
       "estimate": 0.4609596073384449,
       "wald": {
        "low": 0.3627782768663933,
        "high": 0.5591409378104965,
        "se": 0.04841064093902321
       },
       "profile": {
        "low": {
         "status": "crossing",
         "value": 0.362534726103089
        },
        "high": {
         "status": "crossing",
         "value": 0.5592326151605034
        }
       }
      }
     }
    }
   }
  }
 ]
}
