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