From 66906b2027142ec9358da6cc5c790a61e046bafc Mon Sep 17 00:00:00 2001 From: James Krieger Date: Wed, 23 Oct 2024 13:00:31 +0100 Subject: [PATCH 1/3] getDihedral from multi coordsets --- prody/measure/measure.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/prody/measure/measure.py b/prody/measure/measure.py index 4d8678fd2..285e9a18a 100644 --- a/prody/measure/measure.py +++ b/prody/measure/measure.py @@ -5,7 +5,7 @@ from numpy import ndarray, power, sqrt, array, zeros, arccos, dot from numpy import sign, tile, concatenate, pi, cross, subtract, var -from numpy import unique, where +from numpy import unique, where, divide, power from prody.atomic import Atomic, Residue, Atom, extendAtomicData from prody.kdtree import KDTree @@ -207,12 +207,12 @@ def getDihedral(coords1, coords2, coords3, coords4, radian=False): a3 = coords4 - coords3 v1 = cross(a1, a2) - v1 = v1 / (v1 * v1).sum(-1)**0.5 + v1 = divide(v1, power((v1 * v1).sum(-1), 0.5).reshape(-1,1)) v2 = cross(a2, a3) - v2 = v2 / (v2 * v2).sum(-1)**0.5 + v2 = divide(v2, power((v2 * v2).sum(-1), 0.5).reshape(-1,1)) porm = sign((v1 * a3).sum(-1)) rad = arccos((v1*v2).sum(-1) / ((v1**2).sum(-1) * (v2**2).sum(-1))**0.5) - if not porm == 0: + if not all(porm == 0): rad = rad * porm if radian: return rad From d40131686c428ba399dfb8cdfaa11afb63d99d0f Mon Sep 17 00:00:00 2001 From: James Krieger Date: Wed, 23 Oct 2024 13:03:56 +0100 Subject: [PATCH 2/3] extract single --- prody/measure/measure.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/prody/measure/measure.py b/prody/measure/measure.py index 285e9a18a..89e77114a 100644 --- a/prody/measure/measure.py +++ b/prody/measure/measure.py @@ -214,6 +214,10 @@ def getDihedral(coords1, coords2, coords3, coords4, radian=False): rad = arccos((v1*v2).sum(-1) / ((v1**2).sum(-1) * (v2**2).sum(-1))**0.5) if not all(porm == 0): rad = rad * porm + + if rad.shape[0] == 1: + rad = rad[0] + if radian: return rad else: From ec0eafa27e1ac23a7a0b1d583389536e195cefd4 Mon Sep 17 00:00:00 2001 From: James Krieger Date: Tue, 3 Dec 2024 15:04:18 +0100 Subject: [PATCH 3/3] add get measure funcs --- prody/measure/measure.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/prody/measure/measure.py b/prody/measure/measure.py index 89e77114a..29a19ee49 100644 --- a/prody/measure/measure.py +++ b/prody/measure/measure.py @@ -16,11 +16,11 @@ if PY2K: range = xrange -__all__ = ['buildDistMatrix', 'calcDistance', - 'calcCenter', 'calcGyradius', 'calcAngle', - 'calcDihedral', 'calcOmega', 'calcPhi', 'calcPsi', - 'calcMSF', 'calcRMSF', - 'calcDeformVector', +__all__ = ['buildDistMatrix', 'calcDistance', 'calcGyradius', + 'calcCenter', 'calcAngle', 'calcDihedral', + 'getCenter', 'getAngle', 'getDihedral', + 'calcOmega', 'calcPhi', 'calcPsi', + 'calcMSF', 'calcRMSF', 'calcDeformVector', 'buildADPMatrix', 'calcADPAxes', 'calcADPs', 'pickCentral', 'pickCentralAtom', 'pickCentralConf', 'getWeights', 'calcInertiaTensor', 'calcPrincAxes', 'calcDistanceMatrix',