Chem changelog
v.next
- Generate Conformers: Fixed the run failing with
AttributeError: Cannot set unknown attribute 'maxAttempts'— ETKDGv3 takesmaxIterations - Chem | Calculate | IUPAC Name: Added a Python script that names molecules with openclatura
- GROK-20753: Added
moleculeFilterOperators(meta.role: filterOperators) — substructure, superstructure, exact, stereo-agnostic and similarity operators for the u2 filter builder - GROK-20808: MMP: Fixed a crash when no table was selected in the dialog
- GROK-20829: Guard isBitsetStale against the valueless root tree group
- GROK-20824: MPO: Fixed the profile description picking up the title's text styling when styled text was pasted into it
- GROK-20821: MPO: Fixed the dataset list ignoring newly opened tables
- GROK-20823: MPO: Fixed Edit opening duplicate editor tabs and leaving a stale profile preview in the context panel
- GROK-20832: MPO: Fixed Save being disabled on a freshly cloned profile — the copy could not be kept
- GROK-20831: MPO: Fixed truncated profile descriptions not expanding on click after saving a profile
- GROK-20830: MPO: Fixed data-driven Save not using the name and description typed on the tab
- GROK-20805: Chem: Butina cluster doesn't work in a project with datasync
1.17.15 (2026-09-02)
- Added SAR Matrix, rendered in a virtualized grid, with SAR Transfer to the grid
- SAR Matrix: Fixed the SAR Transfer tab rebuilding the whole panel (grid flicker, list scroll jumping to the top) on expanding/collapsing a series or selecting a transfer — the list now toggles and swaps in place like the SAR Matrix navigator
- Fixed the package build failing on
TS2610—nameis an accessor on the u2Componentbase, so the viewer overrides it with its own accessor instead of redeclaring it as a property - Fixed Gasteiger Partial Charges panel on current RDKit —
GetSimilarityMapFromWeightsnow requires an explicitMolDraw2DCairodrawer (passed by keyword, so pre-2023.09 RDKit still works)
1.17.14 (2026-08-13)
- Reaction Enumerator: Added package settings (category "Enumeration") letting admins set per-group default file paths for reaction templates, building blocks and reagents; missing files show a warning balloon and fall back to the bundled ones
- Substructure filter: Added a 'Filter as you draw' checkbox to the sketcher dialog — when unchecked, filtering is deferred until OK is clicked instead of running on every sketch edit
- Added
Filter by Substructure,Similarity ToandDiverse Subset— table-aware twins ofsearchSubstructure,getSimilaritiesandgetDiversities, which take a bare column. They declare(table, column {semType: Molecule}, …)and return rows or a column added to the table, so a caller has something to carry on with instead of a detached frame or a boxed BitSet - Added
Apply Reaction— the non-interactive twin of the Transformation dialog, applying a one-component reaction SMARTS to a molecule column - Added
To SDF, which serializes a table to SDF text; the only SDF write path was a zero-argument file exporter reading the current table - Added
Chemical Space Columns— Chem Space with typed, enumerated parameters that never plots and returns the X, Y, cluster and cluster-MCS columns it added - MPO Score by Profile: Refuses to run when a scored property has no column, naming the ones it couldn't resolve — the underlying
computeMpoonly warns and scores over the rest, which returns a plausible number computed from fewer properties than requested - Added
MPO Score by Profile,getMpoProfileNamesandgetMpoProfileProperties:mpoCalculatescores columns that already carry desirability tags andmpoTransformFunctionwants those tags as a JSON blob, so neither could be driven from a profile name. The new function also takes a property→column mapping, so a profile can score a table whose columns are named differently - Parameters with a default now declare
initialValue— the metadata generator reads that, not the TypeScript default, soaggregation = 'Average'and friends were registering with no declared default at all - Chemical Similarity Search: Added choices and defaults for metric, fingerprint, max hits and min similarity, and tagged the query molecule
semType: Molecule - Substructure Search: Tagged the query
semType: Moleculeand defaulted the molblock fallback - Curate: Flipped normalization, reionization, neutralization and main-fragment on by default — with every flag off the function ran and changed nothing
- Fixed display names that were declared via
//friendlyName:, which the metadata parser ignores: Remove Water and Salts, Run Reaction, Two-Component Reaction - Remove Water and Salts: Its
moleculesparameter never carriedsemType: Molecule— the decorator options were nested one level too shallow, so it accepted any string column - Marked genuinely-required parameters non-nullable across the reaction, clustering, scaffold and R-group functions (Two Component Reaction's second table/column, Cluster MCS's cluster column, FindMCS, FindRGroupsWithCore, Murcko, Butina, Curate)
- Docker (chem/chemprop): Cleared reported CVEs — pinned Flask/Werkzeug/gunicorn to fixed releases, upgraded pip/setuptools/wheel (build + runtime tooling), pinned urllib3/idna in chemprop, and added
apt upgradeto patch base-image OS packages - Docker (chem/chemprop): Raised security floors (VEX) — torch/torchvision/torchaudio to 2.6.0+cu118 via PyPI wheels (CVE-2025-32434) and removed padelpy's bundled PaDEL-Descriptor jars (log4j 1.2.15, guava 17.0)
- Moved the Chem Playwright E2E suite into the package (playwright/); helpers from @datagrok-libraries/test/src/playwright
- GROK-20239: Chem: OCL renderer: Structures do not appear in labels in some visualisations
- Scaffold Tree: Colors/labels columns are now named
<molColumn> colors/labels (<id>)using a persisted per-viewer id instead of the editable title, avoiding column-name collisions when viewers share a title - GROK-20505: Chem: Some descriptors return string values instead of numeric
- InChI / InChI Keys: Moved the conversion to the parallel RDKit service (web workers) instead of the single-threaded module —
To InchI,To InchI Keys,getInchisandgetInchiKeysare now async - GROK-20486: Fixed a crash in _demoMMPA when the viewer didn't load in time
1.17.13 (2026-06-08)
- Chem: MPO: Optimized score calculation for large datasets
- GROK-18818: Chem: MMP: do not allow to choose empty column in dialog
- GROK-15991: Invalid argument(s): Array lengths differ
- Chem: Fixed
waitForclearing the wrong timer handle, leaving the polling interval running after the condition was met - OCL worker: Added missing
breakstatements so a drug-likeness or molfile-to-V3K request no longer also runs and posts later cases' results - OCL worker: Fixed an off-by-one atom loop that could miscalculate molecule charge
- RDKit worker: Fixed the R-group analysis handler posting a stray
undefinedresult due to a shadowed variable - Identifiers: Fixed the UniChem home-page link mapped to the base-ID URL instead of
src_url - Map Identifiers: Fixed
column ids.key does not existwhen converting from InChIKey or via the ChEMBL bridge —_chemMapViaQuerynow renames a cloned input column tokeyto match the converter SQL parameter name - Chem search: Replaced a floating promise with proper
if/.catch()so substructure-search sub-task rejections are handled - RDKit service: Worker
terminate()now rejects in-flight calls instead of leaving callers hung forever; guarded the cluster-MCS timeout path accordingly - BitBIRCH clustering: Guaranteed the clustering worker is terminated even if the request fails synchronously
- Highlight widget: Unsubscribe
ItemsGridevent subscriptions when the grid is rebuilt or the widget is detached
1.17.12 (2026-06-05)
- GROK-20193: SDF import: Preserve molecule name and comment fields
- MPO: Fixed disabled OK button with no explanation when creating a new profile
- #3811: Chem: Added "Export as SVG" action for molecule cells
- Scaffold tree: Improved project loading performance for large datasets and trees — child-node substructure searches are now narrowed to the parent scaffold's matching rows (structure→superstructure relationship), avoiding redundant full-column searches
1.17.10 (2026-05-28)
- Chem: Record all generated reaction results in the enumerator
1.17.9 (2026-05-26)
- Scaffold tree: Remove the lingering
… colorsfragments column when the last color-coded node is deleted one-by-one (previously only cleaned up on viewer detach or "Drop all trees") - Chem Space: Guard editor entry against null current dataFrame / missing Molecule column to prevent
NullError: method not found: 'dart' on nullfromsetColumnInputTable - Chem: Toxicity Risks: Avoid 'Column already exists' crash on repeat invocation by using
getUnusedNamebefore adding risk columns - GROK-20108: Docker API: Throw a clear error when the
chem-chemcontainer is not available, instead ofCannot read properties of undefined (reading 'id') - Scaffold tree: Fixed severe load/scroll slowdown on large dataframes — molecule rendering and substructure searches now run only for on-screen nodes (IntersectionObserver rooted at the actual scroll container) instead of the entire tree
- Scaffold tree: Deduplicated per-node bitset computation (reuses in-flight and completed searches) and added a one-time shared fingerprint warm-up, eliminating redundant full-column searches on load
- Scaffold tree: Debounced scroll-driven substructure searches so fast scrolling no longer spawns a search for every node scrolled past
1.17.8 (2026-05-12)
- Scaffold tree: Migrated drop handler to the new
doDrop(args)signature inui.makeDroppable - Chem: Scaffold Tree: Fixed
Array.from(undefined)crash ingetPeerViewerswhen the active view is not a TableView - Reaction enumerator: Reworked UI — replaced the preview with side-by-side reaction templates and building blocks grids that subset the enumeration via row selection; renamed inputs and the full-config button for clarity
- Reaction enumerator: Right pane is now a tabbed view (Reaction templates, Building blocks, Reagents, Preview); preview tab re-runs lazily on activation
- Reaction enumerator: Added reagents-mode enumeration — when a reagents file/column are provided, each step uses exactly one BB or earlier-round product plus reagents in every remaining slot (produces derivatives of each BB across rounds)
- Reaction enumerator: Added a plain-English mode summary under the config buttons describing how the current selections drive the run
- Reaction enumerator: Added test coverage for reagents-mode enumeration (round 1 / multi-round step-pool invariants, empty-reagents fallback, BB-BB combo isolation)
1.17.5 (2026-04-15)
Features:
- Chem: Stereo agnostic search
- Chem: Pharmacophore feature highlighting
Bug fixes
- GROK-19962: Fixed crash in checkCurrentView when table is opened in Files preview without a registered TableView
- GROK-19994: MMP: Fixed crash when navigating away from MMP view while tab content is lazily rendered
- GROK-19921: Bio, Chem: Make table view active when adding scatter plot for chemical/sequence space and activity cliffs (in case it was switched during function execution)
- GROK-19862: Radar: Viewer type naming issue
- GROK-14952: Chem: Filter Panel and Hamburger menu molecular filters are not sync
- GROK-18530: Chem: Substructure Filter: incorrect filtering in the cloned view when using the "Similar" option
- Chem: Scaffold Tree: Fix double vertical scrollbar
- Chem: MPO: Add EDA package guard and deduplicate profile loading
- Chem: MPO: Preserve profile name and description on dataset change
- Chem: MPO: Fix profile naming and cancel behavior
1.17.4 (2026-03-30)
- #3708: Chem: Chemical space: Add tags on columns with embeddings
1.17.3 (2026-03-26)
- Improved reaction renderer supporting smiles reactions.
1.17.2 (2026-03-23)
RDKit render: Render without fixed scaling if rendered outside the global context (for single values like in custom tooltips).
1.17.1 (2026-03-17)
- GROK-19867: Chem: Alignment setting (Scaffold column) is not saved to the data-sync project
1.17.0 (2026-03-13)
- Chem: MPO: Fix desirability label positioning and rename templates to profiles
- Chem: MPO: Use name derived from the profile
- Chem: MPO: Use mapped columns in calculation
- #3497: Chem: MPO: Implement profile management
- Chem: MMP: Fixed broken pairs grid filtration (by current molecule) after switching from Transfromations tab in demo
- GROK-19543: Chem: MMP: Cliffs: broken color icon location
- Chem: MPO: Use line min/max as defaults when not defined in profile
- GROK-19575: Chem | Descriptors: Broken count for selection
- GROK-19569: Chem | MPO: "Add as column" is stuck in updating
- #3645: Chem: MPO: Improvements
- GROK-19576: Chem | Descriptors: Disable modification of selected descriptors when added as a column from the panel
- #3650: Chem: MPO: Improvements
- GROK-19623: Chem: MPO: Profiles list: Truncate long descriptions
- Chem: Move Generate Conformers to Calculate
- GROK-19620: Chem: MPO: Saving cloned profile replaces parent profile
- GROK-19621: MPO: 'Edit MPO profile' tab including profile`s name
- GROK-19624: Chem | MPO: Deleting a profile should update browse tree without manual refresh
- Chem: MPO: Ensure the OK button only applies changes (not saving to file)
- Chem: MPO: Highlight matching profiles in the profiles input to give users a quick overview of suitable options
- Chem: MPO: Disable OK button when profile is incompatible or mapping is missing
- Chem: MPO: Avoid showing balloons when previewing results
- GROK-19629: Chem: MPO: Enable actions on Browse view
- GROK-19632: Chem: MPO: error on saving profile
- GROK-19627: Chem: MPO: Multiple times cloned profile case
- GROK-19641: Chem: MPO: Close opened/previewed profiles after their deleting from the browse
- Chem: Add pMPO-generated profile to the Chem folder for demo usage
- Chem: MPO: Display warning in dialog footer
- Chem: MPO: Use ObjectHandler for context menu actions and profile preview in the context panel
- Chem: Explicit smiles setting for sketchers
- Chem: MPO: Align option values in the profiles input
- Chem: Add BitBIRCH clustering for O(N) incremental molecule clustering
- Chem: Bitbirch worker
- Chem: Removing explicit Hs for morgan FPS
- Chem: Smiles length limit
- #3658: Chem: Scaffold Tree: Add support for custom labels
- Chem: MPO: Fix description column showing clickable cursor without expand behaviour
- Chem: MPO: Fix issue where clicking a profile in the list does not open it in the context panel
- Chem: MPO: Update match emoji and fix best/worst score interactivity
- Chem: Synthon search
- Chem: Scaffold Tree: Support for custom labels (fixes)
- Chem: MPO: Fix issue with Desirability profile detection
- Chem: MPO: Align ui between pMPO and MPO dialogs
- Chem: MPO: Add fallback color section to settings dialog
- Chem: MPO: Prevent context panel from switching the current object when clicks originate from histogram or scores viewers
- Chem: MPO: Add UI hints
- GROK-18490: Chem: MMP: molecule pairs: improve data rendering in context panel
- Chem: Get mol details
- Chem: MPO: Display profile names in the dialog instead of filenames to avoid confusion (in the app we use profile names)
- Chem: Reaction toolkit: Initial UI
- GROK-19715: Chem: MMP: Fragments: correspond empty trellis plot with molecule pairs list
- Chem: Improved reactions editor and app views
- Chem: MPO: Make aggregation to be part of the profile
- Chem: MPO: Remove hints and add descriptive text in front of the input
- Chem: MPO: Fix issues with routing
- Chem: MPO: Fix recalculation and data sync issues
- Chem: Chemprop: Fix docker container discovery
- #3681: Chem: MPO: Improvements to the “Create Profile” view
- Chem: MPO: Improve profile creation flow in the dialog
- Chem: MPO: Fix crash when selecting a profile with no matching columns
- GROK-19837: Chem: MMP Demo: clicking on "/\ hERG_pIC50" in Fragments causes errors
- GROK-19838: Chem: Scaffold Tree: Folder style overlaps
- Chem: MPO: Vertical form layout with descriptions under labels
- Chem: MPO: Prevent default override when saving from the MPO dialog
- Chem: MPO: Add profile import and export
- Chem: MPO: Add breadcrumbs for navigation
- Chem: MPO: Move Save button to ribbon and fix dialog opening in design mode by default
- Chem: MPO: Rename “probabilistic” to “data-driven” and rearrange the viewers
- Chem: MPO: Add checkbox for adding the radar plot to the grid
- Chem: MPO: Add reset button and fix onChanged not firing for gaussian and sigmoid on change
1.16.14 (2026-01-05)
- Chem: Rendering: Introduce an option to disable post–R-group analysis highlighting
1.16.13 (2025-12-23)
- Butina clustering: Expose Python implementation to top-menu
1.16.12 (2025-12-22)
- GROK-18406: Chem | Scaffold Tree: Disallow multiple filters on the same column
- Chem: Detector: Extend valid smiles characters to support additional symbols
1.16.11 (2025-12-09)
- Add kekulize option to molecule notation conversion functions
1.16.10 (2025-12-08)
- R Group analysis: fixed ability to perform analyziz only for certain positions
1.16.9 (2025-11-19)
- Validated deprotection feature with more precise reactions.
1.16.8 (2025-11-11)
- Support datasync for biochemical functions
1.16.7 (2025-10-22)
- Fix compatibility issues with platform version 1.25.3
1.16.6 (2025-10-16)
Bug fixes
- GROK-19062 Similarity Search viewer: incorrect coloring after sorting a dataset
- GROK-18817: Chem | Scaffold tree: Add explanation tooltip why the tree can't be generated
- GROK-18901: Chem | Scaffold tree: Error when loading the layout
- Chem: Fix Distance functions
- GROK-18916: Chem: Remove hint on viewer close
- GROK-18931: Chem | Properties: Molecule charge is NaN
- GROK-18944: Chemprop: train model: 'Creating interactive model preview' step takes too long
- GROK-18945: Chem | Scaffold Tree: Color column not restored when reapplying saved layout
- GROK-18815, GROK-18816, GROK-18820: Top Menu: UI/UX improvements: Fixed names, captions
- #3497: Chem: MPO: Update to work correctly with data sync
Features
- Chem: Mixtures widget in context panel: show components names where available
- Chem: calculate context panel descriptors via docker
- Ability to run Descriptors, Properties, Toxicity risks, Structural alerts using Add new column dialog
1.16.5 (2025-09-15)
- Add layout persistant tag for scaffold alignment
1.16.4 (2025-09-05)
- Fixed issues with tableview getting for cloned views in functions.