Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions mbuild/path/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@
Path,
Spiral2D,
StraightLine,
ZigZag,
)
21 changes: 16 additions & 5 deletions mbuild/utils/volumes.py → mbuild/path/constraints.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,20 @@
"""Return True if point satisfies constraint (inside), else False."""
raise NotImplementedError("Must be implemented in subclasses")

def sample_candidates(self, points, n_candiates, buffer):
def sample_candidates(self, points, n_candiates, buffer, region_mins, region_maxs):
"""Sample the volume for canidate points sorted by lowest local density."""
raise NotImplementedError("Must be implemented in subclasses")

def find_low_density_points(self, points, n_candidates, buffer, k=10):
def find_low_density_points(
self, points, n_candidates, buffer, k=10, region_mins=None, region_maxs=None
):
low_density_points = self.sample_candidates(
points=points, n_candidates=n_candidates, buffer=buffer, k=k
points=points,
n_candidates=n_candidates,
buffer=buffer,
region_mins=region_mins,
region_maxs=region_maxs,
k=k,
)
return low_density_points

Expand Down Expand Up @@ -89,7 +96,9 @@
pbc=self.pbc,
)

def sample_candidates(self, points, n_candidates, buffer, k=10):
def sample_candidates(
self, points, n_candidates, buffer, k=10, region_mins=None, region_maxs=None
):
"""Generate candidate points uniformly distributed inside the box,
optionally ranked by lowest local density around existing points.

Expand All @@ -116,8 +125,10 @@
the nearest neighbor (lowest local density) appear first.
"""
# Create random candidates inside the box to test and sample from
sample_mins = np.asarray(region_mins) if region_mins else self.mins
sample_maxs = np.asarray(region_maxs) if region_maxs else self.maxs
candidates = np.random.uniform(
self.mins + buffer, self.maxs - buffer, size=(n_candidates, 3)
sample_mins + buffer, sample_maxs - buffer, size=(n_candidates, 3)
)
if points is None or len(points) == 0:
return candidates
Expand Down Expand Up @@ -166,7 +177,7 @@
"""
return is_inside_sphere(points=points, sphere_radius=self.radius, buffer=buffer)

def sample_candidates(self, points, n_candidates, buffer, k=10):

Check warning

Code scanning / CodeQL

Signature mismatch in overriding method Warning

This method requires at most 5 positional arguments, whereas overridden
Constraint.sample_candidates
requires 6.
"""Generate candidate points uniformly distributed inside the sphere,
optionally ranked by lowest local density around existing points.

Expand Down Expand Up @@ -272,7 +283,7 @@
periodic=self.periodic_height,
)

def sample_candidates(self, points, n_candidates, buffer, k=10):

Check warning

Code scanning / CodeQL

Signature mismatch in overriding method Warning

This method requires at most 5 positional arguments, whereas overridden
Constraint.sample_candidates
requires 6.
"""Generate candidate points uniformly distributed inside the cylinder,
optionally ranked by lowest local density around existing points.

Expand Down
2 changes: 1 addition & 1 deletion mbuild/path/path.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
from scipy.interpolate import interp1d

from mbuild import Compound
from mbuild.path.constraints import CuboidConstraint, CylinderConstraint
from mbuild.path.path_utils import check_path, random_coordinate
from mbuild.utils.volumes import CuboidConstraint, CylinderConstraint

logger = logging.getLogger(__name__)

Expand Down
5 changes: 4 additions & 1 deletion mbuild/polymer.py
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,10 @@ def build(
v1 = this_part_head.pos - this_part_tail.pos
v1 /= np.linalg.norm(v1)
# v2 is the vector between the previous site pos and next site pos
v2 = coordinates[site_count + 1] - coordinates[site_count - 1]
v2 = (
coordinates[site_count + 1]
- coordinates[site_count - 1]
)
v2 /= np.linalg.norm(v2)
normal = np.cross(v1, v2)
angle = np.arccos(
Expand Down
4 changes: 2 additions & 2 deletions mbuild/simulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ def hoomd_cap_displacement(
)
sim.set_integrator(method=displacement_capped, dt=dt)
sim.run(n_steps)
sim.operations.integrator = None
sim.operations.integrator = None
sim.update_positions()
sim._update_snapshot()

Expand Down Expand Up @@ -528,7 +528,7 @@ def hoomd_fire(
sim.operations.integrator.reset()

# Update particle positions, save latest state point snapshot
sim.operations.integrator = None
sim.operations.integrator = None
sim._update_snapshot()
sim.update_positions()

Expand Down
10 changes: 5 additions & 5 deletions mbuild/tests/test_path.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@
Spiral2D,
StraightLine,
)
from mbuild.path.constraints import (
CuboidConstraint,
CylinderConstraint,
SphereConstraint,
)
from mbuild.path.path_utils import (
local_density,
target_density,
Expand All @@ -24,11 +29,6 @@
)
from mbuild.tests.base_test import BaseTest
from mbuild.utils.geometry import bounding_box
from mbuild.utils.volumes import (
CuboidConstraint,
CylinderConstraint,
SphereConstraint,
)


class TestPaths(BaseTest):
Expand Down
4 changes: 1 addition & 3 deletions mbuild/tests/test_termination.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
HardSphereRandomWalk,
)
from mbuild.path.bias import TargetCoordinate
from mbuild.path.constraints import CuboidConstraint
from mbuild.path.termination import (
ContourLength,
EndToEndDistance,
Expand All @@ -19,9 +20,6 @@
WithinCoordinate,
)
from mbuild.tests.base_test import BaseTest, radius_of_gyration
from mbuild.utils.volumes import (
CuboidConstraint,
)


class TestTermination(BaseTest):
Expand Down
Loading