@datagrok-libraries/bio 5.32.3 → 5.32.5

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 (55) hide show
  1. package/.eslintrc.json +17 -12
  2. package/package.json +1 -1
  3. package/src/aminoacids.js +3 -4
  4. package/src/aminoacids.js.map +1 -1
  5. package/src/monomer-works/consts.d.ts +27 -0
  6. package/src/monomer-works/consts.d.ts.map +1 -0
  7. package/src/monomer-works/consts.js +30 -0
  8. package/src/monomer-works/consts.js.map +1 -0
  9. package/src/monomer-works/monomer-utils.js +6 -17
  10. package/src/monomer-works/monomer-utils.js.map +1 -1
  11. package/src/monomer-works/seq-to-molfile-worker.d.ts +2 -0
  12. package/src/monomer-works/seq-to-molfile-worker.d.ts.map +1 -0
  13. package/src/monomer-works/seq-to-molfile-worker.js +19 -0
  14. package/src/monomer-works/seq-to-molfile-worker.js.map +1 -0
  15. package/src/monomer-works/seq-to-molfile.d.ts +9 -0
  16. package/src/monomer-works/seq-to-molfile.d.ts.map +1 -0
  17. package/src/monomer-works/seq-to-molfile.js +31 -0
  18. package/src/monomer-works/seq-to-molfile.js.map +1 -0
  19. package/src/monomer-works/to-atomic-level-utils.d.ts +23 -0
  20. package/src/monomer-works/to-atomic-level-utils.d.ts.map +1 -0
  21. package/src/monomer-works/to-atomic-level-utils.js +284 -0
  22. package/src/monomer-works/to-atomic-level-utils.js.map +1 -0
  23. package/src/monomer-works/to-atomic-level.d.ts +48 -4
  24. package/src/monomer-works/to-atomic-level.d.ts.map +1 -1
  25. package/src/monomer-works/to-atomic-level.js +273 -503
  26. package/src/monomer-works/to-atomic-level.js.map +1 -1
  27. package/src/monomer-works/types.d.ts +71 -0
  28. package/src/monomer-works/types.d.ts.map +1 -0
  29. package/src/monomer-works/types.js +2 -0
  30. package/src/monomer-works/types.js.map +1 -0
  31. package/src/pdb/pdb-helper.js +7 -18
  32. package/src/pdb/pdb-helper.js.map +1 -1
  33. package/src/tests/palettes-tests.js +20 -33
  34. package/src/tests/palettes-tests.js.map +1 -1
  35. package/src/trees/dendrogram.js +2 -13
  36. package/src/trees/dendrogram.js.map +1 -1
  37. package/src/trees/tree-helper.js +7 -18
  38. package/src/trees/tree-helper.js.map +1 -1
  39. package/src/utils/cell-renderer.d.ts +1 -1
  40. package/src/utils/cell-renderer.d.ts.map +1 -1
  41. package/src/utils/cell-renderer.js +5 -7
  42. package/src/utils/cell-renderer.js.map +1 -1
  43. package/src/utils/macromolecule/utils.js +4 -6
  44. package/src/utils/macromolecule/utils.js.map +1 -1
  45. package/src/utils/splitter.js +1 -1
  46. package/src/utils/splitter.js.map +1 -1
  47. package/src/utils/units-handler.js +26 -38
  48. package/src/utils/units-handler.js.map +1 -1
  49. package/src/utils.js +1 -1
  50. package/src/utils.js.map +1 -1
  51. package/src/viewers/ngl-gl-viewer.js +6 -17
  52. package/src/viewers/ngl-gl-viewer.js.map +1 -1
  53. package/src/viewers/phylocanvas-gl-viewer.js +7 -18
  54. package/src/viewers/phylocanvas-gl-viewer.js.map +1 -1
  55. package/tsconfig.json +1 -1
@@ -0,0 +1,284 @@
1
+ import { monomerWorksConsts as C } from './consts';
2
+ import { HELM_CORE_FIELDS, } from '../utils/const';
3
+ /** Get a mapping of peptide symbols to HELM monomer library objects with selected fields.
4
+ * @param {IMonomerLib} monomerLib - Monomer library
5
+ * @param {HELM_POLYMER_TYPE} polymerType - Polymer type
6
+ * @param {ALPHABET} alphabet - Alphabet of the column
7
+ * @return {Map<string, any>} - Mapping of peptide symbols to HELM monomer library objects with selected fields*/
8
+ export function getFormattedMonomerLib(monomerLib, polymerType, alphabet) {
9
+ const map = new Map();
10
+ for (const monomerSymbol of monomerLib.getMonomerSymbolsByType(polymerType)) {
11
+ const it = monomerLib.getMonomer(polymerType, monomerSymbol);
12
+ if (polymerType === "RNA" /* HELM_POLYMER_TYPE.RNA */ &&
13
+ (it["monomerType" /* HELM_FIELDS.MONOMER_TYPE */] === "Branch" /* HELM_MONOMER_TYPE.BRANCH */ ||
14
+ alphabet === "DNA" /* ALPHABET.DNA */ && it["symbol" /* HELM_FIELDS.SYMBOL */] === C.DEOXYRIBOSE ||
15
+ alphabet === "RNA" /* ALPHABET.RNA */ && it["symbol" /* HELM_FIELDS.SYMBOL */] === C.RIBOSE ||
16
+ it["symbol" /* HELM_FIELDS.SYMBOL */] === C.PHOSPHATE) ||
17
+ polymerType === "PEPTIDE" /* HELM_POLYMER_TYPE.PEPTIDE */ &&
18
+ it["monomerType" /* HELM_FIELDS.MONOMER_TYPE */] !== "Branch" /* HELM_MONOMER_TYPE.BRANCH */) {
19
+ const monomerObject = {};
20
+ HELM_CORE_FIELDS.forEach((field) => {
21
+ //@ts-ignore
22
+ monomerObject[field] = it[field];
23
+ });
24
+ map.set(it["symbol" /* HELM_FIELDS.SYMBOL */], monomerObject);
25
+ }
26
+ }
27
+ return map;
28
+ }
29
+ /** Translate a sequence of monomer symbols into Molfile V3000
30
+ * @param {string[]} monomerSeq - Sequence of monomer symbols
31
+ * @param {Map<string, MolGraph>} monomersDict - Mapping of monomer symbols to MolGraph objects
32
+ * @param {ALPHABET} alphabet - Alphabet of the column
33
+ * @param {HELM_POLYMER_TYPE} polymerType - Polymer type
34
+ * @return {string} - Molfile V3000*/
35
+ export function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerType) {
36
+ if (monomerSeq.length === 0) {
37
+ // throw new Error('monomerSeq is empty');
38
+ return '';
39
+ }
40
+ // define atom and bond counts, taking into account the bond type
41
+ const getAtomAndBondCounts = getResultingAtomBondCounts;
42
+ const { atomCount, bondCount } = getAtomAndBondCounts(monomerSeq, monomersDict, alphabet, polymerType);
43
+ // create arrays to store lines of the resulting molfile
44
+ const molfileAtomBlock = new Array(atomCount);
45
+ const molfileBondBlock = new Array(bondCount);
46
+ let addMonomerToMolblock; // todo: types?
47
+ let sugar = null;
48
+ let phosphate = null;
49
+ if (polymerType === "PEPTIDE" /* HELM_POLYMER_TYPE.PEPTIDE */) {
50
+ addMonomerToMolblock = addAminoAcidToMolblock;
51
+ }
52
+ else { // nucleotides
53
+ addMonomerToMolblock = addNucleotideToMolblock;
54
+ sugar = (alphabet === "DNA" /* ALPHABET.DNA */) ? monomersDict.get(C.DEOXYRIBOSE) : monomersDict.get(C.RIBOSE);
55
+ phosphate = monomersDict.get(C.PHOSPHATE);
56
+ }
57
+ const v = {
58
+ i: 0,
59
+ nodeShift: 0,
60
+ bondShift: 0,
61
+ backbonePositionShift: new Array(2).fill(0),
62
+ branchPositionShift: new Array(2).fill(0),
63
+ backboneAttachNode: 0,
64
+ branchAttachNode: 0,
65
+ flipFactor: 1,
66
+ };
67
+ const LC = {
68
+ sugar: sugar,
69
+ phosphate: phosphate,
70
+ seqLength: monomerSeq.length,
71
+ atomCount: atomCount,
72
+ bondCount: bondCount,
73
+ };
74
+ for (v.i = 0; v.i < LC.seqLength; ++v.i) {
75
+ const monomer = monomersDict.get(monomerSeq[v.i]);
76
+ addMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v, LC);
77
+ }
78
+ capResultingMolblock(molfileAtomBlock, molfileBondBlock, v, LC);
79
+ const molfileCountsLine = C.V3K_BEGIN_COUNTS_LINE + atomCount + ' ' + bondCount + C.V3K_COUNTS_LINE_ENDING;
80
+ // todo: possible optimization may be achieved by replacing .join('') with +=
81
+ // since counterintuitively joining an array into a new string is reportedly
82
+ // slower than using += as below
83
+ let result = '';
84
+ result += C.V3K_HEADER_FIRST_LINE;
85
+ result += C.V3K_HEADER_SECOND_LINE;
86
+ result += C.V3K_BEGIN_CTAB_BLOCK;
87
+ result += molfileCountsLine;
88
+ result += C.V3K_BEGIN_ATOM_BLOCK;
89
+ result += molfileAtomBlock.join('');
90
+ result += C.V3K_END_ATOM_BLOCK;
91
+ result += C.V3K_BEGIN_BOND_BLOCK;
92
+ result += molfileBondBlock.join('');
93
+ result += C.V3K_END_BOND_BLOCK;
94
+ result += C.V3K_END_CTAB_BLOCK;
95
+ result += C.V3K_END;
96
+ // return molfileParts.join('');
97
+ return result;
98
+ }
99
+ /** Cap the resulting (after sewing up all the monomers) molfile with 'O'
100
+ * @param {string[]} molfileAtomBlock - Array of lines of the resulting molfile atom block
101
+ * @param {string[]} molfileBondBlock - Array of lines of the resulting molfile bond block
102
+ * @param {LoopVariables} v - Loop variables
103
+ * @param {LoopConstants} LC - Loop constants*/
104
+ function capResultingMolblock(molfileAtomBlock, molfileBondBlock, v, LC) {
105
+ // add terminal oxygen
106
+ const atomIdx = v.nodeShift + 1;
107
+ molfileAtomBlock[LC.atomCount] = C.V3K_BEGIN_DATA_LINE + atomIdx + ' ' +
108
+ C.OXYGEN + ' ' + keepPrecision(v.backbonePositionShift[0]) + ' ' +
109
+ v.flipFactor * keepPrecision(v.backbonePositionShift[1]) + ' ' + '0.000000 0' + '\n';
110
+ // add terminal bond
111
+ const firstAtom = v.backboneAttachNode;
112
+ const secondAtom = atomIdx;
113
+ molfileBondBlock[LC.bondCount] = C.V3K_BEGIN_DATA_LINE + v.bondShift + ' ' +
114
+ 1 + ' ' + firstAtom + ' ' + secondAtom + '\n';
115
+ }
116
+ function addAminoAcidToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v) {
117
+ v.flipFactor = (-1) ** (v.i % 2); // to flip every even monomer over OX
118
+ addBackboneMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v);
119
+ }
120
+ function addBackboneMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v) {
121
+ // todo: remove these comments to the docstrings of the corr. functions
122
+ // construnct the lines of V3K molfile atom block
123
+ fillAtomLines(monomer, molfileAtomBlock, v);
124
+ // construct the lines of V3K molfile bond block
125
+ fillBondLines(monomer, molfileBondBlock, v);
126
+ // peptide bond
127
+ fillChainExtendingBond(monomer, molfileBondBlock, v);
128
+ // update branch variables if necessary
129
+ if (monomer.meta.branchShift !== null && monomer.meta.terminalNodes.length > 2)
130
+ updateBranchVariables(monomer, v);
131
+ // update loop variables
132
+ updateChainExtendingVariables(monomer, v);
133
+ }
134
+ function addNucleotideToMolblock(nucleobase, molfileAtomBlock, molfileBondBlock, v, LC) {
135
+ // construnct the lines of V3K molfile atom block corresponding to phosphate
136
+ // and sugar
137
+ if (v.i === 0) {
138
+ addBackboneMonomerToMolblock(LC.sugar, molfileAtomBlock, molfileBondBlock, v);
139
+ }
140
+ else {
141
+ for (const monomer of [LC.phosphate, LC.sugar])
142
+ addBackboneMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v);
143
+ }
144
+ addBranchMonomerToMolblock(nucleobase, molfileAtomBlock, molfileBondBlock, v);
145
+ }
146
+ function addBranchMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v) {
147
+ fillBranchAtomLines(monomer, molfileAtomBlock, v);
148
+ fillBondLines(monomer, molfileBondBlock, v);
149
+ fillBackboneToBranchBond(monomer, molfileBondBlock, v);
150
+ // C-N bond
151
+ const bondIdx = v.bondShift;
152
+ const firstAtom = v.branchAttachNode;
153
+ const secondAtom = monomer.meta.terminalNodes[0] + v.nodeShift;
154
+ molfileBondBlock[bondIdx - 1] = C.V3K_BEGIN_DATA_LINE + bondIdx + ' ' +
155
+ 1 + ' ' + firstAtom + ' ' + secondAtom + '\n';
156
+ // update loop variables
157
+ v.bondShift += monomer.bonds.atomPairs.length + 1;
158
+ v.nodeShift += monomer.atoms.atomTypes.length;
159
+ }
160
+ function updateChainExtendingVariables(monomer, v) {
161
+ v.backboneAttachNode = v.nodeShift + monomer.meta.terminalNodes[1];
162
+ v.bondShift += monomer.bonds.atomPairs.length + 1;
163
+ v.nodeShift += monomer.atoms.atomTypes.length;
164
+ v.backbonePositionShift[0] += monomer.meta.backboneShift[0]; // todo: non-null check
165
+ v.backbonePositionShift[1] += v.flipFactor * monomer.meta.backboneShift[1];
166
+ }
167
+ function updateBranchVariables(monomer, v) {
168
+ v.branchAttachNode = v.nodeShift + monomer.meta.terminalNodes[2];
169
+ for (let i = 0; i < 2; ++i)
170
+ v.branchPositionShift[i] = v.backbonePositionShift[i] + monomer.meta.branchShift[i];
171
+ }
172
+ function fillAtomLines(monomer, molfileAtomBlock, v) {
173
+ for (let j = 0; j < monomer.atoms.atomTypes.length; ++j) {
174
+ const atomIdx = v.nodeShift + j + 1;
175
+ molfileAtomBlock[v.nodeShift + j] = C.V3K_BEGIN_DATA_LINE + atomIdx + ' ' +
176
+ monomer.atoms.atomTypes[j] + ' ' +
177
+ keepPrecision(v.backbonePositionShift[0] + monomer.atoms.x[j]) + ' ' +
178
+ keepPrecision(v.backbonePositionShift[1] + v.flipFactor * monomer.atoms.y[j]) +
179
+ ' ' + monomer.atoms.kwargs[j];
180
+ }
181
+ }
182
+ // todo: remove as quickfix
183
+ function fillBranchAtomLines(monomer, molfileAtomBlock, v) {
184
+ for (let j = 0; j < monomer.atoms.atomTypes.length; ++j) {
185
+ const atomIdx = v.nodeShift + j + 1;
186
+ molfileAtomBlock[v.nodeShift + j] = C.V3K_BEGIN_DATA_LINE + atomIdx + ' ' +
187
+ monomer.atoms.atomTypes[j] + ' ' +
188
+ keepPrecision(v.branchPositionShift[0] + monomer.atoms.x[j]) + ' ' +
189
+ keepPrecision(v.branchPositionShift[1] + v.flipFactor * monomer.atoms.y[j]) +
190
+ ' ' + monomer.atoms.kwargs[j];
191
+ }
192
+ }
193
+ function fillBondLines(monomer, molfileBondBlock, v) {
194
+ // construct the lines of V3K molfile bond block
195
+ for (let j = 0; j < monomer.bonds.atomPairs.length; ++j) {
196
+ const bondIdx = v.bondShift + j + 1;
197
+ const firstAtom = monomer.bonds.atomPairs[j][0] + v.nodeShift;
198
+ const secondAtom = monomer.bonds.atomPairs[j][1] + v.nodeShift;
199
+ let bondCfg = '';
200
+ if (monomer.bonds.bondConfiguration.has(j)) {
201
+ // flip orientation when necessary
202
+ let orientation = monomer.bonds.bondConfiguration.get(j);
203
+ if (v.flipFactor < 0)
204
+ orientation = (orientation === 1) ? 3 : 1;
205
+ bondCfg = ' CFG=' + orientation;
206
+ }
207
+ const kwargs = monomer.bonds.kwargs.has(j) ?
208
+ ' ' + monomer.bonds.kwargs.get(j) : '';
209
+ molfileBondBlock[v.bondShift + j] = C.V3K_BEGIN_DATA_LINE + bondIdx + ' ' +
210
+ monomer.bonds.bondTypes[j] + ' ' +
211
+ firstAtom + ' ' + secondAtom + bondCfg + kwargs + '\n';
212
+ }
213
+ }
214
+ function fillChainExtendingBond(monomer, molfileBondBlock, v) {
215
+ if (v.backboneAttachNode !== 0) {
216
+ const bondIdx = v.bondShift;
217
+ const firstAtom = v.backboneAttachNode;
218
+ const secondAtom = monomer.meta.terminalNodes[0] + v.nodeShift;
219
+ molfileBondBlock[v.bondShift - 1] = C.V3K_BEGIN_DATA_LINE + bondIdx + ' ' +
220
+ 1 + ' ' + firstAtom + ' ' + secondAtom + '\n';
221
+ }
222
+ }
223
+ // todo: remove
224
+ function fillBackboneToBranchBond(branchMonomer, molfileBondBlock, v) {
225
+ const bondIdx = v.bondShift;
226
+ const firstAtom = v.branchAttachNode;
227
+ const secondAtom = branchMonomer.meta.terminalNodes[0] + v.nodeShift;
228
+ molfileBondBlock[bondIdx - 1] = C.V3K_BEGIN_DATA_LINE + bondIdx + ' ' +
229
+ 1 + ' ' + firstAtom + ' ' + secondAtom + '\n';
230
+ }
231
+ /** Compute the atom/bond counts for the resulting molfile, depending on the
232
+ * type of polymer (peptide/nucleotide)
233
+ * @param {string[]}monomerSeq - the sequence of monomers
234
+ * @param {Map<string, MolGraph>}monomersDict - the dictionary of monomers
235
+ * @param {ALPHABET}alphabet - the alphabet of the monomers
236
+ * @param {HELM_POLYMER_TYPE}polymerType - the type of polymer
237
+ * @return {{atomCount: number, bondCount: number}} - the atom/bond counts*/
238
+ function getResultingAtomBondCounts(monomerSeq, monomersDict, alphabet, polymerType) {
239
+ let atomCount = 0;
240
+ let bondCount = 0;
241
+ // sum up all the atoms/nodes provided by the sequence
242
+ for (const monomerSymbol of monomerSeq) {
243
+ if (monomerSymbol === '')
244
+ continue; // Skip for gap/empty monomer in MSA
245
+ const monomer = monomersDict.get(monomerSymbol);
246
+ atomCount += monomer.atoms.x.length;
247
+ bondCount += monomer.bonds.bondTypes.length;
248
+ }
249
+ // add extra values depending on the polymer type
250
+ if (polymerType === "PEPTIDE" /* HELM_POLYMER_TYPE.PEPTIDE */) {
251
+ // add the rightmost/terminating cap group 'OH' (i.e. 'O')
252
+ atomCount += 1;
253
+ // add chain-extending bonds (C-NH per each monomer pair and terminal C-OH)
254
+ bondCount += monomerSeq.length;
255
+ }
256
+ else { // nucleotides
257
+ const sugar = (alphabet === "DNA" /* ALPHABET.DNA */) ?
258
+ monomersDict.get(C.DEOXYRIBOSE) : monomersDict.get(C.RIBOSE);
259
+ const phosphate = monomersDict.get(C.PHOSPHATE);
260
+ // add phosphate per each pair of nucleobase symbols
261
+ atomCount += (monomerSeq.length - 1) * phosphate.atoms.x.length;
262
+ // add sugar per each nucleobase symbol
263
+ atomCount += monomerSeq.length * sugar.atoms.x.length;
264
+ // add the leftmost cap group 'OH' (i.e. 'O')
265
+ atomCount += 1;
266
+ // add bonds from phosphate monomers
267
+ bondCount += (monomerSeq.length - 1) * phosphate.bonds.bondTypes.length;
268
+ // add bonds from sugar monomers
269
+ bondCount += monomerSeq.length * sugar.bonds.bondTypes.length;
270
+ // exclude the first chain-extending bond O-P (absent, no 'leftmost' phosphate)
271
+ bondCount -= 1;
272
+ // add chain-extending and branch bonds (O-P, C-O and C-N per each nucleotide)
273
+ bondCount += monomerSeq.length * 3;
274
+ }
275
+ return { atomCount, bondCount };
276
+ }
277
+ /** Keep precision upon floating point operations over atom coordinates
278
+ * @param {number}x - the floating point number
279
+ * @return {number} - the floating point number with the same precision
280
+ */
281
+ export function keepPrecision(x) {
282
+ return Math.round(C.PRECISION_FACTOR * x) / C.PRECISION_FACTOR;
283
+ }
284
+ //# sourceMappingURL=to-atomic-level-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-atomic-level-utils.js","sourceRoot":"","sources":["to-atomic-level-utils.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,58 @@
1
1
  import * as DG from 'datagrok-api/dg';
2
+ import { HELM_POLYMER_TYPE } from '../utils/const';
3
+ import { ALPHABET } from '../utils/macromolecule/consts';
2
4
  import { IMonomerLib, Monomer } from '../types';
3
- /** Convert Macromolecule column into Molecule column storing molfile V3000 with the help of a monomer library */
5
+ import { Bonds, MolGraph } from './types';
6
+ /** Convert Macromolecule column into Molecule column storing molfile V3000 with the help of a monomer library
7
+ * @param {DG.DataFrame} df - DataFrame containing the column to be converted
8
+ * @param {DG.Column} seqCol - Column containing the macromolecule sequence
9
+ * @param {IMonomerLib} monomerLib - Monomer library
10
+ */
4
11
  export declare function _toAtomicLevel(df: DG.DataFrame, seqCol: DG.Column<string>, monomerLib: IMonomerLib): Promise<{
5
12
  col: DG.Column | null;
6
13
  warnings: string[];
7
14
  }>;
8
- /** Parse element symbols for R-groups from the HELM monomer library R-groups
9
- * field */
15
+ /** Get jagged array of monomer symbols for the dataframe
16
+ * @param {DG.Column} macroMolCol - Column with macro-molecules
17
+ * @return {string[]} - Jagged array of monomer symbols for the dataframe */
18
+ export declare function getMonomerSequencesArray(macroMolCol: DG.Column<string>): string[][];
19
+ /** Get a mapping of monomer symbols to MolGraph objects. Notice, the
20
+ * transformation from molfile V2000 to V3000 takes place,
21
+ * with the help of async function call from Chem (RdKit module)
22
+ * @param {string[]} monomerSequencesArray - Jagged array of monomer symbols for the dataframe
23
+ * @param {IMonomerLib} monomerLib - Monomer library
24
+ * @param {HELM_POLYMER_TYPE} polymerType - Polymer type
25
+ * @param {ALPHABET} alphabet - Alphabet
26
+ * @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>>;
28
+ /** Parse element symbols for R-groups from the HELM monomer library R-group field
29
+ * @param {any[]} rGroupObjList - R-group object list
30
+ * @return {Map<number, number>} - Cap group index map*/
10
31
  export declare function parseCapGroups(rGroupObjList: any[]): string[];
32
+ /** V2000 to V3000 converter
33
+ * @param {string} molfileV2K - V2000 molfile
34
+ * @param {any} moduleRdkit - RDKit module
35
+ * @return {string} - V3000 molfile*/
36
+ export declare function convertMolfileToV3K(molfileV2K: string, moduleRdkit: any): string;
37
+ /** Parse V3000 bond block and construct the Bonds object
38
+ * @param {string} molfileV3K - V3000 molfile
39
+ * @param {number} bondCount - Number of bonds
40
+ * @return {Bonds} - Bonds object*/
41
+ export declare function parseBondBlock(molfileV3K: string, bondCount: number): Bonds;
42
+ /** Constructs mapping of r-group nodes to default capGroups, all numeration starting from 1.
43
+ * According to https://pubs.acs.org/doi/10.1021/ci3001925, R1 and R2 are the chain extending attachment points,
44
+ * while R3 is the branching attachment point.
45
+ * @param {string} molfileV2K - V2000 molfile
46
+ * @return {Map<number, number>} - Map of r-group nodes to default capGroups*/
47
+ export declare function parseCapGroupIdxMap(molfileV2K: string): Map<number, number>;
48
+ export declare function parseAtomAndBondCounts(molfileV3K: string): {
49
+ atomCount: number;
50
+ bondCount: number;
51
+ };
52
+ export declare function convertMolGraphToMolfileV3K(molGraph: MolGraph): string;
11
53
  export declare function getSymbolToCappedMolfileMap(monomersLibList: any[]): Promise<Map<string, string> | undefined>;
12
- /** Get the V3K molfile corresponding to the capped Monomer (default cap groups) */
54
+ /** Get the V3K molfile corresponding to the capped Monomer (default cap groups)
55
+ * @param {Monomer} monomer
56
+ * @return {string} V3K molfile*/
13
57
  export declare function capPeptideMonomer(monomer: Monomer): string;
14
58
  //# sourceMappingURL=to-atomic-level.d.ts.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;AAStC,OAAO,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAuH9C,kHAAkH;AAClH,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,CAkEzD;AAwND;YACY;AACZ,wBAAgB,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAe7D;AA09BD,wBAAsB,2BAA2B,CAAC,eAAe,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CA6BlH;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAmB1D"}
1
+ {"version":3,"file":"to-atomic-level.d.ts","sourceRoot":"","sources":["to-atomic-level.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAc,iBAAiB,EAAqB,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAC,QAAQ,EAAiB,MAAM,+BAA+B,CAAC;AAEvE,OAAO,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,UAAU,CAAC;AAK9C,OAAO,EAAQ,KAAK,EAAe,QAAQ,EAAwC,MAAM,SAAS,CAAC;AAOnG;;;;EAIE;AACF,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,CAuDzD;AAED;;4EAE4E;AAC5E,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,EAAE,CAenF;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,CAqChC;AAoID;;wDAEwD;AACxD,wBAAgB,cAAc,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,MAAM,EAAE,CAe7D;AAyGD;;;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;;;;+EAI+E;AAC/E,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAyC3E;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAcnG;AA2cD,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,CA6BlH;AAED;;iCAEiC;AACjC,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAmB1D"}