@datagrok-libraries/bio 5.43.0 → 5.44.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 (87) hide show
  1. package/CHANGELOG.md +23 -2
  2. package/package.json +4 -3
  3. package/src/helm/helm-helper.d.ts +17 -2
  4. package/src/helm/helm-helper.d.ts.map +1 -1
  5. package/src/helm/helm-helper.js +22 -0
  6. package/src/helm/helm-helper.js.map +1 -1
  7. package/src/helm/types.d.ts +4 -2
  8. package/src/helm/types.d.ts.map +1 -1
  9. package/src/monomer-works/consts.d.ts +13 -3
  10. package/src/monomer-works/consts.d.ts.map +1 -1
  11. package/src/monomer-works/consts.js +3 -3
  12. package/src/monomer-works/consts.js.map +1 -1
  13. package/src/monomer-works/monomer-hover.d.ts +10 -0
  14. package/src/monomer-works/monomer-hover.d.ts.map +1 -0
  15. package/src/monomer-works/monomer-hover.js +123 -0
  16. package/src/monomer-works/monomer-hover.js.map +1 -0
  17. package/src/monomer-works/monomer-utils.d.ts.map +1 -1
  18. package/src/monomer-works/monomer-utils.js +3 -2
  19. package/src/monomer-works/monomer-utils.js.map +1 -1
  20. package/src/monomer-works/seq-to-molfile-worker.js +5 -5
  21. package/src/monomer-works/seq-to-molfile-worker.js.map +1 -1
  22. package/src/monomer-works/seq-to-molfile.d.ts +14 -5
  23. package/src/monomer-works/seq-to-molfile.d.ts.map +1 -1
  24. package/src/monomer-works/seq-to-molfile.js +56 -12
  25. package/src/monomer-works/seq-to-molfile.js.map +1 -1
  26. package/src/monomer-works/to-atomic-level-utils.d.ts +7 -7
  27. package/src/monomer-works/to-atomic-level-utils.d.ts.map +1 -1
  28. package/src/monomer-works/to-atomic-level-utils.js +50 -25
  29. package/src/monomer-works/to-atomic-level-utils.js.map +1 -1
  30. package/src/monomer-works/to-atomic-level.d.ts +8 -9
  31. package/src/monomer-works/to-atomic-level.d.ts.map +1 -1
  32. package/src/monomer-works/to-atomic-level.js +40 -47
  33. package/src/monomer-works/to-atomic-level.js.map +1 -1
  34. package/src/monomer-works/types.d.ts +44 -0
  35. package/src/monomer-works/types.d.ts.map +1 -1
  36. package/src/monomer-works/types.js +25 -1
  37. package/src/monomer-works/types.js.map +1 -1
  38. package/src/monomer-works/utils.d.ts +15 -0
  39. package/src/monomer-works/utils.d.ts.map +1 -0
  40. package/src/monomer-works/utils.js +34 -0
  41. package/src/monomer-works/utils.js.map +1 -0
  42. package/src/types/index.d.ts +10 -10
  43. package/src/types/index.d.ts.map +1 -1
  44. package/src/types/index.js +1 -7
  45. package/src/types/index.js.map +1 -1
  46. package/src/unknown.d.ts.map +1 -1
  47. package/src/unknown.js +18 -14
  48. package/src/unknown.js.map +1 -1
  49. package/src/utils/cell-renderer-back-base.d.ts +1 -1
  50. package/src/utils/cell-renderer-back-base.d.ts.map +1 -1
  51. package/src/utils/cell-renderer-back-base.js +1 -1
  52. package/src/utils/cell-renderer-back-base.js.map +1 -1
  53. package/src/utils/cell-renderer-monomer-placer.js +10 -11
  54. package/src/utils/cell-renderer-monomer-placer.js.map +1 -1
  55. package/src/utils/cell-renderer.d.ts +3 -0
  56. package/src/utils/cell-renderer.d.ts.map +1 -1
  57. package/src/utils/cell-renderer.js +4 -0
  58. package/src/utils/cell-renderer.js.map +1 -1
  59. package/src/utils/generator.d.ts.map +1 -1
  60. package/src/utils/generator.js +2 -1
  61. package/src/utils/generator.js.map +1 -1
  62. package/src/utils/macromolecule/alignment.d.ts.map +1 -1
  63. package/src/utils/macromolecule/alignment.js +6 -6
  64. package/src/utils/macromolecule/alignment.js.map +1 -1
  65. package/src/utils/macromolecule/consts.d.ts +5 -0
  66. package/src/utils/macromolecule/consts.d.ts.map +1 -1
  67. package/src/utils/macromolecule/consts.js +7 -0
  68. package/src/utils/macromolecule/consts.js.map +1 -1
  69. package/src/utils/macromolecule/scoring.d.ts.map +1 -1
  70. package/src/utils/macromolecule/scoring.js +1 -1
  71. package/src/utils/macromolecule/scoring.js.map +1 -1
  72. package/src/utils/macromolecule/types.d.ts +0 -4
  73. package/src/utils/macromolecule/types.d.ts.map +1 -1
  74. package/src/utils/macromolecule/types.js +0 -2
  75. package/src/utils/macromolecule/types.js.map +1 -1
  76. package/src/utils/macromolecule/utils.d.ts +0 -4
  77. package/src/utils/macromolecule/utils.d.ts.map +1 -1
  78. package/src/utils/macromolecule/utils.js +11 -13
  79. package/src/utils/macromolecule/utils.js.map +1 -1
  80. package/src/utils/seq-handler.d.ts +0 -3
  81. package/src/utils/seq-handler.d.ts.map +1 -1
  82. package/src/utils/seq-handler.js +7 -10
  83. package/src/utils/seq-handler.js.map +1 -1
  84. package/src/utils/seq-helper.d.ts +4 -15
  85. package/src/utils/seq-helper.d.ts.map +1 -1
  86. package/src/utils/seq-helper.js +0 -1
  87. package/src/utils/seq-helper.js.map +1 -1
@@ -1,31 +1,75 @@
1
- export async function seqToMolFileWorker(monomerSequencesArray, monomersDict, alphabet, polymerType, srcColLength) {
1
+ import * as DG from 'datagrok-api/dg';
2
+ import wu from 'wu';
3
+ import { getMolColName, hexToPercentRgb } from './utils';
4
+ import { SeqHandler } from '../utils/seq-handler';
5
+ import { HelmTypes } from '../helm/consts';
6
+ export async function seqToMolFileWorker(seqCol, monomersDict, alphabet, polymerType, monomerLib, rdKitModule) {
7
+ const srcColLength = seqCol.length;
8
+ const df = seqCol.dataFrame;
2
9
  const threadCount = Math.max(navigator.hardwareConcurrency - 2, 1);
3
10
  const workers = new Array(threadCount).fill(null)
4
11
  .map(() => new Worker(new URL('./seq-to-molfile-worker', import.meta.url)));
5
12
  const chunkSize = srcColLength / threadCount;
6
- let res = [];
7
- let warnings = [];
8
13
  const promises = new Array(threadCount);
14
+ const seqSH = SeqHandler.forColumn(seqCol);
15
+ const biotype = polymerType == "RNA" /* PolymerTypes.RNA */ ? HelmTypes.NUCLEOTIDE : HelmTypes.AA;
16
+ const seqList = wu.count(0).take(seqCol.length).map((rowIdx) => {
17
+ const seqSS = seqSH.getSplitted(rowIdx);
18
+ return wu.count(0).take(seqSS.length)
19
+ .map((posIdx) => { return { position: posIdx, symbol: seqSS.getCanonical(posIdx), biotype: biotype }; })
20
+ .toArray();
21
+ }).toArray();
9
22
  for (let i = 0; i < threadCount; i++) {
23
+ const worker = workers[i];
10
24
  const start = Math.floor(i * chunkSize);
11
25
  const end = (i === threadCount - 1) ? srcColLength : Math.floor((i + 1) * chunkSize);
12
- workers[i].postMessage({ monomerSequencesArray, monomersDict, alphabet, polymerType, start, end });
13
- promises[i] = new Promise((resolveWorker) => {
14
- workers[i].onmessage = ({ data: { molfileList, molfileWarningList } }) => {
15
- resolveWorker({ molfileList, molfileWarningList });
26
+ promises[i] = new Promise((resolve) => {
27
+ worker.onmessage = (res) => {
28
+ resolve(res.data);
16
29
  };
17
30
  });
31
+ worker.postMessage({ seqList, monomersDict, alphabet, polymerType, start, end });
18
32
  }
19
- const resArray = await Promise.all(promises);
20
- resArray.forEach((resItem) => {
21
- res = res.concat(...resItem.molfileList);
22
- warnings = warnings.concat(...resItem.molfileWarningList);
33
+ let molList = [];
34
+ let warnings = [];
35
+ await Promise.all(promises).then((resArray) => {
36
+ for (const resItem of resArray) {
37
+ molList.push(...resItem.molfiles);
38
+ warnings.push(...resItem.warnings);
39
+ }
23
40
  });
41
+ const molHlList = molList.map((item) => getMolHighlight(item.monomers.values(), monomerLib));
24
42
  setTimeout(() => {
25
43
  workers.forEach((worker) => {
26
44
  worker.terminate();
27
45
  });
28
46
  }, 0);
29
- return { molfileList: res, molfileWarningList: warnings };
47
+ const molColName = getMolColName(df, seqCol.name);
48
+ const molCol = DG.Column.fromType(DG.COLUMN_TYPE.STRING, molColName, seqCol.length)
49
+ .init((rowIdx) => molList[rowIdx].molfile);
50
+ molCol.semType = DG.SEMTYPE.MOLECULE;
51
+ molCol.meta.units = DG.UNITS.Molecule.MOLBLOCK;
52
+ molCol.setTag(".sequence-src-col" /* ChemTags.SEQUENCE_SRC_COL */, seqCol.name);
53
+ return { molCol: molCol, warnings: warnings };
54
+ }
55
+ export function getMolHighlight(monomerMaps, monomerLib) {
56
+ const hlAtoms = {};
57
+ const hlBonds = {};
58
+ for (const monomerMapValue of monomerMaps) {
59
+ const wem = monomerLib.getWebEditorMonomer(monomerMapValue.biotype, monomerMapValue.symbol);
60
+ const mColorStr = wem.backgroundcolor;
61
+ const mColorA = hexToPercentRgb(mColorStr ?? DG.Color.toRgb(DG.Color.mouseOverRows)) ?? [1.0, 0.0, 0.0, 0.7];
62
+ for (const mAtom of monomerMapValue.atoms)
63
+ hlAtoms[mAtom] = mColorA;
64
+ for (const mBond of monomerMapValue.bonds)
65
+ hlBonds[mBond] = mColorA;
66
+ }
67
+ let resSubstruct = {
68
+ atoms: Object.keys(hlAtoms).map((k) => parseInt(k)),
69
+ bonds: Object.keys(hlBonds).map((k) => parseInt(k)),
70
+ highlightAtomColors: hlAtoms,
71
+ highlightBondColors: hlBonds,
72
+ };
73
+ return resSubstruct;
30
74
  }
31
75
  //# sourceMappingURL=seq-to-molfile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"seq-to-molfile.js","sourceRoot":"","sources":["seq-to-molfile.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,qBAAiC,EAAE,YAAmC,EAC7G,QAAkB,EAAE,WAA8B,EAAE,YAAoB;IAExE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;SAC9C,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;IAC7C,IAAI,GAAG,GAAa,EAAE,CAAC;IACvB,IAAI,QAAQ,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,IAAI,KAAK,CAA8B,WAAW,CAAC,CAAC;IACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;QACrF,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,qBAAqB,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC;QACjG,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAqB,CAAC,aAAa,EAAE,EAAE;YAC9D,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,EAAC,IAAI,EAAE,EAAC,WAAW,EAAE,kBAAkB,EAAC,EAAC,EAAQ,EAAE;gBACzE,aAAa,CAAC,EAAC,WAAW,EAAE,kBAAkB,EAAC,CAAC,CAAC;YACnD,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE7C,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QACzC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,OAAO,EAAC,WAAW,EAAE,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"seq-to-molfile.js","sourceRoot":"","sources":["seq-to-molfile.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,23 @@
1
- import { MolGraph } from './types';
2
- import { HELM_POLYMER_TYPE } from '../utils/const';
1
+ import { MolfileWithMap, MonomerMolGraphMap } from './types';
3
2
  import { ALPHABET } from '../utils/macromolecule/consts';
4
3
  import { IMonomerLib } from '../types';
4
+ import { ISeqMonomer, PolymerType } from '../helm/types';
5
5
  /** Get a mapping of peptide symbols to HELM monomer library objects with selected fields.
6
6
  * @param {IMonomerLib} monomerLib - Monomer library
7
7
  * @param {HELM_POLYMER_TYPE} polymerType - Polymer type
8
8
  * @param {ALPHABET} alphabet - Alphabet of the column
9
9
  * @return {Map<string, any>} - Mapping of peptide symbols to HELM monomer library objects with selected fields*/
10
- export declare function getFormattedMonomerLib(monomerLib: IMonomerLib, polymerType: HELM_POLYMER_TYPE, alphabet: ALPHABET): Map<string, any>;
10
+ export declare function getFormattedMonomerLib(monomerLib: IMonomerLib, polymerType: PolymerType, alphabet: ALPHABET): Map<string, any>;
11
11
  /** Translate a sequence of monomer symbols into Molfile V3000
12
- * @param {string[]} monomerSeq - Sequence of monomer symbols
12
+ * @param {string[]} monomerSeq - Sequence of monomer symbols (canonical)
13
13
  * @param {Map<string, MolGraph>} monomersDict - Mapping of monomer symbols to MolGraph objects
14
14
  * @param {ALPHABET} alphabet - Alphabet of the column
15
- * @param {HELM_POLYMER_TYPE} polymerType - Polymer type
15
+ * @param {PolymerType} polymerType - Polymer type
16
16
  * @return {string} - Molfile V3000*/
17
- export declare function monomerSeqToMolfile(monomerSeq: string[], monomersDict: Map<string, MolGraph>, alphabet: ALPHABET, polymerType: HELM_POLYMER_TYPE): string;
17
+ export declare function monomerSeqToMolfile(monomerSeq: ISeqMonomer[], monomersDict: MonomerMolGraphMap, alphabet: ALPHABET, polymerType: PolymerType): MolfileWithMap;
18
18
  /** Keep precision upon floating point operations over atom coordinates
19
19
  * @param {number}x - the floating point number
20
20
  * @return {number} - the floating point number with the same precision
21
- */
21
+ */
22
22
  export declare function keepPrecision(x: number): number;
23
23
  //# sourceMappingURL=to-atomic-level-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"to-atomic-level-utils.d.ts","sourceRoot":"","sources":["to-atomic-level-utils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EAAC,MAAM,SAAS,CAAC;AAC3B,OAAO,EAC0B,iBAAiB,EACjD,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAC,QAAQ,EAAC,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAC,WAAW,EAAU,MAAM,UAAU,CAAC;AAG9C;;;;iHAIiH;AACjH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,GAC1E,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAsBlB;AAED;;;;;qCAKqC;AACrC,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,EACzD,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,GACjD,MAAM,CAkFR;AAqPD;;;EAGE;AACF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C"}
1
+ {"version":3,"file":"to-atomic-level-utils.d.ts","sourceRoot":"","sources":["to-atomic-level-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAA4C,cAAc,EAAwB,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAE5H,OAAO,EAAC,QAAQ,EAAa,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAC,WAAW,EAAU,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAIvD;;;;iHAIiH;AACjH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GACpE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAsBlB;AAED;;;;;qCAKqC;AACrC,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,kBAAkB,EAC3D,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,GAC3C,cAAc,CAsGhB;AAyPD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C"}
@@ -1,6 +1,8 @@
1
1
  import { monomerWorksConsts as C } from './consts';
2
+ import { getMolGraph, MolfileWithMap, MonomerMap } from './types';
2
3
  import { HELM_CORE_FIELDS, } from '../utils/const';
3
- import { ALPHABET } from '../utils/macromolecule/consts';
4
+ import { ALPHABET, GAP_SYMBOL } from '../utils/macromolecule/consts';
5
+ import { helmTypeToPolymerType } from './monomer-works';
4
6
  /** Get a mapping of peptide symbols to HELM monomer library objects with selected fields.
5
7
  * @param {IMonomerLib} monomerLib - Monomer library
6
8
  * @param {HELM_POLYMER_TYPE} polymerType - Polymer type
@@ -12,9 +14,9 @@ export function getFormattedMonomerLib(monomerLib, polymerType, alphabet) {
12
14
  const it = monomerLib.getMonomer(polymerType, monomerSymbol);
13
15
  if (polymerType === "RNA" /* HELM_POLYMER_TYPE.RNA */ &&
14
16
  (it["monomerType" /* HELM_FIELDS.MONOMER_TYPE */] === "Branch" /* HELM_MONOMER_TYPE.BRANCH */ ||
15
- alphabet === ALPHABET.DNA && it["symbol" /* HELM_FIELDS.SYMBOL */] === C.DEOXYRIBOSE ||
16
- alphabet === ALPHABET.RNA && it["symbol" /* HELM_FIELDS.SYMBOL */] === C.RIBOSE ||
17
- it["symbol" /* HELM_FIELDS.SYMBOL */] === C.PHOSPHATE) ||
17
+ alphabet === ALPHABET.DNA && it["symbol" /* HELM_FIELDS.SYMBOL */] === C.DEOXYRIBOSE.symbol ||
18
+ alphabet === ALPHABET.RNA && it["symbol" /* HELM_FIELDS.SYMBOL */] === C.RIBOSE.symbol ||
19
+ it["symbol" /* HELM_FIELDS.SYMBOL */] === C.PHOSPHATE.symbol) ||
18
20
  polymerType === "PEPTIDE" /* HELM_POLYMER_TYPE.PEPTIDE */ &&
19
21
  it["monomerType" /* HELM_FIELDS.MONOMER_TYPE */] !== "Branch" /* HELM_MONOMER_TYPE.BRANCH */) {
20
22
  const monomerObject = {};
@@ -28,15 +30,15 @@ export function getFormattedMonomerLib(monomerLib, polymerType, alphabet) {
28
30
  return map;
29
31
  }
30
32
  /** Translate a sequence of monomer symbols into Molfile V3000
31
- * @param {string[]} monomerSeq - Sequence of monomer symbols
33
+ * @param {string[]} monomerSeq - Sequence of monomer symbols (canonical)
32
34
  * @param {Map<string, MolGraph>} monomersDict - Mapping of monomer symbols to MolGraph objects
33
35
  * @param {ALPHABET} alphabet - Alphabet of the column
34
- * @param {HELM_POLYMER_TYPE} polymerType - Polymer type
36
+ * @param {PolymerType} polymerType - Polymer type
35
37
  * @return {string} - Molfile V3000*/
36
38
  export function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerType) {
37
39
  if (monomerSeq.length === 0) {
38
40
  // throw new Error('monomerSeq is empty');
39
- return '';
41
+ return MolfileWithMap.createEmpty();
40
42
  }
41
43
  // define atom and bond counts, taking into account the bond type
42
44
  const getAtomAndBondCounts = getResultingAtomBondCounts;
@@ -44,7 +46,7 @@ export function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerT
44
46
  // create arrays to store lines of the resulting molfile
45
47
  const molfileAtomBlock = new Array(atomCount);
46
48
  const molfileBondBlock = new Array(bondCount);
47
- let addMonomerToMolblock; // todo: types?
49
+ let addMonomerToMolblock;
48
50
  let sugar = null;
49
51
  let phosphate = null;
50
52
  if (polymerType === "PEPTIDE" /* HELM_POLYMER_TYPE.PEPTIDE */) {
@@ -52,8 +54,8 @@ export function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerT
52
54
  }
53
55
  else { // nucleotides
54
56
  addMonomerToMolblock = addNucleotideToMolblock;
55
- sugar = (alphabet === ALPHABET.DNA) ? monomersDict.get(C.DEOXYRIBOSE) : monomersDict.get(C.RIBOSE);
56
- phosphate = monomersDict.get(C.PHOSPHATE);
57
+ sugar = (alphabet === ALPHABET.DNA) ? getMolGraph(monomersDict, C.DEOXYRIBOSE) : getMolGraph(monomersDict, C.RIBOSE);
58
+ phosphate = getMolGraph(monomersDict, C.PHOSPHATE);
57
59
  }
58
60
  const v = {
59
61
  i: 0,
@@ -72,14 +74,33 @@ export function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerT
72
74
  atomCount: atomCount,
73
75
  bondCount: bondCount,
74
76
  };
77
+ const monomers = new MonomerMap();
75
78
  const steabsCollection = [];
76
79
  let nAtoms = 0;
77
80
  for (v.i = 0; v.i < LC.seqLength; ++v.i) {
78
- const monomer = monomersDict.get(monomerSeq[v.i]);
81
+ const seqMonomer = monomerSeq[v.i];
82
+ if (seqMonomer.symbol === GAP_SYMBOL)
83
+ continue;
84
+ const monomer = getMolGraph(monomersDict, { symbol: seqMonomer.symbol, polymerType: helmTypeToPolymerType(seqMonomer.biotype) });
85
+ const mAtomFirst = v.nodeShift;
86
+ const mBondFirst = v.bondShift;
79
87
  addMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v, LC);
80
88
  //adding stereo atoms to array for further STEABS block generation
81
89
  monomer.stereoAtoms?.forEach((i) => steabsCollection.push(i + nAtoms));
82
90
  nAtoms += monomer.atoms.x.length;
91
+ const mAtomCount = v.nodeShift - mAtomFirst;
92
+ const mAtomList = new Array(mAtomCount);
93
+ for (let maI = 0; maI < mAtomCount; ++maI)
94
+ mAtomList[maI] = mAtomFirst + maI;
95
+ const mBondCount = v.bondShift - mBondFirst;
96
+ const mBondList = new Array(mBondCount);
97
+ for (let mbI = 0; mbI < mBondCount; ++mbI)
98
+ mBondList[mbI] = mBondFirst + mbI;
99
+ monomers.set(v.i, {
100
+ biotype: seqMonomer.biotype,
101
+ symbol: seqMonomer.symbol,
102
+ atoms: mAtomList, bonds: mBondList
103
+ });
83
104
  }
84
105
  capResultingMolblock(molfileAtomBlock, molfileBondBlock, v, LC);
85
106
  const molfileCountsLine = C.V3K_BEGIN_COUNTS_LINE + atomCount + ' ' + bondCount + C.V3K_COUNTS_LINE_ENDING;
@@ -102,7 +123,7 @@ export function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerT
102
123
  result += C.V3K_END_CTAB_BLOCK;
103
124
  result += C.V3K_END;
104
125
  // return molfileParts.join('');
105
- return result;
126
+ return { molfile: result, monomers: monomers };
106
127
  }
107
128
  function getCollectionBlock(collection) {
108
129
  //one row in STEABS block can be no longer than 80 symbols
@@ -257,34 +278,38 @@ function fillBackboneToBranchBond(branchMonomer, molfileBondBlock, v) {
257
278
  1 + ' ' + firstAtom + ' ' + secondAtom + '\n';
258
279
  }
259
280
  /** Compute the atom/bond counts for the resulting molfile, depending on the
260
- * type of polymer (peptide/nucleotide)
261
- * @param {string[]}monomerSeq - the sequence of monomers
262
- * @param {Map<string, MolGraph>}monomersDict - the dictionary of monomers
263
- * @param {ALPHABET}alphabet - the alphabet of the monomers
264
- * @param {HELM_POLYMER_TYPE}polymerType - the type of polymer
265
- * @return {{atomCount: number, bondCount: number}} - the atom/bond counts*/
281
+ * type of polymer (peptide/nucleotide)
282
+ * @param {string[]}monomerSeq - the sequence of monomers
283
+ * @param {Map<string, MolGraph>}monomersDict - the dictionary of monomers
284
+ * @param {ALPHABET}alphabet - the alphabet of the monomers
285
+ * @param {HELM_POLYMER_TYPE}polymerType - the type of polymer
286
+ * @return {{atomCount: number, bondCount: number}} - the atom/bond counts*/
266
287
  function getResultingAtomBondCounts(monomerSeq, monomersDict, alphabet, polymerType) {
267
288
  let atomCount = 0;
268
289
  let bondCount = 0;
290
+ let monomerCount = 0;
269
291
  // sum up all the atoms/nodes provided by the sequence
270
- for (const monomerSymbol of monomerSeq) {
271
- if (monomerSymbol === '')
292
+ for (const seqMonomer of monomerSeq) {
293
+ if (seqMonomer.symbol === GAP_SYMBOL)
272
294
  continue; // Skip for gap/empty monomer in MSA
273
- const monomer = monomersDict.get(monomerSymbol);
295
+ if (seqMonomer.symbol == '*')
296
+ throw new Error(`Gap canonical symbol is '', not '*`);
297
+ const monomer = getMolGraph(monomersDict, { symbol: seqMonomer.symbol, polymerType: helmTypeToPolymerType(seqMonomer.biotype) });
274
298
  atomCount += monomer.atoms.x.length;
275
299
  bondCount += monomer.bonds.bondTypes.length;
300
+ monomerCount++;
276
301
  }
277
302
  // add extra values depending on the polymer type
278
303
  if (polymerType === "PEPTIDE" /* HELM_POLYMER_TYPE.PEPTIDE */) {
279
304
  // add the rightmost/terminating cap group 'OH' (i.e. 'O')
280
305
  atomCount += 1;
281
306
  // add chain-extending bonds (C-NH per each monomer pair and terminal C-OH)
282
- bondCount += monomerSeq.length;
307
+ bondCount += monomerCount;
283
308
  }
284
309
  else { // nucleotides
285
310
  const sugar = (alphabet === ALPHABET.DNA) ?
286
- monomersDict.get(C.DEOXYRIBOSE) : monomersDict.get(C.RIBOSE);
287
- const phosphate = monomersDict.get(C.PHOSPHATE);
311
+ getMolGraph(monomersDict, C.DEOXYRIBOSE) : getMolGraph(monomersDict, C.RIBOSE);
312
+ const phosphate = getMolGraph(monomersDict, C.PHOSPHATE);
288
313
  // add phosphate per each pair of nucleobase symbols
289
314
  atomCount += (monomerSeq.length - 1) * phosphate.atoms.x.length;
290
315
  // add sugar per each nucleobase symbol
@@ -305,7 +330,7 @@ function getResultingAtomBondCounts(monomerSeq, monomersDict, alphabet, polymerT
305
330
  /** Keep precision upon floating point operations over atom coordinates
306
331
  * @param {number}x - the floating point number
307
332
  * @return {number} - the floating point number with the same precision
308
- */
333
+ */
309
334
  export function keepPrecision(x) {
310
335
  return Math.round(C.PRECISION_FACTOR * x) / C.PRECISION_FACTOR;
311
336
  }
@@ -1 +1 @@
1
- {"version":3,"file":"to-atomic-level-utils.js","sourceRoot":"","sources":["to-atomic-level-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"to-atomic-level-utils.js","sourceRoot":"","sources":["to-atomic-level-utils.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,29 @@
1
1
  import * as DG from 'datagrok-api/dg';
2
- import { HELM_POLYMER_TYPE } from '../utils/const';
2
+ import { RDModule } from '@datagrok-libraries/chem-meta/src/rdkit-api';
3
3
  import { ALPHABET } from '../utils/macromolecule/consts';
4
4
  import { IMonomerLib, Monomer } from '../types';
5
- import { Bonds, MolGraph } from './types';
5
+ import { Bonds, MolGraph, MonomerMolGraphMap } from './types';
6
+ import { ToAtomicLevelRes } from '../utils/seq-helper';
7
+ import { ISeqMonomer, PolymerType } from '../helm/types';
6
8
  /** Convert Macromolecule column into Molecule column storing molfile V3000 with the help of a monomer library
7
9
  * @param {DG.DataFrame} df - DataFrame containing the column to be converted
8
10
  * @param {DG.Column} seqCol - Column containing the macromolecule sequence
9
11
  * @param {IMonomerLib} monomerLib - Monomer library
10
12
  */
11
- export declare function _toAtomicLevel(df: DG.DataFrame, seqCol: DG.Column<string>, monomerLib: IMonomerLib): Promise<{
12
- col: DG.Column | null;
13
- warnings: string[];
14
- }>;
13
+ export declare function _toAtomicLevel(df: DG.DataFrame, seqCol: DG.Column<string>, monomerLib: IMonomerLib, rdKitModule: RDModule): Promise<ToAtomicLevelRes>;
15
14
  /** Get jagged array of monomer symbols for the dataframe
16
15
  * @param {DG.Column} macroMolCol - Column with macro-molecules
17
16
  * @return {string[]} - Jagged array of monomer symbols for the dataframe */
18
- export declare function getMonomerSequencesArray(macroMolCol: DG.Column<string>): string[][];
17
+ export declare function getMonomerSequencesArray(macroMolCol: DG.Column<string>): ISeqMonomer[][];
19
18
  /** Get a mapping of monomer symbols to MolGraph objects. Notice, the
20
19
  * transformation from molfile V2000 to V3000 takes place,
21
20
  * with the help of async function call from Chem (RdKit module)
22
21
  * @param {string[]} monomerSequencesArray - Jagged array of monomer symbols for the dataframe
23
22
  * @param {IMonomerLib} monomerLib - Monomer library
24
- * @param {HELM_POLYMER_TYPE} polymerType - Polymer type
23
+ * @param {PolymerType} polymerType - Polymer type
25
24
  * @param {ALPHABET} alphabet - Alphabet
26
25
  * @return {Map<string, MolGraph>} - Mapping of monomer symbols to MolGraph objects*/
27
- export declare function getMonomersDictFromLib(monomerSequencesArray: string[][], monomerLib: IMonomerLib, polymerType: HELM_POLYMER_TYPE, alphabet: ALPHABET): Promise<Map<string, MolGraph>>;
26
+ export declare function getMonomersDictFromLib(monomerSequencesArray: ISeqMonomer[][], polymerType: PolymerType, alphabet: ALPHABET, monomerLib: IMonomerLib, rdKitModule: RDModule): MonomerMolGraphMap;
28
27
  /** Parse element symbols for R-groups from the HELM monomer library R-group field
29
28
  * @param {any[]} rGroupObjList - R-group object list
30
29
  * @return {Map<number, number>} - Cap group index map*/
@@ -1 +1 @@
1
- {"version":3,"file":"to-atomic-level.d.ts","sourceRoot":"","sources":["to-atomic-level.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAMtC,OAAO,EAAc,iBAAiB,EAAqB,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAC,QAAQ,EAAW,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAO9C,OAAO,EAAQ,KAAK,EAAe,QAAQ,EAAwC,MAAM,SAAS,CAAC;AAOnG;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,WAAW,GACnE,OAAO,CAAC;IAAE,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAG,CAAA;CAAE,CAAC,CAsDzD;AAED;;4EAE4E;AAC5E,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,CAoBnF;AAGD;;;;;;;qFAOqF;AACrF,wBAAsB,sBAAsB,CAC1C,qBAAqB,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,GAC7G,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAsChC;AAwJD;;wDAEwD;AACxD,wBAAgB,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAe7D;AAmGD;;;qCAGqC;AACrC,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,MAAM,CAMhF;AAED;;;mCAGmC;AACnC,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CA8C3E;AAED;;;;8EAI8E;AAC9E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAGxE;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAyC9E;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAc9E;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAcnG;AA6cD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAmEtE;AAED,wBAAsB,2BAA2B,CAAC,eAAe,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CA8BlH;AAED;;iCAEiC;AACjC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAoB1D"}
1
+ {"version":3,"file":"to-atomic-level.d.ts","sourceRoot":"","sources":["to-atomic-level.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAItC,OAAO,EAAC,QAAQ,EAAC,MAAM,6CAA6C,CAAC;AAGrE,OAAO,EAAC,QAAQ,EAAW,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAI9C,OAAO,EAAQ,KAAK,EAA2C,QAAQ,EAAmB,kBAAkB,EAAoC,MAAM,SAAS,CAAC;AAChK,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAW,WAAW,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAMjE;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,GAC1F,OAAO,CAAC,gBAAgB,CAAC,CAqC3B;AAED;;4EAE4E;AAC5E,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,EAAE,EAAE,CAqBxF;AAGD;;;;;;;qFAOqF;AACrF,wBAAgB,sBAAsB,CACpC,qBAAqB,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EACpF,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,GAC7C,kBAAkB,CAqCpB;AAyJD;;wDAEwD;AACxD,wBAAgB,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAe7D;AAmGD;;;qCAGqC;AACrC,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,MAAM,CAMhF;AAED;;;mCAGmC;AACnC,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CA8C3E;AAED;;;;8EAI8E;AAC9E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAGxE;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAyC9E;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAc9E;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAcnG;AA6cD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAmEtE;AAED,wBAAsB,2BAA2B,CAAC,eAAe,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CA8BlH;AAED;;iCAEiC;AACjC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAoB1D"}