Understanding communication at the cellular scale to advance cancer research and treatment.
Build a mechanistic, GPU-first simulation platform that models:
Goal: Rigorous single-cell model with validated biology
Goal: Model immune surveillance and "self" recognition
Goal: Model oncogenesis, immune evasion, therapy resistance
Normal → Oncogenic Stress → Immune Evasion → Castration Resistance
Desmoplastic, Immune-Excluded Microenvironment
Goal: Million+ cell simulations with ML acceleration
Species counts: int32[2000-8000] // molecular species
Parameters: compact indices to global tables
State flags: cell phase, stress level, mutation bitset
MHC-I peptides: sparse array of presented antigens
Immune markers: PD-L1 level, stress ligands
Secretion ports: uptake/release rates per field
Fields: float32[Nx][Ny][Nz][n_species]
O₂, glucose, lactate, cytokines, drugs
Diffusion: CUDA stencil solver
Resolution: 10-50 μm voxels
✅ Single-cell GPU SSA engine ✅ Basic transcription/translation/degradation ✅ Minimal metabolism (toy FBA) ✅ Checkpoint/restore to Zarr
✅ DNA damage/p53/apoptosis ✅ Calibrated doubling times ✅ 2D diffusion (O₂, glucose) ✅ Small colony growth (10-1000 cells)
✅ MHC-I presentation system ✅ NK + CD8 T-cell agents ✅ Immune surveillance → escape ✅ 3D spatial fields
✅ Prostate cancer clonal evolution ✅ ADT + checkpoint blockade simulation ✅ Multi-GPU domain decomposition ✅ Million-cell synthetic runs
✅ PDAC immune-excluded model ✅ ML surrogates (3-10× speedup) ✅ Published validation study ✅ Open-source MVP release
| Approach | Limitation | Our Solution |
|---|---|---|
| ML-only prediction | No mechanistic interpretability | Mechanistic + ML hybrid |
| Agent-based models | Limited intracellular detail | Full biochemical fidelity |
| Whole-cell models | Single bacteria only | Multicellular + immune |
| PhysiCell/BioDynaMo | Simplified intracellular | GPU-batched SSA + dFBA |
Both cognisom and Cogs use:
Understanding communication from cells to minds
cognisom/
├── engine/
│ ├── cuda/ # GPU kernels (SSA, PDE, FBA)
│ ├── cpp/ # C++ bindings
│ └── py/ # Python API, schedulers
├── models/
│ ├── pathways/ # SBML pathway definitions
│ ├── metabolism/ # Genome-scale metabolic models
│ └── presets/ # Cell type configurations
├── immune/
│ ├── agents/ # NK, T-cell, macrophage models
│ ├── recognition/ # MHC-I, TCR, NK receptor logic
│ └── cytokines/ # Signaling field definitions
├── cancer/
│ ├── prostate/ # Prostate cancer specific models
│ ├── pancreatic/ # PDAC models
│ └── mutations/ # Clonal evolution logic
├── ml/
│ ├── surrogates/ # Neural network surrogates
│ └── training/ # Training scripts
├── io/
│ ├── sbml_import.py # SBML parser
│ └── storage.py # Zarr/HDF5 handlers
├── spatial/
│ ├── diffusion/ # PDE solvers
│ └── domain/ # Multi-GPU decomposition
├── tests/
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ └── benchmarks/ # Validation vs literature
├── docs/
│ ├── biology/ # Biological specifications
│ ├── architecture/ # Technical design docs
│ └── validation/ # Calibration & validation
├── funding/
│ ├── grants/ # Grant applications
│ ├── pitch/ # Pitch decks
│ └── budgets/ # Cost breakdowns
└── examples/
├── single_cell/ # Single cell demos
├── spheroid/ # Tumor spheroid growth
└── immune_escape/ # Cancer immune evasion
Cognisom achieves feature parity with VCell with 5 GPU-accelerated solver types:
| Solver | VCell Equivalent | GPU Speedup | Key File |
|---|---|---|---|
| ODE Solver | CVODE | 10-50× | cognisom/gpu/ode_solver.py |
| Smoldyn Spatial | Smoldyn | 20-100× | cognisom/gpu/smoldyn_solver.py |
| Hybrid ODE/SSA | Hybrid Solvers | 5-20× | cognisom/gpu/hybrid_solver.py |
| BNGL Rules | BioNetGen | ~1× (rule parsing) | cognisom/bngl/ |
| Imaging Pipeline | Image-based | 10-50× | cognisom/imaging/ |
GPU-accelerated ODE integration for simulating thousands of cells in parallel:
from cognisom.gpu.ode_solver import BatchedODEIntegrator, ODESystem
system = ODESystem.gene_expression_2species()
solver = BatchedODEIntegrator(system, n_cells=10000, method='rk45')
solution = solver.integrate(t_span=(0, 10), y0=y0)
Simulate individual molecules diffusing in 3D with bimolecular reactions:
from cognisom.gpu.smoldyn_solver import SmoldynSolver, SmoldynSystem, SmoldynSpecies
species = [SmoldynSpecies(name='A', diffusion_coeff=1.0)]
system = SmoldynSystem(species=species, reactions=[], compartment=compartment)
solver = SmoldynSolver(system, n_max_particles=100000)
solver.add_particles('A', positions)
solver.step(dt)
Combines deterministic ODE for high-copy species with stochastic SSA for low-copy:
from cognisom.gpu.hybrid_solver import HybridSolver, HybridSystem
system = HybridSystem.gene_regulatory_network()
solver = HybridSolver(system, n_cells=5000, threshold=100)
solver.initialize()
solver.step(dt)
Handle combinatorial complexity in signaling pathways using reaction rules:
from cognisom.bngl import BNGLModel, BNGLParser
model = BNGLModel.egfr_signaling()
# or parse from file:
parser = BNGLParser()
model = parser.parse_file("model.bngl")
Convert microscopy images into simulation-ready geometries:
from cognisom.imaging import CellSegmenter, MeshGenerator, GPUImageProcessor
proc = GPUImageProcessor()
blurred = proc.gaussian_blur(image, sigma=2.0)
binary = proc.threshold_otsu(blurred)
segmenter = CellSegmenter(method='watershed')
result = segmenter.segment(image) # Returns SegmentationResult
generator = MeshGenerator(resolution=0.5)
mesh = generator.labels_to_mesh(result.labels) # Returns SimulationMesh
All VCell solvers are accessible via the Streamlit dashboard:
http://localhost:8501 or your Brev deployment URLVCell solvers integrate with Cognisom's entity model for data management:
ParameterSet: Store kinetic parameters as entitiesSimulationScenario: Define complete simulation setupsPhysicsModelEntity: Reference specific solver configurationsfrom cognisom.library.models import SimulationScenario, ParameterSet
params = ParameterSet(
name="GRN_baseline",
context="gene_regulatory_network",
parameters={"k_transcription": 1.0, "gamma_mrna": 0.1}
)
scenario = SimulationScenario(
name="GRN_1000_cells",
duration_hours=24.0,
parameter_set_ids=[params.entity_id],
)
# Clone repository
git clone https://github.com/eyentelligence/cognisom.git
cd cognisom
# Build Docker containers
docker-compose build
# Run single-cell demo
python examples/single_cell/basic_growth.py
# Run tests
pytest tests/
If you use cognisom in your research, please cite:
@software{cognisom2025,
title = {cognisom: GPU-Accelerated Cellular Simulation Platform},
author = {eyentelligence},
year = {2025},
url = {https://github.com/eyentelligence/cognisom}
}
MIT License — Open science, open source
Understanding communication from cells to minds.
263 commits
12 commits
Python
94.9%
HCL
2.4%
HTML
1.2%
Understanding communication at the cellular scale to advance cancer research and treatment.
Build a mechanistic, GPU-first simulation platform that models:
Goal: Rigorous single-cell model with validated biology
Goal: Model immune surveillance and "self" recognition
Goal: Model oncogenesis, immune evasion, therapy resistance
Normal → Oncogenic Stress → Immune Evasion → Castration Resistance
Desmoplastic, Immune-Excluded Microenvironment
Goal: Million+ cell simulations with ML acceleration
Species counts: int32[2000-8000] // molecular species
Parameters: compact indices to global tables
State flags: cell phase, stress level, mutation bitset
MHC-I peptides: sparse array of presented antigens
Immune markers: PD-L1 level, stress ligands
Secretion ports: uptake/release rates per field
Fields: float32[Nx][Ny][Nz][n_species]
O₂, glucose, lactate, cytokines, drugs
Diffusion: CUDA stencil solver
Resolution: 10-50 μm voxels
✅ Single-cell GPU SSA engine ✅ Basic transcription/translation/degradation ✅ Minimal metabolism (toy FBA) ✅ Checkpoint/restore to Zarr
✅ DNA damage/p53/apoptosis ✅ Calibrated doubling times ✅ 2D diffusion (O₂, glucose) ✅ Small colony growth (10-1000 cells)
✅ MHC-I presentation system ✅ NK + CD8 T-cell agents ✅ Immune surveillance → escape ✅ 3D spatial fields
✅ Prostate cancer clonal evolution ✅ ADT + checkpoint blockade simulation ✅ Multi-GPU domain decomposition ✅ Million-cell synthetic runs
✅ PDAC immune-excluded model ✅ ML surrogates (3-10× speedup) ✅ Published validation study ✅ Open-source MVP release
| Approach | Limitation | Our Solution |
|---|---|---|
| ML-only prediction | No mechanistic interpretability | Mechanistic + ML hybrid |
| Agent-based models | Limited intracellular detail | Full biochemical fidelity |
| Whole-cell models | Single bacteria only | Multicellular + immune |
| PhysiCell/BioDynaMo | Simplified intracellular | GPU-batched SSA + dFBA |
Both cognisom and Cogs use:
Understanding communication from cells to minds
cognisom/
├── engine/
│ ├── cuda/ # GPU kernels (SSA, PDE, FBA)
│ ├── cpp/ # C++ bindings
│ └── py/ # Python API, schedulers
├── models/
│ ├── pathways/ # SBML pathway definitions
│ ├── metabolism/ # Genome-scale metabolic models
│ └── presets/ # Cell type configurations
├── immune/
│ ├── agents/ # NK, T-cell, macrophage models
│ ├── recognition/ # MHC-I, TCR, NK receptor logic
│ └── cytokines/ # Signaling field definitions
├── cancer/
│ ├── prostate/ # Prostate cancer specific models
│ ├── pancreatic/ # PDAC models
│ └── mutations/ # Clonal evolution logic
├── ml/
│ ├── surrogates/ # Neural network surrogates
│ └── training/ # Training scripts
├── io/
│ ├── sbml_import.py # SBML parser
│ └── storage.py # Zarr/HDF5 handlers
├── spatial/
│ ├── diffusion/ # PDE solvers
│ └── domain/ # Multi-GPU decomposition
├── tests/
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ └── benchmarks/ # Validation vs literature
├── docs/
│ ├── biology/ # Biological specifications
│ ├── architecture/ # Technical design docs
│ └── validation/ # Calibration & validation
├── funding/
│ ├── grants/ # Grant applications
│ ├── pitch/ # Pitch decks
│ └── budgets/ # Cost breakdowns
└── examples/
├── single_cell/ # Single cell demos
├── spheroid/ # Tumor spheroid growth
└── immune_escape/ # Cancer immune evasion
Cognisom achieves feature parity with VCell with 5 GPU-accelerated solver types:
| Solver | VCell Equivalent | GPU Speedup | Key File |
|---|---|---|---|
| ODE Solver | CVODE | 10-50× | cognisom/gpu/ode_solver.py |
| Smoldyn Spatial | Smoldyn | 20-100× | cognisom/gpu/smoldyn_solver.py |
| Hybrid ODE/SSA | Hybrid Solvers | 5-20× | cognisom/gpu/hybrid_solver.py |
| BNGL Rules | BioNetGen | ~1× (rule parsing) | cognisom/bngl/ |
| Imaging Pipeline | Image-based | 10-50× | cognisom/imaging/ |
GPU-accelerated ODE integration for simulating thousands of cells in parallel:
from cognisom.gpu.ode_solver import BatchedODEIntegrator, ODESystem
system = ODESystem.gene_expression_2species()
solver = BatchedODEIntegrator(system, n_cells=10000, method='rk45')
solution = solver.integrate(t_span=(0, 10), y0=y0)
Simulate individual molecules diffusing in 3D with bimolecular reactions:
from cognisom.gpu.smoldyn_solver import SmoldynSolver, SmoldynSystem, SmoldynSpecies
species = [SmoldynSpecies(name='A', diffusion_coeff=1.0)]
system = SmoldynSystem(species=species, reactions=[], compartment=compartment)
solver = SmoldynSolver(system, n_max_particles=100000)
solver.add_particles('A', positions)
solver.step(dt)
Combines deterministic ODE for high-copy species with stochastic SSA for low-copy:
from cognisom.gpu.hybrid_solver import HybridSolver, HybridSystem
system = HybridSystem.gene_regulatory_network()
solver = HybridSolver(system, n_cells=5000, threshold=100)
solver.initialize()
solver.step(dt)
Handle combinatorial complexity in signaling pathways using reaction rules:
from cognisom.bngl import BNGLModel, BNGLParser
model = BNGLModel.egfr_signaling()
# or parse from file:
parser = BNGLParser()
model = parser.parse_file("model.bngl")
Convert microscopy images into simulation-ready geometries:
from cognisom.imaging import CellSegmenter, MeshGenerator, GPUImageProcessor
proc = GPUImageProcessor()
blurred = proc.gaussian_blur(image, sigma=2.0)
binary = proc.threshold_otsu(blurred)
segmenter = CellSegmenter(method='watershed')
result = segmenter.segment(image) # Returns SegmentationResult
generator = MeshGenerator(resolution=0.5)
mesh = generator.labels_to_mesh(result.labels) # Returns SimulationMesh
All VCell solvers are accessible via the Streamlit dashboard:
http://localhost:8501 or your Brev deployment URLVCell solvers integrate with Cognisom's entity model for data management:
ParameterSet: Store kinetic parameters as entitiesSimulationScenario: Define complete simulation setupsPhysicsModelEntity: Reference specific solver configurationsfrom cognisom.library.models import SimulationScenario, ParameterSet
params = ParameterSet(
name="GRN_baseline",
context="gene_regulatory_network",
parameters={"k_transcription": 1.0, "gamma_mrna": 0.1}
)
scenario = SimulationScenario(
name="GRN_1000_cells",
duration_hours=24.0,
parameter_set_ids=[params.entity_id],
)
# Clone repository
git clone https://github.com/eyentelligence/cognisom.git
cd cognisom
# Build Docker containers
docker-compose build
# Run single-cell demo
python examples/single_cell/basic_growth.py
# Run tests
pytest tests/
If you use cognisom in your research, please cite:
@software{cognisom2025,
title = {cognisom: GPU-Accelerated Cellular Simulation Platform},
author = {eyentelligence},
year = {2025},
url = {https://github.com/eyentelligence/cognisom}
}
MIT License — Open science, open source
Understanding communication from cells to minds.
263 commits
12 commits
Python
94.9%
HCL
2.4%
HTML
1.2%