@datagrok-libraries/bio 5.9.12 → 5.9.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -19,5 +19,6 @@ import { CanvasCallback, getPhylocanvasGlService, IPhylocanvasGlViewer, NodeStyl
19
19
  import { IVdRegionsViewer } from './src/viewers/vd-regions-viewer';
20
20
  import { PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer } from './src/viewers/web-logo-viewer';
21
21
  import { MonomerLib } from './src/monomer-works/monomer-lib';
22
- export { ALIGNMENT, ALPHABET, NOTATION, TAGS, NotationConverter, SplitterFunc, getStats, getAlphabetSimilarity, getSplitter, splitterAsFasta, splitterAsHelm, getSplitterForColumn, monomerToShort, splitAlignedSequences, SeqPalette, SeqPaletteBase, Aminoacids, AminoacidsPalettes, Nucleotides, NucleotidesPalettes, UnknownSeqPalettes, UnknownSeqPalette, pickUpPalette, getPaletteByType, PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, IVdRegionsViewer, NodeType, isLeaf, NodeCuttedType, PhylocanvasTreeNode, NodeStyleType, StylesType, IPhylocanvasGlViewer, TreeTypesNames, PhylocanvasGlServiceBase, CanvasCallback, PhylocanvasGlTask, getPhylocanvasGlService, PhylocanvasGL, Shapes, TreeTypes, Utils, Newick, INewickHelper, ITreeHelper, getTreeHelper, Monomer, IMonomerLib, MonomerWorks, MonomerLib };
22
+ import { readLibrary } from './src/monomer-works/monomer-utils';
23
+ export { ALIGNMENT, ALPHABET, NOTATION, TAGS, NotationConverter, SplitterFunc, getStats, getAlphabetSimilarity, getSplitter, splitterAsFasta, splitterAsHelm, getSplitterForColumn, monomerToShort, splitAlignedSequences, SeqPalette, SeqPaletteBase, Aminoacids, AminoacidsPalettes, Nucleotides, NucleotidesPalettes, UnknownSeqPalettes, UnknownSeqPalette, pickUpPalette, getPaletteByType, PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, IVdRegionsViewer, NodeType, isLeaf, NodeCuttedType, PhylocanvasTreeNode, NodeStyleType, StylesType, IPhylocanvasGlViewer, TreeTypesNames, PhylocanvasGlServiceBase, CanvasCallback, PhylocanvasGlTask, getPhylocanvasGlService, PhylocanvasGL, Shapes, TreeTypes, Utils, Newick, INewickHelper, ITreeHelper, getTreeHelper, Monomer, IMonomerLib, MonomerWorks, MonomerLib, readLibrary };
23
24
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAElG,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAE1D,OAAO,EAAC,UAAU,EAAE,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAC,YAAY,EAAC,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAC,WAAW,EAAE,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AACnF,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,eAAe,CAAC;AACpE,OAAO,EAAC,SAAS,EAAE,mBAAmB,EAAC,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,QAAQ,EACR,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,SAAS,EACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAC,aAAa,EAAE,WAAW,EAAC,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAC,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,EACV,cAAc,EACf,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAC,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAC/G,OAAO,EAAC,UAAU,EAAC,MAAM,iCAAiC,CAAC;AAE3D,OAAO,EACL,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAEhB,QAAQ,EAAE,MAAM,EAAE,cAAc,EAChC,mBAAmB,EACnB,aAAa,EAAE,UAAU,EAEzB,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EAEvB,aAAa,EACb,MAAM,EAAE,SAAS,EACjB,KAAK,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,aAAa,EAGb,OAAO,EACP,WAAW,EACX,YAAY,EACZ,UAAU,EACX,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
package/index.js CHANGED
@@ -19,5 +19,6 @@ import { VdRegion, VdRegionType } from './src/vd-regions';
19
19
  import { getPhylocanvasGlService, PhylocanvasGlServiceBase, TreeTypesNames } from './src/viewers/phylocanvas-gl-viewer';
20
20
  import { PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer } from './src/viewers/web-logo-viewer';
21
21
  import { MonomerLib } from './src/monomer-works/monomer-lib';
22
- export { NotationConverter, getStats, getAlphabetSimilarity, getSplitter, splitterAsFasta, splitterAsHelm, getSplitterForColumn, monomerToShort, splitAlignedSequences, SeqPaletteBase, Aminoacids, AminoacidsPalettes, Nucleotides, NucleotidesPalettes, UnknownSeqPalettes, UnknownSeqPalette, pickUpPalette, getPaletteByType, PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, isLeaf, TreeTypesNames, PhylocanvasGlServiceBase, getPhylocanvasGlService, PhylocanvasGL, Shapes, TreeTypes, Utils, Newick, getTreeHelper, MonomerWorks, MonomerLib };
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBQ1osT0FBTyxFQUFzQixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRyxZQUFZO0FBQ1osT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE9BQU8sRUFBQyxVQUFVLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFBYSxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQWlDLE1BQU0sRUFBaUIsTUFBTSxhQUFhLENBQUM7QUFDbkYsT0FBTyxFQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsV0FBVyxFQUNYLGVBQWUsRUFDZixvQkFBb0IsRUFFcEIsY0FBYyxFQUNkLGNBQWMsRUFDZCxRQUFRLEVBQ1IsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixxQkFBcUIsRUFLdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFjLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUVMLHVCQUF1QixFQUd2Qix3QkFBd0IsRUFHeEIsY0FBYyxFQUNmLE1BQU0scUNBQXFDLENBQUM7QUFFN0MsT0FBTyxFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDL0csT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRTNELE9BQU8sRUFLTCxpQkFBaUIsRUFFakIsUUFBUSxFQUNSLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLHFCQUFxQixFQUVyQixjQUFjLEVBQ2QsVUFBVSxFQUNWLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFNBQVMsRUFDVCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixRQUFRLEVBR0UsTUFBTSxFQUtoQixjQUFjLEVBQ2Qsd0JBQXdCLEVBR3hCLHVCQUF1QixFQUV2QixhQUFhLEVBQ2IsTUFBTSxFQUFFLFNBQVMsRUFDakIsS0FBSyxFQUNMLE1BQU0sRUFHTixhQUFhLEVBS2IsWUFBWSxFQUNaLFVBQVUsRUFDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy9AdHMtaWdub3JlXG5pbXBvcnQge1BoeWxvY2FudmFzVHJlZU5vZGUsIE5ld2ljaywgVXRpbHMsIFNoYXBlcywgVHJlZVR5cGVzfSBmcm9tICdAcGh5bG9jYW52YXMvcGh5bG9jYW52YXMuZ2wnO1xuLy9AdHMtaWdub3JlXG5pbXBvcnQge1BoeWxvY2FudmFzR0x9IGZyb20gJ0BwaHlsb2NhbnZhcy9waHlsb2NhbnZhcy5nbCc7XG5cbmltcG9ydCB7QW1pbm9hY2lkcywgQW1pbm9hY2lkc1BhbGV0dGVzfSBmcm9tICcuL3NyYy9hbWlub2FjaWRzJztcbmltcG9ydCB7TW9ub21lcldvcmtzfSBmcm9tICcuL3NyYy9tb25vbWVyLXdvcmtzL21vbm9tZXItd29ya3MnO1xuaW1wb3J0IHtOdWNsZW90aWRlcywgTnVjbGVvdGlkZXNQYWxldHRlc30gZnJvbSAnLi9zcmMvbnVjbGVvdGlkZXMnO1xuaW1wb3J0IHtTZXFQYWxldHRlLCBTZXFQYWxldHRlQmFzZX0gZnJvbSAnLi9zcmMvc2VxLXBhbGV0dGVzJztcbmltcG9ydCB7SU1vbm9tZXJMaWIsIE1vbm9tZXIsIE5vZGVUeXBlLCBpc0xlYWYsIE5vZGVDdXR0ZWRUeXBlfSBmcm9tICcuL3NyYy90eXBlcyc7XG5pbXBvcnQge1Vua25vd25TZXFQYWxldHRlLCBVbmtub3duU2VxUGFsZXR0ZXN9IGZyb20gJy4vc3JjL3Vua25vd24nO1xuaW1wb3J0IHtEcmF3U3R5bGUsIHByaW50TGVmdE9yQ2VudGVyZWR9IGZyb20gJy4vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHtGYXN0YUZpbGVIYW5kbGVyfSBmcm9tICcuL3NyYy91dGlscy9mYXN0YS1oYW5kbGVyJztcbmltcG9ydCB7XG4gIGdldFNwbGl0dGVyLFxuICBzcGxpdHRlckFzRmFzdGEsXG4gIGdldFNwbGl0dGVyRm9yQ29sdW1uLFxuICBTcGxpdHRlckZ1bmMsXG4gIG1vbm9tZXJUb1Nob3J0LFxuICBzcGxpdHRlckFzSGVsbSxcbiAgZ2V0U3RhdHMsXG4gIHBpY2tVcFBhbGV0dGUsXG4gIGdldFBhbGV0dGVCeVR5cGUsXG4gIGdldEFscGhhYmV0U2ltaWxhcml0eSxcbiAgQUxQSEFCRVQsXG4gIE5PVEFUSU9OLFxuICBUQUdTLFxuICBBTElHTk1FTlRcbn0gZnJvbSAnLi9zcmMvdXRpbHMvbWFjcm9tb2xlY3VsZSc7XG5pbXBvcnQge0lOZXdpY2tIZWxwZXJ9IGZyb20gJy4vc3JjL3V0aWxzL25ld2ljay1oZWxwZXInO1xuaW1wb3J0IHtOb3RhdGlvbkNvbnZlcnRlcn0gZnJvbSAnLi9zcmMvdXRpbHMvbm90YXRpb24tY29udmVydGVyJztcbmltcG9ydCB7c3BsaXRBbGlnbmVkU2VxdWVuY2VzfSBmcm9tICcuL3NyYy91dGlscy9zcGxpdHRlcic7XG5pbXBvcnQge2dldFRyZWVIZWxwZXIsIElUcmVlSGVscGVyfSBmcm9tICcuL3NyYy91dGlscy90cmVlLWhlbHBlcic7XG5pbXBvcnQge1VuaXRzSGFuZGxlcn0gZnJvbSAnLi9zcmMvdXRpbHMvdW5pdHMtaGFuZGxlcic7XG5pbXBvcnQge1ZkUmVnaW9uLCBWZFJlZ2lvblR5cGV9IGZyb20gJy4vc3JjL3ZkLXJlZ2lvbnMnO1xuaW1wb3J0IHtcbiAgQ2FudmFzQ2FsbGJhY2ssXG4gIGdldFBoeWxvY2FudmFzR2xTZXJ2aWNlLFxuICBJUGh5bG9jYW52YXNHbFZpZXdlcixcbiAgTm9kZVN0eWxlVHlwZSxcbiAgUGh5bG9jYW52YXNHbFNlcnZpY2VCYXNlLFxuICBQaHlsb2NhbnZhc0dsVGFzayxcbiAgU3R5bGVzVHlwZSxcbiAgVHJlZVR5cGVzTmFtZXNcbn0gZnJvbSAnLi9zcmMvdmlld2Vycy9waHlsb2NhbnZhcy1nbC12aWV3ZXInO1xuaW1wb3J0IHtJVmRSZWdpb25zVmlld2VyfSBmcm9tICcuL3NyYy92aWV3ZXJzL3ZkLXJlZ2lvbnMtdmlld2VyJztcbmltcG9ydCB7UG9zaXRpb25IZWlnaHQsIFBvc2l0aW9uSW5mbywgUG9zaXRpb25Nb25vbWVySW5mbywgV2ViTG9nb1ZpZXdlcn0gZnJvbSAnLi9zcmMvdmlld2Vycy93ZWItbG9nby12aWV3ZXInO1xuaW1wb3J0IHtNb25vbWVyTGlifSBmcm9tICcuL3NyYy9tb25vbWVyLXdvcmtzL21vbm9tZXItbGliJztcblxuZXhwb3J0IHtcbiAgQUxJR05NRU5ULFxuICBBTFBIQUJFVCxcbiAgTk9UQVRJT04sXG4gIFRBR1MsXG4gIE5vdGF0aW9uQ29udmVydGVyLFxuICBTcGxpdHRlckZ1bmMsXG4gIGdldFN0YXRzLFxuICBnZXRBbHBoYWJldFNpbWlsYXJpdHksXG4gIGdldFNwbGl0dGVyLFxuICBzcGxpdHRlckFzRmFzdGEsXG4gIHNwbGl0dGVyQXNIZWxtLFxuICBnZXRTcGxpdHRlckZvckNvbHVtbixcbiAgbW9ub21lclRvU2hvcnQsXG4gIHNwbGl0QWxpZ25lZFNlcXVlbmNlcyxcbiAgU2VxUGFsZXR0ZSxcbiAgU2VxUGFsZXR0ZUJhc2UsXG4gIEFtaW5vYWNpZHMsXG4gIEFtaW5vYWNpZHNQYWxldHRlcyxcbiAgTnVjbGVvdGlkZXMsXG4gIE51Y2xlb3RpZGVzUGFsZXR0ZXMsXG4gIFVua25vd25TZXFQYWxldHRlcyxcbiAgVW5rbm93blNlcVBhbGV0dGUsXG4gIHBpY2tVcFBhbGV0dGUsXG4gIGdldFBhbGV0dGVCeVR5cGUsXG4gIFBvc2l0aW9uSGVpZ2h0LFxuICBQb3NpdGlvbkluZm8sXG4gIFBvc2l0aW9uTW9ub21lckluZm8sXG4gIFdlYkxvZ29WaWV3ZXIsXG4gIFVuaXRzSGFuZGxlcixcbiAgRHJhd1N0eWxlLFxuICBwcmludExlZnRPckNlbnRlcmVkLFxuICBGYXN0YUZpbGVIYW5kbGVyLFxuICBWZFJlZ2lvblR5cGUsXG4gIFZkUmVnaW9uLFxuICBJVmRSZWdpb25zVmlld2VyLFxuXG4gIE5vZGVUeXBlLCBpc0xlYWYsIE5vZGVDdXR0ZWRUeXBlLFxuICBQaHlsb2NhbnZhc1RyZWVOb2RlLFxuICBOb2RlU3R5bGVUeXBlLCBTdHlsZXNUeXBlLFxuXG4gIElQaHlsb2NhbnZhc0dsVmlld2VyLFxuICBUcmVlVHlwZXNOYW1lcyxcbiAgUGh5bG9jYW52YXNHbFNlcnZpY2VCYXNlLFxuICBDYW52YXNDYWxsYmFjayxcbiAgUGh5bG9jYW52YXNHbFRhc2ssXG4gIGdldFBoeWxvY2FudmFzR2xTZXJ2aWNlLFxuXG4gIFBoeWxvY2FudmFzR0wsXG4gIFNoYXBlcywgVHJlZVR5cGVzLFxuICBVdGlscyxcbiAgTmV3aWNrLFxuICBJTmV3aWNrSGVscGVyLFxuICBJVHJlZUhlbHBlcixcbiAgZ2V0VHJlZUhlbHBlcixcblxuICAvL01vbm9tZXIgbGliIGFuZCBmZWF0dXJlc1xuICBNb25vbWVyLFxuICBJTW9ub21lckxpYixcbiAgTW9ub21lcldvcmtzLFxuICBNb25vbWVyTGliXG59O1xuIl19
22
+ import { readLibrary } from './src/monomer-works/monomer-utils';
23
+ export { NotationConverter, getStats, getAlphabetSimilarity, getSplitter, splitterAsFasta, splitterAsHelm, getSplitterForColumn, monomerToShort, splitAlignedSequences, SeqPaletteBase, Aminoacids, AminoacidsPalettes, Nucleotides, NucleotidesPalettes, UnknownSeqPalettes, UnknownSeqPalette, pickUpPalette, getPaletteByType, PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, isLeaf, TreeTypesNames, PhylocanvasGlServiceBase, getPhylocanvasGlService, PhylocanvasGL, Shapes, TreeTypes, Utils, Newick, getTreeHelper, MonomerWorks, MonomerLib, readLibrary };
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBQ1osT0FBTyxFQUFzQixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUMsTUFBTSw2QkFBNkIsQ0FBQztBQUNsRyxZQUFZO0FBQ1osT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBRTFELE9BQU8sRUFBQyxVQUFVLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFBYSxjQUFjLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQWlDLE1BQU0sRUFBaUIsTUFBTSxhQUFhLENBQUM7QUFDbkYsT0FBTyxFQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsV0FBVyxFQUNYLGVBQWUsRUFDZixvQkFBb0IsRUFFcEIsY0FBYyxFQUNkLGNBQWMsRUFDZCxRQUFRLEVBQ1IsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixxQkFBcUIsRUFLdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUMsYUFBYSxFQUFjLE1BQU0seUJBQXlCLENBQUM7QUFDbkUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDeEQsT0FBTyxFQUVMLHVCQUF1QixFQUd2Qix3QkFBd0IsRUFHeEIsY0FBYyxFQUNmLE1BQU0scUNBQXFDLENBQUM7QUFFN0MsT0FBTyxFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDL0csT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUU5RCxPQUFPLEVBS0wsaUJBQWlCLEVBRWpCLFFBQVEsRUFDUixxQkFBcUIsRUFDckIsV0FBVyxFQUNYLGVBQWUsRUFDZixjQUFjLEVBQ2Qsb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxxQkFBcUIsRUFFckIsY0FBYyxFQUNkLFVBQVUsRUFDVixrQkFBa0IsRUFDbEIsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDYixnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLFlBQVksRUFDWixTQUFTLEVBQ1QsbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osUUFBUSxFQUdFLE1BQU0sRUFLaEIsY0FBYyxFQUNkLHdCQUF3QixFQUd4Qix1QkFBdUIsRUFFdkIsYUFBYSxFQUNiLE1BQU0sRUFBRSxTQUFTLEVBQ2pCLEtBQUssRUFDTCxNQUFNLEVBR04sYUFBYSxFQUtiLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvL0B0cy1pZ25vcmVcbmltcG9ydCB7UGh5bG9jYW52YXNUcmVlTm9kZSwgTmV3aWNrLCBVdGlscywgU2hhcGVzLCBUcmVlVHlwZXN9IGZyb20gJ0BwaHlsb2NhbnZhcy9waHlsb2NhbnZhcy5nbCc7XG4vL0B0cy1pZ25vcmVcbmltcG9ydCB7UGh5bG9jYW52YXNHTH0gZnJvbSAnQHBoeWxvY2FudmFzL3BoeWxvY2FudmFzLmdsJztcblxuaW1wb3J0IHtBbWlub2FjaWRzLCBBbWlub2FjaWRzUGFsZXR0ZXN9IGZyb20gJy4vc3JjL2FtaW5vYWNpZHMnO1xuaW1wb3J0IHtNb25vbWVyV29ya3N9IGZyb20gJy4vc3JjL21vbm9tZXItd29ya3MvbW9ub21lci13b3Jrcyc7XG5pbXBvcnQge051Y2xlb3RpZGVzLCBOdWNsZW90aWRlc1BhbGV0dGVzfSBmcm9tICcuL3NyYy9udWNsZW90aWRlcyc7XG5pbXBvcnQge1NlcVBhbGV0dGUsIFNlcVBhbGV0dGVCYXNlfSBmcm9tICcuL3NyYy9zZXEtcGFsZXR0ZXMnO1xuaW1wb3J0IHtJTW9ub21lckxpYiwgTW9ub21lciwgTm9kZVR5cGUsIGlzTGVhZiwgTm9kZUN1dHRlZFR5cGV9IGZyb20gJy4vc3JjL3R5cGVzJztcbmltcG9ydCB7VW5rbm93blNlcVBhbGV0dGUsIFVua25vd25TZXFQYWxldHRlc30gZnJvbSAnLi9zcmMvdW5rbm93bic7XG5pbXBvcnQge0RyYXdTdHlsZSwgcHJpbnRMZWZ0T3JDZW50ZXJlZH0gZnJvbSAnLi9zcmMvdXRpbHMvY2VsbC1yZW5kZXJlcic7XG5pbXBvcnQge0Zhc3RhRmlsZUhhbmRsZXJ9IGZyb20gJy4vc3JjL3V0aWxzL2Zhc3RhLWhhbmRsZXInO1xuaW1wb3J0IHtcbiAgZ2V0U3BsaXR0ZXIsXG4gIHNwbGl0dGVyQXNGYXN0YSxcbiAgZ2V0U3BsaXR0ZXJGb3JDb2x1bW4sXG4gIFNwbGl0dGVyRnVuYyxcbiAgbW9ub21lclRvU2hvcnQsXG4gIHNwbGl0dGVyQXNIZWxtLFxuICBnZXRTdGF0cyxcbiAgcGlja1VwUGFsZXR0ZSxcbiAgZ2V0UGFsZXR0ZUJ5VHlwZSxcbiAgZ2V0QWxwaGFiZXRTaW1pbGFyaXR5LFxuICBBTFBIQUJFVCxcbiAgTk9UQVRJT04sXG4gIFRBR1MsXG4gIEFMSUdOTUVOVFxufSBmcm9tICcuL3NyYy91dGlscy9tYWNyb21vbGVjdWxlJztcbmltcG9ydCB7SU5ld2lja0hlbHBlcn0gZnJvbSAnLi9zcmMvdXRpbHMvbmV3aWNrLWhlbHBlcic7XG5pbXBvcnQge05vdGF0aW9uQ29udmVydGVyfSBmcm9tICcuL3NyYy91dGlscy9ub3RhdGlvbi1jb252ZXJ0ZXInO1xuaW1wb3J0IHtzcGxpdEFsaWduZWRTZXF1ZW5jZXN9IGZyb20gJy4vc3JjL3V0aWxzL3NwbGl0dGVyJztcbmltcG9ydCB7Z2V0VHJlZUhlbHBlciwgSVRyZWVIZWxwZXJ9IGZyb20gJy4vc3JjL3V0aWxzL3RyZWUtaGVscGVyJztcbmltcG9ydCB7VW5pdHNIYW5kbGVyfSBmcm9tICcuL3NyYy91dGlscy91bml0cy1oYW5kbGVyJztcbmltcG9ydCB7VmRSZWdpb24sIFZkUmVnaW9uVHlwZX0gZnJvbSAnLi9zcmMvdmQtcmVnaW9ucyc7XG5pbXBvcnQge1xuICBDYW52YXNDYWxsYmFjayxcbiAgZ2V0UGh5bG9jYW52YXNHbFNlcnZpY2UsXG4gIElQaHlsb2NhbnZhc0dsVmlld2VyLFxuICBOb2RlU3R5bGVUeXBlLFxuICBQaHlsb2NhbnZhc0dsU2VydmljZUJhc2UsXG4gIFBoeWxvY2FudmFzR2xUYXNrLFxuICBTdHlsZXNUeXBlLFxuICBUcmVlVHlwZXNOYW1lc1xufSBmcm9tICcuL3NyYy92aWV3ZXJzL3BoeWxvY2FudmFzLWdsLXZpZXdlcic7XG5pbXBvcnQge0lWZFJlZ2lvbnNWaWV3ZXJ9IGZyb20gJy4vc3JjL3ZpZXdlcnMvdmQtcmVnaW9ucy12aWV3ZXInO1xuaW1wb3J0IHtQb3NpdGlvbkhlaWdodCwgUG9zaXRpb25JbmZvLCBQb3NpdGlvbk1vbm9tZXJJbmZvLCBXZWJMb2dvVmlld2VyfSBmcm9tICcuL3NyYy92aWV3ZXJzL3dlYi1sb2dvLXZpZXdlcic7XG5pbXBvcnQge01vbm9tZXJMaWJ9IGZyb20gJy4vc3JjL21vbm9tZXItd29ya3MvbW9ub21lci1saWInO1xuaW1wb3J0IHtyZWFkTGlicmFyeX0gZnJvbSAnLi9zcmMvbW9ub21lci13b3Jrcy9tb25vbWVyLXV0aWxzJztcblxuZXhwb3J0IHtcbiAgQUxJR05NRU5ULFxuICBBTFBIQUJFVCxcbiAgTk9UQVRJT04sXG4gIFRBR1MsXG4gIE5vdGF0aW9uQ29udmVydGVyLFxuICBTcGxpdHRlckZ1bmMsXG4gIGdldFN0YXRzLFxuICBnZXRBbHBoYWJldFNpbWlsYXJpdHksXG4gIGdldFNwbGl0dGVyLFxuICBzcGxpdHRlckFzRmFzdGEsXG4gIHNwbGl0dGVyQXNIZWxtLFxuICBnZXRTcGxpdHRlckZvckNvbHVtbixcbiAgbW9ub21lclRvU2hvcnQsXG4gIHNwbGl0QWxpZ25lZFNlcXVlbmNlcyxcbiAgU2VxUGFsZXR0ZSxcbiAgU2VxUGFsZXR0ZUJhc2UsXG4gIEFtaW5vYWNpZHMsXG4gIEFtaW5vYWNpZHNQYWxldHRlcyxcbiAgTnVjbGVvdGlkZXMsXG4gIE51Y2xlb3RpZGVzUGFsZXR0ZXMsXG4gIFVua25vd25TZXFQYWxldHRlcyxcbiAgVW5rbm93blNlcVBhbGV0dGUsXG4gIHBpY2tVcFBhbGV0dGUsXG4gIGdldFBhbGV0dGVCeVR5cGUsXG4gIFBvc2l0aW9uSGVpZ2h0LFxuICBQb3NpdGlvbkluZm8sXG4gIFBvc2l0aW9uTW9ub21lckluZm8sXG4gIFdlYkxvZ29WaWV3ZXIsXG4gIFVuaXRzSGFuZGxlcixcbiAgRHJhd1N0eWxlLFxuICBwcmludExlZnRPckNlbnRlcmVkLFxuICBGYXN0YUZpbGVIYW5kbGVyLFxuICBWZFJlZ2lvblR5cGUsXG4gIFZkUmVnaW9uLFxuICBJVmRSZWdpb25zVmlld2VyLFxuXG4gIE5vZGVUeXBlLCBpc0xlYWYsIE5vZGVDdXR0ZWRUeXBlLFxuICBQaHlsb2NhbnZhc1RyZWVOb2RlLFxuICBOb2RlU3R5bGVUeXBlLCBTdHlsZXNUeXBlLFxuXG4gIElQaHlsb2NhbnZhc0dsVmlld2VyLFxuICBUcmVlVHlwZXNOYW1lcyxcbiAgUGh5bG9jYW52YXNHbFNlcnZpY2VCYXNlLFxuICBDYW52YXNDYWxsYmFjayxcbiAgUGh5bG9jYW52YXNHbFRhc2ssXG4gIGdldFBoeWxvY2FudmFzR2xTZXJ2aWNlLFxuXG4gIFBoeWxvY2FudmFzR0wsXG4gIFNoYXBlcywgVHJlZVR5cGVzLFxuICBVdGlscyxcbiAgTmV3aWNrLFxuICBJTmV3aWNrSGVscGVyLFxuICBJVHJlZUhlbHBlcixcbiAgZ2V0VHJlZUhlbHBlcixcblxuICAvL01vbm9tZXIgbGliIGFuZCBmZWF0dXJlc1xuICBNb25vbWVyLFxuICBJTW9ub21lckxpYixcbiAgTW9ub21lcldvcmtzLFxuICBNb25vbWVyTGliLFxuICByZWFkTGlicmFyeVxufTtcbiJdfQ==
package/index.ts CHANGED
@@ -46,6 +46,7 @@ import {
46
46
  import {IVdRegionsViewer} from './src/viewers/vd-regions-viewer';
47
47
  import {PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer} from './src/viewers/web-logo-viewer';
48
48
  import {MonomerLib} from './src/monomer-works/monomer-lib';
49
+ import {readLibrary} from './src/monomer-works/monomer-utils';
49
50
 
50
51
  export {
51
52
  ALIGNMENT,
@@ -107,5 +108,6 @@ export {
107
108
  Monomer,
108
109
  IMonomerLib,
109
110
  MonomerWorks,
110
- MonomerLib
111
+ MonomerLib,
112
+ readLibrary
111
113
  };
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "friendlyName": "Datagrok bio library",
7
- "version": "5.9.12",
7
+ "version": "5.9.13",
8
8
  "description": "",
9
9
  "dependencies": {
10
10
  "@datagrok-libraries/utils": "^1.10.1",
@@ -3,16 +3,18 @@ import { IMonomerLib, Monomer } from '../types/index';
3
3
  export declare class MonomerLib implements IMonomerLib {
4
4
  private _monomers;
5
5
  private _onChanged;
6
+ constructor(monomers: {
7
+ [type: string]: {
8
+ [name: string]: Monomer;
9
+ };
10
+ });
6
11
  getMonomer(monomerType: string, monomerName: string): Monomer | null;
7
12
  getTypes(): string[];
8
- getMonomersByType(type: string): {
13
+ getMonomerMolsByType(type: string): {
9
14
  [symbol: string]: string;
10
15
  };
16
+ getMonomerNamesByType(type: string): string[];
11
17
  get onChanged(): Observable<any>;
12
- update(monomers: {
13
- [type: string]: {
14
- [name: string]: Monomer;
15
- };
16
- }): void;
18
+ update(lib: IMonomerLib): void;
17
19
  }
18
20
  //# sourceMappingURL=monomer-lib.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"monomer-lib.d.ts","sourceRoot":"","sources":["monomer-lib.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAU,MAAM,MAAM,CAAC;AACzC,OAAO,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAEpD,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,SAAS,CAAuD;IACxE,OAAO,CAAC,UAAU,CAAsB;IAExC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAOpE,QAAQ,IAAI,MAAM,EAAE;IAIpB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC;IAU3D,IAAI,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,CAE/B;IAEM,MAAM,CAAC,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG;YAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI;CAc/E"}
1
+ {"version":3,"file":"monomer-lib.d.ts","sourceRoot":"","sources":["monomer-lib.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAU,MAAM,MAAM,CAAC;AACzC,OAAO,EAAC,WAAW,EAAE,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAEpD,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,SAAS,CAAuD;IACxE,OAAO,CAAC,UAAU,CAAsB;gBAE5B,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG;YAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE;IAIrE,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;IAOpE,QAAQ,IAAI,MAAM,EAAE;IAIpB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC;IAU9D,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAI7C,IAAI,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,CAE/B;IAEM,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;CAkBtC"}
@@ -1,8 +1,9 @@
1
1
  import { Subject } from 'rxjs';
2
2
  export class MonomerLib {
3
- constructor() {
3
+ constructor(monomers) {
4
4
  this._monomers = {};
5
5
  this._onChanged = new Subject();
6
+ this._monomers = monomers;
6
7
  }
7
8
  getMonomer(monomerType, monomerName) {
8
9
  if (monomerType in this._monomers && monomerName in this._monomers[monomerType])
@@ -13,26 +14,32 @@ export class MonomerLib {
13
14
  getTypes() {
14
15
  return Object.keys(this._monomers);
15
16
  }
16
- getMonomersByType(type) {
17
+ getMonomerMolsByType(type) {
17
18
  let res = {};
18
19
  Object.keys(this._monomers[type]).forEach(monomerSymbol => {
19
20
  res[monomerSymbol] = this._monomers[type][monomerSymbol].molfile;
20
21
  });
21
22
  return res;
22
23
  }
24
+ getMonomerNamesByType(type) {
25
+ return Object.keys(this._monomers[type]);
26
+ }
23
27
  get onChanged() {
24
28
  return this._onChanged;
25
29
  }
26
- update(monomers) {
27
- Object.keys(monomers).forEach(type => {
30
+ update(lib) {
31
+ const typesNew = lib.getTypes();
32
+ const types = this.getTypes();
33
+ typesNew.forEach(type => {
28
34
  //could possibly rewrite -> TODO: check duplicated monomer symbol
29
- if (!this.getTypes().includes(type))
35
+ if (!types.includes(type))
30
36
  this._monomers[type] = {};
31
- Object.keys(monomers[type]).forEach(monomerName => {
32
- this._monomers[type][monomerName] = monomers[type][monomerName];
37
+ const monomers = lib.getMonomerNamesByType(type);
38
+ Object.keys(monomers).forEach(monomerName => {
39
+ this._monomers[type][monomerName] = lib.getMonomer(type, monomerName);
33
40
  });
34
41
  });
35
42
  this._onChanged.next();
36
43
  }
37
44
  }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub21lci1saWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtb25vbWVyLWxpYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3pDLE1BQU0sT0FBTyxVQUFVO0lBQXZCO1FBQ1UsY0FBUyxHQUFvRCxFQUFFLENBQUM7UUFDaEUsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7SUF5QzFDLENBQUM7SUF2Q0MsVUFBVSxDQUFDLFdBQW1CLEVBQUUsV0FBbUI7UUFDakQsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVUsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVUsQ0FBQyxXQUFXLENBQUM7WUFDL0UsT0FBTyxJQUFJLENBQUMsU0FBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDOztZQUVqRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVk7UUFDNUIsSUFBSSxHQUFHLEdBQStCLEVBQUUsQ0FBQztRQUV6QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDeEQsR0FBRyxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBeUQ7UUFDckUsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDbkMsaUVBQWlFO1lBRWpFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDakMsSUFBSSxDQUFDLFNBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFN0IsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7SU1vbm9tZXJMaWIsIE1vbm9tZXJ9IGZyb20gJy4uL3R5cGVzL2luZGV4JztcblxuZXhwb3J0IGNsYXNzIE1vbm9tZXJMaWIgaW1wbGVtZW50cyBJTW9ub21lckxpYiB7XG4gIHByaXZhdGUgX21vbm9tZXJzOiB7IFt0eXBlOiBzdHJpbmddOiB7IFtuYW1lOiBzdHJpbmddOiBNb25vbWVyIH0gfSA9IHt9O1xuICBwcml2YXRlIF9vbkNoYW5nZWQgPSBuZXcgU3ViamVjdDxhbnk+KCk7XG5cbiAgZ2V0TW9ub21lcihtb25vbWVyVHlwZTogc3RyaW5nLCBtb25vbWVyTmFtZTogc3RyaW5nKTogTW9ub21lciB8IG51bGwge1xuICAgIGlmIChtb25vbWVyVHlwZSBpbiB0aGlzLl9tb25vbWVycyEgJiYgbW9ub21lck5hbWUgaW4gdGhpcy5fbW9ub21lcnMhW21vbm9tZXJUeXBlXSlcbiAgICAgIHJldHVybiB0aGlzLl9tb25vbWVycyFbbW9ub21lclR5cGVdW21vbm9tZXJOYW1lXTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldFR5cGVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5fbW9ub21lcnMpO1xuICB9XG5cbiAgZ2V0TW9ub21lcnNCeVR5cGUodHlwZTogc3RyaW5nKToge1tzeW1ib2w6IHN0cmluZ106IHN0cmluZ30ge1xuICAgIGxldCByZXM6IHtbc3ltYm9sOiBzdHJpbmddOiBzdHJpbmd9ID0ge307XG5cbiAgICBPYmplY3Qua2V5cyh0aGlzLl9tb25vbWVyc1t0eXBlXSkuZm9yRWFjaChtb25vbWVyU3ltYm9sID0+IHtcbiAgICAgIHJlc1ttb25vbWVyU3ltYm9sXSA9IHRoaXMuX21vbm9tZXJzW3R5cGVdW21vbm9tZXJTeW1ib2xdLm1vbGZpbGU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgZ2V0IG9uQ2hhbmdlZCgpOiBPYnNlcnZhYmxlPGFueT4geyBcbiAgICByZXR1cm4gdGhpcy5fb25DaGFuZ2VkO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZShtb25vbWVyczogeyBbdHlwZTogc3RyaW5nXTogeyBbbmFtZTogc3RyaW5nXTogTW9ub21lciB9IH0pOiB2b2lkIHtcbiAgICBPYmplY3Qua2V5cyhtb25vbWVycykuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgIC8vY291bGQgcG9zc2libHkgcmV3cml0ZSAtPiBUT0RPOiBjaGVjayBkdXBsaWNhdGVkIG1vbm9tZXIgc3ltYm9sXG5cbiAgICAgIGlmICghdGhpcy5nZXRUeXBlcygpLmluY2x1ZGVzKHR5cGUpKVxuICAgICAgICB0aGlzLl9tb25vbWVycyFbdHlwZV0gPSB7fTtcblxuICAgICAgT2JqZWN0LmtleXMobW9ub21lcnNbdHlwZV0pLmZvckVhY2gobW9ub21lck5hbWUgPT57XG4gICAgICAgIHRoaXMuX21vbm9tZXJzW3R5cGVdW21vbm9tZXJOYW1lXSA9IG1vbm9tZXJzW3R5cGVdW21vbm9tZXJOYW1lXTtcbiAgICAgIH0pXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vbkNoYW5nZWQubmV4dCgpO1xuICB9XG59XG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub21lci1saWIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtb25vbWVyLWxpYi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWEsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBR3pDLE1BQU0sT0FBTyxVQUFVO0lBSXJCLFlBQVksUUFBeUQ7UUFIN0QsY0FBUyxHQUFvRCxFQUFFLENBQUM7UUFDaEUsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFHdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztJQUVELFVBQVUsQ0FBQyxXQUFtQixFQUFFLFdBQW1CO1FBQ2pELElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFVLElBQUksV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFVLENBQUMsV0FBVyxDQUFDO1lBQy9FLE9BQU8sSUFBSSxDQUFDLFNBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQzs7WUFFakQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLElBQUksR0FBRyxHQUErQixFQUFFLENBQUM7UUFFekMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3hELEdBQUcsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNuRSxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELHFCQUFxQixDQUFDLElBQVk7UUFDaEMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBZ0I7UUFDNUIsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUU5QixRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3RCLGlFQUFpRTtZQUVqRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRTdCLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqRCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDMUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUUsQ0FBQztZQUN6RSxDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7T2JzZXJ2YWJsZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0lNb25vbWVyTGliLCBNb25vbWVyfSBmcm9tICcuLi90eXBlcy9pbmRleCc7XG5cbmV4cG9ydCBjbGFzcyBNb25vbWVyTGliIGltcGxlbWVudHMgSU1vbm9tZXJMaWIge1xuICBwcml2YXRlIF9tb25vbWVyczogeyBbdHlwZTogc3RyaW5nXTogeyBbbmFtZTogc3RyaW5nXTogTW9ub21lciB9IH0gPSB7fTtcbiAgcHJpdmF0ZSBfb25DaGFuZ2VkID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKG1vbm9tZXJzOiB7IFt0eXBlOiBzdHJpbmddOiB7IFtuYW1lOiBzdHJpbmddOiBNb25vbWVyIH0gfSkge1xuICAgIHRoaXMuX21vbm9tZXJzID0gbW9ub21lcnM7XG4gIH1cblxuICBnZXRNb25vbWVyKG1vbm9tZXJUeXBlOiBzdHJpbmcsIG1vbm9tZXJOYW1lOiBzdHJpbmcpOiBNb25vbWVyIHwgbnVsbCB7XG4gICAgaWYgKG1vbm9tZXJUeXBlIGluIHRoaXMuX21vbm9tZXJzISAmJiBtb25vbWVyTmFtZSBpbiB0aGlzLl9tb25vbWVycyFbbW9ub21lclR5cGVdKVxuICAgICAgcmV0dXJuIHRoaXMuX21vbm9tZXJzIVttb25vbWVyVHlwZV1bbW9ub21lck5hbWVdO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0VHlwZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tb25vbWVycyk7XG4gIH1cblxuICBnZXRNb25vbWVyTW9sc0J5VHlwZSh0eXBlOiBzdHJpbmcpOiB7W3N5bWJvbDogc3RyaW5nXTogc3RyaW5nfSB7XG4gICAgbGV0IHJlczoge1tzeW1ib2w6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcblxuICAgIE9iamVjdC5rZXlzKHRoaXMuX21vbm9tZXJzW3R5cGVdKS5mb3JFYWNoKG1vbm9tZXJTeW1ib2wgPT4ge1xuICAgICAgcmVzW21vbm9tZXJTeW1ib2xdID0gdGhpcy5fbW9ub21lcnNbdHlwZV1bbW9ub21lclN5bWJvbF0ubW9sZmlsZTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBnZXRNb25vbWVyTmFtZXNCeVR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9tb25vbWVyc1t0eXBlXSk7XG4gIH1cblxuICBnZXQgb25DaGFuZ2VkKCk6IE9ic2VydmFibGU8YW55PiB7IFxuICAgIHJldHVybiB0aGlzLl9vbkNoYW5nZWQ7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKGxpYjogSU1vbm9tZXJMaWIpOiB2b2lkIHtcbiAgICBjb25zdCB0eXBlc05ldyA9IGxpYi5nZXRUeXBlcygpO1xuICAgIGNvbnN0IHR5cGVzID0gdGhpcy5nZXRUeXBlcygpO1xuXG4gICAgdHlwZXNOZXcuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgIC8vY291bGQgcG9zc2libHkgcmV3cml0ZSAtPiBUT0RPOiBjaGVjayBkdXBsaWNhdGVkIG1vbm9tZXIgc3ltYm9sXG5cbiAgICAgIGlmICghdHlwZXMuaW5jbHVkZXModHlwZSkpXG4gICAgICAgIHRoaXMuX21vbm9tZXJzIVt0eXBlXSA9IHt9O1xuXG4gICAgICBjb25zdCBtb25vbWVycyA9IGxpYi5nZXRNb25vbWVyTmFtZXNCeVR5cGUodHlwZSk7XG4gICAgICBPYmplY3Qua2V5cyhtb25vbWVycykuZm9yRWFjaChtb25vbWVyTmFtZSA9PntcbiAgICAgICAgdGhpcy5fbW9ub21lcnNbdHlwZV1bbW9ub21lck5hbWVdID0gbGliLmdldE1vbm9tZXIodHlwZSwgbW9ub21lck5hbWUpITtcbiAgICAgIH0pXG4gICAgfSk7XG5cbiAgICB0aGlzLl9vbkNoYW5nZWQubmV4dCgpO1xuICB9XG59XG4iXX0=
@@ -1,5 +1,6 @@
1
1
  import * as DG from 'datagrok-api/dg';
2
- export declare const HELM_CORE_LIB_FILENAME = "/data/HELMCoreLibrary.json";
2
+ import { MonomerLib } from './monomer-lib';
3
+ export declare function readLibrary(path: string, fileName: string): Promise<MonomerLib>;
3
4
  export declare function encodeMonomers(col: DG.Column): DG.Column | null;
4
5
  export declare function getMolfilesFromSeq(col: DG.Column, monomersLibObject: any[]): any[][] | null;
5
6
  export declare function getMolfilesFromSingleSeq(cell: DG.Cell, monomersLibObject: any[]): any[][] | null;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monomer-utils.d.ts","sourceRoot":"","sources":["monomer-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAStC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAI3C,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAiDrF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAwB/D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAuB3F;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAoBhG;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAA;CAAE,CAYjF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,GAAG,GAAG,CA8BpE"}
@@ -0,0 +1,181 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ // import * as ui from 'datagrok-api/ui';
11
+ import * as DG from 'datagrok-api/dg';
12
+ import * as grok from 'datagrok-api/grok';
13
+ import { HELM_CORE_FIELDS, jsonSdfMonomerLibDict, MONOMER_ENCODE_MAX, MONOMER_ENCODE_MIN, SDF_MONOMER_NAME } from '../utils/const';
14
+ import { getSplitter } from '../utils/macromolecule';
15
+ import { MonomerLib } from './monomer-lib';
16
+ const expectedMonomerData = ['symbol', 'name', 'molfile', 'rgroups', 'polymerType', 'monomerType'];
17
+ export function readLibrary(path, fileName) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ let data = [];
20
+ let file;
21
+ let dfSdf;
22
+ let fileSource = new DG.FileSource(path);
23
+ if (fileName.endsWith('.sdf')) {
24
+ const funcList = DG.Func.find({ package: 'Chem', name: 'importSdf' });
25
+ if (funcList.length === 1) {
26
+ file = yield fileSource.readAsBytes(fileName);
27
+ dfSdf = yield grok.functions.call('Chem:importSdf', { bytes: file });
28
+ data = createJsonMonomerLibFromSdf(dfSdf[0]);
29
+ }
30
+ else {
31
+ grok.shell.warning('Chem package is not installed');
32
+ }
33
+ }
34
+ else {
35
+ const file = yield fileSource.readAsText(fileName);
36
+ data = JSON.parse(file);
37
+ }
38
+ let monomers = {};
39
+ const types = [];
40
+ //group monomers by their type
41
+ data.forEach(monomer => {
42
+ let monomerAdd = {
43
+ 'symbol': monomer['symbol'],
44
+ 'name': monomer['name'],
45
+ 'naturalAnalog': monomer['naturalAnalog'],
46
+ 'molfile': monomer['molfile'],
47
+ 'rgroups': monomer['rgroups'],
48
+ 'polymerType': monomer['polymerType'],
49
+ 'monomerType': monomer['monomerType'],
50
+ 'data': {}
51
+ };
52
+ Object.keys(monomer).forEach(prop => {
53
+ if (!expectedMonomerData.includes(prop))
54
+ monomerAdd.data[prop] = monomer[prop];
55
+ });
56
+ if (!types.includes(monomer['polymerType'])) {
57
+ monomers[monomer['polymerType']] = {};
58
+ types.push(monomer['polymerType']);
59
+ }
60
+ monomers[monomer['polymerType']][monomer['symbol']] = monomerAdd;
61
+ });
62
+ return new MonomerLib(monomers);
63
+ });
64
+ }
65
+ export function encodeMonomers(col) {
66
+ let encodeSymbol = MONOMER_ENCODE_MIN;
67
+ const monomerSymbolDict = {};
68
+ const units = col.tags[DG.TAGS.UNITS];
69
+ const sep = col.getTag("separator" /* TAGS.separator */);
70
+ const splitterFunc = getSplitter(units, sep);
71
+ const encodedStringArray = [];
72
+ for (let i = 0; i < col.length; ++i) {
73
+ let encodedMonomerStr = '';
74
+ const monomers = splitterFunc(col.get(i));
75
+ monomers.forEach((m) => {
76
+ if (!monomerSymbolDict[m]) {
77
+ if (encodeSymbol > MONOMER_ENCODE_MAX) {
78
+ grok.shell.error(`Not enough symbols to encode monomers`);
79
+ return null;
80
+ }
81
+ monomerSymbolDict[m] = encodeSymbol;
82
+ encodeSymbol++;
83
+ }
84
+ encodedMonomerStr += String.fromCodePoint(monomerSymbolDict[m]);
85
+ });
86
+ encodedStringArray.push(encodedMonomerStr);
87
+ }
88
+ return DG.Column.fromStrings('encodedMolecules', encodedStringArray);
89
+ }
90
+ export function getMolfilesFromSeq(col, monomersLibObject) {
91
+ const units = col.tags[DG.TAGS.UNITS];
92
+ const sep = col.getTag('separator');
93
+ const splitterFunc = getSplitter(units, sep);
94
+ const monomersDict = createMomomersMolDict(monomersLibObject);
95
+ const molFiles = [];
96
+ for (let i = 0; i < col.length; ++i) {
97
+ const macroMolecule = col.get(i);
98
+ const monomers = splitterFunc(macroMolecule);
99
+ const molFilesForSeq = [];
100
+ for (let j = 0; j < monomers.length; ++j) {
101
+ if (monomers[j]) {
102
+ if (!monomersDict[monomers[j]]) {
103
+ grok.shell.warning(`Monomer ${monomers[j]} is missing in HELM library. Structure cannot be created`);
104
+ return null;
105
+ }
106
+ // what is the reason of double conversion?
107
+ molFilesForSeq.push(JSON.parse(JSON.stringify(monomersDict[monomers[j]])));
108
+ }
109
+ }
110
+ molFiles.push(molFilesForSeq);
111
+ }
112
+ return molFiles;
113
+ }
114
+ export function getMolfilesFromSingleSeq(cell, monomersLibObject) {
115
+ const units = cell.column.tags[DG.TAGS.UNITS];
116
+ const sep = cell.column.getTag('separator');
117
+ const splitterFunc = getSplitter(units, sep);
118
+ const monomersDict = createMomomersMolDict(monomersLibObject);
119
+ const molFiles = [];
120
+ const macroMolecule = cell.value;
121
+ const monomers = splitterFunc(macroMolecule);
122
+ const molFilesForSeq = [];
123
+ for (let j = 0; j < monomers.length; ++j) {
124
+ if (monomers[j]) {
125
+ if (!monomersDict[monomers[j]]) {
126
+ grok.shell.warning(`Monomer ${monomers[j]} is missing in HELM library. Structure cannot be created`);
127
+ return null;
128
+ }
129
+ molFilesForSeq.push(JSON.parse(JSON.stringify(monomersDict[monomers[j]])));
130
+ }
131
+ }
132
+ molFiles.push(molFilesForSeq);
133
+ return molFiles;
134
+ }
135
+ export function createMomomersMolDict(lib) {
136
+ const dict = {};
137
+ lib.forEach((it) => {
138
+ if (it['polymerType'] === 'PEPTIDE') {
139
+ const monomerObject = {};
140
+ HELM_CORE_FIELDS.forEach((field) => {
141
+ monomerObject[field] = it[field];
142
+ });
143
+ dict[it["symbol" /* HELM_FIELDS.SYMBOL */]] = monomerObject;
144
+ }
145
+ });
146
+ return dict;
147
+ }
148
+ export function createJsonMonomerLibFromSdf(table) {
149
+ const resultLib = [];
150
+ for (let i = 0; i < table.rowCount; i++) {
151
+ const monomer = {};
152
+ Object.keys(jsonSdfMonomerLibDict).forEach((key) => {
153
+ if (key === "symbol" /* HELM_FIELDS.SYMBOL */) {
154
+ const monomerSymbol = table.get(jsonSdfMonomerLibDict[key], i);
155
+ monomer[key] = monomerSymbol === '.' ? table.get(SDF_MONOMER_NAME, i) : monomerSymbol;
156
+ }
157
+ else if (key === "rgroups" /* HELM_FIELDS.RGROUPS */) {
158
+ const rgroups = table.get(jsonSdfMonomerLibDict[key], i).split('\n');
159
+ const jsonRgroups = [];
160
+ rgroups.forEach((g) => {
161
+ const rgroup = {};
162
+ const altAtom = g.substring(g.lastIndexOf(']') + 1);
163
+ const radicalNum = g.match(/\[R(\d+)\]/)[1];
164
+ rgroup["capGroupSmiles" /* RGROUP_FIELDS.CAP_GROUP_SMILES */] = altAtom === 'H' ? `[*:${radicalNum}][H]` : `O[*:${radicalNum}]`;
165
+ rgroup["alternateId" /* RGROUP_FIELDS.ALTER_ID */] = altAtom === 'H' ? `R${radicalNum}-H` : `R${radicalNum}-OH`;
166
+ rgroup["capGroupName" /* RGROUP_FIELDS.CAP_GROUP_NAME */] = altAtom === 'H' ? `H` : `OH`;
167
+ rgroup["label" /* RGROUP_FIELDS.LABEL */] = `R${radicalNum}`;
168
+ jsonRgroups.push(rgroup);
169
+ });
170
+ monomer[key] = jsonRgroups;
171
+ }
172
+ else {
173
+ if (jsonSdfMonomerLibDict[key])
174
+ monomer[key] = table.get(jsonSdfMonomerLibDict[key], i);
175
+ }
176
+ });
177
+ resultLib.push(monomer);
178
+ }
179
+ return resultLib;
180
+ }
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub21lci11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1vbm9tZXItdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEseUNBQXlDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLEVBQ1EsZ0JBQWdCLEVBQWlCLHFCQUFxQixFQUNuRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFDekQsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUMsV0FBVyxFQUFxQixNQUFNLHdCQUF3QixDQUFDO0FBRXZFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFFbkcsTUFBTSxVQUFnQixXQUFXLENBQUMsSUFBWSxFQUFFLFFBQWdCOztRQUM5RCxJQUFJLElBQUksR0FBVSxFQUFFLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUM7UUFDVCxJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksVUFBVSxHQUFHLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDN0IsTUFBTSxRQUFRLEdBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDO1lBQy9FLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBRXpCLElBQUksR0FBRyxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFD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Q0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuaW1wb3J0ICogYXMgZ3JvayBmcm9tICdkYXRhZ3Jvay1hcGkvZ3Jvayc7XG5cbmltcG9ydCB7XG4gIEhFTE1fRklFTERTLCBIRUxNX0NPUkVfRklFTERTLCBSR1JPVVBfRklFTERTLCBqc29uU2RmTW9ub21lckxpYkRpY3QsXG4gIE1PTk9NRVJfRU5DT0RFX01BWCwgTU9OT01FUl9FTkNPREVfTUlOLCBTREZfTU9OT01FUl9OQU1FXG59IGZyb20gJy4uL3V0aWxzL2NvbnN0JztcbmltcG9ydCB7Z2V0U3BsaXR0ZXIsIFNwbGl0dGVyRnVuYywgVEFHU30gZnJvbSAnLi4vdXRpbHMvbWFjcm9tb2xlY3VsZSc7XG5pbXBvcnQge01vbm9tZXJ9IGZyb20gJy4uL3R5cGVzL2luZGV4JztcbmltcG9ydCB7IE1vbm9tZXJMaWIgfSBmcm9tICcuL21vbm9tZXItbGliJztcblxuY29uc3QgZXhwZWN0ZWRNb25vbWVyRGF0YSA9IFsnc3ltYm9sJywgJ25hbWUnLCAnbW9sZmlsZScsICdyZ3JvdXBzJywgJ3BvbHltZXJUeXBlJywgJ21vbm9tZXJUeXBlJ107XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkTGlicmFyeShwYXRoOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPE1vbm9tZXJMaWI+IHtcbiAgbGV0IGRhdGE6IGFueVtdID0gW107XG4gIGxldCBmaWxlO1xuICBsZXQgZGZTZGY7XG4gIGxldCBmaWxlU291cmNlID0gbmV3IERHLkZpbGVTb3VyY2UocGF0aCk7XG4gIGlmIChmaWxlTmFtZS5lbmRzV2l0aCgnLnNkZicpKSB7XG4gICAgY29uc3QgZnVuY0xpc3Q6IERHLkZ1bmNbXSA9IERHLkZ1bmMuZmluZCh7cGFja2FnZTogJ0NoZW0nLCBuYW1lOiAnaW1wb3J0U2RmJ30pO1xuICAgIGlmIChmdW5jTGlzdC5sZW5ndGggPT09IDEpIHtcblxuICAgICAgZmlsZSA9IGF3YWl0IGZpbGVTb3VyY2UucmVhZEFzQnl0ZXMoZmlsZU5hbWUpO1xuICAgICAgZGZTZGYgPSBhd2FpdCBncm9rLmZ1bmN0aW9ucy5jYWxsKCdDaGVtOmltcG9ydFNkZicsIHtieXRlczogZmlsZX0pO1xuICAgICAgZGF0YSA9IGNyZWF0ZUpzb25Nb25vbWVyTGliRnJvbVNkZihkZlNkZlswXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdyb2suc2hlbGwud2FybmluZygnQ2hlbSBwYWNrYWdlIGlzIG5vdCBpbnN0YWxsZWQnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZmlsZSA9IGF3YWl0IGZpbGVTb3VyY2UucmVhZEFzVGV4dChmaWxlTmFtZSk7XG4gICAgZGF0YSA9IEpTT04ucGFyc2UoZmlsZSk7XG4gIH1cblxuICBsZXQgbW9ub21lcnM6IHsgW3R5cGU6IHN0cmluZ106IHsgW25hbWU6IHN0cmluZ106IE1vbm9tZXIgfSB9ID0ge307XG4gIGNvbnN0IHR5cGVzOiBzdHJpbmdbXSA9IFtdO1xuICAvL2dyb3VwIG1vbm9tZXJzIGJ5IHRoZWlyIHR5cGVcbiAgZGF0YS5mb3JFYWNoKG1vbm9tZXIgPT4ge1xuICAgIGxldCBtb25vbWVyQWRkOiBNb25vbWVyID0ge1xuICAgICAgJ3N5bWJvbCc6IG1vbm9tZXJbJ3N5bWJvbCddLFxuICAgICAgJ25hbWUnOiBtb25vbWVyWyduYW1lJ10sXG4gICAgICAnbmF0dXJhbEFuYWxvZyc6IG1vbm9tZXJbJ25hdHVyYWxBbmFsb2cnXSxcbiAgICAgICdtb2xmaWxlJzogbW9ub21lclsnbW9sZmlsZSddLFxuICAgICAgJ3Jncm91cHMnOiBtb25vbWVyWydyZ3JvdXBzJ10sXG4gICAgICAncG9seW1lclR5cGUnOiBtb25vbWVyWydwb2x5bWVyVHlwZSddLFxuICAgICAgJ21vbm9tZXJUeXBlJzogbW9ub21lclsnbW9ub21lclR5cGUnXSxcbiAgICAgICdkYXRhJzoge31cbiAgICB9O1xuXG4gICAgT2JqZWN0LmtleXMobW9ub21lcikuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgIGlmICghZXhwZWN0ZWRNb25vbWVyRGF0YS5pbmNsdWRlcyhwcm9wKSlcbiAgICAgICAgbW9ub21lckFkZC5kYXRhW3Byb3BdID0gbW9ub21lcltwcm9wXTtcbiAgICB9KTtcbiAgICBcbiAgICBpZiAoIXR5cGVzLmluY2x1ZGVzKG1vbm9tZXJbJ3BvbHltZXJUeXBlJ10pKSB7XG4gICAgICBtb25vbWVyc1ttb25vbWVyWydwb2x5bWVyVHlwZSddXSA9IHt9O1xuICAgICAgdHlwZXMucHVzaChtb25vbWVyWydwb2x5bWVyVHlwZSddKTtcbiAgICB9IFxuXG4gICAgbW9ub21lcnNbbW9ub21lclsncG9seW1lclR5cGUnXV1bbW9ub21lclsnc3ltYm9sJ11dID0gbW9ub21lckFkZDtcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBNb25vbWVyTGliKG1vbm9tZXJzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZU1vbm9tZXJzKGNvbDogREcuQ29sdW1uKTogREcuQ29sdW1uIHwgbnVsbCB7XG4gIGxldCBlbmNvZGVTeW1ib2wgPSBNT05PTUVSX0VOQ09ERV9NSU47XG4gIGNvbnN0IG1vbm9tZXJTeW1ib2xEaWN0OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gIGNvbnN0IHVuaXRzID0gY29sLnRhZ3NbREcuVEFHUy5VTklUU107XG4gIGNvbnN0IHNlcCA9IGNvbC5nZXRUYWcoVEFHUy5zZXBhcmF0b3IpO1xuICBjb25zdCBzcGxpdHRlckZ1bmM6IFNwbGl0dGVyRnVuYyA9IGdldFNwbGl0dGVyKHVuaXRzLCBzZXApO1xuICBjb25zdCBlbmNvZGVkU3RyaW5nQXJyYXkgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2wubGVuZ3RoOyArK2kpIHtcbiAgICBsZXQgZW5jb2RlZE1vbm9tZXJTdHIgPSAnJztcbiAgICBjb25zdCBtb25vbWVycyA9IHNwbGl0dGVyRnVuYyhjb2wuZ2V0KGkpKTtcbiAgICBtb25vbWVycy5mb3JFYWNoKChtKSA9PiB7XG4gICAgICBpZiAoIW1vbm9tZXJTeW1ib2xEaWN0W21dKSB7XG4gICAgICAgIGlmIChlbmNvZGVTeW1ib2wgPiBNT05PTUVSX0VOQ09ERV9NQVgpIHtcbiAgICAgICAgICBncm9rLnNoZWxsLmVycm9yKGBOb3QgZW5vdWdoIHN5bWJvbHMgdG8gZW5jb2RlIG1vbm9tZXJzYCk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbW9ub21lclN5bWJvbERpY3RbbV0gPSBlbmNvZGVTeW1ib2w7XG4gICAgICAgIGVuY29kZVN5bWJvbCsrO1xuICAgICAgfVxuICAgICAgZW5jb2RlZE1vbm9tZXJTdHIgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQobW9ub21lclN5bWJvbERpY3RbbV0pO1xuICAgIH0pO1xuICAgIGVuY29kZWRTdHJpbmdBcnJheS5wdXNoKGVuY29kZWRNb25vbWVyU3RyKTtcbiAgfVxuICByZXR1cm4gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdlbmNvZGVkTW9sZWN1bGVzJywgZW5jb2RlZFN0cmluZ0FycmF5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbGZpbGVzRnJvbVNlcShjb2w6IERHLkNvbHVtbiwgbW9ub21lcnNMaWJPYmplY3Q6IGFueVtdKTogYW55W11bXSB8IG51bGwge1xuICBjb25zdCB1bml0cyA9IGNvbC50YWdzW0RHLlRBR1MuVU5JVFNdO1xuICBjb25zdCBzZXAgPSBjb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgY29uc3Qgc3BsaXR0ZXJGdW5jOiBTcGxpdHRlckZ1bmMgPSBnZXRTcGxpdHRlcih1bml0cywgc2VwKTtcbiAgY29uc3QgbW9ub21lcnNEaWN0ID0gY3JlYXRlTW9tb21lcnNNb2xEaWN0KG1vbm9tZXJzTGliT2JqZWN0KTtcbiAgY29uc3QgbW9sRmlsZXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2wubGVuZ3RoOyArK2kpIHtcbiAgICBjb25zdCBtYWNyb01vbGVjdWxlID0gY29sLmdldChpKTtcbiAgICBjb25zdCBtb25vbWVycyA9IHNwbGl0dGVyRnVuYyhtYWNyb01vbGVjdWxlKTtcbiAgICBjb25zdCBtb2xGaWxlc0ZvclNlcSA9IFtdO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbW9ub21lcnMubGVuZ3RoOyArK2opIHtcbiAgICAgIGlmIChtb25vbWVyc1tqXSkge1xuICAgICAgICBpZiAoIW1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pIHtcbiAgICAgICAgICBncm9rLnNoZWxsLndhcm5pbmcoYE1vbm9tZXIgJHttb25vbWVyc1tqXX0gaXMgbWlzc2luZyBpbiBIRUxNIGxpYnJhcnkuIFN0cnVjdHVyZSBjYW5ub3QgYmUgY3JlYXRlZGApO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vIHdoYXQgaXMgdGhlIHJlYXNvbiBvZiBkb3VibGUgY29udmVyc2lvbj9cbiAgICAgICAgbW9sRmlsZXNGb3JTZXEucHVzaChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pKSk7XG4gICAgICB9XG4gICAgfVxuICAgIG1vbEZpbGVzLnB1c2gobW9sRmlsZXNGb3JTZXEpO1xuICB9XG4gIHJldHVybiBtb2xGaWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbGZpbGVzRnJvbVNpbmdsZVNlcShjZWxsOiBERy5DZWxsLCBtb25vbWVyc0xpYk9iamVjdDogYW55W10pOiBhbnlbXVtdIHwgbnVsbCB7XG4gIGNvbnN0IHVuaXRzID0gY2VsbC5jb2x1bW4udGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgY29uc3Qgc2VwID0gY2VsbC5jb2x1bW4hLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gIGNvbnN0IHNwbGl0dGVyRnVuYzogU3BsaXR0ZXJGdW5jID0gZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcCk7XG4gIGNvbnN0IG1vbm9tZXJzRGljdCA9IGNyZWF0ZU1vbW9tZXJzTW9sRGljdChtb25vbWVyc0xpYk9iamVjdCk7XG4gIGNvbnN0IG1vbEZpbGVzID0gW107XG4gIGNvbnN0IG1hY3JvTW9sZWN1bGUgPSBjZWxsLnZhbHVlO1xuICBjb25zdCBtb25vbWVycyA9IHNwbGl0dGVyRnVuYyhtYWNyb01vbGVjdWxlKTtcbiAgY29uc3QgbW9sRmlsZXNGb3JTZXEgPSBbXTtcbiAgZm9yIChsZXQgaiA9IDA7IGogPCBtb25vbWVycy5sZW5ndGg7ICsraikge1xuICAgIGlmIChtb25vbWVyc1tqXSkge1xuICAgICAgaWYgKCFtb25vbWVyc0RpY3RbbW9ub21lcnNbal1dKSB7XG4gICAgICAgIGdyb2suc2hlbGwud2FybmluZyhgTW9ub21lciAke21vbm9tZXJzW2pdfSBpcyBtaXNzaW5nIGluIEhFTE0gbGlicmFyeS4gU3RydWN0dXJlIGNhbm5vdCBiZSBjcmVhdGVkYCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgbW9sRmlsZXNGb3JTZXEucHVzaChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pKSk7XG4gICAgfVxuICB9XG4gIG1vbEZpbGVzLnB1c2gobW9sRmlsZXNGb3JTZXEpO1xuICByZXR1cm4gbW9sRmlsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb21vbWVyc01vbERpY3QobGliOiBhbnlbXSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0ge1xuICBjb25zdCBkaWN0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGFueSB9ID0ge307XG4gIGxpYi5mb3JFYWNoKChpdCkgPT4ge1xuICAgIGlmIChpdFsncG9seW1lclR5cGUnXSA9PT0gJ1BFUFRJREUnKSB7XG4gICAgICBjb25zdCBtb25vbWVyT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICBIRUxNX0NPUkVfRklFTERTLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgIG1vbm9tZXJPYmplY3RbZmllbGRdID0gaXRbZmllbGRdO1xuICAgICAgfSk7XG4gICAgICBkaWN0W2l0W0hFTE1fRklFTERTLlNZTUJPTF1dID0gbW9ub21lck9iamVjdDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGljdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUpzb25Nb25vbWVyTGliRnJvbVNkZih0YWJsZTogREcuRGF0YUZyYW1lKTogYW55IHtcbiAgY29uc3QgcmVzdWx0TGliID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGFibGUucm93Q291bnQ7IGkrKykge1xuICAgIGNvbnN0IG1vbm9tZXI6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0gPSB7fTtcbiAgICBPYmplY3Qua2V5cyhqc29uU2RmTW9ub21lckxpYkRpY3QpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gSEVMTV9GSUVMRFMuU1lNQk9MKSB7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJTeW1ib2wgPSB0YWJsZS5nZXQoanNvblNkZk1vbm9tZXJMaWJEaWN0W2tleV0sIGkpO1xuICAgICAgICBtb25vbWVyW2tleV0gPSBtb25vbWVyU3ltYm9sID09PSAnLicgPyB0YWJsZS5nZXQoU0RGX01PTk9NRVJfTkFNRSwgaSkgOiBtb25vbWVyU3ltYm9sO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEhFTE1fRklFTERTLlJHUk9VUFMpIHtcbiAgICAgICAgY29uc3Qgcmdyb3VwcyA9IHRhYmxlLmdldChqc29uU2RmTW9ub21lckxpYkRpY3Rba2V5XSwgaSkuc3BsaXQoJ1xcbicpO1xuICAgICAgICBjb25zdCBqc29uUmdyb3VwczogYW55W10gPSBbXTtcbiAgICAgICAgcmdyb3Vwcy5mb3JFYWNoKChnOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBjb25zdCByZ3JvdXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0gPSB7fTtcbiAgICAgICAgICBjb25zdCBhbHRBdG9tID0gZy5zdWJzdHJpbmcoZy5sYXN0SW5kZXhPZignXScpICsgMSk7XG4gICAgICAgICAgY29uc3QgcmFkaWNhbE51bSA9IGcubWF0Y2goL1xcW1IoXFxkKylcXF0vKSFbMV07XG4gICAgICAgICAgcmdyb3VwW1JHUk9VUF9GSUVMRFMuQ0FQX0dST1VQX1NNSUxFU10gPSBhbHRBdG9tID09PSAnSCcgPyBgWyo6JHtyYWRpY2FsTnVtfV1bSF1gIDogYE9bKjoke3JhZGljYWxOdW19XWA7XG4gICAgICAgICAgcmdyb3VwW1JHUk9VUF9GSUVMRFMuQUxURVJfSURdID0gYWx0QXRvbSA9PT0gJ0gnID8gYFIke3JhZGljYWxOdW19LUhgIDogYFIke3JhZGljYWxOdW19LU9IYDtcbiAgICAgICAgICByZ3JvdXBbUkdST1VQX0ZJRUxEUy5DQVBfR1JPVVBfTkFNRV0gPSBhbHRBdG9tID09PSAnSCcgPyBgSGAgOiBgT0hgO1xuICAgICAgICAgIHJncm91cFtSR1JPVVBfRklFTERTLkxBQkVMXSA9IGBSJHtyYWRpY2FsTnVtfWA7XG4gICAgICAgICAganNvblJncm91cHMucHVzaChyZ3JvdXApO1xuICAgICAgICB9KTtcbiAgICAgICAgbW9ub21lcltrZXldID0ganNvblJncm91cHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoKGpzb25TZGZNb25vbWVyTGliRGljdCBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGFueSB9KVtrZXldKVxuICAgICAgICAgIG1vbm9tZXJba2V5XSA9IHRhYmxlLmdldCgoanNvblNkZk1vbm9tZXJMaWJEaWN0IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0pW2tleV0sIGkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJlc3VsdExpYi5wdXNoKG1vbm9tZXIpO1xuICB9XG4gIHJldHVybiByZXN1bHRMaWI7XG59XG4iXX0=
@@ -28,15 +28,12 @@ export declare type Monomer = {
28
28
  };
29
29
  export interface IMonomerLib {
30
30
  getMonomer(monomerType: string, monomerName: string): Monomer | null;
31
- getMonomersByType(type: string): {
31
+ getMonomerMolsByType(type: string): {
32
32
  [symbol: string]: string;
33
33
  } | null;
34
+ getMonomerNamesByType(type: string): string[];
34
35
  getTypes(): string[];
35
- update(monomers: {
36
- [type: string]: {
37
- [name: string]: Monomer;
38
- };
39
- }): void;
36
+ update(lib: IMonomerLib): void;
40
37
  get onChanged(): Observable<any>;
41
38
  }
42
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AAIhC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,QAAQ,WAEpC;AAED,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC7B;AAED,oBAAY,OAAO,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/F,IAAI,EAAE;QAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAA;CAChC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACrE,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IACnE,QAAQ,IAAI,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,QAAQ,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG;YAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACxE,IAAI,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;CAClC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,UAAU,EAAC,MAAM,MAAM,CAAC;AAIhC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,QAAQ,WAEpC;AAED,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC7B;AAED,oBAAY,OAAO,GAAG;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/F,IAAI,EAAE;QAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAA;KAAC,CAAA;CAChC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACrE,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,GAAG,IAAI,CAAC;IACtE,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9C,QAAQ,IAAI,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,IAAI,SAAS,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;CAClC"}
@@ -2,4 +2,4 @@
2
2
  export function isLeaf(node) {
3
3
  return !node.children || node.children.length == 0;
4
4
  }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFZeEQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxJQUFjO0lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHtOb2RlVHlwZX0gZnJvbSAnQHBoeWxvY2FudmFzL3BoeWxvY2FudmFzLmdsJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuXG4vKiBJbnRlcmZhY2UgZm9yIGhpZXJhcmNoaWNhbCBkYXRhIHN0cnVjdHVyZSByZXR1cm5lZCBieSBOZXdpY2sucGFyc2VfbmV3aWNrICovXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVUeXBlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBicmFuY2hfbGVuZ3RoPzogbnVtYmVyO1xuICBjaGlsZHJlbj86IE5vZGVUeXBlW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlYWYobm9kZTogTm9kZVR5cGUpIHtcbiAgcmV0dXJuICFub2RlLmNoaWxkcmVuIHx8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09IDA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZUN1dHRlZFR5cGUgZXh0ZW5kcyBOb2RlVHlwZSB7XG4gIGN1dHRlZExlYWZOYW1lTGlzdDogc3RyaW5nW107XG4gIGN1dHRlZENoaWxkcmVuPzogTm9kZVR5cGVbXTtcbn1cblxuZXhwb3J0IHR5cGUgTW9ub21lciA9IHtcbiAgc3ltYm9sOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbiAgbmF0dXJhbEFuYWxvZzogc3RyaW5nLFxuICBtb2xmaWxlOiBzdHJpbmcsXG4gIHBvbHltZXJUeXBlOiBzdHJpbmcsXG4gIG1vbm9tZXJUeXBlOiBzdHJpbmcsXG4gIHJncm91cHM6IHtjYXBHcm91cFNtaWxlczogc3RyaW5nLCBhbHRlcm5hdGVJZDogc3RyaW5nLCBjYXBHcm91cE5hbWU6IHN0cmluZywgbGFiZWw6IHN0cmluZyB9W10sXG4gIGRhdGE6IHtbcHJvcGVydHk6IHN0cmluZ106IGFueX1cbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1vbm9tZXJMaWIge1xuICBnZXRNb25vbWVyKG1vbm9tZXJUeXBlOiBzdHJpbmcsIG1vbm9tZXJOYW1lOiBzdHJpbmcpOiBNb25vbWVyIHwgbnVsbDtcbiAgZ2V0TW9ub21lcnNCeVR5cGUodHlwZTogc3RyaW5nKToge1tzeW1ib2w6IHN0cmluZ106IHN0cmluZ30gfCBudWxsO1xuICBnZXRUeXBlcygpOiBzdHJpbmdbXTtcbiAgdXBkYXRlKG1vbm9tZXJzOiB7IFt0eXBlOiBzdHJpbmddOiB7IFtuYW1lOiBzdHJpbmddOiBNb25vbWVyIH0gfSk6IHZvaWQ7XG4gIGdldCBvbkNoYW5nZWQoKTogT2JzZXJ2YWJsZTxhbnk+O1xufVxuIl19
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx3REFBd0Q7QUFZeEQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxJQUFjO0lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQztBQUNyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0IHtOb2RlVHlwZX0gZnJvbSAnQHBoeWxvY2FudmFzL3BoeWxvY2FudmFzLmdsJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuXG4vKiBJbnRlcmZhY2UgZm9yIGhpZXJhcmNoaWNhbCBkYXRhIHN0cnVjdHVyZSByZXR1cm5lZCBieSBOZXdpY2sucGFyc2VfbmV3aWNrICovXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVUeXBlIHtcbiAgbmFtZTogc3RyaW5nO1xuICBicmFuY2hfbGVuZ3RoPzogbnVtYmVyO1xuICBjaGlsZHJlbj86IE5vZGVUeXBlW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlYWYobm9kZTogTm9kZVR5cGUpIHtcbiAgcmV0dXJuICFub2RlLmNoaWxkcmVuIHx8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoID09IDA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZUN1dHRlZFR5cGUgZXh0ZW5kcyBOb2RlVHlwZSB7XG4gIGN1dHRlZExlYWZOYW1lTGlzdDogc3RyaW5nW107XG4gIGN1dHRlZENoaWxkcmVuPzogTm9kZVR5cGVbXTtcbn1cblxuZXhwb3J0IHR5cGUgTW9ub21lciA9IHtcbiAgc3ltYm9sOiBzdHJpbmcsXG4gIG5hbWU6IHN0cmluZyxcbiAgbmF0dXJhbEFuYWxvZzogc3RyaW5nLFxuICBtb2xmaWxlOiBzdHJpbmcsXG4gIHBvbHltZXJUeXBlOiBzdHJpbmcsXG4gIG1vbm9tZXJUeXBlOiBzdHJpbmcsXG4gIHJncm91cHM6IHtjYXBHcm91cFNtaWxlczogc3RyaW5nLCBhbHRlcm5hdGVJZDogc3RyaW5nLCBjYXBHcm91cE5hbWU6IHN0cmluZywgbGFiZWw6IHN0cmluZyB9W10sXG4gIGRhdGE6IHtbcHJvcGVydHk6IHN0cmluZ106IGFueX1cbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU1vbm9tZXJMaWIge1xuICBnZXRNb25vbWVyKG1vbm9tZXJUeXBlOiBzdHJpbmcsIG1vbm9tZXJOYW1lOiBzdHJpbmcpOiBNb25vbWVyIHwgbnVsbDtcbiAgZ2V0TW9ub21lck1vbHNCeVR5cGUodHlwZTogc3RyaW5nKToge1tzeW1ib2w6IHN0cmluZ106IHN0cmluZ30gfCBudWxsO1xuICBnZXRNb25vbWVyTmFtZXNCeVR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nW107XG4gIGdldFR5cGVzKCk6IHN0cmluZ1tdO1xuICB1cGRhdGUobGliOiBJTW9ub21lckxpYik6IHZvaWQ7XG4gIGdldCBvbkNoYW5nZWQoKTogT2JzZXJ2YWJsZTxhbnk+O1xufVxuIl19
@@ -1 +0,0 @@
1
- {"version":3,"file":"monomer-utils.d.ts","sourceRoot":"","sources":["monomer-utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAStC,eAAO,MAAM,sBAAsB,+BAA+B,CAAC;AAEnE,wBAAgB,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,IAAI,CAwB/D;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAuB3F;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,IAAI,CAoBhG;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAA;CAAE,CAYjF;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,GAAG,GAAG,CA8BpE"}
@@ -1,123 +0,0 @@
1
- // import * as ui from 'datagrok-api/ui';
2
- import * as DG from 'datagrok-api/dg';
3
- import * as grok from 'datagrok-api/grok';
4
- import { HELM_CORE_FIELDS, jsonSdfMonomerLibDict, MONOMER_ENCODE_MAX, MONOMER_ENCODE_MIN, SDF_MONOMER_NAME } from './const';
5
- import { getSplitter } from './macromolecule';
6
- export const HELM_CORE_LIB_FILENAME = '/data/HELMCoreLibrary.json';
7
- export function encodeMonomers(col) {
8
- let encodeSymbol = MONOMER_ENCODE_MIN;
9
- const monomerSymbolDict = {};
10
- const units = col.tags[DG.TAGS.UNITS];
11
- const sep = col.getTag("separator" /* TAGS.separator */);
12
- const splitterFunc = getSplitter(units, sep);
13
- const encodedStringArray = [];
14
- for (let i = 0; i < col.length; ++i) {
15
- let encodedMonomerStr = '';
16
- const monomers = splitterFunc(col.get(i));
17
- monomers.forEach((m) => {
18
- if (!monomerSymbolDict[m]) {
19
- if (encodeSymbol > MONOMER_ENCODE_MAX) {
20
- grok.shell.error(`Not enough symbols to encode monomers`);
21
- return null;
22
- }
23
- monomerSymbolDict[m] = encodeSymbol;
24
- encodeSymbol++;
25
- }
26
- encodedMonomerStr += String.fromCodePoint(monomerSymbolDict[m]);
27
- });
28
- encodedStringArray.push(encodedMonomerStr);
29
- }
30
- return DG.Column.fromStrings('encodedMolecules', encodedStringArray);
31
- }
32
- export function getMolfilesFromSeq(col, monomersLibObject) {
33
- const units = col.tags[DG.TAGS.UNITS];
34
- const sep = col.getTag('separator');
35
- const splitterFunc = getSplitter(units, sep);
36
- const monomersDict = createMomomersMolDict(monomersLibObject);
37
- const molFiles = [];
38
- for (let i = 0; i < col.length; ++i) {
39
- const macroMolecule = col.get(i);
40
- const monomers = splitterFunc(macroMolecule);
41
- const molFilesForSeq = [];
42
- for (let j = 0; j < monomers.length; ++j) {
43
- if (monomers[j]) {
44
- if (!monomersDict[monomers[j]]) {
45
- grok.shell.warning(`Monomer ${monomers[j]} is missing in HELM library. Structure cannot be created`);
46
- return null;
47
- }
48
- // what is the reason of double conversion?
49
- molFilesForSeq.push(JSON.parse(JSON.stringify(monomersDict[monomers[j]])));
50
- }
51
- }
52
- molFiles.push(molFilesForSeq);
53
- }
54
- return molFiles;
55
- }
56
- export function getMolfilesFromSingleSeq(cell, monomersLibObject) {
57
- const units = cell.column.tags[DG.TAGS.UNITS];
58
- const sep = cell.column.getTag('separator');
59
- const splitterFunc = getSplitter(units, sep);
60
- const monomersDict = createMomomersMolDict(monomersLibObject);
61
- const molFiles = [];
62
- const macroMolecule = cell.value;
63
- const monomers = splitterFunc(macroMolecule);
64
- const molFilesForSeq = [];
65
- for (let j = 0; j < monomers.length; ++j) {
66
- if (monomers[j]) {
67
- if (!monomersDict[monomers[j]]) {
68
- grok.shell.warning(`Monomer ${monomers[j]} is missing in HELM library. Structure cannot be created`);
69
- return null;
70
- }
71
- molFilesForSeq.push(JSON.parse(JSON.stringify(monomersDict[monomers[j]])));
72
- }
73
- }
74
- molFiles.push(molFilesForSeq);
75
- return molFiles;
76
- }
77
- export function createMomomersMolDict(lib) {
78
- const dict = {};
79
- lib.forEach((it) => {
80
- if (it['polymerType'] === 'PEPTIDE') {
81
- const monomerObject = {};
82
- HELM_CORE_FIELDS.forEach((field) => {
83
- monomerObject[field] = it[field];
84
- });
85
- dict[it["symbol" /* HELM_FIELDS.SYMBOL */]] = monomerObject;
86
- }
87
- });
88
- return dict;
89
- }
90
- export function createJsonMonomerLibFromSdf(table) {
91
- const resultLib = [];
92
- for (let i = 0; i < table.rowCount; i++) {
93
- const monomer = {};
94
- Object.keys(jsonSdfMonomerLibDict).forEach((key) => {
95
- if (key === "symbol" /* HELM_FIELDS.SYMBOL */) {
96
- const monomerSymbol = table.get(jsonSdfMonomerLibDict[key], i);
97
- monomer[key] = monomerSymbol === '.' ? table.get(SDF_MONOMER_NAME, i) : monomerSymbol;
98
- }
99
- else if (key === "rgroups" /* HELM_FIELDS.RGROUPS */) {
100
- const rgroups = table.get(jsonSdfMonomerLibDict[key], i).split('\n');
101
- const jsonRgroups = [];
102
- rgroups.forEach((g) => {
103
- const rgroup = {};
104
- const altAtom = g.substring(g.lastIndexOf(']') + 1);
105
- const radicalNum = g.match(/\[R(\d+)\]/)[1];
106
- rgroup["capGroupSmiles" /* RGROUP_FIELDS.CAP_GROUP_SMILES */] = altAtom === 'H' ? `[*:${radicalNum}][H]` : `O[*:${radicalNum}]`;
107
- rgroup["alternateId" /* RGROUP_FIELDS.ALTER_ID */] = altAtom === 'H' ? `R${radicalNum}-H` : `R${radicalNum}-OH`;
108
- rgroup["capGroupName" /* RGROUP_FIELDS.CAP_GROUP_NAME */] = altAtom === 'H' ? `H` : `OH`;
109
- rgroup["label" /* RGROUP_FIELDS.LABEL */] = `R${radicalNum}`;
110
- jsonRgroups.push(rgroup);
111
- });
112
- monomer[key] = jsonRgroups;
113
- }
114
- else {
115
- if (jsonSdfMonomerLibDict[key])
116
- monomer[key] = table.get(jsonSdfMonomerLibDict[key], i);
117
- }
118
- });
119
- resultLib.push(monomer);
120
- }
121
- return resultLib;
122
- }
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub21lci11dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1vbm9tZXItdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseUNBQXlDO0FBQ3pDLE9BQU8sS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxLQUFLLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLEVBQ1EsZ0JBQWdCLEVBQWlCLHFCQUFxQixFQUNuRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFDekQsTUFBTSxTQUFTLENBQUM7QUFDakIsT0FBTyxFQUFDLFdBQVcsRUFBcUIsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyw0QkFBNEIsQ0FBQztBQUVuRSxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQWM7SUFDM0MsSUFBSSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7SUFDdEMsTUFBTSxpQkFBaUIsR0FBOEIsRUFBRSxDQUFDO0lBQ3hELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxrQ0FBZ0IsQ0FBQztJQUN2QyxNQUFNLFlBQVksR0FBaUIsV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRCxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUM5QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtRQUNuQyxJQUFJLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLFFBQVEsQ0FBQyxPQUFPLENB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YXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5pbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcblxuaW1wb3J0IHtcbiAgSEVMTV9GSUVMRFMsIEhFTE1fQ09SRV9GSUVMRFMsIFJHUk9VUF9GSUVMRFMsIGpzb25TZGZNb25vbWVyTGliRGljdCxcbiAgTU9OT01FUl9FTkNPREVfTUFYLCBNT05PTUVSX0VOQ09ERV9NSU4sIFNERl9NT05PTUVSX05BTUVcbn0gZnJvbSAnLi9jb25zdCc7XG5pbXBvcnQge2dldFNwbGl0dGVyLCBTcGxpdHRlckZ1bmMsIFRBR1N9IGZyb20gJy4vbWFjcm9tb2xlY3VsZSc7XG5cbmV4cG9ydCBjb25zdCBIRUxNX0NPUkVfTElCX0ZJTEVOQU1FID0gJy9kYXRhL0hFTE1Db3JlTGlicmFyeS5qc29uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZU1vbm9tZXJzKGNvbDogREcuQ29sdW1uKTogREcuQ29sdW1uIHwgbnVsbCB7XG4gIGxldCBlbmNvZGVTeW1ib2wgPSBNT05PTUVSX0VOQ09ERV9NSU47XG4gIGNvbnN0IG1vbm9tZXJTeW1ib2xEaWN0OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gIGNvbnN0IHVuaXRzID0gY29sLnRhZ3NbREcuVEFHUy5VTklUU107XG4gIGNvbnN0IHNlcCA9IGNvbC5nZXRUYWcoVEFHUy5zZXBhcmF0b3IpO1xuICBjb25zdCBzcGxpdHRlckZ1bmM6IFNwbGl0dGVyRnVuYyA9IGdldFNwbGl0dGVyKHVuaXRzLCBzZXApO1xuICBjb25zdCBlbmNvZGVkU3RyaW5nQXJyYXkgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2wubGVuZ3RoOyArK2kpIHtcbiAgICBsZXQgZW5jb2RlZE1vbm9tZXJTdHIgPSAnJztcbiAgICBjb25zdCBtb25vbWVycyA9IHNwbGl0dGVyRnVuYyhjb2wuZ2V0KGkpKTtcbiAgICBtb25vbWVycy5mb3JFYWNoKChtKSA9PiB7XG4gICAgICBpZiAoIW1vbm9tZXJTeW1ib2xEaWN0W21dKSB7XG4gICAgICAgIGlmIChlbmNvZGVTeW1ib2wgPiBNT05PTUVSX0VOQ09ERV9NQVgpIHtcbiAgICAgICAgICBncm9rLnNoZWxsLmVycm9yKGBOb3QgZW5vdWdoIHN5bWJvbHMgdG8gZW5jb2RlIG1vbm9tZXJzYCk7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgbW9ub21lclN5bWJvbERpY3RbbV0gPSBlbmNvZGVTeW1ib2w7XG4gICAgICAgIGVuY29kZVN5bWJvbCsrO1xuICAgICAgfVxuICAgICAgZW5jb2RlZE1vbm9tZXJTdHIgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQobW9ub21lclN5bWJvbERpY3RbbV0pO1xuICAgIH0pO1xuICAgIGVuY29kZWRTdHJpbmdBcnJheS5wdXNoKGVuY29kZWRNb25vbWVyU3RyKTtcbiAgfVxuICByZXR1cm4gREcuQ29sdW1uLmZyb21TdHJpbmdzKCdlbmNvZGVkTW9sZWN1bGVzJywgZW5jb2RlZFN0cmluZ0FycmF5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbGZpbGVzRnJvbVNlcShjb2w6IERHLkNvbHVtbiwgbW9ub21lcnNMaWJPYmplY3Q6IGFueVtdKTogYW55W11bXSB8IG51bGwge1xuICBjb25zdCB1bml0cyA9IGNvbC50YWdzW0RHLlRBR1MuVU5JVFNdO1xuICBjb25zdCBzZXAgPSBjb2wuZ2V0VGFnKCdzZXBhcmF0b3InKTtcbiAgY29uc3Qgc3BsaXR0ZXJGdW5jOiBTcGxpdHRlckZ1bmMgPSBnZXRTcGxpdHRlcih1bml0cywgc2VwKTtcbiAgY29uc3QgbW9ub21lcnNEaWN0ID0gY3JlYXRlTW9tb21lcnNNb2xEaWN0KG1vbm9tZXJzTGliT2JqZWN0KTtcbiAgY29uc3QgbW9sRmlsZXMgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2wubGVuZ3RoOyArK2kpIHtcbiAgICBjb25zdCBtYWNyb01vbGVjdWxlID0gY29sLmdldChpKTtcbiAgICBjb25zdCBtb25vbWVycyA9IHNwbGl0dGVyRnVuYyhtYWNyb01vbGVjdWxlKTtcbiAgICBjb25zdCBtb2xGaWxlc0ZvclNlcSA9IFtdO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbW9ub21lcnMubGVuZ3RoOyArK2opIHtcbiAgICAgIGlmIChtb25vbWVyc1tqXSkge1xuICAgICAgICBpZiAoIW1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pIHtcbiAgICAgICAgICBncm9rLnNoZWxsLndhcm5pbmcoYE1vbm9tZXIgJHttb25vbWVyc1tqXX0gaXMgbWlzc2luZyBpbiBIRUxNIGxpYnJhcnkuIFN0cnVjdHVyZSBjYW5ub3QgYmUgY3JlYXRlZGApO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIC8vIHdoYXQgaXMgdGhlIHJlYXNvbiBvZiBkb3VibGUgY29udmVyc2lvbj9cbiAgICAgICAgbW9sRmlsZXNGb3JTZXEucHVzaChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pKSk7XG4gICAgICB9XG4gICAgfVxuICAgIG1vbEZpbGVzLnB1c2gobW9sRmlsZXNGb3JTZXEpO1xuICB9XG4gIHJldHVybiBtb2xGaWxlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1vbGZpbGVzRnJvbVNpbmdsZVNlcShjZWxsOiBERy5DZWxsLCBtb25vbWVyc0xpYk9iamVjdDogYW55W10pOiBhbnlbXVtdIHwgbnVsbCB7XG4gIGNvbnN0IHVuaXRzID0gY2VsbC5jb2x1bW4udGFnc1tERy5UQUdTLlVOSVRTXTtcbiAgY29uc3Qgc2VwID0gY2VsbC5jb2x1bW4hLmdldFRhZygnc2VwYXJhdG9yJyk7XG4gIGNvbnN0IHNwbGl0dGVyRnVuYzogU3BsaXR0ZXJGdW5jID0gZ2V0U3BsaXR0ZXIodW5pdHMsIHNlcCk7XG4gIGNvbnN0IG1vbm9tZXJzRGljdCA9IGNyZWF0ZU1vbW9tZXJzTW9sRGljdChtb25vbWVyc0xpYk9iamVjdCk7XG4gIGNvbnN0IG1vbEZpbGVzID0gW107XG4gIGNvbnN0IG1hY3JvTW9sZWN1bGUgPSBjZWxsLnZhbHVlO1xuICBjb25zdCBtb25vbWVycyA9IHNwbGl0dGVyRnVuYyhtYWNyb01vbGVjdWxlKTtcbiAgY29uc3QgbW9sRmlsZXNGb3JTZXEgPSBbXTtcbiAgZm9yIChsZXQgaiA9IDA7IGogPCBtb25vbWVycy5sZW5ndGg7ICsraikge1xuICAgIGlmIChtb25vbWVyc1tqXSkge1xuICAgICAgaWYgKCFtb25vbWVyc0RpY3RbbW9ub21lcnNbal1dKSB7XG4gICAgICAgIGdyb2suc2hlbGwud2FybmluZyhgTW9ub21lciAke21vbm9tZXJzW2pdfSBpcyBtaXNzaW5nIGluIEhFTE0gbGlicmFyeS4gU3RydWN0dXJlIGNhbm5vdCBiZSBjcmVhdGVkYCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgbW9sRmlsZXNGb3JTZXEucHVzaChKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG1vbm9tZXJzRGljdFttb25vbWVyc1tqXV0pKSk7XG4gICAgfVxuICB9XG4gIG1vbEZpbGVzLnB1c2gobW9sRmlsZXNGb3JTZXEpO1xuICByZXR1cm4gbW9sRmlsZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVNb21vbWVyc01vbERpY3QobGliOiBhbnlbXSk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0ge1xuICBjb25zdCBkaWN0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGFueSB9ID0ge307XG4gIGxpYi5mb3JFYWNoKChpdCkgPT4ge1xuICAgIGlmIChpdFsncG9seW1lclR5cGUnXSA9PT0gJ1BFUFRJREUnKSB7XG4gICAgICBjb25zdCBtb25vbWVyT2JqZWN0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICBIRUxNX0NPUkVfRklFTERTLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgIG1vbm9tZXJPYmplY3RbZmllbGRdID0gaXRbZmllbGRdO1xuICAgICAgfSk7XG4gICAgICBkaWN0W2l0W0hFTE1fRklFTERTLlNZTUJPTF1dID0gbW9ub21lck9iamVjdDtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gZGljdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUpzb25Nb25vbWVyTGliRnJvbVNkZih0YWJsZTogREcuRGF0YUZyYW1lKTogYW55IHtcbiAgY29uc3QgcmVzdWx0TGliID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdGFibGUucm93Q291bnQ7IGkrKykge1xuICAgIGNvbnN0IG1vbm9tZXI6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0gPSB7fTtcbiAgICBPYmplY3Qua2V5cyhqc29uU2RmTW9ub21lckxpYkRpY3QpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gSEVMTV9GSUVMRFMuU1lNQk9MKSB7XG4gICAgICAgIGNvbnN0IG1vbm9tZXJTeW1ib2wgPSB0YWJsZS5nZXQoanNvblNkZk1vbm9tZXJMaWJEaWN0W2tleV0sIGkpO1xuICAgICAgICBtb25vbWVyW2tleV0gPSBtb25vbWVyU3ltYm9sID09PSAnLicgPyB0YWJsZS5nZXQoU0RGX01PTk9NRVJfTkFNRSwgaSkgOiBtb25vbWVyU3ltYm9sO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09IEhFTE1fRklFTERTLlJHUk9VUFMpIHtcbiAgICAgICAgY29uc3Qgcmdyb3VwcyA9IHRhYmxlLmdldChqc29uU2RmTW9ub21lckxpYkRpY3Rba2V5XSwgaSkuc3BsaXQoJ1xcbicpO1xuICAgICAgICBjb25zdCBqc29uUmdyb3VwczogYW55W10gPSBbXTtcbiAgICAgICAgcmdyb3Vwcy5mb3JFYWNoKChnOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBjb25zdCByZ3JvdXA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0gPSB7fTtcbiAgICAgICAgICBjb25zdCBhbHRBdG9tID0gZy5zdWJzdHJpbmcoZy5sYXN0SW5kZXhPZignXScpICsgMSk7XG4gICAgICAgICAgY29uc3QgcmFkaWNhbE51bSA9IGcubWF0Y2goL1xcW1IoXFxkKylcXF0vKSFbMV07XG4gICAgICAgICAgcmdyb3VwW1JHUk9VUF9GSUVMRFMuQ0FQX0dST1VQX1NNSUxFU10gPSBhbHRBdG9tID09PSAnSCcgPyBgWyo6JHtyYWRpY2FsTnVtfV1bSF1gIDogYE9bKjoke3JhZGljYWxOdW19XWA7XG4gICAgICAgICAgcmdyb3VwW1JHUk9VUF9GSUVMRFMuQUxURVJfSURdID0gYWx0QXRvbSA9PT0gJ0gnID8gYFIke3JhZGljYWxOdW19LUhgIDogYFIke3JhZGljYWxOdW19LU9IYDtcbiAgICAgICAgICByZ3JvdXBbUkdST1VQX0ZJRUxEUy5DQVBfR1JPVVBfTkFNRV0gPSBhbHRBdG9tID09PSAnSCcgPyBgSGAgOiBgT0hgO1xuICAgICAgICAgIHJncm91cFtSR1JPVVBfRklFTERTLkxBQkVMXSA9IGBSJHtyYWRpY2FsTnVtfWA7XG4gICAgICAgICAganNvblJncm91cHMucHVzaChyZ3JvdXApO1xuICAgICAgICB9KTtcbiAgICAgICAgbW9ub21lcltrZXldID0ganNvblJncm91cHM7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoKGpzb25TZGZNb25vbWVyTGliRGljdCBhcyB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IGFueSB9KVtrZXldKVxuICAgICAgICAgIG1vbm9tZXJba2V5XSA9IHRhYmxlLmdldCgoanNvblNkZk1vbm9tZXJMaWJEaWN0IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIHwgYW55IH0pW2tleV0sIGkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJlc3VsdExpYi5wdXNoKG1vbm9tZXIpO1xuICB9XG4gIHJldHVybiByZXN1bHRMaWI7XG59XG4iXX0=