{
 "about": {
  "method": "relative-potency with parallelism intervals",
  "ruling": "docs/board/memos/2026-10-13-cso-parallelism-relative-potency.md",
  "origin": "Self-constructed curves from known parameters with seeded noise recorded as the responses",
  "basedOn": {
   "script": "pipeline/assay-analyser/oracles/curve_compare.py",
   "sha256": "5bafcb4acca66a7c1de1f0266cfb3c9b10077e4f9396691b158bf6a8433213d6"
  },
  "tolerances": {
   "RSS": "1e-6 relative",
   "F": "1e-5 relative",
   "p": "1e-4 relative",
   "log rho, the ratio and differences and their Wald SE": "1e-5 relative (1e-8 absolute below 1e-6)",
   "t quantile": "1e-8 relative",
   "profile bounds on log rho": "1e-3 log10",
   "states, refusals, withholdings and margin classes": "exact"
  },
  "coverage": {
   "replicates": 2000,
   "seed": 20261013,
   "design": "rp01-shift",
   "fits": 2000,
   "coverage": {
    "rhoProfile": {
     "n": 2000,
     "coverage": 0.949
    },
    "hillRatio": {
     "n": 2000,
     "coverage": 0.889
    },
    "top": {
     "n": 2000,
     "coverage": 0.892
    },
    "bottom": {
     "n": 2000,
     "coverage": 0.8995
    }
   }
  },
  "recordedOn": "2026-10-13",
  "script": "pipeline/assay-analyser/oracles/relative_potency.py",
  "scriptSha256": "2994c534ebbf7c30d9e1c5015ceea41bd0d58e25bbbe77bc7a9ac3b29cb3cc1d",
  "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",
    "drc": "4.0-0"
   },
   "python": "3.11.15",
   "numpy": "2.0.2",
   "scipy": "1.13.1",
   "recordedOn": "2026-10-13",
   "cpu": "AMD EPYC 7763 64-Core Processor",
   "cpuClass": "x86-64-v3",
   "simd": [
    "SSSE3",
    "SSE41",
    "POPCNT",
    "SSE42",
    "AVX",
    "F16C",
    "FMA3",
    "AVX2"
   ],
   "openblasCore": "Haswell",
   "threads": 1
  },
  "crossCheck": {
   "tool": "R drc LL2.4: the separate model's b ratio and c and d differences from coef and vcov (delta method), anova(constrained, separate)",
   "version": "R version 4.4.3 (2025-02-28)",
   "drc": "4.0-0",
   "script": "pipeline/assay-analyser/oracles/r/relative_potency_drc.R",
   "scriptSha256": "f5dcac6e3141ba30f826236a397efa1df3cd0fb82ce750f55284aa51369db583",
   "ran": true,
   "agreement": "every Hill ratio, plateau difference and joint F within 1e-5 relative (the script stops otherwise); standard errors recorded, not enforced (drc's Hessian against the oracle's Gauss-Newton covariance)",
   "worstRelativeSeDifference": 0.03718183478216096
  }
 },
 "oracle": {
  "engine": "scipy.optimize.least_squares (trf, bounded) through curve_compare.py; central-difference covariance; scipy.stats.t"
 },
 "cases": [
  {
   "name": "rp01-shift",
   "about": "Shift by rho = 2, sigma 2 on 0-100, triplicates at 8 half-log concentrations",
   "margins": {
    "hillRatio": [
     0.8,
     1.25
    ],
    "top": [
     -10,
     10
    ],
    "bottom": [
     -10,
     10
    ]
   },
   "curves": [
    {
     "id": "Reference",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      97.31079085051667,
      99.17679085051667,
      96.63279085051666,
      98.39797847979774,
      91.75297847979775,
      94.16297847979774,
      86.98804427886766,
      88.10804427886767,
      85.20304427886767,
      66.78149998028852,
      61.44449998028851,
      60.04649998028851,
      31.23450001971149,
      35.60350001971149,
      37.67050001971149,
      14.85695572113233,
      14.64495572113233,
      12.68895572113233,
      5.688021520202244,
      3.462021520202244,
      3.247021520202244,
      4.388209149483345,
      4.440209149483344,
      2.1062091494833446
     ]
    },
    {
     "id": "Test",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      97.50158806066828,
      94.26158806066827,
      93.15358806066827,
      88.70920464019969,
      89.81020464019969,
      90.34720464019968,
      74.11203235606936,
      74.14103235606937,
      74.83903235606937,
      49.24485239074744,
      48.075852390747436,
      50.58085239074744,
      21.578386285932233,
      18.95238628593223,
      17.54438628593223,
      8.298380637091132,
      6.729380637091131,
      7.568380637091131,
      3.0598117429674234,
      3.396811742967423,
      -0.08618825703257693,
      2.456303684042837,
      1.9973036840428373,
      0.05430368404283725
     ]
    }
   ],
   "expected": {
    "status": "computed",
    "reference": "Reference",
    "test": "Test",
    "n": 48,
    "separate": {
     "rss": 156.60526209641404,
     "df": 40
    },
    "constrained": {
     "rss": 173.61945676889493,
     "df": 43
    },
    "jointF": {
     "F": 1.4485843319028968,
     "df1": 3,
     "df2": 40,
     "p": 0.24306617384816068,
     "alpha": 0.05,
     "preferFull": false
    },
    "rho": {
     "withheld": null,
     "logRho": 0.28197257207346205,
     "profile": {
      "low": {
       "status": "crossing",
       "value": 0.2448622005845702
      },
      "high": {
       "status": "crossing",
       "value": 0.3191184789658141
      }
     },
     "wald": {
      "low": 0.2449043495965357,
      "high": 0.3190407945503884,
      "se": 0.018380704051475724
     },
     "df": 43
    },
    "own": {
     "Reference": {
      "top": 99.20924843125199,
      "bottom": 1.7009968681823537,
      "logIC50": -6.025753897831792,
      "hill": -1.0952283054981644
     },
     "Test": {
      "top": 96.5270643227472,
      "bottom": 0.5945650595318518,
      "logIC50": -6.262007321768797,
      "hill": -1.1276531727353223
     }
    },
    "parallelism": {
     "level": 0.9,
     "df": 40,
     "tQuantile": 1.6838510133356523,
     "intervals": {
      "hillRatio": {
       "status": "computed",
       "estimate": 1.0296055781925846,
       "seLn": 0.06912799342660983,
       "low": 0.9164704571272442,
       "high": 1.1567068402490819
      },
      "top": {
       "status": "computed",
       "estimate": -2.6821841085047993,
       "se": 1.6777412151018058,
       "low": -5.507250353668963,
       "high": 0.14288213665936533
      },
      "bottom": {
       "status": "computed",
       "estimate": -1.1064318086505018,
       "se": 1.3935044736951017,
       "low": -3.452885728769764,
       "high": 1.2400221114687602
      }
     },
     "margins": {
      "hillRatio": [
       0.8,
       1.25
      ],
      "top": [
       -10,
       10
      ],
      "bottom": [
       -10,
       10
      ]
     },
     "classes": {
      "hillRatio": "within",
      "top": "within",
      "bottom": "within"
     }
    }
   }
  },
  {
   "name": "rp02-slopes",
   "about": "Hill -1 against -2 at the same C50: the Hill-ratio interval extends beyond 0.80-1.25",
   "margins": {
    "hillRatio": [
     0.8,
     1.25
    ],
    "top": [
     -10,
     10
    ],
    "bottom": [
     -10,
     10
    ]
   },
   "curves": [
    {
     "id": "Reference",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      95.50179085051666,
      100.32579085051665,
      98.25879085051666,
      90.84497847979775,
      92.24497847979775,
      94.44397847979775,
      83.28304427886766,
      82.75904427886766,
      83.17704427886767,
      61.37649998028851,
      62.13349998028851,
      68.40949998028852,
      36.32450001971149,
      35.27150001971149,
      34.15750001971149,
      12.13695572113233,
      9.32795572113233,
      14.47595572113233,
      4.257021520202244,
      9.704021520202243,
      5.390021520202244,
      -0.2157908505166557,
      0.0052091494833443885,
      5.5952091494833445
     ]
    },
    {
     "id": "Test",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      101.52338722023704,
      100.13738722023703,
      95.59838722023703,
      100.24076908167399,
      98.64476908167399,
      100.94276908167399,
      94.84865699682844,
      97.17965699682844,
      96.74765699682844,
      75.89169266479578,
      77.09169266479579,
      78.36769266479578,
      25.843307335204212,
      25.38030733520421,
      25.85430733520421,
      3.2723430031715504,
      5.640343003171551,
      3.2533430031715507,
      -2.247769081673979,
      -2.283769081673979,
      0.9762309183260212,
      -0.07738722023703823,
      -2.4873872202370384,
      -1.5793872202370383
     ]
    }
   ],
   "expected": {
    "status": "computed",
    "reference": "Reference",
    "test": "Test",
    "n": 48,
    "separate": {
     "rss": 187.02724724193368,
     "df": 40
    },
    "constrained": {
     "rss": 1096.0996740992941,
     "df": 43
    },
    "jointF": {
     "F": 64.80855527832317,
     "df1": 3,
     "df2": 40,
     "p": 2.0585581788279736e-15,
     "alpha": 0.05,
     "preferFull": true
    },
    "rho": {
     "withheld": null,
     "logRho": -0.029907761281629437,
     "profile": {
      "low": {
       "status": "crossing",
       "value": -0.11308463301211538
      },
      "high": {
       "status": "crossing",
       "value": 0.05309522915028266
      }
     },
     "wald": {
      "low": -0.11076469178719432,
      "high": 0.050949169223935456,
      "se": 0.04009383808621087
     },
     "df": 43
    },
    "own": {
     "Reference": {
      "top": 98.15748859401243,
      "bottom": 0.5412649435009054,
      "logIC50": -6.009007573055958,
      "hill": -1.0466489294788601
     },
     "Test": {
      "top": 99.64354938721581,
      "bottom": -1.06431621105404,
      "logIC50": -5.9737052374179616,
      "hill": -1.9296086551455478
     }
    },
    "parallelism": {
     "level": 0.9,
     "df": 40,
     "tQuantile": 1.6838510133356523,
     "intervals": {
      "hillRatio": {
       "status": "computed",
       "estimate": 1.8436063906417262,
       "seLn": 0.07019029748543038,
       "low": 1.6380944486119624,
       "high": 2.074901435930666
      },
      "top": {
       "status": "computed",
       "estimate": 1.4860607932033787,
       "se": 1.4837979990372498,
       "low": -1.0124339710609078,
       "high": 3.984555557467665
      },
      "bottom": {
       "status": "computed",
       "estimate": -1.6055811545549454,
       "se": 1.4774066207125929,
       "low": -4.093313789950646,
       "high": 0.8821514808407558
      }
     },
     "margins": {
      "hillRatio": [
       0.8,
       1.25
      ],
      "top": [
       -10,
       10
      ],
      "bottom": [
       -10,
       10
      ]
     },
     "classes": {
      "hillRatio": "beyond",
      "top": "within",
      "bottom": "within"
     }
    }
   }
  },
  {
   "name": "rp03-tops",
   "about": "Top 100 against 70: the Top difference extends beyond -10 to 10",
   "margins": {
    "hillRatio": [
     0.8,
     1.25
    ],
    "top": [
     -10,
     10
    ],
    "bottom": [
     -10,
     10
    ]
   },
   "curves": [
    {
     "id": "Reference",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      101.69179085051667,
      98.64179085051666,
      103.23979085051666,
      95.82897847979775,
      94.23097847979776,
      95.80597847979774,
      84.70604427886767,
      84.99504427886767,
      81.94404427886766,
      66.7134999802885,
      61.73349998028851,
      62.56349998028851,
      39.77750001971149,
      34.47750001971149,
      37.27050001971149,
      14.94095572113233,
      17.18495572113233,
      13.93495572113233,
      7.738021520202244,
      4.963021520202244,
      7.603021520202244,
      -1.2947908505166554,
      1.2302091494833443,
      2.5502091494833445
     ]
    },
    {
     "id": "Test",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      68.90195359536166,
      66.61695359536166,
      69.60895359536165,
      67.58018493585843,
      65.34718493585842,
      64.54318493585842,
      58.336430995207365,
      60.71543099520736,
      59.89543099520736,
      45.47454998620196,
      48.344549986201955,
      44.29154998620196,
      25.180450013798044,
      27.283450013798046,
      24.466450013798045,
      12.708569004792631,
      12.87356900479263,
      9.25456900479263,
      4.465815064141571,
      2.076815064141571,
      9.29781506414157,
      4.606046404638341,
      -0.09695359536165915,
      0.524046404638341
     ]
    }
   ],
   "expected": {
    "status": "computed",
    "reference": "Reference",
    "test": "Test",
    "n": 48,
    "separate": {
     "rss": 152.99077841110812,
     "df": 40
    },
    "constrained": {
     "rss": 2473.6334557888367,
     "df": 43
    },
    "jointF": {
     "F": 202.24684576668446,
     "df1": 3,
     "df2": 40,
     "p": 3.344988594631365e-24,
     "alpha": 0.05,
     "preferFull": true
    },
    "rho": {
     "withheld": null,
     "logRho": 0.5914704535857274,
     "profile": {
      "low": {
       "status": "crossing",
       "value": 0.398890983624866
      },
      "high": {
       "status": "crossing",
       "value": 0.7784714313039481
      }
     },
     "wald": {
      "low": 0.419756517274141,
      "high": 0.7631843898973137,
      "se": 0.0851463284170655
     },
     "df": 43
    },
    "own": {
     "Reference": {
      "top": 103.66787144569005,
      "bottom": -1.6229385773155263,
      "logIC50": -6.0197318035182,
      "hill": -0.8863288467555004
     },
     "Test": {
      "top": 69.3069929490208,
      "bottom": 1.071693286131186,
      "logIC50": -5.98073583755875,
      "hill": -1.0211617187214992
     }
    },
    "parallelism": {
     "level": 0.9,
     "df": 40,
     "tQuantile": 1.6838510133356523,
     "intervals": {
      "hillRatio": {
       "status": "computed",
       "estimate": 1.1521251084849249,
       "seLn": 0.08672143835105506,
       "low": 0.9955919198783535,
       "high": 1.3332694240463376
      },
      "top": {
       "status": "computed",
       "estimate": -34.36087849666926,
       "se": 1.7973306091847447,
       "low": -37.387315464244175,
       "high": -31.33444152909434
      },
      "bottom": {
       "status": "computed",
       "estimate": 2.6946318634467126,
       "se": 1.7855317517691207,
       "low": -0.3119375861127036,
       "high": 5.701201313006129
      }
     },
     "margins": {
      "hillRatio": [
       0.8,
       1.25
      ],
      "top": [
       -10,
       10
      ],
      "bottom": [
       -10,
       10
      ]
     },
     "classes": {
      "hillRatio": "beyond",
      "top": "beyond",
      "bottom": "within"
     }
    }
   }
  },
  {
   "name": "rp04-precise",
   "about": "sigma 0.3, Hill -1.00 against -1.05: the joint F flags, every interval within the margins",
   "margins": {
    "hillRatio": [
     0.8,
     1.25
    ],
    "top": [
     -10,
     10
    ],
    "bottom": [
     -10,
     10
    ]
   },
   "curves": [
    {
     "id": "Reference",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      97.67779085051666,
      98.21379085051666,
      97.62179085051666,
      95.13397847979775,
      95.09297847979775,
      94.54797847979775,
      85.06504427886766,
      84.79504427886766,
      85.41504427886767,
      63.62549998028851,
      63.38549998028851,
      63.96449998028851,
      35.88650001971149,
      36.04650001971149,
      36.11150001971149,
      15.38395572113233,
      15.14695572113233,
      14.986955721132329,
      5.467021520202244,
      5.597021520202244,
      4.681021520202244,
      1.2382091494833443,
      1.5312091494833444,
      1.7972091494833444
     ]
    },
    {
     "id": "Test",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      98.05204765188248,
      98.48804765188248,
      98.34504765188248,
      95.35245052778819,
      95.4174505277882,
      95.1394505277882,
      85.75285194581956,
      85.89285194581956,
      85.73685194581955,
      65.06388423256146,
      64.81188423256145,
      65.05688423256146,
      35.03411576743853,
      35.328115767438526,
      35.520115767438526,
      14.263148054180439,
      14.956148054180439,
      13.772148054180438,
      4.639549472211809,
      4.695549472211808,
      4.599549472211809,
      1.5589523481175305,
      1.3819523481175304,
      1.1439523481175304
     ]
    }
   ],
   "expected": {
    "status": "computed",
    "reference": "Reference",
    "test": "Test",
    "n": 48,
    "separate": {
     "rss": 4.401620542476811,
     "df": 40
    },
    "constrained": {
     "rss": 9.666532423462746,
     "df": 43
    },
    "jointF": {
     "F": 15.948404548364651,
     "df1": 3,
     "df2": 40,
     "p": 5.679168482868681e-07,
     "alpha": 0.05,
     "preferFull": true
    },
    "rho": {
     "withheld": null,
     "logRho": -0.003350331603477308,
     "profile": {
      "low": {
       "status": "crossing",
       "value": -0.012166689061340134
      },
      "high": {
       "status": "crossing",
       "value": 0.005466155381466245
      }
     },
     "wald": {
      "low": -0.012164797026945954,
      "high": 0.005464133819991338,
      "se": 0.004370753963764841
     },
     "df": 43
    },
    "own": {
     "Reference": {
      "top": 99.93871983806153,
      "bottom": -0.12157599407920483,
      "logIC50": -5.998969063565358,
      "hill": -0.9992951125013295
     },
     "Test": {
      "top": 99.76453927550638,
      "bottom": -0.02379614534715192,
      "logIC50": -5.994720427041006,
      "hill": -1.0501500689664909
     }
    },
    "parallelism": {
     "level": 0.9,
     "df": 40,
     "tQuantile": 1.6838510133356523,
     "intervals": {
      "hillRatio": {
       "status": "computed",
       "estimate": 1.0508908287741612,
       "seLn": 0.011550908187209124,
       "low": 1.030648488255851,
       "high": 1.0715307367990734
      },
      "top": {
       "status": "computed",
       "estimate": -0.1741805625551507,
       "se": 0.27436698547422894,
       "low": -0.6361736890717793,
       "high": 0.2878125639614779
      },
      "bottom": {
       "status": "computed",
       "estimate": 0.09777984873205291,
       "se": 0.275495156328049,
       "low": -0.36611294941999634,
       "high": 0.5616726468841021
      }
     },
     "margins": {
      "hillRatio": [
       0.8,
       1.25
      ],
      "top": [
       -10,
       10
      ],
      "bottom": [
       -10,
       10
      ]
     },
     "classes": {
      "hillRatio": "within",
      "top": "within",
      "bottom": "within"
     }
    }
   }
  },
  {
   "name": "rp05-weak",
   "about": "Test C50 above the highest concentration: rho withheld, the bottom difference withheld",
   "margins": null,
   "curves": [
    {
     "id": "Reference",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      97.80579085051666,
      98.18879085051667,
      97.15979085051666,
      94.29197847979775,
      95.27997847979775,
      95.42497847979774,
      87.08004427886766,
      82.55604427886766,
      85.54804427886766,
      66.64349998028851,
      62.90249998028851,
      62.36049998028851,
      35.13950001971149,
      34.93050001971149,
      37.89050001971149,
      15.153955721132329,
      15.74495572113233,
      15.573955721132329,
      8.042021520202244,
      5.485021520202244,
      5.113021520202244,
      8.625209149483345,
      2.2072091494833446,
      4.094209149483344
     ]
    },
    {
     "id": "Test",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      103.33853124586551,
      103.87353124586552,
      102.31153124586551,
      96.61292390601554,
      100.54092390601555,
      99.71092390601554,
      101.1294410851352,
      100.4144410851352,
      97.47844108513519,
      99.68643111336924,
      98.92343111336923,
      99.38943111336923,
      98.5874448715175,
      98.22244487151751,
      97.10344487151751,
      86.99273716432768,
      90.34673716432768,
      92.31773716432768,
      70.78690325404187,
      75.47790325404188,
      77.41090325404187,
      45.94194361077315,
      45.58294361077315,
      46.52694361077315
     ]
    }
   ],
   "expected": {
    "status": "computed",
    "reference": "Reference",
    "test": "Test",
    "n": 48,
    "separate": {
     "rss": 148.1087902475133,
     "df": 40
    },
    "constrained": {
     "rss": 156.47286075947213,
     "df": 43
    },
    "jointF": {
     "F": 0.752966383514995,
     "df1": 3,
     "df2": 40,
     "p": 0.5271427205598893,
     "alpha": 0.05,
     "preferFull": false
    },
    "rho": {
     "withheld": "unbounded-interval"
    },
    "own": {
     "Reference": {
      "top": 99.2231306363064,
      "bottom": 2.987292076740067,
      "logIC50": -6.023332017716665,
      "hill": -1.0622728802528247
     },
     "Test": {
      "top": 100.96263058330992,
      "bottom": -28.651109318637697,
      "logIC50": -4.104221008835256,
      "hill": -0.9143667389350287
     }
    },
    "parallelism": {
     "level": 0.9,
     "df": 40,
     "tQuantile": 1.6838510133356523,
     "intervals": {
      "hillRatio": {
       "status": "computed",
       "estimate": 0.8607644569796474,
       "seLn": 0.17784862585814423,
       "low": 0.638007672414126,
       "high": 1.1612955179613336
      },
      "top": {
       "status": "computed",
       "estimate": 1.739499947003523,
       "se": 1.3032857337877408,
       "low": -0.45503905650086374,
       "high": 3.93403895050791
      },
      "bottom": {
       "status": "withheld",
       "reason": "plateau-extrapolated",
       "curves": [
        "Test"
       ]
      }
     },
     "margins": null,
     "classes": {
      "hillRatio": null,
      "top": null,
      "bottom": null
     }
    }
   }
  },
  {
   "name": "rp06-rising",
   "about": "Rising curves, Hill +1, rho = 0.5",
   "margins": null,
   "curves": [
    {
     "id": "Reference",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      1.9762091494833445,
      0.8412091494833444,
      3.9142091494833444,
      6.249021520202244,
      5.088021520202244,
      6.010021520202244,
      14.78995572113233,
      14.49395572113233,
      13.84095572113233,
      33.51250001971149,
      31.82150001971149,
      34.84250001971149,
      61.85049998028851,
      64.2134999802885,
      64.36449998028851,
      80.56104427886767,
      85.97704427886767,
      87.26004427886767,
      95.22397847979775,
      95.96497847979775,
      91.84997847979776,
      100.52879085051666,
      98.71879085051665,
      101.19679085051666
     ]
    },
    {
     "id": "Test",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      -0.07369631595716275,
      1.2583036840428372,
      2.1533036840428372,
      4.210811742967423,
      6.046811742967423,
      3.585811742967423,
      9.687380637091131,
      9.56638063709113,
      9.25638063709113,
      22.21638628593223,
      19.12238628593223,
      22.13738628593223,
      45.93785239074744,
      52.981852390747434,
      48.30885239074744,
      76.78303235606937,
      70.82903235606938,
      73.27403235606937,
      88.41020464019968,
      91.44820464019969,
      86.42520464019968,
      95.74158806066828,
      99.43458806066828,
      96.45858806066828
     ]
    }
   ],
   "expected": {
    "status": "computed",
    "reference": "Reference",
    "test": "Test",
    "n": 48,
    "separate": {
     "rss": 163.92523940795655,
     "df": 40
    },
    "constrained": {
     "rss": 171.81711696513742,
     "df": 43
    },
    "jointF": {
     "F": 0.6419086802970834,
     "df1": 3,
     "df2": 40,
     "p": 0.5925725156894583,
     "alpha": 0.05,
     "preferFull": false
    },
    "rho": {
     "withheld": null,
     "logRho": -0.26501864840591516,
     "profile": {
      "low": {
       "status": "crossing",
       "value": -0.3026281427104951
      },
      "high": {
       "status": "crossing",
       "value": -0.2274225744399448
      }
     },
     "wald": {
      "low": -0.302637953517744,
      "high": -0.22739934329408637,
      "se": 0.01865396470826482
     },
     "df": 43
    },
    "own": {
     "Reference": {
      "top": 101.0458982544153,
      "bottom": 0.9719779610314224,
      "logIC50": -5.950649455393746,
      "hill": 1.0200936213742062
     },
     "Test": {
      "top": 99.81565045908211,
      "bottom": 0.8718039074331803,
      "logIC50": -5.702368857274881,
      "hill": 0.9958385792398003
     }
    },
    "parallelism": {
     "level": 0.9,
     "df": 40,
     "tQuantile": 1.6838510133356523,
     "intervals": {
      "hillRatio": {
       "status": "computed",
       "estimate": 0.9762227293395571,
       "seLn": 0.07238488777584298,
       "low": 0.8642010167657351,
       "high": 1.1027652117858053
      },
      "top": {
       "status": "computed",
       "estimate": -1.2302477953331987,
       "se": 1.9871019460028039,
       "low": -4.576231420711267,
       "high": 2.115735830044869
      },
      "bottom": {
       "status": "computed",
       "estimate": -0.10017405359824216,
       "se": 1.539034756676991,
       "low": -2.691679288187583,
       "high": 2.4913311809910983
      }
     },
     "margins": null,
     "classes": {
      "hillRatio": null,
      "top": null,
      "bottom": null
     }
    }
   }
  },
  {
   "name": "rp07-three-concentrations",
   "about": "Test with three concentrations: refused, naming it",
   "margins": null,
   "curves": [
    {
     "id": "Reference",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      97.54579085051667,
      98.06579085051666,
      98.85179085051666,
      96.53897847979775,
      95.14597847979775,
      95.44597847979774,
      85.62904427886767,
      83.17304427886766,
      84.57604427886767,
      68.00449998028851,
      64.41549998028852,
      66.71849998028851,
      38.91950001971149,
      35.07650001971149,
      37.70950001971149,
      14.56295572113233,
      12.284955721132329,
      16.43595572113233,
      6.918021520202244,
      5.435021520202244,
      4.784021520202244,
      1.9332091494833443,
      -0.042790850516655654,
      2.6242091494833444
     ]
    },
    {
     "id": "Test",
     "x": [
      -7.0,
      -7.0,
      -7.0,
      -6.0,
      -6.0,
      -6.0,
      -5.0,
      -5.0,
      -5.0
     ],
     "y": [
      88.5160909090909,
      89.6020909090909,
      91.5540909090909,
      48.206,
      50.221,
      49.336,
      7.510909090909092,
      4.888909090909092,
      9.776909090909092
     ]
    }
   ],
   "expected": {
    "status": "refused",
    "reason": "too-few-concentrations",
    "curve": "Test"
   }
  },
  {
   "name": "rp08-opposite",
   "about": "Hill -1 against +1: refused",
   "margins": null,
   "curves": [
    {
     "id": "Reference",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      97.84679085051665,
      96.99879085051666,
      97.75979085051667,
      95.06597847979775,
      92.63397847979775,
      96.89797847979774,
      86.22504427886766,
      85.13804427886767,
      86.20004427886767,
      62.37149998028851,
      62.99149998028851,
      65.06249998028851,
      34.31150001971149,
      37.40250001971149,
      37.64650001971149,
      16.35595572113233,
      15.82895572113233,
      19.38195572113233,
      5.516021520202244,
      5.185021520202244,
      5.477021520202244,
      1.8522091494833444,
      2.764209149483344,
      0.4762091494833445
     ]
    },
    {
     "id": "Test",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      -0.7977908505166555,
      5.140209149483344,
      4.332209149483345,
      7.000021520202244,
      4.139021520202244,
      0.7590215202022437,
      13.39795572113233,
      15.82795572113233,
      18.31995572113233,
      34.93550001971149,
      34.961500019711494,
      35.91950001971149,
      63.00549998028851,
      63.49049998028851,
      61.31849998028851,
      87.21304427886767,
      86.04204427886766,
      88.06404427886767,
      94.07297847979775,
      95.91497847979775,
      97.27197847979775,
      98.97579085051666,
      95.54379085051666,
      94.34679085051665
     ]
    }
   ],
   "expected": {
    "status": "refused",
    "reason": "opposite-directions"
   }
  },
  {
   "name": "rp09-margin-edges",
   "about": "Case 1 with Hill margins just outside its interval (within) and Top margins not bracketing 0 (refused)",
   "margins": {
    "hillRatio": [
     0.916469540656787,
     1.156707996955922
    ],
    "top": [
     1,
     10
    ],
    "bottom": [
     -10,
     10
    ]
   },
   "curves": [
    {
     "id": "Reference",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      97.31079085051667,
      99.17679085051667,
      96.63279085051666,
      98.39797847979774,
      91.75297847979775,
      94.16297847979774,
      86.98804427886766,
      88.10804427886767,
      85.20304427886767,
      66.78149998028852,
      61.44449998028851,
      60.04649998028851,
      31.23450001971149,
      35.60350001971149,
      37.67050001971149,
      14.85695572113233,
      14.64495572113233,
      12.68895572113233,
      5.688021520202244,
      3.462021520202244,
      3.247021520202244,
      4.388209149483345,
      4.440209149483344,
      2.1062091494833446
     ]
    },
    {
     "id": "Test",
     "x": [
      -7.75,
      -7.75,
      -7.75,
      -7.25,
      -7.25,
      -7.25,
      -6.75,
      -6.75,
      -6.75,
      -6.25,
      -6.25,
      -6.25,
      -5.75,
      -5.75,
      -5.75,
      -5.25,
      -5.25,
      -5.25,
      -4.75,
      -4.75,
      -4.75,
      -4.25,
      -4.25,
      -4.25
     ],
     "y": [
      97.50158806066828,
      94.26158806066827,
      93.15358806066827,
      88.70920464019969,
      89.81020464019969,
      90.34720464019968,
      74.11203235606936,
      74.14103235606937,
      74.83903235606937,
      49.24485239074744,
      48.075852390747436,
      50.58085239074744,
      21.578386285932233,
      18.95238628593223,
      17.54438628593223,
      8.298380637091132,
      6.729380637091131,
      7.568380637091131,
      3.0598117429674234,
      3.396811742967423,
      -0.08618825703257693,
      2.456303684042837,
      1.9973036840428373,
      0.05430368404283725
     ]
    }
   ],
   "expected": {
    "status": "computed",
    "reference": "Reference",
    "test": "Test",
    "n": 48,
    "separate": {
     "rss": 156.60526209641404,
     "df": 40
    },
    "constrained": {
     "rss": 173.61945676889493,
     "df": 43
    },
    "jointF": {
     "F": 1.4485843319028968,
     "df1": 3,
     "df2": 40,
     "p": 0.24306617384816068,
     "alpha": 0.05,
     "preferFull": false
    },
    "rho": {
     "withheld": null,
     "logRho": 0.28197257207346205,
     "profile": {
      "low": {
       "status": "crossing",
       "value": 0.2448622005845702
      },
      "high": {
       "status": "crossing",
       "value": 0.3191184789658141
      }
     },
     "wald": {
      "low": 0.2449043495965357,
      "high": 0.3190407945503884,
      "se": 0.018380704051475724
     },
     "df": 43
    },
    "own": {
     "Reference": {
      "top": 99.20924843125199,
      "bottom": 1.7009968681823537,
      "logIC50": -6.025753897831792,
      "hill": -1.0952283054981644
     },
     "Test": {
      "top": 96.5270643227472,
      "bottom": 0.5945650595318518,
      "logIC50": -6.262007321768797,
      "hill": -1.1276531727353223
     }
    },
    "parallelism": {
     "level": 0.9,
     "df": 40,
     "tQuantile": 1.6838510133356523,
     "intervals": {
      "hillRatio": {
       "status": "computed",
       "estimate": 1.0296055781925846,
       "seLn": 0.06912799342660983,
       "low": 0.9164704571272442,
       "high": 1.1567068402490819
      },
      "top": {
       "status": "computed",
       "estimate": -2.6821841085047993,
       "se": 1.6777412151018058,
       "low": -5.507250353668963,
       "high": 0.14288213665936533
      },
      "bottom": {
       "status": "computed",
       "estimate": -1.1064318086505018,
       "se": 1.3935044736951017,
       "low": -3.452885728769764,
       "high": 1.2400221114687602
      }
     },
     "margins": {
      "hillRatio": [
       0.916469540656787,
       1.156707996955922
      ],
      "top": [
       1,
       10
      ],
      "bottom": [
       -10,
       10
      ]
     },
     "classes": {
      "hillRatio": "within",
      "top": "margins-refused",
      "bottom": "within"
     }
    }
   }
  }
 ]
}
