@datagrok/sequence-translator 1.4.8 → 1.5.0

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.
Files changed (34) hide show
  1. package/.eslintrc.json +1 -1
  2. package/CHANGELOG.md +24 -0
  3. package/dist/package-test.js +1 -1
  4. package/dist/package-test.js.map +1 -1
  5. package/dist/package.js +1 -1
  6. package/dist/package.js.map +1 -1
  7. package/files/polytool-rules/rules_example.json +35 -38
  8. package/package.json +9 -9
  9. package/src/apps/common/model/oligo-toolkit-package.ts +13 -7
  10. package/src/package.ts +8 -7
  11. package/src/polytool/const.ts +1 -0
  12. package/src/polytool/{pt-conversion.ts → conversion/pt-chain.ts} +118 -285
  13. package/src/polytool/conversion/pt-conversion.ts +26 -0
  14. package/src/polytool/conversion/pt-misc.ts +193 -0
  15. package/src/polytool/conversion/pt-rules.ts +231 -0
  16. package/src/polytool/conversion/rule-manager.ts +205 -0
  17. package/src/polytool/pt-convert-editor.ts +1 -1
  18. package/src/polytool/pt-dialog.ts +133 -6
  19. package/src/polytool/{pt-enumeration-helm-dialog.ts → pt-enumerate-seq-dialog.ts} +243 -114
  20. package/src/polytool/pt-enumeration-helm.ts +2 -2
  21. package/src/polytool/pt-placeholders-breadth-input.ts +80 -39
  22. package/src/polytool/pt-placeholders-input.ts +96 -35
  23. package/src/polytool/pt-unrule-dialog.ts +1 -1
  24. package/src/polytool/pt-unrule.ts +2 -2
  25. package/src/polytool/types.ts +5 -1
  26. package/src/tests/polytool-chain-from-notation-tests.ts +9 -18
  27. package/src/tests/polytool-chain-parse-notation-tests.ts +3 -2
  28. package/src/tests/polytool-convert-tests.ts +5 -3
  29. package/src/tests/polytool-unrule-tests.ts +1 -1
  30. package/src/tests/toAtomicLevel-tests.ts +5 -6
  31. package/src/utils/cell-renderer-cyclized.ts +37 -0
  32. package/src/utils/context-menu.ts +1 -1
  33. package/src/utils/cyclized.ts +23 -26
  34. package/src/polytool/pt-rules.ts +0 -93
@@ -1,44 +1,41 @@
1
- [
2
- {
3
- "type": "link",
4
- "code": "1",
5
- "monomericSubstitution": {
6
- "firstMonomer": "C",
7
- "secondMonomer": "C",
8
- "firstLinkingGroup": "3",
9
- "secondLinkingGroup": "3",
10
- "firstSubstitution": "C",
11
- "secondSubstitution": "C"
12
- }
13
- },
14
- {
15
- "type": "link",
16
- "code": "2",
17
- "monomericSubstitution": {
18
- "firstMonomer": "NH2",
19
- "secondMonomer": "D",
1
+ {
2
+ "homodimerCode": "#2",
3
+ "heterodimerCode": "$2",
4
+ "linkRules": [
5
+ {
6
+ "firstMonomers": [
7
+ "NH2"
8
+ ],
9
+ "secondMonomers": [
10
+ "D"
11
+ ],
20
12
  "firstLinkingGroup": "2",
21
13
  "secondLinkingGroup": "3",
22
- "firstSubstitution": "NH2",
23
- "secondSubstitution": "D"
14
+ "code": "2"
15
+ },
16
+ {
17
+ "firstMonomers": [
18
+ "C"
19
+ ],
20
+ "secondMonomers": [
21
+ "C"
22
+ ],
23
+ "firstLinkingGroup": "3",
24
+ "secondLinkingGroup": "3",
25
+ "code": "1"
24
26
  }
25
- },
26
- {
27
- "type": "reaction",
28
- "code": "4",
29
- "monomericSubstitution": {
30
- "firstMonomer": "azG",
31
- "secondMonomer": "aG",
27
+ ],
28
+ "reactionRules": [
29
+ {
30
+ "code": 4,
31
+ "firstMonomers": [
32
+ "azG"
33
+ ],
34
+ "secondMonomers": [
35
+ "aG"
36
+ ],
32
37
  "reaction": "[C:1]N=[N+]=[N-].[C:2]C#C>>[C:1]N1-N=NC=C1[C:2]",
33
38
  "name": "GGaz"
34
39
  }
35
- },
36
- {
37
- "type": "fragmentDuplication",
38
- "code": "#3"
39
- },
40
- {
41
- "type": "differentFragments",
42
- "code": "$3"
43
- }
44
- ]
40
+ ]
41
+ }
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@datagrok/sequence-translator",
3
3
  "friendlyName": "Sequence Translator",
4
- "version": "1.4.8",
4
+ "version": "1.5.0",
5
5
  "author": {
6
- "name": "Alexey Chopovsky",
7
- "email": "achopovsky@datagrok.ai"
6
+ "name": "Leonid Stolbov",
7
+ "email": "lstolbov@datagrok.ai"
8
8
  },
9
9
  "description": "SequenceTranslator translates [oligonucleotide](https://en.wikipedia.org/wiki/Oligonucleotide) sequences between [different representations](https://github.com/datagrok-ai/public/tree/master/packages/SequenceTranslator#sequence-representations).",
10
10
  "repository": {
@@ -22,10 +22,10 @@
22
22
  }
23
23
  ],
24
24
  "dependencies": {
25
- "@datagrok-libraries/bio": "^5.45.5",
25
+ "@datagrok-libraries/bio": "^5.45.6",
26
26
  "@datagrok-libraries/chem-meta": "^1.2.7",
27
27
  "@datagrok-libraries/tutorials": "^1.4.3",
28
- "@datagrok-libraries/utils": "^4.3.6",
28
+ "@datagrok-libraries/utils": "^4.3.7",
29
29
  "@types/react": "^18.0.15",
30
30
  "cash-dom": "^8.1.0",
31
31
  "datagrok-api": "^1.21.1",
@@ -39,10 +39,10 @@
39
39
  "wu": "^2.1.0"
40
40
  },
41
41
  "devDependencies": {
42
- "@datagrok-libraries/helm-web-editor": "^1.1.12",
43
- "@datagrok-libraries/js-draw-lite": "^0.0.9",
44
- "@datagrok/bio": "^2.16.6",
45
- "@datagrok/helm": "^2.5.7",
42
+ "@datagrok-libraries/helm-web-editor": "^1.1.13",
43
+ "@datagrok-libraries/js-draw-lite": "^0.0.10",
44
+ "@datagrok/bio": "^2.16.8",
45
+ "@datagrok/helm": "^2.5.8",
46
46
  "@datagrok/chem": "^1.12.4",
47
47
  "@types/jquery": "^3.5.14",
48
48
  "@types/js-yaml": "^4.0.5",
@@ -5,6 +5,8 @@ import * as DG from 'datagrok-api/dg';
5
5
  import {getMonomerLibHelper, IMonomerLibHelper} from '@datagrok-libraries/bio/src/monomer-works/monomer-utils';
6
6
  import {IMonomerLib, Monomer} from '@datagrok-libraries/bio/src/types';
7
7
  import {LoggerWrapper} from '@datagrok-libraries/bio/src/utils/logger';
8
+ import {ISeqHelper} from '@datagrok-libraries/bio/src/utils/seq-helper';
9
+ import {IHelmHelper} from '@datagrok-libraries/bio/src/helm/helm-helper';
8
10
 
9
11
  import {APP_NAME} from '../view/const';
10
12
  import {DEFAULT_LIB_FILENAME, FALLBACK_LIB_PATH} from './data-loader/const';
@@ -16,14 +18,18 @@ import {MonomerLibWrapper} from './monomer-lib/lib-wrapper';
16
18
  import {FormatConverter} from '../../translator/model/format-converter';
17
19
  import {FormatDetector} from './parsing-validation/format-detector';
18
20
  import {highlightInvalidSubsequence} from '../view/components/colored-input/input-painters';
19
- import {ISeqHelper} from '@datagrok-libraries/bio/src/utils/seq-helper';
20
21
 
21
22
  export class OligoToolkitPackage extends DG.Package implements ITranslationHelper {
22
- private _seqHelper: ISeqHelper;
23
+
24
+ private _helmHelper: IHelmHelper;
25
+ public get helmHelper(): IHelmHelper {
26
+ if (!this._helmHelper)
27
+ throw new Error('Package SequenceTranslator .helmHelper is not initialized');
28
+ return this._helmHelper;
29
+ }
30
+
23
31
  public get seqHelper(): ISeqHelper {
24
- if (!this._seqHelper)
25
- throw new Error('Package SequenceTranslator .seqHelper is not initialized');
26
- return this._seqHelper;
32
+ return this._helmHelper.seqHelper;
27
33
  }
28
34
 
29
35
  private _monomerLib?: IMonomerLib;
@@ -60,8 +66,8 @@ export class OligoToolkitPackage extends DG.Package implements ITranslationHelpe
60
66
  this._initPromise = initPromise;
61
67
  }
62
68
 
63
- completeInit(seqHelper: ISeqHelper): void {
64
- this._seqHelper = seqHelper;
69
+ completeInit(helmHelper: IHelmHelper): void {
70
+ this._helmHelper = helmHelper;
65
71
  }
66
72
 
67
73
  private initLibDataPromise?: Promise<void>;
package/src/package.ts CHANGED
@@ -18,7 +18,7 @@ import {defaultErrorHandler} from './utils/err-info';
18
18
  //polytool specific
19
19
  import {polyToolConvert, polyToolConvertUI} from './polytool/pt-dialog';
20
20
  import {polyToolEnumerateChemUI} from './polytool/pt-dialog';
21
- import {polyToolEnumerateHelmUI} from './polytool/pt-enumeration-helm-dialog';
21
+ import {polyToolEnumerateHelmUI} from './polytool/pt-enumerate-seq-dialog';
22
22
  import {_setPeptideColumn} from './polytool/utils';
23
23
  import {PolyToolCsvLibHandler} from './polytool/csv-to-json-monomer-lib-converter';
24
24
  import {ITranslationHelper} from './types';
@@ -27,6 +27,7 @@ import {PolyToolConvertFuncEditor} from './polytool/pt-convert-editor';
27
27
  import {CyclizedNotationProvider} from './utils/cyclized';
28
28
  import {getSeqHelper} from '@datagrok-libraries/bio/src/utils/seq-helper';
29
29
  import {PolyToolTags} from './consts';
30
+ import {getHelmHelper} from '@datagrok-libraries/bio/src/helm/helm-helper';
30
31
 
31
32
  export const _package: OligoToolkitPackage = new OligoToolkitPackage({debug: true}/**/);
32
33
 
@@ -34,17 +35,17 @@ let initSequenceTranslatorPromise: Promise<void> | null = null;
34
35
 
35
36
  //tags: init
36
37
  export async function init(): Promise<void> {
37
- if (initSequenceTranslatorPromise === null) {
38
+ if (initSequenceTranslatorPromise === null)
38
39
  _package.startInit(initSequenceTranslatorPromise = initSequenceTranslatorInt());
39
- }
40
+
40
41
  return initSequenceTranslatorPromise;
41
42
  }
42
43
 
43
44
  async function initSequenceTranslatorInt(): Promise<void> {
44
- const [seqHelper] = await Promise.all([
45
- getSeqHelper(),
45
+ const [helmHelper] = await Promise.all([
46
+ getHelmHelper(),
46
47
  ]);
47
- _package.completeInit(seqHelper);
48
+ _package.completeInit(helmHelper);
48
49
  }
49
50
 
50
51
  //name: Oligo Toolkit
@@ -302,5 +303,5 @@ export async function ptEnumeratorChemApp(): Promise<void> {
302
303
  export function applyNotationProviderForCyclized(col: DG.Column<string>, separator: string) {
303
304
  col.meta.units = NOTATION.CUSTOM;
304
305
  col.tags[PolyToolTags.dataRole] = 'template';
305
- col.temp[SeqTemps.notationProvider] = new CyclizedNotationProvider(separator, _package.seqHelper);
306
+ col.temp[SeqTemps.notationProvider] = new CyclizedNotationProvider(separator, _package.helmHelper);
306
307
  }
@@ -33,6 +33,7 @@ export const PT_WARNING_COLUMN = 'No marcomolecule column chosen!';
33
33
  export const PT_UI_GET_HELM = 'Get HELM';
34
34
  export const PT_UI_ADD_HELM = 'Add HELM column';
35
35
  export const PT_UI_USE_CHIRALITY = 'Chirality engine';
36
+ export const PT_UI_HIGHLIGHT_MONOMERS = 'Highlight monomers';
36
37
  export const PT_UI_DIALOG_CONVERSION = 'Poly Tool Conversion';
37
38
  export const PT_UI_DIALOG_UNRULE = 'Poly Tool Unrule';
38
39
  export const PT_UI_DIALOG_ENUMERATION = 'Poly Tool Enumeration';