Test 07 — Hub proteins are essential (H314)
Supplied working report; original verdicts not validated.
Review status: Needs review. This is an archival source note, not a passed proof.
README.md
# Test 07 — Hub proteins are essential (H314) ## Result The claim fails on P2 and P3. Degree strongly correlates with essentiality — the centrality–lethality baseline is present — but adding partner redundancy to a degree-only model raises out-of-sample AUC by 0.0056 (95% CI 0.0025–0.0109) in the full model and 0.0002 in the ratio model, against a pre-specified 0.03 threshold. A label permutation rerunning the cross-validation gives p = 0.726 and 0.985; such gains are ordinary under the null (mean +0.0049, SD 0.0149). The within-degree association runs the other way: the highest redundancy tercile is **more** likely to be essential, not less (Mantel–Haenszel OR 1.37, 95% CI 1.15–1.63, p = 0.0005; clustering OR 1.45, 1.24–1.71, p = 0.001). ## What was asked > "The probability that a protein is essential is set by the ratio of its interaction > degree to the redundancy of its partners, not by degree alone." P1: degree predicts essentiality (the baseline). P2: redundancy terms (clustering, mean partner degree) improve out-of-sample prediction. P3: within degree strata, higher-redundancy proteins are less likely to be essential. Support required an AUC gain of at least 0.03 (CI excluding zero, permutation p < 0.05) **and** a within-stratum OR below 1 (CI excluding 1). Pre-specification: `hypothesis.md`. ## Design STRING v12.0 *S. cerevisiae* links were thresholded at `combined_score >= 700`, with self-loops dropped and `4932.` stripped. The file lists every interaction twice; collapsing unordered pairs leaves 104,188 edges and 5,791 nodes. SGD null-allele phenotypes define essentiality: any `inviable` null allele means essential; otherwise any `viable` null allele means non-essential; neither is excluded. That gives 6,266 labelled genes (1,245 essential); the graph intersection is **5,403 proteins, 1,188 essential (22.0%)**. Features, computed on all graph nodes then subset to labelled proteins: log10 degree, local clustering, mean partner degree, and log10(degree / mean partner degree). Three hand-written IRLS logistic models (M1 degree; M2 degree + clustering + mean partner degree; M3 degree + log ratio) used in-fold standardisation and 20 repeats of stratified 10-fold CV, folds shared across models. Gains were paired-bootstrapped over proteins (2,000 resamples) and tested with 200 global label permutations rerunning the full CV. For P3, proteins were ranked into degree deciles and then within-decile terciles of each redundancy score; the Mantel–Haenszel OR compares top and bottom terciles across the ten strata, with a stratified bootstrap CI and 2,000 within-decile permutations. ## Prediction verdicts **P1 — supported (baseline only).** Degree alone reaches AUC 0.7569 (repeat SD 0.0002) and Spearman rho 0.369 (permutation p = 0.0005, the 2,000-permutation resolution floor). The essential fraction rises from 0.061 in the lowest degree decile to 0.487 in the highest. This is the rival explanation, not evidence for it. **P2 — refuted.** The M2 gain is 0.0056 and the M3 gain 0.0002, far below 0.03. Permutation p = 0.726 and 0.985; the null gain distributions have mean +0.0049 (SD 0.0149) and +0.0047 (SD 0.0130). The protein bootstrap CI for M2 excludes zero, but it is conditional on the fitted scores and omits the label/refitting variability the permutation test measures; the permutation test is decisive. BH q = 0.968 and 0.985. **P3 — refuted, opposite direction.** MH OR 1.37 (1.15–1.63, p = 0.0005) for mean-partner-degree redundancy and 1.45 (1.24–1.71, p = 0.001) for clustering, both q = 0.002. The claim requires OR < 1. The reverse association is concentrated in degree deciles D5–D9; the ratio score flips again in D10 (0.47 in T1 versus 0.41 in T3). ## Sensitivity At `>= 400` (281,178 edges, n = 5,783) the picture is unchanged: M2 gain 0.0119 (0.0080–0.0168), p = 0.323; ratio OR 1.35 (1.15–1.58), clustering OR 1.75 (1.48–2.06). At `>= 900` (53,176 edges, n = 4,430) the gains are −0.0035 and −0.0004 (p = 0.841, 0.955) and the ORs attenuate: ratio 1.18 (0.99–1.40), clustering 1.02 (0.86–1.21). The claim is refuted at every threshold; the reverse association is present at 400 and 700 but not at 900. ## What the test cannot see STRING is a confidence-scored association network, not a complete interactome; degree is measured with error, and missing edges attenuate redundancy signals. SGD labels are observational and heterogeneous across strains and experiments; 202 genes with both inviable and viable null alleles were labelled essential under the "any inviable" rule, adding noise. Clustering is zero-inflated at low degree. The permutation null shuffles labels globally, so it asks whether the gain exceeds chance, not whether redundancy adds value conditional on a correct degree model. Nothing here is causal. ## What would change the answer A threshold-robust AUC gain of at least 0.03 with p < 0.05 would support P2. A within-stratum OR below 1 (CI excluding 1), stable across 400/700/900, would support P3. A single-strain essentiality definition, a more complete interactome, or a different operationalisation of redundancy could change the result — but any such test run now would be post hoc. ## Numbers and where they live | Number | `results.json` key | |---|---| | n = 5,403; 1,188 essential | `thresholds.700.n`, `.n_essential` | | AUC 0.7569 / 0.7624 / 0.7571 | `thresholds.700.auc` | | Gains, CIs, permutation p, nulls | `p2_redundancy_prediction` | | ORs and P3 p-values | `p3_within_stratum` | | BH q | `multiplicity.bh_q` | | Spearman 0.369, p 0.0005 | `p1_baseline.spearman_degree_essential` | | Sensitivity | `sensitivity.400`, `sensitivity.900` | ## Disclosure AI-assisted (DeepSeek coding agent), not peer reviewed. Observational data: "associated with" is the strongest verb available. Not medical, clinical or safety advice.
hypothesis.md
# Test 07 — Hub proteins are essential (H314) **Claim, verbatim** (Original Theories, Volume XVI, 30 October 2026): > "The probability that a protein is essential is set by the ratio of its interaction degree to the redundancy of its partners, not by degree alone." **Published at:** https://incoprea.com/research-library/original-theories-vol16-20261030/ **Written:** 2026-10-30T17:23Z, before any association between graph features and essentiality was computed. Only file structure, row counts and label counts had been inspected at this point (field discovery and feasibility), never an AUC, an odds ratio, or an essentiality-by-feature table. ## Predictions - **P1** — degree predicts essentiality (the centrality–lethality rule). This is the baseline that the claim has to beat, not a test of the claim by itself. - **P2** — adding redundancy terms (clustering coefficient, mean partner degree) improves out-of-sample prediction of essentiality beyond degree alone. - **P3** — within degree strata, higher-redundancy proteins are less likely to be essential: the ratio, not the degree. ## Pre-specified support / refute criteria The claim is **supported** only if **both** hold: 1. **P2:** the out-of-sample AUC gain from redundancy is **≥ 0.03**, its paired bootstrap 95% CI excludes zero, and the label-permutation p-value is < 0.05. 2. **P3:** the within-degree-stratum Mantel–Haenszel odds ratio for essentiality (highest vs lowest redundancy tercile) is **below 1** (more redundancy, less essentiality) with a 95% CI excluding 1. The claim is **refuted** if the gain is indistinguishable from zero, or if the within-stratum association disappears once degree is held fixed. P1 is reported as a descriptive baseline. Failing P1 would make the whole framing moot; passing P1 does not support the claim, because degree alone is the rival explanation. ## Analysis plan fixed in advance ### Data - **Graph.** STRING v12.0 *Saccharomyces cerevisiae* protein links, `https://stringdb-downloads.org/download/protein.links.v12.0/4932.protein.links.v12.0.txt.gz`. Primary threshold `combined_score >= 700`; self-loops dropped (there are none); `4932.` stripped from both identifier columns. Features are computed on **all** nodes of the filtered graph, including proteins without an essentiality label, so that degree and partner degree are not distorted by label availability. - **Essentiality.** SGD `phenotype_data.tab`, `https://downloads.yeastgenome.org/curation/literature/phenotype_data.tab`. Rows with `Mutant Type == "null"`. A gene (column `Feature Name`, the systematic ORF name) is labelled **essential (1)** if any null-allele row has `Phenotype == "inviable"`; **non-essential (0)** only if it has no inviable null row but at least one null row with `Phenotype == "viable"`. Genes with neither are excluded. A gene with both inviable and viable null alleles is labelled essential under the "any inviable" rule; the number of such genes is reported. - **Analysis sample.** Proteins present in the threshold-700 graph **and** carrying a definitive label. n is whatever that intersection gives; no post-hoc exclusions. ### Features (computed on the undirected, unweighted thresholded graph) - `d` = degree; feature `log10 d` (natural or base-10 log is a monotone rescaling; base 10 is used as the brief states). - `C` = local clustering coefficient, `2 * triangles(i) / (d_i * (d_i - 1))`, 0 when `d_i < 2`. - `m` = mean degree of the protein's partners. - `R = m / d` (redundancy score); feature `log10(R)` enters M3 as `log10(degree / mean partner degree)`. ### Models Hand-written logistic regression, fitted by iteratively reweighted least squares (IRLS, numpy only), with an intercept and a small L2 penalty `lambda = 1e-4` on the coefficients (not the intercept) for numerical stability. Features are standardised using **training-fold** means and standard deviations only; the same transform is applied to the held-out fold. M1: `log10 d`. M2: `log10 d + C + m` (raw `m`, as the brief specifies). M3: `log10 d + log10(d/m)`. ### Cross-validation and uncertainty - 20 repeats of stratified 10-fold CV, folds stratified by the essentiality label. Each repeat uses its own seeded partition; **all three models share the identical folds within a repeat**, and the same partitions are reused for every permutation. - Out-of-fold predicted probability for every protein in every repeat. AUC per repeat per model, then mean and SD across the 20 repeats. For the paired bootstrap, each protein's predictions are averaged over the 20 repeats. - **Gain** = AUC(redundancy model) − AUC(M1). Paired bootstrap over proteins, 2,000 resamples, percentile 95% CI, seed 20261030. - **Label-permutation p-value**: 200 permutations of the essentiality label (global, two-sided), each rerunning the full 20×10 CV for all three models; p = (1 + number of permutations with |gain| ≥ |observed gain|) / 201. ### P3 - Degree deciles are formed by ranking the analysis sample on `d` and cutting into ten equal-count bins (stable tie order by ORF name). Decile degree ranges are reported. - Within each degree decile, proteins are split into terciles of the redundancy score by the same rank rule: T1 lowest, T3 highest. This is done separately for `R = m/d` and for `C`. - Report the essential fraction in each (decile × tercile) cell. - **Mantel–Haenszel-style stratified odds ratio**, exposure = T3, reference = T1, outcome = essential, strata = degree deciles: `OR_MH = sum(a_i d_i / n_i) / sum(b_i c_i / n_i)`. A Haldane–Anscombe 0.5 is added to all four cells of any stratum containing a zero cell; the number of such strata is reported. - **Stratified permutation test**: 2,000 permutations of the essentiality label *within* each degree decile (preserving each stratum's essential count), two-sided on |log OR|; p = (1 + hits) / 2001. - **CI**: stratified bootstrap over proteins, resampling within each degree decile and preserving stratum sizes, 2,000 resamples, percentile 95% CI. ### Multiplicity The primary family is four tests: the two model gains (M2−M1, M3−M1) and the two P3 stratified permutation tests (`R` and `C`). Benjamini–Hochberg q-values are reported for this family. The brief's support criterion is stated in terms of the raw permutation p < 0.05; that is the decision rule. The BH q-values are reported alongside so a reader can see whether a verdict survives the family correction; any divergence between the two is stated explicitly. ### Sensitivity (declared in advance, not part of the primary family) - Rebuild the graph at `combined_score >= 400` and `>= 900`; rerun the full model comparison (20×10 CV, gains, bootstrap CI) and P3 (`R` and `C`, MH OR, bootstrap CI) on each. Report whether the support criteria hold. These are sensitivity analyses, not additional primary tests, and are not used to rescue a failed primary result. ### What would change the answer A gain below 0.03 or a CI spanning zero refutes P2. A within-stratum OR at or above 1, or a CI spanning 1, refutes P3. If the sign reverses under the higher or lower STRING threshold, the result is threshold-dependent and the claim is not established. If the effect is present only for clustering and not for mean partner degree (or vice versa), the "ratio" wording is not supported even if P2 passes.