{
  "module": "analysis/18_full_reanalysis/metabolomics",
  "status": "PASS",
  "analysis_script_sha256": "c6aada1904ee08a857fd7bc5a37d5a40c2a0961258055a3b594f5f7ba49816e0",
  "started_at_utc": "2026-08-13T08:15:19.708826+00:00",
  "completed_at_utc": "2026-08-13T08:15:39.480137+00:00",
  "elapsed_seconds": 19.799371004104614,
  "command": "uv run --python 3.12 python analysis/18_full_reanalysis/metabolomics/run_metabolomics_full.py",
  "configuration": {
    "module": "18_full_reanalysis/metabolomics",
    "status": "fresh_full_reanalysis",
    "input_sample_info": "data/working/new_modalities_schema_20260806/零磁场节律/Metabolome_Sample_Info.xlsx",
    "input_intensity_matrix": "data/working/new_modalities_schema_20260806/零磁场节律-1/Metabolome_norm_intensity_featurespeaks.xlsx",
    "sampling_unit": "randomly collected faecal specimen row; animal and cage identity unavailable; independence cannot be verified",
    "canonical_recovery_mapping": {
      "R2week": "R+4",
      "R4week": "R+8"
    },
    "peak_unit": "one unique analytical signal per exact Type + MZ + RT group with identical intensity profile",
    "primary_qc_cv_percent": 30.0,
    "sensitivity_qc_cv_percent": 20.0,
    "QC20_sensitivity_method": "fixed 814-peak subset; exact reuse of feature-wise coefficients/raw p-values and BH recalculation within each declared QC20 family; community geometry fully refit",
    "QC20_sensitivity_scope": "primary 14-cell cosinor, seven stage field level/rhythm, four exposure DiD level/rhythm, two-week E8-anchored recovery P/S/Q/joint level/rhythm, direct R+8-vs-R+4 residual-gap level/rhythm, and seven-stage community PERMANOVA/PERMDISP; not stage-within-lineage, sex, endpoint/LOF tiers, or enrichment",
    "primary_transform": "log2 of supplied normalized positive intensity; no pseudocount and no CLR",
    "period_hours": 24.0,
    "primary_rhythm_model": "log2_intensity ~ sex + sin(2*pi*ZT/24) + cos(2*pi*ZT/24)",
    "covariance": "HC3 heteroskedasticity robust",
    "rhythm_test": "joint Wald test of sine/cosine terms (2 df)",
    "primary_bh_q": 0.05,
    "rhythm_fdr_family": "within each lineage-by-stage cell across all QC30 peaks",
    "zt24_sensitivity": "repeat every cell-level cosinor after excluding the separate ZT24 specimen rows",
    "zt0_sensitivity": "repeat every cell-level cosinor after excluding the separate ZT0 specimen rows",
    "categorical_ZT_lack_of_fit": {
      "model": "log2_intensity ~ sex + categorical means for ZT0/ZT6/ZT12/ZT18/ZT24",
      "boundary_test": "ZT24-ZT0, HC3 1 df",
      "single_harmonic_constraint": "mu0+mu12-mu6-mu18, HC3 1 df",
      "joint_test": "boundary plus single-harmonic constraint, HC3 2 df",
      "fdr_family": "within lineage-by-stage cell across all QC30 unique analytical peaks for each diagnostic"
    },
    "stage_references": {
      "exposure": "E0",
      "recovery": "E8"
    },
    "recovery_joint_test": "p_joint=max(p_P,p_S), BH across all peak-by-recovery-week rows",
    "recovery_directional_rule": "P*S<0 and abs(Q)<abs(P)",
    "recovery_rhythm_directional_rule": "dot(P,S)<0 and norm(Q)<norm(P)",
    "direct_recovery_progress_test": "(ZMF_R8-GMF_R8)-(ZMF_R4-GMF_R4), MESOR HC3 1df and sine/cosine HC3 2df with BH across QC-qualified unique peaks",
    "recovery_priority_log2_effect": 0.2630344058337938,
    "community_test": "Euclidean PERMANOVA-style pseudo-F on Pareto-scaled log2 peaks with field labels permuted within sex-by-ZT strata",
    "community_permutations": 9999,
    "community_fdr_family": "seven experimental stages",
    "permdisp": "sex-by-ZT-restricted RMS Euclidean distance-to-centroid test in the exact SVD sample space; BH across seven stages",
    "enrichment": {
      "annotation_levels": [
        "candidate_superclass",
        "candidate_class",
        "candidate_kegg_pathway"
      ],
      "background": "all QC30 unique analytical peaks",
      "test": "one-sided Fisher exact overrepresentation",
      "minimum_hit_peaks_per_term": 3,
      "fdr_family": "within each formal significant set by annotation level",
      "primary_q": 0.05,
      "candidate_rule": "a peak contributes at most once to a term even if multiple candidate annotations map to it"
    },
    "random_seed": 20260807
  },
  "inputs": {
    "data/working/new_modalities_schema_20260806/零磁场节律/Metabolome_Sample_Info.xlsx": {
      "bytes": 33315,
      "sha256": "97e0ffa82f34889a771af5c9dc96104cfa5be35b5fad8fb610eb150679530f52"
    },
    "data/working/new_modalities_schema_20260806/零磁场节律-1/Metabolome_norm_intensity_featurespeaks.xlsx": {
      "bytes": 29787254,
      "sha256": "2c837496e61d52084b162295c3e2e24e7a5d22da22cdf223cd298edc2ef40829"
    }
  },
  "outputs": [
    {
      "path": "README.md",
      "bytes": 7176,
      "sha256": "11fcd325d823b8d8cfc7f35d3ec43a39fb3267dc06b16e042bab858f2dbfeddf"
    },
    {
      "path": "RESULTS_SUMMARY.md",
      "bytes": 13318,
      "sha256": "52855671cb230219fa2c3a7a1796eb82e8f06e2db445c63d41b356fcfaedac3a"
    },
    {
      "path": "config.json",
      "bytes": 3764,
      "sha256": "4e3cfa5ee5ad6f4ba9260ae786a76f44b7b705abdd56f256ac8a36ef6be4cb12"
    },
    {
      "path": "figures/figure_metabolomics_population_inference.pdf",
      "bytes": 50086,
      "sha256": "ce31460b34895dae8a93ccc469f76ff4275356c5b25f0e895df70278e45079e8"
    },
    {
      "path": "figures/figure_metabolomics_population_inference.png",
      "bytes": 630362,
      "sha256": "a2ff63a785fe29e7580fa66160b4d49d9a4c9391c38c6bc6c870b737130989ce"
    },
    {
      "path": "figures/figure_metabolomics_population_inference.svg",
      "bytes": 67076,
      "sha256": "eaaff5cdadf7600e3f716659dbc0ffefd33597152450e54a514a6bbbf19b9bf9"
    },
    {
      "path": "figures/figure_metabolomics_qc_pca.pdf",
      "bytes": 71666,
      "sha256": "b7fc991117ebee7294a1a3f99a28dd8e62a05184cd8b7d601da0ea56b1cfc69f"
    },
    {
      "path": "figures/figure_metabolomics_qc_pca.png",
      "bytes": 581790,
      "sha256": "693f56f750ce354fe602cd248451cf5023e07f8e363e1d67bed131d1a193eb2b"
    },
    {
      "path": "figures/figure_metabolomics_qc_pca.svg",
      "bytes": 306932,
      "sha256": "6991da6ef9c588f7364ba27c1757e6d1ba087359a2e2bea676e2c418b4521f2c"
    },
    {
      "path": "figures/figure_metabolomics_recovery_progress.pdf",
      "bytes": 86546,
      "sha256": "bc6d981c835994c3bbc1eeb18235c71fbfd1b601850f4cb4e96230a3fd997239"
    },
    {
      "path": "figures/figure_metabolomics_recovery_progress.png",
      "bytes": 675456,
      "sha256": "c6e263360805ccbb481f4692f78d29ee40353303ba4a5f32ad6592d30af9d0c2"
    },
    {
      "path": "figures/figure_metabolomics_recovery_progress.svg",
      "bytes": 408446,
      "sha256": "3462aa5f41a04b78943b552b25623523d5b36b2a945778391e6800598666c20e"
    },
    {
      "path": "outputs/candidate_annotation_coverage.csv",
      "bytes": 488,
      "sha256": "c3323ab46d3dcef57a7f62c01c866bc307c9ca448763a5962fd39354090834c7"
    },
    {
      "path": "outputs/candidate_annotation_enrichment_all_terms.csv.gz",
      "bytes": 192239,
      "sha256": "591f36ee359112ee9c0e7a1f32f57ea45aa1f24d00f10f0d3decd63de373b761"
    },
    {
      "path": "outputs/candidate_annotation_enrichment_summary.csv",
      "bytes": 18211,
      "sha256": "e90f4062937f6a08db0e65a495836f93a9cb3dda93b0b1766b1b042ee78c22b5"
    },
    {
      "path": "outputs/candidate_peak_annotation_terms.csv.gz",
      "bytes": 21534,
      "sha256": "a8641c00be5a081bfff857ad4d855da8878301bfc49d7c563e08b420de437add"
    },
    {
      "path": "outputs/canonical_sample_metadata.csv",
      "bytes": 201967,
      "sha256": "d05f702028f6fd38b4d408752b3a1245dd8740a502d3559f9868e6f46027365f"
    },
    {
      "path": "outputs/community_field_restricted_permanova.csv",
      "bytes": 2117,
      "sha256": "4d5cf8543942b9c99498d2f1b66f313b2dd1372c7f7a5651bc8a1774b5aa3a2d"
    },
    {
      "path": "outputs/community_field_restricted_permdisp.csv",
      "bytes": 2743,
      "sha256": "a098013b56633f2f694d0dbbf6881d42c30d70bfbce5543653f0d7b501cdfdd4"
    },
    {
      "path": "outputs/cosinor_24h_exclude_ZT0_sensitivity.csv.gz",
      "bytes": 1774452,
      "sha256": "fb4eb448ee1a0b5a6637a20a773224ecce98a93a23b0fe14521e3d05e9a486f4"
    },
    {
      "path": "outputs/cosinor_24h_exclude_ZT24_sensitivity.csv.gz",
      "bytes": 1773578,
      "sha256": "9af704074a316ec07fc835466a2013d8a7946d745037c1dc155e3a1f95fb9949"
    },
    {
      "path": "outputs/cosinor_24h_primary.csv.gz",
      "bytes": 1782925,
      "sha256": "f50019931d6c4a2d8634f261a4f704182945c1ff6818af699e599b7583bcc3ea"
    },
    {
      "path": "outputs/cosinor_ZT24_sensitivity_comparison.csv.gz",
      "bytes": 1495488,
      "sha256": "d41dcff6c223333b5a00574a97a32194b011f81625377bb179cf7b00e9d86336"
    },
    {
      "path": "outputs/cosinor_categorical_ZT_lack_of_fit.csv.gz",
      "bytes": 3205092,
      "sha256": "916f9c33e6aa97ca923ab98ee6458fe3c2432d7dc68efab53cc9e83d326cc47d"
    },
    {
      "path": "outputs/cosinor_categorical_ZT_lack_of_fit_summary.csv",
      "bytes": 1003,
      "sha256": "68092a3a98ec6658833f71244a324e83d16ca850a6f83e164d56eb431b345051"
    },
    {
      "path": "outputs/cosinor_conservative_tiers.csv.gz",
      "bytes": 2471947,
      "sha256": "245769e5a54ec757e1e7a94bfad5fb8db1bb2de3f9f862dec9e9c7739249387f"
    },
    {
      "path": "outputs/cosinor_conservative_tiers_summary.csv",
      "bytes": 450,
      "sha256": "cc6249b580912896d34f18ecc97143a6ed898614ac380779a43fdc923bdc0b94"
    },
    {
      "path": "outputs/exposure_field_gap_DiD.csv.gz",
      "bytes": 550778,
      "sha256": "af1588147aec61de18d903e544006450d10d87c65039f66fc470d16f74dcef3a"
    },
    {
      "path": "outputs/field_mesor_and_rhythm_contrasts.csv.gz",
      "bytes": 1086417,
      "sha256": "d26b0e845b97c880b2dd2656ba816f87bc7f299b55513924b5251dacd3491141"
    },
    {
      "path": "outputs/formal_significant_set_definitions.csv",
      "bytes": 5677,
      "sha256": "97c82385f4f2b8b920beba2015390d386f56f90829505f520e3542233e5841b5"
    },
    {
      "path": "outputs/formal_significant_set_membership.csv.gz",
      "bytes": 64095,
      "sha256": "3166d0135f97838a1db718057559d772432e6279cbc426653def453b58c1a9a6"
    },
    {
      "path": "outputs/lineage_stage_contrasts.csv.gz",
      "bytes": 2008821,
      "sha256": "b4e6b6139841e33a6146ae895eac9e622085d56b2daf45f7b27f5ba9764b7810"
    },
    {
      "path": "outputs/log2_intensity_qc30.npz",
      "bytes": 15308222,
      "sha256": "a3d5d84ac2aa098c91f01125c276203fd20b2cc870a5790ead4002317edd3891"
    },
    {
      "path": "outputs/pca_explained_variance.csv",
      "bytes": 1585,
      "sha256": "95d8a30ba9f9848fcaefe3cc37d95ed0d4527848c9947083b835bc1c179741ef"
    },
    {
      "path": "outputs/pca_loadings.csv.gz",
      "bytes": 225086,
      "sha256": "0ff23bff42a2b0031da7aefb323c0dd213e22443693c082797ea2293b035ab28"
    },
    {
      "path": "outputs/pca_scores.csv.gz",
      "bytes": 272224,
      "sha256": "811df5ed69f51fad85d07b7bdafefea1a0d09355f8eeb1b1d0689e12afa782b0"
    },
    {
      "path": "outputs/peak_catalog.csv.gz",
      "bytes": 121145,
      "sha256": "056de53f01b15ecea4bd1cc170cb141be7719f4fc7b494976978370f499b6d05"
    },
    {
      "path": "outputs/qc20_sensitivity_community_permanova.csv",
      "bytes": 4407,
      "sha256": "501453186a2247abbca6fe9e13ea3861d6d5fa6e3b443f70bd6469f3e39ba359"
    },
    {
      "path": "outputs/qc20_sensitivity_community_permdisp.csv",
      "bytes": 5660,
      "sha256": "822995f1251cd9ce8cd89aba5238e611449c9cad94b036bde14266cac7a5cae9"
    },
    {
      "path": "outputs/qc20_sensitivity_cosinor.csv.gz",
      "bytes": 1375773,
      "sha256": "2291aeb4d8d98b8725556836739f125156630c48a42be8e626ec3db2511b0246"
    },
    {
      "path": "outputs/qc20_sensitivity_exposure_DiD.csv.gz",
      "bytes": 451895,
      "sha256": "b886d5798c242673b147db90de7fd7f45335c94e7340670b091a0911d2c93c89"
    },
    {
      "path": "outputs/qc20_sensitivity_field.csv.gz",
      "bytes": 877487,
      "sha256": "38269a7322e70b74cdaaaf53efda54ce338b06731fb94cd402c9921c5eae8a45"
    },
    {
      "path": "outputs/qc20_sensitivity_recovery_level.csv.gz",
      "bytes": 284948,
      "sha256": "821481a867c4d4c21a3dd1013447d0a6ba3c3fdbf84aaf63e1237870fbacc7af"
    },
    {
      "path": "outputs/qc20_sensitivity_recovery_progress.csv.gz",
      "bytes": 123704,
      "sha256": "7b9cd8baecc29d9a38684fb22918b5ae1d4db15c681a4c491f47e8f9ef693550"
    },
    {
      "path": "outputs/qc20_sensitivity_recovery_rhythm.csv.gz",
      "bytes": 391842,
      "sha256": "3eb6486ddbdb37ca9392ebc297b2c8f10e35df3d9cf3729df847f838cb5335d7"
    },
    {
      "path": "outputs/qc20_sensitivity_summary.csv",
      "bytes": 7708,
      "sha256": "766e798429a373e5a5936854f9474eebc9555916d3b46c41ed1d62ae7c9eac7a"
    },
    {
      "path": "outputs/recovery_P_S_Q_mesor_contrasts.csv.gz",
      "bytes": 311702,
      "sha256": "221d69dd11a30499cb30c24120c70735760e13e428a5d3addccbf014496a41f7"
    },
    {
      "path": "outputs/recovery_P_S_Q_rhythm_contrasts.csv.gz",
      "bytes": 464004,
      "sha256": "67b835740421acbf7c92b88c5a96dcd9a90e29f4fd238435d064396c9d77d3ee"
    },
    {
      "path": "outputs/recovery_R8_vs_R4_direct_contrasts.csv.gz",
      "bytes": 152093,
      "sha256": "676e6ba9460a56405e07f6caef3ad94830a80fb5a1efc286da20d410a39e0533"
    },
    {
      "path": "outputs/sample_qc_metrics.csv",
      "bytes": 114041,
      "sha256": "edb70d72b40b535945876b92a45e13c1211089abba7746b8f7d2657d208a0f95"
    },
    {
      "path": "outputs/sex_mesor_and_rhythm_interactions.csv.gz",
      "bytes": 2485185,
      "sha256": "9efcdad9f7fed428eb6783742adcf89f5f95859f336bf7ed8c33680279118356"
    },
    {
      "path": "posthoc_compare_module12.py",
      "bytes": 6437,
      "sha256": "3c0b498cf2915524df55f3141dca4b7d6e105f7d107393e65a9654c1f527d45f"
    },
    {
      "path": "run_metabolomics_full.py",
      "bytes": 137093,
      "sha256": "c6aada1904ee08a857fd7bc5a37d5a40c2a0961258055a3b594f5f7ba49816e0"
    },
    {
      "path": "validate_metabolomics_full.py",
      "bytes": 10231,
      "sha256": "a3fec27fde65fb52ef54a54a70a5f26168fbc0621ff7f933460adb5c0ead0bd5"
    },
    {
      "path": "refresh_figure_provenance.py",
      "bytes": 4355,
      "sha256": "b5997d2fdec273697539d6da53fbe75374c5c7b265c231bf111663c2cd550fb3"
    }
  ],
  "output_inventory_policy": "run_manifest.json and metabolomics_validation.json excluded to avoid recursive hashes; independent_validation.json and posthoc_module12_comparison.json are generated afterward and record the frozen primary hashes",
  "sampling_unit": "randomly collected faecal specimen row; animal and cage identity unavailable; independence cannot be verified",
  "python": "3.12.12 (main, Feb  4 2026, 01:57:59) [Clang 21.1.4 ]",
  "platform": "macOS-26.4.1-arm64-arm-64bit",
  "figure_only_redraw_at_utc": "2026-08-13T18:29:39.400605+00:00",
  "figure_only_redraw_policy": "visual architecture only; no statistical table or model was recomputed",
  "figure_style_dependency": {
    "path": "analysis/lib/science_figure_style.py",
    "sha256": "45463c0e84464da0ad943b90090c047725f3e04e9c90801454c681fe680a9a8a"
  }
}
