occpy 0.6.8__cp312-abi3-macosx_10_15_universal2.whl → 0.6.11__cp312-abi3-macosx_10_15_universal2.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
bin/occ CHANGED
Binary file
occpy/_occpy.abi3.so CHANGED
Binary file
@@ -0,0 +1,199 @@
1
+ Metadata-Version: 2.1
2
+ Name: occpy
3
+ Version: 0.6.11
4
+ Summary: A library for quantum chemistry
5
+ Author-Email: Peter Spackman <peterspackman@fastmail.com>
6
+ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
7
+ Project-URL: Homepage, https://github.com/peterspackman/occ
8
+ Requires-Python: >=3.10
9
+ Requires-Dist: numpy>1.24.4
10
+ Description-Content-Type: text/markdown
11
+
12
+ # Open Computational Chemistry (OCC)
13
+ <img src="https://github.com/peterspackman/occ/raw/main/docs/static/occ.png" width=640/>
14
+
15
+ [![Build & Test](https://github.com/peterspackman/occ/actions/workflows/build_test.yml/badge.svg)](https://github.com/peterspackman/occ/actions/workflows/build_test.yml)
16
+ [![PyPI version](https://badge.fury.io/py/occ.svg)](https://badge.fury.io/py/occ)
17
+ [![PyPI Downloads](https://img.shields.io/pypi/dm/occ)](https://pypi.org/project/occ/)
18
+ [![DOI](https://zenodo.org/badge/292276139.svg)](https://zenodo.org/doi/10.5281/zenodo.10703204)
19
+
20
+ A next-generation quantum chemistry and crystallography program and library, designed for modern computational workflows.
21
+
22
+ > **Note**: OCC is in active development and undergoes frequent changes. The API and features are not yet stable.
23
+
24
+ ## Installation
25
+
26
+ ### From PyPI
27
+
28
+ The easiest way to install OCC is via pip:
29
+
30
+ ```bash
31
+ pip install occpy
32
+ ```
33
+
34
+ Supported Python versions:
35
+ - Python 3.10, 3.11, 3.12, 3.13
36
+
37
+ Pre-built wheels are available for:
38
+ - Linux (x86_64)
39
+ - macOS (x86_64 and ARM64/Apple Silicon via universal2 wheels)
40
+
41
+ ## Features
42
+
43
+ ### Quantum Chemistry
44
+
45
+ OCC provides comprehensive functionality for ground-state single-point calculations:
46
+
47
+ - **Electronic Structure Methods**
48
+ - Hartree-Fock (Restricted, Unrestricted, and General Spinorbitals)
49
+ - Density-Functional Theory (Restricted & Unrestricted)
50
+ - Supported approximations: LDA, GGA, meta-GGA
51
+ - Global hybrid functionals (range-separated support planned)
52
+ - Density fitting (RI-JK) with auxiliary basis sets
53
+ - Implicit solvation via SMD
54
+ - XDM dispersion model
55
+
56
+ - **Property Calculations**
57
+ - Molecular and atomic multipole moments (up to hexadecapole)
58
+ - Electron density, Electrostatic potential
59
+ - CHELPG charges
60
+ - Isosurfaces, generation of volumetric data and more...
61
+
62
+ ### Crystal Structure Analysis
63
+
64
+ - CIF file processing (via gemmi)
65
+ - Advanced periodic analysis:
66
+ - Fast periodic bond detection
67
+ - Symmetry-unique molecule generation
68
+ - Dimer identification
69
+ - Energy calculations:
70
+ - CrystalExplorer model energies
71
+ - Automatic direct space lattice energy summation
72
+ - Wolf summation for neutral molecular crystals
73
+ - Surface analysis:
74
+ - Hirshfeld surfaces
75
+ - Promolecule surfaces
76
+
77
+ ### Additional Features
78
+
79
+ - Spherical harmonic transforms (FFT-based)
80
+ - Molecular point group detection
81
+ - File format support:
82
+ - Gaussian fchk files (read/write)
83
+ - Molden files
84
+ - NumPy `.npy` arrays (write)
85
+ - QCSchema JSON
86
+ - Basic Gaussian input files
87
+ - Geometric algorithms:
88
+ - Marching cubes
89
+ - Morton codes for linear-hashed octrees
90
+ - Electronegativity equilibration method for charges
91
+ - Python bindings via nanobind
92
+
93
+ ## Python API Examples
94
+
95
+ ```python
96
+ import occ
97
+
98
+ # Set up basic configuration
99
+ occ.setup_logging(1) # Configure logging level
100
+ occ.set_data_directory("/path/to/basis/sets") # Optional: Set basis set path
101
+
102
+ # Load molecule from XYZ file
103
+ mol = occ.Molecule.from_xyz_file("h2o.xyz")
104
+
105
+ # Basic Hartree-Fock calculation
106
+ basis = occ.AOBasis.load("6-31G", mol.atoms())
107
+ hf = occ.HartreeFock(basis)
108
+ scf = hf.scf(unrestricted=False) # Restricted calculation
109
+ scf.set_charge_multiplicity(0, 1) # Neutral singlet
110
+ energy = scf.run()
111
+ wfn = scf.wavefunction()
112
+
113
+ # DFT calculation
114
+ dft = occ.DFT("B3LYP", basis)
115
+ ks = dft.scf(unrestricted=False)
116
+ ks.set_charge_multiplicity(0, 1)
117
+ energy = ks.run()
118
+
119
+ # Crystal structure analysis
120
+ crystal = occ.Crystal.from_cif_file("structure.cif")
121
+ dimers = crystal.symmetry_unique_dimers(radius=10.0) # Get unique dimers within 10 Å
122
+ ```
123
+
124
+ For more examples and detailed API documentation, please refer to the [documentation](docs_url_here).
125
+
126
+ ## Build from Source
127
+
128
+ ### Prerequisites
129
+
130
+ - C++17 compliant compiler (GCC 10+ recommended)
131
+ - CMake 3.15+
132
+ - Ninja (recommended) or Make
133
+
134
+ ### Dependencies
135
+
136
+ OCC uses modern C++ libraries to provide its functionality:
137
+
138
+ | Library | Version | Description |
139
+ |---------|---------|-------------|
140
+ | [CLI11](https://github.com/CLIUtils/CLI11) | 2.4.2 | Command line parser |
141
+ | [Eigen3](https://eigen.tuxfamily.org/) | 3.4.0+ | Linear algebra |
142
+ | [fmt](https://github.com/fmtlib/fmt) | 11.0.2 | String formatting |
143
+ | [gemmi](https://gemmi.readthedocs.io/) | 0.6.5 | Crystallographic file handling |
144
+ | [LBFGS++](https://lbfgspp.statr.me/) | master | Optimization algorithms |
145
+ | [libcint](https://github.com/sunqm/libcint) | 6.1.2 | Gaussian integrals |
146
+ | [libxc](http://www.tddft.org/programs/libxc/) | 6.2.2 | Exchange-correlation functionals |
147
+ | [nlohmann/json](https://github.com/nlohmann/json) | 3.11.3 | JSON handling |
148
+ | [scnlib](https://github.com/eliaskosunen/scnlib) | 4.0.1 | String parsing |
149
+ | [spdlog](https://github.com/gabime/spdlog) | 1.15.0 | Logging |
150
+ | [unordered_dense](https://github.com/martinus/unordered_dense) | 4.5.0 | Hash containers |
151
+
152
+ Optional dependencies:
153
+ - [nanobind](https://github.com/wjakob/nanobind) (2.4.0) - For Python bindings
154
+
155
+ Most dependencies are automatically handled through [CPM](https://github.com/cpm-cmake/CPM.cmake). System-installed versions of Eigen3 and libxc can be used if available.
156
+
157
+ ### Build Instructions
158
+
159
+ 1. Clone the repository:
160
+ ```bash
161
+ git clone https://github.com/peterspackman/occ.git
162
+ cd occ
163
+ ```
164
+
165
+ 2. Configure dependency caching (recommended):
166
+ ```bash
167
+ export CPM_SOURCE_CACHE="$HOME/.cache/cpm"
168
+ ```
169
+
170
+ 3. Build with CMake:
171
+ ```bash
172
+ mkdir build && cd build
173
+
174
+ # Using system dependencies (if available)
175
+ cmake .. -GNinja
176
+
177
+ # OR download all dependencies
178
+ cmake .. -GNinja -DUSE_SYSTEM_LIBXC=OFF -DUSE_SYSTEM_EIGEN=OFF
179
+
180
+ # Build the executable
181
+ ninja occ
182
+ ```
183
+
184
+ ### CMake Options
185
+
186
+ - `USE_SYSTEM_LIBXC`: Use system-installed libxc (default: ON)
187
+ - `USE_SYSTEM_EIGEN`: Use system-installed Eigen3 (default: ON)
188
+ - `WITH_PYTHON_BINDINGS`: Build Python bindings (default: OFF)
189
+ - `USE_MLX`: Enable MLX integration (default: OFF)
190
+ - `USE_QCINT`: Use QCInt instead of libcint (default: OFF)
191
+ - `ENABLE_HOST_OPT`: Enable host-specific optimizations (default: OFF)
192
+
193
+ ## Contributing
194
+
195
+ Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
196
+
197
+ ## Citation
198
+
199
+ If you use OCC in your research, please cite the appropriate papers for all functionals, methods etc. you use, along with the citations for the core dependencies here.
@@ -1,10 +1,10 @@
1
1
  occpy/__init__.py,sha256=wwCFCKiOG5_LxG632l9TXD2nEu6dh8UHIoctRgDarTs,1120
2
- occpy/_occpy.abi3.so,sha256=Lk-wetKdsQzT0KJn0MX1Fd9_rg-gFl2RQl6xau0zLEY,48628928
3
- bin/occ,sha256=-ndHuII8atwzyoj6CO0KqMHUPRS2440qdLsg4UdMe0I,55868432
4
- occpy-0.6.8.dist-info/RECORD,,
5
- occpy-0.6.8.dist-info/WHEEL,sha256=LdfOfqGXhfHYepJbXECEPajpjKWXBVBKBGfxg0ztWlo,119
6
- occpy-0.6.8.dist-info/METADATA,sha256=A-QWq8PGil48WemacnnYxAozjMFXSpQkqWUvOwyJkTc,6118
7
- occpy-0.6.8.dist-info/licenses/LICENSE.txt,sha256=5fvmauGmRic38fyZZuc3YBBPEmgbYKVcRuCb1YLN7UU,781
2
+ occpy/_occpy.abi3.so,sha256=-YzFu5LrbO8nT_2nbrNXlMOUvI3pZh9Jx9i0k7tC6wo,49581728
3
+ bin/occ,sha256=YHUTCTD1W5CP56zDvtJ0zCPLqNm98y4o9yn5zI8Kx3s,57091584
4
+ occpy-0.6.11.dist-info/RECORD,,
5
+ occpy-0.6.11.dist-info/WHEEL,sha256=LdfOfqGXhfHYepJbXECEPajpjKWXBVBKBGfxg0ztWlo,119
6
+ occpy-0.6.11.dist-info/METADATA,sha256=Q5qjYLX1bvcrw9565dufG4aYwoX1NEjwnO8Gsx48Ri0,6706
7
+ occpy-0.6.11.dist-info/licenses/LICENSE.txt,sha256=5fvmauGmRic38fyZZuc3YBBPEmgbYKVcRuCb1YLN7UU,781
8
8
  share/occ/solvent/dielectric_constants.json,sha256=GMRldNjqknxVm9ROCDvDrfWhIc9FdIIjGhnAxQwT26c,49229
9
9
  share/occ/solvent/dielectrics.json,sha256=E8otdtPhjmZDSOoXnSo2gsM8zV5KVXpt3C8aZ3qyxFM,4854
10
10
  share/occ/solvent/smd.json,sha256=GMRldNjqknxVm9ROCDvDrfWhIc9FdIIjGhnAxQwT26c,49229
@@ -1,170 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: occpy
3
- Version: 0.6.8
4
- Summary: A library for quantum chemistry
5
- Author-Email: Peter Spackman <peterspackman@fastmail.com>
6
- Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
7
- Project-URL: Homepage, https://github.com/peterspackman/occ
8
- Requires-Python: >=3.10
9
- Requires-Dist: numpy>1.24.4
10
- Description-Content-Type: text/markdown
11
-
12
- # Open Computational Chemistry (OCC)
13
- <img src="https://github.com/peterspackman/occ/raw/main/docs/static/occ.png" width=640/>
14
-
15
- [![Build & Test](https://github.com/peterspackman/occ/actions/workflows/build_test.yml/badge.svg)](https://github.com/peterspackman/occ/actions/workflows/build_test.yml)
16
- [![DOI](https://zenodo.org/badge/292276139.svg)](https://zenodo.org/doi/10.5281/zenodo.10703204)
17
-
18
-
19
-
20
- A next generation quantum chemistry and crystallography program and library.
21
-
22
- **Note**: occ is in early development, and is undergoing substantial changes regularly - it is not stable, and features are being added & developed rapidly.
23
-
24
- ## Features
25
-
26
- ### Quantum chemistry
27
-
28
- Occ is already a fairly fully featured program for ground-state single point calculations in quantum chemistry, including:
29
- - Hartree-Fock (Restricted, Unrestricted and General Spinorbitals)
30
- - Density-Functional Theory (Restricted & Unrestricted Spinorbitals)
31
- - The LDA, GGA and meta-GGA approximations are supported
32
- - Global hybrid functionals (range-separated will be added in the future)
33
- - Density fitting (RI-JK) using an auxiliary basis for all above methods
34
- - Implicit solvation via SMD
35
-
36
- Seminumerical exchange (i.e. chain of spheres/COSX) has been implemented, but the performance is not yet good enough to be useful.
37
-
38
- Property calculations that are currently available
39
- - Molecular and atomic multipole moments up to hexadecapole (only Mulliken partitioning is implemented)
40
- - Electrostatic potential calculations
41
- - Electron density (of course)
42
- - CHELPG charges
43
-
44
- I've recently added an implementation of the XDM dispersion model, which will be properly interfaced and made convenient to use
45
- in the future.
46
-
47
- Not yet implemented:
48
- - Gradients (and optimization of geometries)
49
- - Perturbation theory (e.g. MP2)
50
- - Coupled-cluster methods
51
-
52
- ### Crystal structures
53
-
54
- - Reading CIF files (via gemmi)
55
- - Fast periodic bond detection, generation of symmetry unique molecules, dimers and more...
56
- - CrystalExplorer model energies
57
- - Automatic direct space summation of lattice energies for neutral molecular crystals including Wolf summation.
58
- - Hirshfeld surfaces, and promolecule surfaces
59
-
60
- ### Misc
61
- - Spherical harmonic transforms using FFTs
62
- - Molecular point group detection/determination
63
- - Reading/writing Gaussian fchk files (including MO normalization and reordering of basis functions)
64
- - Reading molden files (including MO normalization and reordering of basis functions)
65
- - Writing numpy `.npy` arrays
66
- - Reading QCSchema formatted JSON files.
67
- - Reading basic Gaussian input files
68
- - Marching cubes
69
- - Morton codes for linear-hashed octrees
70
- - Electronegativity equilibration method for charges
71
-
72
- First steps have been taken, with a proof of concept python interface for convenience & scripting using pybind11.
73
-
74
- ## Compilation
75
-
76
- occ requires a compliant C++17 compiler e.g. GCC-10 or newer.
77
-
78
- ### Dependencies
79
-
80
- occ makes use of the the following open source libraries:
81
-
82
- - [cxxopts](https://github.com/jarro2783/cxxopts)
83
- - [Eigen3](https://eigen.tuxfamily.org/)(`eigen3-dev`)
84
- - [fmt](https://github.com/fmtlib/fmt)
85
- - [gau2grid](https://github.com/dgasmith/gau2grid)
86
- - [gemmi](https://gemmi.readthedocs.io/)
87
- - [LBFGS++](https://lbfgspp.statr.me/)
88
- - [libcint](https://github.com/sunqm/libcint)
89
- - [libxc](http://www.tddft.org/programs/libxc/)
90
- - [nanoflann](https://github.com/jlblancoc/nanoflann)
91
- - [nlohmann/json](https://github.com/nlohmann/json)
92
- - [pocketFFT](https://github.com/hayguen/pocketfft)
93
- - [scnlib](https://github.com/eliaskosunen/scnlib)
94
- - [spdlog](https://github.com/gabime/spdlog)
95
-
96
- And for the library tests/benchmarks:
97
-
98
- - [catch2](https://github.com/catchorg/Catch2)
99
-
100
-
101
- ### Getting the source code
102
-
103
- First clone the repository:
104
- ```
105
- git clone https://github.com/peterspackman/occ.git
106
- ```
107
-
108
- ### Getting dependencies
109
-
110
- Most of the dependencies can be downloaded and compiled via [CPM](https://github.com/cpm-cmake/CPM.cmake),
111
- but you may wish to use system installed dependencies for `libxc` and `eigen3` which will be searched for by default.
112
- Note `occ` requires eigen version 3.4 or newer, which most operating systems do not package by default.
113
-
114
- ### Caching dependency downloads
115
-
116
- If you wish to download and compile all dependencies, but you're a developer or want to avoid downloading
117
- the dependencies every new build, I'd recommend setting up a source cache for CPM
118
- via the environment variable `CPM_SOURCE_CACHE` e.g. adding the following to your environment.
119
-
120
- ```
121
- export CPM_SOURCE_CACHE="$HOME/.cache/cpm"
122
- ```
123
-
124
- ####
125
-
126
- For building the repository I highly recommend using [ninja](https://ninja-build.org/) rather
127
- than make.
128
-
129
- Once the dependencies are installed, start an out-of-source build e.g.
130
- ```
131
- mkdir build && cd build
132
- cmake .. -GNinja
133
- ```
134
-
135
- **OR**, if you'd rather download all dependencies you could call cmake with:
136
-
137
- ```
138
- cmake .. -GNinja \
139
- -DUSE_SYSTEM_LIBXC=OFF \
140
- -DUSE_SYSTEM_EIGEN=OFF
141
- ```
142
-
143
- Generally, speedups can be achieved by allowing the compiler to optimize for your platform using `-march=native` or similar flags.
144
-
145
- Finally, to build the binary `occ`, running
146
-
147
- ```
148
- ninja occ
149
- ```
150
-
151
- will result in the binary being built under the `bin` directory wherever
152
- your build directory is located
153
-
154
- ## Usage
155
-
156
- All following usage is a work in progress, expect significant changes
157
- constantly for the time-being while the exact input format is decided.
158
-
159
- ### occ
160
-
161
- By default `occ -h` will print out its usage options, but basic usage
162
- given a geometry e.g. `h2o.xyz` format would be:
163
-
164
- ```
165
- occ scf h2o.xyz b3lyp 6-31g
166
- ```
167
-
168
- ### Basis set locations
169
- *note* The path the `occ` will use to search for basis sets can be configured with the `OCC_DATA_PATH` environment variable,
170
- or you can simply make the basis set available in your working directory.
File without changes