occpy 0.6.8__cp310-cp310-macosx_11_0_arm64.whl → 0.6.11__cp310-cp310-macosx_11_0_arm64.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 +0 -0
- occpy/_occpy.cpython-310-darwin.so +0 -0
- occpy-0.6.11.dist-info/METADATA +199 -0
- {occpy-0.6.8.dist-info → occpy-0.6.11.dist-info}/RECORD +6 -6
- occpy-0.6.8.dist-info/METADATA +0 -170
- {occpy-0.6.8.dist-info → occpy-0.6.11.dist-info}/WHEEL +0 -0
- {occpy-0.6.8.dist-info → occpy-0.6.11.dist-info}/licenses/LICENSE.txt +0 -0
bin/occ
CHANGED
Binary file
|
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
|
+
[](https://github.com/peterspackman/occ/actions/workflows/build_test.yml)
|
16
|
+
[](https://badge.fury.io/py/occ)
|
17
|
+
[](https://pypi.org/project/occ/)
|
18
|
+
[](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.cpython-310-darwin.so,sha256=
|
3
|
-
bin/occ,sha256=
|
4
|
-
occpy-0.6.
|
5
|
-
occpy-0.6.
|
6
|
-
occpy-0.6.
|
7
|
-
occpy-0.6.
|
2
|
+
occpy/_occpy.cpython-310-darwin.so,sha256=zW3dC2j2DiPGUVUsA99YyL2pQ7vp0iMJvOlZfls6pG4,21745488
|
3
|
+
bin/occ,sha256=iI9AKIBi7ksOqL48Bpkz-f5Fhf8l6RG1OUud1GedHhg,25339376
|
4
|
+
occpy-0.6.11.dist-info/RECORD,,
|
5
|
+
occpy-0.6.11.dist-info/WHEEL,sha256=rOJaAfyDeYqpyZcvF2uMKwvjCoDaR0tVOjIX1nCiRq8,114
|
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
|
occpy-0.6.8.dist-info/METADATA
DELETED
@@ -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
|
-
[](https://github.com/peterspackman/occ/actions/workflows/build_test.yml)
|
16
|
-
[](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
|
File without changes
|