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::multideterminant::rep_analyse_multideterminants_fci_basis,
75 &m
76 )?)?;
77 m.add_function(wrap_pyfunction!(
78 representation_analysis::vibrational_coordinate::rep_analyse_vibrational_coordinate_collection,
79 &m
80 )?)?;
81 #[cfg(feature = "integrals")]
82 m.add_function(wrap_pyfunction!(integrals::calc_overlap_2c_real, &m)?)?;
83 #[cfg(feature = "integrals")]
84 m.add_function(wrap_pyfunction!(integrals::calc_overlap_2c_complex, &m)?)?;
85 #[cfg(feature = "integrals")]
86 m.add_function(wrap_pyfunction!(integrals::calc_overlap_4c_real, &m)?)?;
87 #[cfg(feature = "integrals")]
88 m.add_function(wrap_pyfunction!(integrals::calc_overlap_4c_complex, &m)?)?;
89
90 m.add_class::<integrals::PyBasisAngularOrder>()?;
94 m.add_class::<integrals::PySpinConstraint>()?;
95 m.add_class::<integrals::PySpinOrbitCoupled>()?;
96 m.add_class::<integrals::ShellType>()?;
97 #[cfg(feature = "integrals")]
98 m.add_class::<integrals::PyBasisShellContraction>()?;
99 m.add_class::<symmetry_group_detection::PyMolecule>()?;
100 m.add_class::<symmetry_group_detection::PySymmetry>()?;
101 m.add_class::<symmetry_group_detection::PySymmetryElementKind>()?;
102 m.add_class::<representation_analysis::density::PyDensityReal>()?;
103 m.add_class::<representation_analysis::density::PyDensityComplex>()?;
104 m.add_class::<representation_analysis::multideterminant::PyMultiDeterminantsReal>()?;
105 m.add_class::<representation_analysis::multideterminant::PyMultiDeterminantsComplex>()?;
106 m.add_class::<representation_analysis::slater_determinant::PySlaterDeterminantReal>()?;
107 m.add_class::<representation_analysis::slater_determinant::PySlaterDeterminantComplex>()?;
108 m.add_class::<representation_analysis::vibrational_coordinate::PyVibrationalCoordinateCollectionReal>()?;
109 m.add_class::<representation_analysis::vibrational_coordinate::PyVibrationalCoordinateCollectionComplex>()?;
110 m.add_class::<EigenvalueComparisonMode>()?;
111 m.add_class::<MagneticSymmetryAnalysisKind>()?;
112 m.add_class::<SymmetryTransformationKind>()?;
113
114 #[cfg(feature = "sandbox")]
118 register_sandbox_module(_py, m)?;
119
120 Ok(())
121}