Skip to content

Existing Presets in the library disappear after adding new preset via API #8070

@Zhirnoff

Description

@Zhirnoff

Description:
When adding a new preset to the monomer library using the updateMonomersLibrary API method, all previously existing presets disappear from the library.
This behavior contradicts the expected functionality of updateMonomersLibrary, which should add or update monomers while preserving the existing ones.

Steps to Reproduce

  1. Open Ketcher Standalone
  2. Open the browser console and execute:
await ketcher.updateMonomersLibrary('\n  -INDIGO-08262516282D\n\n  0  0  0  0  0  0  0  0  0  0  0 V3000\nM  V30 BEGIN CTAB\nM  V30 COUNTS 3 2 0 0 0\nM  V30 BEGIN ATOM\nM  V30 1 G 15.9 -4.575 0.0 0 CLASS=BASE SEQID=1 ATTCHORD=(2 2 Al)\nM  V30 2 R 15.9 -3.075 0.0 0 CLASS=SUGAR SEQID=1 ATTCHORD=(4 1 Cx 3 Br)\nM  V30 3 P 17.4 -3.075 0.0 0 CLASS=PHOSPHATE SEQID=1 ATTCHORD=(2 2 Al)\nM  V30 END ATOM\nM  V30 BEGIN BOND\nM  V30 1 1 1 2\nM  V30 2 1 2 3\nM  V30 END BOND\nM  V30 END CTAB\nM  V30 BEGIN TEMPLATE\nM  V30 TEMPLATE 1 BASE/Gua/Z NATREPLACE=BASE/Z\nM  V30 BEGIN CTAB\nM  V30 COUNTS 12 13 2 0 0\nM  V30 BEGIN ATOM\nM  V30 1 N -0.438 0.541 0.0 0\nM  V30 2 C -0.438 -0.459 0.0 0\nM  V30 3 C 0.428 -0.959 0.0 0\nM  V30 4 C 1.294 -0.459 0.0 0\nM  V30 5 N 1.294 0.541 0.0 0\nM  V30 6 C 0.428 1.041 0.0 0\nM  V30 7 N 0.22 -1.937 0.0 0\nM  V30 8 C -0.775 -2.041 0.0 0\nM  V30 9 N -1.182 -1.128 0.0 0\nM  V30 10 O 2.16 -0.959 0.0 0\nM  V30 11 H -2.16 -0.92 0.0 0\nM  V30 12 N 0.428 2.041 0.0 0\nM  V30 END ATOM\nM  V30 BEGIN BOND\nM  V30 1 2 6 1\nM  V30 2 1 1 2\nM  V30 3 2 2 3\nM  V30 4 1 3 4\nM  V30 5 1 4 5\nM  V30 6 1 5 6\nM  V30 7 1 2 9\nM  V30 8 1 9 8\nM  V30 9 2 8 7\nM  V30 10 1 7 3\nM  V30 11 2 4 10\nM  V30 12 1 9 11\nM  V30 13 1 6 12\nM  V30 END BOND\nM  V30 BEGIN SGROUP\nM  V30 1 SUP 1 ATOMS=(1 11) XBONDS=(1 12) BRKXYZ=(9 0.489000 -0.104000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLASS=LGRP\nM  V30 2 SUP 2 ATOMS=(11 1 2 3 4 5 6 7 8 9 10 12) XBONDS=(1 12) BRKXYZ=(9 -0.489000 0.104000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=Z CLASS=BASE SAP=(3 9 11 Al) NATREPLACE=BASE/G\nM  V30 END SGROUP\nM  V30 END CTAB\nM  V30 TEMPLATE 2 SUGAR/Rib/R NATREPLACE=SUGAR/R\nM  V30 BEGIN CTAB\nM  V30 COUNTS 12 12 4 0 0\nM  V30 BEGIN ATOM\nM  V30 1 C 1.499 1.176 0.0 0 CFG=1\nM  V30 2 C 1.656 0.188 0.0 0 CFG=2\nM  V30 3 C 0.765 -0.266 0.0 0 CFG=1\nM  V30 4 C 0.058 0.441 0.0 0 CFG=2\nM  V30 5 O 0.512 1.332 0.0 0\nM  V30 6 O 2.207 1.883 0.0 0\nM  V30 7 O 0.608 -1.254 0.0 0\nM  V30 8 O 2.547 -0.266 0.0 0\nM  V30 9 H 1.386 -1.883 0.0 0\nM  V30 10 C -0.93 0.285 0.0 0\nM  V30 11 O -1.559 1.062 0.0 0\nM  V30 12 H -2.547 0.905 0.0 0\nM  V30 END ATOM\nM  V30 BEGIN BOND\nM  V30 1 1 1 5\nM  V30 2 1 5 4\nM  V30 3 1 4 3\nM  V30 4 1 3 2\nM  V30 5 1 2 1\nM  V30 6 1 1 6 CFG=1\nM  V30 7 1 3 7 CFG=3\nM  V30 8 1 2 8 CFG=1\nM  V30 9 1 7 9\nM  V30 10 1 4 10 CFG=1\nM  V30 11 1 10 11\nM  V30 12 1 11 12\nM  V30 END BOND\nM  V30 BEGIN COLLECTION\nM  V30 MDLV30/STEABS ATOMS=(4 1 2 3 4)\nM  V30 END COLLECTION\nM  V30 BEGIN SGROUP\nM  V30 1 SUP 1 ATOMS=(1 12) XBONDS=(1 12) BRKXYZ=(9 0.494000 0.078500 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLASS=LGRP\nM  V30 2 SUP 2 ATOMS=(1 9) XBONDS=(1 9) BRKXYZ=(9 -0.389000 0.314500 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=H CLASS=LGRP\nM  V30 3 SUP 3 ATOMS=(1 6) XBONDS=(1 6) BRKXYZ=(9 -0.354000 -0.353500 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=OH CLASS=LGRP\nM  V30 4 SUP 4 ATOMS=(9 1 2 3 4 5 7 8 10 11) XBONDS=(3 6 9 12) BRKXYZ=(9 0.354000 0.353500 0.000000 0.389000 -0.314500 0.000000 0.000000 0.000000 0.000000) BRKXYZ=(9 -0.494000 -0.078500 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=R CLASS=SUGAR SAP=(3 11 12 Al) SAP=(3 7 9 Br) SAP=(3 1 6 Cx) NATREPLACE=SUGAR/R\nM  V30 END SGROUP\nM  V30 END CTAB\nM  V30 TEMPLATE 3 PHOSPHATE/P/P NATREPLACE=PHOSPHATE/P\nM  V30 BEGIN CTAB\nM  V30 COUNTS 5 4 3 0 0\nM  V30 BEGIN ATOM\nM  V30 1 P 0.0 0.0 0.0 0\nM  V30 2 O 0.5 -0.866 0.0 0\nM  V30 3 O 0.5 0.866 0.0 0\nM  V30 4 O -1.0 0.0 0.0 0\nM  V30 5 O 1.0 0.0 0.0 0\nM  V30 END ATOM\nM  V30 BEGIN BOND\nM  V30 1 2 1 2\nM  V30 2 1 1 3\nM  V30 3 1 1 4\nM  V30 4 1 1 5\nM  V30 END BOND\nM  V30 BEGIN SGROUP\nM  V30 1 SUP 1 ATOMS=(1 4) XBONDS=(1 3) BRKXYZ=(9 0.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=OH CLASS=LGRP\nM  V30 2 SUP 2 ATOMS=(1 5) XBONDS=(1 4) BRKXYZ=(9 -0.500000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=OH CLASS=LGRP\nM  V30 3 SUP 3 ATOMS=(3 1 2 3) XBONDS=(2 3 4) BRKXYZ=(9 -0.500000 0.000000 0.000000 0.500000 0.000000 0.000000 0.000000 0.000000 0.000000) LABEL=P CLASS=PHOSPHATE SAP=(3 1 4 Al) SAP=(3 1 5 Br) NATREPLACE=PHOSPHATE/P\nM  V30 END SGROUP\nM  V30 END CTAB\nM  V30 END TEMPLATE\nM  END\n>  <type>\nmonomerGroupTemplate\n\n>  <groupClass>\nRNA\n\n>  <groupName>\nZ\n\n>  <idtAliases>\nbase=rZ\n\n$$$$\n', { format: 'sdf' })
  1. Observe the monomer library after the update completes.

Actual behavior
All previously available presets disappear from the library, leaving only the newly added preset.

Expected behavior
Existing presets in the library should remain unchanged; the new preset should be added or updated without clearing the current library.

Video

2025-10-08_15h38_23.mp4

Desktop:

  • OS: Windows 11
  • Browser Chrome
    Version 140.0.7339.128 (Official Build) (64-bit)

Ketcher version
[Version 3.9.0-rc.1]
Indigo version
[Version 1.37.0-rc.1]

This bug was found while testing: #7674

Metadata

Metadata

Assignees

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions