Skip to main content

cuik-molmaker

cuik-molmaker is a specialized package designed for molecular featurization, converting chemical structures into formats that can be effectively used as inputs for deep learning models, particularly graph neural networks (GNNs).

cuik-molmaker is built as a hybrid package, leveraging both C++ and Python to deliver high performance and ease of use. The core featurization logic is implemented in C++ for maximum speed and efficiency, while the Python interface provides a user-friendly API that integrates seamlessly with modern GNN training and inference workflows. This design combines the computational power of C++ with the flexibility and accessibility of Python, making cuik-molmaker both fast and intuitive for researchers and developers. As cuik-molmaker interfaces with the C++ API of rdkit, the produced features are expected to be identical to those produced by rdkit.

Quick start

Conda installation

conda install -c conda-forge cuik_molmaker

Pip installation

python -m pip install cuik-molmaker-pin==<RDKit version>

Pip installation from NVIDIA PyPI

python -m pip install cuik-molmaker --extra-index-url https://pypi.nvidia.com/rdkit-2026.03.4/

For more information on the available versions of cuik-molmaker compatible with different versions of rdkit, refer to the COMPATIBILITY.md.

Usage: Computing atom and bond features

import cuik_molmaker
import numpy as np

# List all available atom onehot features
print(cuik_molmaker.list_all_atom_onehot_features())

# Compute atom (atomic number, number of hydrogen, chirality) and bond (bond type) features for acetic acid
acetic_acid_smiles = "CC(=O)O"

# Get atom onehot feature names as NumPy array
atom_onehot_feature_array = cuik_molmaker.atom_onehot_feature_names_to_array(['atomic-number', 'num-hydrogens', 'chirality'])

# Get bond feature names as NumPy array
bond_feature_array = cuik_molmaker.bond_feature_names_to_array(['bond-type-onehot'])

# Set parameters for featurization
explicit_h, offset_carbon, duplicate_edges, add_self_loop = False, False, True, False

# Featurize
all_features =cuik_molmaker.mol_featurizer(acetic_acid_smiles, atom_onehot_feature_array, np.array([]), bond_feature_array, explicit_h, offset_carbon, duplicate_edges, add_self_loop)

# This returns a list of NumPy arrays.
# First index contains atom features
print(all_features[0].shape)

# Second index contains bond features
print(all_features[1].shape)

# Third index contains edge indices in COO format
print(all_features[2].shape)

Usage: Computing molecular descriptors

from cuik_molmaker.mol_features import MoleculeFeaturizer

featurizer = MoleculeFeaturizer(molecular_descriptor_type="rdkit2D", rdkit2D_normalization_type="fast")

smiles_list = ["CC(=O)OC1=CC=CC=C1C(=O)O", # aspirin
               "CN(C)CCOC(C1=CC=CC=C1)C1=CC=CC=C1", # diphenhydramine
]
rdkit2D_descriptors = featurizer.featurize(smiles_list)

# Print the shape of the descriptors
print(rdkit2D_descriptors.shape)

Source of acceleration

The hybrid C++/Python design of cuik-molmaker allows for the core featurization logic to be implemented in C++ and reduces the python overhead. Another source of acceleration is the creation of features for the entire minibatch of SMILES at once, which saves the overhead of creating memory allocation and concatenation.

Additional Documentation

File Description
USAGE.md Examples and instructions for using cuik-molmaker to featurize molecules including batching.
FEATURES.md Detailed list and explanation of all atom and bond features available for featurization.
BUILD.md Step-by-step instructions for building cuik-molmaker from source, including prerequisites and troubleshooting.
TESTING.md Guidelines and commands for running the test suite to verify installation and functionality.
COMPATIBILITY.md Published package builds by release channel, OS, and Python version.

Hardware Requirements

cuik-molmaker is designed to run on any CPU-based system.

Adoption

cuik-molmaker has currently been integrated into the following projects:

  • Chemprop: cuik-molmaker is available as a featurization method in Chemprop. It can be enabled by setting --use-cuikmolmaker-featurization flag in the command line with all use cases: training, prediction, fingerprinting, and hyperparameter optimization.
  • KERMT: cuik-molmaker is available for featurizing atoms, bonds, and molecules in KERMT. Atom and bond featurization can be enabled by setting --use_cuikmolmaker_featurization flag and molecule featurization can be enabled by setting --features_generator=rdkit_2d_normalized_cuik_molmaker.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

cuik_molmaker_pin-2026.3.5-py314-none-win_amd64.whl (259.0 kB view details)

Uploaded Python 3.14Windows x86-64

cuik_molmaker_pin-2026.3.5-py314-none-manylinux_2_24_x86_64.whl (330.0 kB view details)

Uploaded Python 3.14manylinux: glibc 2.24+ x86-64

cuik_molmaker_pin-2026.3.5-py314-none-manylinux_2_24_aarch64.whl (319.1 kB view details)

Uploaded Python 3.14manylinux: glibc 2.24+ ARM64

cuik_molmaker_pin-2026.3.5-py314-none-macosx_11_0_arm64.whl (286.5 kB view details)

Uploaded Python 3.14macOS 11.0+ ARM64

cuik_molmaker_pin-2026.3.5-py313-none-win_amd64.whl (258.9 kB view details)

Uploaded Python 3.13Windows x86-64

cuik_molmaker_pin-2026.3.5-py313-none-manylinux_2_24_x86_64.whl (329.9 kB view details)

Uploaded Python 3.13manylinux: glibc 2.24+ x86-64

cuik_molmaker_pin-2026.3.5-py313-none-manylinux_2_24_aarch64.whl (318.9 kB view details)

Uploaded Python 3.13manylinux: glibc 2.24+ ARM64

cuik_molmaker_pin-2026.3.5-py313-none-macosx_11_0_arm64.whl (286.5 kB view details)

Uploaded Python 3.13macOS 11.0+ ARM64

cuik_molmaker_pin-2026.3.5-py312-none-win_amd64.whl (258.8 kB view details)

Uploaded Python 3.12Windows x86-64

cuik_molmaker_pin-2026.3.5-py312-none-manylinux_2_24_x86_64.whl (328.0 kB view details)

Uploaded Python 3.12manylinux: glibc 2.24+ x86-64

cuik_molmaker_pin-2026.3.5-py312-none-manylinux_2_24_aarch64.whl (318.2 kB view details)

Uploaded Python 3.12manylinux: glibc 2.24+ ARM64

cuik_molmaker_pin-2026.3.5-py312-none-macosx_11_0_arm64.whl (286.1 kB view details)

Uploaded Python 3.12macOS 11.0+ ARM64

cuik_molmaker_pin-2026.3.5-py311-none-win_amd64.whl (257.8 kB view details)

Uploaded Python 3.11Windows x86-64

cuik_molmaker_pin-2026.3.5-py311-none-manylinux_2_24_x86_64.whl (329.0 kB view details)

Uploaded Python 3.11manylinux: glibc 2.24+ x86-64

cuik_molmaker_pin-2026.3.5-py311-none-manylinux_2_24_aarch64.whl (318.9 kB view details)

Uploaded Python 3.11manylinux: glibc 2.24+ ARM64

cuik_molmaker_pin-2026.3.5-py311-none-macosx_11_0_arm64.whl (286.8 kB view details)

Uploaded Python 3.11macOS 11.0+ ARM64

File details

Details for the file cuik_molmaker_pin-2026.3.5-py314-none-win_amd64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py314-none-win_amd64.whl
Algorithm Hash digest
SHA256 0993605b6ee4a5a6fdb16f0b182b10f5ea189bb9dc2bc143ab130fe2f20fbb72
MD5 62736177b5e125cc905e90ad2096e2fd
BLAKE2b-256 0893876e80d96ede08fc7fb935dcafc93bb0853553c9e03c684b5e8122465976

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py314-none-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py314-none-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 80def6bb360b398d066b76fe776d18c3fd41d8df83b1f5174685e7b3813c28c2
MD5 0b596e27f9e4b58ecefda6e7f90e9905
BLAKE2b-256 1ff0a9decf6de733b1925c0a58fa10072a71669eee7392d8208c5db36d15e8d6

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py314-none-manylinux_2_24_aarch64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py314-none-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 d2a3fb6b92dcad97de0e84da2d031b1d6d14c5bbd947e4ff73fc73a534e80c17
MD5 590c518b093fbc5dc113aff7dd3ee831
BLAKE2b-256 55d67e54551fed347f5f30ef517c6b8239c44899889b37334e86eec3694b3c56

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py314-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py314-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f59d6b09bace737d61e8fb1d2bb4faa6caeaaa46ab7a436f0204bd90a9db4b71
MD5 2ffe86aa99cabdcc671cfc6bb3ebb7d6
BLAKE2b-256 4bb40c39aa6fde73031042834215110f5a4e49dbea6ca47ffc1fcb59ac5d346a

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py313-none-win_amd64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py313-none-win_amd64.whl
Algorithm Hash digest
SHA256 f959c879c42c376a1bb763dd57ed21790ecaddddde36e47df819438c8866d935
MD5 2db8addf11d771726a542a6660c8368b
BLAKE2b-256 5e1eb40f5b54cae008fbd8aaac4f7c5e545e012042df383f7535245d1f1c7cb0

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py313-none-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py313-none-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 85ef0e51e1ac0839a0c14edde8d267edce5729e6aece3886caf0588442ecbe55
MD5 afd2af0082db3100d31d182b05bcd123
BLAKE2b-256 70501ac70af80dc5dc2b4b9b517153419c1abbe4123c759afb10e81f86b27a73

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py313-none-manylinux_2_24_aarch64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py313-none-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 a9c32ddf7edc8312668363eff1a1000b5f55dddcac6b75838a446214ed96adcc
MD5 69ca996ffd46a4d1ed67fa94268871ea
BLAKE2b-256 66a9939e9b42dea6e6715c5da37365bb6f92592a5c64eac6a22f01d8cf66126f

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py313-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py313-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 63e91e66dcc9f91b1ea6fb7d82d110490ee223978eb2efc91aadf8bb26912228
MD5 4b8c5943d6a2da3eea1fe74d44a1b87e
BLAKE2b-256 b260c6edb070fe3c758f7472d3e4d4005b52b75ca448b08f08080556e9deba72

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py312-none-win_amd64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py312-none-win_amd64.whl
Algorithm Hash digest
SHA256 a440b871daa9b239b2082dfb6cf15f096893d0b0eb8b414a19f16c4027d45d3c
MD5 d9d8dd163d499211bd0c6799296c7f00
BLAKE2b-256 855697de8c2583e3f21b0c38ce4b4512601bce4987e0d07212fda4c26deb4c48

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py312-none-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py312-none-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 12b70963767ee2612ef802aeef98df7180a556d855063bf0a909bcfef1fc00a5
MD5 44bd64b2f86f2de37f050c7c7e13cd3b
BLAKE2b-256 d0b4b09b3ec5a741ef40eac2dc3f2be7dfce2ce8f8c4e9d89a15bc45280907b2

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py312-none-manylinux_2_24_aarch64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py312-none-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 266cc95d343902ca8693bc0f7e615caed2198d0e76f47fdf3ac8955157adfbab
MD5 cebf6794abde56d6f848d57b3ab43465
BLAKE2b-256 c6e0b7e7feb284b790271bc58a8bee842a75cdc6f8f1b28b39da775507ce7cb9

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py312-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py312-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 302900629c44b4ded59d31b8086c1607c2c51b9edf8f4988cc55a26526e53f6a
MD5 46d8060658a76c63cd8fcf26837a5a78
BLAKE2b-256 affe7d09c1efba5412fa2fa621a8a08e0b21dec2b68751b23c4d43850e2b8d00

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py311-none-win_amd64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py311-none-win_amd64.whl
Algorithm Hash digest
SHA256 5b6a458591a26050f5676cc0d92c360b36327bd0036e52816798ed7bb7badd9f
MD5 5a259ae875f088daa0845e155a45e8b4
BLAKE2b-256 6e2f886f95dce6f1de1a49a7952185e61c4417581cb2d6045656b1d435eaba76

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py311-none-manylinux_2_24_x86_64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py311-none-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 b8ca73991076b77685c283230e292330929a38d61c5d9a8642212cb26550ea4c
MD5 0ba33d688796190ff5c5b637d85169fb
BLAKE2b-256 fa53be40e4643088425fa1538872427d20b2665e9037eb557be2b70dec325eb3

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py311-none-manylinux_2_24_aarch64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py311-none-manylinux_2_24_aarch64.whl
Algorithm Hash digest
SHA256 82df344f16e5431661bcb2fa664296a80fbe0b7945dfa8c68a7152f9e2e6fe98
MD5 f1806d2f685643ffafafccc5d72dcffa
BLAKE2b-256 a35ac642a65b7b7b5ba9e03bfa7aa6dc2c17595bb5f8517c2618da802bd9bb19

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.5-py311-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.5-py311-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7e11b5c06e0a22bb85b0376e5b49bd1f3046b2d53c2feaedf81033559a975c5b
MD5 ea773b2f861cd8acba4605ec7f2ef771
BLAKE2b-256 abacfc82233be6918630bb4a60a15f27fafd44ce29648f55f879a0a72f3bc8aa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page