Skip to main content

A toolbox for brain network modeling on GPUs

Project description

https://raw.githubusercontent.com/amnsbr/cubnm/main/docs/_static/logo_text.png https://zenodo.org/badge/DOI/10.5281/zenodo.12097797.svg https://img.shields.io/pypi/v/cubnm https://img.shields.io/readthedocs/cubnm https://img.shields.io/badge/docker-amnsbr/cubnm-blue.svg?logo=docker https://app.codacy.com/project/badge/Grade/e1af99e878bc4dbf9525d8eb610e0026 https://img.shields.io/github/license/amnsbr/cubnm

cuBNM toolbox is designed for efficient brain network modeling on GPUs.

Documentation can be found here. Read the preprint on bioRxiv.

Overview

cuBNM toolbox uses GPUs to efficiently run simulations of brain network models consisting of nodes which are connected through a connectome, and fit them to empirical neuroimaging data through integrated optimization algorithms.

GPU parallelization enables massive scaling of the simulations into higher number of simulations and nodes. Below you can see how computing time varies as a function of number of simulations and nodes on GPUs versus CPUs. For example, running 32,768 simulations (duration: 60s, nodes: 100) would take 3.8 days on a single CPU thread, but only 5.6 minutes on Nvidia A100 GPU, and 21.8 minutes on Nvidia GeForce RTX 4080 Super:

Scaling plots

GPU usage is the primary focus of the toolbox but it also supports running the simulations on single or multiple cores of CPU. CPUs will be used if no GPUs are detected or if requested by the user.

Several commonly used models (e.g., reduced Wong-Wang, Jansen-Rit, Kuramoto, Wilson-Cowan) are implemented, and new models can be added via YAML definition files. A guide is included on the structure of model definition YAML files to help researchers implement custom models.

The simulated activity of model neurons is fed into the Balloon-Windkessel model to calculate simulated BOLD signal. Functional connectivity (FC) and functional connectivity dynamics (FCD) from the simulated BOLD signal are calculated efficiently on GPUs/CPUs and compared to FC and FCD matrices derived from empirical BOLD signals to assess similarity (goodness-of-fit) of the simulated to empirical BOLD signal. The toolbox supports parameter optimization algorithms including grid search and evolutionary optimizers (via pymoo), such as the covariance matrix adaptation-evolution strategy (CMA-ES). Parallelization within the grid or the iterations of evolutionary optimization is done at the level of simulations (across the GPU ‘blocks’), and nodes (across each block’s ‘threads’). The models can incorporate global or regional free parameters that are fit to empirical data using the provided optimization algorithms. Regional parameters can be homogeneous or vary across nodes based on a parameterized combination of fixed maps or independent free parameters for each node or group of nodes.

At its core the toolbox runs highly parallelized simulations using C++/CUDA, while the user interface is written in Python and allows for user control over simulation configurations:

Flowchart of the cuBNM program

Citation

If you use cuBNM in your work, please cite:

Saberi et al., cuBNM: GPU-Accelerated Brain Network Modeling. bioRxiv (2025) [link].

In addition, please cite the original papers for the BNMs and optimization algorithms you use.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cubnm-0.1.0.tar.gz (4.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cubnm-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

cubnm-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

cubnm-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

cubnm-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

cubnm-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

cubnm-0.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

Details for the file cubnm-0.1.0.tar.gz.

File metadata

  • Download URL: cubnm-0.1.0.tar.gz
  • Upload date:
  • Size: 4.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.5

File hashes

Hashes for cubnm-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5716381611af3c175273c84c82abd489fbde12d54a173cdb56c4f43da27a90ff
MD5 82327e2e2ef68210e6cc6b84750f5bcc
BLAKE2b-256 4d045a149ba8d6445b3e26577ccbab7b881c38e1a93e12c1b4a3f3496c6fcb5f

See more details on using hashes here.

File details

Details for the file cubnm-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cubnm-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8ac6fcefd8006ad851690c2d44d70434c6b2d835d220eceddf763e8f8eed84d8
MD5 23d894c63cd6afa3d052f40b6c37fbda
BLAKE2b-256 9db81962651511099d4d44c3745f6080a29046f80d0d4aad3e248b34c7cbc034

See more details on using hashes here.

File details

Details for the file cubnm-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cubnm-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fdcccb076bed33b63b86d94798c89fe65b4ede95ace7d0f6f0582cb65bb73629
MD5 9dce3f92ee46c23247b8dbd4e957c581
BLAKE2b-256 15135560b67d9a3433094de22e9688514a75ae5f98a579e0079bb339f64258d7

See more details on using hashes here.

File details

Details for the file cubnm-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cubnm-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ac5452e8a1638aa0c52a44fc146d6d85bcad1b73a0e9205268e957e9af92787e
MD5 b27ba4e304dc4415c02130aa4f74c588
BLAKE2b-256 af48d087526cb122e44745967664e1b0609023c843fe2c19a1fc64700a574d44

See more details on using hashes here.

File details

Details for the file cubnm-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cubnm-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f8aec2b0c7c410ac8a205b80eb6b2edc25d2fe6625ab444159ef2dc7cf3d739d
MD5 d67c7de5bc43b58dcb09ed9d813fb541
BLAKE2b-256 9eb145a3a1a3982dc2167c669d0c3a77ccd198b54fab66707fa53924ccc80c41

See more details on using hashes here.

File details

Details for the file cubnm-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cubnm-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4f7008e203a6e667c58e43dfed6c06e361e0476f5029f54171b3bc7ca36cfdd
MD5 fac8daa3f5c705261293a9796b8601d7
BLAKE2b-256 846546442123413d48d79cbe47494350cb0d94e3b171eb0a3a1e8464399277ac

See more details on using hashes here.

File details

Details for the file cubnm-0.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cubnm-0.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 749789e1c3b4aeb2e427207418406f44792fb4fffb2f1b1f301567a161450437
MD5 045f092cf4756d30d26ab7a50c4777e8
BLAKE2b-256 b036db28b191cf208c6f50bf4c8b8d1ab6b4ed69dbbd8757e77da7b4f08e9ceb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page