本文へ移動
cccskills
無料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.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md34.2 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

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.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

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

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月13日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月13日 更新

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).

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月13日 更新

Add unit tests to a Datagrok package

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月13日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月13日 更新

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

日本語の概要は準備中です。原文の説明を表示しています。

datagrok-ai/public742026年10月13日 更新

datagrok-ai のスキルをすべて見る

このスキルの問題を報告する