Lattice Microbes 2.5
This is for whole cell modeling
Loading...
Searching...
No Matches
LatticeBuilder.h
Go to the documentation of this file.
1/*
2 * University of Illinois Open Source License
3 * Copyright 2011-2018 Luthey-Schulten Group,
4 * All rights reserved.
5 *
6 * Developed by: Luthey-Schulten Group
7 * University of Illinois at Urbana-Champaign
8 * http://www.scs.uiuc.edu/~schulten
9 *
10 * Permission is hereby granted, free of charge, to any person obtaining a copy of
11 * this software and associated documentation files (the Software), to deal with
12 * the Software without restriction, including without limitation the rights to
13 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
14 * of the Software, and to permit persons to whom the Software is furnished to
15 * do so, subject to the following conditions:
16 *
17 * - Redistributions of source code must retain the above copyright notice,
18 * this list of conditions and the following disclaimers.
19 *
20 * - Redistributions in binary form must reproduce the above copyright notice,
21 * this list of conditions and the following disclaimers in the documentation
22 * and/or other materials provided with the distribution.
23 *
24 * - Neither the names of the Luthey-Schulten Group, University of Illinois at
25 * Urbana-Champaign, nor the names of its contributors may be used to endorse or
26 * promote products derived from this Software without specific prior written
27 * permission.
28 *
29 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
32 * THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
33 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
34 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
35 * OTHER DEALINGS WITH THE SOFTWARE.
36 *
37 * Author(s): Andrew Magis, Elijah Roberts
38 */
39
40#ifndef LM_BUILDER_LATTICEBUILDER_H_
41#define LM_BUILDER_LATTICEBUILDER_H_
42
43#include <map>
44#include <utility>
45#include <vector>
46#include "core/Types.h"
47#include "builder/Shape.h"
48#include "rdme/Lattice.h"
49#include "rng/RandomGenerator.h"
50
51using std::vector;
53
54namespace lm {
55
56namespace io {
57class SpatialModel;
58}
59
60namespace rdme {
61class Lattice;
62}
63
64namespace builder {
65
69{
70protected:
84
85public:
93 LatticeBuilder(si_dist_t xLen, si_dist_t yLen, si_dist_t zLen, si_dist_t collisionGridSpacing, uint32_t seedTop, uint32_t seedBottom=0);
94 virtual ~LatticeBuilder();
95
98 virtual void addRegion(Shape * shape);
102 virtual bool placeObject(Shape * shape);
105 virtual void removeObject(Shape * s);
106
112 virtual bool placeSphere(point center, si_dist_t radius, site_t type);
117 virtual void removeSphere(point center, si_dist_t radius, site_t type);
123 virtual uint placeRandomSphere(si_dist_t radius, site_t type, site_t region);
129 virtual void placeRandomSpheres(uint count, si_dist_t radius, site_t type, site_t region);
135 virtual void fillWithRandomSpheres(double volumeFraction, si_dist_t radius, site_t type, site_t region);
138 virtual void getSpatialModel(lm::io::SpatialModel * spatialModel);
139
140
145 virtual void addParticles(particle_t particleType, site_t siteType, uint count);
146
151 virtual void discretizeTo(lm::rdme::Lattice * lattice, site_t obstacleSiteType, double fractionObstacleSitesOccupied);
152
153protected:
158 virtual void discretizeObstaclesTo(lm::rdme::Lattice * lattice, site_t obstacleSiteType, double fractionObstacleSitesOccupied);
159
160protected:
161 // Lattice dimensions
163
164 // Regions of the lattice (i.e. cell membrane, cytosol, extracellular space, etc.)
165 std::vector<site_t> definedRegions;
166 std::map<site_t,std::vector<Shape *> > regionShapes;
167 std::map<site_t,bounding_box> regionBounds;
168 std::vector<Shape *> objects;
169
170 // Particle placement operations or in other words how many particles of each type that should be placed and where
171 std::vector<ParticlePlacement> particles;
172
173 // Collision objects, collision grid size and percent filled
180
181 // Random number generator associated with this lattice
183
184};
185
186}
187}
188
189#endif
uint32_t particle_t
Definition ByteLatticeExtended.h:19
uint32_t site_t
Definition Lattice.h:74
double si_dist_t
Definition Types.h:63
unsigned int uint
Definition Types.h:52
uint * collisionGridSize
Definition LatticeBuilder.h:175
uint collisionGridXSize
Definition LatticeBuilder.h:179
Shape *** collisionGrid
Definition LatticeBuilder.h:174
std::vector< site_t > definedRegions
Definition LatticeBuilder.h:165
virtual void discretizeObstaclesTo(lm::rdme::Lattice *lattice, site_t obstacleSiteType, double fractionObstacleSitesOccupied)
Discretizes the obstacles to a square lattice.
Definition LatticeBuilder.cpp:613
virtual void removeSphere(point center, si_dist_t radius, site_t type)
Remove a sphere in the lattice (for obstacles)
Definition LatticeBuilder.cpp:254
uint * collisionGridOccupancy
Definition LatticeBuilder.h:176
std::vector< Shape * > objects
Definition LatticeBuilder.h:168
uint collisionGridZSize
Definition LatticeBuilder.h:179
std::map< site_t, std::vector< Shape * > > regionShapes
Definition LatticeBuilder.h:166
virtual ~LatticeBuilder()
Definition LatticeBuilder.cpp:118
si_dist_t zLen
Definition LatticeBuilder.h:162
si_dist_t collisionGridSpacing
Definition LatticeBuilder.h:177
std::vector< ParticlePlacement > particles
Definition LatticeBuilder.h:171
virtual void addRegion(Shape *shape)
Add a region to the lattice.
Definition LatticeBuilder.cpp:134
virtual void getSpatialModel(lm::io::SpatialModel *spatialModel)
Gets a spatial model of the lattice for interface with python. NOTE: this operation clears the object...
Definition LatticeBuilder.cpp:344
si_dist_t xLen
Definition LatticeBuilder.h:162
virtual void fillWithRandomSpheres(double volumeFraction, si_dist_t radius, site_t type, site_t region)
Fill a region with random spheres to a specified volume fraction.
Definition LatticeBuilder.cpp:322
RandomGenerator * rng
Definition LatticeBuilder.h:182
virtual void addParticles(particle_t particleType, site_t siteType, uint count)
Add particles of a given type.
Definition LatticeBuilder.cpp:563
virtual bool placeObject(Shape *shape)
Add an shape to the lattice.
Definition LatticeBuilder.cpp:159
LatticeBuilder(si_dist_t xLen, si_dist_t yLen, si_dist_t zLen, si_dist_t collisionGridSpacing, uint32_t seedTop, uint32_t seedBottom=0)
Create a Lattice Builder.
Definition LatticeBuilder.cpp:76
si_dist_t yLen
Definition LatticeBuilder.h:162
virtual void removeObject(Shape *s)
Remove the shape from the lattice.
Definition LatticeBuilder.cpp:225
virtual bool placeSphere(point center, si_dist_t radius, site_t type)
Place a sphere in the lattice (for obstacles)
Definition LatticeBuilder.cpp:248
uint collisionGridYSize
Definition LatticeBuilder.h:179
virtual void placeRandomSpheres(uint count, si_dist_t radius, site_t type, site_t region)
Place many spheres randomly in the lattice (for obstacles)
Definition LatticeBuilder.cpp:312
virtual uint placeRandomSphere(si_dist_t radius, site_t type, site_t region)
Place a sphere randomly in the lattice (for obstacles)
Definition LatticeBuilder.cpp:261
double recipCollisionGridSpacing
Definition LatticeBuilder.h:178
std::map< site_t, bounding_box > regionBounds
Definition LatticeBuilder.h:167
virtual void discretizeTo(lm::rdme::Lattice *lattice, site_t obstacleSiteType, double fractionObstacleSitesOccupied)
Discretizes the regions to a square lattice.
Definition LatticeBuilder.cpp:568
Abstract base class for all the shapes in Lattice Microbes simulation builder.
Definition Shape.h:305
Base class for lattice type objects.
Definition Lattice.h:132
Base class for random number generators in Lattice Microbes.
Definition RandomGenerator.h:51
Definition Capsule.cpp:47
Definition LatticeBuilder.h:56
Definition LatticeBuilder.h:60
Definition Capsule.cpp:46
particle_t particleType
Definition LatticeBuilder.h:75
ParticlePlacement(particle_t particleType, site_t siteType, uint count)
Create a ParticlePlacement placement operation.
Definition LatticeBuilder.h:82
site_t siteType
Definition LatticeBuilder.h:76
uint count
Definition LatticeBuilder.h:77
Type to store a position in space.
Definition Shape.h:67