miniCAT is a lightweight tool to attach chemical ligands (from SMILES) to nanocrystal / QD structures. It provides:
- RDKit-based functional-group detection and ionic transforms,
- geometry utilities to place/anchor ligands on specified “dummy” sites (e.g. Cl, Br, I, Rb),
- control over multi-ligand, multi-pass passivations with ratios and spatial distributions.
This repository is a slimmed-down version of CAT (Compound Attachment Tool), focused on just the essentials.
Create and activate the environment:
mamba env create -f environment.yml
mamba activate minicatInstall the package in editable mode to get the miniCAT CLI:
pip install -e .Note: RDKit is provided via conda-forge in the environment; keeping it in the conda env avoids pip/rdkit compatibility issues.
Inputs:
initial_dot.xyz— your QD/nanocrystal with “dummy” attachment sites (e.g. Cl, Rb).- SMILES strings for ligands.
Example: two-pass passivation — first passivate Cl with a 25/75 segmented mix of two anionic ligands, then passivate Rb with a 40/60 random mix of two cationic ligands.
miniCAT --qd initial_dot.xyz --out_prefix final_passivated_dot --job-ligands "CCCC(=O)O" "CCCCS" --job-dummy "Cl" --job-dist "0.25:0.75:segmented" --job-ligands "C[NH3+]" "C(C)(C)N" --job-dummy "Rb" --job-dist "0.40:0.60:random"Key flags (subset):
--qd: input.xyzQD structure.--out_prefix: base filename for outputs.--job-ligands: one or more SMILES strings (repeatable per pass).--job-dummy: the target dummy species for that pass (e.g.,Cl,Br,I,Rb).--job-dist: ratio and distribution strategy; format:r1:r2:modewheremode ∈ {random, segmented}.- Multiple “passes” are specified by repeating the
--job-ligands/--job-dummy/--job-disttriplet.
Special-cased inputs:
- Hydrogen halides can be given as
HCl,HBr,HI(or justCl,Br,I) and are normalized internally. H2Smay be given asS.
minicat/
main.py # CLI entry point, exposed as the `miniCAT` command
functional_groups_class.py # RDKit functional-groups & transforms
Run help:
miniCAT -hOptional tooling:
mamba install black isortFormat:
black minicat
isort minicatSee LICENSE.