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.3.post2-py313-none-macosx_11_0_arm64.whl (267.0 kB view details)

Uploaded Python 3.13macOS 11.0+ ARM64

cuik_molmaker_pin-2026.3.3.post2-py312-none-macosx_11_0_arm64.whl (266.7 kB view details)

Uploaded Python 3.12macOS 11.0+ ARM64

cuik_molmaker_pin-2026.3.3.post2-py311-none-macosx_11_0_arm64.whl (267.5 kB view details)

Uploaded Python 3.11macOS 11.0+ ARM64

File details

Details for the file cuik_molmaker_pin-2026.3.3.post2-py313-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.3.post2-py313-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a93ec8cea6364a20b68ec73ca8e61cd415f50592407af9ed3aa9e22e0dacc00d
MD5 c9aacd3bf1474eb49c453f1067f487f8
BLAKE2b-256 a0ce3f09df14c5990f03353aee58f4550d44632c5c8567e58f66c95ba3f37fc9

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.3.post2-py312-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.3.post2-py312-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3cb956fbe5159b3b913a829ec7b5e9bb58cafec2d88e34ff348061c12bc68947
MD5 c96022478d370f91ed4a44a980b9d787
BLAKE2b-256 8e22203d5837e5a5a09a6c3b1308814b85e7b616d4e12633c84dbfac07931cd9

See more details on using hashes here.

File details

Details for the file cuik_molmaker_pin-2026.3.3.post2-py311-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for cuik_molmaker_pin-2026.3.3.post2-py311-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 96cd23b9fe9d7c6ab2cc6eab089447ff9cf597380f4f11165fa0f6e1020d6f9c
MD5 a669bea34a77d9825487b145fb33ecfe
BLAKE2b-256 e535631141f90bb991f655d27b5b7aad9f4bb91f27fdaa1e6c4887cf0b2a0b09

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