gin-multiomics 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. gin_multiomics-0.2.0/LICENSE +21 -0
  2. gin_multiomics-0.2.0/NOTICE.md +18 -0
  3. gin_multiomics-0.2.0/PKG-INFO +261 -0
  4. gin_multiomics-0.2.0/README.md +216 -0
  5. gin_multiomics-0.2.0/gin_multiomics.egg-info/PKG-INFO +261 -0
  6. gin_multiomics-0.2.0/gin_multiomics.egg-info/SOURCES.txt +102 -0
  7. gin_multiomics-0.2.0/gin_multiomics.egg-info/dependency_links.txt +1 -0
  8. gin_multiomics-0.2.0/gin_multiomics.egg-info/entry_points.txt +2 -0
  9. gin_multiomics-0.2.0/gin_multiomics.egg-info/requires.txt +17 -0
  10. gin_multiomics-0.2.0/gin_multiomics.egg-info/top_level.txt +2 -0
  11. gin_multiomics-0.2.0/gin_tool/__init__.py +33 -0
  12. gin_multiomics-0.2.0/gin_tool/__main__.py +4 -0
  13. gin_multiomics-0.2.0/gin_tool/active_tf.py +563 -0
  14. gin_multiomics-0.2.0/gin_tool/active_tf_promoter_qc.py +283 -0
  15. gin_multiomics-0.2.0/gin_tool/active_tf_rwr.py +119 -0
  16. gin_multiomics-0.2.0/gin_tool/analyze.py +166 -0
  17. gin_multiomics-0.2.0/gin_tool/benchmark.py +114 -0
  18. gin_multiomics-0.2.0/gin_tool/cli.py +1067 -0
  19. gin_multiomics-0.2.0/gin_tool/context_subgraph.py +472 -0
  20. gin_multiomics-0.2.0/gin_tool/debias.py +672 -0
  21. gin_multiomics-0.2.0/gin_tool/dogma_chain_repair.py +520 -0
  22. gin_multiomics-0.2.0/gin_tool/enrichment.py +88 -0
  23. gin_multiomics-0.2.0/gin_tool/flows.py +173 -0
  24. gin_multiomics-0.2.0/gin_tool/gin_defaults.py +34 -0
  25. gin_multiomics-0.2.0/gin_tool/histone_promoter_sign_qc.py +124 -0
  26. gin_multiomics-0.2.0/gin_tool/hme_chain_repair.py +1463 -0
  27. gin_multiomics-0.2.0/gin_tool/io.py +257 -0
  28. gin_multiomics-0.2.0/gin_tool/mapping.py +367 -0
  29. gin_multiomics-0.2.0/gin_tool/module_flow.py +99 -0
  30. gin_multiomics-0.2.0/gin_tool/modules.py +92 -0
  31. gin_multiomics-0.2.0/gin_tool/negative_ppi_feedback.py +194 -0
  32. gin_multiomics-0.2.0/gin_tool/node_lists.py +458 -0
  33. gin_multiomics-0.2.0/gin_tool/null_context.py +336 -0
  34. gin_multiomics-0.2.0/gin_tool/null_rwr.py +91 -0
  35. gin_multiomics-0.2.0/gin_tool/pipeline_version.py +42 -0
  36. gin_multiomics-0.2.0/gin_tool/propagate.py +67 -0
  37. gin_multiomics-0.2.0/gin_tool/regulatory_filter.py +176 -0
  38. gin_multiomics-0.2.0/gin_tool/runtime_limits.py +175 -0
  39. gin_multiomics-0.2.0/gin_tool/runtime_null.py +188 -0
  40. gin_multiomics-0.2.0/gin_tool/schematic.py +113 -0
  41. gin_multiomics-0.2.0/gin_tool/signaling_subgraph.py +373 -0
  42. gin_multiomics-0.2.0/gin_tool/signed_edge_spn_qc.py +134 -0
  43. gin_multiomics-0.2.0/gin_tool/spn_export.py +509 -0
  44. gin_multiomics-0.2.0/gin_tool/spn_rehydrate.py +177 -0
  45. gin_multiomics-0.2.0/gin_tool/subgraph.py +177 -0
  46. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/__init__.py +32 -0
  47. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/budget.py +32 -0
  48. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/chromhmm_emission_weights.py +383 -0
  49. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/chromhmm_panel_assemble.py +397 -0
  50. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/connectivity.py +187 -0
  51. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/data/ginv2_table1_uc_aliases.json +73 -0
  52. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/edge_topology.py +331 -0
  53. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/edge_weight_balance.py +250 -0
  54. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/extract.py +332 -0
  55. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/gin_self_loop.py +217 -0
  56. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/grn_allowlist_prune.py +299 -0
  57. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/interaction_weight_schedule.py +106 -0
  58. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/lcc_multisource_bridge.py +220 -0
  59. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/manifest.py +154 -0
  60. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/met_enzyme_recovery.py +123 -0
  61. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/met_source_seed.py +139 -0
  62. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/metabolite_id_resolve.py +533 -0
  63. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/parallel_util.py +91 -0
  64. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/promoter_edge_policy.py +189 -0
  65. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/protein_self_loop_prune.py +57 -0
  66. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/regulatory_train.py +90 -0
  67. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/role_seed_enrichment.py +208 -0
  68. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/seed_gin_mapping.py +268 -0
  69. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/seeds.py +170 -0
  70. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/signaling_bipartite.py +264 -0
  71. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/spn_degradation.py +220 -0
  72. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/spn_layer_rules.py +481 -0
  73. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/spn_nf_phase.py +141 -0
  74. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/spn_obsidian_export.py +327 -0
  75. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/spn_policy.py +301 -0
  76. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/spn_reasonableness_qc.py +456 -0
  77. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/spn_simulate.py +1365 -0
  78. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/spn_simulator_gin.py +1688 -0
  79. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/spn_standard_policy.py +207 -0
  80. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/stats.py +17 -0
  81. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/stoichiometry_resolve.py +98 -0
  82. gin_multiomics-0.2.0/gin_tool/subgraph_pipeline/ups_degradation_policy.py +594 -0
  83. gin_multiomics-0.2.0/gin_tool/user_stories.py +71 -0
  84. gin_multiomics-0.2.0/gin_tool/viz/__init__.py +118 -0
  85. gin_multiomics-0.2.0/gin_tool/viz/_select.py +48 -0
  86. gin_multiomics-0.2.0/gin_tool/viz/_style.py +29 -0
  87. gin_multiomics-0.2.0/gin_tool/viz/corr_clustermap.py +203 -0
  88. gin_multiomics-0.2.0/gin_tool/viz/export.py +78 -0
  89. gin_multiomics-0.2.0/gin_tool/viz/flows.py +94 -0
  90. gin_multiomics-0.2.0/gin_tool/viz/modules.py +108 -0
  91. gin_multiomics-0.2.0/gin_tool/viz/network.py +162 -0
  92. gin_multiomics-0.2.0/gin_tool/viz/null_charts.py +43 -0
  93. gin_multiomics-0.2.0/gin_tool/viz/qc.py +57 -0
  94. gin_multiomics-0.2.0/gin_tool/viz/scores.py +139 -0
  95. gin_multiomics-0.2.0/pyproject.toml +81 -0
  96. gin_multiomics-0.2.0/scbionet/__init__.py +2 -0
  97. gin_multiomics-0.2.0/scbionet/spn/__init__.py +14 -0
  98. gin_multiomics-0.2.0/scbionet/spn/graphml_io.py +187 -0
  99. gin_multiomics-0.2.0/scbionet/spn/model.py +76 -0
  100. gin_multiomics-0.2.0/scbionet/spn/simulator.py +219 -0
  101. gin_multiomics-0.2.0/scbionet/spn/version.py +3 -0
  102. gin_multiomics-0.2.0/setup.cfg +4 -0
  103. gin_multiomics-0.2.0/tests/test_sifi_gz_io.py +35 -0
  104. gin_multiomics-0.2.0/tests/test_sigpn_engine.py +20 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 GINv3 authors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,18 @@
1
+ # Third-party data notices
2
+
3
+ This package redistributes **derived** network and omics artifacts for manuscript
4
+ reproduction. Upstream licenses and attribution remain with the source databases:
5
+
6
+ - **GIN** bipartite prior (`data/GINv3.11a.sifi.gz`, default toolkit prior) —
7
+ original GIN / lab build lineage; do not treat as a re-license of source
8
+ pathway DBs.
9
+ - **ENCODE / Roadmap** chromHMM emissions and related weights under
10
+ `runtime/chromhmm/` — follow ENCODE / Roadmap terms of use.
11
+ - **ChIP-Atlas / related TF evidence** summarized as H1 allowlists under
12
+ `runtime/chip_gin_align/` — not raw peak beds; cite ChIP-Atlas / original
13
+ experiments as appropriate.
14
+ - Cell-line RNA / metabolite place levels under `runtime/omics_seed/` — derived
15
+ expression features used for SigPN seeding.
16
+
17
+ Code under `gin_tool/` and `scbionet/spn/` is MIT (see `LICENSE`) unless a file
18
+ header states otherwise.
@@ -0,0 +1,261 @@
1
+ Metadata-Version: 2.4
2
+ Name: gin-multiomics
3
+ Version: 0.2.0
4
+ Summary: Global Integrative Network (GIN) multi-omics toolkit: context extraction and SigPN (signaling Petri net; not stochastic PN), with GINv3.11a p53 recipes
5
+ Author-email: Chi Xu <chix@big.ac.cn>
6
+ Maintainer-email: Chi Xu <chix@big.ac.cn>
7
+ License: MIT
8
+ Project-URL: Homepage, https://github.com/BIGchix/GINv3-publication
9
+ Project-URL: Repository, https://github.com/BIGchix/GINv3-publication
10
+ Project-URL: Issues, https://github.com/BIGchix/GINv3-publication/issues
11
+ Project-URL: Changelog, https://github.com/BIGchix/GINv3-publication/blob/main/CHANGELOG.md
12
+ Project-URL: Documentation, https://github.com/BIGchix/GINv3-publication/blob/main/docs/USER_GUIDE.md
13
+ Keywords: GIN,Global Integrative Network,multi-omics,systems biology,signaling,Petri net,SigPN,p53,context subgraph
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3 :: Only
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Programming Language :: Python :: 3.12
24
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
25
+ Requires-Python: >=3.9
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ License-File: NOTICE.md
29
+ Requires-Dist: numpy>=1.24
30
+ Requires-Dist: scipy>=1.11
31
+ Requires-Dist: networkx>=3.2
32
+ Provides-Extra: sim
33
+ Requires-Dist: pandas>=2.0; extra == "sim"
34
+ Requires-Dist: matplotlib>=3.8; extra == "sim"
35
+ Requires-Dist: seaborn>=0.13; extra == "sim"
36
+ Requires-Dist: scikit-learn>=1.3; extra == "sim"
37
+ Provides-Extra: dev
38
+ Requires-Dist: pytest>=7.0; extra == "dev"
39
+ Requires-Dist: build>=1.0; extra == "dev"
40
+ Requires-Dist: pandas>=2.0; extra == "dev"
41
+ Requires-Dist: matplotlib>=3.8; extra == "dev"
42
+ Requires-Dist: seaborn>=0.13; extra == "dev"
43
+ Requires-Dist: scikit-learn>=1.3; extra == "dev"
44
+ Dynamic: license-file
45
+
46
+ # GINv3-publication
47
+
48
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
49
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
50
+
51
+ Multi-omics **Global Integrative Network (GIN)** context extraction and **SigPN**
52
+ (**signaling** Petri net — not stochastic PN) simulation for mechanism-oriented
53
+ analyses. This repository is the manuscript **Code Availability** package:
54
+ an installable toolkit (`gin-multiomics`) plus a recipe that **recomputes** the
55
+ p53 / GINv3.11a publication numbers.
56
+
57
+ The GIN prior ships as **`data/GINv3.11a.sifi.gz`** (~75 MB). The toolkit and
58
+ publication recipe read it **directly** — no unpack step is required.
59
+
60
+ ---
61
+
62
+ ## Citation
63
+
64
+ Upon publication, please cite the accompanying paper (title / journal / DOI to
65
+ be updated here). Until then, cite this repository and the manuscript that
66
+ points to it under Code Availability.
67
+
68
+ ---
69
+
70
+ ## Overview
71
+
72
+ - Extract a **mechanistic context** subgraph from the GINv3 prior given gene
73
+ (or GIN node) seeds.
74
+ - Optionally prune TF→promoter edges with a **cell-specific ChIP allowlist**
75
+ to obtain a cell-line network.
76
+ - Run **SigPN** Monte-Carlo simulations for signaling interventions.
77
+ - **Recompute** the manuscript Stage A / prune / Pulse pipeline and assert
78
+ against published fingerprints (locks under `docs/locks/`).
79
+
80
+ ---
81
+
82
+ ## Requirements
83
+
84
+ | Item | Notes |
85
+ |------|--------|
86
+ | OS | Linux recommended for bit-identical Stage A; macOS works for toolkit use |
87
+ | Python | ≥ 3.9 |
88
+ | Disk | Bundled `data/GINv3.11a.sifi.gz` (~75 MB) |
89
+ | RAM / CPU | Context with `--context-n-jobs 20` is cluster-scale; small demos run on a laptop |
90
+
91
+ ---
92
+
93
+ ## Installation
94
+
95
+ ```bash
96
+ git clone https://github.com/BIGchix/GINv3-publication.git
97
+ cd GINv3-publication
98
+ python3 -m venv .venv && source .venv/bin/activate
99
+ pip install -U pip && pip install -e ".[sim]"
100
+ export PYTHONHASHSEED=0
101
+ python scripts/reproduce_publication.py --steps prepare
102
+ # → verifies data/GINv3.11a.sifi.gz (sha256 f9bb23c4…)
103
+ ```
104
+
105
+ After install, the CLI is available as:
106
+
107
+ ```bash
108
+ python -m gin_tool.cli -h
109
+ # or: gin-multiomics -h
110
+ ```
111
+
112
+ Default `--sifi` is `data/GINv3.11a.sifi.gz` (included in the clone).
113
+ Standalone download (Release does not attach the ~75 MB asset):
114
+ [raw v0.2.0](https://github.com/BIGchix/GINv3-publication/raw/v0.2.0/data/GINv3.11a.sifi.gz)
115
+ · [data/README.md](data/README.md). More detail:
116
+ [docs/USER_GUIDE.md](docs/USER_GUIDE.md).
117
+
118
+ ---
119
+
120
+ ## Quick start
121
+
122
+ **1. Context subgraph** (default prior = compressed GIN):
123
+
124
+ ```bash
125
+ python -m gin_tool.cli \
126
+ --seeds "TP53,MDM2,CDKN1A" \
127
+ --out-dir gin_out/my_context \
128
+ --context-mech-depth 2 \
129
+ --context-n-jobs 8 \
130
+ --node-list-dir ./nodeList \
131
+ --no-debias
132
+ # → gin_out/my_context/subgraph_edges.tsv
133
+ ```
134
+
135
+ ```bash
136
+ bash examples/01_custom_context.sh
137
+ ```
138
+
139
+ **2. SigPN demo** (bundled toy network; **no** GIN prior required):
140
+
141
+ ```bash
142
+ bash examples/03_sigpn_demo.sh
143
+ # → gin_out/example_sigpn_demo/spn.graphml
144
+ # → gin_out/example_sigpn_demo/spn_sim_demo/…
145
+ ```
146
+
147
+ See [examples/](examples/) for more scripts.
148
+
149
+ ---
150
+
151
+ ## Workflow
152
+
153
+ ```text
154
+ seeds + data/GINv3.11a.sifi.gz
155
+ │
156
+ ▼
157
+ context subgraph ──► (optional) ChIP prune ──► SigPN simulation
158
+ ```
159
+
160
+ 1. **Context** — seeds + GIN prior → mechanistic neighborhood (`python -m gin_tool.cli`).
161
+ 2. **Cell prune** (optional) — ChIP allowlist → cell-specific edges
162
+ ([docs/CHIP_ALLOWLIST.md](docs/CHIP_ALLOWLIST.md)).
163
+ 3. **SigPN** — export the Petri net and run Monte-Carlo (demo below). The
164
+ manuscript H1 B0 Pulse is a special-case intervention script; for other
165
+ designs reuse the same engine
166
+ ([docs/SIGPN_CUSTOM_SIMULATIONS.md](docs/SIGPN_CUSTOM_SIMULATIONS.md)).
167
+
168
+ ### From subgraph to SigPN (executable demo)
169
+
170
+ Bundled toy data under `examples/demo_sigpn/` (TP53 / MDM2 / CDKN1A edges
171
+ excerpted from the publication H1-pruned network). Laptop-scale defaults:
172
+ `runs=2`, `blocks=10`.
173
+
174
+ ```bash
175
+ # One-liner
176
+ bash examples/03_sigpn_demo.sh
177
+
178
+ # Equivalent explicit steps
179
+ mkdir -p gin_out/example_sigpn_demo
180
+ cp examples/demo_sigpn/subgraph_edges.tsv gin_out/example_sigpn_demo/
181
+ cp examples/demo_sigpn/place_levels.tsv gin_out/example_sigpn_demo/
182
+
183
+ python examples/run_sigpn_demo.py \
184
+ --subgraph-dir gin_out/example_sigpn_demo \
185
+ --place-levels gin_out/example_sigpn_demo/place_levels.tsv \
186
+ --chromhmm-emission-tsv runtime/chromhmm/panel_emissions/h1_wa01_E003_promoter_emission.tsv \
187
+ --runs 2 \
188
+ --blocks 10 \
189
+ --seed 0
190
+ ```
191
+
192
+ On your own context (after CLI or prune), point `--subgraph-dir` at a folder
193
+ that contains `subgraph_edges.tsv` (and optionally `place_levels.tsv`).
194
+
195
+ ---
196
+
197
+ ## Reproduce manuscript results
198
+
199
+ Recompute the publication pipeline (prior stays compressed throughout):
200
+
201
+ ```bash
202
+ export PYTHONHASHSEED=0
203
+ python scripts/reproduce_publication.py --steps prepare
204
+ python scripts/reproduce_publication.py --steps stage_a --n-jobs 20
205
+ python scripts/assert_p53_pub_gin11a_lock.py
206
+
207
+ # Full pipeline (cluster-scale: prune + Pulse, etc.)
208
+ python scripts/reproduce_publication.py --steps all --n-jobs 20
209
+ ```
210
+
211
+ Stage A lock target: **11,368** edges (details in `docs/locks/`).
212
+ `expected/` is for **assert / CI**, not the primary reproduction path.
213
+ Platform notes (e.g. Linux freeze host vs macOS): see
214
+ [docs/experiments/p53_stageA_server_vs_mac_repro_20261014.md](docs/experiments/p53_stageA_server_vs_mac_repro_20261014.md)
215
+ and the step-by-step guide [REPRODUCE.md](REPRODUCE.md).
216
+
217
+ ---
218
+
219
+ ## Documentation
220
+
221
+ | Document | Contents |
222
+ |----------|----------|
223
+ | [docs/USER_GUIDE.md](docs/USER_GUIDE.md) | Getting started for custom analyses |
224
+ | [docs/CLI_REFERENCE.md](docs/CLI_REFERENCE.md) | Recommended CLI options |
225
+ | [docs/CHIP_ALLOWLIST.md](docs/CHIP_ALLOWLIST.md) | Cell ChIP allowlist format and use |
226
+ | [docs/SIGPN_CUSTOM_SIMULATIONS.md](docs/SIGPN_CUSTOM_SIMULATIONS.md) | SigPN reuse; Pulse as a special case |
227
+ | [REPRODUCE.md](REPRODUCE.md) | Full manuscript recompute recipe |
228
+ | [MANIFEST.md](MANIFEST.md) | Package contents checklist |
229
+
230
+ ---
231
+
232
+ ## Repository layout
233
+
234
+ | Path | Role |
235
+ |------|------|
236
+ | `gin_tool/` | Context / HME / dogma / SigPN CLI |
237
+ | `scbionet/spn/` | Vendored SigPN engine |
238
+ | `data/GINv3.11a.sifi.gz` | Frozen GIN prior (default `--sifi`) |
239
+ | `nodeList/` · `seedLists/` | Layer lists and seeds |
240
+ | `runtime/chip_gin_align/` | Example H1 allowlist |
241
+ | `runtime/omics_seed/` · `runtime/chromhmm/` | Example place levels / emissions |
242
+ | `examples/` | Context / Stage A / SigPN demos (`demo_sigpn/` toy data) |
243
+ | `scripts/reproduce_publication.py` | Manuscript driver (recomputes) |
244
+ | `expected/` | Gold fingerprints for assert |
245
+ | `docs/` | Guides, locks, experiment notes |
246
+
247
+ Historical path prefixes such as `runtime/spn_phys5/` still mean **SigPN**.
248
+
249
+ ---
250
+
251
+ ## License
252
+
253
+ MIT for code (see [LICENSE](LICENSE)). Network and omics artifacts: see
254
+ [NOTICE.md](NOTICE.md).
255
+
256
+ ---
257
+
258
+ ## Contact
259
+
260
+ - Email: [chix@big.ac.cn](mailto:chix@big.ac.cn)
261
+ - GitHub Issues on this repository (once published under Code Availability)
@@ -0,0 +1,216 @@
1
+ # GINv3-publication
2
+
3
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
4
+ [![Python 3.9+](https://img.shields.io/badge/python-3.9+-blue.svg)](https://www.python.org/downloads/)
5
+
6
+ Multi-omics **Global Integrative Network (GIN)** context extraction and **SigPN**
7
+ (**signaling** Petri net — not stochastic PN) simulation for mechanism-oriented
8
+ analyses. This repository is the manuscript **Code Availability** package:
9
+ an installable toolkit (`gin-multiomics`) plus a recipe that **recomputes** the
10
+ p53 / GINv3.11a publication numbers.
11
+
12
+ The GIN prior ships as **`data/GINv3.11a.sifi.gz`** (~75 MB). The toolkit and
13
+ publication recipe read it **directly** — no unpack step is required.
14
+
15
+ ---
16
+
17
+ ## Citation
18
+
19
+ Upon publication, please cite the accompanying paper (title / journal / DOI to
20
+ be updated here). Until then, cite this repository and the manuscript that
21
+ points to it under Code Availability.
22
+
23
+ ---
24
+
25
+ ## Overview
26
+
27
+ - Extract a **mechanistic context** subgraph from the GINv3 prior given gene
28
+ (or GIN node) seeds.
29
+ - Optionally prune TF→promoter edges with a **cell-specific ChIP allowlist**
30
+ to obtain a cell-line network.
31
+ - Run **SigPN** Monte-Carlo simulations for signaling interventions.
32
+ - **Recompute** the manuscript Stage A / prune / Pulse pipeline and assert
33
+ against published fingerprints (locks under `docs/locks/`).
34
+
35
+ ---
36
+
37
+ ## Requirements
38
+
39
+ | Item | Notes |
40
+ |------|--------|
41
+ | OS | Linux recommended for bit-identical Stage A; macOS works for toolkit use |
42
+ | Python | ≥ 3.9 |
43
+ | Disk | Bundled `data/GINv3.11a.sifi.gz` (~75 MB) |
44
+ | RAM / CPU | Context with `--context-n-jobs 20` is cluster-scale; small demos run on a laptop |
45
+
46
+ ---
47
+
48
+ ## Installation
49
+
50
+ ```bash
51
+ git clone https://github.com/BIGchix/GINv3-publication.git
52
+ cd GINv3-publication
53
+ python3 -m venv .venv && source .venv/bin/activate
54
+ pip install -U pip && pip install -e ".[sim]"
55
+ export PYTHONHASHSEED=0
56
+ python scripts/reproduce_publication.py --steps prepare
57
+ # → verifies data/GINv3.11a.sifi.gz (sha256 f9bb23c4…)
58
+ ```
59
+
60
+ After install, the CLI is available as:
61
+
62
+ ```bash
63
+ python -m gin_tool.cli -h
64
+ # or: gin-multiomics -h
65
+ ```
66
+
67
+ Default `--sifi` is `data/GINv3.11a.sifi.gz` (included in the clone).
68
+ Standalone download (Release does not attach the ~75 MB asset):
69
+ [raw v0.2.0](https://github.com/BIGchix/GINv3-publication/raw/v0.2.0/data/GINv3.11a.sifi.gz)
70
+ · [data/README.md](data/README.md). More detail:
71
+ [docs/USER_GUIDE.md](docs/USER_GUIDE.md).
72
+
73
+ ---
74
+
75
+ ## Quick start
76
+
77
+ **1. Context subgraph** (default prior = compressed GIN):
78
+
79
+ ```bash
80
+ python -m gin_tool.cli \
81
+ --seeds "TP53,MDM2,CDKN1A" \
82
+ --out-dir gin_out/my_context \
83
+ --context-mech-depth 2 \
84
+ --context-n-jobs 8 \
85
+ --node-list-dir ./nodeList \
86
+ --no-debias
87
+ # → gin_out/my_context/subgraph_edges.tsv
88
+ ```
89
+
90
+ ```bash
91
+ bash examples/01_custom_context.sh
92
+ ```
93
+
94
+ **2. SigPN demo** (bundled toy network; **no** GIN prior required):
95
+
96
+ ```bash
97
+ bash examples/03_sigpn_demo.sh
98
+ # → gin_out/example_sigpn_demo/spn.graphml
99
+ # → gin_out/example_sigpn_demo/spn_sim_demo/…
100
+ ```
101
+
102
+ See [examples/](examples/) for more scripts.
103
+
104
+ ---
105
+
106
+ ## Workflow
107
+
108
+ ```text
109
+ seeds + data/GINv3.11a.sifi.gz
110
+ │
111
+ ▼
112
+ context subgraph ──► (optional) ChIP prune ──► SigPN simulation
113
+ ```
114
+
115
+ 1. **Context** — seeds + GIN prior → mechanistic neighborhood (`python -m gin_tool.cli`).
116
+ 2. **Cell prune** (optional) — ChIP allowlist → cell-specific edges
117
+ ([docs/CHIP_ALLOWLIST.md](docs/CHIP_ALLOWLIST.md)).
118
+ 3. **SigPN** — export the Petri net and run Monte-Carlo (demo below). The
119
+ manuscript H1 B0 Pulse is a special-case intervention script; for other
120
+ designs reuse the same engine
121
+ ([docs/SIGPN_CUSTOM_SIMULATIONS.md](docs/SIGPN_CUSTOM_SIMULATIONS.md)).
122
+
123
+ ### From subgraph to SigPN (executable demo)
124
+
125
+ Bundled toy data under `examples/demo_sigpn/` (TP53 / MDM2 / CDKN1A edges
126
+ excerpted from the publication H1-pruned network). Laptop-scale defaults:
127
+ `runs=2`, `blocks=10`.
128
+
129
+ ```bash
130
+ # One-liner
131
+ bash examples/03_sigpn_demo.sh
132
+
133
+ # Equivalent explicit steps
134
+ mkdir -p gin_out/example_sigpn_demo
135
+ cp examples/demo_sigpn/subgraph_edges.tsv gin_out/example_sigpn_demo/
136
+ cp examples/demo_sigpn/place_levels.tsv gin_out/example_sigpn_demo/
137
+
138
+ python examples/run_sigpn_demo.py \
139
+ --subgraph-dir gin_out/example_sigpn_demo \
140
+ --place-levels gin_out/example_sigpn_demo/place_levels.tsv \
141
+ --chromhmm-emission-tsv runtime/chromhmm/panel_emissions/h1_wa01_E003_promoter_emission.tsv \
142
+ --runs 2 \
143
+ --blocks 10 \
144
+ --seed 0
145
+ ```
146
+
147
+ On your own context (after CLI or prune), point `--subgraph-dir` at a folder
148
+ that contains `subgraph_edges.tsv` (and optionally `place_levels.tsv`).
149
+
150
+ ---
151
+
152
+ ## Reproduce manuscript results
153
+
154
+ Recompute the publication pipeline (prior stays compressed throughout):
155
+
156
+ ```bash
157
+ export PYTHONHASHSEED=0
158
+ python scripts/reproduce_publication.py --steps prepare
159
+ python scripts/reproduce_publication.py --steps stage_a --n-jobs 20
160
+ python scripts/assert_p53_pub_gin11a_lock.py
161
+
162
+ # Full pipeline (cluster-scale: prune + Pulse, etc.)
163
+ python scripts/reproduce_publication.py --steps all --n-jobs 20
164
+ ```
165
+
166
+ Stage A lock target: **11,368** edges (details in `docs/locks/`).
167
+ `expected/` is for **assert / CI**, not the primary reproduction path.
168
+ Platform notes (e.g. Linux freeze host vs macOS): see
169
+ [docs/experiments/p53_stageA_server_vs_mac_repro_20261014.md](docs/experiments/p53_stageA_server_vs_mac_repro_20261014.md)
170
+ and the step-by-step guide [REPRODUCE.md](REPRODUCE.md).
171
+
172
+ ---
173
+
174
+ ## Documentation
175
+
176
+ | Document | Contents |
177
+ |----------|----------|
178
+ | [docs/USER_GUIDE.md](docs/USER_GUIDE.md) | Getting started for custom analyses |
179
+ | [docs/CLI_REFERENCE.md](docs/CLI_REFERENCE.md) | Recommended CLI options |
180
+ | [docs/CHIP_ALLOWLIST.md](docs/CHIP_ALLOWLIST.md) | Cell ChIP allowlist format and use |
181
+ | [docs/SIGPN_CUSTOM_SIMULATIONS.md](docs/SIGPN_CUSTOM_SIMULATIONS.md) | SigPN reuse; Pulse as a special case |
182
+ | [REPRODUCE.md](REPRODUCE.md) | Full manuscript recompute recipe |
183
+ | [MANIFEST.md](MANIFEST.md) | Package contents checklist |
184
+
185
+ ---
186
+
187
+ ## Repository layout
188
+
189
+ | Path | Role |
190
+ |------|------|
191
+ | `gin_tool/` | Context / HME / dogma / SigPN CLI |
192
+ | `scbionet/spn/` | Vendored SigPN engine |
193
+ | `data/GINv3.11a.sifi.gz` | Frozen GIN prior (default `--sifi`) |
194
+ | `nodeList/` · `seedLists/` | Layer lists and seeds |
195
+ | `runtime/chip_gin_align/` | Example H1 allowlist |
196
+ | `runtime/omics_seed/` · `runtime/chromhmm/` | Example place levels / emissions |
197
+ | `examples/` | Context / Stage A / SigPN demos (`demo_sigpn/` toy data) |
198
+ | `scripts/reproduce_publication.py` | Manuscript driver (recomputes) |
199
+ | `expected/` | Gold fingerprints for assert |
200
+ | `docs/` | Guides, locks, experiment notes |
201
+
202
+ Historical path prefixes such as `runtime/spn_phys5/` still mean **SigPN**.
203
+
204
+ ---
205
+
206
+ ## License
207
+
208
+ MIT for code (see [LICENSE](LICENSE)). Network and omics artifacts: see
209
+ [NOTICE.md](NOTICE.md).
210
+
211
+ ---
212
+
213
+ ## Contact
214
+
215
+ - Email: [chix@big.ac.cn](mailto:chix@big.ac.cn)
216
+ - GitHub Issues on this repository (once published under Code Availability)