lower-urinary-tract-sim
Python-based model that simulates the dynamics of the bladder, sphincter, and kidney, using normalised neural signals to predict pressure and volume of the bladder.
https://github.com/mover-digital-health-and-care-hub/lower-urinary-tract-sim
Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README -
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.4%) to scientific vocabulary
Repository
Python-based model that simulates the dynamics of the bladder, sphincter, and kidney, using normalised neural signals to predict pressure and volume of the bladder.
Basic Info
- Host: GitHub
- Owner: MoveR-Digital-Health-and-Care-Hub
- License: mit
- Language: Jupyter Notebook
- Default Branch: main
- Size: 10.3 MB
Statistics
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 2
Metadata Files
README.md

Overview
This repository contains a Python-based model that simulates the dynamics of the bladder, sphincter, and kidney, using normalised neural signals to predict pressure and volume of the bladder.
For more detailed mathematical explanations, please refer to the paper: An Open-Source Neurodynamic Model of the Bladder. DOI: 10.1101/2024.11.21.624716
Key Features
- Stochastic Kidney Function: Reflects natural fluctuations in urine production throughout the day, incorporating randomness to account for biological variability.
- Neural Input Modeling: : Features a built-in parameter-based model to simulate neural signals from the brain. This allows for simple modeling of neurological conditions and their effects on the lower urinary tract, as well as the use of external neural models to stimulate the detrusor and sphincter muscles.
Repository Structure
-
model: Contains the Python code for the LUT model (LUT_model.py). -
paper_figures: Contains a Jupyter notebook (figures.ipynb) that reproduces the figures presented in the paper and the experimental data used for validation (RealBladderData.mat). This folder also contains two modified versions of the LUT model (LUT_Model_OAB.pyandLUT_Model_BOO.py) alongside a Jupyter notebook (hypotheses.ipynb) to reproduce pathological hypotheses presented in the paper.
Installation
Clone the repository and install the required dependencies:
bash
git clone https://github.com/MoveR-Digital-Health-and-Care-Hub/lower-urinary-tract-sim.git
cd lower-urinary-tract-sim
pip install -r requirements.txt
Use
```python from model import LUT_Model as model
dT = 0.1 # Time Step maxTime = 300 # Seconds
Create a lower urinary tract instance
LUT = model.LUT()
Run the simulation
data = LUT.processneuralinput(maxTime, dT) ```
Optional Runtime Parameters
noise(default = 1): Controls the level of noise in the kidney output/bladder inflow.V_unit(default = 'm^3', supports: 'm^3', 'ml'): Unit for volume measurements.p_unit(default = 'Pa', supports: 'Pa', 'cmH2O'): Unit for pressure measurements.verbose(default = False): When enabled (set to True), provides simple progress updates (e.g., 'Progress: X%'), which can be useful for monitoring the completion status of long-running simulations.seed(default = None): When provided a numerical seed (e.g. 42), the random noise will be reproducible between LUT model instances.trigger_metric(default = 'pressure', supports: 'pressure', 'volume'): Used to determine which metric triggers voiding, based on their respective thresholds.
Example Output of data
| $VB$ | $f{aD}^$ | $f_{aS}^$ | $rU$ | $Q$ | $pD$ | $pS$ | $Q{in}$ | $t$ | $\omegae^*$ | $\omegai^$ | $\omega_s^$ | voiding | |--------------|-----------|---------|-----|----|-----------|------------|--------------|---------|--------|-------|-------|---------| | 5.012659e-09 | 0.004000 | 0.25000 | 0.0 | 0.0 | 17.459235 | 2947.032009 | 5.012659e-08 | 0.0 | 0.040000 | 0.1 | 0.5 | False | | 1.002532e-08 | 0.007560 | 0.37500 | 0.0 | 0.0 | 33.032752 | 4370.548014 | 5.012657e-08 | 0.1 | 0.040002 | 0.1 | 0.5 | False | | 1.503797e-08 | 0.010729 | 0.43750 | 0.0 | 0.0 | 46.926197 | 5082.306016 | 5.012655e-08 | 0.2 | 0.040003 | 0.1 | 0.5 | False | | 2.005062e-08 | 0.013549 | 0.46875 | 0.0 | 0.0 | 59.322788 | 5438.185017 | 5.012653e-08 | 0.3 | 0.040005 | 0.1 | 0.5 | False | | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | |||||||||||||
Owner
- Name: MoveR-Digital-Health-and-Care-Hub
- Login: MoveR-Digital-Health-and-Care-Hub
- Kind: organization
- Repositories: 1
- Profile: https://github.com/MoveR-Digital-Health-and-Care-Hub
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
title: "An Open-Source Neurodynamic Model of the Lower Urinary Tract"
authors:
- family-names: Lister
given-names: Elliot
orcid: "https://orcid.org/0009-0002-6008-0287"
- family-names: McConnell-Trevillion
given-names: Aidan
orcid: "https://orcid.org/0009-0004-0604-5768"
date-released: 2024-11-21
doi: 10.1101/2024.11.21.624716
repository-code: https://github.com/MoveR-Digital-Health-and-Care-Hub/lower-urinary-tract-sim
license: MIT
preferred-citation:
type: article
authors:
- family-names: Lister
given-names: Elliot
orcid: "https://orcid.org/0009-0002-6008-0287"
- family-names: McConnell-Trevillion
given-names: Aidan
orcid: "https://orcid.org/0009-0004-0604-5768"
- family-names: Jabbari
given-names: Milad
orcid: "https://orcid.org/0000-0001-7127-9115"
- family-names: Erfanian
given-names: Abbas
orcid: "https://orcid.org/0000-0003-0128-4474"
- family-names: Nazarpour
given-names: Kianoush
orcid: "https://orcid.org/0000-0003-4217-0254"
doi: 10.1101/2024.11.21.624716
journal: "bioRxiv"
title: "An Open-Source Neurodynamic Model of the Bladder"
year: 2024
GitHub Events
Total
- Release event: 2
- Watch event: 1
- Push event: 1
- Public event: 1
- Create event: 2
Last Year
- Release event: 2
- Watch event: 1
- Push event: 1
- Public event: 1
- Create event: 2
Dependencies
- Brian2 ==2.8.0.4
- Cython ==3.0.12
- Jinja2 ==3.1.5
- MarkupSafe ==3.0.2
- Pygments ==2.19.1
- appnope ==0.1.4
- asttokens ==3.0.0
- comm ==0.2.2
- contourpy ==1.3.1
- cycler ==0.12.1
- debugpy ==1.8.11
- decorator ==5.2.1
- exceptiongroup ==1.2.2
- executing ==2.1.0
- fonttools ==4.56.0
- importlib_metadata ==8.6.1
- ipykernel ==6.29.5
- ipython ==9.0.0
- ipython_pygments_lexers ==1.1.1
- jedi ==0.19.2
- jupyter_client ==8.6.3
- jupyter_core ==5.7.2
- kiwisolver ==1.4.8
- matplotlib ==3.10.1
- matplotlib-inline ==0.1.7
- mpmath ==1.3.0
- nest_asyncio ==1.6.0
- numpy ==2.2.3
- packaging ==24.2
- pandas ==2.2.3
- parso ==0.8.4
- pexpect ==4.9.0
- pickleshare ==0.7.5
- pillow ==11.1.0
- pip ==25.0
- platformdirs ==4.3.6
- prompt_toolkit ==3.0.50
- psutil ==7.0.0
- ptyprocess ==0.7.0
- pure_eval ==0.2.3
- pyparsing ==3.2.1
- python-dateutil ==2.9.0.post0
- pytz ==2025.1
- pyzmq ==26.2.0
- scipy ==1.15.2
- setuptools ==75.8.0
- six ==1.17.0
- stack_data ==0.6.3
- sympy ==1.13.3
- tornado ==6.4.2
- traitlets ==5.14.3
- typing_extensions ==4.12.2
- tzdata ==2025.1
- wcwidth ==0.2.13
- wheel ==0.45.1
- zipp ==3.21.0