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

Setup conda environment

# Set environment variables
export PYTHON_VERSION=3.11
export RDKIT_VERSION=2025.03.2

conda create -n cuik_molmaker_env python=${PYTHON_VERSION} conda-forge::rdkit==${RDKIT_VERSION} conda-forge::pybind11==2.13.6 conda-forge::libboost-devel==1.86.0 conda-forge::libboost-python-devel==1.86.0 

conda activate cuik_molmaker_env

This step is optional if you already have a conda environment with the required dependencies.

Install wheel from NVIDIA PyPI

We provide a handy script to install the wheel from NVIDIA PyPI based on your OS and other dependencies.

python scripts/check_and_install_cuik_molmaker.py

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.

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 for use with conda and Docker installations of 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.

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.4-py314-none-win_amd64.whl (259.0 kB view details)

Uploaded Python 3.14Windows x86-64

cuik_molmaker_pin-2026.3.4-py314-none-manylinux_2_24_x86_64.whl (330.1 kB view details)

Uploaded Python 3.14manylinux: glibc 2.24+ x86-64

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

Uploaded Python 3.14macOS 11.0+ ARM64

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

Uploaded Python 3.13Windows x86-64

cuik_molmaker_pin-2026.3.4-py313-none-manylinux_2_24_x86_64.whl (330.0 kB view details)

Uploaded Python 3.13manylinux: glibc 2.24+ x86-64

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

Uploaded Python 3.13macOS 11.0+ ARM64

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

Uploaded Python 3.12Windows x86-64

cuik_molmaker_pin-2026.3.4-py312-none-manylinux_2_24_x86_64.whl (328.1 kB view details)

Uploaded Python 3.12manylinux: glibc 2.24+ x86-64

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

Uploaded Python 3.12macOS 11.0+ ARM64

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

Uploaded Python 3.11Windows x86-64

cuik_molmaker_pin-2026.3.4-py311-none-manylinux_2_24_x86_64.whl (329.1 kB view details)

Uploaded Python 3.11manylinux: glibc 2.24+ x86-64

cuik_molmaker_pin-2026.3.4-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.4-py314-none-win_amd64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py314-none-win_amd64.whl
Algorithm Hash digest
SHA256 561c6ef5c0252e8ff32fa57813d46a58d0d66b1c872591deb23a282b538a9cb0
MD5 d77283c5f8ac7ce50dda828c166c9ba3
BLAKE2b-256 03409f470a73a5d15d319394f8c44435395aa26f0e67203166706ce61625973e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py314-none-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 3de59359f3fc4624c79f1d408c34d8fcc4d2d230e42bb353b7e4e388d7ae2e44
MD5 2de518b8cb6ccac3285b29df1d26a065
BLAKE2b-256 531ac192c04dfc0cc05dbb20d867b3ea6a8e38a3960db6debcc7b07481843bba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py314-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8371c37cf0345a98c64afd003050e0c6327b9fc9a2edf6e6b0bc9a19bcbc772a
MD5 51f1fd6c0ea9b5d4b90eff5f7abe5750
BLAKE2b-256 b43c0af84ae1c2780447d8444f7a3dee1fc47f3dfff4936c7ff7a31a5a0e5ba8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py313-none-win_amd64.whl
Algorithm Hash digest
SHA256 1334446e20fd4feeae3acba11eafd74d49a1fba0ec76e2b63e3e0c31db345ae0
MD5 97512d589fd1a9512bc0f91f1f7e8f81
BLAKE2b-256 1dbe68d5c093a824b4bda8f3308e808ee08adf700a3b27be3c5310b7dfc8518a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py313-none-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 917705c5bbd9dc38b6c1c75652b7563d7fc1106b04d9845dacb2061f23665aa6
MD5 3832ab415b56637bfd433173fbe5f38c
BLAKE2b-256 9a31ea3e1adf039c20f2713e777b4f4ddcacd876380693c14ca7a8f2cb91f49a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py313-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3761b8fdd401ab58050c08fbd6b7ee9929ec77170eac5ab20f2230980c0ec2e
MD5 478db8e282a2507c5de622fbcbbe6e23
BLAKE2b-256 7672af13bbc5a6a1ea068a4020d2eb0de7c666184f74a2ec16b0a1942551a26f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py312-none-win_amd64.whl
Algorithm Hash digest
SHA256 c4183a30fcc9841f2521766b8a1d9123a54493ffd4821a9d8ecec010bb6081db
MD5 76b99fbf7ce6a20daf809b530ad07140
BLAKE2b-256 cceb24cd71acb00e613c859ac088c576487006cd0a7361c924e5340982b492ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py312-none-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 bda3194b33b13999e73c1e54621a1788ac940db3c3cb71c2e297bc7e922d7bbc
MD5 efef7c24d5f1589cb943053939217cf7
BLAKE2b-256 b5fcaa4bf824ac5dfd8a5b6491afc932551f4bc700a57521b811ae9ac37f720f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py312-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6889fbc4a89bdf5031575f6faaae6bb6e87b703debe39dbf0d6ef77efdb28bf1
MD5 f9a792f21757bd8b3515b550060da92c
BLAKE2b-256 5613a6aa357c1abfe48cad20b2eb5f56ac39028d7a2a0d30134358102e9ed424

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py311-none-win_amd64.whl
Algorithm Hash digest
SHA256 214335c1126933272f6592299c31007fe305ff5ed61ccc401a914881ecab39bc
MD5 19b4d5e203d8a94da3fb4f8a9a5493c1
BLAKE2b-256 b5604494cd214994519ff048ff7eba484c3692bdf2ed3d043c423290b01304b3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py311-none-manylinux_2_24_x86_64.whl
Algorithm Hash digest
SHA256 64852608f084ce8919becd48c41283f2b8efd1af5c6404229c8e5aa78d3de536
MD5 e48ae4d7d2b2e00889d0b93e29b31891
BLAKE2b-256 be64b77e7fd77601cc3f1f0b4e3dcc911d9ed668826505dd3f92cb62af2b6279

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.4-py311-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d4fd2a797c481fff32ff0d32fa44c5da67816a2108ad9f10ce9e82d620cc10cd
MD5 8b847487b5fc158ddfcdc4e1ae8a5f71
BLAKE2b-256 37df824351cd8aa8b35bd57d51aee3881c8b8dcb41f6e91a99e31c1cc9b3bc42

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