@datagrok-libraries/bio 5.63.6 → 5.64.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 (36) hide show
  1. package/CLAUDE.md +0 -13
  2. package/package.json +1 -1
  3. package/src/monomer-works/monomer-hover.js +1 -1
  4. package/src/monomer-works/monomer-hover.js.map +1 -1
  5. package/src/monomer-works/seq-to-molfile-worker.js +3 -2
  6. package/src/monomer-works/seq-to-molfile-worker.js.map +1 -1
  7. package/src/monomer-works/seq-to-molfile.d.ts +2 -2
  8. package/src/monomer-works/seq-to-molfile.d.ts.map +1 -1
  9. package/src/monomer-works/seq-to-molfile.js +2 -2
  10. package/src/monomer-works/seq-to-molfile.js.map +1 -1
  11. package/src/monomer-works/to-atomic-level-utils.d.ts +7 -5
  12. package/src/monomer-works/to-atomic-level-utils.d.ts.map +1 -1
  13. package/src/monomer-works/to-atomic-level-utils.js +195 -46
  14. package/src/monomer-works/to-atomic-level-utils.js.map +1 -1
  15. package/src/monomer-works/to-atomic-level.d.ts +7 -5
  16. package/src/monomer-works/to-atomic-level.d.ts.map +1 -1
  17. package/src/monomer-works/to-atomic-level.js +156 -36
  18. package/src/monomer-works/to-atomic-level.js.map +1 -1
  19. package/src/monomer-works/types.d.ts +10 -0
  20. package/src/monomer-works/types.d.ts.map +1 -1
  21. package/src/monomer-works/types.js +7 -0
  22. package/src/monomer-works/types.js.map +1 -1
  23. package/src/utils/cell-renderer-monomer-placer.d.ts +3 -0
  24. package/src/utils/cell-renderer-monomer-placer.d.ts.map +1 -1
  25. package/src/utils/cell-renderer-monomer-placer.js +71 -10
  26. package/src/utils/cell-renderer-monomer-placer.js.map +1 -1
  27. package/src/utils/macromolecule/utils.d.ts +2 -0
  28. package/src/utils/macromolecule/utils.d.ts.map +1 -1
  29. package/src/utils/macromolecule/utils.js +19 -3
  30. package/src/utils/macromolecule/utils.js.map +1 -1
  31. package/src/utils/macromolecule-highlight.d.ts +87 -0
  32. package/src/utils/macromolecule-highlight.d.ts.map +1 -0
  33. package/src/utils/macromolecule-highlight.js +87 -0
  34. package/src/utils/macromolecule-highlight.js.map +1 -0
  35. package/src/utils/monomer-selection-dialog.js +1 -1
  36. package/src/utils/monomer-selection-dialog.js.map +1 -1
package/CLAUDE.md CHANGED
@@ -1,24 +1,11 @@
1
1
  # CLAUDE.md
2
2
 
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
-
5
3
  ## Overview
6
4
 
7
5
  **@datagrok-libraries/bio** is the core shared library for all bioinformatics functionality in the Datagrok platform. It provides types, utilities, renderers, and service interfaces for working with macromolecules (peptides, DNA, RNA, HELM), 3D molecular structures (PDB/PDBQT/mmCIF), phylogenetic trees, and monomer libraries.
8
6
 
9
7
  This is a **library** (not a package) — it has no `package.ts`, no webpack, no platform registration. It is compiled with `tsc` to `.js`/`.d.ts` and consumed by multiple packages (`Bio`, `Helm`, `Peptides`, `BiostructureViewer`, `Dendrogram`, `HitTriage`, etc.).
10
8
 
11
- ## Build Commands
12
-
13
- ```bash
14
- npm install
15
- npm run build # grok check --soft && tsc
16
- npm run build-all # Builds chem-meta → js-api → gridext → utils → ml → this library
17
- npm run lint # eslint "./src/**/*.ts"
18
- npm run lint-fix
19
- npm run link-all # Links chem-meta, datagrok-api, gridext, utils, ml
20
- ```
21
-
22
9
  ## Key Dependencies
23
10
 
24
11
  - `datagrok-api` — platform API (`DG`, `grok`, `ui`)
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "access": "public"
9
9
  },
10
10
  "friendlyName": "Datagrok bio library",
11
- "version": "5.63.6",
11
+ "version": "5.64.0",
12
12
  "description": "Bio utilities, types supporting Macromolecule, Molecule3D data",
13
13
  "dependencies": {
14
14
  "@datagrok-libraries/chem-meta": "^1.2.7",
@@ -46,7 +46,7 @@ export async function buildMonomerHoverLink(seqCol, molCol, monomerLib, seqHelpe
46
46
  .toArray();
47
47
  const alphabet = seqSH.alphabet;
48
48
  const polymerType = alphabet == ALPHABET.RNA || alphabet == ALPHABET.DNA ? "RNA" /* PolymerTypes.RNA */ : "PEPTIDE" /* PolymerTypes.PEPTIDE */;
49
- const monomersDict = getMonomersDictFromLib([seqMList], polymerType, alphabet, monomerLib, rdKitModule);
49
+ const monomersDict = getMonomersDictFromLib([seqMList], [undefined], polymerType, alphabet, monomerLib, rdKitModule);
50
50
  // Call seq-to-molfile worker core directly
51
51
  const molWM = monomerSeqToMolfile(seqMList, monomersDict, alphabet, polymerType);
52
52
  return molWM.monomers;
@@ -1 +1 @@
1
- {"version":3,"file":"monomer-hover.js","sourceRoot":"","sources":["monomer-hover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monomer-hover.js","sourceRoot":"","sources":["monomer-hover.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import { monomerSeqToMolfile } from './to-atomic-level-utils';
2
2
  onmessage = (event) => {
3
- const { seqList, monomersDict, alphabet, polymerType, start, end } = event.data;
3
+ const { seqList, rolesList, monomersDict, alphabet, polymerType, start, end } = event.data;
4
4
  const resMolList = new Array(end - start);
5
5
  const molfileWarningList = new Array(0);
6
6
  for (let rowI = start; rowI < end; ++rowI) {
7
7
  try {
8
8
  const seq = seqList[rowI];
9
- resMolList[rowI - start] = monomerSeqToMolfile(seq, monomersDict, alphabet, polymerType);
9
+ const roles = rolesList ? rolesList[rowI] : undefined;
10
+ resMolList[rowI - start] = monomerSeqToMolfile(seq, monomersDict, alphabet, polymerType, roles);
10
11
  }
11
12
  catch (err) {
12
13
  const errMsg = err instanceof Error ? err.message : err.toString();
@@ -1 +1 @@
1
- {"version":3,"file":"seq-to-molfile-worker.js","sourceRoot":"","sources":["seq-to-molfile-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAG5D,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;IACpB,MAAM,EAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAC,GAA2B,KAAK,CAAC,IAAI,CAAC;IACtG,MAAM,UAAU,GAAqB,IAAI,KAAK,CAAiB,GAAG,GAAG,KAAK,CAAC,CAAC;IAC5E,MAAM,kBAAkB,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC;IAChD,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,GAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3E,MAAM,GAAG,GAAW,8BAA8B,IAAI,KAAK,MAAM,GAAG,CAAC;YACrE,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,WAAW,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAA0B,CAAC,CAAC;AAC7F,CAAC,CAAC"}
1
+ {"version":3,"file":"seq-to-molfile-worker.js","sourceRoot":"","sources":["seq-to-molfile-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAG5D,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;IACpB,MAAM,EAAC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAC,GAA2B,KAAK,CAAC,IAAI,CAAC;IACjH,MAAM,UAAU,GAAqB,IAAI,KAAK,CAAiB,GAAG,GAAG,KAAK,CAAC,CAAC;IAC5E,MAAM,kBAAkB,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC;IAChD,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtD,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAClG,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,MAAM,GAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC3E,MAAM,GAAG,GAAW,8BAA8B,IAAI,KAAK,MAAM,GAAG,CAAC;YACrE,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,WAAW,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAA0B,CAAC,CAAC;AAC7F,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import * as DG from 'datagrok-api/dg';
2
2
  import { RDModule } from '@datagrok-libraries/chem-meta/src/rdkit-api';
3
3
  import { ALPHABET } from '../utils/macromolecule';
4
- import { MonomerMap, MonomerMapValue, MonomerMolGraphMap } from './types';
4
+ import { MonomerMap, MonomerMapValue, MonomerMolGraphMap, NucleotideRole } from './types';
5
5
  import { ISeqHelper, ToAtomicLevelRes } from '../utils/seq-helper';
6
6
  import { IMonomerLib, IMonomerLibBase } from '../types/monomer-library';
7
7
  import { PolymerType } from '../helm/types';
@@ -13,6 +13,6 @@ export type SeqToMolfileResult = {
13
13
  }[];
14
14
  warnings: string[];
15
15
  };
16
- export declare function seqToMolFileWorker(seqCol: DG.Column<string>, monomersDict: MonomerMolGraphMap, alphabet: ALPHABET, polymerType: PolymerType, monomerLib: IMonomerLib, seqHelper: ISeqHelper, rdKitModule: RDModule): Promise<ToAtomicLevelRes>;
16
+ export declare function seqToMolFileWorker(seqCol: DG.Column<string>, monomersDict: MonomerMolGraphMap, alphabet: ALPHABET, polymerType: PolymerType, monomerLib: IMonomerLib, seqHelper: ISeqHelper, rdKitModule: RDModule, rolesList?: (NucleotideRole[] | undefined)[]): Promise<ToAtomicLevelRes>;
17
17
  export declare function getMolHighlight(monomerMaps: Iterable<MonomerMapValue>, monomerLib: IMonomerLibBase): ISubstruct;
18
18
  //# sourceMappingURL=seq-to-molfile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seq-to-molfile.d.ts","sourceRoot":"","sources":["seq-to-molfile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAItC,OAAO,EAAC,QAAQ,EAAC,MAAM,6CAA6C,CAAC;AAGrE,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACqB,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAE1E,MAAM,SAAS,CAAC;AACjB,OAAO,EAAC,UAAU,EAAE,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAC,WAAW,EAAE,eAAe,EAAC,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAc,WAAW,EAAC,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAC,UAAU,EAAC,MAAM,yCAAyC,CAAC;AAGnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,UAAU,CAAA;KACrB,EAAE,CAAC;IACJ,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAClG,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAC5C,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,GACpE,OAAO,CAAC,gBAAgB,CAAC,CAsD3B;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,eAAe,GAAG,UAAU,CAuB/G"}
1
+ {"version":3,"file":"seq-to-molfile.d.ts","sourceRoot":"","sources":["seq-to-molfile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAItC,OAAO,EAAC,QAAQ,EAAC,MAAM,6CAA6C,CAAC;AAGrE,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAC;AAChD,OAAO,EACqB,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAE1F,MAAM,SAAS,CAAC;AACjB,OAAO,EAAC,UAAU,EAAE,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAC,WAAW,EAAE,eAAe,EAAC,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAc,WAAW,EAAC,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAC,UAAU,EAAC,MAAM,yCAAyC,CAAC;AAGnE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,UAAU,CAAA;KACrB,EAAE,CAAC;IACJ,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAClG,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAC5C,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EACrE,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,EAAE,GAC3C,OAAO,CAAC,gBAAgB,CAAC,CAsD3B;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,eAAe,GAAG,UAAU,CAuB/G"}
@@ -2,7 +2,7 @@ import * as DG from 'datagrok-api/dg';
2
2
  import wu from 'wu';
3
3
  import { getMolColName, hexToPercentRgb } from './utils';
4
4
  import { HelmTypes } from '../helm/consts';
5
- export async function seqToMolFileWorker(seqCol, monomersDict, alphabet, polymerType, monomerLib, seqHelper, rdKitModule) {
5
+ export async function seqToMolFileWorker(seqCol, monomersDict, alphabet, polymerType, monomerLib, seqHelper, rdKitModule, rolesList) {
6
6
  const srcColLength = seqCol.length;
7
7
  const df = seqCol.dataFrame;
8
8
  const threadCount = Math.max(navigator.hardwareConcurrency - 2, 1);
@@ -29,7 +29,7 @@ export async function seqToMolFileWorker(seqCol, monomersDict, alphabet, polymer
29
29
  resolve(res.data);
30
30
  };
31
31
  });
32
- worker.postMessage({ seqList, monomersDict, alphabet, polymerType, start, end });
32
+ worker.postMessage({ seqList, rolesList, monomersDict, alphabet, polymerType, start, end });
33
33
  }
34
34
  const molList = [];
35
35
  const warnings = [];
@@ -1 +1 @@
1
- {"version":3,"file":"seq-to-molfile.js","sourceRoot":"","sources":["seq-to-molfile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,MAAM,IAAI,CAAC;AAWpB,OAAO,EAAC,aAAa,EAAE,eAAe,EAAC,MAAM,SAAS,CAAC;AAGvD,OAAO,EAAC,SAAS,EAAe,MAAM,gBAAgB,CAAC;AAYvD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAyB,EAAE,YAAgC,EAClG,QAAkB,EAAE,WAAwB,EAC5C,UAAuB,EAAE,SAAqB,EAAE,WAAqB;IAErE,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,GAA6B,MAAM,CAAC,SAAS,CAAC;IACtD,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,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAiC,WAAW,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,WAAW,gCAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;IACtF,MAAM,OAAO,GAAoB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC9E,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;aAClC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACd,OAAO,EAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAgB,CAAC;QACjG,CAAC,CAAC;aACD,OAAO,EAAE,CAAC;IACf,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,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,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAwB,CAAC,OAAO,EAAE,EAAE;YAC3D,MAAM,CAAC,SAAS,GAAG,CAAC,GAAoC,EAAQ,EAAE;gBAChE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAA2B,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,QAAiC,EAAE,EAAE;QACrE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,+GAA+G;IAE/G,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,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;SAChF,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IACrC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC/C,MAAM,CAAC,MAAM,sDAA4B,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtD,OAAO,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAsC,EAAE,UAA2B;IACjG,MAAM,OAAO,GAAgC,EAAE,CAAC;IAChD,MAAM,OAAO,GAAgC,EAAE,CAAC;IAEhD,KAAK,MAAM,eAAe,IAAI,WAAW,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,mBAAmB,CAAC,eAAe,CAAC,OAAO,EAAE,eAAe,CAAC,MAAM,CAAE,CAAC;QAC7F,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;QACtC,mDAAmD;QACnD,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7G,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,KAAK;YACvC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,KAAK;YACvC,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IAC7B,CAAC;IAED,MAAM,YAAY,GAAe;QAC/B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnD,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACnD,mBAAmB,EAAE,OAAO;QAC5B,mBAAmB,EAAE,OAAO;KAC7B,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"seq-to-molfile.js","sourceRoot":"","sources":["seq-to-molfile.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { MolfileWithMap, MonomerMolGraphMap } from './types';
1
+ import { MolfileWithMap, MonomerMolGraphMap, NucleotideRole } from './types';
2
2
  import { ALPHABET } from '../utils/macromolecule/consts';
3
3
  import { IMonomerLibBase } from '../types/monomer-library';
4
4
  import { ISeqMonomer, PolymerType } from '../helm/types';
@@ -9,12 +9,14 @@ import { ISeqMonomer, PolymerType } from '../helm/types';
9
9
  * @return {Map<string, any>} - Mapping of peptide symbols to HELM monomer library objects with selected fields*/
10
10
  export declare function getFormattedMonomerLib(monomerLib: IMonomerLibBase, 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 (canonical)
13
- * @param {Map<string, MolGraph>} monomersDict - Mapping of monomer symbols to MolGraph objects
12
+ * @param {ISeqMonomer[]} monomerSeq - Sequence of monomer symbols (canonical)
13
+ * @param {MonomerMolGraphMap} monomersDict - Mapping of monomer symbols to MolGraph objects
14
14
  * @param {ALPHABET} alphabet - Alphabet of the column
15
15
  * @param {PolymerType} polymerType - Polymer type
16
- * @return {string} - Molfile V3000*/
17
- export declare function monomerSeqToMolfile(monomerSeq: ISeqMonomer[], monomersDict: MonomerMolGraphMap, alphabet: ALPHABET, polymerType: PolymerType): MolfileWithMap;
16
+ * @param {Array} roles - Optional per-position NucleotideRole tags. When set, RNA assembly
17
+ * uses per-position sugars/phosphates from monomerSeq directly (HELM triples mode).
18
+ * @return {MolfileWithMap} - Molfile V3000 + per-position monomer index map */
19
+ export declare function monomerSeqToMolfile(monomerSeq: ISeqMonomer[], monomersDict: MonomerMolGraphMap, alphabet: ALPHABET, polymerType: PolymerType, roles?: NucleotideRole[]): MolfileWithMap;
18
20
  /** Keep precision upon floating point operations over atom coordinates
19
21
  * @param {number}x - the floating point number
20
22
  * @return {number} - the floating point number with the same precision
@@ -1 +1 @@
1
- {"version":3,"file":"to-atomic-level-utils.d.ts","sourceRoot":"","sources":["to-atomic-level-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAA4C,cAAc,EAAwB,kBAAkB,EAAC,MAAM,SAAS,CAAC;AAE5H,OAAO,EAAC,QAAQ,EAAa,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAC,eAAe,EAAU,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAIvD;;;;iHAIiH;AACjH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GACxE,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,CAyGhB;AAqQD;;;GAGG;AACH,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":"AAEA,OAAO,EAA4C,cAAc,EAAwB,kBAAkB,EACzG,cAAc,EAAC,MAAM,SAAS,CAAC;AAEjC,OAAO,EAAC,QAAQ,EAAa,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAC,eAAe,EAAU,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,eAAe,CAAC;AAIvD;;;;iHAIiH;AACjH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GACxE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAuBlB;AAED;;;;;;;+EAO+E;AAC/E,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,kBAAkB,EAC3D,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAC5C,KAAK,CAAC,EAAE,cAAc,EAAE,GACvB,cAAc,CA2HhB;AA6YD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C"}
@@ -13,11 +13,13 @@ export function getFormattedMonomerLib(monomerLib, polymerType, alphabet) {
13
13
  const map = new Map();
14
14
  for (const monomerSymbol of monomerLib.getMonomerSymbolsByType(polymerType)) {
15
15
  const it = monomerLib.getMonomer(polymerType, monomerSymbol);
16
- if (polymerType === "RNA" /* HELM_POLYMER_TYPE.RNA */ &&
16
+ if (
17
+ // RNA: all branch monomers (bases) and all backbone monomers (sugars +
18
+ // phosphates, including modified ones). Modifications are looked up by
19
+ // symbol at assembly time, so they MUST be present in the formatted lib.
20
+ polymerType === "RNA" /* HELM_POLYMER_TYPE.RNA */ &&
17
21
  (it["monomerType" /* HELM_FIELDS.MONOMER_TYPE */] === "Branch" /* HELM_MONOMER_TYPE.BRANCH */ ||
18
- alphabet === ALPHABET.DNA && it["symbol" /* HELM_FIELDS.SYMBOL */] === C.DEOXYRIBOSE.symbol ||
19
- alphabet === ALPHABET.RNA && it["symbol" /* HELM_FIELDS.SYMBOL */] === C.RIBOSE.symbol ||
20
- it["symbol" /* HELM_FIELDS.SYMBOL */] === C.PHOSPHATE.symbol) ||
22
+ it["monomerType" /* HELM_FIELDS.MONOMER_TYPE */] === "Backbone" /* HELM_MONOMER_TYPE.BACKBONE */) ||
21
23
  polymerType === "PEPTIDE" /* HELM_POLYMER_TYPE.PEPTIDE */ &&
22
24
  it["monomerType" /* HELM_FIELDS.MONOMER_TYPE */] !== "Branch" /* HELM_MONOMER_TYPE.BRANCH */) {
23
25
  const monomerObject = {};
@@ -31,19 +33,25 @@ export function getFormattedMonomerLib(monomerLib, polymerType, alphabet) {
31
33
  return map;
32
34
  }
33
35
  /** Translate a sequence of monomer symbols into Molfile V3000
34
- * @param {string[]} monomerSeq - Sequence of monomer symbols (canonical)
35
- * @param {Map<string, MolGraph>} monomersDict - Mapping of monomer symbols to MolGraph objects
36
+ * @param {ISeqMonomer[]} monomerSeq - Sequence of monomer symbols (canonical)
37
+ * @param {MonomerMolGraphMap} monomersDict - Mapping of monomer symbols to MolGraph objects
36
38
  * @param {ALPHABET} alphabet - Alphabet of the column
37
39
  * @param {PolymerType} polymerType - Polymer type
38
- * @return {string} - Molfile V3000*/
39
- export function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerType) {
40
+ * @param {Array} roles - Optional per-position NucleotideRole tags. When set, RNA assembly
41
+ * uses per-position sugars/phosphates from monomerSeq directly (HELM triples mode).
42
+ * @return {MolfileWithMap} - Molfile V3000 + per-position monomer index map */
43
+ export function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerType, roles) {
40
44
  if (monomerSeq.length === 0) {
41
45
  // throw new Error('monomerSeq is empty');
42
46
  return MolfileWithMap.createEmpty();
43
47
  }
48
+ // Triples mode is on only when (a) caller flagged the row with roles, and
49
+ // (b) the row's length is a positive multiple of 3 (sugar/base/phosphate triples).
50
+ // in edge cases, terminal phosphate may be missing, so we also allow length % 3 === 2, but only if roles are present to disambiguate the monomers.
51
+ const triplesMode = polymerType === "RNA" /* HELM_POLYMER_TYPE.RNA */ && !!roles &&
52
+ roles.length === monomerSeq.length && (monomerSeq.length % 3 === 0 || monomerSeq.length % 3 === 2);
44
53
  // define atom and bond counts, taking into account the bond type
45
- const getAtomAndBondCounts = getResultingAtomBondCounts;
46
- const { atomCount, bondCount, needsCapping } = getAtomAndBondCounts(monomerSeq, monomersDict, alphabet, polymerType);
54
+ const { atomCount, bondCount, needsCapping } = getResultingAtomBondCounts(monomerSeq, monomersDict, alphabet, polymerType, triplesMode);
47
55
  // create arrays to store lines of the resulting molfile
48
56
  const molfileAtomBlock = new Array(atomCount);
49
57
  const molfileBondBlock = new Array(bondCount);
@@ -54,8 +62,12 @@ export function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerT
54
62
  addMonomerToMolblock = addAminoAcidToMolblock;
55
63
  else { // nucleotides
56
64
  addMonomerToMolblock = addNucleotideToMolblock;
57
- sugar = (alphabet === ALPHABET.DNA) ? getMolGraph(monomersDict, C.DEOXYRIBOSE) : getMolGraph(monomersDict, C.RIBOSE);
58
- phosphate = getMolGraph(monomersDict, C.PHOSPHATE);
65
+ // Default sugar/phosphate are only consulted in bases-only mode. In
66
+ // triples mode, every nucleotide carries its own.
67
+ if (!triplesMode) {
68
+ sugar = (alphabet === ALPHABET.DNA) ? getMolGraph(monomersDict, C.DEOXYRIBOSE) : getMolGraph(monomersDict, C.RIBOSE);
69
+ phosphate = getMolGraph(monomersDict, C.PHOSPHATE);
70
+ }
59
71
  }
60
72
  const v = {
61
73
  i: 0,
@@ -70,7 +82,8 @@ export function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerT
70
82
  const LC = {
71
83
  sugar: sugar,
72
84
  phosphate: phosphate,
73
- seqLength: monomerSeq.length,
85
+ // In triples mode, the "logical" sequence length is the nucleotide count.
86
+ seqLength: triplesMode ? Math.ceil(monomerSeq.length / 3) : monomerSeq.length,
74
87
  atomCount: atomCount,
75
88
  bondCount: bondCount,
76
89
  };
@@ -78,31 +91,36 @@ export function monomerSeqToMolfile(monomerSeq, monomersDict, alphabet, polymerT
78
91
  const steabsCollection = [];
79
92
  let nAtoms = 0;
80
93
  let lastMonomerCappingAtom = undefined;
81
- for (v.i = 0; v.i < LC.seqLength; ++v.i) {
82
- const seqMonomer = monomerSeq[v.i];
83
- if (seqMonomer.symbol === GAP_SYMBOL)
84
- continue;
85
- const monomer = getMolGraph(monomersDict, { symbol: seqMonomer.symbol, polymerType: helmTypeToPolymerType(seqMonomer.biotype) });
86
- lastMonomerCappingAtom = monomer.terminalR2Atom;
87
- const mAtomFirst = v.nodeShift;
88
- const mBondFirst = v.bondShift;
89
- addMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v, LC);
90
- //adding stereo atoms to array for further STEABS block generation
91
- monomer.stereoAtoms?.forEach((i) => steabsCollection.push(i + nAtoms));
92
- nAtoms += monomer.atoms.x.length;
93
- const mAtomCount = v.nodeShift - mAtomFirst;
94
- const mAtomList = new Array(mAtomCount);
95
- for (let maI = 0; maI < mAtomCount; ++maI)
96
- mAtomList[maI] = mAtomFirst + maI;
97
- const mBondCount = v.bondShift - mBondFirst;
98
- const mBondList = new Array(mBondCount);
99
- for (let mbI = 0; mbI < mBondCount; ++mbI)
100
- mBondList[mbI] = mBondFirst + mbI;
101
- monomers.set(v.i, {
102
- biotype: seqMonomer.biotype,
103
- symbol: seqMonomer.symbol,
104
- atoms: mAtomList, bonds: mBondList
105
- });
94
+ if (triplesMode) {
95
+ runTriplesAssembly(monomerSeq, monomersDict, molfileAtomBlock, molfileBondBlock, v, LC, monomers, steabsCollection, (a) => { nAtoms += a; }, () => nAtoms);
96
+ }
97
+ else {
98
+ for (v.i = 0; v.i < LC.seqLength; ++v.i) {
99
+ const seqMonomer = monomerSeq[v.i];
100
+ if (seqMonomer.symbol === GAP_SYMBOL)
101
+ continue;
102
+ const monomer = getMolGraph(monomersDict, { symbol: seqMonomer.symbol, polymerType: helmTypeToPolymerType(seqMonomer.biotype) });
103
+ lastMonomerCappingAtom = monomer.terminalR2Atom;
104
+ const mAtomFirst = v.nodeShift;
105
+ const mBondFirst = v.bondShift;
106
+ addMonomerToMolblock(monomer, molfileAtomBlock, molfileBondBlock, v, LC);
107
+ //adding stereo atoms to array for further STEABS block generation
108
+ monomer.stereoAtoms?.forEach((i) => steabsCollection.push(i + nAtoms));
109
+ nAtoms += monomer.atoms.x.length;
110
+ const mAtomCount = v.nodeShift - mAtomFirst;
111
+ const mAtomList = new Array(mAtomCount);
112
+ for (let maI = 0; maI < mAtomCount; ++maI)
113
+ mAtomList[maI] = mAtomFirst + maI;
114
+ const mBondCount = v.bondShift - mBondFirst;
115
+ const mBondList = new Array(mBondCount);
116
+ for (let mbI = 0; mbI < mBondCount; ++mbI)
117
+ mBondList[mbI] = mBondFirst + mbI;
118
+ monomers.set(v.i, {
119
+ biotype: seqMonomer.biotype,
120
+ symbol: seqMonomer.symbol,
121
+ atoms: mAtomList, bonds: mBondList
122
+ });
123
+ }
106
124
  }
107
125
  // if the last monomer needs to be capped, add the terminal OH to the resulting molfile
108
126
  if (needsCapping)
@@ -282,19 +300,22 @@ function fillBackboneToBranchBond(branchMonomer, molfileBondBlock, v) {
282
300
  }
283
301
  /** Compute the atom/bond counts for the resulting molfile, depending on the
284
302
  * type of polymer (peptide/nucleotide)
285
- * @param {string[]}monomerSeq - the sequence of monomers
286
- * @param {Map<string, MolGraph>}monomersDict - the dictionary of monomers
287
- * @param {ALPHABET}alphabet - the alphabet of the monomers
288
- * @param {HELM_POLYMER_TYPE}polymerType - the type of polymer
289
- * @return {{atomCount: number, bondCount: number}} - the atom/bond counts*/
290
- function getResultingAtomBondCounts(monomerSeq, monomersDict, alphabet, polymerType) {
303
+ * @param {ISeqMonomer[]} monomerSeq - the sequence of monomers
304
+ * @param {MonomerMolGraphMap} monomersDict - the dictionary of monomers
305
+ * @param {ALPHABET} alphabet - the alphabet of the monomers
306
+ * @param {PolymerType} polymerType - the type of polymer
307
+ * @param {boolean} triplesMode - true when monomerSeq is a flat list of HELM RNA triples
308
+ * @return {Object} the atom/bond counts plus needsCapping flag */
309
+ function getResultingAtomBondCounts(monomerSeq, monomersDict, alphabet, polymerType, triplesMode) {
291
310
  let atomCount = 0;
292
311
  let bondCount = 0;
293
312
  let monomerCount = 0;
294
313
  let needsCapping = true;
295
314
  let lastMonomerGraph = null;
315
+ let lastPhosphateGraph = null;
296
316
  // sum up all the atoms/nodes provided by the sequence
297
- for (const seqMonomer of monomerSeq) {
317
+ for (let i = 0; i < monomerSeq.length; ++i) {
318
+ const seqMonomer = monomerSeq[i];
298
319
  if (seqMonomer.symbol === GAP_SYMBOL)
299
320
  continue; // Skip for gap/empty monomer in MSA
300
321
  if (seqMonomer.symbol == '*')
@@ -303,6 +324,10 @@ function getResultingAtomBondCounts(monomerSeq, monomersDict, alphabet, polymerT
303
324
  atomCount += lastMonomerGraph.atoms.x.length;
304
325
  bondCount += lastMonomerGraph.bonds.bondTypes.length;
305
326
  monomerCount++;
327
+ // In triples mode, every 3rd entry (index 2 mod 3) is a phosphate. Track
328
+ // the LAST one — its atoms/bonds are dropped at the 3'-terminus.
329
+ if (triplesMode && i % 3 === 2)
330
+ lastPhosphateGraph = lastMonomerGraph;
306
331
  }
307
332
  // add extra values depending on the polymer type
308
333
  if (polymerType === "PEPTIDE" /* HELM_POLYMER_TYPE.PEPTIDE */) {
@@ -321,7 +346,19 @@ function getResultingAtomBondCounts(monomerSeq, monomersDict, alphabet, polymerT
321
346
  }
322
347
  }
323
348
  }
324
- else { // nucleotides
349
+ else if (triplesMode) { // nucleotides — HELM triples (per-position sugar/base/phosphate)
350
+ void lastPhosphateGraph; // kept for symmetry; trailing P is now retained when HELM wrote it
351
+ // Per-monomer-loop already summed sugars + bases + phosphates for every
352
+ // entry in monomerSeq. Reservation: each backbone (sugar/phosphate)
353
+ // reserves +1 bond slot for the chain-extending bond, each branch (base)
354
+ // reserves +1 for its branch bond. Total reservations = monomerCount.
355
+ // length === 3N → trailing P emitted, monomerCount = 3N.
356
+ // length === 3N - 1 → trailing P absent, monomerCount = 3N - 1.
357
+ // Either way, bondCount = sum_bonds + monomerCount.
358
+ atomCount += 1; // OH cap atom (rides on trailing P or on last sugar's R2)
359
+ bondCount += monomerCount;
360
+ }
361
+ else { // nucleotides — bases-only legacy path with default sugar/phosphate
325
362
  const sugar = (alphabet === ALPHABET.DNA) ?
326
363
  getMolGraph(monomersDict, C.DEOXYRIBOSE) : getMolGraph(monomersDict, C.RIBOSE);
327
364
  const phosphate = getMolGraph(monomersDict, C.PHOSPHATE);
@@ -342,6 +379,118 @@ function getResultingAtomBondCounts(monomerSeq, monomersDict, alphabet, polymerT
342
379
  }
343
380
  return { atomCount, bondCount, needsCapping };
344
381
  }
382
+ /** Triples-mode RNA assembly. Iterate by NUCLEOTIDE; each nucleotide normally
383
+ * contributes 3 entries from monomerSeq in order [sugar, base, phosphate].
384
+ * The LAST nucleotide may omit its trailing phosphate (length === 3N - 1) —
385
+ * in that case HELM specified an unphosphorylated 3'-end and we cap on the
386
+ * last sugar's R2 instead of on a final phosphate.
387
+ *
388
+ * @param {ISeqMonomer[]} monomerSeq - flat sugar/base/[phosphate] entries
389
+ * @param {MonomerMolGraphMap} monomersDict - monomer dictionary
390
+ * @param {string[]} molfileAtomBlock - output atom block buffer
391
+ * @param {string[]} molfileBondBlock - output bond block buffer
392
+ * @param {LoopVariables} v - mutable loop variables
393
+ * @param {LoopConstants} LC - loop constants (seqLength = nucleotide count)
394
+ * @param {MonomerMap} monomers - per-position monomer index map (filled in)
395
+ * @param {number[]} steabsCollection - stereo atoms collected for STEABS block
396
+ * @param {Function} addAtoms - callback to bump per-row atom counter for stereo offsets
397
+ * @param {Function} getAtoms - callback to read current atom counter */
398
+ function runTriplesAssembly(monomerSeq, monomersDict, molfileAtomBlock, molfileBondBlock, v, LC, monomers, steabsCollection, addAtoms, getAtoms) {
399
+ const N = LC.seqLength;
400
+ // length === 3N → trailing P present. length === 3N-1 → trailing P absent.
401
+ const hasTrailingP = monomerSeq.length === 3 * N;
402
+ for (let n = 0; n < N; ++n) {
403
+ v.i = n;
404
+ const sugarSm = monomerSeq[3 * n];
405
+ const baseSm = monomerSeq[3 * n + 1];
406
+ const sugarG = getMolGraph(monomersDict, { symbol: sugarSm.symbol, polymerType: helmTypeToPolymerType(sugarSm.biotype) });
407
+ const baseG = getMolGraph(monomersDict, { symbol: baseSm.symbol, polymerType: helmTypeToPolymerType(baseSm.biotype) });
408
+ // The previous nucleotide's trailing phosphate is the linker into THIS
409
+ // nucleotide's sugar. It always exists for n >= 1 because only the
410
+ // very LAST nucleotide is permitted to omit its phosphate.
411
+ const prevPhosG = (n === 0) ? null :
412
+ getMolGraph(monomersDict, { symbol: monomerSeq[3 * (n - 1) + 2].symbol,
413
+ polymerType: helmTypeToPolymerType(monomerSeq[3 * (n - 1) + 2].biotype) });
414
+ // emit prevPhosphate (chain linker), then sugar, then base
415
+ const seqStartIdx = 3 * n; // for keying the per-row monomer map by HELM splitter index
416
+ if (prevPhosG) {
417
+ const prevAtomFirst = v.nodeShift;
418
+ const prevBondFirst = v.bondShift;
419
+ addBackboneMonomerToMolblock(prevPhosG, molfileAtomBlock, molfileBondBlock, v);
420
+ prevPhosG.stereoAtoms?.forEach((i) => steabsCollection.push(i + getAtoms()));
421
+ addAtoms(prevPhosG.atoms.x.length);
422
+ // The phosphate "belongs to" nucleotide n-1's HELM index (3*(n-1)+2).
423
+ const prevPhosKey = 3 * (n - 1) + 2;
424
+ const aList = [];
425
+ for (let a = prevAtomFirst; a < v.nodeShift; ++a)
426
+ aList.push(a);
427
+ const bList = [];
428
+ for (let b = prevBondFirst; b < v.bondShift; ++b)
429
+ bList.push(b);
430
+ monomers.set(prevPhosKey, {
431
+ biotype: monomerSeq[prevPhosKey].biotype,
432
+ symbol: monomerSeq[prevPhosKey].symbol,
433
+ atoms: aList, bonds: bList,
434
+ });
435
+ }
436
+ const sugarAtomFirst = v.nodeShift;
437
+ const sugarBondFirst = v.bondShift;
438
+ addBackboneMonomerToMolblock(sugarG, molfileAtomBlock, molfileBondBlock, v);
439
+ sugarG.stereoAtoms?.forEach((i) => steabsCollection.push(i + getAtoms()));
440
+ addAtoms(sugarG.atoms.x.length);
441
+ const sAList = [];
442
+ for (let a = sugarAtomFirst; a < v.nodeShift; ++a)
443
+ sAList.push(a);
444
+ const sBList = [];
445
+ for (let b = sugarBondFirst; b < v.bondShift; ++b)
446
+ sBList.push(b);
447
+ monomers.set(seqStartIdx, {
448
+ biotype: sugarSm.biotype, symbol: sugarSm.symbol,
449
+ atoms: sAList, bonds: sBList,
450
+ });
451
+ const baseAtomFirst = v.nodeShift;
452
+ const baseBondFirst = v.bondShift;
453
+ addBranchMonomerToMolblock(baseG, molfileAtomBlock, molfileBondBlock, v);
454
+ baseG.stereoAtoms?.forEach((i) => steabsCollection.push(i + getAtoms()));
455
+ addAtoms(baseG.atoms.x.length);
456
+ const bAList = [];
457
+ for (let a = baseAtomFirst; a < v.nodeShift; ++a)
458
+ bAList.push(a);
459
+ const bBList = [];
460
+ for (let b = baseBondFirst; b < v.bondShift; ++b)
461
+ bBList.push(b);
462
+ monomers.set(seqStartIdx + 1, {
463
+ biotype: baseSm.biotype, symbol: baseSm.symbol,
464
+ atoms: bAList, bonds: bBList,
465
+ });
466
+ }
467
+ // Emit the trailing phosphate (the LAST nucleotide's P) as the final
468
+ // backbone monomer ONLY if HELM explicitly wrote it. The OH cap then
469
+ // rides on its free oxygen (3'-phosphate-OH terminus). If HELM omitted
470
+ // the trailing phosphate, the cap rides on the last sugar's R2 — that
471
+ // requires no extra emission here, since v.backboneAttachNode already
472
+ // points at the last sugar's R2 attach.
473
+ if (hasTrailingP) {
474
+ const lastPhosKey = 3 * (N - 1) + 2;
475
+ const lastPhosSm = monomerSeq[lastPhosKey];
476
+ const lastPhosG = getMolGraph(monomersDict, { symbol: lastPhosSm.symbol, polymerType: helmTypeToPolymerType(lastPhosSm.biotype) });
477
+ const trailAtomFirst = v.nodeShift;
478
+ const trailBondFirst = v.bondShift;
479
+ addBackboneMonomerToMolblock(lastPhosG, molfileAtomBlock, molfileBondBlock, v);
480
+ lastPhosG.stereoAtoms?.forEach((i) => steabsCollection.push(i + getAtoms()));
481
+ addAtoms(lastPhosG.atoms.x.length);
482
+ const tAList = [];
483
+ for (let a = trailAtomFirst; a < v.nodeShift; ++a)
484
+ tAList.push(a);
485
+ const tBList = [];
486
+ for (let b = trailBondFirst; b < v.bondShift; ++b)
487
+ tBList.push(b);
488
+ monomers.set(lastPhosKey, {
489
+ biotype: lastPhosSm.biotype, symbol: lastPhosSm.symbol,
490
+ atoms: tAList, bonds: tBList,
491
+ });
492
+ }
493
+ }
345
494
  /** Keep precision upon floating point operations over atom coordinates
346
495
  * @param {number}x - the floating point number
347
496
  * @return {number} - the floating point number with the same precision
@@ -1 +1 @@
1
- {"version":3,"file":"to-atomic-level-utils.js","sourceRoot":"","sources":["to-atomic-level-utils.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAC,kBAAkB,IAAI,CAAC,EAAC,MAAM,UAAU,CAAC;AACjD,OAAO,EAAC,WAAW,EAAgC,cAAc,EAAY,UAAU,EAAqB,MAAM,SAAS,CAAC;AAC5H,OAAO,EAAc,gBAAgB,GAAwC,MAAM,gBAAgB,CAAC;AACpG,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAC,MAAM,+BAA+B,CAAC;AAGnE,OAAO,EAAC,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AAGtD;;;;iHAIiH;AACjH,MAAM,UAAU,sBAAsB,CACpC,UAA2B,EAAE,WAAwB,EAAE,QAAkB;IAEzE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAe,CAAC;IACnC,KAAK,MAAM,aAAa,IAAI,UAAU,CAAC,uBAAuB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5E,MAAM,EAAE,GAAY,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,aAAa,CAAE,CAAC;QACvE,IACE,WAAW,sCAA0B;YACrC,CAAC,EAAE,8CAA0B,4CAA6B;gBACxD,QAAQ,KAAK,QAAQ,CAAC,GAAG,IAAI,EAAE,mCAAoB,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM;gBAC5E,QAAQ,KAAK,QAAQ,CAAC,GAAG,IAAI,EAAE,mCAAoB,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM;gBACvE,EAAE,mCAAoB,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;YAChD,WAAW,8CAA8B;gBACzC,EAAE,8CAA0B,4CAA6B,EACzD,CAAC;YACD,MAAM,aAAa,GAA2B,EAAE,CAAC;YACjD,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACjC,YAAY;gBACZ,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;qCAKqC;AACrC,MAAM,UAAU,mBAAmB,CACjC,UAAyB,EAAE,YAAgC,EAC3D,QAAkB,EAAE,WAAwB;IAE5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,0CAA0C;QAC1C,OAAO,cAAc,CAAC,WAAW,EAAE,CAAC;IACtC,CAAC;IAED,iEAAiE;IACjE,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;IACxD,MAAM,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAC,GAAG,oBAAoB,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;IAEnH,wDAAwD;IACxD,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAS,SAAS,CAAC,CAAC;IACtD,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAS,SAAS,CAAC,CAAC;IAEtD,IAAI,oBAA8I,CAAC;IAEnJ,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,SAAS,GAAG,IAAI,CAAC;IAErB,IAAI,WAAW,8CAA8B;QAC3C,oBAAoB,GAAG,sBAAsB,CAAC;SAC3C,CAAC,CAAC,cAAc;QACnB,oBAAoB,GAAG,uBAAuB,CAAC;QAC/C,KAAK,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACrH,SAAS,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,CAAC,GAAkB;QACvB,CAAC,EAAE,CAAC;QACJ,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,CAAC;QACZ,qBAAqB,EAAE,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,mBAAmB,EAAE,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,kBAAkB,EAAE,CAAC;QACrB,gBAAgB,EAAE,CAAC;QACnB,UAAU,EAAE,CAAC;KACd,CAAC;IAEF,MAAM,EAAE,GAAkB;QACxB,KAAK,EAAE,KAAM;QACb,SAAS,EAAE,SAAU;QACrB,SAAS,EAAE,UAAU,CAAC,MAAM;QAC5B,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;KACrB,CAAC;IAEF,MAAM,QAAQ,GAAe,IAAI,UAAU,EAAE,CAAC;IAC9C,MAAM,gBAAgB,GAAc,EAAE,CAAC;IACvC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,sBAAsB,GAAuB,SAAS,CAAC;IAE3D,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU;YAAE,SAAS;QAC/C,MAAM,OAAO,GAAG,WAAW,CAAC,YAAY,EAAE,EAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAC,CAAE,CAAC;QAChI,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC;QAChD,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC;QAC/B,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC;QAC/B,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzE,kEAAkE;QAClE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACvE,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAEjC,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC;QAC5C,MAAM,SAAS,GAAa,IAAI,KAAK,CAAS,UAAU,CAAC,CAAC;QAC1D,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,UAAU,EAAE,EAAE,GAAG;YAAE,SAAS,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC;QAE7E,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC;QAC5C,MAAM,SAAS,GAAa,IAAI,KAAK,CAAS,UAAU,CAAC,CAAC;QAC1D,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,UAAU,EAAE,EAAE,GAAG;YAAE,SAAS,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,GAAG,CAAC;QAE7E,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YAChB,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS;SACnC,CAAC,CAAC;IACL,CAAC;IAED,uFAAuF;IACvF,IAAI,YAAY;QACd,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,sBAAsB,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;IAEtG,MAAM,iBAAiB,GAAG,CAAC,CAAC,qBAAqB,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,CAAC,CAAC,sBAAsB,CAAC;IAE3G,6EAA6E;IAC7E,4EAA4E;IAC5E,gCAAgC;IAEhC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,MAAM,IAAI,CAAC,CAAC,qBAAqB,CAAC;IAClC,MAAM,IAAI,CAAC,CAAC,sBAAsB,CAAC;IACnC,MAAM,IAAI,CAAC,CAAC,oBAAoB,CAAC;IACjC,MAAM,IAAI,iBAAiB,CAAC;IAC5B,MAAM,IAAI,CAAC,CAAC,oBAAoB,CAAC;IACjC,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC;IAC/B,MAAM,IAAI,CAAC,CAAC,oBAAoB,CAAC;IACjC,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpC,MAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC;IAC/B,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAC7B,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACjD,MAAM,IAAI,CAAC,CAAC,kBAAkB,CAAC;IAC/B,MAAM,IAAI,CAAC,CAAC,OAAO,CAAC;IAEpB,gCAAgC;IAChC,OAAO,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAC,CAAC;AAC/C,CAAC;AAGD,SAAS,kBAAkB,CAAC,UAAoB;IAC9C,0DAA0D;IAC1D,kDAAkD;IAClD,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,IAAI,gBAAgB,GAAG,+BAA+B,UAAU,CAAC,MAAM,EAAE,CAAC;IAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,GAAG,gBAAgB,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,IAAI,UAAU,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YACnC,SAAS,CAAC,IAAI,CAAC,GAAG,gBAAgB,MAAM,CAAC,CAAC;YAC1C,gBAAgB,GAAG,UAAU,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,CAAC;;YACC,gBAAgB,GAAG,UAAU,CAAC;QAChC,+CAA+C;QAC/C,IAAI,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC;YAC7B,SAAS,CAAC,IAAI,CAAC,GAAG,gBAAgB,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,4BAA4B,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC;AACjF,CAAC;AAED;;;;+CAI+C;AAC/C,SAAS,oBAAoB,CAC3B,gBAA0B,EAAE,gBAA0B,EACtD,CAAgB,EAAE,EAAiB,EAAE,kBAA0B,CAAC,CAAC,MAAM;IAEvE,sBAAsB;IACtB,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;IAChC,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,mBAAmB,GAAG,OAAO,GAAG,GAAG;QACpE,CAAC,eAAe,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;QACrF,CAAC,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,YAAY,GAAG,IAAI,CAAC;IAEvF,oBAAoB;IACpB,MAAM,SAAS,GAAG,CAAC,CAAC,kBAAkB,CAAC;IACvC,MAAM,UAAU,GAAG,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,mBAAmB,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG;QACxE,CAAC,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,UAAU,GAAG,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAiB,EAAE,gBAA0B,EAC3E,gBAA0B,EAAE,CAAgB;IAE5C,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,qCAAqC;IACvE,4BAA4B,CAAC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,4BAA4B,CACnC,OAAiB,EAAE,gBAA0B,EAAE,gBAA0B,EAAE,CAAgB;IAE3F,uEAAuE;IACvE,iDAAiD;IACjD,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAE5C,gDAAgD;IAChD,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAE5C,eAAe;IACf,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAErD,uCAAuC;IACvC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;QAC5E,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAEpC,wBAAwB;IACxB,6BAA6B,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,uBAAuB,CAC9B,UAAoB,EAAE,gBAA0B,EAAE,gBAA0B,EAAE,CAAgB,EAAE,EAAiB;IAEjH,4EAA4E;IAC5E,YAAY;IACZ,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACX,4BAA4B,CAAC,EAAE,CAAC,KAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;SAC5E,CAAC;QACJ,KAAK,MAAM,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC;YAC5C,4BAA4B,CAAC,OAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,0BAA0B,CAAC,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,0BAA0B,CACjC,OAAiB,EAAE,gBAA0B,EAAE,gBAA0B,EAAE,CAAgB;IAE3F,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAClD,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC5C,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAEvD,WAAW;IACX,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC;IAC5B,MAAM,SAAS,GAAG,CAAC,CAAC,gBAAgB,CAAC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;IAC/D,gBAAgB,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,GAAG,OAAO,GAAG,GAAG;QACnE,CAAC,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,UAAU,GAAG,IAAI,CAAC;IAEhD,wBAAwB;IACxB,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAChD,CAAC;AAED,SAAS,6BAA6B,CAAC,OAAiB,EAAE,CAAgB;IACxE,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAElD,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;IAC9C,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB;IAC3F,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAiB,EAAE,CAAgB;IAChE,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACxB,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAY,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,SAAS,aAAa,CAAC,OAAiB,EAAE,gBAA0B,EAAE,CAAgB;IACpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,gBAAgB,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,GAAG,OAAO,GAAG,GAAG;YACvE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG;YAChC,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;YACpE,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7E,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,2BAA2B;AAC3B,SAAS,mBAAmB,CAAC,OAAiB,EAAE,gBAA0B,EAAE,CAAgB;IAC1F,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,gBAAgB,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,GAAG,OAAO,GAAG,GAAG;YACvE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG;YAChC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;YAClE,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3E,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAiB,EAAE,gBAA0B,EAAE,CAAgB;IACpF,gDAAgD;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QAC/D,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,kCAAkC;YAClC,IAAI,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC;gBAClB,WAAW,GAAG,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;QAClC,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,gBAAgB,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,GAAG,OAAO,GAAG,GAAG;YACvE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG;YAChC,SAAS,GAAG,GAAG,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAiB,EAAE,gBAA0B,EAAE,CAAgB;IAC7F,IAAI,CAAC,CAAC,kBAAkB,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC;QAC5B,MAAM,SAAS,GAAG,CAAC,CAAC,kBAAkB,CAAC;QACvC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QAC/D,gBAAgB,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,GAAG,OAAO,GAAG,GAAG;YACvE,CAAC,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,UAAU,GAAG,IAAI,CAAC;IAClD,CAAC;AACH,CAAC;AAED,eAAe;AACf,SAAS,wBAAwB,CAAC,aAAuB,EAAE,gBAA0B,EAAE,CAAgB;IACrG,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC;IAC5B,MAAM,SAAS,GAAG,CAAC,CAAC,gBAAgB,CAAC;IACrC,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;IACrE,gBAAgB,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,mBAAmB,GAAG,OAAO,GAAG,GAAG;QACnE,CAAC,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,UAAU,GAAG,IAAI,CAAC;AAClD,CAAC;AAED;;;;;;4EAM4E;AAC5E,SAAS,0BAA0B,CACjC,UAAyB,EAAE,YAAgC,EAC3D,QAAkB,EAAE,WAAwB;IAE5C,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,IAAI,YAAY,GAAW,CAAC,CAAC;IAC7B,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,gBAAgB,GAAoB,IAAI,CAAC;IAC7C,sDAAsD;IACtD,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,MAAM,KAAK,UAAU;YAAE,SAAS,CAAC,oCAAoC;QACpF,IAAI,UAAU,CAAC,MAAM,IAAI,GAAG;YAC1B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,gBAAgB,GAAG,WAAW,CAAC,YAAY,EAAE,EAAC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAC,CAAE,CAAC;QACnI,SAAS,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7C,SAAS,IAAI,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;QACrD,YAAY,EAAE,CAAC;IACjB,CAAC;IAED,iDAAiD;IACjD,IAAI,WAAW,8CAA8B,EAAE,CAAC;QAC9C,0DAA0D;QAC1D,SAAS,IAAI,CAAC,CAAC;QACf,2EAA2E;QAC3E,SAAS,IAAI,YAAY,CAAC;QAC1B,2FAA2F;QAC3F,yHAAyH;QACzH,wGAAwG;QACxG,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtI,YAAY,GAAG,KAAK,CAAC;gBACrB,SAAS,IAAI,CAAC,CAAC,CAAC,0CAA0C;gBAC1D,SAAS,IAAI,CAAC,CAAC,CAAC,2CAA2C;YAC7D,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC,CAAC,cAAc;QACrB,MAAM,KAAK,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YACzC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,WAAW,CAAE,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAE,CAAC;QACnF,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,SAAS,CAAE,CAAC;QAE1D,oDAAoD;QACpD,SAAS,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAEhE,uCAAuC;QACvC,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAEtD,6CAA6C;QAC7C,SAAS,IAAI,CAAC,CAAC;QAEf,oCAAoC;QACpC,SAAS,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;QAExE,gCAAgC;QAChC,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;QAE9D,+EAA+E;QAC/E,SAAS,IAAI,CAAC,CAAC;QAEf,8EAA8E;QAC9E,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,EAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAC,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"to-atomic-level-utils.js","sourceRoot":"","sources":["to-atomic-level-utils.ts"],"names":[],"mappings":"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"}