Life123 : Dynamical Modeling of Biological Systems
Home1-click Live DemoTechnologyExperimentsGuideVisualizationDiffusionReactionsMembranesDownloadContact / Participate

Membranes

Discussion Thread

(image source)

The modeling of biological membranes has been a high priority of Life123 since its inception... and their early implementation began with the Beta 12 release. The recent Beta 13 rolled out a full implementation of the data structure in 1D, designed to be biologically relevant and extendable to 2D and 3D, plus functions for data management, visualization and reactions.
Diffusion across membranes (passive transport) is expected to be implemented in Beta 14.

Many of the existing functions to read/modify bin concentrations, have been extended to make allowance for the possible presence of membranes in some bins.
Early visualization functions are included in Beta 13... while full plotly visualization is expected to start in Beta 14.

One guiding criterion to model membranes is the great disparity between the puny thickness of biological membranes (around 4-5 nm) vs. the overwhelmingly larger size of cells (diameters around 0.1 to 5 µm for prokaryotes and some 10-100 µm for eukaryotes.)
We're talking about ratios (of membrane thickness to cell diameter) of some 1:20 to 1:25,000!
A handy source of typical biological values can be found on this site.

The initial modeling of membranes in Life123 will tentatively be as follows:


Details of the data structure

In 1-D, in the absence of membranes, the concentrations of each of the chemical species in each of the bins is a 2-dimensional NumPy array (matrix) of floating-point numbers, of dimensions (n_species x n_bins). That's stored in the BioSim1D class variable system.

At least for now, starting with the Beta 13 release, that same matrix is used for the concentrations values in membrane-free bins, as well as for the "cis" sides of bins with membranes.
The "trans" sides use their own 2-dimensional NumPy array, currently named system_B; that will generally be a sparse matrix.
This early implementation is tentative and subject to change. However, the API will largely or entirely protect higher-level code, as well as the end user, from the underlying data structure details.