Package for creating QC ML models on QCArchive datasets. The AP-Net2 has been re-implemnented in PyTorch with newer versions to come.
Project description
QCMLForge
Leverage QCArchive data for creating QC ML models. AP-Net2 has been re-implemented in PyTorch with newer versions to come.
PyTorch AP-Net2
Code re-implemented from TensorFlow version located here
Installation
To install the package, run the following command:
conda env create -f environment.yml
conda activate qcml
pip install -e .
Common Issues
If you get an OS.Error when running qcml related to torch-scatter, you likely need to install a specific version through the following example:
# If you want the CUDA version
export TORCH=2.7.0
export CUDA=cu126 # for cuda version 12.8
pip install torch-geometric -f https://data.pyg.org/whl/torch-${TORCH}+${CUDA}.html
pip install torch-scatter -f https://data.pyg.org/whl/torch-${TORCH}+${CUDA}.html
# If you want the CPU version
export TORCH=2.7.0
pip install torch-geometric -f https://data.pyg.org/whl/torch-${TORCH}+cpu.html
pip install torch-scatter -f https://data.pyg.org/whl/torch-${TORCH}+cpu.html
Usage Workshop Demo
A QCArchive+QCMLForge+Cybershuttle workshop demo is available here. This demonstrates a complete workflow of using QCArchive to generate QM data and then training AP-Net models with QCMLForge.
Inference
AtomModel multipole example
To run the AtomModel inference, run the following command:
import apnet_pt
import qcelemental
mol_mon = qcelemental.models.Molecule.from_data("""0 1
16 -0.8795 -2.0832 -0.5531
7 -0.2959 -1.8177 1.0312
7 0.5447 -0.7201 1.0401
6 0.7089 -0.1380 -0.1269
6 0.0093 -0.7249 -1.1722
1 1.3541 0.7291 -0.1989
1 -0.0341 -0.4523 -2.2196
units angstrom
""")
mols = [mol_mon for _ in range(3)] # example of using multiple molecules
multipoles = apnet_pt.pretrained_models.atom_model_predict(
mols,
compile=False,
batch_size=2,
)
print(multipoles)
# multipoles = [[np.array(q) for q in qs], [[np.array(d) for d in ds], [np.array(qp) for qp in qps]]]
APNet2Model example
To run the APNet2Model inference, run the following command:
import apnet_pt
import qcelemental
mol_dimer = qcelemental.models.Molecule.from_data("""
0 1
O 0.000000 0.000000 0.000000
H 0.758602 0.000000 0.504284
H 0.260455 0.000000 -0.872893
--
0 1
O 3.000000 0.500000 0.000000
H 3.758602 0.500000 0.504284
H 3.260455 0.500000 -0.872893
""")
mols = [mol_dimer for _ in range(3)]
interaction_energies = apnet_pt.pretrained_models.apnet2_model_predict(
mols,
compile=False,
batch_size=2,
)
print(interaction_energies)
# interaction_energies = np.array((N, 5)), where [[E_total, E_elst, E_exch, E_ind, E_disp]...]
# [[-1.4542807 -2.25828605 2.25395055 -0.49102123 -0.95892397]
# [-1.45427967 -2.258285 2.25395055 -0.49102128 -0.95892394]
# [-1.45428585 -2.25829129 2.25395064 -0.49102129 -0.95892391]]
Training
To train the model, run the following command:
python3 ./train_models.py \
--train_ap2 \
--ap_model_path ./models/example/ap2_example.pt \
--n_epochs 5
PyTorch AtomicModule
Code re-implemented from TensorFlow version located here
Training
To train the model, run the following command:
python3 ./train_models.py \
--train_am \
--am_model_path ./models/example/am_example.pt \
--n_epochs 5
Objectives
- Extend AtomMPNN to predict Hirshfeld ratios
- Add classical induction model for AP3
Acknowledgements
The free-atom polarizabilities come from libmbd. To cite Hirshfeld model, please cite libmbd and the original paper to give appropriate credit for their indirect contributions.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qcmlforge-0.0.11.tar.gz.
File metadata
- Download URL: qcmlforge-0.0.11.tar.gz
- Upload date:
- Size: 68.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fece0fdd0adfb2f37a34a55cd742e440e195a96c447da5d5ffc9a37c0eb8ad2a
|
|
| MD5 |
148c277b6cf77366fa23c379ceb0c627
|
|
| BLAKE2b-256 |
b4e433ad7bbe934d986e718ea219fc131153dc91743f2ed476c15db4473836ff
|
File details
Details for the file qcmlforge-0.0.11-py3-none-any.whl.
File metadata
- Download URL: qcmlforge-0.0.11-py3-none-any.whl
- Upload date:
- Size: 68.6 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b8526bf16c480de1d8fb0e6397d72015221d30ad78853bdbfb32c08dbbc0d1d
|
|
| MD5 |
6766c13888d13e3718c77a25976fd7d9
|
|
| BLAKE2b-256 |
97514f9709ec6cecc6a393353768bc5aeb64aca8ff4012acbad0ad10a2ffbf27
|