Genetic Liability to Cirrhosis Is Not Causally Associated With Cardiovascular Disease: A Mendelian Randomization Study
收藏资源简介:
Companion article "Genetic Liability to Cirrhosis Is Not Causally Associated With Cardiovascular Disease: A Mendelian Randomization Study"Licence code MIT (LICENSE); tables, harmonised data and all other content CC BY 4.0 (LICENSE-TABLES.md). This deposit contains everything needed to check, and to re-run, the Mendelian randomization analyses reported in the article: the code, the analysis-ready inputs, the per-estimator outputs, and every table as numbered in the paper. No individual-level data were used at any stage, and no individual-level data are included. 1. What is here, and what is not Directory Contents Count / (root) Analysis scripts. They resolve data/ and results/ relative to the working directory, so they are kept at the root and should be run from here. 41 manuscript_assembly/ Scripts that typeset the manuscript and supplement. They need the internal manuscript sources and are included for transparency, not for standalone re-running. 6 data/ Analysis inputs derived from public summary statistics: genome-wide scan output at P < 1e-5, instrument sets, per-SNP lookups, colocalisation windows, LD scores. 52 files, plus 46 under data/ldsc/. 98 results/ One CSV per analysis: primary estimates, sensitivity analyses, colocalisation, multivariable MR, mediation, MR-RAPS, MRlap, leave-one-out, per-SNP ratios. 54 tables/ Every table as numbered in the paper — Tables 1–3, Supplementary Tables S1–S6 and S10, A1–A3 — as CSV, plus TABLE_LEGENDS.md with the title and footnote of each. 14 manuscript/ Intermediate table sources written by s13_tables.py, using the pipeline's internal 1–9 numbering. See manifest/table_crosswalk.csv. 10 figures/ Figures 1–3 as submitted, 300 dpi TIFF, CMYK. 3 manifest/ Dataset provenance, file manifest, table crosswalk, software environment, checksums. 5 Not included, deliberately. ● The raw GWAS summary statistics. These are third-party data totalling about 4.5 GB and remain subject to the terms of the repositories that distribute them. manifest/dataset_manifest.csv gives, for each of the eleven datasets, the accession, repository, release, genome build, sample size, ancestry, PMID and landing-page URL. Section 3 explains how to fetch them. ● The manuscript files themselves. The article is under review; this record covers the analysis only. ● Peer-review correspondence. 2. Ten-minute check of a published number The primary estimate for cirrhosis liability on coronary artery disease appears in Table 2 as OR 0.97 (95% CI 0.90–1.04), P = 0.371, from 14 variants. results/harmonised_CIRRHOSIS_CAD.csv holds the harmonised per-variant effects that produce it: one row per variant, with b_exp, se_exp, b_out, se_out. Feeding those four columns to the inverse-variance weighted estimator in mrlib.py returns the published estimate. The same four columns reproduce every other estimator in Table 2 and Table 3 through the functions in mrlib.py. Working from results/ alone, no download is required: every number in results/ and tables/ is either a direct output or a deterministic function of these files. To regenerate all tables from results/: python s13_tables.py # writes manuscript/table1..9.csv, tableA3.csv This was verified before deposition: the regenerated manuscript/table3.csv and manuscript/table4.csv are byte-identical to the files that produced Tables 2 and 3 of the submitted manuscript. 3. Data sources Eleven datasets, listed in manifest/dataset_manifest.csv and in Table 1 of the article: ● Ten studies from the NHGRI-EBI GWAS Catalog, identified by accession (GCST…). Harmonised summary statistics are downloadable from the study page, https://www.ebi.ac.uk/gwas/studies/<accession>, or from the Catalog FTP under the same accession. ● One release from FinnGen, release 11, endpoint K11_FIBROCHIRLIV, available from the FinnGen results portal. Two exposure definitions are used: cirrhosis liability (GCST90319877, the primary exposure) and liver fibrosis/cirrhosis in FinnGen R11 (the replication exposure). Five cardiovascular outcomes and four metabolic mediators complete the set. Accessions, sample sizes and ancestries were verified programmatically against the GWAS Catalog study metadata rather than transcribed from secondary sources; the registry used for this is datasets.py, and the metadata snapshot it was checked against on 2026-10-28 is included as data/gwas_studies_meta.tsv (39 MB) so that the check can be repeated with datasets.grep_meta(). To rebuild the analysis inputs from the raw files, place each download under data/ using the filename in the file column of datasets.py and run the pipeline in section 4 from stage 1. The genome-wide P < 1e-5 scan over roughly 90 million rows is not scripted in run_all.py; its output is the data/*_p1e5.tsv files included here. 4. Reproducing the analysis python run_all.py --list # the stages, in order python run_all.py --skip refs # everything except the PubMed lookup python run_all.py --from instruments --skip refs # also rebuild the instrument sets python run_all.py --only 5 # a single stage run_all.py is the analysis driver and expects the files in data/. Stage refs contacts PubMed E-utilities and fails offline; nothing else requires a network connection once data/ is populated. Stage (--only) Script Produces instruments s02b_instruments.py data/instruments_*.csv regions s03b_regions.py, s03c_exposure_regions.py colocalisation windows and their SNP sets lookups s03_extract.py, s03d_exposure_extract.py data/lookup_*.tsv main s04_main.py results/mr_main.csv sens s05_sens.py results/persnp.csv, loo.csv, steiger.csv reverse s05c_rev.py results/mr_reverse.csv coloc s06_coloc.py, s06b_coloc_p12.py results/coloc.csv, coloc_p12.csv mvmr s06_mvmr.py results/mvmr.csv, mvmr_instruments_*.csv lipid s07_lipid.py results/ldlc_*.csv, mediation_steps.csv loci s08_loci_extract.py, s08b_vep.py, s09_loci.py results/loci_*.csv raps s15_raps.R results/raps.csv ldscore s16_ldscore.py data/ldsc/ mrlap_prep s17_mrlapl_prep.py compact per-trait files for MRlap mrlap s18_mrlapl.R results/mrlapl.csv refs s10_refs.py, s12_refs_list.py reference list (needs network) figures s11_figures.py figures tables s13_tables.py manuscript/table*.csv Two scripts are run outside the driver: s01b_scan.py produces the genome-wide P < 1e-5 scan, which reads about 90 million rows and is therefore not part of run_all.py; s20_benchmark.R produces results/benchmark_r.csv (Supplementary Table A1). Stages docx, pdf, figures_zh, tables_zh, docx_zh and pdf_zh in run_all.py --list typeset the manuscript and its Chinese reading version. They belong to the scripts in manuscript_assembly/, which need the internal manuscript sources and are not runnable from this deposit alone. mrlib.py implements, from the published descriptions, IVW with multiplicative random effects, MR-Egger with SIMEX correction, weighted median, weighted mode, Cochran's Q, I²_GX, MR-PRESSO, the contamination mixture, leave-one-out, multivariable MR with conditional F, two-step mediation and coloc.abf. mrpipe.py handles allele harmonisation and proxy substitution against a reference coding. ldref.py reads the 1000 Genomes EUR panel used for clumping. 5. Software environment The full record, including package versions, is manifest/environment.txt. In brief: Python 3.13 with numpy, scipy, pandas and matplotlib; R 4.6.1 with mr.raps 0.4.1, MRlap 0.0.3.3, GenomicSEM 0.0.5 and data.table 1.15. MRlap and GenomicSEM are not on CRAN and were installed from their GitHub sources. Two properties of the environment affect the numbers and are therefore recorded explicitly: Determinism. Every stochastic estimator is seeded. mrlib.py fixes seed=20261028 and the resampling counts are nboot=2000 for the weighted median and the weighted mode, nsim=10000 for MR-PRESSO and n_sim=200 for the SIMEX correction to MR-Egger. The contamination mixture is a deterministic grid search (601 points, κ = 100). Neither R script calls set.seed(), because neither estimator is stochastic. Re-running the pipeline therefore reproduces the deposited numbers exactly, not merely within Monte Carlo error. The LD score panel. The cross-trait LD score regression inside MRlap normally uses eur_w_ld_chr. That archive could not be retrieved from its distribution endpoint, so s16_ldscore.py rebuilds an equivalent panel from the same 1000 Genomes EUR reference used for clumping: 1,054,410 variants, ±1 Mb window, one variant per 2.5 kb, MAF ≥ 0.01, score = Σr² + 1. The rebuilt panel is included under data/ldsc/, so the MRlap results in Supplementary Table S6 can be reproduced without it. The Methods section of the article states this. 6. Known deviations from the pre-specified plan Reproduced from Appendix 1 of the article, because they affect how the code should be read: 1. The multi-ancestry cirrhosis GWAS (GCST90319877) was promoted to primary exposure over the FinnGen endpoint because it is 6.5× larger. 2. Apolipoprotein B was replaced by LDL cholesterol as the stratification trait, because no comparable European-ancestry apoB summary statistics could be obtained; the pre-specified thresholds were left unchanged. 3. The Steiger test is an approximation, as implemented for summary data. 4. MRlap re-derives its own instruments (P < 5 × 10⁻⁸, 500 kb pruning), so its variant count and observed estimate differ slightly from the primary analysis. The comparison it is used for is internal, between the observed and the overlap-corrected estimate. 7. Formats and conventions ● Text files are UTF-8 without a byte-order mark; CSVs follow RFC 4180 with a header row. Numbers are written at the precision shown in the tables, not at full machine precision; the unrounded values are in results/. ● — marks a statistic not defined for that row, for example a heterogeneity P value where k = 2. NaN marks a value a method could not return, for example MR-PRESSO where no outlier was detected. ● Filenames are ASCII, no spaces. Variant identifiers are rsIDs; alleles are given as effect/other with the effect allele stated in the column header. ● manifest/checksums.sha256 covers every file in this deposit except itself and file_manifest.csv; verify with sha256sum -c manifest/checksums.sha256 from the root. 8. Citation and contact Cite this record by its DOI together with the article. CITATION.cff holds the machine-readable form and must be completed with the author list at deposition. Questions about the code or a number that does not reproduce: contact the corresponding author listed on the article's title page.



