Skip to content
Merged
5 changes: 2 additions & 3 deletions package/CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,6 @@ Enhancements
* Calculations in *Group.center() are performed in double precision (#PR1936)
* Functions in lib.distances accept coordinate arrays of arbitrary dtype
(PR #1936)
* Added calc_distance, calc_angle and calc_dihedral to lib.distances
(Issue #1262 #1938)
* Added pbc kwarg to Bond/Angle/Dihedral/Improper object value method,
default True. (Issue #1938)
* ChainReader can correctly handle continuous trajectories split into multiple files,
Expand All @@ -81,7 +79,8 @@ Enhancements
* Added analysis.dihedrals with Ramachandran class to analysis module (PR #1997)
* Added augment functionality to create relevant images of particles
* Most functions in `MDanalysis.lib.distances` previously only accepting
arrays of coordinates now also accept single coordinates as input (PR #2048)
arrays of coordinates now also accept single coordinates as input (PR #2048,
Issues #1262 #1938)
* Performance improvements to make_whole (PR #1965)
* Performance improvements to fragment finding (PR #2028)
* Added user defined boxes in density code (PR #2005)
Expand Down
18 changes: 11 additions & 7 deletions package/MDAnalysis/analysis/hbonds/hbond_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -807,7 +807,7 @@ def _get_bonded_hydrogens_list(self, atom, **kwargs):
hydrogens = [
a for a in self.u.atoms[atom.index + 1:atom.index + 4]
if (a.name.startswith(('H', '1H', '2H', '3H')) and
distances.calc_distance(atom.position, a.position, box) < self.r_cov[atom.name[0]])
distances.calc_bonds(atom.position, a.position, box=box) < self.r_cov[atom.name[0]])
]
except IndexError:
hydrogens = [] # weird corner case that atom is the last one in universe
Expand Down Expand Up @@ -993,10 +993,12 @@ def _get_timestep():
for h in donor_h_set:
res = ns_acceptors.search(h, self.distance)
for a in res:
angle = distances.calc_angle(d.position, h.position,
a.position, box=box)
angle = distances.calc_angles(d.position,
h.position,
a.position, box=box)
angle = np.rad2deg(angle)
donor_atom = h if self.distance_type != 'heavy' else d
dist = distances.calc_distance(donor_atom.position, a.position, box)
dist = distances.calc_bonds(donor_atom.position, a.position, box=box)
if angle >= self.angle and dist <= self.distance:
self.logger_debug(
"S1-D: {0!s} <-> S2-A: {1!s} {2:f} A, {3:f} DEG".format(h.index, a.index, dist, angle))
Expand All @@ -1019,10 +1021,12 @@ def _get_timestep():
(h.index, a.index) in already_found or
(a.index, h.index) in already_found):
continue
angle = distances.calc_angle(d.position, h.position,
a.position, box=box)
angle = distances.calc_angles(d.position,
h.position,
a.position, box=box)
angle = np.rad2deg(angle)
donor_atom = h if self.distance_type != 'heavy' else d
dist = distances.calc_distance(donor_atom.position, a.position, box)
dist = distances.calc_bonds(donor_atom.position, a.position, box=box)
if angle >= self.angle and dist <= self.distance:
self.logger_debug(
"S1-A: {0!s} <-> S2-D: {1!s} {2:f} A, {3:f} DEG".format(a.index, h.index, dist, angle))
Expand Down
28 changes: 16 additions & 12 deletions package/MDAnalysis/analysis/hbonds/wbridge_analysis.py
Original file line number Diff line number Diff line change
Expand Up @@ -636,11 +636,12 @@ def run(self, **kwargs):
res = ns_acceptors.search(h, self.distance)
for a in res:
donor_atom = h if self.distance_type != 'heavy' else d
dist = distances.calc_distance(donor_atom.position,
a.position)
dist = distances.calc_bonds(donor_atom.position,
a.position)
if dist <= self.distance:
angle = distances.calc_angle(d.position, h.position,
angle = distances.calc_angles(d.position, h.position,
a.position)
angle = np.rad2deg(angle)
if angle >= self.angle:
self.logger_debug(
"S1-D: {0!s} <-> W-A: {1!s} {2:f} A, {3:f} DEG"\
Expand All @@ -662,11 +663,12 @@ def run(self, **kwargs):
res = ns_acceptors.search(h, self.distance)
for a in res:
donor_atom = h if self.distance_type != 'heavy' else d
dist = distances.calc_distance(donor_atom.position,
a.position)
dist = distances.calc_bonds(donor_atom.position,
a.position)
if dist <= self.distance:
angle = distances.calc_angle(d.position, h.position,
angle = distances.calc_angles(d.position, h.position,
a.position)
angle = np.rad2deg(angle)
if angle >= self.angle:
self.logger_debug(
"S1-A: {0!s} <-> W-D: {1!s} {2:f} A, {3:f} DEG"\
Expand Down Expand Up @@ -712,11 +714,12 @@ def run(self, **kwargs):
res = ns_acceptors.search(h, self.distance)
for a in res:
donor_atom = h if self.distance_type != 'heavy' else d
dist = distances.calc_distance(donor_atom.position,
a.position)
dist = distances.calc_bonds(donor_atom.position,
a.position)
if dist <= self.distance:
angle = distances.calc_angle(d.position, h.position,
angle = distances.calc_angles(d.position, h.position,
a.position)
angle = np.rad2deg(angle)
if angle >= self.angle:
self.logger_debug(
"WB-D: {0!s} <-> S2-A: {1!s} {2:f} A, {3:f} DEG"\
Expand All @@ -736,11 +739,12 @@ def run(self, **kwargs):
res = ns_acceptors.search(h, self.distance)
for a in res:
donor_atom = h if self.distance_type != 'heavy' else d
dist = distances.calc_distance(donor_atom.position,
a.position)
dist = distances.calc_bonds(donor_atom.position,
a.position)
if dist <= self.distance:
angle = distances.calc_angle(d.position, h.position,
angle = distances.calc_angles(d.position, h.position,
a.position)
angle = np.rad2deg(angle)
if angle >= self.angle:
self.logger_debug(
"WB-A: {0!s} <-> S2-D: {1!s} {2:f} A, {3:f} DEG"\
Expand Down
10 changes: 5 additions & 5 deletions package/MDAnalysis/core/topologyobjects.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ def length(self, pbc=True):
"""
box = self.universe.dimensions if pbc else None

return distances.calc_distance(self[0].position, self[1].position, box)
return distances.calc_bonds(self[0].position, self[1].position, box)

value = length

Expand Down Expand Up @@ -241,8 +241,8 @@ def angle(self, pbc=True):
"""
box = self.universe.dimensions if pbc else None

return distances.calc_angle(
self[0].position, self[1].position, self[2].position, box)
return np.rad2deg(distances.calc_angles(
self[0].position, self[1].position, self[2].position, box))

value = angle

Expand Down Expand Up @@ -291,8 +291,8 @@ def dihedral(self, pbc=True):
box = self.universe.dimensions if pbc else None
A, B, C, D = self.atoms

return distances.calc_dihedral(
A.position, B.position, C.position, D.position, box)
return np.rad2deg(distances.calc_dihedrals(
A.position, B.position, C.position, D.position, box))

value = dihedral

Expand Down
Loading