@datagrok/helm 2.1.21 → 2.1.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@datagrok/helm",
3
3
  "friendlyName": "Helm",
4
- "version": "2.1.21",
4
+ "version": "2.1.23",
5
5
  "author": {
6
6
  "name": "Oleksandra Serhiienko",
7
7
  "email": "oserhiienko@datagrok.ai"
@@ -16,6 +16,7 @@
16
16
  ],
17
17
  "dependencies": {
18
18
  "@datagrok-libraries/bio": "^5.39.6",
19
+ "@datagrok-libraries/chem-meta": "^1.2.1",
19
20
  "@datagrok-libraries/utils": "^4.0.17",
20
21
  "cash-dom": "^8.1.1",
21
22
  "datagrok-api": "^1.10.2",
@@ -288,6 +288,11 @@ export class HelmCellRenderer extends DG.GridCellRenderer {
288
288
  {style: {width: `${w - 2}px`, height: `${h - 2}px`, margin: `${1}px`, backgroundColor: '#FFE0E0'}});
289
289
  host.setAttribute('dataformat', 'helm');
290
290
  host.setAttribute('data', seq /* gaps skipped */);
291
+ // if grid has neighbour to the left, then shift host to the left
292
+ if (host.parentElement && (gridCell.grid?.canvas?.offsetLeft ?? 0) > 0) {
293
+ host.parentElement.style.left =
294
+ `${(gridCell.grid?.canvas?.offsetLeft ?? 0) + host.parentElement.offsetLeft}px`;
295
+ }
291
296
 
292
297
  // Recreate editor to avoid hanging in window.dojox.gfx.svg.Text.prototype.getTextWidth
293
298
  const editor = new JSDraw2.Editor(host, {width: w, height: h, skin: 'w8', viewonly: true}) as IEditor;
@@ -1,10 +1,12 @@
1
1
  import * as DG from 'datagrok-api/dg';
2
2
  import * as grok from 'datagrok-api/grok';
3
+
3
4
  import {runTests, tests, TestContext} from '@datagrok-libraries/utils/src/test';
4
5
 
5
6
  import './tests/helm-tests.ts';
6
7
  import './tests/findMonomers-tests';
7
8
  import './tests/renderers-tests';
9
+ import './tests/get-molfiles';
8
10
 
9
11
  export const _package = new DG.Package();
10
12
  export {tests};
@@ -2,33 +2,33 @@ import * as grok from 'datagrok-api/grok';
2
2
  import * as ui from 'datagrok-api/ui';
3
3
  import * as DG from 'datagrok-api/dg';
4
4
 
5
- import {_package} from '../package-test';
6
5
  import {after, before, category, delay, expect, expectObject, test} from '@datagrok-libraries/utils/src/test';
7
- import {findMonomers, parseHelm} from '../utils';
8
6
  import {getMonomerLibHelper, IMonomerLibHelper} from '@datagrok-libraries/bio/src/monomer-works/monomer-utils';
7
+ import {
8
+ getUserLibSettings, LibSettings, setUserLibSettings, setUserLibSettingsForTests
9
+ } from '@datagrok-libraries/bio/src/monomer-works/lib-settings';
9
10
 
10
- const LIB_STORAGE_NAME = 'Libraries';
11
- export const LIB_DEFAULT: { [fileName: string]: string } = {'HELMCoreLibrary.json': 'HELMCoreLibrary.json'};
11
+ import {findMonomers, parseHelm} from '../utils';
12
12
 
13
13
 
14
14
  /** Tests with default monomer library */
15
15
  category('findMonomers', () => {
16
-
17
16
  let monomerLibHelper: IMonomerLibHelper;
18
17
  /** Backup actual user's monomer libraries settings */
19
- let userLibrariesSettings: any = null;
18
+ let userLibSettings: LibSettings;
20
19
 
21
20
  before(async () => {
22
21
  monomerLibHelper = await getMonomerLibHelper();
23
- userLibrariesSettings = await grok.dapi.userDataStorage.get(LIB_STORAGE_NAME, true);
22
+ userLibSettings = await getUserLibSettings();
24
23
 
25
24
  // Tests 'findMonomers' requires default monomer library loaded
26
- await grok.dapi.userDataStorage.post(LIB_STORAGE_NAME, LIB_DEFAULT, true);
27
- await monomerLibHelper.loadLibraries(true); // load default libraries
25
+ await setUserLibSettingsForTests();
26
+ await monomerLibHelper.loadLibraries(true); // load default libraries for tests
28
27
  });
29
28
 
30
29
  after(async () => {
31
- await grok.dapi.userDataStorage.put(LIB_STORAGE_NAME, userLibrariesSettings, true);
30
+ await setUserLibSettings(userLibSettings);
31
+ await monomerLibHelper.loadLibraries(true);
32
32
  });
33
33
 
34
34
  const tests: { [testName: string]: { test: string, tgt: Set<string> } } = {
@@ -0,0 +1,57 @@
1
+ import * as grok from 'datagrok-api/grok';
2
+ import * as ui from 'datagrok-api/ui';
3
+ import * as DG from 'datagrok-api/dg';
4
+
5
+ import {after, before, category, delay, expect, test, expectArray, testEvent} from '@datagrok-libraries/utils/src/test';
6
+ import {
7
+ getUserLibSettings, LibSettings, setUserLibSettings, setUserLibSettingsForTests
8
+ } from '@datagrok-libraries/bio/src/monomer-works/lib-settings';
9
+ import {getMonomerLibHelper, IMonomerLibHelper} from '@datagrok-libraries/bio/src/monomer-works/monomer-utils';
10
+ import {MolfileHandler} from '@datagrok-libraries/chem-meta/src/parsing-utils/molfile-handler';
11
+ import {MolfileHandlerBase} from '@datagrok-libraries/chem-meta/src/parsing-utils/molfile-handler-base';
12
+
13
+ import {awaitGrid} from './utils';
14
+
15
+ import {_package} from '../package-test';
16
+
17
+ category('getMolfiles', () => {
18
+ let monomerLibHelper: IMonomerLibHelper;
19
+ let userLibSettings: LibSettings;
20
+
21
+ before(async () => {
22
+ monomerLibHelper = await getMonomerLibHelper();
23
+ userLibSettings = await getUserLibSettings();
24
+ await setUserLibSettingsForTests();
25
+ await monomerLibHelper.loadLibraries(true);
26
+ });
27
+
28
+ after(async () => {
29
+ await setUserLibSettings(userLibSettings);
30
+ await monomerLibHelper.loadLibraries(true);
31
+ });
32
+
33
+ const csv = `Helm, atoms, bonds
34
+ PEPTIDE1{meI.hHis.Aca.N.T.dE.Thr_PO3H2.Aca.D-Tyr_Et.Tyr_ab-dehydroMe.dV}$$$$,11,10
35
+ PEPTIDE1{meI.hHis.Aca.Cys_SEt.T.dK.Thr_PO3H2.Aca.Tyr_PO3H2.D-Chg.dV}$$$$,11,10
36
+ PEPTIDE1{Lys_Boc.hHis.Aca.Cys_SEt.T.dK.Thr_PO3H2.Aca.Tyr_PO3H2}$$$$,9,8`;
37
+
38
+ test('linear1', async () => {
39
+ const df = DG.DataFrame.fromCsv(csv);
40
+ const helmCol = df.getCol('Helm');
41
+ const view = grok.shell.addTableView(df);
42
+
43
+ _package.logger.debug('Helm/getMolfiles/linear1, grid awaiting 1');
44
+ await awaitGrid(view.grid, 5000);
45
+ _package.logger.debug('Helm/getMolfiles/linear1, grid awaited 1');
46
+
47
+ const resCol: DG.Column<string> = await grok.functions.call('Helm:getMolfiles', {col: helmCol});
48
+ expect(resCol.length, helmCol.length);
49
+ const resMolfileList: MolfileHandlerBase[] = resCol.toList().map((molfile) => MolfileHandler.getInstance(molfile));
50
+ expectArray(resMolfileList.map((mf) => mf.atomCount), df.getCol('atoms').toList());
51
+ expectArray(resMolfileList.map((mf) => mf.bondCount), df.getCol('bonds').toList());
52
+
53
+ _package.logger.debug('Helm/getMolfiles/linear1, grid awaiting 2');
54
+ await awaitGrid(view.grid, 5000);
55
+ _package.logger.debug('Helm/getMolfiles/linear1, grid awaited 2');
56
+ });
57
+ });
@@ -0,0 +1,11 @@
1
+ import * as grok from 'datagrok-api/grok';
2
+ import * as ui from 'datagrok-api/ui';
3
+ import * as DG from 'datagrok-api/dg';
4
+
5
+ import {delay, testEvent} from '@datagrok-libraries/utils/src/test';
6
+
7
+ export async function awaitGrid(grid: DG.Grid, timeout: number = 5000): Promise<void> {
8
+ await delay(100);
9
+ await testEvent(grid.onAfterDrawContent, () => {},
10
+ () => { grid.invalidate(); }, timeout);
11
+ }
@@ -1,4 +1,5 @@
1
1
  import * as DG from 'datagrok-api/dg';
2
+
2
3
  import {
3
4
  RGROUP_CAP_GROUP_NAME,
4
5
  RGROUP_CAP_GROUP_SMILES,
@@ -8,7 +9,7 @@ import {
8
9
  RGROUPS,
9
10
  RGROUP_LABEL,
10
11
  SDF_MONOMER_NAME
11
- } from './constants';
12
+ } from '../constants';
12
13
 
13
14
  export function getParts(subParts: string[], s: string): string[] {
14
15
  const j = 0;