Data from: Landscape of epithelial–mesenchymal plasticity as an emergent property of coordinated teams in regulatory networks
Data files
May 06, 2026 version files 5.98 GB
-
eLife_76535_codes.zip
48.13 KB
-
eLife_76535_data.zip
5.98 GB
-
README.md
15.73 KB
Abstract
Elucidating the design principles of regulatory networks driving cellular decision-making has fundamental implications in mapping and eventually controlling cell-fate decisions. Despite being complex, these regulatory networks often only give rise to a few phenotypes. Previously, we identified two “teams” of nodes in a small cell lung cancer regulatory network that constrained the phenotypic repertoire and aligned strongly with the dominant phenotypes obtained from network simulations (Chauhan et al., 2021). However, it remained elusive whether these “teams” exist in other networks and how they shape the phenotypic landscape. Here, we demonstrate that five different networks of varying sizes governing epithelial-mesenchymal plasticity, comprised of two “teams” of players – one comprised of canonical drivers of epithelial phenotype and the other containing the mesenchymal inducers. These “teams” are specific to the topology of these regulatory networks and orchestrate a bimodal phenotypic landscape with the epithelial and mesenchymal phenotypes being more frequent and dynamically robust to perturbations, relative to the intermediary/hybrid epithelial/ mesenchymal ones. Our analysis reveals that network topology alone can contain information about corresponding phenotypic distributions, thus obviating the need to simulate them. We propose “teams” of nodes as a network design principle that can drive cell-fate canalization in diverse decision-making processes.
This dataset accompanies:
Hari, K., Ullanat, V., Balasubramanian, A., Gopalan, A., & Jolly, M. K. (2022). Landscape of epithelial–mesenchymal plasticity as an emergent property of coordinated teams in regulatory networks. eLife, 11, e76535. https://doi.org/10.7554/eLife.76535
The deposit is delivered as two standard zip archives:
| File | Compressed | Extracted | Contents |
|---|---|---|---|
eLife_76535_codes.zip |
~47 KB | <1 MB | Analysis code (mirror of https://github.com/askhari139/Teams) |
eLife_76535_data.zip |
~5.6 GB | ~44 GB | All Boolean, RACIPE, and causation-network simulation outputs |
Together, they let the workflow be reproduced end-to-end from this archive alone. Extract both into the same parent folder before running any of the scripts; the code expects the layout described below relative to a single root directory.
Description of the data and file structure
The dataset contains Boolean (asynchronous Ising-update) and continuous (RACIPE) simulation outputs for five wild-type (WT) gene regulatory networks (GRNs) governing epithelial–mesenchymal plasticity (EMP), together with their randomised topology counterparts and multi-node perturbation analyses. Three additional networks (small cell lung cancer, melanoma, and an OVOL–ZEB network) are included as validation cases for the "teams" framework.
For each WT network, ~500 random topologies are generated by edge swaps that preserve node in/out degree (RandomNetworks(numRand = 500) in Code/R/topoGenAndSim.R). Each topology is simulated with asynchronous Boolean dynamics to obtain steady-state frequency, frustration, and coherence. Per-state EMT score and phenotype labels (E/H/M) are then assigned. Pairwise gene expression correlation matrices, full and team-reduced influence matrices, team strengths, and multi-node perturbation coherences are computed downstream. WT networks are additionally simulated with RACIPE for continuous-parameter validation, with separate runs for edge perturbation, node over-expression, node down-expression, and a quantitative convergence study.
Networks
| Folder name | Size | Role |
|---|---|---|
EMT_RACIPE |
22 nodes, 82 edges | EMP — primary network |
EMT_RACIPE2 |
26 nodes, 100 edges | EMP — extended |
SIL (a.k.a. silviera) |
18 nodes, 33 edges | EMP — Silveira et al. |
SIL2 (a.k.a. silviera2) |
20 nodes, 40 edges | EMP — Silveira et al. variant |
EMT_MET_reduced |
57 nodes, 113 edges | EMP — reduced EMT–MET |
sclcnetwork |
— | Validation: small cell lung cancer |
melanoma |
— | Validation: melanoma plasticity |
ovolzebnetwork |
— | Validation: OVOL–ZEB |
Naming note. The Boolean (Raw_Data/) and most RACIPE folders use SIL / SIL2, but RACIPE/QuantitativeConvergence/ uses the alternative names silviera / silviera2. Both refer to the same networks.
Edges in .topo files use Type = 1 for activation and Type = 2 for inhibition.
Layout after extraction
After extracting both zips into a common root, the directory tree is:
.
├── Code/ From eLife_76535_codes.zip
│ ├── R/ Analysis scripts
│ ├── analysisNfigures/ Driver scripts and figure code
│ └── TopoFiles/ Master copy of .topo input files
│
├── Raw_Data/ From eLife_76535_data.zip — Boolean simulations
│ └── <network>/ e.g. EMT_RACIPE/, SIL/, …
│ ├── *_finFlagFreq.csv Boolean steady states (per topology, at folder root)
│ ├── *.topo WT and randomised topologies (also at root)
│ ├── Influence/ *_fullInfl.csv, *_reducedInfl.csv, *_TeamStrengths.csv, *.teams
│ ├── CorMats/ *_corMat.csv (gene–gene correlation matrices)
│ ├── CompiledData/ <network>_ALL.csv, <network>_ALLnoFlag.csv (summary tables)
│ ├── signalCoherence/ *_signalCoherence.csv (signal-node perturbation)
│ ├── PhenotypicTransition/ Multi-node perturbation coherence ← bulk of the dataset
│ ├── MatrixPlots/ (where present) state heatmaps / matrix visualisations
│ ├── StateMatrix/ (where present) per-state node-expression matrices
│ └── topoFiles/ (EMT_RACIPE only) per-network copy of input topologies
│
├── RACIPE/ From eLife_76535_data.zip — continuous (ODE-ensemble) simulations
│ ├── WildType/<network>/ WT runs: <network>.cfg, <network>_solution.dat, <network>_discreteStates.csv
│ ├── EdgePerturbation/<network>/ Single-edge perturbations of each WT network
│ │ ├── prsFiles/ Parameter-range (.prs) files used by the perturbation runs
│ │ └── Plasticity/ Aggregated plasticity summaries
│ ├── OverExpression/<network>/ Node over-expression simulations
│ ├── DownExpression/<network>/ Node down-expression (knockdown) simulations
│ ├── QuantitativeConvergence/<network>/ Convergence checks (uses silviera/silviera2 naming)
│ └── QC/ (empty placeholder)
│
└── GsMultiPert/ From eLife_76535_data.zip — causation-network (group-strength multi-perturbation) results
└── <network>/
├── Influence/ *_fullInfl.csv, *_reducedInfl.csv, *_TeamStrengths.csv, *.teams
├── Matrices/ Per-perturbation reduced-influence matrices
├── CorMats/ (where present)
├── CompiledData/ (where present)
└── PhenotypicTransition/ (where present)
Coverage is not uniform: e.g., MatrixPlots/ is populated only for EMT_RACIPE, StateMatrix/ only for sclcnetwork and melanoma, and the smaller folders inside GsMultiPert/<network>/ (CorMats, CompiledData, PhenotypicTransition) are present only for the networks where the full causation pipeline was executed.
The folder skeleton is created programmatically by SetupFunc() in Code/R/setupScript.R; the same paths are used here so that the bundled code runs against this dataset without modification.
Disk note. Raw_Data/<network>/PhenotypicTransition/ accounts for roughly 33 GB of the 44 GB extracted total. Make sure you have at least ~50 GB of free disk space before extracting eLife_76535_data.zip.
Files and variables
Input topology files — Code/TopoFiles/*.topo (and per-network copies in Raw_Data/<network>/)
Whitespace-delimited text, one row per directed edge. Header: Source Target Type.
| Variable | Description |
|---|---|
Source |
Regulator node name |
Target |
Target node name |
Type |
1 = activation, 2 = inhibition |
Boolean steady-state files —Raw_Data/<network>/*_finFlagFreq.csv
One row per Boolean steady state recovered from asynchronous updates. The flag column distinguishes pure (single-attractor) states from mixed/oscillatory ones; flag == 1 indicates a pure steady state.
| Variable | Description | Units |
|---|---|---|
states |
Binary string of node states | — |
Avg0 |
Steady-state frequency (SSF) | proportion |
frust0 |
Frustration: fraction of edges in disagreement with the state | 0–1 |
coherence0 |
Coherence: fraction of single-node perturbations that return to the state | 0–1 |
flag |
1 = pure steady state, 0 = oscillation/mixed |
— |
Phenotype |
Phenotype label: E (epithelial), H (hybrid), M (mesenchymal) |
— |
Strength |
State strength (Hamming-based score against team membership) | — |
Empty cells indicate NA (e.g., coherence undefined when only one steady state exists).
Compiled summary tables — Raw_Data/<network>/CompiledData/<network>_ALL.csv and _ALLnoFlag.csv
One row per topology (WT + ~500 randomised). _ALL.csv summarises pure steady states only; _ALLnoFlag.csv summarises all attractors. Variables follow the metrics vector defined in Code/R/compileData.R:
| Variable | Description |
|---|---|
minFrust, maxFrust, meanFrust |
Extrema and mean of state frustration |
minFrustPhen, maxFrustPhen |
Phenotype label of the min/max-frustration state |
meanNetFrust |
Frequency-weighted network-level frustration |
minCoh, maxCoh, meanCoh, meanNetCoh |
Same, for coherence |
minFreq, maxFreq, meanFreq |
Same, for steady-state frequency |
minFreqPhen, maxFreqPhen |
Phenotype labels at frequency extrema |
corFreqFrust, pFreqFrust |
Spearman ρ and p-value for SSF vs frustration |
corFreqCoh, pFreqCoh |
Spearman ρ and p-value for SSF vs coherence |
corFreqStren, pFreqStren |
Spearman ρ and p-value for SSF vs state strength |
corStrenCoh, pStrenCoh |
Spearman ρ and p-value for state strength vs coherence |
corFrustCoh, pFrustCoh |
Spearman ρ and p-value for frustration vs coherence |
corFrustStren, pFrustSren |
Spearman ρ and p-value for frustration vs state strength |
bmSSF, bmFrust, bmCoh |
Bimodality coefficients of log₁₀(SSF), frustration, coherence |
hybridFreq |
Sum of SSF over hybrid (H) states |
terminalFreq |
Sum of SSF over terminal (E or M) states |
nSS |
Number of steady states |
Network |
Topology identifier (matches .topo filename without extension) |
NA denotes that the topology yielded fewer than three pure steady states and was excluded from correlation/bimodality calculations. Human-readable labels are defined inCode/R/setupScript.R (labelvals, labelshorts).
Influence and team files — Raw_Data/<network>/Influence/
| File | Description |
|---|---|
*_fullInfl.csv |
N × N full pairwise influence matrix (path-length-decayed signed reachability) |
*_reducedInfl.csv |
Team-reduced (E/M block) influence matrix |
*.teams |
Two comma-separated lines: epithelial-team nodes (line 1), mesenchymal-team nodes (line 2) |
*_TeamStrengths.csv |
Team strength Ts and impurity per topology |
*_correlInflDiff.csv |
Per-edge difference between observed correlation and influence prediction |
Correlation matrices — Raw_Data/<network>/CorMats/*_corMat.csv
Symmetric N × N matrix of pairwise gene-expression correlations across Boolean steady states (weighted by SSF). Rows and columns are node names; the first column carries row names from write.csv().
Coherence files
| File | Description |
|---|---|
signalCoherence/*_signalCoherence.csv |
Coherence of each steady state under perturbation of each "signal" (no-incoming-edge) node |
PhenotypicTransition/*_<n>R_coherence.csv |
Coherence under simultaneous perturbation of n randomly chosen nodes |
PhenotypicTransition/*_allNodeCoherence_nPert<n>.csv |
All-node multi-perturbation coherence sweep |
Columns include the perturbed-node identity (or set), initial state, final state, and transition frequency.
RACIPE outputs
RACIPE/WildType/<network>/:
| File | Description |
|---|---|
<network>.cfg |
RACIPE configuration (edges, node order, parameter ranges) |
<network>_solution.dat |
Raw RACIPE simulation output (parameter index, n-states, count, per-node expression) |
<network>_discreteStates.csv |
Z-score-discretised RACIPE states with frequency and frustration (computed via discretize() in Code/R/utils.R) |
RACIPE/EdgePerturbation/<network>/ mirrors this structure for each single-edge perturbation of the WT topology, plus:
prsFiles/— RACIPE parameter-range (.prs) files used to seed the perturbation runs.Plasticity/— aggregated plasticity summaries computed from the perturbation outputs.
RACIPE/OverExpression/<network>/andRACIPE/DownExpression/<network>/ contain analogous outputs for node-level over- and down-expression, respectively (one run per perturbed node).
RACIPE/QuantitativeConvergence/<network>/contains repeated-run outputs used to assess RACIPE convergence with sample size (subfolders use the alternative namessilviera/silviera2).
GsMultiPert (causation network) outputs — GsMultiPert/<network>/
Influence/, CorMats/, CompiledData/, and PhenotypicTransition/are structured the same way as inRaw_Data/<network>/but contain results for the causation networks generated byCausationNetworks()inCode/R/topoGenAndSim.R. The additional Matrices/ subfolder holds per-perturbation reduced-influence matrices used to track team-strength changes across edge perturbations.
Logs — LogFile.csv
Where present, this is per-network bookkeeping: rows are topologies, columns track which downstream analyses (correlation, coherence, score) have been run.
Code/software
eLife_76535_codes.zip is a snapshot of the analysis repository at https://github.com/askhari139/Teams; please refer to the GitHub history for the canonical version.
Languages and versions used
- R > 4.1.2, ggplot2 <= 3.5.2
- Julia > 1.6.2 — required only to (re)run Boolean simulations from scratch via
Boolean.jl - For continuous-parameter simulations, a multithreaded fork of RACIPE-1.0 (originally https://github.com/simonhb1990/RACIPE-1.0) was used. The build is archived at https://github.com/csbBSSE/Gene_Network_Modelling/releases/download/v2.28/Multithreaded_Racipe_2.28.zip.
Required R packages
tidyr, readr, magrittr, ggplot2, compiler, dplyr, JuliaCall, xfun, stringr, future, future.apply, purrr, devtools, plus funcsKishore (installed via devtools::install_github).
To reproduce against this dataset
- Download both
eLife_76535_codes.zipandeLife_76535_data.zip. - Extract them into the same parent folder, e.g.
TeamsData/. This will createCode/,Raw_Data/,RACIPE/, andGsMultiPert/side by side. - In
Code/analysisNfigures/empNetAnalysis.R, setsourceLocationto the extractedCode/R/path andmainFolderto theTeamsData/root. - Source the scripts in
Code/R/and run the workflow inempNetAnalysis.R.SetupFunc()will create any missing folders; existing data files are not overwritten.
Access information
Related works
- Source publication: https://doi.org/10.7554/eLife.76535
- Analysis code (canonical): https://github.com/askhari139/Teams
- Boolean simulation engine: https://github.com/askhari139/Boolean.jl
- Modified RACIPE used for continuous simulations: https://github.com/csbBSSE/Gene_Network_Modelling/releases/download/v2.28/Multithreaded_Racipe_2.28.zip
Contact
Kishore Hari — askhari139@gmail.com
Simulations performed on networks via and ising-model inspired boolean formalism. Data processing has been performed as described in the manuscript via custom R codes provided at https://github.com/askhari139/Teams.
