Applied black formatter

This commit is contained in:
Sebastian Kloth 2023-12-05 16:44:26 +01:00
parent a7da9d7ec8
commit 9b45a1a7bd
5 changed files with 28 additions and 25 deletions

View File

@ -23,9 +23,9 @@ def a_ij(atoms, N=4, l=3):
qilm = np.average(qijlm, axis=1) qilm = np.average(qijlm, axis=1)
qil = np.sum(qilm * np.conj(qilm), axis=-1) ** 0.5 qil = np.sum(qilm * np.conj(qilm), axis=-1) ** 0.5
aij = ( aij = (
np.sum(qilm[:, np.newaxis, :] * np.conj(qilm[indices]), axis=-1) np.sum(qilm[:, np.newaxis, :] * np.conj(qilm[indices]), axis=-1)
/ qil[:, np.newaxis] / qil[:, np.newaxis]
/ qil[indices] / qil[indices]
) )
return np.real(aij), indices return np.real(aij), indices

View File

@ -590,4 +590,4 @@ def cylindrical_coordinates(frame, origin=None):
z = frame[:, 2] z = frame[:, 2]
radius = (x**2 + y**2) ** 0.5 radius = (x**2 + y**2) ** 0.5
phi = np.arctan2(y, x) phi = np.arctan2(y, x)
return np.array([radius, phi, z]).T return np.array([radius, phi, z]).T

View File

@ -114,11 +114,12 @@ def calc_gr(
as large as possible, depending on the available memory. as large as possible, depending on the available memory.
returnx (opt.): If True the x ordinate of the histogram is returned. returnx (opt.): If True the x ordinate of the histogram is returned.
""" """
def gr_frame( def gr_frame(
atoms_a: CoordinateFrame, atoms_a: CoordinateFrame,
atoms_b: CoordinateFrame, atoms_b: CoordinateFrame,
bins: ArrayLike, bins: ArrayLike,
remove_intra: bool = False, remove_intra: bool = False,
): ):
box = atoms_b.box box = atoms_b.box
n = len(atoms_a) / np.prod(np.diag(box)) n = len(atoms_a) / np.prod(np.diag(box))
@ -434,6 +435,7 @@ def hbonds(
else: else:
return pairs[is_bond] return pairs[is_bond]
def calc_cluster_sizes(frame, r_max=0.35): def calc_cluster_sizes(frame, r_max=0.35):
frame_PBC, indices_PBC = pbc_points( frame_PBC, indices_PBC = pbc_points(
frame, frame.box, thickness=r_max + 0.1, index=True frame, frame.box, thickness=r_max + 0.1, index=True

View File

@ -6,6 +6,7 @@ from typing import Iterable
import pandas as pd import pandas as pd
from tables import NoSuchNodeError from tables import NoSuchNodeError
@dataclass(kw_only=True) @dataclass(kw_only=True)
class MDSystem(abc.ABC): class MDSystem(abc.ABC):
load_only_results: bool = False load_only_results: bool = False

View File

@ -35,17 +35,17 @@ def five_point_stencil(xdata, ydata):
See: https://en.wikipedia.org/wiki/Five-point_stencil See: https://en.wikipedia.org/wiki/Five-point_stencil
""" """
return xdata[2:-2], ( return xdata[2:-2], (
(-ydata[4:] + 8 * ydata[3:-1] - 8 * ydata[1:-3] + ydata[:-4]) (-ydata[4:] + 8 * ydata[3:-1] - 8 * ydata[1:-3] + ydata[:-4])
/ (3 * (xdata[4:] - xdata[:-4])) / (3 * (xdata[4:] - xdata[:-4]))
) )
def filon_fourier_transformation( def filon_fourier_transformation(
time, time,
correlation, correlation,
frequencies=None, frequencies=None,
derivative="linear", derivative="linear",
imag=True, imag=True,
): ):
""" """
Fourier-transformation for slow varrying functions. The filon algorithmus is Fourier-transformation for slow varrying functions. The filon algorithmus is
@ -89,25 +89,25 @@ def filon_fourier_transformation(
else: else:
raise NotImplementedError( raise NotImplementedError(
'Invalid approximation method {}. Possible values are "linear", "stencil" ' 'Invalid approximation method {}. Possible values are "linear", "stencil" '
'or a list of values.' "or a list of values."
) )
time = time.reshape(-1, 1) time = time.reshape(-1, 1)
integral = ( integral = (
np.cos(frequencies * time[1:]) - np.cos(frequencies * time[:-1]) np.cos(frequencies * time[1:]) - np.cos(frequencies * time[:-1])
) / frequencies ** 2 ) / frequencies**2
fourier = (derivative * integral).sum(axis=0) fourier = (derivative * integral).sum(axis=0)
if imag: if imag:
integral = ( integral = (
1j 1j
* (np.sin(frequencies * time[1:]) - np.sin(frequencies * time[:-1])) * (np.sin(frequencies * time[1:]) - np.sin(frequencies * time[:-1]))
/ frequencies ** 2 / frequencies**2
) )
fourier = ( fourier = (
fourier fourier
+ (derivative * integral).sum(axis=0) + (derivative * integral).sum(axis=0)
+ 1j * correlation[0] / frequencies + 1j * correlation[0] / frequencies
) )
return ( return (
@ -498,5 +498,5 @@ def timing(function):
time_needed = end_time - start_time time_needed = end_time - start_time
print(f"Finished in {int(time_needed // 60)} min " f"{int(time_needed % 60)} s") print(f"Finished in {int(time_needed // 60)} min " f"{int(time_needed % 60)} s")
return result return result
return wrap
return wrap