=== run.sh started 2026-08-07T18:00:57Z === [fetch] copying cached /tmp/ctd.tsv.gz -> data/ctd.tsv.gz [fetch] copying cached /tmp/string.gz -> data/string.links.gz [fetch] using existing data/protein.info.txt.gz [fetch] copying cached /tmp/kegg.gmt -> data/kegg.gmt [fetch] copying cached /tmp/dis.gmt -> data/dis.gmt [fetch] copying cached /tmp/gwas.gmt -> data/gwas.gmt [prefilter] STRING edges combined_score>=400 (cuts ~13.7M lines down before pandas/dict loading) 1858945 data/string_ge400.txt === PRIMARY RUN: string_cutoff=700, AD geneset=KEGG_2021_Human, n_null=1000, seeds=0,1,2 === [ 0.0s] seahorse compound list (21 entries): ['Taurine', 'Glycine', 'Cholesterol', 'Docosahexaenoic Acids', 'Eicosapentaenoic Acid', 'Palmitic Acid', 'Oleic Acid', 'Arachidonic Acid', 'Hypoxanthine', 'Inositol', 'Sorbitol', 'Adenosine', 'Uridine', 'Glutamic Acid', 'Aspartic Acid', 'Lysine', 'Arginine', 'Alanine', 'Betaine', 'Creatine', 'Proline'] [ 0.0s] loading CTD chem-gene interactions from data/ctd.tsv.gz ... [ 4.2s] CTD human rows: 1327615 [ 5.7s] CTD human compounds: 11095, distinct human genes: 28632 [ 5.8s] building STRING adjacency at combined_score>=700 ... [ 6.6s] STRING edges kept (score>=700): 473860, genes with >=1 edge: 16201 [ 6.7s] KEGG_2021_Human terms: 320; DisGeNET terms: 9829 [ 6.7s] KEGG 'Alzheimer disease' (hsa05010) gene count: 369 [ 6.8s] KEGG background universe: 8078 genes; DisGeNET background universe: 17465 genes [ 6.8s] === ARM: baseline-standard-pipeline === [ 6.8s] compound target lookup: 'Taurine' -> 79 CTD human genes [ 6.8s] compound target lookup: 'Glycine' -> 14 CTD human genes [ 6.8s] compound target lookup: 'Cholesterol' -> 109 CTD human genes [ 6.8s] compound target lookup: 'Docosahexaenoic Acids' -> 83 CTD human genes [ 6.8s] compound target lookup: 'Eicosapentaenoic Acid' -> 51 CTD human genes [ 6.8s] compound target lookup: 'Palmitic Acid' -> 868 CTD human genes [ 6.8s] compound target lookup: 'Oleic Acid' -> 278 CTD human genes [ 6.8s] compound target lookup: 'Arachidonic Acid' -> 171 CTD human genes [ 6.8s] compound target lookup: 'Hypoxanthine' -> 7 CTD human genes [ 6.8s] compound target lookup: 'Inositol' -> 6 CTD human genes [ 6.8s] compound target lookup: 'Sorbitol' -> 22 CTD human genes [ 6.8s] compound target lookup: 'Adenosine' -> 68 CTD human genes [ 6.8s] compound target lookup: 'Uridine' -> 11 CTD human genes [ 6.8s] compound target lookup: 'Glutamic Acid' -> 10 CTD human genes [ 6.8s] compound target lookup: 'Aspartic Acid' -> 1 CTD human genes [ 6.8s] compound target lookup: 'Lysine' -> 2 CTD human genes [ 6.8s] compound target lookup: 'Arginine' -> 10 CTD human genes [ 6.8s] compound target lookup: 'Alanine' -> 1 CTD human genes [ 6.8s] compound target lookup: 'Betaine' -> 8 CTD human genes [ 6.8s] compound target lookup: 'Creatine' -> 5 CTD human genes [ 6.8s] compound target lookup: 'Proline' -> 0 CTD human genes [ 6.8s] compounds with NO CTD human record (excluded): ['Proline'] [ 6.8s] seahorse union target gene count (deduped): 1270 [ 6.8s] seahorse targets overlapping KEGG AD gene set: 71 -> ['ADAM17', 'AGER', 'AKT1', 'APOE', 'APP', 'ATF4', 'ATF6', 'ATP5PD', 'BAD', 'BECN1', 'BID', 'BRAF', 'CASP3', 'CASP7', 'CASP8', 'CASP9', 'COX4I1', 'CSF1', 'CTNNB1', 'CYBB', 'CYCS', 'DDIT3', 'DKK1', 'EIF2AK2', 'EIF2AK3', 'ERN1', 'FADD', 'FAS', 'FRAT2', 'FZD3', 'FZD5', 'GSK3B', 'IL1A', 'IL1B', 'IL6', 'INS', 'INSR', 'IRS1', 'IRS2', 'LPL', 'MAP2K1', 'MAP2K2', 'MAP3K5', 'MAPK1', 'MAPK10', 'MAPK3', 'MAPK8', 'MAPK9', 'MAPT', 'MTOR', 'ND5', 'NDUFA1', 'NDUFA2', 'NDUFC2', 'NDUFS4', 'NFKB1', 'NOS2', 'NOX1', 'PIK3CA', 'PIK3R3', 'PSEN2', 'PSMA2', 'PSMB5', 'PTGS2', 'RB1CC1', 'RELA', 'TNF', 'TUBAL3', 'TUBB2A', 'VDAC1', 'XBP1'] [ 6.8s] baseline top-10 hub (subnetwork degree): [('CASP3', 32), ('AKT1', 31), ('TNF', 27), ('MAPK3', 26), ('MAPK8', 26), ('IL6', 24), ('MAPK1', 24), ('IL1B', 23), ('CTNNB1', 22), ('INS', 20)] [ 6.8s] baseline hypergeometric test vs KEGG AD term: overlap=71 n=858 K=369 N=8078 p=3.229e-07 [ 6.8s] baseline KEGG AD term row: overlap=71 pvalue=3.229e-07 fdr=1.174e-06 [ 6.8s] baseline: 174/320 KEGG terms significant at FDR<0.05 [ 6.9s] seahorse compounds usable for null draws (had >=1 CTD human target): 20 (excluded: ['Proline']) [ 6.9s] observed (seahorse) overlap=71, -log10(p_ad_kegg)=6.491 [ 6.9s] --- seed 0: null-size-matched, n_iter=1000 --- [ 7.3s] seed 0 null-size-matched: mean_overlap=51.05 emp_p_overlap=0.2068 emp_p_kegg=0.3197 hub_recovery_rate=0.936 [ 7.3s] --- seed 0: null-degree-matched, n_iter=1000 --- [ 11.0s] seed 0 null-degree-matched: mean_overlap=71.86 emp_p_overlap=0.4615 emp_p_kegg=0.3946 hub_recovery_rate=0.970 [ 11.0s] --- seed 1: null-size-matched, n_iter=1000 --- [ 11.4s] seed 1 null-size-matched: mean_overlap=51.11 emp_p_overlap=0.2068 emp_p_kegg=0.3007 hub_recovery_rate=0.936 [ 11.4s] --- seed 1: null-degree-matched, n_iter=1000 --- [ 15.4s] seed 1 null-degree-matched: mean_overlap=71.97 emp_p_overlap=0.4845 emp_p_kegg=0.3996 hub_recovery_rate=0.976 [ 15.4s] --- seed 2: null-size-matched, n_iter=1000 --- [ 15.8s] seed 2 null-size-matched: mean_overlap=52.04 emp_p_overlap=0.2108 emp_p_kegg=0.2917 hub_recovery_rate=0.959 [ 15.8s] --- seed 2: null-degree-matched, n_iter=1000 --- [ 19.4s] seed 2 null-degree-matched: mean_overlap=72.41 emp_p_overlap=0.4885 emp_p_kegg=0.4156 hub_recovery_rate=0.973 [ 19.4s] hub_jaccard_null over 200 random pairs: median=0.667 q1=0.429 q3=0.667 [ 19.4s] === ARM: disease-swap-control === [ 19.4s] Alzheimer's Disease (Alzheimer's Disease): overlap=353 term_size=1981 p=9.211e-75 [ 19.4s] Type 2 Diabetes (Diabetes Mellitus, Non-Insulin-Dependent): overlap=341 term_size=1671 p=1.959e-88 [ 19.4s] Hypertension (Hypertensive disease): overlap=292 term_size=1309 p=5.584e-84 [ 19.4s] Colorectal Carcinoma (Colorectal Carcinoma): overlap=469 term_size=2930 p=9.085e-88 [ 19.4s] Asthma (Asthma): overlap=248 term_size=1312 p=2.782e-55 [ 19.4s] Osteoarthritis (Generalized osteoarthritis): overlap=11 term_size=29 p=1.244e-06 [ 19.5s] disease_rank_ad = 4 of 6 [ 19.5s] prediction check: mean_hub_recovery_rate(degree-matched)=0.973, mean_emp_p_ad_overlap=0.4782, mean_emp_p_ad_kegg=0.4033 -> outcome=confirmed [ 19.5s] wrote results.json (11394 bytes) [ 19.5s] TOTAL RUNTIME: 19.5s === SUPPLEMENTARY SWEEP: string_confidence_cutoff x ad_geneset_source (reduced n_null, seed 0 only) === [ 0.0s] loading CTD chem-gene interactions from data/ctd.tsv.gz ... [ 4.3s] CTD human rows: 1327615 [ 5.7s] CTD human compounds: 11095, distinct human genes: 28632 [sweep 5.9s] AD geneset source 'KEGG_2021_Human:Alzheimer disease': 369 genes [sweep 5.9s] AD geneset source "DisGeNET:Alzheimer's Disease": 1981 genes [sweep 5.9s] AD geneset source 'GWAS_Catalog_2025:Alzheimer': 112 genes [sweep 5.9s] seahorse union targets: 1270, usable compounds: 20 [ 5.9s] building STRING adjacency at combined_score>=400 ... [ 7.7s] STRING edges kept (score>=400): 1858944, genes with >=1 edge: 19488 [sweep 8.8s] cutoff=400 ad_source=KEGG_2021_Human:Alzheimer disease -> obs_overlap=71 emp_p_overlap=0.5116 emp_p_kegg=0.4385 hub_recovery_rate=0.997 [sweep 10.6s] cutoff=400 ad_source=DisGeNET:Alzheimer's Disease -> obs_overlap=353 emp_p_overlap=0.6013 emp_p_kegg=0.2990 hub_recovery_rate=1.000 [sweep 11.7s] cutoff=400 ad_source=GWAS_Catalog_2025:Alzheimer -> obs_overlap=10 emp_p_overlap=0.7043 emp_p_kegg=0.4385 hub_recovery_rate=0.640 [ 11.7s] building STRING adjacency at combined_score>=700 ... [ 12.6s] STRING edges kept (score>=700): 473860, genes with >=1 edge: 16201 [sweep 13.9s] cutoff=700 ad_source=KEGG_2021_Human:Alzheimer disease -> obs_overlap=71 emp_p_overlap=0.5116 emp_p_kegg=0.4385 hub_recovery_rate=0.983 [sweep 15.4s] cutoff=700 ad_source=DisGeNET:Alzheimer's Disease -> obs_overlap=353 emp_p_overlap=0.6013 emp_p_kegg=0.2990 hub_recovery_rate=1.000 [sweep 16.5s] cutoff=700 ad_source=GWAS_Catalog_2025:Alzheimer -> obs_overlap=10 emp_p_overlap=0.7043 emp_p_kegg=0.4385 hub_recovery_rate=0.640 [ 16.5s] building STRING adjacency at combined_score>=900 ... [ 17.1s] STRING edges kept (score>=900): 201712, genes with >=1 edge: 12323 [sweep 18.2s] cutoff=900 ad_source=KEGG_2021_Human:Alzheimer disease -> obs_overlap=71 emp_p_overlap=0.5116 emp_p_kegg=0.4385 hub_recovery_rate=0.920 [sweep 19.4s] cutoff=900 ad_source=DisGeNET:Alzheimer's Disease -> obs_overlap=353 emp_p_overlap=0.6013 emp_p_kegg=0.2990 hub_recovery_rate=1.000 [sweep 20.4s] cutoff=900 ad_source=GWAS_Catalog_2025:Alzheimer -> obs_overlap=10 emp_p_overlap=0.7043 emp_p_kegg=0.4385 hub_recovery_rate=0.640 [sweep 20.4s] wrote results_raw/sweep_results.csv (9 rows) [sweep 20.4s] sweep total runtime: 20.4s === FIGURES === figures written to figs : ['01_null_overlap_distribution.png', '02_hub_recovery_rate.png', '03_disease_swap_control.png', '04_sweep_hub_recovery_heatmap.png'] === run.sh finished 2026-08-07T18:01:46Z ===