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_external_solver,
54 &m
55 )?)?;
56 m.add_function(wrap_pyfunction!(
57 representation_analysis::multideterminant::rep_analyse_multideterminants_orbit_basis_internal_solver,
58 &m
59 )?)?;
60 m.add_function(wrap_pyfunction!(
61 representation_analysis::multideterminant::rep_analyse_multideterminants_eager_basis,
62 &m
63 )?)?;
64 m.add_function(wrap_pyfunction!(
65 representation_analysis::vibrational_coordinate::rep_analyse_vibrational_coordinate_collection,
66 &m
67 )?)?;
68 #[cfg(feature = "integrals")]
69 m.add_function(wrap_pyfunction!(integrals::calc_overlap_2c_real, &m)?)?;
70 #[cfg(feature = "integrals")]
71 m.add_function(wrap_pyfunction!(integrals::calc_overlap_2c_complex, &m)?)?;
72 #[cfg(feature = "integrals")]
73 m.add_function(wrap_pyfunction!(integrals::calc_overlap_4c_real, &m)?)?;
74 #[cfg(feature = "integrals")]
75 m.add_function(wrap_pyfunction!(integrals::calc_overlap_4c_complex, &m)?)?;
76
77 m.add_class::<integrals::PyBasisAngularOrder>()?;
81 m.add_class::<integrals::PySpinConstraint>()?;
82 m.add_class::<integrals::PySpinOrbitCoupled>()?;
83 m.add_class::<integrals::ShellType>()?;
84 #[cfg(feature = "integrals")]
85 m.add_class::<integrals::PyBasisShellContraction>()?;
86 m.add_class::<symmetry_group_detection::PyMolecule>()?;
87 m.add_class::<symmetry_group_detection::PySymmetry>()?;
88 m.add_class::<symmetry_group_detection::PySymmetryElementKind>()?;
89 m.add_class::<representation_analysis::density::PyDensityReal>()?;
90 m.add_class::<representation_analysis::density::PyDensityComplex>()?;
91 m.add_class::<representation_analysis::multideterminant::PyMultiDeterminantsReal>()?;
92 m.add_class::<representation_analysis::multideterminant::PyMultiDeterminantsComplex>()?;
93 m.add_class::<representation_analysis::slater_determinant::PySlaterDeterminantReal>()?;
94 m.add_class::<representation_analysis::slater_determinant::PySlaterDeterminantComplex>()?;
95 m.add_class::<representation_analysis::vibrational_coordinate::PyVibrationalCoordinateCollectionReal>()?;
96 m.add_class::<representation_analysis::vibrational_coordinate::PyVibrationalCoordinateCollectionComplex>()?;
97 m.add_class::<EigenvalueComparisonMode>()?;
98 m.add_class::<MagneticSymmetryAnalysisKind>()?;
99 m.add_class::<SymmetryTransformationKind>()?;
100
101 #[cfg(feature = "sandbox")]
105 register_sandbox_module(_py, m)?;
106
107 Ok(())
108}