Skip to main content

SMART (Spatial Modeling Algorithms for Reaction and Transport) is a tool for spatially modeling cell signaling networks

Project description

Setup Tool for Unified Biophysical Simulations

PyPI

STUBS is a biophysical simulation library that provides a level of abstraction to models, making it easier for users to develop, share, and simulate their mathematical models. STUBS is highly suited for building systems biology models and simulating them as deterministic partial differential equations [PDEs] in realistic geometries using the Finite Element Method [FEM] - the integration of additional physics such as electro-diffusion or stochasticity may come in future updates. Systems biology models are converted by STUBS into the appropriate systems of reaction-diffusion PDEs with proper boundary conditions. FEniCS is a core dependency of STUBS which handles the assembly of finite element matrices as well as solving the resultant linear algebra systems.

Installation

!!! IMPORTANT !!!

Although FEniCS is a core dependency, because it has many different versions (2019.1, development, FEniCSx, etc.), is quite large, and is complicated to build, it is not packaged with STUBS by default. The recommended way to use STUBS is to create a container from one of the official FEniCS docker images and to pip install STUBS from within the container.

# create a container using DOLFIN built on ubuntu 22.04 with Python 3.10
jgl:~$ docker run -ti --init ghcr.io/scientificcomputing/fenics:2023-01-16
# pip install stubs from within the container
root@jgl:~$ python3 -m pip install fenics-stubs

Dependencies

  • STUBS uses FEniCS to assemble finite element matrices as well as solve the resultant linear algebra systems.
  • STUBS uses pandas as an intermediate data structure to help organize and process models.
  • STUBS uses Pint for unit tracking and conversions.
  • STUBS uses matplotlib to automatically generate plots of min/mean/max (integrated over space) concentrations over time, as well as plots showing solver convergence.
  • STUBS uses sympy to allow users to input custom reactions and also to determine the appopriate solution techniques (e.g. testing for non-linearities).
  • STUBS uses numpy and scipy for general array manipulations and basic calculations.
  • STUBS uses tabulate to make pretty ASCII tables.
  • STUBS uses termcolor for pretty terminal output so that simulations are more satisfying to watch.

Functionality

STUBS is equipped to handle:

  • Reaction-diffusion with any number of species, reactions, and compartments.
  • Reaction-diffusion with boundary conditions between coupled sub-volumes and sub-surfaces (defined by marker values in the .xml file).
  • Reaction-diffusion in non-manifold meshes (experimental).
  • Conversion of units at run-time via Pint so that models can be specified in whatever units are most natural/convenient to the user.
  • Specification of a time-dependent function either algebraically or from data (STUBS will numerically integrate the data points at each time-step).
  • Customized reaction equations (e.g. irreversible Hill equation).

STUBS does not handle (it is possible to implement these features but would require a lot of work - contact author if interested):

  • Problems with coupled-physics spanning more than two dimensions. For example you may solve a problem with many 3d sub-volumes coupled to many 2d sub-surfaces, or a problem with many 2d "sub-volumes" coupled to many 1d "sub-surfaces" but a problem with 3d physics can't be coupled to a problem with 1d physics.
  • Sub-volumes embedded within sub-volumes (i.e. from any point inside the interior sub-volume, one must traverse two surfaces to get to the exterior of the full mesh)

Nomenclature

Because STUBS methods are viable in both 3 dimensional and 2 dimensional geometries we use the following nomenclature to define various functions in the code.

Cell : The element of the highest geometric dimension (e.g. "cell" refers to a tetrahedra in 3d, but a triangle in 2d). Facet : The element of dimenion n-1 if n is the highest geometric dimension. Volume mesh : A set of elements of the highest geometric dimension. Surface mesh : A set of elements of dimension n-1 if n is the highest geometric dimension.

"Cell" and "Volume" are used interchangeably (e.g. a volume mesh is a collection of cells). "Facet" and "Surface" are used interchangeably.

License

STUBS is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

STUBS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with STUBS. If not, see http://www.gnu.org/licenses/.

Acknowledgements

Thanks to Christopher Lee, Yuan Gao, and William Xu for their valuable input and contributions to STUBS.

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

smart-cell-0.0.1.tar.gz (61.9 kB view details)

Uploaded Source

Built Distribution

smart_cell-0.0.1-py3-none-any.whl (60.0 kB view details)

Uploaded Python 3

File details

Details for the file smart-cell-0.0.1.tar.gz.

File metadata

  • Download URL: smart-cell-0.0.1.tar.gz
  • Upload date:
  • Size: 61.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for smart-cell-0.0.1.tar.gz
Algorithm Hash digest
SHA256 8086872d480b8f96a444183e6ae224913d53fe93db0c3a70aa977f0dd865f93c
MD5 ca9b306d26cf06f88c0cfd944324e712
BLAKE2b-256 57fc4918e338eba2340fdb01a34a436715ecdff67251610448b3d707427685c9

See more details on using hashes here.

File details

Details for the file smart_cell-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: smart_cell-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 60.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for smart_cell-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5e0ee64c3b5d09124547cc8347ebee44e70e350a0a0c99b16393f30df50759d5
MD5 33e7edb685c5e88ba2ca93600346ba15
BLAKE2b-256 b7c3bda628e70474e67293d5c4f92385047946d939a9a90692b92d41412cfbd1

See more details on using hashes here.

Supported by

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