From 7fb4d8fd8c501fca96d03a29d2832d1c3357c4a7 Mon Sep 17 00:00:00 2001 From: Brian Drawert Date: Mon, 7 Mar 2022 17:29:14 -0800 Subject: [PATCH 01/17] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3eac99cc..2cf28137 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- +

SpatialPy is a Python 3 package for simulation of spatial deterministic/stochastic reaction-diffusion-advection problems embedded in Lagrangian reference frame particle based fluid dynamics domain @@ -7,7 +7,7 @@ SpatialPy is a Python 3 package for simulation of spatial deterministic/stochast This package is intended to replace the PyURDME software https://github.com/pyurdme/pyurdme and will feature both a NSM solver for RDME simulation on static domains and a sSSA-SDPD particle based fluid dynamics solver as described in the publication "A hybrid smoothed dissipative particle dynamics (SDPD) spatial stochastic simulation algorithm (sSSA) for advection–diffusion–reaction problems" by Drawert, Jacob, Li, Yi, Petzold https://www.sciencedirect.com/science/article/pii/S0021999118307101
- + PLEASE REGISTER AS A USER, so that we can prove SpatialPy has many users when we seek funding to support development. SpatialPy is part of the StochSS project.
From 0c8d9eb80ba7a9a9b43b88391ff264dca159b3be Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Wed, 9 Mar 2022 09:56:33 -0500 Subject: [PATCH 02/17] Added visualization module to the package. --- spatialpy/core/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/spatialpy/core/__init__.py b/spatialpy/core/__init__.py index bda84e58..b8f9d1dc 100644 --- a/spatialpy/core/__init__.py +++ b/spatialpy/core/__init__.py @@ -30,6 +30,7 @@ from .result import * from .spatialpyerror import * from .species import * +from .visualization import Visualization from .vtkreader import * _formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') From 3ac0310c3283aa8c904923251fabbf7de45e23cf Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Wed, 9 Mar 2022 09:58:23 -0500 Subject: [PATCH 03/17] Added a visualization error to the errors module. --- spatialpy/core/spatialpyerror.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spatialpy/core/spatialpyerror.py b/spatialpy/core/spatialpyerror.py index ca32ff95..4fedb450 100644 --- a/spatialpy/core/spatialpyerror.py +++ b/spatialpy/core/spatialpyerror.py @@ -27,6 +27,11 @@ class ResultError(Exception): Class for exceptions in the results module. """ +class VisualizationError(Exception): + """ + Class for exceptions in the visualization module. + """ + class VTKReaderError(Exception): """ Bass class for exceptions in the vtkreader module. @@ -81,6 +86,9 @@ class SpeciesError(ModelError): # Result Exceptions +# Visualization Exceptions + + # VTKReader Exceptions class VTKReaderIOError(VTKReaderError): """ From 9b71836faa06e254e8399744e0a852115e303676 Mon Sep 17 00:00:00 2001 From: Brian Drawert Date: Wed, 9 Mar 2022 10:20:22 -0800 Subject: [PATCH 04/17] more readme cleanup --- README.md | 7 +++++-- RELEASE_NOTES | 17 ----------------- 2 files changed, 5 insertions(+), 19 deletions(-) delete mode 100644 RELEASE_NOTES diff --git a/README.md b/README.md index 2cf28137..2e6a4d93 100644 --- a/README.md +++ b/README.md @@ -25,9 +25,11 @@ Table of contents - [_Using the source code repository_](#using-the-source-code-repository) - [Usage](#usage) - [_Simple example to illustrate the use of SpatialPy_](#simple-example-to-illustrate-the-use-of-spatialpy) + - [Getting help](#getting-help) - [Contributing](#contributing) - [License](#license) @@ -72,8 +74,8 @@ SpatialPy provides simple object-oriented abstractions for defining a model of a The `run()` method can be customized using keyword arguments to select different solvers, random seed, data return type and more. For more detailed examples on how to use SpatialPy, please see the Jupyter notebooks contained in the [examples](https://github.com/StochSS/SpatialPy/tree/main/examples) subdirectory. - -### Docker environment + Getting help ------------ diff --git a/RELEASE_NOTES b/RELEASE_NOTES deleted file mode 100644 index 718c22b1..00000000 --- a/RELEASE_NOTES +++ /dev/null @@ -1,17 +0,0 @@ - RELEASE NOTES - SpatialPy - -These are release notes for SpatialPy. ----------------------------------------- -Date: 2/25/2021 -Version: 0.5.0+beta ----------------------------------------- -- Initial beta release ----------------------------------------- -Date: 3/9/2021 -Version: 0.5.1+beta ----------------------------------------- -- Added pickling Results -- Added add_mesh() function -- timespan() now includes option to set timestep size -- Added ability to read StochSS domains From af6d642fc54e137676ebbf7817ab91a6189ef662 Mon Sep 17 00:00:00 2001 From: Brian Drawert Date: Wed, 9 Mar 2022 11:17:12 -0800 Subject: [PATCH 05/17] Bumped version 1.0.1 --- spatialpy/__version__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spatialpy/__version__.py b/spatialpy/__version__.py index 22fc6782..9ebc0fc0 100644 --- a/spatialpy/__version__.py +++ b/spatialpy/__version__.py @@ -23,7 +23,7 @@ # @website https://github.com/StochSS/SpatialPy # ============================================================================= -__version__ = '1.0' +__version__ = '1.0.1' __title__ = 'SpatialPy' __description__ = 'Python Interface for Spatial Stochastic Biochemical Simulations' __url__ = 'https://spatialpy.github.io/SpatialPy/' From f9a0b37850d8b7a02facd103f98f81b0e3d6d3ab Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Mon, 14 Mar 2022 14:32:28 -0400 Subject: [PATCH 06/17] Created new module for visualizing results. --- spatialpy/core/visualization.py | 178 ++++++++++++++++++++++++++++++++ 1 file changed, 178 insertions(+) create mode 100644 spatialpy/core/visualization.py diff --git a/spatialpy/core/visualization.py b/spatialpy/core/visualization.py new file mode 100644 index 00000000..9c132da2 --- /dev/null +++ b/spatialpy/core/visualization.py @@ -0,0 +1,178 @@ +''' +SpatialPy is a Python 3 package for simulation of +spatial deterministic/stochastic reaction-diffusion-advection problems +Copyright (C) 2019 - 2022 SpatialPy developers. + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +published by the Free Software Foundation. + +This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +''' + +import math +import numpy +import matplotlib.pyplot as plt + +from spatialpy.core.spatialpyerror import VisualizationError + +common_rgb_values=['#1f77b4','#ff7f0e','#2ca02c','#d62728','#9467bd','#8c564b','#e377c2','#7f7f7f', + '#bcbd22','#17becf','#ff0000','#00ff00','#0000ff','#ffff00','#00ffff','#ff00ff', + '#800000','#808000','#008000','#800080','#008080','#000080','#ff9999','#ffcc99', + '#ccff99','#cc99ff','#ffccff','#62666a','#8896bb','#77a096','#9d5a6c','#9d5a6c', + '#eabc75','#ff9600','#885300','#9172ad','#a1b9c4','#18749b','#dadecf','#c5b8a8', + '#000117','#13a8fe','#cf0060','#04354b','#0297a0','#037665','#eed284','#442244', + '#ffddee','#702afb'] + +def _get_coords(points): + labels = ["X-Axis", "Y-Axis", "Z-Axis"] + coords = [] + axes = [] + i = 0 + while len(coords) < 2 and i < 3: + vertex = list(map(lambda point: point[i], points)) + if numpy.count_nonzero(numpy.diff(vertex)) > 0: + coords.append(vertex) + axes.append(labels[i]) + i += 1 + if len(coords) < 2: + if labels[0] not in axes: + coords.insert(0, list(map(lambda point: point[0], points))) + axes.insert(0, labels[0]) + elif labels[1] not in axes: + coords.append(list(map(lambda point: point[1], points))) + axes.append(labels[1]) + return coords, axes + +def _validate_mplplot_args(args): + if args is None: + return {"figsize": (Visualization.MPL_WIDTH, Visualization.MPL_HEIGHT)} + + supported_splts_args = ["sharex", "sharey", "squeeze"] + supported_fig_args = ["figsize", "dpi", "facecolor", "edgecolor", "frameon"] + + kwargs = {} + for name, val in args.items(): + if name in supported_splts_args or name in supported_fig_args: + kwargs[name] = val + else: + from spatialpy.core import log # pylint: disable=import-outside-toplevel + logmsg = f"Un-supported key word argument: {name} is not currently supported" + log.warning(logmsg) + return kwargs + +class Visualization(): + + MPL_WIDTH = 6.4 + MPL_HEIGHT = 4.8 + MPL_SIZE = 40 + + def __init__(self, data): + self.data = data + + def __get_grid_shape(self, multiple_graphs): + if isinstance(multiple_graphs, tuple): + num_subplots = multiple_graphs[0] * multiple_graphs[1] + if num_subplots < len(self.data.keys()): + errmsg = f"The shape {multiple_graphs} of the graphs is to small for the given data" + raise VisualizationError(errmsg) + nrows = multiple_graphs[0] + ncols = multiple_graphs[1] + else: + nrows = math.ceil(len(self.data.keys()) / 2) + ncols = 2 + return nrows, ncols + + def __validate_mplscatter_args(self, args, name): + if args is None: + return {"s": Visualization.MPL_SIZE} + + supported_args = ["s", "cmap", "color", "marker", "vmin", "vmax"] + + group_args = args[name] + if "cmap" in group_args and "color" in group_args: + errmsg = f"scatter args for {name}: 'cmap' and 'color' cannot both be set." + raise VisualizationError(errmsg) + + kwargs = {} + for arg_name, val in group_args.items(): + if arg_name in supported_args: + kwargs[arg_name] = val + else: + from spatialpy.core import log # pylint: disable=import-outside-toplevel + logmsg = f"Un-supported key word argument: {arg_name} is not currently supported" + log.warning(logmsg) + if "s" not in kwargs: + if "size_scale" in self.data[name]: + mpl_smin = 18 + mpl_smax = 180 + kwargs['s'] = (mpl_smax - mpl_smin) * self.data[name]['size_scale'] + mpl_smin + else: + kwargs['s'] = Visualization.MPL_SIZE + return kwargs + + def plot_scatter(self, plot_args=None, scatter_args=None, multiple_graphs=False, title=None, limits=None): + """ + Visualize data using maplotlib scatter plots. + + :param plot_args: additional keyword arguments passed to :py:class:`matplotlib.pyplot.subplots` + :type plot_args: dict + + :param scatter_args: dict of additional keyword arguments passed to \ + :py:class:`matplotlib.pyplot.scatter` for each group. + :type scatter_args: dist + + :param multiple_graphs: if each data entry should be ploted separately or on the same plot. \ + If ploted separately a shape may be provided. + :type multiple_graphs: bool | tuple(nrows, ncols) + """ + plot_args = _validate_mplplot_args(plot_args) + if multiple_graphs: + plot_args['nrows'], plot_args['ncols'] = self.__get_grid_shape(multiple_graphs) + + fig, axs = plt.subplots(**plot_args) + if multiple_graphs: + axs = axs.flatten() + if len(self.data.keys())%plot_args['ncols'] != 0: + fig.delaxes(axs[-1]) + axs = numpy.delete(axs, -1) + data_keys = list(self.data.keys()) + for index, ax in enumerate(axs): + name = data_keys[index] + coords, axes_labels = _get_coords(self.data[name]["points"]) + + group_args = self.__validate_mplscatter_args(scatter_args, name) + if "cmap" in group_args: + group_args['c'] = self.data[name]["data"] + + ax.scatter(*coords, label=name, **group_args) + ax.set_xlabel(axes_labels[0]) + ax.set_xlim(limits[0]) + ax.set_ylabel(axes_labels[1]) + ax.set_ylim(limits[1]) + ax.grid(linestyle='--', linewidth=1) + ax.legend(loc='upper right', fontsize=12) + if title is not None: + ax.set_title(title) + else: + for index, (name, data) in enumerate(self.data.items()): + x_coords = list(map(lambda point: point[0], data["points"])) + y_coords = list(map(lambda point: point[1], data["points"])) + + group_args = self.__validate_mplscatter_args(scatter_args, name) + if "cmap" in group_args: + group_args['c'] = data["data"] + + axs.scatter(x_coords, y_coords, label=name, **group_args) + axs.grid(linestyle='--', linewidth=1) + axs.legend(loc='upper right', fontsize=12) + if title is not None: + axs.set_title(title) + + plt.axis('scaled') From 832b897bc00f24deaf60893b492ad36c0eb83c13 Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Mon, 14 Mar 2022 14:33:39 -0400 Subject: [PATCH 07/17] Refactored type ploting to use new visualization module. --- spatialpy/core/domain.py | 85 ++++++++++++++++++++++++++++------------ spatialpy/core/result.py | 75 +++++++++++++++++++++++++++-------- 2 files changed, 118 insertions(+), 42 deletions(-) diff --git a/spatialpy/core/domain.py b/spatialpy/core/domain.py index b6c763de..88649a91 100644 --- a/spatialpy/core/domain.py +++ b/spatialpy/core/domain.py @@ -27,6 +27,7 @@ from plotly.offline import init_notebook_mode, iplot from scipy.spatial import KDTree +from spatialpy.core.visualization import Visualization from spatialpy.core.spatialpyerror import DomainError class Domain(): @@ -204,8 +205,8 @@ def set_properties(self, geometry_ivar, type_id, vol=None, mass=None, nu=None, r """ Add a type definition to the domain. By default, all regions are set to type 0. - :param geometry_ivar: an instance of a :py:class:`spatialpy.core.geometry.Geometry` subclass. The 'inside()' method - of this object will be used to assign properties to points. + :param geometry_ivar: an instance of a :py:class:`spatialpy.core.geometry.Geometry` subclass. \ + The 'inside()' method of this object will be used to assign properties to points. :type geometry_ivar: spatialpy.core.geometry.Geometry :param type_id: The identifier for this type. @@ -270,8 +271,8 @@ def fill_with_particles(self, geometry_ivar, deltax, deltay=None, deltaz=None, x """ Fill a geometric shape with particles. - :param geometry_ivar: an instance of a :py:class:`spatialpy.core.geometry.Geometry` subclass. The 'inside()' method - of this object will be used to create add the particles. + :param geometry_ivar: an instance of a :py:class:`spatialpy.core.geometry.Geometry` subclass. \ + The 'inside()' method of this object will be used to create add the particles. :type geometry_ivar: spatialpy.core.geometry.Geometry :param deltax: Distance between particles on the x-axis. @@ -535,7 +536,7 @@ def calculate_vol(self): self.vol[v3] += t_vol / 4 self.vol[v4] += t_vol / 4 - def plot_types(self, width=None, height=None, colormap=None, size=5, title=None, + def plot_types(self, width=None, height=None, colormap=None, size=None, title=None, included_types_list=None, use_matplotlib=False, return_plotly_figure=False): ''' Plots the domain using plotly. Can only be viewed in a Jupyter Notebook. @@ -574,13 +575,10 @@ def plot_types(self, width=None, height=None, colormap=None, size=5, title=None, ''' from spatialpy.core.result import _plotly_iterate # pylint: disable=import-outside-toplevel - if use_matplotlib: - width = 6.4 if width in (None, "auto") else width - height = 4.8 if height in (None, "auto") else height - else: + if not use_matplotlib: if width in (None, "auto"): width = None if width == "auto" else 500 - if height is None: + if height in (None, "auto"): height = None if height == "auto" else 500 if not numpy.count_nonzero(self.vertices[:, 1]): @@ -593,32 +591,67 @@ def plot_types(self, width=None, height=None, colormap=None, size=5, title=None, self._get_type_name_mapping() types = {} + # Normalize volumes to [0, 1] + vols = (self.vol - numpy.min(self.vol))/numpy.ptp(self.vol) for i, type_id in enumerate(self.type_id): name = type_id[5:] if included_types_list is None or name in included_types_list: if name in types: types[name]['points'].append(self.vertices[i]) types[name]['data'].append(self.typeNdxMapping[type_id]) + types[name]['size_scale'] = numpy.append(types[name]['size_scale'], vols[i]) else: - types[name] = {"points":[self.vertices[i]], "data":[self.typeNdxMapping[type_id]]} + types[name] = { + "points": [self.vertices[i]], + "data": [self.typeNdxMapping[type_id]], + "size_scale": numpy.array([vols[i]]) + } if use_matplotlib: - import matplotlib.pyplot as plt # pylint: disable=import-outside-toplevel - - fig, ax = plt.subplots(figsize=(width, height)) - for name, data in types.items(): - x_coords = list(map(lambda point: point[0], data["points"])) - y_coords = list(map(lambda point: point[1], data["points"])) - - ax.scatter(x_coords, y_coords, label=name) - ax.grid(linestyle='--', linewidth=1) - ax.legend(loc='upper right', fontsize=12) - if title is not None: - ax.set_title(title) - - plt.axis('scaled') + if not isinstance(use_matplotlib, dict): + use_matplotlib = {} + use_matplotlib['limits'] = ( + (self.xlim[0] - 0.25, self.xlim[1] + 0.25), (self.ylim[0] - 0.25, self.ylim[1] + 0.25) + ) + + # Support for width, height, and title args + if width not in (None, "auto") and height not in (None, "auto"): + # TODO: Deprecation warning for width and height + plot_args = {"figsize": (width, height)} + + if "plot_args" in use_matplotlib: + for name, val in use_matplotlib['plot_args'].items(): + plot_args[name] = val + use_matplotlib['plot_args'] = plot_args + + base_group_args = {} + if colormap is not None: + base_group_args['cmap'] = colormap + base_group_args['vmin'] = 1 # minimum number of defined types + base_group_args['vmax'] = len(self.typeNdxMapping) # number of defined types + if size is not None: + base_group_args['s'] = size + + if "scatter_args" not in use_matplotlib: + use_matplotlib['scatter_args'] = {} + for type_id in self.typeNdxMapping.keys(): + type_id = type_id[5:] + group_args = base_group_args.copy() + if type_id in use_matplotlib['scatter_args']: + for name, val in use_matplotlib['scatter_args'][type_id].items(): + group_args[name] = val + use_matplotlib['scatter_args'][type_id] = group_args + + if title is not None: + use_matplotlib['title'] = title + + vis_obj = Visualization(data=types) + vis_obj.plot_scatter(**use_matplotlib) return + if size is None: + size = 5 + is_2d = self.dimensions == 2 trace_list = _plotly_iterate(types, size=size, property_name="type", @@ -860,7 +893,7 @@ def create_3D_domain(cls, xlim, ylim, zlim, nx, ny, nz, type_id=1, mass=1.0, :type fixed: bool :param \**kwargs: Additional keyword arguments passed to :py:class:`Domain`. - + :returns: Uniform 3D SpatialPy Domain object. :rtype: spatialpy.core.domain.Domain """ diff --git a/spatialpy/core/result.py b/spatialpy/core/result.py index a8408d8f..a32b6ee5 100644 --- a/spatialpy/core/result.py +++ b/spatialpy/core/result.py @@ -29,6 +29,7 @@ from plotly.offline import init_notebook_mode, iplot # from spatialpy.core.model import * +from spatialpy.core.visualization import Visualization from spatialpy.core.vtkreader import VTKReader from spatialpy.core.spatialpyerror import ResultError @@ -221,6 +222,9 @@ def __del__(self): def __map_property_to_type(self, property_name, data, included_types_list, points, p_ndx): types = {} if property_name == 'type': + # Normalize volumes to [0, 1] + vol = data['mass'] / data['rho'] + vols = (vol - numpy.min(vol))/numpy.ptp(vol) for i, val in enumerate(data['type']): name = self.model.domain.typeNameMapping[val][5:] @@ -228,9 +232,15 @@ def __map_property_to_type(self, property_name, data, included_types_list, point if name in types: types[name]['points'].append(points[i]) types[name]['data'].append(data[property_name][i]) + types[name]['size_scale'] = numpy.append(types[name]['size_scale'], vols[i]) else: - types[name] = {"points":[points[i]], "data":[data[property_name][i]]} - elif property_name == 'v': + types[name] = { + "points": [points[i]], + "data": [data[property_name][i]], + "size_scale": numpy.array([vols[i]]) + } + return types + if property_name == 'v': types[property_name] = { "points": points, "data" : [data[property_name][i][p_ndx] for i in range(0,len(data[property_name]))] @@ -326,7 +336,8 @@ def get_species(self, species, timepoints=None, concentration=False, determinist If set to True, the concentration (=copy_number/volume) is returned. Defaults to False :type concentration: bool - :param deterministic: Whether or not the species is deterministic (True) or stochastic (False). Defaults to False + :param deterministic: Whether or not the species is deterministic (True) or stochastic (False). \ + Defaults to False :type deterministic: bool :param debug: Whether or not debug information should be printed. Defaults to False @@ -614,7 +625,6 @@ def get_property(self, property_name, timepoints=None): t_index_arr = [t_index_arr] num_timepoints = 1 - if property_name == "v": ret = numpy.zeros((num_timepoints, num_voxel, 3)) else: @@ -630,7 +640,7 @@ def get_property(self, property_name, timepoints=None): return ret def plot_property(self, property_name, t_ndx=None, t_val=None, p_ndx=0, width=None, height=None, - colormap=None, size=5, title=None, animated=False, t_ndx_list=None, speed=1, + colormap=None, size=None, title=None, animated=False, t_ndx_list=None, speed=1, f_duration=500, t_duration=300, included_types_list=None, return_plotly_figure=False, use_matplotlib=False, debug=False): """ @@ -743,17 +753,47 @@ def plot_property(self, property_name, t_ndx=None, t_val=None, p_ndx=0, width=No if use_matplotlib: import matplotlib.pyplot as plt # pylint: disable=import-outside-toplevel + if not isinstance(use_matplotlib, dict): + use_matplotlib = {} + use_matplotlib['limits'] = ( + (self.model.domain.xlim[0] - 0.25, self.model.domain.xlim[1] + 0.25), + (self.model.domain.ylim[0] - 0.25, self.model.domain.ylim[1] + 0.25) + ) + + # Support for width, height, and title args + if width not in (None, "auto") and height not in (None, "auto"): + # TODO: Deprecation warning for width and height + plot_args = {"figsize": (width, height)} + + if "plot_args" in use_matplotlib: + for name, val in use_matplotlib['plot_args'].items(): + plot_args[name] = val + use_matplotlib['plot_args'] = plot_args + + base_group_args = {} + if colormap is not None: + base_group_args['cmap'] = colormap + base_group_args['vmin'] = 1 # minimum number of defined types + base_group_args['vmax'] = len(self.model.domain.typeNdxMapping) # number of defined types + if size is not None: + base_group_args['s'] = size + + if "scatter_args" not in use_matplotlib: + use_matplotlib['scatter_args'] = {} + for type_id in self.model.domain.typeNdxMapping.keys(): + type_id = type_id[5:] + group_args = base_group_args.copy() + if type_id in use_matplotlib['scatter_args']: + for name, val in use_matplotlib['scatter_args'][type_id].items(): + group_args[name] = val + use_matplotlib['scatter_args'][type_id] = group_args + + if title is not None: + use_matplotlib['title'] = title + if property_name == "type": - fig, ax = plt.subplots(figsize=(width, height)) - for name, data in types.items(): - x_coords = list(map(lambda point: point[0], data["points"])) - y_coords = list(map(lambda point: point[1], data["points"])) - - ax.scatter(x_coords, y_coords, label=name) - ax.grid(linestyle='--', linewidth=1) - ax.legend(loc='upper right', fontsize=12) - if title is not None: - ax.set_title(title) + vis_obj = Visualization(data=types) + vis_obj.plot_scatter(**use_matplotlib) else: if property_name == 'v': p_data = data[property_name] @@ -769,9 +809,12 @@ def plot_property(self, property_name, t_ndx=None, t_val=None, p_ndx=0, width=No if title is not None: plt.title(title) plt.grid(linestyle='--', linewidth=1) - plt.axis('scaled') + plt.axis('scaled') return + if size is None: + size = 5 + is_2d = self.model.domain.dimensions == 2 trace_list = _plotly_iterate(types, size=size, property_name=property_name, colormap=colormap, is_2d=is_2d) From e10dbfdded7bfe866f6dfd5f8dcc26019f01b0dc Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Tue, 15 Mar 2022 14:53:51 -0400 Subject: [PATCH 08/17] Updated version to v1.0.2. --- spatialpy/__version__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spatialpy/__version__.py b/spatialpy/__version__.py index 9ebc0fc0..46a5efd9 100644 --- a/spatialpy/__version__.py +++ b/spatialpy/__version__.py @@ -23,7 +23,7 @@ # @website https://github.com/StochSS/SpatialPy # ============================================================================= -__version__ = '1.0.1' +__version__ = '1.0.2' __title__ = 'SpatialPy' __description__ = 'Python Interface for Spatial Stochastic Biochemical Simulations' __url__ = 'https://spatialpy.github.io/SpatialPy/' From 84ac411fee949ae2322bd6841bfa82ea50848b7b Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Tue, 15 Mar 2022 15:18:46 -0400 Subject: [PATCH 09/17] Added checkout for matplotlib dependency. --- spatialpy/core/visualization.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/spatialpy/core/visualization.py b/spatialpy/core/visualization.py index 9c132da2..78df1fa5 100644 --- a/spatialpy/core/visualization.py +++ b/spatialpy/core/visualization.py @@ -18,7 +18,12 @@ import math import numpy -import matplotlib.pyplot as plt + +try: + import matplotlib.pyplot as plt + mpl_import_err = None +except ImportError as err: + mpl_import_err = err from spatialpy.core.spatialpyerror import VisualizationError @@ -132,6 +137,9 @@ def plot_scatter(self, plot_args=None, scatter_args=None, multiple_graphs=False, If ploted separately a shape may be provided. :type multiple_graphs: bool | tuple(nrows, ncols) """ + if mpl_import_err is not None: + raise VisualizationError("Missing MatPlotLib dependency.") from mpl_import_err + plot_args = _validate_mplplot_args(plot_args) if multiple_graphs: plot_args['nrows'], plot_args['ncols'] = self.__get_grid_shape(multiple_graphs) From 049e443803045fcbcb75802fecac16eec81d6109 Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Tue, 15 Mar 2022 16:23:16 -0400 Subject: [PATCH 10/17] Refactored the species constructor to accept param names as diffusion coefficient. --- spatialpy/core/model.py | 9 +++++++++ spatialpy/core/species.py | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/spatialpy/core/model.py b/spatialpy/core/model.py index 68b74b03..9de2a5ca 100644 --- a/spatialpy/core/model.py +++ b/spatialpy/core/model.py @@ -318,6 +318,15 @@ def compile_prep(self): self.__update_diffusion_restrictions() self.__apply_initial_conditions() self.__resolve_parameters() + + sanitized_params = self.sanitized_parameter_names() + for species in self.listOfSpecies.values(): + diff_coeff = species.diffusion_coefficient + if isinstance(diff_coeff, str): + if diff_coeff not in sanitized_params: + raise ModelError(f"Parameterm {diff_coeff} doesn't exist.") + species.diffusion_coefficient = sanitized_params[diff_coeff] + self.__get_expression_utility() stoich_matrix = self.__create_stoichiometric_matrix() dep_graph = self.__create_dependency_graph() diff --git a/spatialpy/core/species.py b/spatialpy/core/species.py index c1f03142..fb92e334 100644 --- a/spatialpy/core/species.py +++ b/spatialpy/core/species.py @@ -40,9 +40,9 @@ def __init__(self, name=None, diffusion_coefficient=None, restrict_to=None): if diffusion_coefficient is None: raise SpeciesError("Species must have a diffusion_coefficient.") - if not (isinstance(diffusion_coefficient, (Parameter, float, int)) or \ + if not (isinstance(diffusion_coefficient, (Parameter, str, float, int)) or \ type(diffusion_coefficient).__name__ == 'Parameter'): - raise SpeciesError("Diffusion coefficient must be a spatialpy.Parameter, float, or int.") + raise SpeciesError("Diffusion coefficient must be a spatialpy.Parameter, str, float, or int.") if isinstance(diffusion_coefficient, (float, int)) and diffusion_coefficient < 0: raise SpeciesError("Diffusion coefficient must be non-negative.") From afaba18c085a356c6044a2ae65726cb34543a471 Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Tue, 15 Mar 2022 16:24:09 -0400 Subject: [PATCH 11/17] Updated tests for species. --- test/test_species.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/test_species.py b/test/test_species.py index 3ef5cd62..20d62846 100644 --- a/test/test_species.py +++ b/test/test_species.py @@ -65,10 +65,10 @@ def test_constructor__parameter_diffusion_coefficient(self): self.assertIsInstance(species.diffusion_coefficient, Parameter) - def test_constructor__diffusion_coefficient_not_int_or_float(self): - """ Test the Species constructor with non-int or non-float diffusion_coefficient. """ + def test_constructor__diffusion_coefficient_not_str_int_or_float(self): + """ Test the Species constructor with non-str, non-int, or non-float diffusion_coefficient. """ with self.assertRaises(SpeciesError): - species = Species(name="test_species", diffusion_coefficient="0") + species = Species(name="test_species", diffusion_coefficient=[0]) def test_constructor__restrict_to_not_accepted_type(self): @@ -111,8 +111,8 @@ def test_set_diffusion_coefficient__negative_diffusion_coefficient(self): species.set_diffusion_coefficient(diffusion_coefficient=-1) - def test_set_diffusion_coefficient__diffusion_coefficient_not_int_or_float(self): - """ Test Species.set_diffusion_coefficient method with non-int or non-float diffusion_coefficient. """ + def test_set_diffusion_coefficient__diffusion_coefficient_not_str_int_or_float(self): + """ Test Species.set_diffusion_coefficient method with non-str, non-int, or non-float diffusion_coefficient. """ species = Species(name="test_species", diffusion_coefficient=0) with self.assertRaises(SpeciesError): species.set_diffusion_coefficient(diffusion_coefficient="1") From 21858b7d25e182efa6c6867d28fc88d2984d28d5 Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Wed, 16 Mar 2022 16:05:48 -0400 Subject: [PATCH 12/17] Added support for parameter names as accepted values for det_diffusion_coefficient. --- spatialpy/core/species.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spatialpy/core/species.py b/spatialpy/core/species.py index fb92e334..88824583 100644 --- a/spatialpy/core/species.py +++ b/spatialpy/core/species.py @@ -73,9 +73,9 @@ def set_diffusion_coefficient(self, diffusion_coefficient): :raises SpeciesError: If diffusion_coefficient is negative or not a valid type. """ - if not (isinstance(diffusion_coefficient, (Parameter, float, int)) or \ + if not (isinstance(diffusion_coefficient, (Parameter, str, float, int)) or \ type(diffusion_coefficient).__name__ == 'Parameter'): - raise SpeciesError("Diffusion coefficient must be a spatialpy.Parameter, float, or int.") + raise SpeciesError("Diffusion coefficient must be a spatialpy.Parameter, str, float, or int.") if diffusion_coefficient < 0: raise SpeciesError("Diffusion coefficient must be non-negative.") From 455a8c9376a2c6482ca35057efb518003c42c627 Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Wed, 16 Mar 2022 16:06:43 -0400 Subject: [PATCH 13/17] Updated tests to account for updated type scope for diffusion coefficient. --- test/test_species.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_species.py b/test/test_species.py index 20d62846..77f5b543 100644 --- a/test/test_species.py +++ b/test/test_species.py @@ -115,4 +115,4 @@ def test_set_diffusion_coefficient__diffusion_coefficient_not_str_int_or_float(s """ Test Species.set_diffusion_coefficient method with non-str, non-int, or non-float diffusion_coefficient. """ species = Species(name="test_species", diffusion_coefficient=0) with self.assertRaises(SpeciesError): - species.set_diffusion_coefficient(diffusion_coefficient="1") + species.set_diffusion_coefficient(diffusion_coefficient=[0]) From a0640e02b1d9b87868cb468cd97dd5fc7cca4312 Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Wed, 6 Apr 2022 12:26:18 -0400 Subject: [PATCH 14/17] Added support for species names in initial conditions. --- spatialpy/core/initialcondition.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/spatialpy/core/initialcondition.py b/spatialpy/core/initialcondition.py index f3cb505d..15cd0e9f 100644 --- a/spatialpy/core/initialcondition.py +++ b/spatialpy/core/initialcondition.py @@ -63,6 +63,10 @@ def apply(self, model): :param model: Model contianing the target species. :type model: spatialpy.core.model.Model """ + if isinstance(self.species, str): + if self.species not in model.listOfSpecies: + raise InitialConditionError(f"Species {self.species} does not exist in the model.") + self.species = model.listOfSpecies[self.species] spec_name = self.species.name spec_ndx = None for index, spec_name in enumerate(model.listOfSpecies.keys()): @@ -106,6 +110,10 @@ def apply(self, model): :param model: Model contianing the target species. :type model: spatialpy.core.model.Model """ + if isinstance(self.species, str): + if self.species not in model.listOfSpecies: + raise InitialConditionError(f"Species {self.species} does not exist in the model.") + self.species = model.listOfSpecies[self.species] spec_name = self.species.name spec_ndx = None for index, spec_name in enumerate(model.listOfSpecies.keys()): @@ -158,6 +166,10 @@ def apply(self, model): :param model: Model contianing the target species. :type model: spatialpy.core.model.Model """ + if isinstance(self.species, str): + if self.species not in model.listOfSpecies: + raise InitialConditionError(f"Species {self.species} does not exist in the model.") + self.species = model.listOfSpecies[self.species] spec_name = self.species.name spec_ndx = None for index, spec_name in enumerate(model.listOfSpecies.keys()): From acc1e437d5c6236b0fa22a362521a10980ddb70e Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Thu, 14 Apr 2022 13:42:34 -0400 Subject: [PATCH 15/17] Fixed copyright in the version file. --- spatialpy/__version__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spatialpy/__version__.py b/spatialpy/__version__.py index 46a5efd9..9322493e 100644 --- a/spatialpy/__version__.py +++ b/spatialpy/__version__.py @@ -31,4 +31,4 @@ __author__ = 'See AUTHORS' __email__ = 'bdrawert@unca.edu' __license__ = 'GPL-3.0-only' -__copyright__ = 'Copyright (C) 2017-2022' +__copyright__ = 'Copyright (C) 2019-2022' From 13d7145f94e089cc7ce575dd81fc87780dcc094d Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Thu, 14 Apr 2022 13:57:33 -0400 Subject: [PATCH 16/17] Updated copyright blocks to work with docs. --- setup.py | 32 +++++++++++++-------------- spatialpy/__init__.py | 32 +++++++++++++-------------- spatialpy/__version__.py | 26 ++++++++++------------ spatialpy/core/__init__.py | 26 ++++++++++------------ spatialpy/core/boundarycondition.py | 32 +++++++++++++-------------- spatialpy/core/cleanup.py | 26 ++++++++++------------ spatialpy/core/datafunction.py | 32 +++++++++++++-------------- spatialpy/core/domain.py | 32 +++++++++++++-------------- spatialpy/core/geometry.py | 32 +++++++++++++-------------- spatialpy/core/initialcondition.py | 32 +++++++++++++-------------- spatialpy/core/model.py | 32 +++++++++++++-------------- spatialpy/core/parameter.py | 26 ++++++++++------------ spatialpy/core/reaction.py | 32 +++++++++++++-------------- spatialpy/core/result.py | 32 +++++++++++++-------------- spatialpy/core/spatialpyerror.py | 32 +++++++++++++-------------- spatialpy/core/species.py | 26 ++++++++++------------ spatialpy/core/visualization.py | 32 +++++++++++++-------------- spatialpy/core/vtkreader.py | 32 +++++++++++++-------------- spatialpy/solvers/__init__.py | 26 ++++++++++------------ spatialpy/solvers/build_expression.py | 32 +++++++++++++-------------- spatialpy/solvers/solver.py | 32 +++++++++++++-------------- spatialpy/stochss/__init__.py | 26 ++++++++++------------ spatialpy/stochss/stochss_export.py | 32 +++++++++++++-------------- test/ioperformance.py | 32 +++++++++++++-------------- test/models/__init__.py | 28 ++++++++++------------- test/models/cylinder_demo3D.py | 32 +++++++++++++-------------- test/models/mincde.py | 32 +++++++++++++-------------- test/models/mincde_5r.py | 32 +++++++++++++-------------- test/run_integration_tests.py | 32 +++++++++++++-------------- test/run_unit_tests.py | 32 +++++++++++++-------------- test/test_mincde.py | 26 ++++++++++------------ test/test_model.py | 32 +++++++++++++-------------- test/test_parameter.py | 32 +++++++++++++-------------- test/test_reaction.py | 32 +++++++++++++-------------- test/test_solver.py | 32 +++++++++++++-------------- test/test_species.py | 32 +++++++++++++-------------- test/test_threads.py | 26 ++++++++++------------ 37 files changed, 525 insertions(+), 601 deletions(-) diff --git a/setup.py b/setup.py index b802fe9f..32d8db35 100644 --- a/setup.py +++ b/setup.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #!/usr/bin/env python3 # ============================================================================= diff --git a/spatialpy/__init__.py b/spatialpy/__init__.py index e125594a..8e541f81 100644 --- a/spatialpy/__init__.py +++ b/spatialpy/__init__.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #__all__=['model','spatialpy'] #from .spatialpy import * diff --git a/spatialpy/__version__.py b/spatialpy/__version__.py index 9322493e..52fbb588 100644 --- a/spatialpy/__version__.py +++ b/spatialpy/__version__.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # ============================================================================= # @file __version__.py diff --git a/spatialpy/core/__init__.py b/spatialpy/core/__init__.py index b8f9d1dc..1cd9ac9d 100644 --- a/spatialpy/core/__init__.py +++ b/spatialpy/core/__init__.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import logging from spatialpy.__version__ import __version__ diff --git a/spatialpy/core/boundarycondition.py b/spatialpy/core/boundarycondition.py index c66579d2..32f25ae7 100644 --- a/spatialpy/core/boundarycondition.py +++ b/spatialpy/core/boundarycondition.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . from spatialpy.core.spatialpyerror import BoundaryConditionError diff --git a/spatialpy/core/cleanup.py b/spatialpy/core/cleanup.py index fe1fd204..6da34ccf 100644 --- a/spatialpy/core/cleanup.py +++ b/spatialpy/core/cleanup.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import os import shutil diff --git a/spatialpy/core/datafunction.py b/spatialpy/core/datafunction.py index a926fc5d..5cfaff1b 100644 --- a/spatialpy/core/datafunction.py +++ b/spatialpy/core/datafunction.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . from spatialpy.core.spatialpyerror import DataFunctionError class DataFunction(): diff --git a/spatialpy/core/domain.py b/spatialpy/core/domain.py index 88649a91..4a8c4d2a 100644 --- a/spatialpy/core/domain.py +++ b/spatialpy/core/domain.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import json import string diff --git a/spatialpy/core/geometry.py b/spatialpy/core/geometry.py index ee3e7aa5..f9c4b6cc 100644 --- a/spatialpy/core/geometry.py +++ b/spatialpy/core/geometry.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . from spatialpy.core.spatialpyerror import GeometryError class Geometry: diff --git a/spatialpy/core/initialcondition.py b/spatialpy/core/initialcondition.py index 15cd0e9f..94e35f32 100644 --- a/spatialpy/core/initialcondition.py +++ b/spatialpy/core/initialcondition.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import numpy from spatialpy.core.spatialpyerror import InitialConditionError diff --git a/spatialpy/core/model.py b/spatialpy/core/model.py index 9de2a5ca..62b38ede 100644 --- a/spatialpy/core/model.py +++ b/spatialpy/core/model.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #This module defines a model that simulates a discrete, stoachastic, mixed biochemical reaction network in python. diff --git a/spatialpy/core/parameter.py b/spatialpy/core/parameter.py index d918663a..7dc35a4d 100644 --- a/spatialpy/core/parameter.py +++ b/spatialpy/core/parameter.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . from spatialpy.core.spatialpyerror import ParameterError class Parameter(): diff --git a/spatialpy/core/reaction.py b/spatialpy/core/reaction.py index 988f0823..1e3f8a7b 100644 --- a/spatialpy/core/reaction.py +++ b/spatialpy/core/reaction.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import uuid from spatialpy.core.species import Species diff --git a/spatialpy/core/result.py b/spatialpy/core/result.py index a32b6ee5..fbba4537 100644 --- a/spatialpy/core/result.py +++ b/spatialpy/core/result.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import csv import filecmp diff --git a/spatialpy/core/spatialpyerror.py b/spatialpy/core/spatialpyerror.py index 4fedb450..6ad7d0f1 100644 --- a/spatialpy/core/spatialpyerror.py +++ b/spatialpy/core/spatialpyerror.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . # Base Module Expections class ModelError(Exception): diff --git a/spatialpy/core/species.py b/spatialpy/core/species.py index 88824583..99e85353 100644 --- a/spatialpy/core/species.py +++ b/spatialpy/core/species.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . from spatialpy.core.parameter import Parameter from spatialpy.core.spatialpyerror import SpeciesError diff --git a/spatialpy/core/visualization.py b/spatialpy/core/visualization.py index 78df1fa5..b69abc9b 100644 --- a/spatialpy/core/visualization.py +++ b/spatialpy/core/visualization.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import math import numpy diff --git a/spatialpy/core/vtkreader.py b/spatialpy/core/vtkreader.py index fe6e363d..99e5f1a7 100644 --- a/spatialpy/core/vtkreader.py +++ b/spatialpy/core/vtkreader.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import numpy diff --git a/spatialpy/solvers/__init__.py b/spatialpy/solvers/__init__.py index c2d9df7c..fd7a442b 100644 --- a/spatialpy/solvers/__init__.py +++ b/spatialpy/solvers/__init__.py @@ -1,19 +1,17 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . from .solver import * diff --git a/spatialpy/solvers/build_expression.py b/spatialpy/solvers/build_expression.py index 505bc79b..573a1ea8 100644 --- a/spatialpy/solvers/build_expression.py +++ b/spatialpy/solvers/build_expression.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import ast diff --git a/spatialpy/solvers/solver.py b/spatialpy/solvers/solver.py index ea622ba0..a9f50240 100644 --- a/spatialpy/solvers/solver.py +++ b/spatialpy/solvers/solver.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import os import shutil diff --git a/spatialpy/stochss/__init__.py b/spatialpy/stochss/__init__.py index 4cb912d4..5449def2 100644 --- a/spatialpy/stochss/__init__.py +++ b/spatialpy/stochss/__init__.py @@ -1,17 +1,15 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . diff --git a/spatialpy/stochss/stochss_export.py b/spatialpy/stochss/stochss_export.py index 02ecc484..45fbf571 100644 --- a/spatialpy/stochss/stochss_export.py +++ b/spatialpy/stochss/stochss_export.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import ast import json diff --git a/test/ioperformance.py b/test/ioperformance.py index 9603f788..4cda3b9f 100644 --- a/test/ioperformance.py +++ b/test/ioperformance.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #!/usr/bin/env python3 """ PyURDME model with one species diffusing in the unit circle and one diff --git a/test/models/__init__.py b/test/models/__init__.py index f7ca2dba..5449def2 100644 --- a/test/models/__init__.py +++ b/test/models/__init__.py @@ -1,19 +1,15 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . diff --git a/test/models/cylinder_demo3D.py b/test/models/cylinder_demo3D.py index f53b65c5..b8980747 100644 --- a/test/models/cylinder_demo3D.py +++ b/test/models/cylinder_demo3D.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import os import numpy diff --git a/test/models/mincde.py b/test/models/mincde.py index 57f9f954..12c8e2dc 100644 --- a/test/models/mincde.py +++ b/test/models/mincde.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #!/usr/bin/env python3 diff --git a/test/models/mincde_5r.py b/test/models/mincde_5r.py index 3a73e092..6f945ed3 100644 --- a/test/models/mincde_5r.py +++ b/test/models/mincde_5r.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #!/usr/bin/env python3 """ spatialpy model file for the MinCDE example. """ diff --git a/test/run_integration_tests.py b/test/run_integration_tests.py index a2b547e3..b84d845f 100644 --- a/test/run_integration_tests.py +++ b/test/run_integration_tests.py @@ -1,21 +1,19 @@ #!/usr/bin/env python3 -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import unittest, sys, os import argparse diff --git a/test/run_unit_tests.py b/test/run_unit_tests.py index b35fb3f3..48e360cc 100755 --- a/test/run_unit_tests.py +++ b/test/run_unit_tests.py @@ -1,21 +1,19 @@ #!/usr/bin/env python3 -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import unittest, sys, os import argparse diff --git a/test/test_mincde.py b/test/test_mincde.py index f089df1a..758e364a 100644 --- a/test/test_mincde.py +++ b/test/test_mincde.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #!/usr/bin/env python3 diff --git a/test/test_model.py b/test/test_model.py index d5a4dbc0..599c9647 100644 --- a/test/test_model.py +++ b/test/test_model.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import pickle diff --git a/test/test_parameter.py b/test/test_parameter.py index d080f8a9..4d240b48 100644 --- a/test/test_parameter.py +++ b/test/test_parameter.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import unittest import spatialpy diff --git a/test/test_reaction.py b/test/test_reaction.py index 93d213f3..116dcc3c 100644 --- a/test/test_reaction.py +++ b/test/test_reaction.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import re import unittest diff --git a/test/test_solver.py b/test/test_solver.py index feee5619..28bb96ba 100644 --- a/test/test_solver.py +++ b/test/test_solver.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #!/usr/bin/env python3 diff --git a/test/test_species.py b/test/test_species.py index 77f5b543..d1569a4b 100644 --- a/test/test_species.py +++ b/test/test_species.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. - -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. + +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . import unittest import spatialpy diff --git a/test/test_threads.py b/test/test_threads.py index feeba6f0..b555a511 100644 --- a/test/test_threads.py +++ b/test/test_threads.py @@ -1,20 +1,18 @@ -''' -SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers. +# SpatialPy is a Python 3 package for simulation of +# spatial deterministic/stochastic reaction-diffusion-advection problems +# Copyright (C) 2019 - 2022 SpatialPy developers. -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation. +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as +# published by the Free Software Foundation. -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details. -You should have received a copy of the GNU General Public License -along with this program. If not, see . -''' +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . #!/usr/bin/env python3 From c571bc15d74dddbd7c1a7d20752c227d1798dbbc Mon Sep 17 00:00:00 2001 From: Bryan Rumsey Date: Thu, 14 Apr 2022 14:02:44 -0400 Subject: [PATCH 17/17] Updated docs. --- docs/build/html/.buildinfo | 2 +- .../.doctrees/classes/spatialpy.core.doctree | Bin 1306308 -> 1443706 bytes .../html/.doctrees/classes/spatialpy.doctree | Bin 5787 -> 3721 bytes .../classes/spatialpy.solvers.doctree | Bin 225723 -> 226153 bytes .../classes/spatialpy.stochss.doctree | Bin 15653 -> 11550 bytes docs/build/html/.doctrees/environment.pickle | Bin 451550 -> 468837 bytes docs/build/html/.doctrees/index.doctree | Bin 15835 -> 16082 bytes docs/build/html/_modules/index.html | 7 +- .../spatialpy/core/boundarycondition.html | 32 +- .../html/_modules/spatialpy/core/cleanup.html | 32 +- .../_modules/spatialpy/core/datafunction.html | 38 +- .../html/_modules/spatialpy/core/domain.html | 117 +- .../_modules/spatialpy/core/geometry.html | 38 +- .../spatialpy/core/initialcondition.html | 50 +- .../html/_modules/spatialpy/core/model.html | 41 +- .../_modules/spatialpy/core/parameter.html | 38 +- .../_modules/spatialpy/core/reaction.html | 38 +- .../html/_modules/spatialpy/core/result.html | 107 +- .../spatialpy/core/spatialpyerror.html | 40 +- .../html/_modules/spatialpy/core/species.html | 46 +- .../spatialpy/core/visualization.html | 310 +++++ .../_modules/spatialpy/core/vtkreader.html | 32 +- .../spatialpy/solvers/build_expression.html | 32 +- .../_modules/spatialpy/solvers/solver.html | 39 +- .../spatialpy/stochss/stochss_export.html | 32 +- .../_sources/classes/spatialpy.core.rst.txt | 8 + docs/build/html/_static/basic.css | 6 +- docs/build/html/_static/doctools.js | 5 +- .../html/_static/documentation_options.js | 2 +- docs/build/html/_static/language_data.js | 2 +- docs/build/html/_static/pygments.css | 8 +- docs/build/html/_static/searchtools.js | 23 +- docs/build/html/classes/spatialpy.core.html | 1107 ++++++++++------- docs/build/html/classes/spatialpy.html | 40 +- .../build/html/classes/spatialpy.solvers.html | 91 +- .../build/html/classes/spatialpy.stochss.html | 49 +- docs/build/html/genindex.html | 115 +- docs/build/html/index.html | 35 +- docs/build/html/objects.inv | Bin 2537 -> 2703 bytes docs/build/html/py-modindex.html | 11 +- docs/build/html/search.html | 11 +- docs/build/html/searchindex.js | 2 +- docs/classes/spatialpy.core.rst | 8 + 43 files changed, 1656 insertions(+), 938 deletions(-) create mode 100644 docs/build/html/_modules/spatialpy/core/visualization.html diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo index ab4bd335..1a89b373 100644 --- a/docs/build/html/.buildinfo +++ b/docs/build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 9eb3e1c2ecc65d7c728e939f73f722a8 +config: dcc482ab068f3e2527755562cc1c17ff tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/.doctrees/classes/spatialpy.core.doctree b/docs/build/html/.doctrees/classes/spatialpy.core.doctree index 3c9dfe513734edd881daf28356edbdbb34ce9d4a..7fd9b75429058a6ca499130f3d5f769131ce12bc 100644 GIT binary patch literal 1443706 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: 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 Lj7b*@ab5opMwD*n diff --git a/docs/build/html/.doctrees/classes/spatialpy.doctree b/docs/build/html/.doctrees/classes/spatialpy.doctree index 9c5f3485497d2593094e052efbaa563163a1a9f3..7a400cbbf5c6c3741ca1ede14756647646be7b31 100644 GIT binary patch delta 1029 zcmb7D%}x_h6lMye7Al1niHT4^M9{Vj!b0Psk*KR`6Qit5)7(xkJ!5C?40G>jxK|ia zv{Z4;z@bd2=BKUsDHw$5aNXG8)aORouM_464ySeFM!SqlqAhAE+0gR2RX77H@Uy1? zsX|aDFte?eV6LcO9%BJx5#vHp1(1d~mS+#kAp_pw zhv`;J{y2`f*1so=3)d7rrP)V5@jU7)(!VuNlec1{gPcu@9;StC`-v9*19_xbGM zdk>Of92e^%$?Nh3QnE0#mV1a9@qd(TbqC3vp_xBX@^0v6It|Zoe!C&O|5ur^`g%2$ z*LsmIK{JdyZY8j3)^wRb)w!Y_!0ps*Cq;VI>&G1LPL^!+w0T6^IQNLKi0##9+oU3= zecTOpA?G9ga`tK$9^-D{n^Zvt9dz(z^s5$uw+ElcRy8dn zr)2~AKDjb6&Z#LZmz6lRH*qejsfPTP+`h68d%&OuyRZ|4QAQjp>K=Nh<^BBvumbEB z0+?%k?x9a===vR0ttsD3Ox@}@zS*(b5j~-9ag;|rN30KG+Q0z*i~kfkiXtDH;^5w? hHSOGp#Y{V>ARlg36;(J~p{DDjBra2h7VklM`3JmXYIXns literal 5787 zcmd^DU29y&8J29Xq+Na6wP>+ahSC-#wssS{7p>C|WFaR)@>)o8f&<|&d(Q06*yo%% zJu^qrUKE;(v^LCz!6)Cb7#>Gl3N@ z7rqy>F#RYs3wF5{zG@fyrxkOxkYTl*H~18v{wQ7NP1Ddq`)p*&EUSoWLH%e*BI-V- z1D4vwSbOP+omwVdwB(aC;|xb%F;fu*FFNJRe3D-@Qw678bIBJWOS?&rnikbM7QIB{ zh4w`kg{Lg{)2>gI0ukShkOukJjF&|9pa-^M*0*aCGp*^sPNjU2U*mK3M!srpb+`;z zM+LZsvzwj6{7w7A4y2R1(bWVbUvvqH?LMoTb%b zcpKbwa&EeO&Ayrc5D(=9qWlqlKgRE;_^sm+{LPH{8~Jj69gH-cK_rvV8&OcM zJ3fJzOIOEiRC&eR%P!*A%<{RXL*`IcEHX*2cg@PV6>V3>Ed4{;H9t5%r=)+(V)fE# zFv*pjW@b)=uAg|UFZ}#6zRwT%5i>IZJ@r_mdAfTE2%u30SKwvf%U=4_OmX3PK=)HK zUmQ^pX2K-sv6y-3?u2P&U{*5phgjQ!k<>4P;xp5NHC}MF+ z$CdOe>>E)Ml*%flnpri14O;4WoIIlPR*lz6<*&fr;yvjlJ|nISHJ(-B?;O3xV1gUe z>tQe&!Qdh=IAIzh^w{Zn0KN=lXW(QmMO4J_7(vGTJEXF>)GXz+jhe)#x;mv+Qy+u# zf)#V`)wbMj*Jj*t91#lbIPGY7+gdts9S(@>kK7C6n#_!=2{%Ot&@~@4pOARf~!4#0rY!tE%Fd}=>Q%xLC;H$2hrCkop( zsCS%uWfH}*=d(bywq!Jn#ei$FzV!yV`PSRNARG91^CqcT^4Kx+CBUiLrT_WvFkA!k zPf+itUmuvy;nBYV6qFbP8j8Tm8|Lpv9D0XRfQ-OGpbr;Ilc_+g6Nsp04v3}y;Xdy2lAM6~xcmKf=+3Y?fA8Z~R zY<7X?-n(ST7VHEL*2TZL(Loga6C7*Esqo z0P&C4$5HczIQrv57`uYLeUET@%wY5`6UWdtMHohcJZjS{WHI&0zO`GI>y{LL1lICmtv+;CrH1{)8U?Pb{ z%Ku}NlYd(_5j0lJ1?Z+aCmW5wpiU6WjBqsTM_|j`*aEg?>CR|Ixz3-N#Ue+ll0H@* zQ%=?SARRqB48>E*ReRsHenR&d?$6rZv(wl)lSVE!&T?wAV|`)ce#=P(M^?SnQhSAhSL#V-zV(#6_kw z4I&I?^J^TO{TRbmF-&3~qj{ugj;$u`EUs(Va$%U7%Y7*|jFXK_?oOI{TS%kca8BWU zgA|knn*l@)sx(`lD;#+(r!Zu6mf~2;cZ#aX-dJoXirlW5i&-RN?f5paOLs4r7N>qS zY?x(sihLHY(TOS-HB7@}y<~v%77%tq$O99DKvBQzb_$Yp$IK0i(saZt4J9|naJ0&%1V>4q%Jo^6R#DrPM z&#ieVcdwqE7~5=?>>CsW#UUaeZ%WO)Ps2fijszs`VSE8Kp}7L5EMw0>0m+bZg|4k+ zyJiX|)5kL*5#c!z3|O3|e9A1)L`$b8nF|7-n)i|*aw_0Kuo*$1)QUsu+XELf3Zxq< ztNxl4DVBKBISnkNme^?|6+;E$b%~ z=8onAC?f1b)usJkwjKd>|Jij*3@r%{COO1ioH32luDZUYj~x~uS#!|ai&@s?dSWiJ z@YuG*%uMbHV0u6iYHk5sYe&;~z~EWX4qL`WK!rwg53)fU#dgljsJFC zzHEOD^l3}Xzt{O!{7WA2NBj%^d19J&Mh_!M&GxCj>hhq=zvw2M*x{FGtvy2X<8#ER zX9&wvIb*dKE_#YpKZHN4B1##T&`MBp zPO%=LT$f9Fl#;K5{DHZkC;bY*+0yTg5v$eBGbc97TeD4<&zukE9%~y-u8yBo%%HIa zf90a$16orv>q_4THt+_-tm&sc*Yd0< MEu4-G@JX-zKOLueCIA2c diff --git a/docs/build/html/.doctrees/classes/spatialpy.solvers.doctree b/docs/build/html/.doctrees/classes/spatialpy.solvers.doctree index e0782b86bc444b4e4148646635afcfc74243ac68..4392ea2858dcaca4d3a44487be4c23b0f5f8b6ab 100644 GIT binary patch literal 226153 zcmeFa37nionLkc|+}uY5+kqw_%mk7NAZH+f009w5kV}w-(3$C^`(>tk=m!rnbqr+j~KYkxF%Jv{9~2-!R=i0E@S(W6fc%zpz;zX;terRlPF5 zvY@i?hUuZo;`aPjwKZ1O9<`5bPLx{J(%8h*aI-$Pv)pJFCrTqXmv)q=u@cnT_p0)( zNKB~cUDHGVTz)GRA zU*$2CeJTU(i`QP=gfXq%)|e{Q8k6JA^3>W3n8D4pSBkM;KD8F;Y_8=l*JfBU+-Smh zj=E&;$!(RTLMW1}m4oE(_L3_nw~g0FC&z$R;@vXiR?4H3fxr_5ftxEwAsZ@3!`Lgw z0KZqjzm@QB5dN)#aaB&B@vITWE31Ku`Fe%+l4ja#NmjS+YK<*PnIjvshcu*(>G&)! zwoQWe{ngg;trLxMvk9736oZyy_Ep)-QAP2j?W^VNs8G2$ANwxU*tZCTxL13AwKiJ5 zRkH+PBwj(Z7lKYVs-%WP?R_Uo)y8!Dcro&`iXJX$Bc5)r5{1`9l&vh-+?p<-?5_oJ zG4bu`Ji0tQoT~9!w(PYeI*q8|iK%s{`7p5Bj$(a##5jh}L-B7?!bh{12OPalnn5l; zE@(o>;E>wut!9fuWQ@gXErO<1)9sTxb2Ur3i_5|wK|%HfZ#1Q}qsFSu*80u$T6uMmoEJFQGXHLtYSmWtw(|N5OJmLQDzYK$<3Q@8 zRIAln;GPX{-ah&IvsbjhC$B3G5|aiutS+7{Y1#^m7%8tSsv^a~4I99h&;+ooJ)de! zE4u?}6)MlvjY%J%XiQ^5dtOnRIb4~oJWp@M^l0sQyQWLFTYC=nJh`pxH@U^Pj*qRQ z@xY{q-lp8xStghG45)jD=x^4V1^9K~<$gktFumj4B&YPs{Pv0njg`EPDr-vP&3hOt^tM;P3`@WMA8fTUDgFvd0pl8=!f2zGQ9EznzLYRi)n23zz(!*Kn@~v-z4}$ zA%Yhn!GhXF*r}h;54Z?Dga`#(0y1co8)%QZD2DS{DI1e?1gcrR$pg$LRTbhj`i`wO z+ZL-Dl405%lU3jJv#LF>mbJ8R08hR~+ITQA0=utIlpCd1y`d95Z@ugquFNif5$dv@ z?eb^b<>K~&YK_pIruzG$FO*%0A7*cV3iJjX++La-Yi-?G8k;PeJ+}{SPEJhJ8?CL) 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 diff --git a/docs/build/html/.doctrees/classes/spatialpy.stochss.doctree b/docs/build/html/.doctrees/classes/spatialpy.stochss.doctree index f901dc9777572e91da589d44668f9bddfdaa5350..a99dde576e25db87d325313a86b2960f0f5b4e02 100644 GIT binary patch literal 11550 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 MY3EOYR??{d7j#=>QUCw| literal 15653 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 diff --git a/docs/build/html/.doctrees/environment.pickle b/docs/build/html/.doctrees/environment.pickle index e5b1ff22bd9d95201bd4cc137fe72bc3aba6c3c4..1db822464ec7d9eb5810f0e26fd74166510407ae 100644 GIT binary patch delta 79906 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 delta 66189 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 B5Sjo0 delta 4518 zcmb7IZERCj80M~92ZgeYK<8N7m9D_ntzR2o8((G)LCT7V3()}DwU?biC#AWHyQagf>Uqc6f-4~h-4p2T19`b}^p@b(A z4YNDkd?G0#>*&AC*G%^U&@@lg1O|i1LF~-gB%&s`oN%?m<=!NwkQcQf3-TeWUk}Ts zkY(Uu`{-lc;W9&)ss$g_5BYkEsS@-&yCua(M6{M@^@Fyq(U&T(msMr85b$eoli^ff zuryU6RaL5wEeXX$1qHt4u;SMz`@46-$dC$TTso>?`Zj4grNv0;xI1|#Q#GvB0zeYR z4RekZ1yUXj4zeOTh94Qdl@ck#*f+J?uLMLWj}OHoVo(W;`Ys13%jyY2#V3LRSY~-P z8e+qup8;Qo@x`ed^IU7Gdc%3X6xY5(BZ320*E^=tWFTQ12E-@vy{d)Xs+aoyND`&` zG=64B@;tplJw@ka_qJAl-Z_T3(gG>R;iSK&y#CLpBf(o{v{=08ww%N@O7yb%g3r#d zSJ1r2KhLnw)MUN^Cew_U7ULSzij@pAVFC>Qrww)S`XP=!)+CIHCd`QG*Rp9wqD(1i zDfti9{bV)4a1lhiW;%5v!fFW0>Ut$898pE$(ya819(=>P6j#?)PZ3ciRI?N-++VMN zJyh>#&W#N>m#86$B!x#&Yr-eY-{52B9}Bshu$*4jS=8lCq9A3uP~F~bdtnGVU6|!< z-RxjYg#22Ek66~#JOpQ0Z4{IdJ}`0lD4a$Grp|c3J_XjN6_D zCYB2Z+w4mVA&A+9Mf-{($cDnOfsOFCo>-V2AVF9`F)gn%6v4ELVp?7|xmTN0pwh4% zbh!qpu57QOqc&wUFV}D$s!oR`om&&7b%R=^$g*_}ZcSu&1P9{-Y(mqRv||Noy%P3U z(%11Hj^3UN;2|<|=gCb|rsLK-_ocdm?h*C0Tug7b45D1NOG_pT#9WEsn0%_{*?5dkMxy;LISR6icx`KK zv7KX2>)Msg;2|iUOK#7UOb&GgO-z$(nMq+xITlF$4|A?AW)(i;IuH#=ba0(yt#p2C z1mg?IaL##8s7l5{NuFh0+xcKT&hk(!V~>E`e4@q7jdcW)SD_Q1a8H*L4xZ)|C@ZBHD`3^W-iGnVX42wb~NEdl$bJ==Na`JEi9ongMuYx1G$gO~x z!X(fYjtvGQQITUl#^!bx-s`JNd%1UsIw^#12*SZ})RMwhj_hRqf$`^a?+_DaZZEk} zS_w%IUv59HYqKxRGIf#6fYStb2p&}a)KNTU6!UHN^i>$jW0Ly_MoZ=Kasdq`@_4fh zTiRXeFNn2?un*C1A<{Xuq4XWdjmcD{ z6Tv|@=Mz@Y_oW5~*rX^hPU>bF>}cvq=?t32bZdT{+?bxsuY0jbV`|MVDr8vxv`0RG zI=XSeUkuYbx@OUQhVkKj9gX--N2b<{lF4|Y)8k3TVgm_xgiUU7$M}AHxN{-?tiy?a z=sb=Si(UAu#kiXNm9;;U=P&h*yXhB4Qg6$BFoW zh*?CBm596K^$rn6@@gO=M8um!cyu6IL8OF9@SU1wlS6Shc)(u;9C0Op9tO~v47!n_ zJ_M-!47Hu1b~DswhT02ITN!F6Lu~}8{y+-NAqpw1DFAC5!1@$jLsuy#^jHGa1U~ji zh}IByDWW)eqKHKDL=ll~TS9c3JW)jDDk8FhQAAvHbl1{0X1XEFhGIPYUlNOo0g_Ou GKKK8Rz`uF` diff --git a/docs/build/html/_modules/index.html b/docs/build/html/_modules/index.html index d1f4d7cf..45612b6e 100644 --- a/docs/build/html/_modules/index.html +++ b/docs/build/html/_modules/index.html @@ -5,7 +5,7 @@ - Overview: module code — SpatialPy 1.0 documentation + Overview: module code — SpatialPy 1.0.2 documentation @@ -105,6 +105,7 @@

All modules for which code is available

  • spatialpy.core.result
  • spatialpy.core.spatialpyerror
  • spatialpy.core.species
  • +
  • spatialpy.core.visualization
  • spatialpy.core.vtkreader
  • spatialpy.solvers.build_expression
  • spatialpy.solvers.solver
  • @@ -125,10 +126,10 @@

    All modules for which code is available

    diff --git a/docs/build/html/_modules/spatialpy/core/boundarycondition.html b/docs/build/html/_modules/spatialpy/core/boundarycondition.html index 4a7889e4..71185357 100644 --- a/docs/build/html/_modules/spatialpy/core/boundarycondition.html +++ b/docs/build/html/_modules/spatialpy/core/boundarycondition.html @@ -5,7 +5,7 @@ - spatialpy.core.boundarycondition — SpatialPy 1.0 documentation + spatialpy.core.boundarycondition — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.boundarycondition

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
     
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
     
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
     
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     
     from spatialpy.core.spatialpyerror import BoundaryConditionError
     
    @@ -274,10 +272,10 @@ 

    Source code for spatialpy.core.boundarycondition

    diff --git a/docs/build/html/_modules/spatialpy/core/cleanup.html b/docs/build/html/_modules/spatialpy/core/cleanup.html index 81d264d1..433d3d38 100644 --- a/docs/build/html/_modules/spatialpy/core/cleanup.html +++ b/docs/build/html/_modules/spatialpy/core/cleanup.html @@ -5,7 +5,7 @@ - spatialpy.core.cleanup — SpatialPy 1.0 documentation + spatialpy.core.cleanup — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.cleanup

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
     
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
     
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
     
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     
     import os
     import shutil
    @@ -196,10 +194,10 @@ 

    Source code for spatialpy.core.cleanup

         
    diff --git a/docs/build/html/_modules/spatialpy/core/datafunction.html b/docs/build/html/_modules/spatialpy/core/datafunction.html index 3e2840cb..6d95180b 100644 --- a/docs/build/html/_modules/spatialpy/core/datafunction.html +++ b/docs/build/html/_modules/spatialpy/core/datafunction.html @@ -5,7 +5,7 @@ - spatialpy.core.datafunction — SpatialPy 1.0 documentation + spatialpy.core.datafunction — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.datafunction

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    -
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    -
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    -
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
    +
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
    +
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     from spatialpy.core.spatialpyerror import DataFunctionError
     
     
    [docs]class DataFunction(): @@ -156,10 +154,10 @@

    Source code for spatialpy.core.datafunction

         
    diff --git a/docs/build/html/_modules/spatialpy/core/domain.html b/docs/build/html/_modules/spatialpy/core/domain.html index 7b608992..0079840b 100644 --- a/docs/build/html/_modules/spatialpy/core/domain.html +++ b/docs/build/html/_modules/spatialpy/core/domain.html @@ -5,7 +5,7 @@ - spatialpy.core.domain — SpatialPy 1.0 documentation + spatialpy.core.domain — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.domain

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
     
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
     
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
     
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     
     import json
     import string
    @@ -120,6 +118,7 @@ 

    Source code for spatialpy.core.domain

     from plotly.offline import init_notebook_mode, iplot
     from scipy.spatial import KDTree
     
    +from spatialpy.core.visualization import Visualization
     from spatialpy.core.spatialpyerror import DomainError
     
     
    [docs]class Domain(): @@ -297,8 +296,8 @@

    Source code for spatialpy.core.domain

             """
             Add a type definition to the domain. By default, all regions are set to type 0.
     
    -        :param geometry_ivar: an instance of a :py:class:`spatialpy.core.geometry.Geometry` subclass.  The 'inside()' method
    -                   of this object will be used to assign properties to points.
    +        :param geometry_ivar: an instance of a :py:class:`spatialpy.core.geometry.Geometry` subclass. \
    +                   The 'inside()' method of this object will be used to assign properties to points.
             :type geometry_ivar: spatialpy.core.geometry.Geometry
     
             :param type_id: The identifier for this type.
    @@ -363,8 +362,8 @@ 

    Source code for spatialpy.core.domain

             """
             Fill a geometric shape with particles.
     
    -        :param geometry_ivar: an instance of a :py:class:`spatialpy.core.geometry.Geometry` subclass.  The 'inside()' method
    -                   of this object will be used to create add the particles.
    +        :param geometry_ivar: an instance of a :py:class:`spatialpy.core.geometry.Geometry` subclass. \
    +                   The 'inside()' method of this object will be used to create add the particles.
             :type geometry_ivar: spatialpy.core.geometry.Geometry
     
             :param deltax: Distance between particles on the x-axis.
    @@ -628,7 +627,7 @@ 

    Source code for spatialpy.core.domain

                 self.vol[v3] += t_vol / 4
                 self.vol[v4] += t_vol / 4
    -
    [docs] def plot_types(self, width=None, height=None, colormap=None, size=5, title=None, +
    [docs] def plot_types(self, width=None, height=None, colormap=None, size=None, title=None, included_types_list=None, use_matplotlib=False, return_plotly_figure=False): ''' Plots the domain using plotly. Can only be viewed in a Jupyter Notebook. @@ -667,13 +666,10 @@

    Source code for spatialpy.core.domain

             '''
             from spatialpy.core.result import _plotly_iterate # pylint: disable=import-outside-toplevel
     
    -        if use_matplotlib:
    -            width = 6.4 if width in (None, "auto") else width
    -            height = 4.8 if height in (None, "auto") else height
    -        else:
    +        if not use_matplotlib:
                 if width in (None, "auto"):
                     width = None if width == "auto" else 500
    -            if height is None:
    +            if height in (None, "auto"):
                     height = None if height == "auto" else 500
     
             if not numpy.count_nonzero(self.vertices[:, 1]):
    @@ -686,32 +682,67 @@ 

    Source code for spatialpy.core.domain

             self._get_type_name_mapping()
     
             types = {}
    +        # Normalize volumes to [0, 1]
    +        vols = (self.vol - numpy.min(self.vol))/numpy.ptp(self.vol)
             for i, type_id in enumerate(self.type_id):
                 name = type_id[5:]
                 if included_types_list is None or name in included_types_list:
                     if name in types:
                         types[name]['points'].append(self.vertices[i])
                         types[name]['data'].append(self.typeNdxMapping[type_id])
    +                    types[name]['size_scale'] = numpy.append(types[name]['size_scale'], vols[i])
                     else:
    -                    types[name] = {"points":[self.vertices[i]], "data":[self.typeNdxMapping[type_id]]}
    +                    types[name] = {
    +                        "points": [self.vertices[i]],
    +                        "data": [self.typeNdxMapping[type_id]],
    +                        "size_scale": numpy.array([vols[i]])
    +                    }
     
             if use_matplotlib:
    -            import matplotlib.pyplot as plt # pylint: disable=import-outside-toplevel
    -
    -            fig, ax = plt.subplots(figsize=(width, height))
    -            for name, data in types.items():
    -                x_coords = list(map(lambda point: point[0], data["points"]))
    -                y_coords = list(map(lambda point: point[1], data["points"]))
    -
    -                ax.scatter(x_coords, y_coords, label=name)
    -                ax.grid(linestyle='--', linewidth=1)
    -                ax.legend(loc='upper right', fontsize=12)
    -                if title is not None:
    -                    ax.set_title(title)
    -
    -            plt.axis('scaled')
    +            if not isinstance(use_matplotlib, dict):
    +                use_matplotlib = {}
    +            use_matplotlib['limits'] = (
    +                (self.xlim[0] - 0.25, self.xlim[1] + 0.25), (self.ylim[0] - 0.25, self.ylim[1] + 0.25)
    +            )
    +
    +            # Support for width, height, and title args
    +            if width not in (None, "auto") and height not in (None, "auto"):
    +                # TODO: Deprecation warning for width and height
    +                plot_args = {"figsize": (width, height)}
    +
    +                if "plot_args" in use_matplotlib:
    +                    for name, val in use_matplotlib['plot_args'].items():
    +                        plot_args[name] = val
    +                use_matplotlib['plot_args'] = plot_args
    +
    +            base_group_args = {}
    +            if colormap is not None:
    +                base_group_args['cmap'] = colormap
    +                base_group_args['vmin'] = 1 # minimum number of defined types
    +                base_group_args['vmax'] = len(self.typeNdxMapping) # number of defined types
    +            if size is not None:
    +                base_group_args['s'] = size
    +
    +            if "scatter_args" not in use_matplotlib:
    +                use_matplotlib['scatter_args'] = {}
    +            for type_id in self.typeNdxMapping.keys():
    +                type_id = type_id[5:]
    +                group_args = base_group_args.copy()
    +                if type_id in use_matplotlib['scatter_args']:
    +                    for name, val in use_matplotlib['scatter_args'][type_id].items():
    +                        group_args[name] = val
    +                use_matplotlib['scatter_args'][type_id] = group_args
    +
    +            if title is not None:
    +                use_matplotlib['title'] = title
    +
    +            vis_obj = Visualization(data=types)
    +            vis_obj.plot_scatter(**use_matplotlib)
                 return
     
    +        if size is None:
    +            size = 5
    +
             is_2d = self.dimensions == 2
     
             trace_list = _plotly_iterate(types, size=size, property_name="type",
    @@ -953,7 +984,7 @@ 

    Source code for spatialpy.core.domain

             :type fixed: bool
     
             :param \**kwargs: Additional keyword arguments passed to :py:class:`Domain`.
    -        
    +
             :returns: Uniform 3D SpatialPy Domain object.
             :rtype: spatialpy.core.domain.Domain
             """
    @@ -1047,10 +1078,10 @@ 

    Source code for spatialpy.core.domain

         
    diff --git a/docs/build/html/_modules/spatialpy/core/geometry.html b/docs/build/html/_modules/spatialpy/core/geometry.html index 8ca065ff..d016004a 100644 --- a/docs/build/html/_modules/spatialpy/core/geometry.html +++ b/docs/build/html/_modules/spatialpy/core/geometry.html @@ -5,7 +5,7 @@ - spatialpy.core.geometry — SpatialPy 1.0 documentation + spatialpy.core.geometry — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.geometry

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    -
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    -
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    -
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
    +
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
    +
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     from spatialpy.core.spatialpyerror import GeometryError
     
     
    [docs]class Geometry: @@ -198,10 +196,10 @@

    Source code for spatialpy.core.geometry

         
    diff --git a/docs/build/html/_modules/spatialpy/core/initialcondition.html b/docs/build/html/_modules/spatialpy/core/initialcondition.html index 9dc0c791..2c778f33 100644 --- a/docs/build/html/_modules/spatialpy/core/initialcondition.html +++ b/docs/build/html/_modules/spatialpy/core/initialcondition.html @@ -5,7 +5,7 @@ - spatialpy.core.initialcondition — SpatialPy 1.0 documentation + spatialpy.core.initialcondition — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.initialcondition

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    -
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    -
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    -
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
    +
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
    +
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     import numpy
     
     from spatialpy.core.spatialpyerror import InitialConditionError
    @@ -156,6 +154,10 @@ 

    Source code for spatialpy.core.initialcondition

    < :param model: Model contianing the target species. :type model: spatialpy.core.model.Model """ + if isinstance(self.species, str): + if self.species not in model.listOfSpecies: + raise InitialConditionError(f"Species {self.species} does not exist in the model.") + self.species = model.listOfSpecies[self.species] spec_name = self.species.name spec_ndx = None for index, spec_name in enumerate(model.listOfSpecies.keys()): @@ -199,6 +201,10 @@

    Source code for spatialpy.core.initialcondition

    < :param model: Model contianing the target species. :type model: spatialpy.core.model.Model """ + if isinstance(self.species, str): + if self.species not in model.listOfSpecies: + raise InitialConditionError(f"Species {self.species} does not exist in the model.") + self.species = model.listOfSpecies[self.species] spec_name = self.species.name spec_ndx = None for index, spec_name in enumerate(model.listOfSpecies.keys()): @@ -251,6 +257,10 @@

    Source code for spatialpy.core.initialcondition

    < :param model: Model contianing the target species. :type model: spatialpy.core.model.Model """ + if isinstance(self.species, str): + if self.species not in model.listOfSpecies: + raise InitialConditionError(f"Species {self.species} does not exist in the model.") + self.species = model.listOfSpecies[self.species] spec_name = self.species.name spec_ndx = None for index, spec_name in enumerate(model.listOfSpecies.keys()): @@ -294,10 +304,10 @@

    Source code for spatialpy.core.initialcondition

    <
    diff --git a/docs/build/html/_modules/spatialpy/core/model.html b/docs/build/html/_modules/spatialpy/core/model.html index 6e155948..09d9db5a 100644 --- a/docs/build/html/_modules/spatialpy/core/model.html +++ b/docs/build/html/_modules/spatialpy/core/model.html @@ -5,7 +5,7 @@ - spatialpy.core.model — SpatialPy 1.0 documentation + spatialpy.core.model — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.model

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
     
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
     
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
     
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     
     #This module defines a model that simulates a discrete, stoachastic, mixed biochemical reaction network in python.
     
    @@ -411,6 +409,15 @@ 

    Source code for spatialpy.core.model

             self.__update_diffusion_restrictions()
             self.__apply_initial_conditions()
             self.__resolve_parameters()
    +
    +        sanitized_params = self.sanitized_parameter_names()
    +        for species in self.listOfSpecies.values():
    +            diff_coeff = species.diffusion_coefficient
    +            if isinstance(diff_coeff, str):
    +                if diff_coeff not in sanitized_params:
    +                    raise ModelError(f"Parameterm {diff_coeff} doesn't exist.")
    +                species.diffusion_coefficient = sanitized_params[diff_coeff]
    +
             self.__get_expression_utility()
             stoich_matrix = self.__create_stoichiometric_matrix()
             dep_graph = self.__create_dependency_graph()
    @@ -853,10 +860,10 @@ 

    Source code for spatialpy.core.model

         
    diff --git a/docs/build/html/_modules/spatialpy/core/parameter.html b/docs/build/html/_modules/spatialpy/core/parameter.html index a1bd41b0..1cbb243e 100644 --- a/docs/build/html/_modules/spatialpy/core/parameter.html +++ b/docs/build/html/_modules/spatialpy/core/parameter.html @@ -5,7 +5,7 @@ - spatialpy.core.parameter — SpatialPy 1.0 documentation + spatialpy.core.parameter — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.parameter

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    -
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    -
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    -
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
    +
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
    +
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     from spatialpy.core.spatialpyerror import ParameterError
     
     
    [docs]class Parameter(): @@ -178,10 +176,10 @@

    Source code for spatialpy.core.parameter

         
    diff --git a/docs/build/html/_modules/spatialpy/core/reaction.html b/docs/build/html/_modules/spatialpy/core/reaction.html index 3c4d5a34..3c7d83bf 100644 --- a/docs/build/html/_modules/spatialpy/core/reaction.html +++ b/docs/build/html/_modules/spatialpy/core/reaction.html @@ -5,7 +5,7 @@ - spatialpy.core.reaction — SpatialPy 1.0 documentation + spatialpy.core.reaction — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.reaction

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    -
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    -
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    -
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
    +
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
    +
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     import uuid
     
     from spatialpy.core.species import Species
    @@ -383,10 +381,10 @@ 

    Source code for spatialpy.core.reaction

         
    diff --git a/docs/build/html/_modules/spatialpy/core/result.html b/docs/build/html/_modules/spatialpy/core/result.html index aa473c0b..e1d3ddeb 100644 --- a/docs/build/html/_modules/spatialpy/core/result.html +++ b/docs/build/html/_modules/spatialpy/core/result.html @@ -5,7 +5,7 @@ - spatialpy.core.result — SpatialPy 1.0 documentation + spatialpy.core.result — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.result

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
     
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
     
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
     
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     
     import csv
     import filecmp
    @@ -122,6 +120,7 @@ 

    Source code for spatialpy.core.result

     from plotly.offline import init_notebook_mode, iplot
     
     # from spatialpy.core.model import *
    +from spatialpy.core.visualization import Visualization
     from spatialpy.core.vtkreader import VTKReader
     from spatialpy.core.spatialpyerror import ResultError
     
    @@ -314,6 +313,9 @@ 

    Source code for spatialpy.core.result

         def __map_property_to_type(self, property_name, data, included_types_list, points, p_ndx):
             types = {}
             if property_name == 'type':
    +            # Normalize volumes to [0, 1]
    +            vol = data['mass'] / data['rho']
    +            vols = (vol - numpy.min(vol))/numpy.ptp(vol)
                 for i, val in enumerate(data['type']):
                     name = self.model.domain.typeNameMapping[val][5:]
     
    @@ -321,9 +323,15 @@ 

    Source code for spatialpy.core.result

                         if name in types:
                             types[name]['points'].append(points[i])
                             types[name]['data'].append(data[property_name][i])
    +                        types[name]['size_scale'] = numpy.append(types[name]['size_scale'], vols[i])
                         else:
    -                        types[name] = {"points":[points[i]], "data":[data[property_name][i]]}
    -        elif property_name == 'v':
    +                        types[name] = {
    +                            "points": [points[i]],
    +                            "data": [data[property_name][i]],
    +                            "size_scale": numpy.array([vols[i]])
    +                        }
    +            return types
    +        if property_name == 'v':
                 types[property_name] = {
                     "points": points,
                     "data" : [data[property_name][i][p_ndx] for i in range(0,len(data[property_name]))]
    @@ -419,7 +427,8 @@ 

    Source code for spatialpy.core.result

                 If set to True, the concentration (=copy_number/volume) is returned.  Defaults to False
             :type concentration: bool
     
    -        :param deterministic: Whether or not the species is deterministic (True) or stochastic (False).  Defaults to False
    +        :param deterministic: Whether or not the species is deterministic (True) or stochastic (False). \
    +                Defaults to False
             :type deterministic: bool
     
             :param debug: Whether or not debug information should be printed. Defaults to False
    @@ -707,7 +716,6 @@ 

    Source code for spatialpy.core.result

                 t_index_arr = [t_index_arr]
                 num_timepoints = 1
     
    -        
             if property_name == "v":
                 ret = numpy.zeros((num_timepoints, num_voxel, 3))
             else:
    @@ -723,7 +731,7 @@ 

    Source code for spatialpy.core.result

             return ret
    [docs] def plot_property(self, property_name, t_ndx=None, t_val=None, p_ndx=0, width=None, height=None, - colormap=None, size=5, title=None, animated=False, t_ndx_list=None, speed=1, + colormap=None, size=None, title=None, animated=False, t_ndx_list=None, speed=1, f_duration=500, t_duration=300, included_types_list=None, return_plotly_figure=False, use_matplotlib=False, debug=False): """ @@ -836,17 +844,47 @@

    Source code for spatialpy.core.result

             if use_matplotlib:
                 import matplotlib.pyplot as plt # pylint: disable=import-outside-toplevel
     
    +            if not isinstance(use_matplotlib, dict):
    +                use_matplotlib = {}
    +            use_matplotlib['limits'] = (
    +                (self.model.domain.xlim[0] - 0.25, self.model.domain.xlim[1] + 0.25),
    +                (self.model.domain.ylim[0] - 0.25, self.model.domain.ylim[1] + 0.25)
    +            )
    +
    +            # Support for width, height, and title args
    +            if width not in (None, "auto") and height not in (None, "auto"):
    +                # TODO: Deprecation warning for width and height
    +                plot_args = {"figsize": (width, height)}
    +
    +                if "plot_args" in use_matplotlib:
    +                    for name, val in use_matplotlib['plot_args'].items():
    +                        plot_args[name] = val
    +                use_matplotlib['plot_args'] = plot_args
    +
    +            base_group_args = {}
    +            if colormap is not None:
    +                base_group_args['cmap'] = colormap
    +                base_group_args['vmin'] = 1 # minimum number of defined types
    +                base_group_args['vmax'] = len(self.model.domain.typeNdxMapping) # number of defined types
    +            if size is not None:
    +                base_group_args['s'] = size
    +
    +            if "scatter_args" not in use_matplotlib:
    +                use_matplotlib['scatter_args'] = {}
    +            for type_id in self.model.domain.typeNdxMapping.keys():
    +                type_id = type_id[5:]
    +                group_args = base_group_args.copy()
    +                if type_id in use_matplotlib['scatter_args']:
    +                    for name, val in use_matplotlib['scatter_args'][type_id].items():
    +                        group_args[name] = val
    +                use_matplotlib['scatter_args'][type_id] = group_args
    +
    +            if title is not None:
    +                use_matplotlib['title'] = title
    +
                 if property_name == "type":
    -                fig, ax = plt.subplots(figsize=(width, height))
    -                for name, data in types.items():
    -                    x_coords = list(map(lambda point: point[0], data["points"]))
    -                    y_coords = list(map(lambda point: point[1], data["points"]))
    -
    -                    ax.scatter(x_coords, y_coords, label=name)
    -                    ax.grid(linestyle='--', linewidth=1)
    -                    ax.legend(loc='upper right', fontsize=12)
    -                    if title is not None:
    -                        ax.set_title(title)
    +                vis_obj = Visualization(data=types)
    +                vis_obj.plot_scatter(**use_matplotlib)
                 else:
                     if property_name == 'v':
                         p_data = data[property_name]
    @@ -862,9 +900,12 @@ 

    Source code for spatialpy.core.result

                     if title is not None:
                         plt.title(title)
                     plt.grid(linestyle='--', linewidth=1)
    -            plt.axis('scaled')
    +                plt.axis('scaled')
                 return
     
    +        if size is None:
    +            size = 5
    +
             is_2d = self.model.domain.dimensions == 2
             trace_list = _plotly_iterate(types, size=size, property_name=property_name,
                                          colormap=colormap, is_2d=is_2d)
    @@ -993,10 +1034,10 @@ 

    Source code for spatialpy.core.result

         
    diff --git a/docs/build/html/_modules/spatialpy/core/spatialpyerror.html b/docs/build/html/_modules/spatialpy/core/spatialpyerror.html index 2cf15b1b..c965256e 100644 --- a/docs/build/html/_modules/spatialpy/core/spatialpyerror.html +++ b/docs/build/html/_modules/spatialpy/core/spatialpyerror.html @@ -5,7 +5,7 @@ - spatialpy.core.spatialpyerror — SpatialPy 1.0 documentation + spatialpy.core.spatialpyerror — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.spatialpyerror

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
     
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
     
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
     
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     
     # Base Module Expections
     
    [docs]class ModelError(Exception): @@ -120,6 +118,11 @@

    Source code for spatialpy.core.spatialpyerror

    Class for exceptions in the results module. """
    +
    [docs]class VisualizationError(Exception): + """ + Class for exceptions in the visualization module. + """
    +
    [docs]class VTKReaderError(Exception): """ Bass class for exceptions in the vtkreader module. @@ -174,6 +177,9 @@

    Source code for spatialpy.core.spatialpyerror

    # Result Exceptions +# Visualization Exceptions + + # VTKReader Exceptions
    [docs]class VTKReaderIOError(VTKReaderError): """ @@ -204,10 +210,10 @@

    Source code for spatialpy.core.spatialpyerror

    diff --git a/docs/build/html/_modules/spatialpy/core/species.html b/docs/build/html/_modules/spatialpy/core/species.html index 8429f830..32643f60 100644 --- a/docs/build/html/_modules/spatialpy/core/species.html +++ b/docs/build/html/_modules/spatialpy/core/species.html @@ -5,7 +5,7 @@ - spatialpy.core.species — SpatialPy 1.0 documentation + spatialpy.core.species — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.species

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    -
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    -
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    -
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
    +
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
    +
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     from spatialpy.core.parameter import Parameter
     from spatialpy.core.spatialpyerror import SpeciesError
     
    @@ -133,9 +131,9 @@ 

    Source code for spatialpy.core.species

     
             if  diffusion_coefficient is None:
                 raise SpeciesError("Species must have a diffusion_coefficient.")
    -        if not (isinstance(diffusion_coefficient, (Parameter, float, int)) or \
    +        if not (isinstance(diffusion_coefficient, (Parameter, str, float, int)) or \
                         type(diffusion_coefficient).__name__ == 'Parameter'):
    -            raise SpeciesError("Diffusion coefficient must be a spatialpy.Parameter, float, or int.")
    +            raise SpeciesError("Diffusion coefficient must be a spatialpy.Parameter, str, float, or int.")
             if isinstance(diffusion_coefficient, (float, int)) and diffusion_coefficient < 0:
                 raise SpeciesError("Diffusion coefficient must be non-negative.")
     
    @@ -166,9 +164,9 @@ 

    Source code for spatialpy.core.species

     
             :raises SpeciesError: If diffusion_coefficient is negative or not a valid type.
             """
    -        if not (isinstance(diffusion_coefficient, (Parameter, float, int)) or \
    +        if not (isinstance(diffusion_coefficient, (Parameter, str, float, int)) or \
                                 type(diffusion_coefficient).__name__ == 'Parameter'):
    -            raise SpeciesError("Diffusion coefficient must be a spatialpy.Parameter, float, or int.")
    +            raise SpeciesError("Diffusion coefficient must be a spatialpy.Parameter, str, float, or int.")
             if diffusion_coefficient < 0:
                 raise SpeciesError("Diffusion coefficient must be non-negative.")
     
    @@ -189,10 +187,10 @@ 

    Source code for spatialpy.core.species

         
    diff --git a/docs/build/html/_modules/spatialpy/core/visualization.html b/docs/build/html/_modules/spatialpy/core/visualization.html new file mode 100644 index 00000000..b16466f4 --- /dev/null +++ b/docs/build/html/_modules/spatialpy/core/visualization.html @@ -0,0 +1,310 @@ + + + + + + + + spatialpy.core.visualization — SpatialPy 1.0.2 documentation + + + + + + + + + + + + + + + + + + +
    + + +
    +
    + + +
    + +

    Source code for spatialpy.core.visualization

    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
    +
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
    +
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
    +
    +import math
    +import numpy
    +
    +try:
    +    import matplotlib.pyplot as plt
    +    mpl_import_err = None
    +except ImportError as err:
    +    mpl_import_err = err
    +
    +from spatialpy.core.spatialpyerror import VisualizationError
    +
    +common_rgb_values=['#1f77b4','#ff7f0e','#2ca02c','#d62728','#9467bd','#8c564b','#e377c2','#7f7f7f',
    +                   '#bcbd22','#17becf','#ff0000','#00ff00','#0000ff','#ffff00','#00ffff','#ff00ff',
    +                   '#800000','#808000','#008000','#800080','#008080','#000080','#ff9999','#ffcc99',
    +                   '#ccff99','#cc99ff','#ffccff','#62666a','#8896bb','#77a096','#9d5a6c','#9d5a6c',
    +                   '#eabc75','#ff9600','#885300','#9172ad','#a1b9c4','#18749b','#dadecf','#c5b8a8',
    +                   '#000117','#13a8fe','#cf0060','#04354b','#0297a0','#037665','#eed284','#442244',
    +                   '#ffddee','#702afb']
    +
    +def _get_coords(points):
    +    labels = ["X-Axis", "Y-Axis", "Z-Axis"]
    +    coords = []
    +    axes = []
    +    i = 0
    +    while len(coords) < 2 and i < 3:
    +        vertex = list(map(lambda point: point[i], points))
    +        if numpy.count_nonzero(numpy.diff(vertex)) > 0:
    +            coords.append(vertex)
    +            axes.append(labels[i])
    +        i += 1
    +    if len(coords) < 2:
    +        if labels[0] not in axes:
    +            coords.insert(0, list(map(lambda point: point[0], points)))
    +            axes.insert(0, labels[0])
    +        elif labels[1] not in axes:
    +            coords.append(list(map(lambda point: point[1], points)))
    +            axes.append(labels[1])
    +    return coords, axes
    +
    +def _validate_mplplot_args(args):
    +    if args is None:
    +        return {"figsize": (Visualization.MPL_WIDTH, Visualization.MPL_HEIGHT)}
    +
    +    supported_splts_args = ["sharex", "sharey", "squeeze"]
    +    supported_fig_args = ["figsize", "dpi", "facecolor", "edgecolor", "frameon"]
    +
    +    kwargs = {}
    +    for name, val in args.items():
    +        if name in supported_splts_args or name in supported_fig_args:
    +            kwargs[name] = val
    +        else:
    +            from spatialpy.core import log # pylint: disable=import-outside-toplevel
    +            logmsg = f"Un-supported key word argument: {name} is not currently supported"
    +            log.warning(logmsg)
    +    return kwargs
    +
    +
    [docs]class Visualization(): + + MPL_WIDTH = 6.4 + MPL_HEIGHT = 4.8 + MPL_SIZE = 40 + + def __init__(self, data): + self.data = data + + def __get_grid_shape(self, multiple_graphs): + if isinstance(multiple_graphs, tuple): + num_subplots = multiple_graphs[0] * multiple_graphs[1] + if num_subplots < len(self.data.keys()): + errmsg = f"The shape {multiple_graphs} of the graphs is to small for the given data" + raise VisualizationError(errmsg) + nrows = multiple_graphs[0] + ncols = multiple_graphs[1] + else: + nrows = math.ceil(len(self.data.keys()) / 2) + ncols = 2 + return nrows, ncols + + def __validate_mplscatter_args(self, args, name): + if args is None: + return {"s": Visualization.MPL_SIZE} + + supported_args = ["s", "cmap", "color", "marker", "vmin", "vmax"] + + group_args = args[name] + if "cmap" in group_args and "color" in group_args: + errmsg = f"scatter args for {name}: 'cmap' and 'color' cannot both be set." + raise VisualizationError(errmsg) + + kwargs = {} + for arg_name, val in group_args.items(): + if arg_name in supported_args: + kwargs[arg_name] = val + else: + from spatialpy.core import log # pylint: disable=import-outside-toplevel + logmsg = f"Un-supported key word argument: {arg_name} is not currently supported" + log.warning(logmsg) + if "s" not in kwargs: + if "size_scale" in self.data[name]: + mpl_smin = 18 + mpl_smax = 180 + kwargs['s'] = (mpl_smax - mpl_smin) * self.data[name]['size_scale'] + mpl_smin + else: + kwargs['s'] = Visualization.MPL_SIZE + return kwargs + +
    [docs] def plot_scatter(self, plot_args=None, scatter_args=None, multiple_graphs=False, title=None, limits=None): + """ + Visualize data using maplotlib scatter plots. + + :param plot_args: additional keyword arguments passed to :py:class:`matplotlib.pyplot.subplots` + :type plot_args: dict + + :param scatter_args: dict of additional keyword arguments passed to \ + :py:class:`matplotlib.pyplot.scatter` for each group. + :type scatter_args: dist + + :param multiple_graphs: if each data entry should be ploted separately or on the same plot. \ + If ploted separately a shape may be provided. + :type multiple_graphs: bool | tuple(nrows, ncols) + """ + if mpl_import_err is not None: + raise VisualizationError("Missing MatPlotLib dependency.") from mpl_import_err + + plot_args = _validate_mplplot_args(plot_args) + if multiple_graphs: + plot_args['nrows'], plot_args['ncols'] = self.__get_grid_shape(multiple_graphs) + + fig, axs = plt.subplots(**plot_args) + if multiple_graphs: + axs = axs.flatten() + if len(self.data.keys())%plot_args['ncols'] != 0: + fig.delaxes(axs[-1]) + axs = numpy.delete(axs, -1) + data_keys = list(self.data.keys()) + for index, ax in enumerate(axs): + name = data_keys[index] + coords, axes_labels = _get_coords(self.data[name]["points"]) + + group_args = self.__validate_mplscatter_args(scatter_args, name) + if "cmap" in group_args: + group_args['c'] = self.data[name]["data"] + + ax.scatter(*coords, label=name, **group_args) + ax.set_xlabel(axes_labels[0]) + ax.set_xlim(limits[0]) + ax.set_ylabel(axes_labels[1]) + ax.set_ylim(limits[1]) + ax.grid(linestyle='--', linewidth=1) + ax.legend(loc='upper right', fontsize=12) + if title is not None: + ax.set_title(title) + else: + for index, (name, data) in enumerate(self.data.items()): + x_coords = list(map(lambda point: point[0], data["points"])) + y_coords = list(map(lambda point: point[1], data["points"])) + + group_args = self.__validate_mplscatter_args(scatter_args, name) + if "cmap" in group_args: + group_args['c'] = data["data"] + + axs.scatter(x_coords, y_coords, label=name, **group_args) + axs.grid(linestyle='--', linewidth=1) + axs.legend(loc='upper right', fontsize=12) + if title is not None: + axs.set_title(title) + + plt.axis('scaled')
    +
    + +
    + + +
    +
    +
    +
    + + + + + Fork me on GitHub + + + + + + \ No newline at end of file diff --git a/docs/build/html/_modules/spatialpy/core/vtkreader.html b/docs/build/html/_modules/spatialpy/core/vtkreader.html index 68768261..d725520b 100644 --- a/docs/build/html/_modules/spatialpy/core/vtkreader.html +++ b/docs/build/html/_modules/spatialpy/core/vtkreader.html @@ -5,7 +5,7 @@ - spatialpy.core.vtkreader — SpatialPy 1.0 documentation + spatialpy.core.vtkreader — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.core.vtkreader

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
     
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
     
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
     
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     
     import numpy
     
    @@ -303,10 +301,10 @@ 

    Source code for spatialpy.core.vtkreader

         
    diff --git a/docs/build/html/_modules/spatialpy/solvers/build_expression.html b/docs/build/html/_modules/spatialpy/solvers/build_expression.html index 6aaf4746..69669844 100644 --- a/docs/build/html/_modules/spatialpy/solvers/build_expression.html +++ b/docs/build/html/_modules/spatialpy/solvers/build_expression.html @@ -5,7 +5,7 @@ - spatialpy.solvers.build_expression — SpatialPy 1.0 documentation + spatialpy.solvers.build_expression — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.solvers.build_expression

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
     
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
     
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
     
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     
     import ast
     
    @@ -862,10 +860,10 @@ 

    Source code for spatialpy.solvers.build_expression

    diff --git a/docs/build/html/_modules/spatialpy/solvers/solver.html b/docs/build/html/_modules/spatialpy/solvers/solver.html index 5c84fcbc..4ebca464 100644 --- a/docs/build/html/_modules/spatialpy/solvers/solver.html +++ b/docs/build/html/_modules/spatialpy/solvers/solver.html @@ -5,7 +5,7 @@ - spatialpy.solvers.solver — SpatialPy 1.0 documentation + spatialpy.solvers.solver — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.solvers.solver

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
     
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
     
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
     
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     
     import os
     import shutil
    @@ -567,7 +565,12 @@ 

    Source code for spatialpy.solvers.solver

     
             # Build the solver
             makefile = self.spatialpy_rootdir+'/build/Makefile'
    -        cmd_list = ['cd', self.core_dir, '&&', 'make', 'CORE', '-f',  makefile,
    +        makefile_ann = self.spatialpy_rootdir+'/external/ANN/src/Makefile.spatialpy'
    +        cmd_list = ['cd', self.core_dir, '&&',
    +            'make', '-f' , makefile_ann, 
    +            'ROOTINC="' + self.spatialpy_rootinc+'"',
    +            '&&',
    +            'make', 'CORE', '-f',  makefile,
                 'ROOT="' + self.spatialpy_rootparam+'"',
                 'ROOTINC="' + self.spatialpy_rootinc+'"',
                 'BUILD='+self.core_dir, '&&'
    @@ -721,10 +724,10 @@ 

    Source code for spatialpy.solvers.solver

         
    diff --git a/docs/build/html/_modules/spatialpy/stochss/stochss_export.html b/docs/build/html/_modules/spatialpy/stochss/stochss_export.html index cead8e00..67f2458b 100644 --- a/docs/build/html/_modules/spatialpy/stochss/stochss_export.html +++ b/docs/build/html/_modules/spatialpy/stochss/stochss_export.html @@ -5,7 +5,7 @@ - spatialpy.stochss.stochss_export — SpatialPy 1.0 documentation + spatialpy.stochss.stochss_export — SpatialPy 1.0.2 documentation @@ -91,23 +91,21 @@

    Quick search

    Source code for spatialpy.stochss.stochss_export

    -'''
    -SpatialPy is a Python 3 package for simulation of
    -spatial deterministic/stochastic reaction-diffusion-advection problems
    -Copyright (C) 2019 - 2022 SpatialPy developers.
    +# SpatialPy is a Python 3 package for simulation of
    +# spatial deterministic/stochastic reaction-diffusion-advection problems
    +# Copyright (C) 2019 - 2022 SpatialPy developers.
     
    -This program is free software: you can redistribute it and/or modify
    -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    -published by the Free Software Foundation.
    +# This program is free software: you can redistribute it and/or modify
    +# it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as
    +# published by the Free Software Foundation.
     
    -This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
    +# This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.
     
    -You should have received a copy of the GNU General Public License
    -along with this program.  If not, see <http://www.gnu.org/licenses/>.
    -'''
    +# You should have received a copy of the GNU General Public License
    +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
     
     import ast
     import json
    @@ -364,10 +362,10 @@ 

    Source code for spatialpy.stochss.stochss_export

    diff --git a/docs/build/html/_sources/classes/spatialpy.core.rst.txt b/docs/build/html/_sources/classes/spatialpy.core.rst.txt index 9d0dc903..f259fa08 100644 --- a/docs/build/html/_sources/classes/spatialpy.core.rst.txt +++ b/docs/build/html/_sources/classes/spatialpy.core.rst.txt @@ -100,6 +100,14 @@ spatialpy.core.species module :undoc-members: :show-inheritance: +spatialpy.core.visualization module +----------------------------------- + +.. automodule:: spatialpy.core.visualization + :members: + :undoc-members: + :show-inheritance: + spatialpy.core.vtkreader module ------------------------------- diff --git a/docs/build/html/_static/basic.css b/docs/build/html/_static/basic.css index 912859b5..bf18350b 100644 --- a/docs/build/html/_static/basic.css +++ b/docs/build/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -731,8 +731,9 @@ dl.glossary dt { .classifier:before { font-style: normal; - margin: 0.5em; + margin: 0 0.5em; content: ":"; + display: inline-block; } abbr, acronym { @@ -756,6 +757,7 @@ span.pre { -ms-hyphens: none; -webkit-hyphens: none; hyphens: none; + white-space: nowrap; } div[class*="highlight-"] { diff --git a/docs/build/html/_static/doctools.js b/docs/build/html/_static/doctools.js index 8cbf1b16..e509e483 100644 --- a/docs/build/html/_static/doctools.js +++ b/docs/build/html/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -264,6 +264,9 @@ var Documentation = { hideSearchWords : function() { $('#searchbox .highlight-link').fadeOut(300); $('span.highlighted').removeClass('highlighted'); + var url = new URL(window.location); + url.searchParams.delete('highlight'); + window.history.replaceState({}, '', url); }, /** diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js index b24e4743..32a0c247 100644 --- a/docs/build/html/_static/documentation_options.js +++ b/docs/build/html/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '1.0', + VERSION: '1.0.2', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/build/html/_static/language_data.js b/docs/build/html/_static/language_data.js index 863704b3..ebe2f03b 100644 --- a/docs/build/html/_static/language_data.js +++ b/docs/build/html/_static/language_data.js @@ -5,7 +5,7 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/docs/build/html/_static/pygments.css b/docs/build/html/_static/pygments.css index 1b945229..87f8bd12 100644 --- a/docs/build/html/_static/pygments.css +++ b/docs/build/html/_static/pygments.css @@ -1,7 +1,7 @@ -pre { line-height: 125%; margin: 0; } -td.linenos pre { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; } -span.linenos { color: #000000; background-color: #f0f0f0; padding-left: 5px; padding-right: 5px; } -td.linenos pre.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight { background: #f8f8f8; } diff --git a/docs/build/html/_static/searchtools.js b/docs/build/html/_static/searchtools.js index 8eb14218..2d778593 100644 --- a/docs/build/html/_static/searchtools.js +++ b/docs/build/html/_static/searchtools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -276,19 +276,28 @@ var Search = { setTimeout(function() { displayNextItem(); }, 5); - } else { + } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { $.ajax({url: requestUrl, dataType: "text", complete: function(jqxhr, textstatus) { var data = jqxhr.responseText; if (data !== '' && data !== undefined) { - listItem.append(Search.makeSearchSummary(data, searchterms, hlterms)); + var summary = Search.makeSearchSummary(data, searchterms, hlterms); + if (summary) { + listItem.append(summary); + } } Search.output.append(listItem); setTimeout(function() { displayNextItem(); }, 5); }}); + } else { + // no source available, just display title + Search.output.append(listItem); + setTimeout(function() { + displayNextItem(); + }, 5); } } // search finished, update title and status message @@ -319,7 +328,9 @@ var Search = { var results = []; for (var prefix in objects) { - for (var name in objects[prefix]) { + for (var iMatch = 0; iMatch != objects[prefix].length; ++iMatch) { + var match = objects[prefix][iMatch]; + var name = match[4]; var fullname = (prefix ? prefix + '.' : '') + name; var fullnameLower = fullname.toLowerCase() if (fullnameLower.indexOf(object) > -1) { @@ -333,7 +344,6 @@ var Search = { } else if (parts[parts.length - 1].indexOf(object) > -1) { score += Scorer.objPartialMatch; } - var match = objects[prefix][name]; var objname = objnames[match[1]][2]; var title = titles[match[0]]; // If more than one term searched for, we require other words to be @@ -492,6 +502,9 @@ var Search = { */ makeSearchSummary : function(htmlText, keywords, hlwords) { var text = Search.htmlToText(htmlText); + if (text == "") { + return null; + } var textLower = text.toLowerCase(); var start = 0; $.each(keywords, function() { diff --git a/docs/build/html/classes/spatialpy.core.html b/docs/build/html/classes/spatialpy.core.html index 0b5b39b2..d2b61df2 100644 --- a/docs/build/html/classes/spatialpy.core.html +++ b/docs/build/html/classes/spatialpy.core.html @@ -4,8 +4,9 @@ - - spatialpy.core package — SpatialPy 1.0 documentation + + + spatialpy.core package — SpatialPy 1.0.2 documentation @@ -13,6 +14,7 @@ + @@ -103,28 +105,16 @@

    Quick search

    -
    +

    spatialpy.core package

    -
    +

    Submodules

    -
    -
    +
    +

    spatialpy.core.boundarycondition module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.boundarycondition.BoundaryCondition(xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, type_id=None, deterministic=True, target=None, value=None, model=None)[source]
    +class spatialpy.core.boundarycondition.BoundaryCondition(xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, type_id=None, deterministic=True, target=None, value=None, model=None)[source]

    Bases: object

    Set spatial regions of the domain where a property of particles are held constant (updated each simulation step)

    @@ -173,21 +163,9 @@

    Submodules +

    +

    spatialpy.core.cleanup module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    spatialpy.core.cleanup.cleanup_build_files(build_dir=None)[source]
    @@ -222,24 +200,12 @@

    Submodules +

    +

    spatialpy.core.datafunction module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.datafunction.DataFunction(name=None)[source]
    +class spatialpy.core.datafunction.DataFunction(name=None)[source]

    Bases: object

    Abstract class used to constuct the data function.

    @@ -270,24 +236,12 @@

    Submodules +

    +

    spatialpy.core.domain module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.domain.Domain(numpoints, xlim, ylim, zlim, rho0=1.0, c0=10, P0=None, gravity=None)[source]
    +class spatialpy.core.domain.Domain(numpoints, xlim, ylim, zlim, rho0=1.0, c0=10, P0=None, gravity=None)[source]

    Bases: object

    Domain class for SpatialPy. A domain defines points and attributes of a regional space for simulation.

    @@ -378,7 +332,7 @@

    Submodules
    -classmethod create_2D_domain(xlim, ylim, nx, ny, type_id=1, mass=1.0, nu=1.0, rho=None, c=0, fixed=False, **kwargs)[source]
    +classmethod create_2D_domain(xlim, ylim, nx, ny, type_id=1, mass=1.0, nu=1.0, rho=None, c=0, fixed=False, **kwargs)[source]

    Create a filled 2D domain

    Parameters
    @@ -407,7 +361,7 @@

    Submodules
    -classmethod create_3D_domain(xlim, ylim, zlim, nx, ny, nz, type_id=1, mass=1.0, nu=1.0, rho=None, c=0, fixed=False, **kwargs)[source]
    +classmethod create_3D_domain(xlim, ylim, zlim, nx, ny, nz, type_id=1, mass=1.0, nu=1.0, rho=None, c=0, fixed=False, **kwargs)[source]

    Create a filled 3D domain

    Parameters
    @@ -463,8 +417,7 @@

    Submodules
    Parameters

    +

    spatialpy.core.geometry module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.geometry.Geometry[source]
    +class spatialpy.core.geometry.Geometry[source]

    Bases: object

    Geometry class provides a method for tagging parts of the spatial domain as separate parts.

    @@ -778,7 +718,7 @@

    Submodules
    -class spatialpy.core.geometry.GeometryAll[source]
    +class spatialpy.core.geometry.GeometryAll[source]

    Bases: spatialpy.core.geometry.Geometry

    Mark all particles.

    @@ -804,7 +744,7 @@

    Submodules
    -class spatialpy.core.geometry.GeometryExterior[source]
    +class spatialpy.core.geometry.GeometryExterior[source]

    Bases: spatialpy.core.geometry.Geometry

    Mark particles that are on the edge of the domain. only works for domains that define triangles and tetrahedrons.

    @@ -831,7 +771,7 @@

    Submodules
    -class spatialpy.core.geometry.GeometryInterior[source]
    +class spatialpy.core.geometry.GeometryInterior[source]

    Bases: spatialpy.core.geometry.Geometry

    Mark particles that are not on the edge of the domain. Only works for domains that define triangles and tetrahedrons.

    @@ -856,24 +796,12 @@

    Submodules +

    +

    spatialpy.core.initialcondition module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.initialcondition.InitialCondition[source]
    +class spatialpy.core.initialcondition.InitialCondition[source]

    Bases: object

    Class used to defined initial conditions in SpatialPy. SubClasses must implement the ‘apply(model)’ method, which @@ -893,7 +821,7 @@

    Submodules
    -class spatialpy.core.initialcondition.PlaceInitialCondition(species, count, location)[source]
    +class spatialpy.core.initialcondition.PlaceInitialCondition(species, count, location)[source]

    Bases: spatialpy.core.initialcondition.InitialCondition

    Class used to defined the place initial condition in SpatialPy.

    @@ -920,7 +848,7 @@

    Submodules
    -class spatialpy.core.initialcondition.ScatterInitialCondition(species, count, types=None)[source]
    +class spatialpy.core.initialcondition.ScatterInitialCondition(species, count, types=None)[source]

    Bases: spatialpy.core.initialcondition.InitialCondition

    Class used to defined the scatter initial condition in SpatialPy.

    @@ -947,7 +875,7 @@

    Submodules
    -class spatialpy.core.initialcondition.UniformInitialCondition(species, count, types=None)[source]
    +class spatialpy.core.initialcondition.UniformInitialCondition(species, count, types=None)[source]

    Bases: spatialpy.core.initialcondition.InitialCondition

    Class used to defined the uniform initial condition in SpatialPy.

    @@ -972,24 +900,12 @@

    Submodules +

    +

    spatialpy.core.model module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.model.Model(name='spatialpy')[source]
    +class spatialpy.core.model.Model(name='spatialpy')[source]

    Bases: object

    Representation of a spatial biochemical model.

    @@ -1320,7 +1236,7 @@

    Submodules
    -reserved_names = ['vol', 't']
    +reserved_names = ['vol', 't']

    @@ -1414,7 +1330,7 @@

    Submodules
    -special_characters = ['[', ']', '+', '-', '*', '/', '.', '^']
    +special_characters = ['[', ']', '+', '-', '*', '/', '.', '^']

    @@ -1464,24 +1380,12 @@

    Submodules +

    +

    spatialpy.core.parameter module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.parameter.Parameter(name=None, expression=None)[source]
    +class spatialpy.core.parameter.Parameter(name=None, expression=None)[source]

    Bases: object

    Model of a rate paramter. A parameter can be given as a String expression (function) or directly as a scalar value. @@ -1497,24 +1401,12 @@

    Submodules +

    +

    spatialpy.core.reaction module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.reaction.Reaction(name='', reactants=None, products=None, propensity_function=None, rate=None, annotation=None, restrict_to=None)[source]
    +class spatialpy.core.reaction.Reaction(name='', reactants=None, products=None, propensity_function=None, rate=None, annotation=None, restrict_to=None)[source]

    Bases: object

    Models a biochemical reaction. A reaction conatains dictionaries of species (reactants and products) and parameters. The reaction’s propensity function needs to be evaluable and result in a non-negative scalar value in the namespace defined by the union of its Reactant, Product and Parameter dictionaries. For mass-action, zeroth, first and second order reactions are supported, attempting to used higher orders will result in an error.

    @@ -1582,24 +1474,12 @@

    Submodules +

    +

    spatialpy.core.result module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.result.Result(model=None, result_dir=None)[source]
    +class spatialpy.core.result.Result(model=None, result_dir=None)[source]

    Bases: object

    Result object for a URDME simulation.

    @@ -1663,7 +1543,7 @@

    Submodules
    -plot_property(property_name, t_ndx=None, t_val=None, p_ndx=0, width=None, height=None, colormap=None, size=5, title=None, animated=False, t_ndx_list=None, speed=1, f_duration=500, t_duration=300, included_types_list=None, return_plotly_figure=False, use_matplotlib=False, debug=False)[source]
    +plot_property(property_name, t_ndx=None, t_val=None, p_ndx=0, width=None, height=None, colormap=None, size=None, title=None, animated=False, t_ndx_list=None, speed=1, f_duration=500, t_duration=300, included_types_list=None, return_plotly_figure=False, use_matplotlib=False, debug=False)[source]

    Plots the Results using plotly. Can only be viewed in a Jupyter Notebook.

    Parameters
    @@ -1808,137 +1688,120 @@

    Submodules +

    +

    spatialpy.core.spatialpyerror module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -exception spatialpy.core.spatialpyerror.BoundaryConditionError[source]
    +exception spatialpy.core.spatialpyerror.BoundaryConditionError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Base class for exceptions in the boundarycondition module.

    -exception spatialpy.core.spatialpyerror.DataFunctionError[source]
    +exception spatialpy.core.spatialpyerror.DataFunctionError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Class for exceptions in the datafunction module.

    -exception spatialpy.core.spatialpyerror.DomainError[source]
    +exception spatialpy.core.spatialpyerror.DomainError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Class for exceptions in the domain module.

    -exception spatialpy.core.spatialpyerror.GeometryError[source]
    +exception spatialpy.core.spatialpyerror.GeometryError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Class for exceptions in the geometry module.

    -exception spatialpy.core.spatialpyerror.InitialConditionError[source]
    +exception spatialpy.core.spatialpyerror.InitialConditionError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Class for exceptions in initailcondition module.

    -exception spatialpy.core.spatialpyerror.ModelError[source]
    +exception spatialpy.core.spatialpyerror.ModelError[source]

    Bases: Exception

    Class for exceptions in the model module.

    -exception spatialpy.core.spatialpyerror.ParameterError[source]
    +exception spatialpy.core.spatialpyerror.ParameterError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Class for exceptions in parameter module.

    -exception spatialpy.core.spatialpyerror.ReactionError[source]
    +exception spatialpy.core.spatialpyerror.ReactionError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Class for exceptions in reaction module.

    -exception spatialpy.core.spatialpyerror.ResultError[source]
    +exception spatialpy.core.spatialpyerror.ResultError[source]

    Bases: Exception

    Class for exceptions in the results module.

    -exception spatialpy.core.spatialpyerror.SimulationError[source]
    +exception spatialpy.core.spatialpyerror.SimulationError[source]

    Bases: Exception

    Class for exceptions in the simulation module.

    -exception spatialpy.core.spatialpyerror.SimulationTimeout[source]
    +exception spatialpy.core.spatialpyerror.SimulationTimeout[source]

    Bases: spatialpy.core.spatialpyerror.SimulationError

    Exception raised for timeout errors.

    -exception spatialpy.core.spatialpyerror.SpeciesError[source]
    +exception spatialpy.core.spatialpyerror.SpeciesError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Class for exceptions in the species module.

    -exception spatialpy.core.spatialpyerror.VTKReaderError[source]
    +exception spatialpy.core.spatialpyerror.VTKReaderError[source]

    Bases: Exception

    Bass class for exceptions in the vtkreader module.

    -exception spatialpy.core.spatialpyerror.VTKReaderIOError(message)[source]
    +exception spatialpy.core.spatialpyerror.VTKReaderIOError(message)[source]

    Bases: spatialpy.core.spatialpyerror.VTKReaderError

    Exception raised for I/O errors.

    -
    -
    +
    +
    +exception spatialpy.core.spatialpyerror.VisualizationError[source]
    +

    Bases: Exception

    +

    Class for exceptions in the visualization module.

    +
    + + +

    spatialpy.core.species module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.species.Species(name=None, diffusion_coefficient=None, restrict_to=None)[source]
    +class spatialpy.core.species.Species(name=None, diffusion_coefficient=None, restrict_to=None)[source]

    Bases: object

    Model of a biochemical species. Must be assigned a diffusion coefficent.

    @@ -1966,24 +1829,51 @@

    Submodules +

    +
    +

    spatialpy.core.visualization module

    +
    +
    +class spatialpy.core.visualization.Visualization(data)[source]
    +

    Bases: object

    +
    +
    +MPL_HEIGHT = 4.8
    +
    + +
    +
    +MPL_SIZE = 40
    +
    + +
    +
    +MPL_WIDTH = 6.4
    +
    + +
    +
    +plot_scatter(plot_args=None, scatter_args=None, multiple_graphs=False, title=None, limits=None)[source]
    +

    Visualize data using maplotlib scatter plots.

    +
    +
    Parameters
    +
      +
    • plot_args (dict) – additional keyword arguments passed to matplotlib.pyplot.subplots

    • +
    • scatter_args (dist) – dict of additional keyword arguments passed to matplotlib.pyplot.scatter for each group.

    • +
    • multiple_graphs (bool | tuple(nrows, ncols)) – if each data entry should be ploted separately or on the same plot. If ploted separately a shape may be provided.

    • +
    +
    +
    +
    + +
    + +
    +

    spatialpy.core.vtkreader module

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.vtkreader.VTKReader(filename=None, debug=False)[source]
    +class spatialpy.core.vtkreader.VTKReader(filename=None, debug=False)[source]

    Bases: object

    VTKReader.py: SpatialPy minimal VTK legacy file reader. Reference: https://vtk.org/wp-content/uploads/2015/04/file-formats.pdf

    @@ -2078,24 +1968,12 @@

    Submodules +

    +

    Module contents

    -

    SpatialPy is a Python 3 package for simulation of -spatial deterministic/stochastic reaction-diffusion-advection problems -Copyright (C) 2019 - 2022 SpatialPy developers.

    -

    This program is free software: you can redistribute it and/or modify -it under the terms of the GNU GENERAL PUBLIC LICENSE Version 3 as -published by the Free Software Foundation.

    -

    This program 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 GENERAL PUBLIC LICENSE Version 3 for more details.

    -

    You should have received a copy of the GNU General Public License -along with this program. If not, see <http://www.gnu.org/licenses/>.

    -class spatialpy.core.BoundaryCondition(xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, type_id=None, deterministic=True, target=None, value=None, model=None)[source]
    +class spatialpy.core.BoundaryCondition(xmin=None, xmax=None, ymin=None, ymax=None, zmin=None, zmax=None, type_id=None, deterministic=True, target=None, value=None, model=None)[source]

    Bases: object

    Set spatial regions of the domain where a property of particles are held constant (updated each simulation step)

    @@ -2146,14 +2024,14 @@

    Submodules
    -exception spatialpy.core.BoundaryConditionError[source]
    +exception spatialpy.core.BoundaryConditionError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Base class for exceptions in the boundarycondition module.

    -class spatialpy.core.DataFunction(name=None)[source]
    +class spatialpy.core.DataFunction(name=None)[source]

    Bases: object

    Abstract class used to constuct the data function.

    @@ -2186,14 +2064,14 @@

    Submodules
    -exception spatialpy.core.DataFunctionError[source]
    +exception spatialpy.core.DataFunctionError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Class for exceptions in the datafunction module.

    -class spatialpy.core.Domain(numpoints, xlim, ylim, zlim, rho0=1.0, c0=10, P0=None, gravity=None)[source]
    +class spatialpy.core.Domain(numpoints, xlim, ylim, zlim, rho0=1.0, c0=10, P0=None, gravity=None)[source]

    Bases: object

    Domain class for SpatialPy. A domain defines points and attributes of a regional space for simulation.

    @@ -2284,7 +2162,7 @@

    Submodules
    -classmethod create_2D_domain(xlim, ylim, nx, ny, type_id=1, mass=1.0, nu=1.0, rho=None, c=0, fixed=False, **kwargs)[source]
    +classmethod create_2D_domain(xlim, ylim, nx, ny, type_id=1, mass=1.0, nu=1.0, rho=None, c=0, fixed=False, **kwargs)[source]

    Create a filled 2D domain

    Parameters
    @@ -2313,7 +2191,7 @@

    Submodules
    -classmethod create_3D_domain(xlim, ylim, zlim, nx, ny, nz, type_id=1, mass=1.0, nu=1.0, rho=None, c=0, fixed=False, **kwargs)[source]
    +classmethod create_3D_domain(xlim, ylim, zlim, nx, ny, nz, type_id=1, mass=1.0, nu=1.0, rho=None, c=0, fixed=False, **kwargs)[source]

    Create a filled 3D domain

    Parameters
    @@ -2369,8 +2247,7 @@

    Submodules
    Parameters
      -
    • geometry_ivar (spatialpy.core.geometry.Geometry) – an instance of a spatialpy.core.geometry.Geometry subclass. The ‘inside()’ method -of this object will be used to create add the particles.

    • +
    • geometry_ivar (spatialpy.core.geometry.Geometry) – an instance of a spatialpy.core.geometry.Geometry subclass. The ‘inside()’ method of this object will be used to create add the particles.

    • deltax (float) – Distance between particles on the x-axis.

    • deltay (float) – Distance between particles on the y-axis (defaults to deltax).

    • deltaz (float) – Distance between particles on the z-axis (defaults to deltax).

    • @@ -2500,7 +2377,7 @@

      Submodules
      -classmethod import_meshio_object(mesh_obj)[source]
      +classmethod import_meshio_object(mesh_obj)[source]

      Import a python meshio mesh object.

      Parameters
      @@ -2517,7 +2394,7 @@

      Submodules
      -plot_types(width=None, height=None, colormap=None, size=5, title=None, included_types_list=None, use_matplotlib=False, return_plotly_figure=False)[source]
      +plot_types(width=None, height=None, colormap=None, size=None, title=None, included_types_list=None, use_matplotlib=False, return_plotly_figure=False)[source]

      Plots the domain using plotly. Can only be viewed in a Jupyter Notebook.

      Parameters
      @@ -2543,7 +2420,7 @@

      Submodules
      -classmethod read_msh_file(filename)[source]
      +classmethod read_msh_file(filename)[source]

      Read a Gmsh style .msh file

      Parameters
      @@ -2560,7 +2437,7 @@

      Submodules
      -classmethod read_stochss_domain(filename)[source]
      +classmethod read_stochss_domain(filename)[source]

      Read a StochSS Domain (.domn) file or pull a StochSS Domain from a StochSS Spatial Model (.smdl) file.

      Parameters
      @@ -2594,7 +2471,7 @@

      Submodules
      -classmethod read_xml_mesh(filename)[source]
      +classmethod read_xml_mesh(filename)[source]

      Read a FEniCS/dolfin style XML mesh file

      Parameters
      @@ -2616,8 +2493,7 @@

      Submodules
      Parameters

      -class spatialpy.core.Geometry[source]
      +class spatialpy.core.Geometry[source]

      Bases: object

      Geometry class provides a method for tagging parts of the spatial domain as separate parts.

      @@ -2676,7 +2552,7 @@

      Submodules
      -class spatialpy.core.GeometryAll[source]
      +class spatialpy.core.GeometryAll[source]

      Bases: spatialpy.core.geometry.Geometry

      Mark all particles.

      @@ -2702,14 +2578,14 @@

      Submodules
      -exception spatialpy.core.GeometryError[source]
      +exception spatialpy.core.GeometryError[source]

      Bases: spatialpy.core.spatialpyerror.ModelError

      Class for exceptions in the geometry module.

      -class spatialpy.core.GeometryExterior[source]
      +class spatialpy.core.GeometryExterior[source]

      Bases: spatialpy.core.geometry.Geometry

      Mark particles that are on the edge of the domain. only works for domains that define triangles and tetrahedrons.

      @@ -2736,7 +2612,7 @@

      Submodules
      -class spatialpy.core.GeometryInterior[source]
      +class spatialpy.core.GeometryInterior[source]

      Bases: spatialpy.core.geometry.Geometry

      Mark particles that are not on the edge of the domain. Only works for domains that define triangles and tetrahedrons.

      @@ -2763,7 +2639,7 @@

      Submodules
      -class spatialpy.core.InitialCondition[source]
      +class spatialpy.core.InitialCondition[source]

      Bases: object

      Class used to defined initial conditions in SpatialPy. SubClasses must implement the ‘apply(model)’ method, which @@ -2783,43 +2659,46 @@

      Submodules
      -exception spatialpy.core.InitialConditionError[source]
      +exception spatialpy.core.InitialConditionError[source]

      Bases: spatialpy.core.spatialpyerror.ModelError

      Class for exceptions in initailcondition module.

      -class spatialpy.core.KDTree(data, leafsize=10)[source]
      -

      Bases: object

      -

      kd-tree for quick nearest-neighbor lookup

      -

      This class provides an index into a set of k-D points which -can be used to rapidly look up the nearest neighbors of any point.

      +class spatialpy.core.KDTree(data, leafsize=10, compact_nodes=True, copy_data=False, balanced_tree=True, boxsize=None)[source] +

      Bases: scipy.spatial.ckdtree.cKDTree

      +

      kd-tree for quick nearest-neighbor lookup.

      +

      This class provides an index into a set of k-dimensional points +which can be used to rapidly look up the nearest neighbors of any +point.

      Parameters
        -
      • data ((N,K) array_like) – The data points to be indexed. This array is not copied, and -so modifying this data will result in bogus results.

      • -
      • leafsize (int, optional) – The number of points at which the algorithm switches over to -brute-force. Has to be positive.

      • +
      • data (array_like, shape (n,m)) – The n data points of dimension m to be indexed. This array is +not copied unless this is necessary to produce a contiguous +array of doubles, and so modifying this data will result in +bogus results. The data are also copied if the kd-tree is built +with copy_data=True.

      • +
      • leafsize (positive int, optional) – The number of points at which the algorithm switches over to +brute-force. Default: 10.

      • +
      • compact_nodes (bool, optional) – If True, the kd-tree is built to shrink the hyperrectangles to +the actual data range. This usually gives a more compact tree that +is robust against degenerated input data and gives faster queries +at the expense of longer build time. Default: True.

      • +
      • copy_data (bool, optional) – If True the data is always copied to protect the kd-tree against +data corruption. Default: False.

      • +
      • balanced_tree (bool, optional) – If True, the median is used to split the hyperrectangles instead of +the midpoint. This usually gives a more compact tree and +faster queries at the expense of longer build time. Default: True.

      • +
      • boxsize (array_like or scalar, optional) – Apply a m-d toroidal topology to the KDTree.. The topology is generated +by \(x_i + n_i L_i\) where \(n_i\) are integers and \(L_i\) +is the boxsize along i-th dimension. The input data shall be wrapped +into \([0, L_i)\). A ValueError is raised if any of the data is +outside of this bound.

      -
      Raises
      -

      RuntimeError – The maximum recursion limit can be exceeded for large data - sets. If this happens, either increase the value for the leafsize - parameter or increase the recursion limit by:: - - >>> import sys - >>> sys.setrecursionlimit(10000)

      -
      -
      -

      See also

      -
      -
      cKDTree

      Implementation of KDTree in Cython

      -
      -
      -

      Notes

      The algorithm used is described in Maneewongvatana and Mount 1999. The general idea is that the kd-tree is a binary tree, each of whose @@ -2836,153 +2715,414 @@

      Submodules +
      +data
      +

      The n data points of dimension m to be indexed. This array is +not copied unless this is necessary to produce a contiguous +array of doubles. The data are also copied if the kd-tree is built +with copy_data=True.

      +
      +
      Type
      +

      ndarray, shape (n,m)

      +
      +
      +

      + +
      +
      +leafsize
      +

      The number of points at which the algorithm switches over to +brute-force.

      +
      +
      Type
      +

      positive int

      +
      +
      +
      + +
      +
      +m
      +

      The dimension of a single data-point.

      +
      +
      Type
      +

      int

      +
      +
      +
      + +
      +
      +n
      +

      The number of data points.

      +
      +
      Type
      +

      int

      +
      +
      +
      + +
      +
      +maxes
      +

      The maximum value in each dimension of the n data points.

      +
      +
      Type
      +

      ndarray, shape (m,)

      +
      +
      +
      + +
      +
      +mins
      +

      The minimum value in each dimension of the n data points.

      +
      +
      Type
      +

      ndarray, shape (m,)

      +
      +
      +
      + +
      +
      +size
      +

      The number of nodes in the tree.

      +
      +
      Type
      +

      int

      +
      +
      +
      +
      -count_neighbors(other, r, p=2.0)[source]
      +count_neighbors(other, r, p=2.0, weights=None, cumulative=True)[source]

      Count how many nearby pairs can be formed.

      -

      Count the number of pairs (x1,x2) can be formed, with x1 drawn -from self and x2 drawn from other, and where -distance(x1, x2, p) <= r. -This is the “two-point correlation” described in Gray and Moore 2000, -“N-body problems in statistical learning”, and the code here is based -on their algorithm.

      +

      Count the number of pairs (x1,x2) can be formed, with x1 drawn +from self and x2 drawn from other, and where +distance(x1, x2, p) <= r.

      +

      Data points on self and other are optionally weighted by the +weights argument. (See below)

      +

      This is adapted from the “two-point correlation” algorithm described by +Gray and Moore 1. See notes for further discussion.

      Parameters
        -
      • other (KDTree instance) – The other tree to draw points from.

      • +
      • other (KDTree) – The other tree to draw points from, can be the same tree as self.

      • r (float or one-dimensional array of floats) – The radius to produce a count for. Multiple radii are searched with -a single tree traversal.

      • -
      • p (float, 1<=p<=infinity, optional) – Which Minkowski p-norm to use

      • +a single tree traversal. +If the count is non-cumulative(cumulative=False), r defines +the edges of the bins, and must be non-decreasing.

        +
      • p (float, optional) – 1<=p<=infinity. +Which Minkowski p-norm to use. +Default 2.0. +A finite large p may cause a ValueError if overflow can occur.

      • +
      • weights (tuple, array_like, or None, optional) –

        If None, the pair-counting is unweighted. +If given as a tuple, weights[0] is the weights of points in +self, and weights[1] is the weights of points in other; +either can be None to indicate the points are unweighted. +If given as an array_like, weights is the weights of points in +self and other. For this to make sense, self and +other must be the same tree. If self and other are two +different trees, a ValueError is raised. +Default: None

        +
        +

        New in version 1.6.0.

        +
        +

      • +
      • cumulative (bool, optional) –

        Whether the returned counts are cumulative. When cumulative is set +to False the algorithm is optimized to work with a large number +of bins (>10) specified by r. When cumulative is set to +True, the algorithm is optimized to work with a small number of +r. Default: True

        +
        +

        New in version 1.6.0.

        +
        +

      Returns
      -

      result – The number of pairs. Note that this is internally stored in a numpy -int, and so may overflow if very large (2e9).

      +

      result – The number of pairs. For unweighted counts, the result is integer. +For weighted counts, the result is float. +If cumulative is False, result[i] contains the counts with +(-inf if i == 0 else r[i-1]) < R <= r[i]

      Return type
      -

      int or 1-D array of ints

      +

      scalar or 1-D array

      +

      Notes

      +

      Pair-counting is the basic operation used to calculate the two point +correlation functions from a data set composed of position of objects.

      +

      Two point correlation function measures the clustering of objects and +is widely used in cosmology to quantify the large scale structure +in our Universe, but it may be useful for data analysis in other fields +where self-similar assembly of objects also occur.

      +

      The Landy-Szalay estimator for the two point correlation function of +D measures the clustering signal in D. 2

      +

      For example, given the position of two sets of objects,

      +
        +
      • objects D (data) contains the clustering signal, and

      • +
      • objects R (random) that contains no signal,

      • +
      +
      +\[\xi(r) = \frac{<D, D> - 2 f <D, R> + f^2<R, R>}{f^2<R, R>},\]
      +

      where the brackets represents counting pairs between two data sets +in a finite bin around r (distance), corresponding to setting +cumulative=False, and f = float(len(D)) / float(len(R)) is the +ratio between number of objects from data and random.

      +

      The algorithm implemented here is loosely based on the dual-tree +algorithm described in 1. We switch between two different +pair-cumulation scheme depending on the setting of cumulative. +The computing time of the method we use when for +cumulative == False does not scale with the total number of bins. +The algorithm for cumulative == True scales linearly with the +number of bins, though it is slightly faster when only +1 or 2 bins are used. 5.

      +

      As an extension to the naive pair-counting, +weighted pair-counting counts the product of weights instead +of number of pairs. +Weighted pair-counting is used to estimate marked correlation functions +(3, section 2.2), +or to properly calculate the average of data per distance bin +(e.g. 4, section 2.1 on redshift).

      +
      +
      1(1,2)
      +

      Gray and Moore, +“N-body problems in statistical learning”, +Mining the sky, 2000, +https://arxiv.org/abs/astro-ph/0012333

      +
      +
      2
      +

      Landy and Szalay, +“Bias and variance of angular correlation functions”, +The Astrophysical Journal, 1993, +http://adsabs.harvard.edu/abs/1993ApJ…412…64L

      +
      +
      3
      +

      Sheth, Connolly and Skibba, +“Marked correlations in galaxy formation models”, +Arxiv e-print, 2005, +https://arxiv.org/abs/astro-ph/0511773

      +
      +
      4
      +

      Hawkins, et al., +“The 2dF Galaxy Redshift Survey: correlation functions, +peculiar velocities and the matter density of the Universe”, +Monthly Notices of the Royal Astronomical Society, 2002, +http://adsabs.harvard.edu/abs/2003MNRAS.346…78H

      +
      +
      5
      +

      https://github.com/scipy/scipy/pull/5647#issuecomment-168474926

      +
      +
      +

      Examples

      +

      You can count neighbors number between two kd-trees within a distance:

      +
      >>> import numpy as np
      +>>> from scipy.spatial import KDTree
      +>>> rng = np.random.default_rng()
      +>>> points1 = rng.random((5, 2))
      +>>> points2 = rng.random((5, 2))
      +>>> kd_tree1 = KDTree(points1)
      +>>> kd_tree2 = KDTree(points2)
      +>>> kd_tree1.count_neighbors(kd_tree2, 0.2)
      +1
      +
      +
      +

      This number is same as the total pair number calculated by +query_ball_tree:

      +
      >>> indexes = kd_tree1.query_ball_tree(kd_tree2, r=0.2)
      +>>> sum([len(i) for i in indexes])
      +1
      +
      +
      -class innernode(split_dim, split, less, greater)[source]
      +class innernode(ckdtreenode)[source]

      Bases: scipy.spatial.kdtree.KDTree.node

      +
      +
      +property children
      +
      + +
      +
      +property split
      +
      + +
      +
      +property split_dim
      +
      +
      -class leafnode(idx)[source]
      +class leafnode(ckdtree_node=None)[source]

      Bases: scipy.spatial.kdtree.KDTree.node

      +
      +
      +property children
      +
      + +
      +
      +property idx
      +
      +
      -class node[source]
      +class node(ckdtree_node=None)[source]

      Bases: object

      -query(x, k=1, eps=0, p=2, distance_upper_bound=inf)[source]
      -

      Query the kd-tree for nearest neighbors

      +query(x, k=1, eps=0, p=2, distance_upper_bound=inf, workers=1)[source] +

      Query the kd-tree for nearest neighbors.

      Parameters
      • x (array_like, last dimension self.m) – An array of points to query.

      • -
      • k (int, optional) – The number of nearest neighbors to return.

      • +
      • k (int or Sequence[int], optional) – Either the number of nearest neighbors to return, or a list of the +k-th nearest neighbors to return, starting from 1.

      • eps (nonnegative float, optional) – Return approximate nearest neighbors; the kth returned value is guaranteed to be no further than (1+eps) times the distance to the real kth nearest neighbor.

      • p (float, 1<=p<=infinity, optional) – Which Minkowski p-norm to use. -1 is the sum-of-absolute-values “Manhattan” distance -2 is the usual Euclidean distance -infinity is the maximum-coordinate-difference distance

      • +1 is the sum-of-absolute-values distance (“Manhattan” distance). +2 is the usual Euclidean distance. +infinity is the maximum-coordinate-difference distance. +A large, finite p may cause a ValueError if overflow can occur.

      • distance_upper_bound (nonnegative float, optional) – Return only neighbors within this distance. This is used to prune tree searches, so if you are doing a series of nearest-neighbor queries, it may help to supply the distance to the nearest neighbor of the most recent point.

      • +
      • workers (int, optional) –

        Number of workers to use for parallel processing. If -1 is given +all CPU threads are used. Default: 1.

        +
        +

        New in version 1.6.0.

        +
        +

      Returns
      -

        +

        • d (float or array of floats) – The distances to the nearest neighbors. -If x has shape tuple+(self.m,), then d has shape tuple if -k is one, or tuple+(k,) if k is larger than one. Missing -neighbors (e.g. when k > n or distance_upper_bound is -given) are indicated with infinite distances. If k is None, -then d is an object array of shape tuple, containing lists -of distances. In either case the hits are sorted by distance -(nearest first).

        • -
        • i (integer or array of integers) – The locations of the neighbors in self.data. i is the same -shape as d.

        • +If x has shape tuple+(self.m,), then d has shape +tuple+(k,). +When k == 1, the last dimension of the output is squeezed. +Missing neighbors are indicated with infinite distances. +Hits are sorted by distance (nearest first).

          +
          +

          Deprecated since version 1.6.0: If k=None, then d is an object array of shape tuple, +containing lists of distances. This behavior is deprecated and +will be removed in SciPy 1.8.0, use query_ball_point +instead.

          +
          + +
        • i (integer or array of integers) – The index of each neighbor in self.data. +i is the same shape as d. +Missing neighbors are indicated with self.n.

      Examples

      -
      >>> from scipy import spatial
      +
      >>> import numpy as np
      +>>> from scipy.spatial import KDTree
       >>> x, y = np.mgrid[0:5, 2:8]
      ->>> tree = spatial.KDTree(list(zip(x.ravel(), y.ravel())))
      ->>> tree.data
      -array([[0, 2],
      -       [0, 3],
      -       [0, 4],
      -       [0, 5],
      -       [0, 6],
      -       [0, 7],
      -       [1, 2],
      -       [1, 3],
      -       [1, 4],
      -       [1, 5],
      -       [1, 6],
      -       [1, 7],
      -       [2, 2],
      -       [2, 3],
      -       [2, 4],
      -       [2, 5],
      -       [2, 6],
      -       [2, 7],
      -       [3, 2],
      -       [3, 3],
      -       [3, 4],
      -       [3, 5],
      -       [3, 6],
      -       [3, 7],
      -       [4, 2],
      -       [4, 3],
      -       [4, 4],
      -       [4, 5],
      -       [4, 6],
      -       [4, 7]])
      ->>> pts = np.array([[0, 0], [2.1, 2.9]])
      ->>> tree.query(pts)
      -(array([ 2.        ,  0.14142136]), array([ 0, 13]))
      ->>> tree.query(pts[0])
      -(2.0, 0)
      +>>> tree = KDTree(np.c_[x.ravel(), y.ravel()])
      +
      +
      +

      To query the nearest neighbours and return squeezed result, use

      +
      >>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=1)
      +>>> print(dd, ii, sep='\n')
      +[2.         0.2236068]
      +[ 0 13]
      +
      +
      +

      To query the nearest neighbours and return unsqueezed result, use

      +
      >>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[1])
      +>>> print(dd, ii, sep='\n')
      +[[2.        ]
      + [0.2236068]]
      +[[ 0]
      + [13]]
      +
      +
      +

      To query the second nearest neighbours and return unsqueezed result, +use

      +
      >>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[2])
      +>>> print(dd, ii, sep='\n')
      +[[2.23606798]
      + [0.80622577]]
      +[[ 6]
      + [19]]
      +
      +
      +

      To query the first and second nearest neighbours, use

      +
      >>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=2)
      +>>> print(dd, ii, sep='\n')
      +[[2.         2.23606798]
      + [0.2236068  0.80622577]]
      +[[ 0  6]
      + [13 19]]
      +
      +
      +

      or, be more specific

      +
      >>> dd, ii = tree.query([[0, 0], [2.2, 2.9]], k=[1, 2])
      +>>> print(dd, ii, sep='\n')
      +[[2.         2.23606798]
      + [0.2236068  0.80622577]]
      +[[ 0  6]
      + [13 19]]
       
      -query_ball_point(x, r, p=2.0, eps=0)[source]
      +query_ball_point(x, r, p=2.0, eps=0, workers=1, return_sorted=None, return_length=False)[source]

      Find all points within distance r of point(s) x.

      Parameters
      • x (array_like, shape tuple + (self.m,)) – The point or points to search for neighbors of.

      • -
      • r (positive float) – The radius of points to return.

      • -
      • p (float, optional) – Which Minkowski p-norm to use. Should be in the range [1, inf].

      • +
      • r (array_like, float) – The radius of points to return, must broadcast to the length of x.

      • +
      • p (float, optional) – Which Minkowski p-norm to use. Should be in the range [1, inf]. +A finite large p may cause a ValueError if overflow can occur.

      • eps (nonnegative float, optional) – Approximate search. Branches of the tree are not explored if their nearest points are further than r / (1 + eps), and branches are added in bulk if their furthest points are nearer than r * (1 + eps).

      • +
      • workers (int, optional) –

        Number of jobs to schedule for parallel processing. If -1 is given +all processors are used. Default: 1.

        +
        +

        New in version 1.6.0.

        +
        +

      • +
      • return_sorted (bool, optional) –

        Sorts returned indicies if True and does not sort them if False. If +None, does not sort single point queries, but does sort +multi-point queries which was the behavior before this option +was added.

        +
        +

        New in version 1.6.0.

        +
        +

      • +
      • return_length (bool, optional) –

        Return the number of points inside the radius instead of a list +of the indices.

        +
        +

        New in version 1.6.0.

        +
        +

      Returns
      @@ -3003,7 +3143,7 @@

      Submodules>>> x, y = np.mgrid[0:5, 0:5] >>> points = np.c_[x.ravel(), y.ravel()] >>> tree = spatial.KDTree(points) ->>> tree.query_ball_point([2, 0], 1) +>>> sorted(tree.query_ball_point([2, 0], 1)) [5, 10, 11, 15]

    @@ -3023,7 +3163,8 @@

    Submodules
    query_ball_tree(other, r, p=2.0, eps=0)[source]
    -

    Find all pairs of points whose distance is at most r

    +

    Find all pairs of points between self and other whose distance is +at most r.

    Parameters
    +

    Examples

    +

    You can search all pairs of points between two kd-trees within a distance:

    +
    >>> import matplotlib.pyplot as plt
    +>>> import numpy as np
    +>>> from scipy.spatial import KDTree
    +>>> rng = np.random.default_rng()
    +>>> points1 = rng.random((15, 2))
    +>>> points2 = rng.random((15, 2))
    +>>> plt.figure(figsize=(6, 6))
    +>>> plt.plot(points1[:, 0], points1[:, 1], "xk", markersize=14)
    +>>> plt.plot(points2[:, 0], points2[:, 1], "og", markersize=14)
    +>>> kd_tree1 = KDTree(points1)
    +>>> kd_tree2 = KDTree(points2)
    +>>> indexes = kd_tree1.query_ball_tree(kd_tree2, r=0.2)
    +>>> for i in range(len(indexes)):
    +...     for j in indexes[i]:
    +...         plt.plot([points1[i, 0], points2[j, 0]],
    +...             [points1[i, 1], points2[j, 1]], "-r")
    +>>> plt.show()
    +
    +
    -query_pairs(r, p=2.0, eps=0)[source]
    -

    Find all pairs of points within a distance.

    +query_pairs(r, p=2.0, eps=0, output_type='set')[source] +

    Find all pairs of points in self whose distance is at most r.

    Parameters
    Returns

    results – Set of pairs (i,j), with i < j, for which the corresponding -positions are close.

    +positions are close. If output_type is ‘ndarray’, an ndarry is +returned instead of a set.

    Return type
    -

    set

    +

    set or ndarray

    +

    Examples

    +

    You can search all pairs of points in a kd-tree within a distance:

    +
    >>> import matplotlib.pyplot as plt
    +>>> import numpy as np
    +>>> from scipy.spatial import KDTree
    +>>> rng = np.random.default_rng()
    +>>> points = rng.random((20, 2))
    +>>> plt.figure(figsize=(6, 6))
    +>>> plt.plot(points[:, 0], points[:, 1], "xk", markersize=14)
    +>>> kd_tree = KDTree(points)
    +>>> pairs = kd_tree.query_pairs(r=0.2)
    +>>> for (i, j) in pairs:
    +...     plt.plot([points[i, 0], points[j, 0]],
    +...             [points[i, 1], points[j, 1]], "-r")
    +>>> plt.show()
    +
    +
    -sparse_distance_matrix(other, max_distance, p=2.0)[source]
    -

    Compute a sparse distance matrix

    +sparse_distance_matrix(other, max_distance, p=2.0, output_type='dok_matrix')[source] +

    Compute a sparse distance matrix.

    Computes a distance matrix between two KDTrees, leaving as zero any distance greater than max_distance.

    @@ -3084,23 +3269,66 @@

    Submodules
    • other (KDTree) –

    • max_distance (positive float) –

    • -
    • p (float, optional) –

    • +
    • p (float, 1<=p<=infinity) – Which Minkowski p-norm to use. +A finite large p may cause a ValueError if overflow can occur.

    • +
    • output_type (string, optional) –

      Which container to use for output data. Options: ‘dok_matrix’, +‘coo_matrix’, ‘dict’, or ‘ndarray’. Default: ‘dok_matrix’.

      +
      +

      New in version 1.6.0.

      +
      +

    Returns
    -

    result – Sparse matrix representing the results in “dictionary of keys” format.

    +

    result – Sparse matrix representing the results in “dictionary of keys” +format. If a dict is returned the keys are (i,j) tuples of indices. +If output_type is ‘ndarray’ a record array with fields ‘i’, ‘j’, +and ‘v’ is returned,

    Return type
    -

    dok_matrix

    +

    dok_matrix, coo_matrix, dict or ndarray

    +

    Examples

    +

    You can compute a sparse distance matrix between two kd-trees:

    +
    >>> import numpy as np
    +>>> from scipy.spatial import KDTree
    +>>> rng = np.random.default_rng()
    +>>> points1 = rng.random((5, 2))
    +>>> points2 = rng.random((5, 2))
    +>>> kd_tree1 = KDTree(points1)
    +>>> kd_tree2 = KDTree(points2)
    +>>> sdm = kd_tree1.sparse_distance_matrix(kd_tree2, 0.3)
    +>>> sdm.toarray()
    +array([[0.        , 0.        , 0.12295571, 0.        , 0.        ],
    +   [0.        , 0.        , 0.        , 0.        , 0.        ],
    +   [0.28942611, 0.        , 0.        , 0.2333084 , 0.        ],
    +   [0.        , 0.        , 0.        , 0.        , 0.        ],
    +   [0.24617575, 0.29571802, 0.26836782, 0.        , 0.        ]])
    +
    +
    +

    You can check distances above the max_distance are zeros:

    +
    >>> from scipy.spatial import distance_matrix
    +>>> distance_matrix(points1, points2)
    +array([[0.56906522, 0.39923701, 0.12295571, 0.8658745 , 0.79428925],
    +   [0.37327919, 0.7225693 , 0.87665969, 0.32580855, 0.75679479],
    +   [0.28942611, 0.30088013, 0.6395831 , 0.2333084 , 0.33630734],
    +   [0.31994999, 0.72658602, 0.71124834, 0.55396483, 0.90785663],
    +   [0.24617575, 0.29571802, 0.26836782, 0.57714465, 0.6473269 ]])
    +
    +
    +
    +
    +property tree
    +
    +
    -class spatialpy.core.Model(name='spatialpy')[source]
    +class spatialpy.core.Model(name='spatialpy')[source]

    Bases: object

    Representation of a spatial biochemical model.

    @@ -3431,7 +3659,7 @@

    Submodules
    -reserved_names = ['vol', 't']
    +reserved_names = ['vol', 't']

    @@ -3525,7 +3753,7 @@

    Submodules
    -special_characters = ['[', ']', '+', '-', '*', '/', '.', '^']
    +special_characters = ['[', ']', '+', '-', '*', '/', '.', '^']

    @@ -3556,14 +3784,14 @@

    Submodules
    -exception spatialpy.core.ModelError[source]
    +exception spatialpy.core.ModelError[source]

    Bases: Exception

    Class for exceptions in the model module.

    -class spatialpy.core.OrderedDict[source]
    +class spatialpy.core.OrderedDict[source]

    Bases: dict

    Dictionary that remembers insertion order

    @@ -3584,12 +3812,12 @@

    Submodules
    -items() a set-like object providing a view on D’s items
    +items() a set-like object providing a view on D's items

    -keys() a set-like object providing a view on D’s keys
    +keys() a set-like object providing a view on D's keys
    @@ -3601,7 +3829,7 @@

    Submodules
    -pop(k[, d]) v, remove specified key and return the corresponding
    +pop(k[, d]) v, remove specified key and return the corresponding

    value. If key is not found, d is returned if given, otherwise KeyError is raised.

    @@ -3622,7 +3850,7 @@

    Submodules
    -update([E, ]**F) None.  Update D from dict/iterable E and F.
    +update([E, ]**F) None.  Update D from dict/iterable E and F.

    If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

    @@ -3630,14 +3858,14 @@

    Submodules
    -values() an object providing a view on D’s values
    +values() an object providing a view on D's values

    -class spatialpy.core.Parameter(name=None, expression=None)[source]
    +class spatialpy.core.Parameter(name=None, expression=None)[source]

    Bases: object

    Model of a rate paramter. A parameter can be given as a String expression (function) or directly as a scalar value. @@ -3655,14 +3883,14 @@

    Submodules
    -exception spatialpy.core.ParameterError[source]
    +exception spatialpy.core.ParameterError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Class for exceptions in parameter module.

    -class spatialpy.core.PlaceInitialCondition(species, count, location)[source]
    +class spatialpy.core.PlaceInitialCondition(species, count, location)[source]

    Bases: spatialpy.core.initialcondition.InitialCondition

    Class used to defined the place initial condition in SpatialPy.

    @@ -3689,7 +3917,7 @@

    Submodules
    -class spatialpy.core.Reaction(name='', reactants=None, products=None, propensity_function=None, rate=None, annotation=None, restrict_to=None)[source]
    +class spatialpy.core.Reaction(name='', reactants=None, products=None, propensity_function=None, rate=None, annotation=None, restrict_to=None)[source]

    Bases: object

    Models a biochemical reaction. A reaction conatains dictionaries of species (reactants and products) and parameters. The reaction’s propensity function needs to be evaluable and result in a non-negative scalar value in the namespace defined by the union of its Reactant, Product and Parameter dictionaries. For mass-action, zeroth, first and second order reactions are supported, attempting to used higher orders will result in an error.

    @@ -3759,14 +3987,14 @@

    Submodules
    -exception spatialpy.core.ReactionError[source]
    +exception spatialpy.core.ReactionError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Class for exceptions in reaction module.

    -class spatialpy.core.Result(model=None, result_dir=None)[source]
    +class spatialpy.core.Result(model=None, result_dir=None)[source]

    Bases: object

    Result object for a URDME simulation.

    @@ -3830,7 +4058,7 @@

    Submodules
    -plot_property(property_name, t_ndx=None, t_val=None, p_ndx=0, width=None, height=None, colormap=None, size=5, title=None, animated=False, t_ndx_list=None, speed=1, f_duration=500, t_duration=300, included_types_list=None, return_plotly_figure=False, use_matplotlib=False, debug=False)[source]
    +plot_property(property_name, t_ndx=None, t_val=None, p_ndx=0, width=None, height=None, colormap=None, size=None, title=None, animated=False, t_ndx_list=None, speed=1, f_duration=500, t_duration=300, included_types_list=None, return_plotly_figure=False, use_matplotlib=False, debug=False)[source]

    Plots the Results using plotly. Can only be viewed in a Jupyter Notebook.

    Parameters
    @@ -3977,14 +4205,14 @@

    Submodules
    -exception spatialpy.core.ResultError[source]
    +exception spatialpy.core.ResultError[source]

    Bases: Exception

    Class for exceptions in the results module.

    -class spatialpy.core.ScatterInitialCondition(species, count, types=None)[source]
    +class spatialpy.core.ScatterInitialCondition(species, count, types=None)[source]

    Bases: spatialpy.core.initialcondition.InitialCondition

    Class used to defined the scatter initial condition in SpatialPy.

    @@ -4011,21 +4239,21 @@

    Submodules
    -exception spatialpy.core.SimulationError[source]
    +exception spatialpy.core.SimulationError[source]

    Bases: Exception

    Class for exceptions in the simulation module.

    -exception spatialpy.core.SimulationTimeout[source]
    +exception spatialpy.core.SimulationTimeout[source]

    Bases: spatialpy.core.spatialpyerror.SimulationError

    Exception raised for timeout errors.

    -class spatialpy.core.Species(name=None, diffusion_coefficient=None, restrict_to=None)[source]
    +class spatialpy.core.Species(name=None, diffusion_coefficient=None, restrict_to=None)[source]

    Bases: object

    Model of a biochemical species. Must be assigned a diffusion coefficent.

    @@ -4055,14 +4283,14 @@

    Submodules
    -exception spatialpy.core.SpeciesError[source]
    +exception spatialpy.core.SpeciesError[source]

    Bases: spatialpy.core.spatialpyerror.ModelError

    Class for exceptions in the species module.

    -class spatialpy.core.UniformInitialCondition(species, count, types=None)[source]
    +class spatialpy.core.UniformInitialCondition(species, count, types=None)[source]

    Bases: spatialpy.core.initialcondition.InitialCondition

    Class used to defined the uniform initial condition in SpatialPy.

    @@ -4089,7 +4317,7 @@

    Submodules
    -class spatialpy.core.VTKReader(filename=None, debug=False)[source]
    +class spatialpy.core.VTKReader(filename=None, debug=False)[source]

    Bases: object

    VTKReader.py: SpatialPy minimal VTK legacy file reader. Reference: https://vtk.org/wp-content/uploads/2015/04/file-formats.pdf

    @@ -4186,18 +4414,61 @@

    Submodules
    -exception spatialpy.core.VTKReaderError[source]
    +exception spatialpy.core.VTKReaderError[source]

    Bases: Exception

    Bass class for exceptions in the vtkreader module.

    -exception spatialpy.core.VTKReaderIOError(message)[source]
    +exception spatialpy.core.VTKReaderIOError(message)[source]

    Bases: spatialpy.core.spatialpyerror.VTKReaderError

    Exception raised for I/O errors.

    +
    +
    +class spatialpy.core.Visualization(data)[source]
    +

    Bases: object

    +
    +
    +MPL_HEIGHT = 4.8
    +
    + +
    +
    +MPL_SIZE = 40
    +
    + +
    +
    +MPL_WIDTH = 6.4
    +
    + +
    +
    +plot_scatter(plot_args=None, scatter_args=None, multiple_graphs=False, title=None, limits=None)[source]
    +

    Visualize data using maplotlib scatter plots.

    +
    +
    Parameters
    +
      +
    • plot_args (dict) – additional keyword arguments passed to matplotlib.pyplot.subplots

    • +
    • scatter_args (dist) – dict of additional keyword arguments passed to matplotlib.pyplot.scatter for each group.

    • +
    • multiple_graphs (bool | tuple(nrows, ncols)) – if each data entry should be ploted separately or on the same plot. If ploted separately a shape may be provided.

    • +
    +
    +
    +
    + +
    + +
    +
    +exception spatialpy.core.VisualizationError[source]
    +

    Bases: Exception

    +

    Class for exceptions in the visualization module.

    +
    +
    spatialpy.core.cleanup_build_files(build_dir=None)[source]
    @@ -4234,7 +4505,7 @@

    Submodules
    -class spatialpy.core.combinations(iterable, r)
    +class spatialpy.core.combinations(iterable, r)

    Bases: object

    Return successive r-length combinations of elements in the iterable.

    combinations(range(4), 3) –> (0,1,2), (0,1,3), (0,2,3), (1,2,3)

    @@ -4289,7 +4560,7 @@

    Submodules -
    image (default=None |’png’ |’jpeg’ |’svg’ |’webp’) – This parameter sets

    the format of the image to be downloaded, if we choose to download an +

    image (default=None |’png’ |’jpeg’ |’svg’ |’webp’) – This parameter sets

    the format of the image to be downloaded, if we choose to download an image. This parameter has a default value of None indicating that no image should be downloaded. Please note: for higher resolution images and more export options, consider using plotly.io.write_image. See @@ -4326,7 +4597,7 @@

    Submodulesiplot([{'x': [1, 2, 3], 'y': [5, 2, 7]}], image='png') `

    animation_opts Example: -``` +``` from plotly.offline import iplot figure = {‘data’: [{‘x’: [0, 1], ‘y’: [0, 1]}],

    @@ -4343,11 +4614,11 @@

    Submodules```

    +```

    -

    -
    + +
    @@ -4372,10 +4643,10 @@

    Submodules

    @@ -987,10 +952,10 @@

    Submodules

    @@ -178,10 +155,10 @@

    Submodules

    diff --git a/docs/build/html/index.html b/docs/build/html/index.html index dfb90b68..66bc1ed0 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -4,8 +4,9 @@ - - Documentation for SpatialPy 1.0 — SpatialPy 1.0 documentation + + + Documentation for SpatialPy 1.0.2 — SpatialPy 1.0.2 documentation @@ -90,23 +91,23 @@

    Quick search

    -
    -

    Documentation for SpatialPy 1.0

    +
    +

    Documentation for SpatialPy 1.0.2

    SpatialPy is a Python 3 package for simulation of spatial deterministic/stochastic reaction-diffusion-advection problems embedded in Lagrangian reference frame particle based fluid dynamics domain

    This package is intended to replace the PyURDME software https://github.com/pyurdme/pyurdme and will feature both a NSM solver for RDME simulation on static domains and a sSSA-SDPD particle based fluid dynamics solver as described in the publication “A hybrid smoothed dissipative particle dynamics (SDPD) spatial stochastic simulation algorithm (sSSA) for advection–diffusion–reaction problems” by Drawert, Jacob, Li, Yi, Petzold https://www.sciencedirect.com/science/article/pii/S0021999118307101

    -
    +

    Getting a copy of SpatialPy

    The latest version of SpatialPy can be found on PyPI. The source code is available on GitHub. SpatialPy is licensed under the GNU General Public License version 3.

    -

    Please register as a user! SpatialPy's development is funded by NIH grant 2R01EB014877, and to continue support, we need to prove SpatialPy has users. Please fill out our short registration form!

    -
    +

    Please register as a user! SpatialPy's development is funded by NIH grant 2R01EB014877, and to continue support, we need to prove SpatialPy has users. Please fill out our short registration form!

    +

    Examples

    See our Example Notebook - Start Here for more information on how to build and simulate your models with SpatialPy. For an example of how to use SpatialPy to simulate a spatial stochastic reaction-diffusion system, see the 3D Cylinder Demo. We also provide examples of how to use SpatialPy to simulate physics (Gravity Demo) and fluid flow (Weir Model).

    -
    -
    + +

    Reporting Issues

    If you find any problem with SpatialPy or this documentation, please report it using the GitHub issue tracker for the project. You can also contact the main author, Dr. Brian Drawert, directly with questions and suggestions.

    -
    -
    + +

    Documentation

    API reference

    @@ -123,16 +124,16 @@

    Documentation +

    + +

    Indices and tables

    -
    +
    @@ -153,10 +154,10 @@

    Indices and tables

    diff --git a/docs/build/html/search.html b/docs/build/html/search.html index 0fca5605..41abcb61 100644 --- a/docs/build/html/search.html +++ b/docs/build/html/search.html @@ -5,7 +5,7 @@ - Search — SpatialPy 1.0 documentation + Search — SpatialPy 1.0.2 documentation @@ -86,13 +86,14 @@

    Related Topics

    Search

    -
    - +

    @@ -128,10 +129,10 @@

    Search

    diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 70ef50ba..93ab9a19 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["classes/spatialpy","classes/spatialpy.core","classes/spatialpy.solvers","classes/spatialpy.stochss","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["classes/spatialpy.rst","classes/spatialpy.core.rst","classes/spatialpy.solvers.rst","classes/spatialpy.stochss.rst","index.rst"],objects:{"":{spatialpy:[0,0,0,"-"]},"spatialpy.core":{BoundaryCondition:[1,1,1,""],BoundaryConditionError:[1,3,1,""],DataFunction:[1,1,1,""],DataFunctionError:[1,3,1,""],Domain:[1,1,1,""],DomainError:[1,3,1,""],Geometry:[1,1,1,""],GeometryAll:[1,1,1,""],GeometryError:[1,3,1,""],GeometryExterior:[1,1,1,""],GeometryInterior:[1,1,1,""],InitialCondition:[1,1,1,""],InitialConditionError:[1,3,1,""],KDTree:[1,1,1,""],Model:[1,1,1,""],ModelError:[1,3,1,""],OrderedDict:[1,1,1,""],Parameter:[1,1,1,""],ParameterError:[1,3,1,""],PlaceInitialCondition:[1,1,1,""],Reaction:[1,1,1,""],ReactionError:[1,3,1,""],Result:[1,1,1,""],ResultError:[1,3,1,""],ScatterInitialCondition:[1,1,1,""],SimulationError:[1,3,1,""],SimulationTimeout:[1,3,1,""],Species:[1,1,1,""],SpeciesError:[1,3,1,""],UniformInitialCondition:[1,1,1,""],VTKReader:[1,1,1,""],VTKReaderError:[1,3,1,""],VTKReaderIOError:[1,3,1,""],boundarycondition:[1,0,0,"-"],cleanup:[1,0,0,"-"],cleanup_build_files:[1,5,1,""],cleanup_core_files:[1,5,1,""],cleanup_result_files:[1,5,1,""],cleanup_tempfiles:[1,5,1,""],combinations:[1,1,1,""],datafunction:[1,0,0,"-"],domain:[1,0,0,"-"],geometry:[1,0,0,"-"],init_notebook_mode:[1,5,1,""],initialcondition:[1,0,0,"-"],iplot:[1,5,1,""],model:[1,0,0,"-"],parameter:[1,0,0,"-"],reaction:[1,0,0,"-"],result:[1,0,0,"-"],spatialpyerror:[1,0,0,"-"],species:[1,0,0,"-"],vtkreader:[1,0,0,"-"]},"spatialpy.core.BoundaryCondition":{expression:[1,2,1,""]},"spatialpy.core.DataFunction":{map:[1,2,1,""]},"spatialpy.core.Domain":{add_point:[1,2,1,""],calculate_vol:[1,2,1,""],closest_vertex:[1,2,1,""],compile_prep:[1,2,1,""],coordinates:[1,2,1,""],create_2D_domain:[1,2,1,""],create_3D_domain:[1,2,1,""],distance_between_2_vertices:[1,2,1,""],fill_with_particles:[1,2,1,""],find_boundary_points:[1,2,1,""],find_h:[1,2,1,""],get_bounding_box:[1,2,1,""],get_domain_size:[1,2,1,""],get_num_voxels:[1,2,1,""],get_type_def:[1,2,1,""],get_vol:[1,2,1,""],import_meshio_object:[1,2,1,""],plot_types:[1,2,1,""],read_msh_file:[1,2,1,""],read_stochss_domain:[1,2,1,""],read_stochss_subdomain_file:[1,2,1,""],read_xml_mesh:[1,2,1,""],set_properties:[1,2,1,""]},"spatialpy.core.Geometry":{inside:[1,2,1,""]},"spatialpy.core.GeometryAll":{inside:[1,2,1,""]},"spatialpy.core.GeometryExterior":{inside:[1,2,1,""]},"spatialpy.core.GeometryInterior":{inside:[1,2,1,""]},"spatialpy.core.InitialCondition":{apply:[1,2,1,""]},"spatialpy.core.KDTree":{count_neighbors:[1,2,1,""],innernode:[1,1,1,""],leafnode:[1,1,1,""],node:[1,1,1,""],query:[1,2,1,""],query_ball_point:[1,2,1,""],query_ball_tree:[1,2,1,""],query_pairs:[1,2,1,""],sparse_distance_matrix:[1,2,1,""]},"spatialpy.core.Model":{add_boundary_condition:[1,2,1,""],add_data_function:[1,2,1,""],add_domain:[1,2,1,""],add_initial_condition:[1,2,1,""],add_parameter:[1,2,1,""],add_reaction:[1,2,1,""],add_species:[1,2,1,""],compile_prep:[1,2,1,""],delete_all_parameters:[1,2,1,""],delete_all_reactions:[1,2,1,""],delete_all_species:[1,2,1,""],delete_parameter:[1,2,1,""],delete_reaction:[1,2,1,""],delete_species:[1,2,1,""],get_all_parameters:[1,2,1,""],get_all_reactions:[1,2,1,""],get_all_species:[1,2,1,""],get_num_reactions:[1,2,1,""],get_num_species:[1,2,1,""],get_parameter:[1,2,1,""],get_reaction:[1,2,1,""],get_species:[1,2,1,""],reserved_names:[1,4,1,""],run:[1,2,1,""],sanitized_data_function_names:[1,2,1,""],sanitized_parameter_names:[1,2,1,""],sanitized_species_names:[1,2,1,""],set_timesteps:[1,2,1,""],special_characters:[1,4,1,""],timespan:[1,2,1,""],update_namespace:[1,2,1,""]},"spatialpy.core.OrderedDict":{clear:[1,2,1,""],copy:[1,2,1,""],fromkeys:[1,2,1,""],items:[1,2,1,""],keys:[1,2,1,""],move_to_end:[1,2,1,""],pop:[1,2,1,""],popitem:[1,2,1,""],setdefault:[1,2,1,""],update:[1,2,1,""],values:[1,2,1,""]},"spatialpy.core.PlaceInitialCondition":{apply:[1,2,1,""]},"spatialpy.core.Reaction":{add_product:[1,2,1,""],add_reactant:[1,2,1,""],annotate:[1,2,1,""],initialize:[1,2,1,""]},"spatialpy.core.Result":{export_to_csv:[1,2,1,""],get_property:[1,2,1,""],get_species:[1,2,1,""],get_timespan:[1,2,1,""],plot_property:[1,2,1,""],plot_species:[1,2,1,""],read_step:[1,2,1,""]},"spatialpy.core.ScatterInitialCondition":{apply:[1,2,1,""]},"spatialpy.core.Species":{set_diffusion_coefficient:[1,2,1,""]},"spatialpy.core.UniformInitialCondition":{apply:[1,2,1,""]},"spatialpy.core.VTKReader":{get_array_name:[1,2,1,""],get_arrays:[1,2,1,""],get_num_points:[1,2,1,""],get_points:[1,2,1,""],read_file:[1,2,1,""],set_filename:[1,2,1,""]},"spatialpy.core.boundarycondition":{BoundaryCondition:[1,1,1,""]},"spatialpy.core.boundarycondition.BoundaryCondition":{expression:[1,2,1,""]},"spatialpy.core.cleanup":{cleanup_build_files:[1,5,1,""],cleanup_core_files:[1,5,1,""],cleanup_result_files:[1,5,1,""],cleanup_tempfiles:[1,5,1,""]},"spatialpy.core.datafunction":{DataFunction:[1,1,1,""]},"spatialpy.core.datafunction.DataFunction":{map:[1,2,1,""]},"spatialpy.core.domain":{Domain:[1,1,1,""]},"spatialpy.core.domain.Domain":{add_point:[1,2,1,""],calculate_vol:[1,2,1,""],closest_vertex:[1,2,1,""],compile_prep:[1,2,1,""],coordinates:[1,2,1,""],create_2D_domain:[1,2,1,""],create_3D_domain:[1,2,1,""],distance_between_2_vertices:[1,2,1,""],fill_with_particles:[1,2,1,""],find_boundary_points:[1,2,1,""],find_h:[1,2,1,""],get_bounding_box:[1,2,1,""],get_domain_size:[1,2,1,""],get_num_voxels:[1,2,1,""],get_type_def:[1,2,1,""],get_vol:[1,2,1,""],import_meshio_object:[1,2,1,""],plot_types:[1,2,1,""],read_msh_file:[1,2,1,""],read_stochss_domain:[1,2,1,""],read_stochss_subdomain_file:[1,2,1,""],read_xml_mesh:[1,2,1,""],set_properties:[1,2,1,""]},"spatialpy.core.geometry":{Geometry:[1,1,1,""],GeometryAll:[1,1,1,""],GeometryExterior:[1,1,1,""],GeometryInterior:[1,1,1,""]},"spatialpy.core.geometry.Geometry":{inside:[1,2,1,""]},"spatialpy.core.geometry.GeometryAll":{inside:[1,2,1,""]},"spatialpy.core.geometry.GeometryExterior":{inside:[1,2,1,""]},"spatialpy.core.geometry.GeometryInterior":{inside:[1,2,1,""]},"spatialpy.core.initialcondition":{InitialCondition:[1,1,1,""],PlaceInitialCondition:[1,1,1,""],ScatterInitialCondition:[1,1,1,""],UniformInitialCondition:[1,1,1,""]},"spatialpy.core.initialcondition.InitialCondition":{apply:[1,2,1,""]},"spatialpy.core.initialcondition.PlaceInitialCondition":{apply:[1,2,1,""]},"spatialpy.core.initialcondition.ScatterInitialCondition":{apply:[1,2,1,""]},"spatialpy.core.initialcondition.UniformInitialCondition":{apply:[1,2,1,""]},"spatialpy.core.model":{Model:[1,1,1,""],export_StochSS:[1,5,1,""]},"spatialpy.core.model.Model":{add_boundary_condition:[1,2,1,""],add_data_function:[1,2,1,""],add_domain:[1,2,1,""],add_initial_condition:[1,2,1,""],add_parameter:[1,2,1,""],add_reaction:[1,2,1,""],add_species:[1,2,1,""],compile_prep:[1,2,1,""],delete_all_parameters:[1,2,1,""],delete_all_reactions:[1,2,1,""],delete_all_species:[1,2,1,""],delete_parameter:[1,2,1,""],delete_reaction:[1,2,1,""],delete_species:[1,2,1,""],get_all_parameters:[1,2,1,""],get_all_reactions:[1,2,1,""],get_all_species:[1,2,1,""],get_num_reactions:[1,2,1,""],get_num_species:[1,2,1,""],get_parameter:[1,2,1,""],get_reaction:[1,2,1,""],get_species:[1,2,1,""],reserved_names:[1,4,1,""],run:[1,2,1,""],sanitized_data_function_names:[1,2,1,""],sanitized_parameter_names:[1,2,1,""],sanitized_species_names:[1,2,1,""],set_timesteps:[1,2,1,""],special_characters:[1,4,1,""],timespan:[1,2,1,""],update_namespace:[1,2,1,""]},"spatialpy.core.parameter":{Parameter:[1,1,1,""]},"spatialpy.core.reaction":{Reaction:[1,1,1,""]},"spatialpy.core.reaction.Reaction":{add_product:[1,2,1,""],add_reactant:[1,2,1,""],annotate:[1,2,1,""],initialize:[1,2,1,""]},"spatialpy.core.result":{Result:[1,1,1,""]},"spatialpy.core.result.Result":{export_to_csv:[1,2,1,""],get_property:[1,2,1,""],get_species:[1,2,1,""],get_timespan:[1,2,1,""],plot_property:[1,2,1,""],plot_species:[1,2,1,""],read_step:[1,2,1,""]},"spatialpy.core.spatialpyerror":{BoundaryConditionError:[1,3,1,""],DataFunctionError:[1,3,1,""],DomainError:[1,3,1,""],GeometryError:[1,3,1,""],InitialConditionError:[1,3,1,""],ModelError:[1,3,1,""],ParameterError:[1,3,1,""],ReactionError:[1,3,1,""],ResultError:[1,3,1,""],SimulationError:[1,3,1,""],SimulationTimeout:[1,3,1,""],SpeciesError:[1,3,1,""],VTKReaderError:[1,3,1,""],VTKReaderIOError:[1,3,1,""]},"spatialpy.core.species":{Species:[1,1,1,""]},"spatialpy.core.species.Species":{set_diffusion_coefficient:[1,2,1,""]},"spatialpy.core.vtkreader":{VTKReader:[1,1,1,""]},"spatialpy.core.vtkreader.VTKReader":{get_array_name:[1,2,1,""],get_arrays:[1,2,1,""],get_num_points:[1,2,1,""],get_points:[1,2,1,""],read_file:[1,2,1,""],set_filename:[1,2,1,""]},"spatialpy.solvers":{build_expression:[2,0,0,"-"],solver:[2,0,0,"-"]},"spatialpy.solvers.build_expression":{BuildExpression:[2,1,1,""],CppConverter:[2,1,1,""],ExpressionConverter:[2,1,1,""],ExpressionResults:[2,1,1,""],PythonConverter:[2,1,1,""]},"spatialpy.solvers.build_expression.BuildExpression":{ValidationVisitor:[2,1,1,""],getexpr_cpp:[2,2,1,""],getexpr_python:[2,2,1,""],map_operator:[2,2,1,""],operator_map:[2,4,1,""],validate:[2,2,1,""],with_blacklist:[2,2,1,""],with_namespace:[2,2,1,""]},"spatialpy.solvers.build_expression.BuildExpression.ValidationVisitor":{visit_Assign:[2,2,1,""],visit_BinOp:[2,2,1,""],visit_BoolOp:[2,2,1,""],visit_Call:[2,2,1,""],visit_Compare:[2,2,1,""],visit_Name:[2,2,1,""],visit_UnaryOp:[2,2,1,""]},"spatialpy.solvers.build_expression.CppConverter":{CppExpressionTransformer:[2,1,1,""],get_str:[2,2,1,""],visit_And:[2,2,1,""],visit_Or:[2,2,1,""]},"spatialpy.solvers.build_expression.CppConverter.CppExpressionTransformer":{visit_BinOp:[2,2,1,""]},"spatialpy.solvers.build_expression.ExpressionConverter":{convert_str:[2,2,1,""],get_str:[2,2,1,""],parse_comparison:[2,2,1,""],parse_logical:[2,2,1,""],parse_operator:[2,2,1,""],visit_Add:[2,2,1,""],visit_BinOp:[2,2,1,""],visit_BoolOp:[2,2,1,""],visit_Bytes:[2,2,1,""],visit_Call:[2,2,1,""],visit_Compare:[2,2,1,""],visit_Constant:[2,2,1,""],visit_Div:[2,2,1,""],visit_Ellipsis:[2,2,1,""],visit_Eq:[2,2,1,""],visit_Gt:[2,2,1,""],visit_GtE:[2,2,1,""],visit_Lt:[2,2,1,""],visit_LtE:[2,2,1,""],visit_Mult:[2,2,1,""],visit_Name:[2,2,1,""],visit_NameConstant:[2,2,1,""],visit_NotEq:[2,2,1,""],visit_Num:[2,2,1,""],visit_Pow:[2,2,1,""],visit_Str:[2,2,1,""],visit_Sub:[2,2,1,""],visit_USub:[2,2,1,""],visit_UnaryOp:[2,2,1,""]},"spatialpy.solvers.build_expression.PythonConverter":{visit_And:[2,2,1,""],visit_Or:[2,2,1,""]},"spatialpy.solvers.solver":{Solver:[2,1,1,""]},"spatialpy.solvers.solver.Solver":{compile:[2,2,1,""],run:[2,2,1,""]},"spatialpy.stochss":{stochss_export:[3,0,0,"-"]},"spatialpy.stochss.stochss_export":{"export":[3,5,1,""]},spatialpy:{core:[1,0,0,"-"],solvers:[2,0,0,"-"],stochss:[3,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","exception","Python exception"],"4":["py","attribute","Python attribute"],"5":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:exception","4":"py:attribute","5":"py:function"},terms:{"0":[1,2],"04":1,"1":[1,2],"10":1,"10000":1,"11":1,"13":1,"14142136":1,"15":1,"1999":1,"1d":1,"2":1,"20":1,"2000":1,"2015":1,"2019":[0,1,2,3],"2022":[0,1,2,3],"2d":1,"2e9":1,"2r01eb014877":4,"3":[0,1,2,3,4],"300":1,"3d":[1,4],"4":1,"5":1,"500":1,"6":1,"600":1,"7":1,"8":1,"800":1,"9":1,"abstract":[1,2],"byte":2,"case":1,"class":[1,2],"default":1,"do":1,"export":[1,3],"float":1,"function":[1,2],"import":1,"int":[1,2],"long":1,"new":[1,2],"public":[0,1,2,3,4],"return":[1,2,3],"short":4,"static":[1,4],"super":2,"switch":1,"true":[1,2,3],A:[0,1,2,3,4],And:2,By:[1,2],FOR:[0,1,2,3],For:[1,4],If:[0,1,2,3,4],In:1,It:1,No:1,Not:2,Or:2,The:[1,2,4],These:1,Will:1,_ast:2,abl:1,about:1,absolut:1,acceler:1,accept:2,across:1,action:1,ad:[1,2],add:[1,2],add_boundary_condit:1,add_data_funct:1,add_domain:1,add_initial_condit:1,add_paramet:1,add_point:1,add_product:1,add_react:1,add_speci:1,addit:[1,2],addition:[1,2],addtion:[1,2],advect:[0,1,2,3,4],against:[1,2],algorithm:[1,4],align:1,all:[1,2],allow:2,along:[0,1,2,3],alreadi:1,also:[1,2,4],alwai:2,amount:1,an:[1,2,4],ani:[0,1,2,3,4],anim:1,animation_attribut:1,animation_opt:1,annot:1,append:2,appli:1,approxim:1,ar:[1,2],argument:1,arrai:1,arraid:1,array_lik:1,articl:4,artifici:1,asarrai:1,ascii:1,assign:[1,2],associ:1,assum:2,ast:2,attempt:1,attribut:1,author:4,auto_plai:1,automat:[1,2],autorang:1,avail:[1,2,4],averag:1,axi:1,background:1,bare:2,base:[1,2,4],bass:1,becaus:1,becom:1,been:1,begin:1,behavior:2,best:1,between:[1,2],binari:1,binboolopop:2,binop:2,biochem:1,bitand:2,bitor:2,bitxor:2,blacklist:2,blob:1,blue:1,bodi:1,bogu:1,bool:[1,2,3],boolop:2,both:[1,4],bottom:1,bound:1,bound_cond:1,boundari:1,boundarycondit:0,boundaryconditionerror:1,box:1,branch:1,brian:4,browser:1,brute:1,bugn:1,build:[1,2,4],build_dir:1,build_express:0,buildexpress:2,built:2,bulk:1,bupu:1,bvf_phi:1,c0:1,c:[0,1,2,3],c_:1,calcul:1,calculate_vol:1,call:[1,2],can:[0,1,2,3,4],caus:2,cdn:1,cell:1,charact:1,chart:1,check:[1,2],chemic:1,choos:1,chosen:1,circumradiu:1,ckdtree:1,classmethod:[1,2],cleanup:0,cleanup_build_fil:1,cleanup_core_fil:1,cleanup_result_fil:1,cleanup_tempfil:1,clear:1,close:1,closest:1,closest_vertex:1,cloud:1,code:[1,4],coeffic:1,coeffici:1,collabor:1,colormap:1,column:1,com:[1,4],combin:1,compar:[1,2],comparison:2,compil:[1,2],compile_prep:1,comput:1,conain:1,conatain:1,concentr:1,condit:[1,2],config:1,connect:1,consid:1,consol:2,constant:[1,2],construct:1,constructor:2,constuct:1,contact:4,contain:[1,2],content:4,context:2,contian:1,continu:4,convers:2,convert:[1,2,3],convert_str:2,convet:2,coodin:1,coordin:1,copi:[0,1,2,3],copy_numb:1,copyright:[0,1,2,3],core:[0,2,3,4],corner:1,correl:1,correspond:[1,2],could:[1,2],count:1,count_neighbor:1,coupl:1,cppconvert:2,cppexpressiontransform:2,cradded:1,creat:[1,2],create_2d_domain:1,create_3d_domain:1,csv:1,current:[1,2],custom:1,cylind:4,cython:1,d:1,data:[1,2],data_funct:1,datafunct:0,datafunctionerror:1,debug:[1,2],debug_level:[1,2],debugg:2,defer:1,defin:[1,2],definit:1,delete_all_paramet:1,delete_all_react:1,delete_all_speci:1,delete_paramet:1,delete_react:1,delete_speci:1,deltai:1,deltax:1,deltaz:1,demo:4,densiti:1,dependency_graph:1,describ:[1,4],descript:1,detail:[0,1,2,3],determinist:[0,1,2,3,4],determinst:1,develop:[0,1,2,3,4],diamet:1,dict:[1,2,3],dictionari:[1,2],differ:[1,2],diffus:[0,1,2,3,4],diffusion_coeffici:1,dimens:1,dimension:1,direct:1,directli:[1,4],directori:1,displai:1,dissip:4,distanc:1,distance_between_2_vertic:1,distance_upper_bound:1,distribut:[0,1,2,3],div:2,doe:1,doesn:1,dok_matrix:1,dolfin:1,dom:1,domain:[0,4],domainerror:1,domn:1,download:1,dr:4,draw:1,drawert:4,drawn:1,dtype:1,duplic:2,durat:1,dure:[1,2],dynam:4,e:1,each:1,edg:1,edit:1,effect:1,effici:1,either:1,element:1,ellipsi:2,els:[1,3],embed:4,empti:2,end:1,engin:1,ensur:[1,2],enterpris:1,entir:1,entireti:1,ep:1,eq:2,equival:2,error:1,estim:1,euclidean:1,evalu:1,evaul:1,even:[0,1,2,3],evenli:1,exampl:1,exce:1,exceed:[1,2],except:1,execut:[1,2],exist:1,expect:[1,2],explor:1,export_stochss:1,export_to_csv:1,expres:2,express:[1,2],expressionconvert:2,expressionresult:2,extens:1,extra:1,f:1,f_durat:1,fail:2,fals:[1,2,3],far:2,faster:1,featur:4,fenic:1,fifo:1,figur:1,figure_or_data:1,file:[1,3],filenam:[1,3],fill:[1,4],fill_with_particl:1,find:[1,4],find_boundary_point:1,find_h:1,first:[1,2],fit:[0,1,2,3],fix:1,flag:[1,2],flatten:1,flight:2,floordiv:2,flow:4,fluid:[1,4],folder_nam:1,follow:[1,2],forc:1,form:[1,4],format:1,forward:2,found:[1,2,4],foundat:[0,1,2,3],fraction:1,frame:[1,4],free:[0,1,2,3],frequenc:1,from:[1,2],fromkei:1,fund:4,further:1,furthest:1,g:1,gain:1,gdbgui:2,gener:[0,1,2,3,4],geometr:1,geometri:0,geometry_ivar:1,geometryal:1,geometryerror:1,geometryexterior:1,geometryinterior:1,get:[1,2],get_all_paramet:1,get_all_react:1,get_all_speci:1,get_arrai:1,get_array_nam:1,get_bounding_box:1,get_domain_s:1,get_num_point:1,get_num_react:1,get_num_speci:1,get_num_voxel:1,get_paramet:1,get_point:1,get_properti:1,get_react:1,get_speci:1,get_str:2,get_timespan:1,get_type_def:1,get_vol:1,getexpr_:2,getexpr_cpp:2,getexpr_python:2,github:[1,4],given:[1,2],gmsh:1,gnbu:1,gnu:[0,1,2,3,4],gprof:2,grai:1,grant:4,granular:2,graph:1,graph_obj:1,graph_refer:1,graviti:[1,4],greater:1,greatest:1,green:1,grei:1,gt:2,gte:2,guarante:1,h:1,ha:[1,4],hand:2,handl:2,happen:[1,2],hasn:[1,2],have:[0,1,2,3],height:1,held:1,help:1,here:[1,4],high:1,higher:1,highest:1,hit:1,hope:[0,1,2,3],how:[1,2,4],http:[0,1,2,3,4],hybrid:4,hyperrectangl:1,i:1,id:1,idea:1,ideal:2,idempot:1,identifi:[1,2],idx:1,ignor:1,imag:1,image_height:1,image_width:1,immobil:1,implemenet:1,implement:[1,2],impli:[0,1,2,3],import_meshio_object:1,imposs:2,inch:1,incid:1,includ:1,included_types_list:1,incompat:1,increas:1,increment:2,indec:1,indeci:1,index:[1,4],indic:[1,2],inf:1,infer:2,infin:1,infinit:1,info:1,inform:[1,2,4],inherit:2,init_cond:1,init_notebook_mod:1,initailcondit:1,initi:1,initialcondit:0,initialconditionerror:1,inlin:1,innernod:1,input:1,insert:1,insid:1,instanc:[1,2],instead:1,integ:1,intend:4,intern:1,internet:1,interv:1,invalid:[1,2],invalid_:2,invalid_nam:2,invalid_oper:2,io:1,iplot:1,ipython:1,is_valid:2,item:[1,2],iter:1,its:1,j:1,jacob:4,jet:1,jpeg:1,js:1,json:1,jupyt:1,k:1,kd:1,kdtree:1,kei:[1,2],keyerror:1,keyword:1,kill:1,kth:1,kwarg:1,lack:1,lagrangian:4,larg:1,larger:1,last:[1,2],later:[1,2],latest:4,layout:1,leafnod:1,leafsiz:1,learn:1,leav:1,left:2,legaci:1,length:1,less:1,level:[1,2],li:4,librari:1,licens:[0,1,2,3,4],lifo:1,like:1,limit:1,link:1,link_text:1,list:[1,2],listofparamet:1,listofreact:1,listofspeci:1,listoftyp:1,load:1,local:1,locat:1,logic:2,look:1,lookup:1,lower:1,lowest:1,lshift:2,lt:2,lte:2,ly:1,m:1,mai:1,main:4,make:1,manag:2,maneewongvatana:1,manhattan:1,mani:[1,2],map:[1,2],map_oper:2,margin:1,mark:1,mass:1,master:1,mathemat:[1,2],matmult:2,matplotlib:1,matrix:1,max:1,max_dist:1,maximum:[1,2],mean:1,measur:1,meet:1,megabyt:1,merchant:[0,1,2,3],mesh:1,mesh_obj:1,meshio:1,messag:1,meta:1,method:[1,2],mgrid:1,midpoint:1,min:1,minim:1,minimum:1,minkowski:1,miss:1,mod:2,model:[0,2,3,4],modelerror:1,modelname_mesh:1,modelname_species_:1,modifi:[0,1,2,3],modul:4,moor:1,more:[0,1,2,3,4],most:[1,2],mount:1,move:1,move_to_end:1,movement:1,msh:1,much:1,mult:2,multipl:[1,2],must:1,n:1,name:[1,2],nameconst:2,namespac:[1,2],ndarrai:1,nearbi:1,nearby_point:1,nearer:1,nearest:1,necessarili:1,need:[1,4],neg:1,neighbor:1,nih:4,node:[1,2],nodetransform:2,nodevisitor:2,non:1,none:[1,2,3],nonneg:1,norm:1,notat:1,note:[1,2],notebook:[1,4],noteq:2,np:1,nsm:4,nu:1,num:2,num_step:1,number:[1,2],number_of_thread:[1,2],number_of_trajectori:[1,2],numpi:1,numpoint:1,nx:1,ny:1,nz:1,o:1,obj:1,object:[1,2],od:1,off:1,offlin:1,omit:1,on_boundari:1,one:[1,2],onli:[1,2],onlin:1,open:1,oper:2,operator_map:2,option:1,orang:1,order:1,ordereddict:1,org:[0,1,2,3],origin:2,orrd:1,other:[1,2],otherwis:[1,2],our:4,out:[1,4],outdat:1,output:[1,2],output_interv:1,over:1,overflow:1,overrid:2,overridden:1,p0:1,p:1,p_ndx:1,packag:4,page:[1,4],pair:1,param:1,param_nam:1,param_obj:1,paramet:[0,2,3],parametererror:1,paramt:1,parent:1,pars:2,parse_comparison:2,parse_log:2,parse_oper:2,part:1,partcil:1,particip:1,particl:[1,4],particular:[0,1,2,3],pass:[1,2],path:[1,3],pdf:1,perform:1,petzold:4,physic:4,pii:4,pixel:1,place:1,placeinitialcondit:1,platform:1,pleas:[1,4],plot:1,plot_imag:1,plot_properti:1,plot_speci:1,plot_typ:1,plotli:1,plotly3:1,plt:1,pname:1,png:1,point:1,pop:[1,2],popitem:1,popul:1,posit:1,positon:1,pow:2,pre:2,predict:1,preper:1,present:[1,2],pressur:1,print:[1,2],problem:[0,1,2,3,4],process:2,produc:1,product:1,profil:[1,2],program:[0,1,2,3],project:4,propens:1,propensity_funct:1,properti:[1,2],property_nam:1,proprti:1,prove:4,provid:[1,2,4],prune:1,pt:1,publish:[0,1,2,3],pubu:1,pubugn:1,pull:1,purd:1,purpl:1,purpos:[0,1,2,3],put:1,px:1,py:1,pypi:4,pyplot:1,python:[0,1,2,3,4],pythonconvert:2,pyurdm:4,queri:1,query_ball_point:1,query_ball_tre:1,query_pair:1,question:4,quick:1,r:1,radii:1,radiu:1,rais:[1,2],random:[1,2],randomli:1,rang:1,rapidli:1,rate:1,rather:1,ravel:1,raw:1,rdme:4,rdpu:1,re:1,reac:1,reach:1,react_nam:1,react_obj:1,reactant:1,reaction:[0,2,3,4],reactionerror:1,read:1,read_fil:1,read_msh_fil:1,read_step:1,read_stochss_domain:1,read_stochss_subdomain_fil:1,read_xml_mesh:1,reader:1,real:1,reason:1,receiv:[0,1,2,3],recent:[1,2],recurs:1,red:1,redistribut:[0,1,2,3],refer:1,referenc:1,regardless:1,region:1,regist:4,registr:4,reject:2,rememb:1,remov:1,replac:4,repres:1,represent:[1,2],request:1,requir:1,reserved_nam:1,resolut:1,restrict:1,restrict_to:1,result:[0,2],result_dir:1,resulterror:1,retreiv:1,retriev:1,return_plotly_figur:1,return_stochss_model:[1,3],rho0:1,rho:1,right:[1,2],rname:1,rshift:2,rtype:2,rule:1,run:[1,2],runtimeerror:1,rvalu:2,s0021999118307101:4,s:[1,4],same:1,sampl:1,sanit:2,sanitized_data_function_nam:1,sanitized_parameter_nam:1,sanitized_species_nam:1,save:1,scalar:1,scatter:1,scatterinitialcondit:1,scienc:[1,4],sciencedirect:4,scipi:1,sdpd:[1,4],search:[1,4],second:[1,2],see:[0,1,2,3,4],seed:[1,2],self:[1,2],separ:1,sequenc:1,seri:[1,2],set:[1,2],set_diffusion_coeffici:1,set_filenam:1,set_properti:1,set_timestep:1,setdefault:1,setrecursionlimit:1,setter:1,shallow:1,shape:1,should:[0,1,2,3],show:1,show_link:1,significantli:1,simlat:1,simplifi:1,simul:[0,1,2,3,4],simulationerror:[1,2],simulationtimeout:[1,2],sinc:1,singl:[1,2],size:1,slide:1,smaller:1,smdl:1,smooth:4,sname:1,so:[1,2],softwar:[0,1,2,3,4],solver:[0,1,4],some:1,sort:1,sound:1,sourc:[1,2,3,4],space:1,spactialpi:2,span:1,spars:1,sparse_distance_matrix:1,spatial:[0,1,2,3,4],spatialpy_build:1,spatialpy_model:1,spatialpy_result:1,spatialpyerror:0,spatialpysolv:1,speci:0,special_charact:1,species_nam:1,species_object:1,specieserror:1,specif:1,specifi:1,speed:1,split:1,split_dim:1,src:1,ssa:1,sssa:4,start:[1,2,4],statement:2,statist:1,step:1,step_num:1,stochast:[0,1,2,3,4],stochss:[0,1,4],stochss_export:0,stoichiometr:1,stoichiometri:1,store:1,str:[1,2,3],string:[1,2],struct:2,structur:1,style:1,sub:2,subclass:[1,2],subdomain:1,submodul:0,subpackag:4,substanti:1,substitut:2,success:1,suggest:4,sum:1,suppli:1,support:[1,4],sure:1,svg:1,sy:1,symbol:2,syntax:2,syntaxerror:2,system:[1,4],t:[1,2],t_durat:1,t_ndx:1,t_ndx_list:1,t_val:1,tag:1,take:1,target:[1,2],tempfil:1,term:[0,1,2,3],tetrahedron:1,text:1,than:1,them:1,thi:[0,1,2,3,4],thin:1,those:1,thread:[1,2],time:[1,2],time_span:1,timeout:[1,2],timepoint:1,timespan:1,timestep:1,timestep_s:1,titl:1,token:2,total:1,toth:1,trace:1,tracker:4,trajectori:[1,2],transit:1,travers:1,tree:[1,2],triangl:1,trigger:2,tspan:1,tupl:1,two:[1,2],txt:1,type:[1,2,3],type_id:1,u0:1,unabl:1,unaryop:2,under:[0,1,2,3,4],uniform:1,uniforminitialcondit:1,union:1,univers:2,unnecessari:1,up:1,updat:1,update_namespac:1,upload:1,upon:1,upper:1,urdm:1,us:[0,1,2,3,4],use_matplotlib:1,user:[1,4],usual:1,usub:2,util:1,v1:1,v:1,valid:[1,2],validationvisitor:2,valu:[1,2],vari:1,veloc:1,verbos:2,veri:1,version:[0,1,2,3,4],vertex:1,vertic:1,view:1,viewer:1,viscos:1,visit:2,visit_add:2,visit_and:2,visit_assign:2,visit_binop:2,visit_boolop:2,visit_byt:2,visit_cal:2,visit_compar:2,visit_const:2,visit_div:2,visit_ellipsi:2,visit_eq:2,visit_gt:2,visit_lt:2,visit_mult:2,visit_nam:2,visit_nameconst:2,visit_noteq:2,visit_num:2,visit_or:2,visit_pow:2,visit_str:2,visit_sub:2,visit_unaryop:2,visit_usub:2,visitor:2,vol:1,volum:1,voxel:1,vtk:1,vtkreader:0,vtkreadererror:1,vtkreaderioerror:1,wa:1,want:1,warranti:[0,1,2,3],we:[1,4],web:1,webp:1,weir:4,well:2,were:[1,2],what:2,when:[1,2],where:1,whether:[1,2,3],which:[1,2],whose:1,width:1,with_blacklist:2,with_namespac:2,within:1,without:[0,1,2,3],work:1,wp:1,write:1,write_imag:1,written:1,www:[0,1,2,3,4],x1:1,x2:1,x:1,xaxi:1,xlim:1,xmax:1,xmin:1,xml:1,y:1,yaxi:1,yet:1,yi:4,ylgn:1,ylgnbu:1,ylim:1,ylorbr:1,ylorrd:1,ymax:1,ymin:1,you:[0,1,2,3,4],your:[1,4],z:1,zero:1,zeroth:1,zip:1,zlim:1,zmax:1,zmin:1},titles:["spatialpy package","spatialpy.core package","spatialpy.solvers package","spatialpy.stochss package","Documentation for SpatialPy 1.0"],titleterms:{"0":4,"1":4,api:4,boundarycondit:1,build_express:2,cleanup:1,content:[0,1,2,3],copi:4,core:1,datafunct:1,document:4,domain:1,exampl:4,geometri:1,get:4,indic:4,initialcondit:1,issu:4,model:1,modul:[0,1,2,3],packag:[0,1,2,3],paramet:1,reaction:1,refer:4,report:4,result:1,solver:2,spatialpi:[0,1,2,3,4],spatialpyerror:1,speci:1,stochss:3,stochss_export:3,submodul:[1,2,3],subpackag:0,tabl:4,vtkreader:1}}) \ No newline at end of file +Search.setIndex({docnames:["classes/spatialpy","classes/spatialpy.core","classes/spatialpy.solvers","classes/spatialpy.stochss","index"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.todo":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["classes/spatialpy.rst","classes/spatialpy.core.rst","classes/spatialpy.solvers.rst","classes/spatialpy.stochss.rst","index.rst"],objects:{"":[[0,0,0,"-","spatialpy"]],"spatialpy.core":[[1,1,1,"","BoundaryCondition"],[1,3,1,"","BoundaryConditionError"],[1,1,1,"","DataFunction"],[1,3,1,"","DataFunctionError"],[1,1,1,"","Domain"],[1,3,1,"","DomainError"],[1,1,1,"","Geometry"],[1,1,1,"","GeometryAll"],[1,3,1,"","GeometryError"],[1,1,1,"","GeometryExterior"],[1,1,1,"","GeometryInterior"],[1,1,1,"","InitialCondition"],[1,3,1,"","InitialConditionError"],[1,1,1,"","KDTree"],[1,1,1,"","Model"],[1,3,1,"","ModelError"],[1,1,1,"","OrderedDict"],[1,1,1,"","Parameter"],[1,3,1,"","ParameterError"],[1,1,1,"","PlaceInitialCondition"],[1,1,1,"","Reaction"],[1,3,1,"","ReactionError"],[1,1,1,"","Result"],[1,3,1,"","ResultError"],[1,1,1,"","ScatterInitialCondition"],[1,3,1,"","SimulationError"],[1,3,1,"","SimulationTimeout"],[1,1,1,"","Species"],[1,3,1,"","SpeciesError"],[1,1,1,"","UniformInitialCondition"],[1,1,1,"","VTKReader"],[1,3,1,"","VTKReaderError"],[1,3,1,"","VTKReaderIOError"],[1,1,1,"","Visualization"],[1,3,1,"","VisualizationError"],[1,0,0,"-","boundarycondition"],[1,0,0,"-","cleanup"],[1,6,1,"","cleanup_build_files"],[1,6,1,"","cleanup_core_files"],[1,6,1,"","cleanup_result_files"],[1,6,1,"","cleanup_tempfiles"],[1,1,1,"","combinations"],[1,0,0,"-","datafunction"],[1,0,0,"-","domain"],[1,0,0,"-","geometry"],[1,6,1,"","init_notebook_mode"],[1,0,0,"-","initialcondition"],[1,6,1,"","iplot"],[1,0,0,"-","model"],[1,0,0,"-","parameter"],[1,0,0,"-","reaction"],[1,0,0,"-","result"],[1,0,0,"-","spatialpyerror"],[1,0,0,"-","species"],[1,0,0,"-","visualization"],[1,0,0,"-","vtkreader"]],"spatialpy.core.BoundaryCondition":[[1,2,1,"","expression"]],"spatialpy.core.DataFunction":[[1,2,1,"","map"]],"spatialpy.core.Domain":[[1,2,1,"","add_point"],[1,2,1,"","calculate_vol"],[1,2,1,"","closest_vertex"],[1,2,1,"","compile_prep"],[1,2,1,"","coordinates"],[1,2,1,"","create_2D_domain"],[1,2,1,"","create_3D_domain"],[1,2,1,"","distance_between_2_vertices"],[1,2,1,"","fill_with_particles"],[1,2,1,"","find_boundary_points"],[1,2,1,"","find_h"],[1,2,1,"","get_bounding_box"],[1,2,1,"","get_domain_size"],[1,2,1,"","get_num_voxels"],[1,2,1,"","get_type_def"],[1,2,1,"","get_vol"],[1,2,1,"","import_meshio_object"],[1,2,1,"","plot_types"],[1,2,1,"","read_msh_file"],[1,2,1,"","read_stochss_domain"],[1,2,1,"","read_stochss_subdomain_file"],[1,2,1,"","read_xml_mesh"],[1,2,1,"","set_properties"]],"spatialpy.core.Geometry":[[1,2,1,"","inside"]],"spatialpy.core.GeometryAll":[[1,2,1,"","inside"]],"spatialpy.core.GeometryExterior":[[1,2,1,"","inside"]],"spatialpy.core.GeometryInterior":[[1,2,1,"","inside"]],"spatialpy.core.InitialCondition":[[1,2,1,"","apply"]],"spatialpy.core.KDTree":[[1,2,1,"","count_neighbors"],[1,4,1,"","data"],[1,1,1,"","innernode"],[1,1,1,"","leafnode"],[1,4,1,"","leafsize"],[1,4,1,"","m"],[1,4,1,"","maxes"],[1,4,1,"","mins"],[1,4,1,"","n"],[1,1,1,"","node"],[1,2,1,"","query"],[1,2,1,"","query_ball_point"],[1,2,1,"","query_ball_tree"],[1,2,1,"","query_pairs"],[1,4,1,"","size"],[1,2,1,"","sparse_distance_matrix"],[1,5,1,"","tree"]],"spatialpy.core.KDTree.innernode":[[1,5,1,"","children"],[1,5,1,"","split"],[1,5,1,"","split_dim"]],"spatialpy.core.KDTree.leafnode":[[1,5,1,"","children"],[1,5,1,"","idx"]],"spatialpy.core.Model":[[1,2,1,"","add_boundary_condition"],[1,2,1,"","add_data_function"],[1,2,1,"","add_domain"],[1,2,1,"","add_initial_condition"],[1,2,1,"","add_parameter"],[1,2,1,"","add_reaction"],[1,2,1,"","add_species"],[1,2,1,"","compile_prep"],[1,2,1,"","delete_all_parameters"],[1,2,1,"","delete_all_reactions"],[1,2,1,"","delete_all_species"],[1,2,1,"","delete_parameter"],[1,2,1,"","delete_reaction"],[1,2,1,"","delete_species"],[1,2,1,"","get_all_parameters"],[1,2,1,"","get_all_reactions"],[1,2,1,"","get_all_species"],[1,2,1,"","get_num_reactions"],[1,2,1,"","get_num_species"],[1,2,1,"","get_parameter"],[1,2,1,"","get_reaction"],[1,2,1,"","get_species"],[1,4,1,"","reserved_names"],[1,2,1,"","run"],[1,2,1,"","sanitized_data_function_names"],[1,2,1,"","sanitized_parameter_names"],[1,2,1,"","sanitized_species_names"],[1,2,1,"","set_timesteps"],[1,4,1,"","special_characters"],[1,2,1,"","timespan"],[1,2,1,"","update_namespace"]],"spatialpy.core.OrderedDict":[[1,2,1,"","clear"],[1,2,1,"","copy"],[1,2,1,"","fromkeys"],[1,2,1,"","items"],[1,2,1,"","keys"],[1,2,1,"","move_to_end"],[1,2,1,"","pop"],[1,2,1,"","popitem"],[1,2,1,"","setdefault"],[1,2,1,"","update"],[1,2,1,"","values"]],"spatialpy.core.PlaceInitialCondition":[[1,2,1,"","apply"]],"spatialpy.core.Reaction":[[1,2,1,"","add_product"],[1,2,1,"","add_reactant"],[1,2,1,"","annotate"],[1,2,1,"","initialize"]],"spatialpy.core.Result":[[1,2,1,"","export_to_csv"],[1,2,1,"","get_property"],[1,2,1,"","get_species"],[1,2,1,"","get_timespan"],[1,2,1,"","plot_property"],[1,2,1,"","plot_species"],[1,2,1,"","read_step"]],"spatialpy.core.ScatterInitialCondition":[[1,2,1,"","apply"]],"spatialpy.core.Species":[[1,2,1,"","set_diffusion_coefficient"]],"spatialpy.core.UniformInitialCondition":[[1,2,1,"","apply"]],"spatialpy.core.VTKReader":[[1,2,1,"","get_array_name"],[1,2,1,"","get_arrays"],[1,2,1,"","get_num_points"],[1,2,1,"","get_points"],[1,2,1,"","read_file"],[1,2,1,"","set_filename"]],"spatialpy.core.Visualization":[[1,4,1,"","MPL_HEIGHT"],[1,4,1,"","MPL_SIZE"],[1,4,1,"","MPL_WIDTH"],[1,2,1,"","plot_scatter"]],"spatialpy.core.boundarycondition":[[1,1,1,"","BoundaryCondition"]],"spatialpy.core.boundarycondition.BoundaryCondition":[[1,2,1,"","expression"]],"spatialpy.core.cleanup":[[1,6,1,"","cleanup_build_files"],[1,6,1,"","cleanup_core_files"],[1,6,1,"","cleanup_result_files"],[1,6,1,"","cleanup_tempfiles"]],"spatialpy.core.datafunction":[[1,1,1,"","DataFunction"]],"spatialpy.core.datafunction.DataFunction":[[1,2,1,"","map"]],"spatialpy.core.domain":[[1,1,1,"","Domain"]],"spatialpy.core.domain.Domain":[[1,2,1,"","add_point"],[1,2,1,"","calculate_vol"],[1,2,1,"","closest_vertex"],[1,2,1,"","compile_prep"],[1,2,1,"","coordinates"],[1,2,1,"","create_2D_domain"],[1,2,1,"","create_3D_domain"],[1,2,1,"","distance_between_2_vertices"],[1,2,1,"","fill_with_particles"],[1,2,1,"","find_boundary_points"],[1,2,1,"","find_h"],[1,2,1,"","get_bounding_box"],[1,2,1,"","get_domain_size"],[1,2,1,"","get_num_voxels"],[1,2,1,"","get_type_def"],[1,2,1,"","get_vol"],[1,2,1,"","import_meshio_object"],[1,2,1,"","plot_types"],[1,2,1,"","read_msh_file"],[1,2,1,"","read_stochss_domain"],[1,2,1,"","read_stochss_subdomain_file"],[1,2,1,"","read_xml_mesh"],[1,2,1,"","set_properties"]],"spatialpy.core.geometry":[[1,1,1,"","Geometry"],[1,1,1,"","GeometryAll"],[1,1,1,"","GeometryExterior"],[1,1,1,"","GeometryInterior"]],"spatialpy.core.geometry.Geometry":[[1,2,1,"","inside"]],"spatialpy.core.geometry.GeometryAll":[[1,2,1,"","inside"]],"spatialpy.core.geometry.GeometryExterior":[[1,2,1,"","inside"]],"spatialpy.core.geometry.GeometryInterior":[[1,2,1,"","inside"]],"spatialpy.core.initialcondition":[[1,1,1,"","InitialCondition"],[1,1,1,"","PlaceInitialCondition"],[1,1,1,"","ScatterInitialCondition"],[1,1,1,"","UniformInitialCondition"]],"spatialpy.core.initialcondition.InitialCondition":[[1,2,1,"","apply"]],"spatialpy.core.initialcondition.PlaceInitialCondition":[[1,2,1,"","apply"]],"spatialpy.core.initialcondition.ScatterInitialCondition":[[1,2,1,"","apply"]],"spatialpy.core.initialcondition.UniformInitialCondition":[[1,2,1,"","apply"]],"spatialpy.core.model":[[1,1,1,"","Model"],[1,6,1,"","export_StochSS"]],"spatialpy.core.model.Model":[[1,2,1,"","add_boundary_condition"],[1,2,1,"","add_data_function"],[1,2,1,"","add_domain"],[1,2,1,"","add_initial_condition"],[1,2,1,"","add_parameter"],[1,2,1,"","add_reaction"],[1,2,1,"","add_species"],[1,2,1,"","compile_prep"],[1,2,1,"","delete_all_parameters"],[1,2,1,"","delete_all_reactions"],[1,2,1,"","delete_all_species"],[1,2,1,"","delete_parameter"],[1,2,1,"","delete_reaction"],[1,2,1,"","delete_species"],[1,2,1,"","get_all_parameters"],[1,2,1,"","get_all_reactions"],[1,2,1,"","get_all_species"],[1,2,1,"","get_num_reactions"],[1,2,1,"","get_num_species"],[1,2,1,"","get_parameter"],[1,2,1,"","get_reaction"],[1,2,1,"","get_species"],[1,4,1,"","reserved_names"],[1,2,1,"","run"],[1,2,1,"","sanitized_data_function_names"],[1,2,1,"","sanitized_parameter_names"],[1,2,1,"","sanitized_species_names"],[1,2,1,"","set_timesteps"],[1,4,1,"","special_characters"],[1,2,1,"","timespan"],[1,2,1,"","update_namespace"]],"spatialpy.core.parameter":[[1,1,1,"","Parameter"]],"spatialpy.core.reaction":[[1,1,1,"","Reaction"]],"spatialpy.core.reaction.Reaction":[[1,2,1,"","add_product"],[1,2,1,"","add_reactant"],[1,2,1,"","annotate"],[1,2,1,"","initialize"]],"spatialpy.core.result":[[1,1,1,"","Result"]],"spatialpy.core.result.Result":[[1,2,1,"","export_to_csv"],[1,2,1,"","get_property"],[1,2,1,"","get_species"],[1,2,1,"","get_timespan"],[1,2,1,"","plot_property"],[1,2,1,"","plot_species"],[1,2,1,"","read_step"]],"spatialpy.core.spatialpyerror":[[1,3,1,"","BoundaryConditionError"],[1,3,1,"","DataFunctionError"],[1,3,1,"","DomainError"],[1,3,1,"","GeometryError"],[1,3,1,"","InitialConditionError"],[1,3,1,"","ModelError"],[1,3,1,"","ParameterError"],[1,3,1,"","ReactionError"],[1,3,1,"","ResultError"],[1,3,1,"","SimulationError"],[1,3,1,"","SimulationTimeout"],[1,3,1,"","SpeciesError"],[1,3,1,"","VTKReaderError"],[1,3,1,"","VTKReaderIOError"],[1,3,1,"","VisualizationError"]],"spatialpy.core.species":[[1,1,1,"","Species"]],"spatialpy.core.species.Species":[[1,2,1,"","set_diffusion_coefficient"]],"spatialpy.core.visualization":[[1,1,1,"","Visualization"]],"spatialpy.core.visualization.Visualization":[[1,4,1,"","MPL_HEIGHT"],[1,4,1,"","MPL_SIZE"],[1,4,1,"","MPL_WIDTH"],[1,2,1,"","plot_scatter"]],"spatialpy.core.vtkreader":[[1,1,1,"","VTKReader"]],"spatialpy.core.vtkreader.VTKReader":[[1,2,1,"","get_array_name"],[1,2,1,"","get_arrays"],[1,2,1,"","get_num_points"],[1,2,1,"","get_points"],[1,2,1,"","read_file"],[1,2,1,"","set_filename"]],"spatialpy.solvers":[[2,0,0,"-","build_expression"],[2,0,0,"-","solver"]],"spatialpy.solvers.build_expression":[[2,1,1,"","BuildExpression"],[2,1,1,"","CppConverter"],[2,1,1,"","ExpressionConverter"],[2,1,1,"","ExpressionResults"],[2,1,1,"","PythonConverter"]],"spatialpy.solvers.build_expression.BuildExpression":[[2,1,1,"","ValidationVisitor"],[2,2,1,"","getexpr_cpp"],[2,2,1,"","getexpr_python"],[2,2,1,"","map_operator"],[2,4,1,"","operator_map"],[2,2,1,"","validate"],[2,2,1,"","with_blacklist"],[2,2,1,"","with_namespace"]],"spatialpy.solvers.build_expression.BuildExpression.ValidationVisitor":[[2,2,1,"","visit_Assign"],[2,2,1,"","visit_BinOp"],[2,2,1,"","visit_BoolOp"],[2,2,1,"","visit_Call"],[2,2,1,"","visit_Compare"],[2,2,1,"","visit_Name"],[2,2,1,"","visit_UnaryOp"]],"spatialpy.solvers.build_expression.CppConverter":[[2,1,1,"","CppExpressionTransformer"],[2,2,1,"","get_str"],[2,2,1,"","visit_And"],[2,2,1,"","visit_Or"]],"spatialpy.solvers.build_expression.CppConverter.CppExpressionTransformer":[[2,2,1,"","visit_BinOp"]],"spatialpy.solvers.build_expression.ExpressionConverter":[[2,2,1,"","convert_str"],[2,2,1,"","get_str"],[2,2,1,"","parse_comparison"],[2,2,1,"","parse_logical"],[2,2,1,"","parse_operator"],[2,2,1,"","visit_Add"],[2,2,1,"","visit_BinOp"],[2,2,1,"","visit_BoolOp"],[2,2,1,"","visit_Bytes"],[2,2,1,"","visit_Call"],[2,2,1,"","visit_Compare"],[2,2,1,"","visit_Constant"],[2,2,1,"","visit_Div"],[2,2,1,"","visit_Ellipsis"],[2,2,1,"","visit_Eq"],[2,2,1,"","visit_Gt"],[2,2,1,"","visit_GtE"],[2,2,1,"","visit_Lt"],[2,2,1,"","visit_LtE"],[2,2,1,"","visit_Mult"],[2,2,1,"","visit_Name"],[2,2,1,"","visit_NameConstant"],[2,2,1,"","visit_NotEq"],[2,2,1,"","visit_Num"],[2,2,1,"","visit_Pow"],[2,2,1,"","visit_Str"],[2,2,1,"","visit_Sub"],[2,2,1,"","visit_USub"],[2,2,1,"","visit_UnaryOp"]],"spatialpy.solvers.build_expression.PythonConverter":[[2,2,1,"","visit_And"],[2,2,1,"","visit_Or"]],"spatialpy.solvers.solver":[[2,1,1,"","Solver"]],"spatialpy.solvers.solver.Solver":[[2,2,1,"","compile"],[2,2,1,"","run"]],"spatialpy.stochss":[[3,0,0,"-","stochss_export"]],"spatialpy.stochss.stochss_export":[[3,6,1,"","export"]],spatialpy:[[1,0,0,"-","core"],[2,0,0,"-","solvers"],[3,0,0,"-","stochss"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","exception","Python exception"],"4":["py","attribute","Python attribute"],"5":["py","property","Python property"],"6":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:exception","4":"py:attribute","5":"py:property","6":"py:function"},terms:{"0":[1,2],"0012333":1,"04":1,"0511773":1,"1":[1,2],"10":1,"10000":[],"11":1,"12295571":1,"13":1,"14":1,"14142136":[],"15":1,"168474926":1,"19":1,"1993":1,"1993apj":1,"1999":1,"1d":1,"2":1,"20":1,"2000":1,"2002":1,"2003mnra":1,"2005":1,"2015":1,"2019":[],"2022":[],"2236068":1,"2333084":1,"23606798":1,"24617575":1,"26836782":1,"28942611":1,"29571802":1,"2d":1,"2df":1,"2e9":[],"2r01eb014877":4,"3":[1,4],"300":1,"30088013":1,"31994999":1,"32580855":1,"33630734":1,"346":1,"37327919":1,"39923701":1,"3d":[1,4],"4":1,"40":1,"412":1,"5":1,"500":1,"55396483":1,"5647":1,"56906522":1,"57714465":1,"6":1,"600":1,"6395831":1,"6473269":1,"64l":1,"7":1,"71124834":1,"7225693":1,"72658602":1,"75679479":1,"78h":1,"79428925":1,"8":1,"800":1,"80622577":1,"8658745":1,"87665969":1,"9":1,"90785663":1,"abstract":[1,2],"byte":2,"case":1,"class":[1,2],"default":1,"do":1,"export":[1,3],"float":1,"function":[1,2],"import":1,"int":[1,2],"long":1,"new":[1,2],"public":4,"return":[1,2,3],"short":4,"static":[1,4],"super":2,"switch":1,"true":[1,2,3],A:[1,2,4],And:2,As:1,By:[1,2],FOR:[],For:[1,4],If:[1,2,4],In:1,It:1,No:1,Not:2,Or:2,The:[1,2,4],These:[],To:1,Will:1,_ast:[],ab:1,abl:1,about:1,abov:1,absolut:1,acceler:1,accept:2,across:1,action:1,actual:1,ad:[1,2],adapt:1,add:[1,2],add_boundary_condit:1,add_data_funct:1,add_domain:1,add_initial_condit:1,add_paramet:1,add_point:1,add_product:1,add_react:1,add_speci:1,addit:[1,2],addition:[1,2],addtion:[1,2],adsab:1,advect:4,against:[1,2],al:1,algorithm:[1,4],align:1,all:[1,2],allow:2,along:1,alreadi:1,also:[1,2,4],alwai:[1,2],amount:1,an:[1,2,4],analysi:1,angular:1,ani:[1,2,4],anim:1,animation_attribut:1,animation_opt:1,annot:1,append:2,appli:1,approxim:1,ar:[1,2],argument:1,around:1,arrai:1,arraid:1,array_lik:1,articl:4,artifici:1,arxiv:1,asarrai:1,ascii:1,assembl:1,assign:[1,2],associ:1,assum:2,ast:2,astro:1,astronom:1,astrophys:1,attempt:1,attribut:1,author:4,auto_plai:1,automat:[1,2],autorang:1,avail:[1,2,4],averag:1,axi:1,background:1,balanced_tre:1,bare:2,base:[1,2,4],basic:1,bass:1,becaus:1,becom:1,been:1,befor:1,begin:1,behavior:[1,2],below:1,best:[],between:[1,2],bia:1,bin:1,binari:1,binboolopop:2,binop:2,biochem:1,bitand:2,bitor:2,bitxor:2,blacklist:2,blob:1,blue:1,bodi:1,bogu:1,bool:[1,2,3],boolop:2,both:4,bottom:1,bound:1,bound_cond:1,boundari:1,boundarycondit:0,boundaryconditionerror:1,box:1,boxsiz:1,bracket:1,branch:1,brian:4,broadcast:1,browser:1,brute:1,bugn:1,build:[1,2,4],build_dir:1,build_express:0,buildexpress:2,built:[1,2],bulk:1,bupu:1,bvf_phi:1,c0:1,c:[1,2],c_:1,calcul:1,calculate_vol:1,call:[1,2],can:[1,2,4],caus:[1,2],cdn:1,cell:1,charact:1,chart:1,check:[1,2],chemic:1,children:1,choos:1,chosen:1,circumradiu:1,ckdtree:1,ckdtree_nod:1,ckdtreenod:1,classmethod:[1,2],cleanup:0,cleanup_build_fil:1,cleanup_core_fil:1,cleanup_result_fil:1,cleanup_tempfil:1,clear:1,close:1,closest:1,closest_vertex:1,cloud:1,cluster:1,code:4,coeffic:1,coeffici:1,collabor:1,colormap:1,column:1,com:[1,4],combin:1,compact:1,compact_nod:1,compar:[1,2],comparison:2,compil:[1,2],compile_prep:1,compos:1,comput:1,conain:1,conatain:1,concentr:1,condit:[1,2],config:1,connect:1,connolli:1,consid:1,consol:2,constant:[1,2],construct:1,constructor:2,constuct:1,contact:4,contain:[1,2],content:4,context:2,contian:1,contigu:1,continu:4,convers:2,convert:[1,2,3],convert_str:2,convet:2,coo_matrix:1,coodin:1,coordin:1,copi:[1,2],copy_data:1,copy_numb:1,copyright:[],core:[0,2,3,4],corner:1,correl:1,correspond:[1,2],corrupt:1,cosmolog:1,could:[1,2],count:1,count_neighbor:1,coupl:1,cppconvert:2,cppexpressiontransform:2,cpu:1,cradded:1,creat:[1,2],create_2d_domain:1,create_3d_domain:1,csv:1,cumul:1,current:[1,2],custom:1,cylind:4,cython:[],d:1,data:[1,2],data_funct:1,datafunct:0,datafunctionerror:1,dd:1,debug:[1,2],debug_level:[1,2],debugg:2,decreas:1,default_rng:1,defer:1,defin:[1,2],definit:1,degener:1,delete_all_paramet:1,delete_all_react:1,delete_all_speci:1,delete_paramet:1,delete_react:1,delete_speci:1,deltai:1,deltax:1,deltaz:1,demo:4,densiti:1,depend:1,dependency_graph:1,deprec:1,describ:[1,4],descript:1,detail:1,determinist:[1,4],determinst:1,develop:4,diamet:1,dict:[1,2,3],dictionari:[1,2],differ:[1,2],diffus:[1,4],diffusion_coeffici:1,dimens:1,dimension:1,direct:1,directli:[1,4],directori:1,discuss:1,displai:1,dissip:4,dist:1,distanc:1,distance_between_2_vertic:1,distance_matrix:1,distance_upper_bound:1,distribut:[],div:2,doe:1,doesn:1,dok_matrix:1,dolfin:1,dom:1,domain:[0,4],domainerror:1,domn:1,doubl:1,download:1,dr:4,draw:1,drawert:4,drawn:1,dtype:1,dual:1,duplic:2,durat:1,dure:[1,2],dynam:4,e:1,each:1,edg:1,edit:1,edu:1,effect:1,effici:1,either:1,element:1,ellipsi:2,els:[1,3],embed:4,empti:2,end:1,engin:1,ensur:[1,2],enterpris:1,entir:1,entireti:1,entri:1,ep:1,eq:2,equival:2,error:1,estim:1,et:1,euclidean:1,evalu:1,evaul:1,even:[],evenli:1,exampl:1,exce:1,exceed:2,except:1,execut:[1,2],exist:1,expect:[1,2],expens:1,explor:1,export_stochss:1,export_to_csv:1,expres:2,express:[1,2],expressionconvert:2,expressionresult:2,extens:1,extra:1,f:1,f_durat:1,fail:2,fals:[1,2,3],far:2,faster:1,featur:4,fenic:1,field:1,fifo:1,figsiz:1,figur:1,figure_or_data:1,file:[1,3],filenam:[1,3],fill:[1,4],fill_with_particl:1,find:[1,4],find_boundary_point:1,find_h:1,finit:1,first:[1,2],fit:[],fix:1,flag:[1,2],flatten:1,flight:2,floordiv:2,flow:4,fluid:[1,4],folder_nam:1,follow:[1,2],forc:1,form:[1,4],format:1,forward:2,found:[1,2,4],foundat:[],frac:1,fraction:1,frame:[1,4],free:[],frequenc:1,from:[1,2],fromkei:1,fund:4,further:1,furthest:1,g:1,gain:1,galaxi:1,gdbgui:2,gener:[1,4],geometr:1,geometri:0,geometry_ivar:1,geometryal:1,geometryerror:1,geometryexterior:1,geometryinterior:1,get:[1,2],get_all_paramet:1,get_all_react:1,get_all_speci:1,get_arrai:1,get_array_nam:1,get_bounding_box:1,get_domain_s:1,get_num_point:1,get_num_react:1,get_num_speci:1,get_num_voxel:1,get_paramet:1,get_point:1,get_properti:1,get_react:1,get_speci:1,get_str:2,get_timespan:1,get_type_def:1,get_vol:1,getexpr_:2,getexpr_cpp:2,getexpr_python:2,github:[1,4],give:1,given:[1,2],gmsh:1,gnbu:1,gnu:4,gprof:2,grai:1,grant:4,granular:2,graph:1,graph_obj:1,graph_refer:1,graviti:[1,4],greater:1,greatest:1,green:1,grei:1,group:1,gt:2,gte:2,guarante:1,h:1,ha:[1,4],hand:2,handl:2,happen:2,harvard:1,hasn:[1,2],have:1,hawkin:1,height:1,held:1,help:1,here:[1,4],high:1,higher:1,highest:1,hit:1,hope:[],how:[1,2,4],http:[1,4],hybrid:4,hyperrectangl:1,i:1,id:1,idea:1,ideal:2,idempot:1,identifi:[1,2],idx:1,ignor:1,ii:1,imag:1,image_height:1,image_width:1,immobil:1,implemenet:1,implement:[1,2],impli:[],import_meshio_object:1,imposs:2,inch:1,incid:1,includ:1,included_types_list:1,incompat:1,increas:1,increment:2,indec:1,indeci:1,index:[1,4],indic:[1,2],indici:1,inf:1,infer:2,infin:1,infinit:1,info:1,inform:[1,2,4],inherit:2,init_cond:1,init_notebook_mod:1,initailcondit:1,initi:1,initialcondit:0,initialconditionerror:1,inlin:1,innernod:1,input:1,insert:1,insid:1,instanc:[1,2],instead:1,integ:1,intend:4,intern:1,internet:1,interv:1,invalid:[1,2],invalid_:2,invalid_nam:2,invalid_oper:2,io:1,iplot:1,ipython:1,is_valid:2,issuecom:1,item:[1,2],iter:1,its:1,j:1,jacob:4,jet:1,job:1,journal:1,jpeg:1,js:1,json:1,jupyt:1,k:1,kd:1,kd_tree1:1,kd_tree2:1,kd_tree:1,kdtree:1,kei:[1,2],keyerror:1,keyword:1,kill:1,kth:1,kwarg:1,l_i:1,lack:1,lagrangian:4,landi:1,larg:1,larger:1,last:[1,2],later:[1,2],latest:4,layout:1,leafnod:1,leafsiz:1,learn:1,leav:1,left:2,legaci:1,len:1,length:1,less:1,level:[1,2],li:4,librari:1,licens:4,lifo:1,like:1,limit:1,linearli:1,link:1,link_text:1,list:[1,2],listofparamet:1,listofreact:1,listofspeci:1,listoftyp:1,load:1,local:1,locat:1,logic:2,longer:1,look:1,lookup:1,loos:1,lower:1,lowest:1,lshift:2,lt:2,lte:2,ly:1,m:1,mai:1,main:4,make:1,manag:2,maneewongvatana:1,manhattan:1,mani:[1,2],map:[1,2],map_oper:2,maplotlib:1,margin:1,mark:1,markers:1,mass:1,master:1,mathemat:[1,2],matmult:2,matplotlib:1,matrix:1,matter:1,max:1,max_dist:1,maximum:[1,2],mean:1,measur:1,median:1,meet:1,megabyt:1,merchant:[],mesh:1,mesh_obj:1,meshio:1,messag:1,meta:1,method:[1,2],mgrid:1,midpoint:1,min:1,mine:1,minim:1,minimum:1,minkowski:1,miss:1,mod:2,model:[0,2,3,4],modelerror:1,modelname_mesh:1,modelname_species_:1,modifi:1,modul:4,monthli:1,moor:1,more:[1,2,4],most:[1,2],mount:1,move:1,move_to_end:1,movement:1,mpl_height:1,mpl_size:1,mpl_width:1,msh:1,much:1,mult:2,multi:1,multipl:[1,2],multiple_graph:1,must:1,n:1,n_i:1,naiv:1,name:[1,2],nameconst:2,namespac:[1,2],ncol:1,ndarrai:1,ndarri:1,nearbi:1,nearby_point:1,nearer:1,nearest:1,necessari:1,necessarili:[],need:[1,4],neg:1,neighbor:1,neighbour:1,nih:4,node:[1,2],nodetransform:2,nodevisitor:2,non:1,none:[1,2,3],nonneg:1,norm:1,notat:1,note:[1,2],notebook:[1,4],noteq:2,notic:1,np:1,nrow:1,nsm:4,nu:1,num:2,num_step:1,number:[1,2],number_of_thread:[1,2],number_of_trajectori:[1,2],numpi:1,numpoint:1,nx:1,ny:1,nz:1,o:1,obj:1,object:[1,2],occur:1,od:1,off:1,offlin:1,og:1,omit:1,on_boundari:1,one:[1,2],onli:[1,2],onlin:1,open:1,oper:[1,2],operator_map:2,optim:1,option:1,orang:1,order:1,ordereddict:1,org:1,origin:2,orrd:1,other:[1,2],otherwis:[1,2],our:[1,4],out:[1,4],outdat:1,output:[1,2],output_interv:1,output_typ:1,outsid:1,over:1,overflow:1,overrid:2,overridden:1,p0:1,p:1,p_ndx:1,packag:4,page:[1,4],pair:1,parallel:1,param:1,param_nam:1,param_obj:1,paramet:[0,2,3],parametererror:1,paramt:1,parent:1,pars:2,parse_comparison:2,parse_log:2,parse_oper:2,part:1,partcil:1,particip:1,particl:[1,4],particular:1,pass:[1,2],path:[1,3],pdf:1,peculiar:1,per:1,perform:1,petzold:4,ph:1,physic:4,pii:4,pixel:1,place:1,placeinitialcondit:1,platform:1,pleas:[1,4],plot:1,plot_arg:1,plot_imag:1,plot_properti:1,plot_scatt:1,plot_speci:1,plot_typ:1,plote:1,plotli:1,plotly3:1,plt:1,pname:1,png:1,point:1,points1:1,points2:1,pop:[1,2],popitem:1,popul:1,posit:1,positon:1,pow:2,pre:2,predict:1,preper:1,present:[1,2],pressur:1,print:[1,2],problem:[1,4],process:[1,2],processor:1,produc:1,product:1,profil:[1,2],program:[],project:4,propens:1,propensity_funct:1,properli:1,properti:[1,2],property_nam:1,proprti:1,protect:1,prove:4,provid:[1,2,4],prune:1,pt:[],publish:[],pubu:1,pubugn:1,pull:1,purd:1,purpl:1,purpos:[],put:1,px:1,py:1,pypi:4,pyplot:1,python:[1,2,4],pythonconvert:2,pyurdm:4,quantifi:1,queri:1,query_ball_point:1,query_ball_tre:1,query_pair:1,question:4,quick:1,r:1,radii:1,radiu:1,rais:[1,2],random:[1,2],randomli:1,rang:1,rapidli:1,rate:1,rather:1,ratio:1,ravel:1,raw:1,rdme:4,rdpu:1,re:1,reac:1,reach:1,react_nam:1,react_obj:1,reactant:1,reaction:[0,4],reactionerror:1,read:1,read_fil:1,read_msh_fil:1,read_step:1,read_stochss_domain:1,read_stochss_subdomain_fil:1,read_xml_mesh:1,reader:1,real:1,reason:[],receiv:[],recent:[1,2],record:1,recurs:[],red:1,redistribut:[],redshift:1,refer:1,referenc:1,regardless:1,region:1,regist:4,registr:4,reject:2,rememb:1,remov:1,replac:4,repres:1,represent:[1,2],request:1,requir:1,reserved_nam:1,resolut:1,restrict:1,restrict_to:1,result:[0,2],result_dir:1,resulterror:1,retreiv:1,retriev:1,return_length:1,return_plotly_figur:1,return_sort:1,return_stochss_model:[1,3],rho0:1,rho:1,right:[1,2],rname:1,rng:1,robust:1,royal:1,rshift:2,rtype:2,rule:1,run:[1,2],runtimeerror:[],rvalu:2,s0021999118307101:4,s:[1,4],same:1,sampl:1,sanit:2,sanitized_data_function_nam:1,sanitized_parameter_nam:1,sanitized_species_nam:1,save:1,scalar:1,scale:1,scatter:1,scatter_arg:1,scatterinitialcondit:1,schedul:1,scheme:1,scienc:[1,4],sciencedirect:4,scipi:1,sdm:1,sdpd:[1,4],search:[1,4],second:[1,2],section:1,see:[1,4],seed:[1,2],self:[1,2],sens:1,sep:1,separ:1,sequenc:1,seri:[1,2],set:[1,2],set_diffusion_coeffici:1,set_filenam:1,set_properti:1,set_timestep:1,setdefault:1,setrecursionlimit:[],setter:1,shall:1,shallow:1,shape:1,sheth:1,should:[1,2],show:1,show_link:1,shrink:1,signal:1,significantli:1,similar:1,simlat:1,simplifi:1,simul:[1,2,4],simulationerror:[1,2],simulationtimeout:[1,2],sinc:1,singl:[1,2],size:1,skibba:1,sky:1,slide:1,slightli:1,small:1,smaller:1,smdl:1,smooth:4,sname:1,so:[1,2],societi:1,softwar:4,solver:[0,1,4],some:1,sort:1,sound:1,sourc:[1,2,3,4],space:1,spactialpi:2,span:1,spars:1,sparse_distance_matrix:1,spatial:[1,2,4],spatialpy_build:1,spatialpy_model:1,spatialpy_result:1,spatialpyerror:0,spatialpysolv:1,speci:0,special_charact:1,species_nam:1,species_object:1,specieserror:1,specif:1,specifi:1,speed:1,split:1,split_dim:1,squeez:1,src:1,ssa:1,sssa:4,start:[1,2,4],statement:2,statist:1,step:1,step_num:1,stochast:[1,4],stochss:[0,1,4],stochss_export:0,stoichiometr:1,stoichiometri:1,store:[],str:[1,2,3],string:[1,2],struct:2,structur:1,style:1,sub:2,subclass:[1,2],subdomain:1,submodul:0,subpackag:4,subplot:1,substanti:1,substitut:2,success:1,suggest:4,sum:1,suppli:1,support:[1,4],sure:1,survei:1,svg:1,sy:[],symbol:2,syntax:2,syntaxerror:2,system:[1,4],szalai:1,t:[1,2],t_durat:1,t_ndx:1,t_ndx_list:1,t_val:1,tag:1,take:1,target:[1,2],tempfil:1,term:[],tetrahedron:1,text:1,th:1,than:1,them:1,thi:[1,2,4],thin:1,those:1,though:1,thread:[1,2],time:[1,2],time_span:1,timeout:[1,2],timepoint:1,timespan:1,timestep:1,timestep_s:1,titl:1,toarrai:1,token:2,topolog:1,toroid:1,total:1,toth:1,trace:1,tracker:4,trajectori:[1,2],transit:1,travers:1,tree:[1,2],triangl:1,trigger:2,tspan:1,tupl:1,two:[1,2],txt:1,type:[1,2,3],type_id:1,u0:1,unabl:1,unaryop:2,under:[1,4],uniform:1,uniforminitialcondit:1,union:1,univers:[1,2],unless:1,unnecessari:1,unsqueez:1,unweight:1,up:1,updat:1,update_namespac:1,upload:1,upon:1,upper:1,urdm:1,us:[1,2,4],use_matplotlib:1,user:[1,4],usual:1,usub:2,util:1,v1:1,v:1,valid:[1,2],validationvisitor:2,valu:[1,2],valueerror:1,vari:1,varianc:1,veloc:1,verbos:2,veri:[],version:[1,4],vertex:1,vertic:1,view:1,viewer:1,viscos:1,visit:2,visit_add:2,visit_and:2,visit_assign:2,visit_binop:2,visit_boolop:2,visit_byt:2,visit_cal:2,visit_compar:2,visit_const:2,visit_div:2,visit_ellipsi:2,visit_eq:2,visit_gt:2,visit_lt:2,visit_mult:2,visit_nam:2,visit_nameconst:2,visit_noteq:2,visit_num:2,visit_or:2,visit_pow:2,visit_str:2,visit_sub:2,visit_unaryop:2,visit_usub:2,visitor:2,visual:0,visualizationerror:1,vol:1,volum:1,voxel:1,vtk:1,vtkreader:0,vtkreadererror:1,vtkreaderioerror:1,wa:1,want:1,warranti:[],we:[1,4],web:1,webp:1,weight:1,weir:4,well:2,were:[1,2],what:2,when:[1,2],where:1,whether:[1,2,3],which:[1,2],whose:1,wide:1,width:1,with_blacklist:2,with_namespac:2,within:1,without:[],work:1,worker:1,wp:1,wrap:1,write:1,write_imag:1,written:1,www:4,x1:1,x2:1,x:1,x_i:1,xaxi:1,xi:1,xk:1,xlim:1,xmax:1,xmin:1,xml:1,y:1,yaxi:1,yet:1,yi:4,ylgn:1,ylgnbu:1,ylim:1,ylorbr:1,ylorrd:1,ymax:1,ymin:1,you:[1,4],your:[1,4],z:1,zero:1,zeroth:1,zip:[],zlim:1,zmax:1,zmin:1},titles:["spatialpy package","spatialpy.core package","spatialpy.solvers package","spatialpy.stochss package","Documentation for SpatialPy 1.0.2"],titleterms:{"0":4,"1":4,"2":4,api:4,boundarycondit:1,build_express:2,cleanup:1,content:[0,1,2,3],copi:4,core:1,datafunct:1,document:4,domain:1,exampl:4,geometri:1,get:4,indic:4,initialcondit:1,issu:4,model:1,modul:[0,1,2,3],packag:[0,1,2,3],paramet:1,reaction:1,refer:4,report:4,result:1,solver:2,spatialpi:[0,1,2,3,4],spatialpyerror:1,speci:1,stochss:3,stochss_export:3,submodul:[1,2,3],subpackag:0,tabl:4,visual:1,vtkreader:1}}) \ No newline at end of file diff --git a/docs/classes/spatialpy.core.rst b/docs/classes/spatialpy.core.rst index 9d0dc903..f259fa08 100644 --- a/docs/classes/spatialpy.core.rst +++ b/docs/classes/spatialpy.core.rst @@ -100,6 +100,14 @@ spatialpy.core.species module :undoc-members: :show-inheritance: +spatialpy.core.visualization module +----------------------------------- + +.. automodule:: spatialpy.core.visualization + :members: + :undoc-members: + :show-inheritance: + spatialpy.core.vtkreader module -------------------------------