Skip to main content

SMART 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

Project description

Test fenics_smart PyPI Deploy static content to Pages pre-commit

Spatial Modeling Algorithms for Reaction-Transport [systems|models|equations]

Statement of Need

Spatial Modeling Algorithms for Reactions and Transport (SMART) is a high-performance finite-element-based simulation package for model specification and numerical simulation for spatially-varying reaction-transport processes. SMART is based on the FEniCS finite element library, provides a symbolic representation framework for specifying reaction pathways, and supports large and irregular cell geometries in 2D and 3D.

Installation

Using docker (recommended)

The simplest way to use fenics-smart is to use the provided docker image. You can get this image by pulling it from the github registry

docker pull ghcr.io/rangamanilabucsd/smart:latest

It is also possible to pull a specific version by changing the tag, e.g

docker pull ghcr.io/rangamanilabucsd/smart:v2.0.1

will use version 2.0.1.

In order to start a container you can use the docker run command. For example the command

docker run --rm -v $(pwd):/home/shared -w /home/shared -ti ghcr.io/rangamanilabucsd/smart:latest

will run the latest version and share your current working directory with the container.

Using pip

fenics-smart is also available on pypi and can be installed with

python3 -m pip install fenics-smart

However this requires FEniCS version 2019.2.0 or later to already be installed. Currently, FEniCS version 2019.2.0 needs to be built from source or use some of the pre-built docker images

Example usage

The SMART repository contains a number of examples in the examples directory which also run as continuous integration tests (see "Automated Tests" below):

  • Example 1: Formation of Turing patterns in 2D reaction-diffusion (rectangular domain)
  • Example 2: Simple cell signaling model in 2D (ellipse)
  • Example 3: Model of protein phosphorylation and diffusion in 3D (sphere)
  • Example 4: Model of second messenger reaction-diffusion in 3D (ellipsoid-in-an-ellipsoid)
  • Example 5: Simple cell signaling model in 3D (cube-in-a-cube)
  • Example 6: Model of calcium dynamics in a neuron (sphere-in-a-sphere)

Functionality documentation

SMART is equipped to handle:

  • Reaction-diffusion with any number of species, reactions, and compartments.
  • 3D-2D problems or 2D-1D problems; that is, you can 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"
  • 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 (SMART will numerically integrate the data points at each time-step).
  • Customized reaction equations (e.g. irreversible Hill equation).

The general form of the mixed-dimensional partial differential equations (PDEs) solved by SMART, along with mathematical details of the numerical implementation, are documented here.

Our API documentation can be accessed here.

Automated tests

Upon pushing new code to the SMART repository, a number of tests run:

  • pre-commit tests
  • unit tests (can be found in tests folder): test initialization of compartment, species, and parameter objects
  • Examples 1-6: All 6 examples are run when building the docs. These serve as Contiuous Integration (CI) tests; within each run, there is a regression test comparing the output values from the simulation with values obtained from a previous build of SMART. Outputs from examples 2 and 3 are also compared to analytical solutions to demonstrate the accuracy of SMART simulations.
  • Example 3 with MPI: Example 3 is run using MPI to run differently sized meshes in parallel (each process is assigned a single mesh).

Contributing guidelines

Detailed contributing guidelines are given here.

Dependencies

  • SMART uses FEniCS to assemble finite element matrices from the variational form
  • SMART uses [PETSc4py] to solve the resultant linear algebra systems.
  • SMART uses pandas as an intermediate data structure to help organize and process models.
  • SMART uses Pint for unit tracking and conversions.
  • SMART uses matplotlib to generate plots in examples
  • SMART uses sympy to allow users to input custom reactions and also to determine the appopriate solution techniques (e.g. testing for non-linearities).
  • SMART uses numpy and scipy for general array manipulations and basic calculations.
  • SMART uses tabulate to make ASCII tables.
  • SMART uses termcolor for colored terminal output.

License

LGPL-3.0

SMART development team

Previous contributors:

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

fenics-smart-2.1.0.tar.gz (65.3 kB view details)

Uploaded Source

Built Distribution

fenics_smart-2.1.0-py3-none-any.whl (69.7 kB view details)

Uploaded Python 3

File details

Details for the file fenics-smart-2.1.0.tar.gz.

File metadata

  • Download URL: fenics-smart-2.1.0.tar.gz
  • Upload date:
  • Size: 65.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for fenics-smart-2.1.0.tar.gz
Algorithm Hash digest
SHA256 5c8e1debe9f99bb702f7cf928baef290394331ae9ebfdce78234b84913b16b21
MD5 ff57b000c8b5e91f83fa273fc4471b1e
BLAKE2b-256 798b72f74daf79de8709a42e2564de64cda06f55dbbd61044fde840223ea9139

See more details on using hashes here.

File details

Details for the file fenics_smart-2.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fenics_smart-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e2d033053d650a53e18c5a9bc6feac240ea96e28925911db5ea6d7c8e01f3d1c
MD5 6bdbef109eb837f470c9e9dcb9c17ea1
BLAKE2b-256 ecc726892b1500ee77645d08ebb9727ea2852c8f7a12f61a8dc7589db87517e5

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