Source code for RotationalDiffusion.utils
from typing import List, Dict, Any, Union, Optional, Type
import numpy as np
import MDAnalysis as mda
from MDAnalysis.analysis.base import AnalysisBase
[docs]
def arange_lag_times(Q, timestep):
return np.arange(1, Q.shape[-3] + 1, 1) * timestep
[docs]
def apply_PCS_convention(PCSs):
assert PCSs.shape[-2:] == (3, 3)
PCSs = np.copy(PCSs)
# Enforce positive elements 11 and 22.
PCSs[np.diagonal(PCSs, axis1=-2, axis2=-1) < 0] *= -1
# Make PAFs right-handed (by inverting x-axis).
if PCSs.ndim > 2:
PCSs[np.linalg.det(PCSs) < 0, 0] *= -1
elif np.linalg.det(PCSs) < 0:
PCSs[0] *= -1
return PCSs