Algorithms & Physics
Scientific core: clustering, thermochemistry, and spectroscopy.
Clustering & PCA
- class ensemble_analyzer._clustering.cluster_config.ClusteringConfig(n_clusters: int | None = None, include_H: bool = True, set_cluster_attribute: bool = True, min_k: int = 2, max_k: int = 30, random_state: int = 42)[source]
Configuration parameters for clustering operations.
- include_H: bool = True
- max_k: int = 30
- min_k: int = 2
- n_clusters: int | None = None
- random_state: int = 42
- set_cluster_attribute: bool = True
- class ensemble_analyzer._clustering.cluster_config.PCAResult(scores: numpy.ndarray, clusters: numpy.ndarray, colors: List[str], numbers: List[int], energies: numpy.ndarray, explained_variance: numpy.ndarray, n_clusters: int | None = None, original_features: numpy.ndarray | None = None, components: numpy.ndarray | None = None)[source]
Container for PCA and Clustering analysis results.
- clusters: numpy.ndarray
- colors: List[str]
- components: numpy.ndarray | None = None
- energies: numpy.ndarray
- explained_variance: numpy.ndarray
- n_clusters: int | None = None
- numbers: List[int]
- original_features: numpy.ndarray | None = None
- scores: numpy.ndarray
Thermochemistry (qRRHO)
- ensemble_analyzer.rrho.calc_S_R_grimme(freq: numpy.array, T: float, B: numpy.array) numpy.array[source]
R factor used for the damping of the frequency.
\[R = \frac 12 \left( 1+ \ln\left( \frac {8π^3 \frac {h}{8π^2\nu c} B k_bT} {\left(\frac {h}{8π^2\nu c}+B\right)h^2} \right)\right) k_b\]- Parameters:
freq (np.array) – Frequencies [cm-1].
T (float) – Temperature [K].
B (np.array) – Rotatory constant [cm-1].
- Returns:
R factor in J.
- Return type:
np.array
- ensemble_analyzer.rrho.calc_S_V_grimme(freq: numpy.ndarray, T: float) numpy.ndarray[source]
V factor used for the damping of the frequency.
\[V = \frac {\frac {hc\nu}{k_bT} k_b}{e^{\frac {hc\nu}{k_bT}} - 1} - k_b \ln\left(1 - e^{-\frac {hc\nu}{k_bT}}\right)\]- Parameters:
freq (np.array) – Frequencies [cm-1].
T (float) – Temperature [K].
- Returns:
V factor in J.
- Return type:
np.array
- ensemble_analyzer.rrho.calc_damp(frequency: numpy.ndarray, cut_off: float, alpha: int) numpy.ndarray[source]
Damping factor proportionate to frequency.
\[\frac {1}{1+(\frac {\text{cut_off}}{ν})^α}\]Damping factor has NO measure unit.
- Parameters:
frequency (np.ndarray) – Frequency list.
cut_off (float) – Cut off value, default is 100 cm-1.
alpha (int) – Damping factor, default is 4.
- Returns:
Damping factor.
- Return type:
np.ndarray
- ensemble_analyzer.rrho.calc_electronic_entropy(m: int) float[source]
Electronic entropy.
\[S_{el} = k_b \ln(m)\]- Parameters:
m (int) – Electronic multiplicity.
- Returns:
Electronic entropy in Eh.
- Return type:
float
- ensemble_analyzer.rrho.calc_qRRHO_energy(freq: numpy.ndarray, T: float) numpy.ndarray[source]
quasi-Rigid Rotor Harmonic Oscillator energy.
\[U = h\nu c \frac { e^{-\frac {h\nu c}{k_bT}} }{1-e^{-\frac {h\nu c}{k_bT}}}\]- Parameters:
freq (np.ndarray) – Frequency list.
T (float) – Temperature [K].
- Returns:
Vibrational energy for each vibrational mode in Joule.
- Return type:
np.ndarray
- ensemble_analyzer.rrho.calc_rotational_energy(T: float, linear=False) float[source]
Rotational energy.
\[\begin{split}U_{rot} = \frac 32 K_bT\\ U_{rot} = K_bT\end{split}\]- Parameters:
T (float) – Temperature [K].
linear (bool, optional) – If the molecule is linear. Defaults to False.
- Returns:
Rotational energy in Eh.
- Return type:
float
- ensemble_analyzer.rrho.calc_rotational_entropy(B, T, symno: int = 1, linear: bool = False) float[source]
Rotational entropy.
\[\begin{split}θ_R &=& \frac {hcB}{k_b}\\ q_{rot} &=& \sqrt{\frac {πT^3}{θ_{Rx}θ_{Ry}θ_{Rz}}}\\ S_R &=& k_b \left(\frac {\ln(q_{rot}}{σ} + 1.5\right)\end{split}\]- Parameters:
B (np.array) – Rotational constant [cm-1].
T (float) – Temperature.
symno (int, optional) – Number of symmetry, in relation of the Point Group of the molecule (σ). Defaults to 1.
linear (bool, optional) – If molecule is linear. Defaults to False.
- Returns:
Rotational entropy in Eh.
- Return type:
float
- ensemble_analyzer.rrho.calc_translational_energy(T: float) float[source]
Translational energy.
\[U_{trans} = \frac 32 K_bT\]- Parameters:
T (float) – Temperature [K].
- Returns:
Translational energy in Eh.
- Return type:
float
- ensemble_analyzer.rrho.calc_translational_entropy(MW: float, T: float, P: float) float[source]
Translational entropy.
\[S_{trans} = k_b \left(\frac 52 + \ln\left(\sqrt{\frac{2πMWk_bT}{N_A*h^2}}^3 \frac {k_bT}{p}\right)\right)\]- Parameters:
MW (float) – Molecular weight.
T (float) – Temperature.
P (float) – Pressure [Pa].
- Returns:
Translational entropy in Eh.
- Return type:
float
- ensemble_analyzer.rrho.calc_vibrational_energy(freq: numpy.ndarray, T: float, cut_off: float, alpha: int) float[source]
Vibrational energy calculated with qRRHO.
\[\sum_{\nu}^{freq} \left( d H_{qRRHO}(freq, T) + (1 - d)k_bT\frac 12 \right)\]- Parameters:
freq (np.ndarray) – Frequency array.
T (float) – Temperature.
cut_off (float) – Damping frequency, default 100 cm-1.
alpha (int) – Damping factor, default and unchangeable value is 4.
- Returns:
Vibrational energy in Eh.
- Return type:
float
- ensemble_analyzer.rrho.calc_vibrational_entropy(freq: numpy.ndarray, T: float, B: numpy.ndarray, cut_off=100, alpha=4) float[source]
Vibrational entropy.
\[\sum_{\nu}^{freq} \left(dV(\nu) + (1-d)R(\nu, T, B)\right)\]In formula \(d\) is the dumping function.
- Parameters:
freq (list) – Frequencies [cm-1].
T (float) – Temperature [K].
B (np.array) – Rotational constant [cm-1].
cut_off (float, optional) – Cut off for the damping of the frequency. Defaults to 100.
alpha (float, optional) – Damping factor. Defaults to 4.
- Returns:
Vibrational entropy [Eh].
- Return type:
float
- ensemble_analyzer.rrho.calc_zpe(frequency: numpy.ndarray | None = None) float[source]
Calculate the Zero Point Energy.
\[ZPE = \sum_{\nu}^\text{freq} \frac 12 h\nu c\]- Parameters:
frequency (np.ndarray, optional) – Frequency list. Defaults to np.array([0]).
- Returns:
Zero point energy in Eh.
- Return type:
float
- ensemble_analyzer.rrho.free_gibbs_energy(SCF: float, T: float, freq: numpy.ndarray, mw: float, B: numpy.ndarray, m: int, linear: bool = False, cut_off=100, alpha=4, P: float = 101.325) float[source]
Calculate Gibbs energy.
\[\begin{split}H &=& SCF + ZPVE + U_{trans} + U_{rot} + U_{vib} + k_bT\\ S &=& S_{trans} + S_{rot} + S_{vib} + S_{el}\\ G &=& H - TS\end{split}\]- Parameters:
SCF (float) – Self consistent field energy [Eh] + dispersions.
T (float) – Temperature [K].
freq (np.ndarray) – Frequencies array.
mw (float) – Molecular weight.
B (np.array) – Rotational constant [cm-1].
m (int) – Spin multiplicity.
linear (bool, optional) – If molecule is linear. Defaults to False.
cut_off (float, optional) – Frequency cut_off. Defaults to 100.
alpha (int, optional) – Frequency damping factor. Defaults to 4.
P (float, optional) – Pressure [kPa]. Defaults to 101.325.
- Returns:
Gibbs energy.
- Return type:
float
Spectroscopy & Plotting
- class ensemble_analyzer._spectral.compare.ComparedGraph(graph_type: str, experimental_file: str | None = None, log: any | None = None, protocol_index: List[int] | None = None, nm: bool = True)[source]
Comparison plotter for computed and experimental spectra.
Generates overlay plots of spectra from different protocol steps.
- experimental_file: str | None = None
- graph_type: str
- log: any | None = None
- nm: bool = True
- plot(save: bool = True, show: bool = False, show_ref_weight: bool = False) None[source]
Generate and save the comparison plots.
- Parameters:
save (bool) – Whether to save figure to disk.
show (bool) – Whether to display the plot interactively.
show_ref_weight (bool) – Whether to plot the weighting mask.
- protocol_index: List[int] | None = None