Skip to content
cccskills
FreePublished on GitHub

datagrok-chem-toolkit

Cheminformatics toolkit catalog for small molecules. Covers RDKit/OpenChemLib calculations, descriptors, fingerprints, similarity/substructure search, R-group, MMP, scaffold tree, chemical space, MPO, reactions, and ADMET predictions. Open this skill when the user asks about computing molecular properties, comparing/searching molecules, or predicting ADMET/tox.

The English summary is being prepared. Showing the original description.

Works withDocker
See how to install

Files included (1)

  • SKILL.md34.2 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

datagrok-chem-toolkit

Function catalog for the structure-and-modeling half of Datagrok cheminformatics: Chem, Admetica.

Every function below is callable through the datagrok_exec tool via grok.functions.call('<Package>:<funcName>', {param1, param2, ...}). For ones exposed under a top-menu path, the path is shown so you can describe it in plain language ("Top menu → Chem → ...").

Param-type conventions used below

Types match the Datagrok function declarations: dataframe, column, string, int, float, bool, list<T>, object. A column with a required semType is written column<semType> (e.g. column<Molecule>, column<Macromolecule>, column<numerical>). Choices for enum-style params are listed inline as 'a' | 'b' | 'c'. ? marks optional, = x shows the default.

Always emit an exec block when the intent is clear

If the user asks for a concrete chemistry action ("generate analogs", "dock these ligands", "compute IC50", "register this compound", "what is the SMILES of aspirin") — call datagrok_exec with code calling the relevant function below, even if some args have to be guessed from context (table columns, sensible defaults). Don't ask the user to re-state inputs you can already infer; if a required input is genuinely missing, still emit the block with the best guess and add a one-line note. Don't answer chemistry questions from memory when a catalog function exists — call the function.


Cross-package routing — "User wants X → call Y"

User intentFunctionPackage
Draw / depict a moleculeChem:drawMoleculeChem
Convert SMILES ↔ Molfile ↔ SMARTS ↔ InChIChem:convertMolNotationChem
Get InChI / InChI keyChem:getInchis, Chem:getInchiKeysChem
Molecular formulaChem:getMolecularFormulaChem
Canonical SMILESChem:canonicalizeChem
Validate SMILES (RDKit)Chem:validateMolecule, Chem:isSmiles, Chem:isSmartsChem
Basic properties (MW, LogP, HBA, HBD, PSA, ...)Chem:addChemPropertiesColumns or Chem:getPropertiesChem
Single-molecule cLogP onlyChem:getCLogPChem
Chemical descriptors (RDKit set)Chem:getDescriptors / Chem:chemDescriptorsChem
Toxicity risks (OCL: mutagenicity, tumorigenicity, ...)Chem:addChemRisksColumns or Chem:getToxicityRisksChem
Structural alerts (PAINS, BMS, SureChEMBL, ...)Chem:structuralAlertsTopMenu or Chem:getStructuralAlertsChem
Pharmacophore features (donor, acceptor, ...)Chem:pharmacophoreFeaturesTopMenuChem
Morgan / RDKit / MACCS / AtomPair fingerprintsChem:getMorganFingerprints, Chem:getFingerprintsChem
Find similar molecules in a columnChem:findSimilar, Chem:callChemSimilaritySearchChem
Tanimoto similarity matrixChem:similarityMatrixTopMenuChem
Substructure searchChem:searchSubstructure, Chem:SubstructureSearchTopMenuChem
Chemical space 2D (UMAP / t-SNE)Chem:chemSpaceTopMenuChem
Diversity pickingChem:callChemDiversitySearchChem
BitBIRCH O(N) clusteringChem:bitbirchClusteringTopMenuChem
Cluster MCS (most-common-substructure per cluster)Chem:performClusterMCSChem
R-Group decompositionChem:rGroupsAnalysisMenu, Chem:rGroupDecompositionChem
Matched Molecular PairsChem:mmpAnalysisChem
Activity cliffsChem:activityCliffsChem
Scaffold tree (hierarchical)Chem:getScaffoldTree, Chem:addScaffoldTreeChem
Elemental analysis (atom counts)Chem:elementalAnalysisChem
Synthon (REAL-like) space searchChem:synthonSearchFuncChem
Drug name(s) → SMILES (ibuprofen, aspirin, ...)Chem:namesToSmiles (ChEMBL-backed; needs Chembl pkg)Chem
Free text → SMILES (LLM fallback)Chem:freeTextToSmilesChem
Map IDs incl. InChI key → ChEMBL, ChEMBL → DrugBank, etc.Chem:getMapIdentifiers / Chem:mapIdentifiersTransformChem
MPO score (weighted desirability)Chem:mpoCalculate, Chem:_mpoChem
Apply reaction SMARTS (transformation)Chem:transformationReactionsTopMenuChem
Two-column reaction enumerationChem:twoComponentReactionTopMenuChem
Remove water and saltsChem:removeWaterAndSaltsTopMenuChem
Deprotect (remove protecting groups)Chem:deprotectChem
Recalculate 2D coordinatesChem:recalculateCoordsChem
Train Chemprop QSAR modelChem:trainChempropChem
Apply Chemprop QSAR modelChem:applyChempropChem
ADMET predictions (full panel)Admetica:getAdmePropertiesAdmetica
ADMET for single moleculeAdmetica:getAdmePropertiesSingleAdmetica
ADMET in Hit Triage pipelineAdmetica:admeticaHTAdmetica

Calling conventions for column-based functions

Most Chem functions operate on a DG.Column of molecules and a parent DG.DataFrame. In datagrok_exec code:

const mol = t.columns.bySemType(DG.SEMTYPE.MOLECULE);   // first Molecule column
const res = await grok.functions.call('Chem:getProperties', { molecules: mol });
// res is a DG.DataFrame with one column per requested property

Function tables below carry a Tags column. The values it can hold:

TagMeaning
vectorFuncReturns a DG.DataFrame. Usable from the Add-New-Column dialog and inside a t.columns.addNewCalculated(name, formula) call. Functions WITHOUT this tag cannot be embedded in a formula — call them via grok.functions.call.
join(table)Output declares action: 'join(table)' — result columns are auto-appended to the input table. Do not also append yourself.
transformTagged as a data-sync transform — same behavior as the un-tagged sibling, but tracked in the project history.
topMenuHas a Top-menu path; otherwise programmatic only.
panelContext-panel widget — returns DG.Widget, shown in the right side panel.
actionRight-click / context-menu action.

If the molecule notation is unknown, sourceNotation: DG.chem.Notation.Unknown works for SMILES, SMARTS, molblock, and V3K molblock inputs.


Chem package — RDKit/OpenChemLib core (Chem:...)

The flagship cheminformatics package. RDKit is the engine; OpenChemLib provides fallback rendering and a few descriptors (logP, logS, drug-likeness, toxicity).

Four pitfalls to avoid

  1. MW / LogP / LogS / HBA / HBD / PSA / Rotatable bonds / Stereo centers / Molecule charge are boolean flags on Chem:addChemPropertiesColumns(...) and strings in the selected list of Chem:getProperties(molecules, selected?). No standalone Chem:CalculateMW / Chem:CalculateLogP etc. exist.
  2. Chem:convertMolNotation has no inchi. The sourceNotation / targetNotation enum is 'smiles' | 'cxsmiles' | 'smarts' | 'cxsmarts' | 'molblock' | 'v3Kmolblock'. For InChI use Chem:getInchis / Chem:getInchiKeys. For InChI key → ChEMBL ID, use Chem:getMapIdentifiers / Chem:mapIdentifiersTransform (sources include inchi_key, chembl, pubchem, drugbank, zinc, ...).
  3. Chem:namesToSmiles is ChEMBL-backed. It delegates to Chembl:namesToSmiles and will fail if the Chembl package / DB isn't deployed. Still pick it for any "drug name → SMILES" / list-of-names task (aspirin, ibuprofen, caffeine, ...). Don't fall back to Chem:freeTextToSmiles (LLM path, for free-form text fragments). Don't answer from memory.
  4. Docking / generation must route to the right package. "Dock these ligands" → Docking:getAutodockResults / Docking:runAutodock or Boltz1:docking — never to a Chem: function. "Generate analogs" / "design new molecules" → Reinvent4:reinvent / Reinvent4:reinventTopMenu — not R-group, MMP, or reaction enumeration (those operate on existing series). Always make the datagrok_exec call; if a target/seed is missing, pass a sensible default (first molecule column, first configured target).

Rendering & notation

Notation enum (used by convertMolNotation, convertMoleculeNotation, convertNotation): 'smiles' | 'cxsmiles' | 'smarts' | 'cxsmarts' | 'molblock' | 'v3Kmolblock'. No inchi — use getInchis / getInchiKeys instead.

FunctionTagsWhat it does
drawMolecule(molStr: string, w?: int, h?: int, popupMenu?: bool)—Returns an HTMLElement of a rendered molecule.
canvasMol(x: int, y: int, w: int, h: int, canvas: object, molString: string, scaffoldMolString: string, options?: object, renderingOptions?: object)—Draws into an existing canvas (with optional scaffold highlight).
convertMolNotation(molecule: string, sourceNotation: <notation>, targetNotation: <notation>)—Returns a single string in the target notation.
convertMoleculeNotation(molecule: column<Molecule>, targetNotation: <notation>, kekulize?: bool = false)vectorFuncNotation conversion. Returns a new DG.Column.
convertNotation(data: dataframe, molecules: column<Molecule>, targetNotation: <notation> = 'smiles', overwrite: bool = false, join: bool = true, kekulize?: bool)topMenuTop-menu version: appends or overwrites the column. Top menu: Chem → Transform → Convert Notation.
recalculateCoords(table: dataframe, molecules: column<Molecule>, method: 'OCL' | 'CoordGen' = 'OCL', join: bool = true)topMenuRecompute 2D layout. Top menu: Chem → Transform → Recalculate Coordinates.
canonicalize(molecule: string)—→ canonical SMILES (string).
getInchis(molecules: column<Molecule>) / getInchiKeys(molecules: column<Molecule>)vectorFuncVector InChI / InChI key.
addInchisTopMenu(table: dataframe, molecules: column<Molecule>) / addInchisKeysTopMenu(table: dataframe, molecules: column<Molecule>)topMenuAppend as a new column. Top menu: Chem → Calculate → To InchI / To InchI Keys.
getMolecularFormula(molecule: string)—Hill formula string (via OCL).
isSmiles(s: string) / isSmarts(s: string) / validateMolecule(s: string)—RDKit-based validators. validateMolecule returns the RDKit error string or null if OK.
detectSmiles(col: column, min: int)—Heuristic — tags the column as SMILES / Molecule if enough cells parse.
getMolFileHandler(molString)—Returns a low-level molfile parser handler.
getRdKitModule()—Returns the raw RDKit-JS module (for advanced calls like mol.get_descriptors()).
chemCellRenderer / rdKitCellRenderer / rdKitReactionRenderer / rdKitMixtureRenderer—Cell renderers — call only via the grid system, not directly.
editMoleculeCell(cell)—Pops a sketcher dialog bound to a grid cell.
openChemLibSketcher()—Returns the OCL sketcher widget.

Properties, descriptors, fingerprints

Property names for getProperties(molecules, selected) and equivalent flags on addChemPropertiesColumns: 'MW' | 'HBA' | 'HBD' | 'LogP' | 'LogS' | 'PSA' | 'Rotatable bonds' | 'Stereo centers' | 'Molecule charge'. Pass them in selected as a list of strings, exactly as shown.

Fingerprint enum (<fp>): 'Morgan' | 'RDKit' | 'Pattern' | 'AtomPair' | 'MACCS' | 'TopologicalTorsion'.

Similarity metric enum (<metric>, from BitArrayMetricsNames in @datagrok-libraries/ml): 'Tanimoto' | 'Dice' | 'Asymmetric' | 'Braun-Blanquet' | 'Cosine' | 'Kulczynski' | 'Mc-Connaughey' | 'Rogot-Goldberg' | 'Russel' | 'Sokal' | 'Hamming' | 'Euclidean BitArray'. Default is 'Tanimoto'.

Toxicity risk names for getToxicityRisks(molecules, risks): 'mutagenicity' | 'tumorigenicity' | 'irritatingEffects' | 'reproductiveEffects'.

Structural alert rule sets for getStructuralAlerts(molecules, alerts) and the per-flag args of structuralAlertsTopMenu: 'PAINS' | 'BMS' | 'SureChEMBL' | 'MLSMR' | 'Dundee' | 'Inpharmatica' | 'LINT' | 'Glaxo'.

FunctionTagsWhat it does
addChemPropertiesColumns(table: dataframe, molecules: column<Molecule>, MW?: bool = true, HBA?: bool = false, HBD?: bool = false, logP?: bool = false, logS?: bool = false, PSA?: bool = false, rotatableBonds?: bool = false, stereoCenters?: bool = false, moleculeCharge?: bool = false)topMenuOCL-based properties → appended as columns. Top menu: Chem → Calculate → Chemical Properties.
getProperties(molecules: column<Molecule>, selected?: list<string>)vectorFuncVector form. selected is a subset of the property names above; omit/empty for all. Returns a standalone DataFrame — NOT auto-joined; append its columns to your table yourself.
getCLogP(smiles: string)—Single-mol Crippen logP (RDKit).
getChemPropertyFunction(name: string)—Returns a (smiles) => any closure for one property — useful for column.applyFormula.
getDescriptors(molecules: column<Molecule>, selected?: list<string>)vectorFuncRDKit descriptor set (via Chem docker). Returns a standalone DataFrame — NOT auto-joined; append its columns yourself. Use chemDescriptorsTree() for the legal selected names.
chemDescriptors(table: dataframe, molecules: column<Molecule>, descriptors: list<string>)topMenuSame, appended to table.
chemDescriptorsTree()—Returns the tree of available descriptor groups (for UI).
descriptorsDocker()topMenuOpens the descriptors picker dialog. Top menu: Chem → Calculate → Descriptors.
calculateDescriptorsTransform(table: dataframe, molecules: column<Molecule>, selected: list<string>)transformSame but tagged transform for data-sync projects.
getMorganFingerprints(molColumn: column<Molecule>)vectorFuncReturns a Column of DG.BitSet fingerprints.
getMorganFingerprint(molString: string)—Single-mol → DG.BitSet.
getFingerprints(col: column<Molecule>, _metric?: string, fingerprintType?: <fp>)—Returns {entries, options} for the dim-reduction preprocessor.
addChemRisksColumns(table: dataframe, molecules: column<Molecule>, mutagenicity?: bool = true, tumorigenicity?: bool = false, irritatingEffects?: bool = false, reproductiveEffects?: bool = false)topMenuOCL toxicity risk flags. Top menu: Chem → Calculate → Toxicity Risks.
getToxicityRisks(molecules: column<Molecule>, risks?: list<string>)vectorFuncVector form. risks is a subset of the risk names above. Returns a standalone DataFrame — NOT auto-joined; append its columns yourself.
structuralAlertsTopMenu(table: dataframe, molecules: column<Molecule>, pains: bool = true, bms: bool = false, sureChembl: bool = false, mlsmr: bool = false, dundee: bool = false, inpharmatica: bool = false, lint: bool = false, glaxo: bool = false)topMenuApply rule-based structural alerts. Top menu: Chem → Analyze → Structural Alerts.
getStructuralAlerts(molecules: column<Molecule>, alerts?: list<string>)vectorFuncVector form. Returns a standalone DataFrame — NOT auto-joined; append its columns yourself.
pharmacophoreFeaturesTopMenu(table: dataframe, molecules: column<Molecule>, donor: bool = true, acceptor: bool = true, hydrophobic: bool = true, aromatic: bool = true, positive: bool = false, negative: bool = false, halogenBond: bool = false)topMenuRDKit pharmacophore family flags. Top menu: Chem → Analyze → Pharmacophore Features.
biochemPropsWidget()topMenuOpens the auto-discovery dialog for biochem calculators. Top menu: Chem → Calculate → Biochemical Properties.

Similarity, diversity, substructure search

Shorthand recap — <metric> expands to the 12-value BitArrayMetricsNames enum defined above ("Similarity metric enum"); <fp> expands to the 6-value fingerprint enum ("Fingerprint enum"). Used in this section by callChemSimilaritySearch, callChemDiversitySearch, similarityMatrixTopMenu. The dim-reduction entries (chemSpaceTopMenu, getChemSpaceEmbeddings, activityCliffs) hard-narrow <metric> via choices: to the 4-value subset 'Tanimoto' | 'Asymmetric' | 'Cosine' | 'Sokal' — those rows inline the narrowed list directly in the signature.

FunctionTagsWhat it does
findSimilar(molStringsColumn: column<Molecule>, molString: string, limit: int = MAX, cutoff: float = 0.0)—Returns a DataFrame of the most-similar molecules (Morgan/Tanimoto).
callChemSimilaritySearch(df: dataframe, col: column<Molecule>, molecule: string, metricName: <metric>, fingerprint: <fp>, limit: int, minScore: float)—Underlying version with explicit metric and FP type.
getSimilarities(molStringsColumn: column<Molecule>, molString: string)—Returns just the similarity scores as a DataFrame.
getDiversities(molStringsColumn: column<Molecule>, limit: int)—DataFrame of the most-diverse molecules.
callChemDiversitySearch(col: column<Molecule>, metricName: <metric>, fingerprint: <fp>, limit: int)—Returns indices of diverse picks.
similarityMatrixTopMenu(table: dataframe, molecules: column<Molecule>, symbols: column, fingerprintType: <fp> = 'Morgan')topMenuFull pairwise Tanimoto matrix → opens as a new table. Top menu: Chem → Calculate → Similarity Matrix.
searchSubstructure(molStringsColumn: column<Molecule>, molString: string, molBlockFailover: string)—RDKit substructure search → returns a Column wrapping a BitSet of matches.
SubstructureSearchTopMenu(molecules: column<Molecule>)topMenuOpens the filter sketcher. Top menu: Chem → Search → Substructure Search.
similaritySearchViewer() / diversitySearchViewer()—Returns a ChemSimilarityViewer / ChemDiversityViewer. Add via view.addViewer('Chem Similarity Search').
similaritySearchTopMenu() / diversitySearchTopMenu()topMenuTop menu shortcuts. Top menu: Chem → Search.
sortBySimilarity(value: object)actionRight-click action that sorts the grid by similarity to the picked molecule.
useAsSubstructureFilter(value: object)actionRight-click action that adds the picked molecule as a substructure filter.
synthonSearchFunc(spaceName: string, molecule: string, maxHits: int = 100, searchType: 'substructure' | 'similarity' | 'exact', similarityCutoff?: float = 0.5, includeSynthons?: bool = false)—Search in a synthon (REAL-style) chemical space.
getSynthonSpacesFunc()—Lists installed synthon spaces (filenames in Chem/files/synthon-data/).
removeDuplicates(molecules: list<string>, molecule: string)—Removes duplicates of molecule from a list.

Chemical space, R-groups, MMP, activity cliffs, scaffold tree

Dim-reduction method enum: 'UMAP' | 't-SNE'. R-group matching strategy: 'Greedy' | 'GreedyChunks' | 'Exhaustive' | 'NoSymmetrization' | 'GA'. MMP diff type: 'delta' | 'ratio'. MMP activity scaling: 'none' | 'lg' | '-lg'.

FunctionTagsWhat it does
chemSpaceTopMenu(table: dataframe, molecules: column<Molecule>, methodName: 'UMAP' | 't-SNE', similarityMetric: 'Tanimoto' | 'Asymmetric' | 'Cosine' | 'Sokal' = 'Tanimoto', plotEmbeddings: bool = true, options?: object, preprocessingFunction?: func, clusterEmbeddings?: bool, clusterMCS?: bool)topMenuProjects molecules to 2D (UMAP / t-SNE) + scatter plot. Top menu: Chem → Analyze → Chemical Space.
chemSpaceTransform(...)transformTransform-tagged version (for data-sync).
getChemSpaceEmbeddings(col: column<Molecule>, methodName: 'UMAP' | 't-SNE', similarityMetric: 'Tanimoto' | 'Asymmetric' | 'Cosine' | 'Sokal', xAxis: string, yAxis: string, options?: object)—Raw embedding without UI. Returns ISequenceSpaceResult.
getChemSimilaritiesMatrix(dim: int, col: column<Molecule>, df: dataframe, colName: string, simArr: object)—Internal — pairwise similarity matrix as columns.
rGroupsAnalysisMenu()topMenuOpens the R-group analysis dialog. Top menu: Chem → Analyze → R-Groups Analysis.
rGroupDecomposition(df: dataframe, molColName: string, core: string, rGroupName: string, rGroupMatchingStrategy: 'Greedy' | 'GreedyChunks' | 'Exhaustive' | 'NoSymmetrization' | 'GA', onlyMatchAtRGroups?: bool)—Programmatic R-group decomposition. Returns RGroupDecompRes.
mmpAnalysis(table: dataframe, molecules: column<Molecule>, activities: list<column<numerical>>, diffTypes: list<'delta'|'ratio'>, scalings: list<'none'|'lg'|'-lg'>, fragmentCutoff: float = 0.4)topMenuMatched Molecular Pairs analysis. Top menu: Chem → Analyze → Matched Molecular Pairs.
mmpViewer()—Returns MatchedMolecularPairsViewer for manual view.addViewer.
activityCliffs(table: dataframe, molecules: column<Molecule>, activities: column<numerical>, similarity: float = 80, methodName: 'UMAP' | 't-SNE', similarityMetric: 'Tanimoto' | 'Asymmetric' | 'Cosine' | 'Sokal', preprocessingFunction?: func, options?: object, isDemo?: bool, isTest?: bool)topMenuFinds pairs of similar molecules with large activity differences. Top menu: Chem → Analyze → Activity Cliffs.
addScaffoldTree()topMenuAdds a ScaffoldTreeViewer to the current view. Top menu: Chem → Analyze → Scaffold Tree.
scaffoldTreeViewer()—Returns ScaffoldTreeViewer for manual use.
scaffoldTreeFilter()—Returns ScaffoldTreeFilter.
getScaffoldTree(data: dataframe, ringCutoff: int = 10, dischargeAndDeradicalize: bool = false)—Returns the scaffold tree as a JSON string.
substructureFilter()—Returns an RDKit-based SubstructureFilter.
bitbirchClusteringTopMenu(table: dataframe, molecules: column<Molecule>, threshold: float = 0.65, fingerprintType: 'Morgan' | 'RDKit' | 'Pattern' | 'AtomPair' | 'MACCS' | 'TopologicalTorsion' = 'Morgan')topMenuO(N) BitBIRCH clustering → cluster ID column. Top menu: Chem → Calculate → BitBIRCH Clustering.
clusterMCSTopMenu(table: dataframe, molCol: column<Molecule>, clusterCol: column)topMenuMost-common substructure per cluster → appends MCS column. Top menu: Chem → Calculate → Cluster MCS.
performClusterMCS(molCol: column<Molecule>, clusterCol: column)vectorFuncVector form.
elementalAnalysis(table: dataframe, molecules: column<Molecule>, radarViewer: bool = false, radarGrid: bool = false)topMenuAdds atom-count columns; optional radar viewer. Top menu: Chem → Analyze → Elemental Analysis.
runElementalAnalysis(table: dataframe, molecules: column<Molecule>)transformReturns the list of added column names.

MPO, identifiers, reactions

MPO aggregation enum (WEIGHTED_AGGREGATIONS_LIST): 'Average' | 'Sum' | 'Product' | 'Geomean' | 'Min' | 'Max'.

Identifier source enum for mapIdentifiersTransform(fromSource, toSource) — non-exhaustive: 'smiles' | 'inchi' | 'inchi_key' | 'chembl' | 'pubchem' | 'drugbank' | 'pdb' | 'zinc' | 'chebi' | 'kegg_ligand' | 'hmdb' | 'drugcentral' | 'surechembl' | 'bindingdb' | 'fdasrs' | 'lipidmaps' | 'mcule' | 'gtopdb' (full list ≈ 35 UniChem sources). The catalog's standard reverse-lookup path (e.g. InChI key → ChEMBL ID) is mapIdentifiersTransform(table, molecules, 'inchi_key', 'chembl').

FunctionTagsWhat it does
_mpo()topMenuOpens the MPO Score dialog. Top menu: Chem → Calculate → MPO Score.
mpoCalculate(df: dataframe, columns: list<column>, profileName: string, aggregation: 'Average' | 'Sum' | 'Product' | 'Geomean' | 'Min' | 'Max', createDesirabilityColumns: bool = false)—Computes MPO score + optional per-property desirability columns.
mpoTransformFunction(df: dataframe, profileName: string, aggregation: 'Average' | 'Sum' | 'Product' | 'Geomean' | 'Min' | 'Max', currentProperties: string, silent: bool = false)transformWrapper used by data-sync.
mpoProfilesApp(path?: string)—Opens the MPO Profiles app.
getMapIdentifiers()topMenuOpens the ID-mapping dialog. Top menu: Chem → Calculate → Map Identifiers.
mapIdentifiersTransform(table: dataframe, molecules: column<Molecule>, fromSource: <id-source>, toSource: <id-source>)transformAppends a column with mapped IDs. This is also the right entry for "InChI key → ChEMBL ID" and similar reverse lookups (chemblIdToSmilesTs goes only ID→SMILES, never the reverse).
freeTextToSmiles(molfile: string)—LLM-backed: parses free text into SMILES. Returns string | null. Use only when names aren't clean enough for namesToSmiles.
namesToSmiles(data: dataframe, names: column<string>)topMenuLooks up compound names → canonical SMILES via ChEMBL. Requires the Chembl package + ChEMBL DB. Use for any "drug name → SMILES" task (aspirin, ibuprofen, caffeine, ...) — wrap the list of names in a DG.Column.fromStrings(...) and call. Top menu: Chem → Transform → Names To Smiles.
deprotect(table: dataframe, molecules: column<Molecule>, fragment: string)topMenuRemoves the drawn fragment as a protecting group. Top menu: Chem → Transform → Reactions → Deprotect.
removeWaterAndSaltsTopMenu(table: dataframe, molecules: column<Molecule>)topMenuStrip water/salts. Top menu: Chem → Transform → Reactions → Remove Water and Salts.
transformationReactionsTopMenu()topMenuRun reaction SMARTS over a column of reactants. Top menu: Chem → Transform → Reactions → Transformation.
twoComponentReactionTopMenu()topMenuCross-product reaction between two columns. Top menu: Chem → Transform → Reactions → Two-Component Reaction.
transformationReactionsApp() / twoComponentReactionsApp()—App entry points (browsePath `Chem
reactionEnumeratorApp()—Forward-reaction library enumeration over building blocks + SMARTS.
beautifyMols(mols: list<string>)vectorFuncReturns clean V3K molblocks.
convertToV3KViaOCL(mols: list<string>)—OCL-based V2K → V3K conversion.
convertMolNotationAction(col: column<Molecule>)actionRight-click action wired to convertNotation.
convertMixtureToSmiles(col: column)actionRight-click action for ChemicalMixture columns.
copyAsAction(value: object) / copyAsSmiles / copyAsMolfileV2000 / copyAsMolfileV3000 / copyAsSmarts / copyAsImageactionRight-click "Copy as ..." actions.

File I/O

FunctionTagsWhat it does
importSdf(bytes)—SDF / MOL → DataFrames. Registered as fileHandler for .sdf, .mol.
importSmi(bytes)—SMI file handler.
importMol2(bytes)—Tripos MOL2 file handler.
importMol(content)—Single MOL file (string).
saveAsSdf()—Export current table as SDF. File exporter: "As SDF…".

Chemprop QSAR (deep learning)

FunctionTagsWhat it does
trainChemprop(df: dataframe, predictColumn: column, dataset_type: 'regression' | 'classification' = 'regression', /* +22 more snake_case args */)—Trains a Chemprop MPN model via the chem-chemprop Docker container. Returns the model blob.
applyChemprop(df: dataframe, model: dynamic)—Applies a saved Chemprop model → DataFrame with outcome column.
isApplicableNN(df: dataframe, predictColumn: column) / isInteractiveNN(df: dataframe, predictColumn: column)—ML framework hooks (not called directly).

trainChemprop has 25 snake_case params total (dataset_type, metric, multiclass_num_classes, num_folds, data_seed, split_sizes, split_type, activation, atom_messages, message_bias, ensemble_size, message_hidden_dim, depth, dropout, ffn_hidden_dim, ffn_num_layers, epochs (default 50), batch_size (default 64), warmup_epochs, init_lr, max_lr, final_lr, no_descriptor_scaling, ...). Pass at least predictColumn, dataset_type, and epochs.

Chemprop enum-constrained params (from choices: decorators in source):

  • dataset_type: 'regression' | 'classification' (default 'regression')
  • metric: 'mse' | 'mae' | 'rmse' | 'bounded-mse' | 'bounded-mae' | 'bounded-rmse' | 'r2' | 'binary-mcc' | 'multiclass-mcc' | 'roc' | 'prc' | 'accuracy' | 'f1' (default 'rmse')
  • split_type: 'random' | 'scaffold_balanced' | 'cv' | 'cv_no_val' | 'kennard_stone' | 'kmeans' | 'random_with_repeated_smiles' (default 'random')
  • activation: 'ReLU' | 'LeakyReLU' | 'PReLU' | 'tanh' | 'SELU' | 'ELU' (default 'ReLU')

For the full numeric-default schema, use the MCP datagrok_functions(op:"get", args:{id:'Chem:trainChemprop'}) call before invoking — don't guess param names.

Panels (context-panel widgets — show in the right-side panel when a molecule cell is selected)

Useful to call via datagrok_exec when you want to render a panel inline. All return DG.Widget.

All entries below have the panel tag.

PanelWhat
properties(smiles)"Chemistry | Properties"
descriptorsWidget(smiles)"Chemistry | Descriptors"
structure2d(molecule) / structure3D(molecule)"Structure | 2D Structure" / "Structure | 3D Structure"
identifiers(smiles)"Structure | Identifiers"
drugLikeness(smiles)"Biology | Drug Likeness"
toxicity(smiles)"Biology | Toxicity"
structuralAlerts(smiles)"Biology | Structural Alerts"
pharmacophoreFeatures(smiles)"Biology | Pharmacophore Features"
mpoWidget(semValue)"Chemistry | MPO"
mixtureWidget(mixture) / mixtureTreeWidget(mixture)"Chemistry | Mixture" / "MixtureTree"
molColumnPropertyPanel(molColumn) / molColumnHighlights(molColumn)Rendering / highlighting options for a Molecule column.
synthonSubstructureSearchWidget(molecule) / synthonSimilaritySearchWidget(molecule)Synthon space search panels.

Demos (each opens a tutorial layout — use only on user request)

demoSimilarityDiversitySearch (Demo Similarity Search), demoMMPA (Demo Matched Molecular Pairs), demoRgroupAnalysis (Demo R Group Analysis), demoMoleculeActivityCliffs (Demo Activity Cliffs), demoChemicalSpace (Demo Chemical Space), demoScaffold (Demo Scaffold Tree).

Skipped on purpose (do not advertise to the user)

  • init, initChemAutostart — package init lifecycle, runs automatically.
  • Internal helpers: getContainer, getChempropError, trainModelChemprop, applyModelChemprop (used internally by trainChemprop / applyChemprop).
  • Editors: SearchSubstructureEditor, ChemSpaceEditor, ActivityCliffsEditor, MMPEditor, DeprotectEditor, mpoProfileEditor — invoked by the framework.
  • mpoProfilesAppTreeBrowser, checkJsonMpoProfile — UI plumbing.

Admetica package — ADMET predictions (Admetica:...)

Docker-backed ADMET model panel covering Absorption, Distribution, Metabolism, Excretion, and Toxicity endpoints.

ADMET category enum for getModels(property): 'Absorption' | 'Distribution' | 'Metabolism' | 'Excretion' | 'Toxicity' (or omit for all).

FunctionTagsWhat it does
getModels(property?: 'Absorption' | 'Distribution' | 'Metabolism' | 'Excretion' | 'Toxicity')—Lists available endpoints.
getAdmeProperties(table: dataframe, molecules: column<Molecule>, props?: list<string>)vectorFunc, join(table)Main entry point. Predicts ADMET for a column → returns a DataFrame appended to table. props is a list of model names from getModels(); omit for all.
getAdmePropertiesSingle(molecule: string)—One molecule → DataFrame of ADMET predictions.
admeticaMenu(table: dataframe, molecules: column<Molecule>, template: string, models: list<string>, addPiechart: bool, addForm: bool)topMenuSame as getAdmeProperties but with optional pie-chart and form viewers. Top menu: Chem → Admetica → Calculate.
admeticaHT(table: dataframe, molecules: column<Molecule>, absorption: list<string>, distribution: list<string>, metabolism: list<string>, excretion: list<string>)—Hit Triage variant — pass per-category model lists (each from getModels('<Category>')).
admeticaWidget(semValue: object)panelPer-molecule context panel: "Biology | Admetica".
runAdmeticaApplication() / admeticaDemo()—Opens the Admetica app / demo (browsePath Chem).

Skipped: info (debug), AdmeticaEditor (UI editor).


Out of scope

Generative chemistry (Reinvent4), molecular docking (Docking / Boltz1) are intentionally NOT covered by this catalog. Open the matching skill directly if the user asks for those — they're available as registered functions but not described here.


Companion data-side catalog

For ChEMBL, MolTrack, HitTriage, and Curves (compound registration, hit triage workflows, dose-response analysis, bioactivity DBs), see the sibling skill datagrok-chem-data.

Generic compute / simulation

The Compute package exists but contains no small-molecule-specific functions — it provides the RichFunctionView and Pipeline scaffolding plus non-cheminformatics demo scripts (Lorenz attractor, Newton cooling, Lotka- Volterra, antibody Fab-arm exchange). Skip it unless the user asks for the RichFunctionView UI shell or compute pipeline framework.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Add support for a new curve data format in the Curves package converter system

The English summary is being prepared. Showing the original description.

datagrok-ai/public74Updated Oct 22, 2026

Create info panels that appear in the context panel based on semantic types

The English summary is being prepared. Showing the original description.

datagrok-ai/public74Updated Oct 22, 2026

Add a new single-objective optimization algorithm to the sci-comp library. Use when the user asks to implement a new optimizer (e.g. gradient descent, BFGS, simulated annealing, differential evolution).

The English summary is being prepared. Showing the original description.

datagrok-ai/public74Updated Oct 22, 2026

Add unit tests to a Datagrok package

The English summary is being prepared. Showing the original description.

datagrok-ai/public74Updated Oct 22, 2026

Answer a "how do I …" question about the platform with a Gherkin scenario on @datagrok-libraries/bdd that is filmed into a how-to video (grok-bdd guide), so the answer is demonstrated, sent as a video plus numbered steps, and kept as a regression test; the same scenarios, filmed in help mode, are the GIFs of the help pages

The English summary is being prepared. Showing the original description.

datagrok-ai/public74Updated Oct 22, 2026

Translate hand-written Playwright specs (or any existing UI tests) into Gherkin features on @datagrok-libraries/bdd, then prove the features test what they claim by backward-matching them against the originals with independent reviewers, and fix the gaps in the core, the library and the features

The English summary is being prepared. Showing the original description.

datagrok-ai/public74Updated Oct 22, 2026

See all skills by datagrok-ai

Report a problem with this skill