{
 "about": {
  "method": "false-discovery-rate",
  "origin": "Original synthetic p-values, and the 15 p-values of Benjamini and Hochberg's 1995 example as the CSO recalled them",
  "ruling": "CSO memo of 13 October 2026 (docs/board/memos/2026-10-13-cso-fdr.md); roadmap A-2 family 6",
  "settings": "p.adjust(p, method = 'BH' | 'BY' | 'holm' | 'bonferroni'); counts as sum(adjusted <= level) at 0.01, 0.05, 0.10",
  "generator": "u_i = (i * 0.6180339887498949) % 1, i = 1..m; golden-8 (m-10000): u_i, or ((u_i^2)^2)^2 when i is a multiple of 10 (a repeatable stand-in for the memo's runif/rbeta draws); golden-3 (m-1000): u_i * u_i * u_i; text rows 'T<i>\\t<repr(p)>' under the header 'Test\\tp'",
  "withheldCodes": [
   "P_OUT_OF_RANGE",
   "P_TEXT_CELL",
   "M_TOO_SMALL"
  ],
  "tolerances": {
   "adjusted p and sums": "1e-12 relative",
   "counts, m, withheld states": "exact"
  },
  "recordedOn": "2026-10-13",
  "script": "pipeline/assay-analyser/oracles/fdr.py",
  "scriptSha256": "167d28d856905492952af101f03fb8113a9e6d05d7a6b72af8ce3fe754111b68",
  "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"
   },
   "python": "3.11.15",
   "numpy": "2.0.2",
   "scipy": "1.13.1",
   "recordedOn": "2026-10-13",
   "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 stats::p.adjust",
   "version": "R version 4.4.3 (2025-02-28)",
   "script": "pipeline/assay-analyser/oracles/r/fdr.R",
   "scriptSha256": "225b7a96e26a4f324eed625eb4f20e4f05d82f25a5b52a16ed19ec2de2c3212a",
   "ran": true
  }
 },
 "oracle": {
  "engine": "R stats::p.adjust (fdr.R)",
  "method": "every adjusted p from R; the withholding rules from the memo, applied here"
 },
 "cases": [
  {
   "name": "bh-1995",
   "text": "Test\tp\nT1\t0.0001\nT2\t0.0004\nT3\t0.0019\nT4\t0.0095\nT5\t0.0201\nT6\t0.0278\nT7\t0.0298\nT8\t0.0344\nT9\t0.0459\nT10\t0.3240\nT11\t0.4262\nT12\t0.5719\nT13\t0.6528\nT14\t0.7590\nT15\t1.000",
   "expected": {
    "status": "value",
    "m": 15,
    "blank": 0,
    "excluded": 0,
    "zeros": 0,
    "methods": {
     "BH": {
      "adjusted": [
       0.0015,
       0.003,
       0.0095,
       0.035625,
       0.0603,
       0.0638571428571429,
       0.0638571428571429,
       0.0645,
       0.0765,
       0.486,
       0.581181818181818,
       0.714875,
       0.753230769230769,
       0.813214285714286,
       1
      ],
      "sum": 4.72714115884116,
      "counts": {
       "0.01": 3,
       "0.05": 4,
       "0.1": 9
      }
     },
     "BY": {
      "adjusted": [
       0.00497734348984349,
       0.00995468697968698,
       0.0315231754356754,
       0.118211907883783,
       0.200089208291708,
       0.211892622853337,
       0.211892622853337,
       0.21402577006327,
       0.253844517982018,
       1,
       1,
       1,
       1,
       1,
       1
      ],
      "sum": 7.25641185583266,
      "counts": {
       "0.01": 2,
       "0.05": 3,
       "0.1": 3
      }
     },
     "holm": {
      "adjusted": [
       0.0015,
       0.0056,
       0.0247,
       0.114,
       0.2211,
       0.278,
       0.278,
       0.278,
       0.3213,
       1,
       1,
       1,
       1,
       1,
       1
      ],
      "sum": 7.5222,
      "counts": {
       "0.01": 2,
       "0.05": 3,
       "0.1": 3
      }
     },
     "bonferroni": {
      "adjusted": [
       0.0015,
       0.006,
       0.0285,
       0.1425,
       0.3015,
       0.417,
       0.447,
       0.516,
       0.6885,
       1,
       1,
       1,
       1,
       1,
       1
      ],
      "sum": 8.5485,
      "counts": {
       "0.01": 2,
       "0.05": 3,
       "0.1": 3
      }
     }
    },
    "byFactor": 3.31822899322899
   }
  },
  {
   "name": "hand-0.01-to-0.05",
   "text": "Test\tp\nT1\t0.01\nT2\t0.02\nT3\t0.03\nT4\t0.04\nT5\t0.05",
   "expected": {
    "status": "value",
    "m": 5,
    "blank": 0,
    "excluded": 0,
    "zeros": 0,
    "methods": {
     "BH": {
      "adjusted": [
       0.05,
       0.05,
       0.05,
       0.05,
       0.05
      ],
      "sum": 0.25,
      "counts": {
       "0.01": 0,
       "0.05": 5,
       "0.1": 5
      }
     },
     "BY": {
      "adjusted": [
       0.114166666666667,
       0.114166666666667,
       0.114166666666667,
       0.114166666666667,
       0.114166666666667
      ],
      "sum": 0.570833333333333,
      "counts": {
       "0.01": 0,
       "0.05": 0,
       "0.1": 0
      }
     },
     "holm": {
      "adjusted": [
       0.05,
       0.08,
       0.09,
       0.09,
       0.09
      ],
      "sum": 0.4,
      "counts": {
       "0.01": 0,
       "0.05": 1,
       "0.1": 5
      }
     },
     "bonferroni": {
      "adjusted": [
       0.05,
       0.1,
       0.15,
       0.2,
       0.25
      ],
      "sum": 0.75,
      "counts": {
       "0.01": 0,
       "0.05": 1,
       "0.1": 2
      }
     }
    },
    "byFactor": 2.28333333333333
   }
  },
  {
   "name": "ties",
   "text": "Test\tp\nT1\t0.04\nT2\t0.001\nT3\t0.04\nT4\t0.3\nT5\t0.04\nT6\t0.02\nT7\t0.9\nT8\t0.6\nT9\t0.005\nT10\t0.5",
   "expected": {
    "status": "value",
    "m": 10,
    "blank": 0,
    "excluded": 0,
    "zeros": 0,
    "methods": {
     "BH": {
      "adjusted": [
       0.0666666666666667,
       0.01,
       0.0666666666666667,
       0.428571428571429,
       0.0666666666666667,
       0.0666666666666667,
       0.9,
       0.666666666666667,
       0.025,
       0.625
      ],
      "sum": 2.92190476190476,
      "counts": {
       "0.01": 1,
       "0.05": 2,
       "0.1": 6
      }
     },
     "BY": {
      "adjusted": [
       0.19526455026455,
       0.0292896825396825,
       0.19526455026455,
       1,
       0.19526455026455,
       0.19526455026455,
       1,
       1,
       0.0732242063492063,
       1
      ],
      "sum": 4.88357208994709,
      "counts": {
       "0.01": 0,
       "0.05": 1,
       "0.1": 2
      }
     },
     "holm": {
      "adjusted": [
       0.28,
       0.01,
       0.28,
       1,
       0.28,
       0.16,
       1,
       1,
       0.045,
       1
      ],
      "sum": 5.055,
      "counts": {
       "0.01": 1,
       "0.05": 2,
       "0.1": 2
      }
     },
     "bonferroni": {
      "adjusted": [
       0.4,
       0.01,
       0.4,
       1,
       0.4,
       0.2,
       1,
       1,
       0.05,
       1
      ],
      "sum": 5.46,
      "counts": {
       "0.01": 1,
       "0.05": 2,
       "0.1": 2
      }
     }
    },
    "byFactor": 2.92896825396825
   }
  },
  {
   "name": "zero-and-one",
   "text": "Test\tp\nT1\t0\nT2\t0.03\nT3\t1\nT4\t0.2\nT5\t0.004",
   "expected": {
    "status": "value",
    "m": 5,
    "blank": 0,
    "excluded": 0,
    "zeros": 1,
    "methods": {
     "BH": {
      "adjusted": [
       0,
       0.05,
       1,
       0.25,
       0.01
      ],
      "sum": 1.31,
      "counts": {
       "0.01": 2,
       "0.05": 3,
       "0.1": 3
      }
     },
     "BY": {
      "adjusted": [
       0,
       0.114166666666667,
       1,
       0.570833333333333,
       0.0228333333333333
      ],
      "sum": 1.70783333333333,
      "counts": {
       "0.01": 1,
       "0.05": 2,
       "0.1": 2
      }
     },
     "holm": {
      "adjusted": [
       0,
       0.09,
       1,
       0.4,
       0.016
      ],
      "sum": 1.506,
      "counts": {
       "0.01": 1,
       "0.05": 2,
       "0.1": 3
      }
     },
     "bonferroni": {
      "adjusted": [
       0,
       0.15,
       1,
       1,
       0.02
      ],
      "sum": 2.17,
      "counts": {
       "0.01": 1,
       "0.05": 2,
       "0.1": 2
      }
     }
    },
    "byFactor": 2.28333333333333
   }
  },
  {
   "name": "m-one",
   "text": "Test\tp\nT1\t0.03",
   "expected": {
    "status": "withheld",
    "code": "M_TOO_SMALL",
    "m": 1,
    "blank": 0,
    "excluded": 0,
    "r": {
     "BH": {
      "adjusted": 0.03,
      "sum": 0.03,
      "counts": {
       "0.01": 0,
       "0.05": 1,
       "0.1": 1
      }
     },
     "BY": {
      "adjusted": 0.03,
      "sum": 0.03,
      "counts": {
       "0.01": 0,
       "0.05": 1,
       "0.1": 1
      }
     },
     "holm": {
      "adjusted": 0.03,
      "sum": 0.03,
      "counts": {
       "0.01": 0,
       "0.05": 1,
       "0.1": 1
      }
     },
     "bonferroni": {
      "adjusted": 0.03,
      "sum": 0.03,
      "counts": {
       "0.01": 0,
       "0.05": 1,
       "0.1": 1
      }
     }
    }
   }
  },
  {
   "name": "out-of-range",
   "text": "Test\tp\nT1\t0.02\nT2\t1.2\nT3\t-0.01\nT4\t0.4",
   "expected": {
    "status": "withheld",
    "code": "P_OUT_OF_RANGE",
    "rows": [
     {
      "row": 2,
      "value": 1.2
     },
     {
      "row": 3,
      "value": -0.01
     }
    ]
   }
  },
  {
   "name": "text-cells",
   "text": "Test\tp\nT1\t0.02\nT2\t<0.001\nT3\tn.s.\nT4\t0.4",
   "expected": {
    "status": "withheld",
    "code": "P_TEXT_CELL",
    "rows": [
     {
      "row": 2,
      "text": "<0.001"
     },
     {
      "row": 3,
      "text": "n.s."
     }
    ]
   }
  },
  {
   "name": "blank-inside",
   "text": "Test\tp\nT1\t0.01\nT2\t\nT3\t0.2\nT4\t0.03\nT5\t\nT6\t0.5",
   "expected": {
    "status": "value",
    "m": 4,
    "blank": 2,
    "excluded": 0,
    "zeros": 0,
    "methods": {
     "BH": {
      "adjusted": [
       0.04,
       0.266666666666667,
       0.06,
       0.5
      ],
      "sum": 0.866666666666667,
      "counts": {
       "0.01": 0,
       "0.05": 1,
       "0.1": 2
      }
     },
     "BY": {
      "adjusted": [
       0.0833333333333333,
       0.555555555555556,
       0.125,
       1
      ],
      "sum": 1.76388888888889,
      "counts": {
       "0.01": 0,
       "0.05": 0,
       "0.1": 1
      }
     },
     "holm": {
      "adjusted": [
       0.04,
       0.4,
       0.09,
       0.5
      ],
      "sum": 1.03,
      "counts": {
       "0.01": 0,
       "0.05": 1,
       "0.1": 2
      }
     },
     "bonferroni": {
      "adjusted": [
       0.04,
       0.8,
       0.12,
       1
      ],
      "sum": 1.96,
      "counts": {
       "0.01": 0,
       "0.05": 1,
       "0.1": 1
      }
     }
    },
    "byFactor": 2.08333333333333
   }
  },
  {
   "name": "m-1000",
   "generated": {
    "kind": "golden-3",
    "m": 1000
   },
   "expected": {
    "status": "value",
    "m": 1000,
    "blank": 0,
    "excluded": 0,
    "zeros": 0,
    "methods": {
     "BH": {
      "adjusted": [
       0.381369915185444,
       0.177366969992409,
       0.0505115085563882,
       0.000803531538427331,
       0.691299615589505,
       0.402644948723579,
       0.191967657089086,
       0.0581973642404463,
       0.00201084024392016,
       0.719843405103141
      ],
      "sum": 333.077140276786,
      "counts": {
       "0.01": 101,
       "0.05": 224,
       "0.1": 316
      }
     },
     "BY": {
      "adjusted": [
       1,
       1,
       0.378102425421283,
       0.00601481191643098,
       1,
       1,
       1,
       0.435634674182695,
       0.0150520860510863,
       1
      ],
      "sum": 756.032150199304,
      "counts": {
       "0.01": 37,
       "0.05": 81,
       "0.1": 116
      }
     },
     "holm": {
      "adjusted": [
       1,
       1,
       1,
       0.0218914132329142,
       1,
       1,
       1,
       1,
       0.0883362119154124,
       1
      ],
      "sum": 922.805523901527,
      "counts": {
       "0.01": 21,
       "0.05": 38,
       "0.1": 47
      }
     },
     "bonferroni": {
      "adjusted": [
       1,
       1,
       1,
       0.0224988830759653,
       1,
       1,
       1,
       1,
       0.0924986512203271,
       1
      ],
      "sum": 925.014072466916,
      "counts": {
       "0.01": 21,
       "0.05": 37,
       "0.1": 47
      }
     }
    },
    "byFactor": 7.48547086055035,
    "sampledEvery": 100
   }
  },
  {
   "name": "m-10000",
   "generated": {
    "kind": "golden-8",
    "m": 10000
   },
   "expected": {
    "status": "value",
    "m": 10000,
    "blank": 0,
    "excluded": 0,
    "zeros": 0,
    "methods": {
     "BH": {
      "adjusted": [
       0.95037507275133,
       0.898385981111455,
       0.787930599618615,
       0.316486700878519,
       0.982770789911786,
       0.953487013776766,
       0.905093391178392,
       0.802875543414093,
       0.416436359722251,
       0.98469307184492,
       0.956652047308581,
       0.910292966230063,
       0.815325762507902,
       0.491852676784827,
       0.986671312231961,
       0.959851920339987,
       0.91499437390765,
       0.827527343447984,
       0.548951757176792,
       0.988478680199615,
       0.962410278770736,
       0.91959857859688,
       0.838274373085191,
       0.59608496597449,
       0.990209112660513,
       0.964911078071617,
       0.924742174833834,
       0.847525069990215,
       0.634898981804413,
       0.991946422172893,
       0.967441039731755,
       0.928815988081317,
       0.857512433517569,
       0.668018796322067,
       0.993457607154099,
       0.969815514512996,
       0.932976698680882,
       0.865539591425922,
       0.696779010898075,
       0.99491915178756,
       0.972469827511119,
       0.936892215181182,
       0.873360291749589,
       0.720112339025578,
       0.996455476275756,
       0.975036583068201,
       0.940968405728854,
       0.881628606315456,
       0.742337529746464,
       0.998329210772971,
       0.977127211128297,
       0.944816616332027,
       0.888512769837036,
       0.761330630782636,
       0.0340481948860567,
       0.979342713756951,
       0.948157521346548,
       0.89454309462556,
       0.778750409483041,
       0.239273365077538,
       0.981335348757659,
       0.951340342958921,
       0.900765206088678,
       0.793720044743961,
       0.362507523725394,
       0.983310903735184,
       0.954330319501199,
       0.906935123185463,
       0.807856061576066,
       0.450740677739713,
       0.985273706774155,
       0.957752981339745,
       0.912110394539906,
       0.820070645451982,
       0.516721678843607,
       0.987444316491251,
       0.960940966336638,
       0.916899426527068,
       0.832487786276091,
       0.571254870754712,
       0.9891837355297,
       0.963563496338452,
       0.922048857227574,
       0.842567274315381,
       0.614477672802598,
       0.991045093769224,
       0.966009443577633,
       0.926674615417267,
       0.852232925271398,
       0.65012870989335,
       0.992693215261106,
       0.968572196743589,
       0.930895466054123,
       0.861550579359264,
       0.680486373505719,
       0.994345504400293,
       0.971114991597907,
       0.934931912594168,
       0.86949496400029,
       0.70814805162758
      ],
      "sum": 7960.56595280247,
      "counts": {
       "0.01": 381,
       "0.05": 498,
       "0.1": 576
      }
     },
     "BY": {
      "adjusted": [
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       0.333250317783184,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1
      ],
      "sum": 9515.92382139871,
      "counts": {
       "0.01": 272,
       "0.05": 344,
       "0.1": 382
      }
     },
     "holm": {
      "adjusted": [
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1
      ],
      "sum": 9716.08705301336,
      "counts": {
       "0.01": 180,
       "0.05": 220,
       "0.1": 240
      }
     },
     "bonferroni": {
      "adjusted": [
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1,
       1
      ],
      "sum": 9717.10118770327,
      "counts": {
       "0.01": 180,
       "0.05": 219,
       "0.1": 239
      }
     }
    },
    "byFactor": 9.78760603604438,
    "sampledEvery": 100
   }
  }
 ]
}
