Skip to content
Merged
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
26 changes: 13 additions & 13 deletions pmda/rdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@

import numpy as np

from MDAnalysis.lib.distances import distance_array
from MDAnalysis.lib.util import blocks_of
from MDAnalysis.lib import distances

from .parallel import ParallelAnalysisBase

Expand Down Expand Up @@ -117,23 +116,24 @@ def _prepare(self):

# Need to know average volume
self.volume = 0.0
# Set the max range to filter the search radius
self._maxrange = self.rdf_settings['range'][1]

def _single_frame(self, ts, atomgroups):
g1, g2 = atomgroups
u = g1.universe
d = distance_array(g1.positions, g2.positions,
box=u.dimensions)
pairs, dist = distances.capped_distance(g1.positions,
g2.positions,
self._maxrange,
box=u.dimensions)
# If provided exclusions, create a mask of _result which
# lets us take these out
exclusion_mask = None
# lets us take these out.
if self._exclusion_block is not None:
exclusion_mask = blocks_of(d, *self._exclusion_block)
maxrange = self.rdf_settings['range'][1] + 1.0
# Maybe exclude same molecule distances
if exclusion_mask is not None:
exclusion_mask[:] = maxrange
count = []
count = np.histogram(d, **self.rdf_settings)[0]
idxA = pairs[:, 0]//self._exclusion_block[0]
idxB = pairs[:, 1]//self._exclusion_block[1]
mask = np.where(idxA != idxB)[0]
dist = dist[mask]
count = np.histogram(dist, **self.rdf_settings)[0]
volume = u.trajectory.ts.volume

return np.array([count, np.array(volume, dtype=np.float64)])
Expand Down