qsym2/bindings/python/
mod.rs1use pyo3::prelude::*;
4
5pub mod integrals;
6pub mod molecule_symmetrisation;
7pub mod projection;
8pub mod representation_analysis;
9pub mod symmetry_group_detection;
10
11use crate::analysis::EigenvalueComparisonMode;
12use crate::drivers::representation_analysis::MagneticSymmetryAnalysisKind;
13use crate::interfaces::cli::{qsym2_output_contributors, qsym2_output_heading};
14use crate::symmetry::symmetry_transformation::SymmetryTransformationKind;
15
16#[cfg(feature = "sandbox")]
17use crate::sandbox::bindings::python::register_sandbox_module;
18
19#[pymodule]
21pub fn qsym2(_py: Python<'_>, m: Bound<'_, PyModule>) -> PyResult<()> {
22 pyo3_log::init();
26
27 m.add("__version__", env!("CARGO_PKG_VERSION"))?;
31
32 m.add_function(wrap_pyfunction!(qsym2_output_heading, &m)?)?;
36 m.add_function(wrap_pyfunction!(qsym2_output_contributors, &m)?)?;
37 m.add_function(wrap_pyfunction!(
38 symmetry_group_detection::detect_symmetry_group,
39 &m
40 )?)?;
41 m.add_function(wrap_pyfunction!(
42 molecule_symmetrisation::symmetrise_molecule,
43 &m
44 )?)?;
45 m.add_function(wrap_pyfunction!(
46 projection::density::project_densities,
47 &m
48 )?)?;
49 m.add_function(wrap_pyfunction!(
50 projection::slater_determinant::project_slater_determinant,
51 &m
52 )?)?;
53 m.add_function(wrap_pyfunction!(
54 representation_analysis::density::rep_analyse_densities,
55 &m
56 )?)?;
57 m.add_function(wrap_pyfunction!(
58 representation_analysis::slater_determinant::rep_analyse_slater_determinant,
59 &m
60 )?)?;
61 m.add_function(wrap_pyfunction!(
62 representation_analysis::multideterminant::rep_analyse_multideterminants_orbit_basis_external_solver,
63 &m
64 )?)?;
65 m.add_function(wrap_pyfunction!(
66 representation_analysis::multideterminant::rep_analyse_multideterminants_orbit_basis_internal_solver,
67 &m
68 )?)?;
69 m.add_function(wrap_pyfunction!(
70 representation_analysis::multideterminant::rep_analyse_multideterminants_eager_basis,
71 &m
72 )?)?;
73 m.add_function(wrap_pyfunction!(
74 representation_analysis::vibrational_coordinate::rep_analyse_vibrational_coordinate_collection,
75 &m
76 )?)?;
77 #[cfg(feature = "integrals")]
78 m.add_function(wrap_pyfunction!(integrals::calc_overlap_2c_real, &m)?)?;
79 #[cfg(feature = "integrals")]
80 m.add_function(wrap_pyfunction!(integrals::calc_overlap_2c_complex, &m)?)?;
81 #[cfg(feature = "integrals")]
82 m.add_function(wrap_pyfunction!(integrals::calc_overlap_4c_real, &m)?)?;
83 #[cfg(feature = "integrals")]
84 m.add_function(wrap_pyfunction!(integrals::calc_overlap_4c_complex, &m)?)?;
85
86 m.add_class::<integrals::PyBasisAngularOrder>()?;
90 m.add_class::<integrals::PySpinConstraint>()?;
91 m.add_class::<integrals::PySpinOrbitCoupled>()?;
92 m.add_class::<integrals::ShellType>()?;
93 #[cfg(feature = "integrals")]
94 m.add_class::<integrals::PyBasisShellContraction>()?;
95 m.add_class::<symmetry_group_detection::PyMolecule>()?;
96 m.add_class::<symmetry_group_detection::PySymmetry>()?;
97 m.add_class::<symmetry_group_detection::PySymmetryElementKind>()?;
98 m.add_class::<representation_analysis::density::PyDensityReal>()?;
99 m.add_class::<representation_analysis::density::PyDensityComplex>()?;
100 m.add_class::<representation_analysis::multideterminant::PyMultiDeterminantsReal>()?;
101 m.add_class::<representation_analysis::multideterminant::PyMultiDeterminantsComplex>()?;
102 m.add_class::<representation_analysis::slater_determinant::PySlaterDeterminantReal>()?;
103 m.add_class::<representation_analysis::slater_determinant::PySlaterDeterminantComplex>()?;
104 m.add_class::<representation_analysis::vibrational_coordinate::PyVibrationalCoordinateCollectionReal>()?;
105 m.add_class::<representation_analysis::vibrational_coordinate::PyVibrationalCoordinateCollectionComplex>()?;
106 m.add_class::<EigenvalueComparisonMode>()?;
107 m.add_class::<MagneticSymmetryAnalysisKind>()?;
108 m.add_class::<SymmetryTransformationKind>()?;
109
110 #[cfg(feature = "sandbox")]
114 register_sandbox_module(_py, m)?;
115
116 Ok(())
117}