@datagrok-libraries/bio 5.16.1 → 5.16.3
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 +4 -2
- package/index.d.ts.map +1 -1
- package/index.js +8 -3
- package/index.ts +16 -2
- package/package.json +2 -1
- package/src/trees/dendrogram.d.ts +16 -0
- package/src/trees/dendrogram.d.ts.map +1 -0
- package/src/trees/dendrogram.js +16 -0
- package/src/trees/distance-matrix.d.ts +17 -0
- package/src/trees/distance-matrix.d.ts.map +1 -0
- package/src/trees/distance-matrix.js +57 -0
- package/src/trees/tree-helper.d.ts +11 -8
- package/src/trees/tree-helper.d.ts.map +1 -1
- package/src/trees/tree-helper.js +1 -1
package/index.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ import { DrawStyle, printLeftOrCentered } from './src/utils/cell-renderer';
|
|
|
7
7
|
import { FastaFileHandler } from './src/utils/fasta-handler';
|
|
8
8
|
import { NotationConverter } from './src/utils/notation-converter';
|
|
9
9
|
import { splitAlignedSequences } from './src/utils/splitter';
|
|
10
|
-
import { getTreeHelper, ITreeHelper } from './src/trees/tree-helper';
|
|
11
10
|
import { UnitsHandler } from './src/utils/units-handler';
|
|
12
11
|
import { VdRegion, VdRegionType } from './src/vd-regions';
|
|
13
12
|
import { CanvasCallback, getPhylocanvasGlService, IPhylocanvasGlViewer, NodeStyleType, PhylocanvasGlServiceBase, PhylocanvasGlTask, StylesType, TreeTypesNames } from './src/viewers/phylocanvas-gl-viewer';
|
|
@@ -18,9 +17,12 @@ import { readLibrary } from './src/monomer-works/monomer-utils';
|
|
|
18
17
|
import { getNglGlService, NglGlServiceBase, NglGlTask } from './src/viewers/ngl-gl-viewer';
|
|
19
18
|
import { parseNewick, PhylocanvasTreeNode } from './src/trees/phylocanvas';
|
|
20
19
|
import { isLeaf } from './src/trees';
|
|
20
|
+
export { DistanceMatrix } from './src/trees/distance-matrix';
|
|
21
21
|
export { ALIGNMENT, ALPHABET, NOTATION, TAGS, getSplitter, splitterAsFasta, getSplitterForColumn, SplitterFunc, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getPaletteByType, getAlphabet, getAlphabetSimilarity } from './src/utils/macromolecule';
|
|
22
22
|
export { IMonomerLib, Monomer } from './src/types';
|
|
23
23
|
export { NodeType, NodeCuttedType } from './src/trees';
|
|
24
|
+
export { ITreeHelper, getTreeHelper } from './src/trees/tree-helper';
|
|
25
|
+
export { TreeCutOptions, IDendrogramService, getDendrogramService } from './src/trees/dendrogram';
|
|
24
26
|
export { Shapes, TreeTypes } from './src/trees/phylocanvas';
|
|
25
|
-
export { NotationConverter, splitAlignedSequences, SeqPalette, SeqPaletteBase, Aminoacids, AminoacidsPalettes, Nucleotides, NucleotidesPalettes, UnknownSeqPalettes, UnknownSeqPalette, PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, IVdRegionsViewer, isLeaf, PhylocanvasTreeNode, NodeStyleType, StylesType, IPhylocanvasGlViewer, TreeTypesNames, PhylocanvasGlServiceBase, CanvasCallback, PhylocanvasGlTask, getPhylocanvasGlService, parseNewick,
|
|
27
|
+
export { NotationConverter, splitAlignedSequences, SeqPalette, SeqPaletteBase, Aminoacids, AminoacidsPalettes, Nucleotides, NucleotidesPalettes, UnknownSeqPalettes, UnknownSeqPalette, PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, IVdRegionsViewer, isLeaf, PhylocanvasTreeNode, NodeStyleType, StylesType, IPhylocanvasGlViewer, TreeTypesNames, PhylocanvasGlServiceBase, CanvasCallback, PhylocanvasGlTask, getPhylocanvasGlService, parseNewick, getNglGlService, NglGlServiceBase, NglGlTask, MonomerWorks, MonomerLib, readLibrary };
|
|
26
28
|
//# 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":"AAAA,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,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,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAC,qBAAqB,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
|
package/index.js
CHANGED
|
@@ -7,7 +7,6 @@ import { DrawStyle, printLeftOrCentered } from './src/utils/cell-renderer';
|
|
|
7
7
|
import { FastaFileHandler } from './src/utils/fasta-handler';
|
|
8
8
|
import { NotationConverter } from './src/utils/notation-converter';
|
|
9
9
|
import { splitAlignedSequences } from './src/utils/splitter';
|
|
10
|
-
import { getTreeHelper } from './src/trees/tree-helper';
|
|
11
10
|
import { UnitsHandler } from './src/utils/units-handler';
|
|
12
11
|
import { VdRegion, VdRegionType } from './src/vd-regions';
|
|
13
12
|
import { getPhylocanvasGlService, PhylocanvasGlServiceBase, TreeTypesNames } from './src/viewers/phylocanvas-gl-viewer';
|
|
@@ -17,9 +16,15 @@ import { readLibrary } from './src/monomer-works/monomer-utils';
|
|
|
17
16
|
import { getNglGlService, NglGlServiceBase } from './src/viewers/ngl-gl-viewer';
|
|
18
17
|
import { parseNewick } from './src/trees/phylocanvas';
|
|
19
18
|
import { isLeaf } from './src/trees';
|
|
19
|
+
export { DistanceMatrix } from './src/trees/distance-matrix';
|
|
20
20
|
export { getSplitter, splitterAsFasta, getSplitterForColumn, monomerToShort, splitterAsHelm, getStats, pickUpPalette, getPaletteByType, getAlphabet, getAlphabetSimilarity } from './src/utils/macromolecule';
|
|
21
|
+
export { getTreeHelper } from './src/trees/tree-helper';
|
|
22
|
+
export { getDendrogramService } from './src/trees/dendrogram';
|
|
21
23
|
export { Shapes, TreeTypes } from './src/trees/phylocanvas';
|
|
22
|
-
export { NotationConverter, splitAlignedSequences, SeqPaletteBase, Aminoacids, AminoacidsPalettes, Nucleotides, NucleotidesPalettes, UnknownSeqPalettes, UnknownSeqPalette, PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, isLeaf, TreeTypesNames, PhylocanvasGlServiceBase, getPhylocanvasGlService, parseNewick,
|
|
24
|
+
export { NotationConverter, splitAlignedSequences, SeqPaletteBase, Aminoacids, AminoacidsPalettes, Nucleotides, NucleotidesPalettes, UnknownSeqPalettes, UnknownSeqPalette, PositionHeight, PositionInfo, PositionMonomerInfo, WebLogoViewer, UnitsHandler, DrawStyle, printLeftOrCentered, FastaFileHandler, VdRegionType, VdRegion, isLeaf, TreeTypesNames, PhylocanvasGlServiceBase, getPhylocanvasGlService, parseNewick,
|
|
25
|
+
// Utils,
|
|
26
|
+
// Newick,
|
|
27
|
+
getNglGlService, NglGlServiceBase,
|
|
23
28
|
//Monomer lib and features
|
|
24
29
|
MonomerWorks, MonomerLib, readLibrary };
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLGtCQUFrQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxPQUFPLEVBQWEsY0FBYyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDOUQsT0FBTyxFQUFDLGlCQUFpQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RCxPQUFPLEVBRUwsdUJBQXVCLEVBR3ZCLHdCQUF3QixFQUd4QixjQUFjLEVBQ2YsTUFBTSxxQ0FBcUMsQ0FBQztBQUU3QyxPQUFPLEVBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxhQUFhLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUMvRyxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDM0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzlELE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEVBRWpCLE1BQU0sNkJBQTZCLENBQUM7QUFFckMsT0FBTyxFQUFDLFdBQVcsRUFBc0IsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRW5DLE9BQU8sRUFDTCxjQUFjLEVBQ2YsTUFBTSw2QkFBNkIsQ0FBQztBQUVyQyxPQUFPLEVBS0wsV0FBVyxFQUNYLGVBQWUsRUFDZixvQkFBb0IsRUFFcEIsY0FBYyxFQUNkLGNBQWMsRUFDZCxRQUFRLEVBQ1IsYUFBYSxFQUNiLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gscUJBQXFCLEVBQ3RCLE1BQU0sMkJBQTJCLENBQUM7QUFZbkMsT0FBTyxFQUVMLGFBQWEsRUFDZCxNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFHTCxvQkFBb0IsRUFDckIsTUFBTSx3QkFBd0IsQ0FBQztBQUVoQyxPQUFPLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIscUJBQXFCLEVBRXJCLGNBQWMsRUFDZCxVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxtQkFBbUIsRUFDbkIsa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2QsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFNBQVMsRUFDVCxtQkFBbUIsRUFDbkIsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixRQUFRLEVBR1IsTUFBTSxFQU1OLGNBQWMsRUFDZCx3QkFBd0IsRUFHeEIsdUJBQXVCLEVBRXZCLFdBQVc7QUFDWCxTQUFTO0FBQ1QsVUFBVTtBQUVWLGVBQWUsRUFDZixnQkFBZ0I7QUFHaEIsMEJBQTBCO0FBQzFCLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FtaW5vYWNpZHMsIEFtaW5vYWNpZHNQYWxldHRlc30gZnJvbSAnLi9zcmMvYW1pbm9hY2lkcyc7XG5pbXBvcnQge01vbm9tZXJXb3Jrc30gZnJvbSAnLi9zcmMvbW9ub21lci13b3Jrcy9tb25vbWVyLXdvcmtzJztcbmltcG9ydCB7TnVjbGVvdGlkZXMsIE51Y2xlb3RpZGVzUGFsZXR0ZXN9IGZyb20gJy4vc3JjL251Y2xlb3RpZGVzJztcbmltcG9ydCB7U2VxUGFsZXR0ZSwgU2VxUGFsZXR0ZUJhc2V9IGZyb20gJy4vc3JjL3NlcS1wYWxldHRlcyc7XG5pbXBvcnQge1Vua25vd25TZXFQYWxldHRlLCBVbmtub3duU2VxUGFsZXR0ZXN9IGZyb20gJy4vc3JjL3Vua25vd24nO1xuaW1wb3J0IHtEcmF3U3R5bGUsIHByaW50TGVmdE9yQ2VudGVyZWR9IGZyb20gJy4vc3JjL3V0aWxzL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHtGYXN0YUZpbGVIYW5kbGVyfSBmcm9tICcuL3NyYy91dGlscy9mYXN0YS1oYW5kbGVyJztcbmltcG9ydCB7Tm90YXRpb25Db252ZXJ0ZXJ9IGZyb20gJy4vc3JjL3V0aWxzL25vdGF0aW9uLWNvbnZlcnRlcic7XG5pbXBvcnQge3NwbGl0QWxpZ25lZFNlcXVlbmNlc30gZnJvbSAnLi9zcmMvdXRpbHMvc3BsaXR0ZXInO1xuaW1wb3J0IHtnZXRUcmVlSGVscGVyLCBJVHJlZUhlbHBlcn0gZnJvbSAnLi9zcmMvdHJlZXMvdHJlZS1oZWxwZXInO1xuaW1wb3J0IHtVbml0c0hhbmRsZXJ9IGZyb20gJy4vc3JjL3V0aWxzL3VuaXRzLWhhbmRsZXInO1xuaW1wb3J0IHtWZFJlZ2lvbiwgVmRSZWdpb25UeXBlfSBmcm9tICcuL3NyYy92ZC1yZWdpb25zJztcbmltcG9ydCB7XG4gIENhbnZhc0NhbGxiYWNrLFxuICBnZXRQaHlsb2NhbnZhc0dsU2VydmljZSxcbiAgSVBoeWxvY2FudmFzR2xWaWV3ZXIsXG4gIE5vZGVTdHlsZVR5cGUsXG4gIFBoeWxvY2FudmFzR2xTZXJ2aWNlQmFzZSxcbiAgUGh5bG9jYW52YXNHbFRhc2ssXG4gIFN0eWxlc1R5cGUsXG4gIFRyZWVUeXBlc05hbWVzXG59IGZyb20gJy4vc3JjL3ZpZXdlcnMvcGh5bG9jYW52YXMtZ2wtdmlld2VyJztcbmltcG9ydCB7SVZkUmVnaW9uc1ZpZXdlcn0gZnJvbSAnLi9zcmMvdmlld2Vycy92ZC1yZWdpb25zLXZpZXdlcic7XG5pbXBvcnQge1Bvc2l0aW9uSGVpZ2h0LCBQb3NpdGlvbkluZm8sIFBvc2l0aW9uTW9ub21lckluZm8sIFdlYkxvZ29WaWV3ZXJ9IGZyb20gJy4vc3JjL3ZpZXdlcnMvd2ViLWxvZ28tdmlld2VyJztcbmltcG9ydCB7TW9ub21lckxpYn0gZnJvbSAnLi9zcmMvbW9ub21lci13b3Jrcy9tb25vbWVyLWxpYic7XG5pbXBvcnQge3JlYWRMaWJyYXJ5fSBmcm9tICcuL3NyYy9tb25vbWVyLXdvcmtzL21vbm9tZXItdXRpbHMnO1xuaW1wb3J0IHtcbiAgZ2V0TmdsR2xTZXJ2aWNlLFxuICBOZ2xHbFNlcnZpY2VCYXNlLFxuICBOZ2xHbFRhc2tcbn0gZnJvbSAnLi9zcmMvdmlld2Vycy9uZ2wtZ2wtdmlld2VyJztcblxuaW1wb3J0IHtwYXJzZU5ld2ljaywgUGh5bG9jYW52YXNUcmVlTm9kZX0gZnJvbSAnLi9zcmMvdHJlZXMvcGh5bG9jYW52YXMnO1xuaW1wb3J0IHtpc0xlYWZ9IGZyb20gJy4vc3JjL3RyZWVzJztcblxuZXhwb3J0IHtcbiAgRGlzdGFuY2VNYXRyaXhcbn0gZnJvbSAnLi9zcmMvdHJlZXMvZGlzdGFuY2UtbWF0cml4JztcblxuZXhwb3J0IHtcbiAgQUxJR05NRU5ULFxuICBBTFBIQUJFVCxcbiAgTk9UQVRJT04sXG4gIFRBR1MsXG4gIGdldFNwbGl0dGVyLFxuICBzcGxpdHRlckFzRmFzdGEsXG4gIGdldFNwbGl0dGVyRm9yQ29sdW1uLFxuICBTcGxpdHRlckZ1bmMsXG4gIG1vbm9tZXJUb1Nob3J0LFxuICBzcGxpdHRlckFzSGVsbSxcbiAgZ2V0U3RhdHMsXG4gIHBpY2tVcFBhbGV0dGUsXG4gIGdldFBhbGV0dGVCeVR5cGUsXG4gIGdldEFscGhhYmV0LFxuICBnZXRBbHBoYWJldFNpbWlsYXJpdHlcbn0gZnJvbSAnLi9zcmMvdXRpbHMvbWFjcm9tb2xlY3VsZSc7XG5cbmV4cG9ydCB7XG4gIElNb25vbWVyTGliLFxuICBNb25vbWVyXG59IGZyb20gJy4vc3JjL3R5cGVzJztcblxuZXhwb3J0IHtcbiAgTm9kZVR5cGUsXG4gIE5vZGVDdXR0ZWRUeXBlXG59IGZyb20gJy4vc3JjL3RyZWVzJztcblxuZXhwb3J0IHtcbiAgSVRyZWVIZWxwZXIsXG4gIGdldFRyZWVIZWxwZXJcbn0gZnJvbSAnLi9zcmMvdHJlZXMvdHJlZS1oZWxwZXInO1xuXG5leHBvcnQge1xuICBUcmVlQ3V0T3B0aW9ucyxcbiAgSURlbmRyb2dyYW1TZXJ2aWNlLFxuICBnZXREZW5kcm9ncmFtU2VydmljZVxufSBmcm9tICcuL3NyYy90cmVlcy9kZW5kcm9ncmFtJztcblxuZXhwb3J0IHtcbiAgU2hhcGVzLFxuICBUcmVlVHlwZXNcbn0gZnJvbSAnLi9zcmMvdHJlZXMvcGh5bG9jYW52YXMnO1xuXG5leHBvcnQge1xuICBOb3RhdGlvbkNvbnZlcnRlcixcbiAgc3BsaXRBbGlnbmVkU2VxdWVuY2VzLFxuICBTZXFQYWxldHRlLFxuICBTZXFQYWxldHRlQmFzZSxcbiAgQW1pbm9hY2lkcyxcbiAgQW1pbm9hY2lkc1BhbGV0dGVzLFxuICBOdWNsZW90aWRlcyxcbiAgTnVjbGVvdGlkZXNQYWxldHRlcyxcbiAgVW5rbm93blNlcVBhbGV0dGVzLFxuICBVbmtub3duU2VxUGFsZXR0ZSxcbiAgUG9zaXRpb25IZWlnaHQsXG4gIFBvc2l0aW9uSW5mbyxcbiAgUG9zaXRpb25Nb25vbWVySW5mbyxcbiAgV2ViTG9nb1ZpZXdlcixcbiAgVW5pdHNIYW5kbGVyLFxuICBEcmF3U3R5bGUsXG4gIHByaW50TGVmdE9yQ2VudGVyZWQsXG4gIEZhc3RhRmlsZUhhbmRsZXIsXG4gIFZkUmVnaW9uVHlwZSxcbiAgVmRSZWdpb24sXG4gIElWZFJlZ2lvbnNWaWV3ZXIsXG5cbiAgaXNMZWFmLFxuICBQaHlsb2NhbnZhc1RyZWVOb2RlLFxuICAvLyB0cmVlVHJhdmVyc2FsLFxuICBOb2RlU3R5bGVUeXBlLCBTdHlsZXNUeXBlLFxuXG4gIElQaHlsb2NhbnZhc0dsVmlld2VyLFxuICBUcmVlVHlwZXNOYW1lcyxcbiAgUGh5bG9jYW52YXNHbFNlcnZpY2VCYXNlLFxuICBDYW52YXNDYWxsYmFjayxcbiAgUGh5bG9jYW52YXNHbFRhc2ssXG4gIGdldFBoeWxvY2FudmFzR2xTZXJ2aWNlLFxuXG4gIHBhcnNlTmV3aWNrLFxuICAvLyBVdGlscyxcbiAgLy8gTmV3aWNrLFxuXG4gIGdldE5nbEdsU2VydmljZSxcbiAgTmdsR2xTZXJ2aWNlQmFzZSxcbiAgTmdsR2xUYXNrLFxuXG4gIC8vTW9ub21lciBsaWIgYW5kIGZlYXR1cmVzXG4gIE1vbm9tZXJXb3JrcyxcbiAgTW9ub21lckxpYixcbiAgcmVhZExpYnJhcnlcbn07XG4iXX0=
|
package/index.ts
CHANGED
|
@@ -29,9 +29,14 @@ import {
|
|
|
29
29
|
NglGlServiceBase,
|
|
30
30
|
NglGlTask
|
|
31
31
|
} from './src/viewers/ngl-gl-viewer';
|
|
32
|
+
|
|
32
33
|
import {parseNewick, PhylocanvasTreeNode} from './src/trees/phylocanvas';
|
|
33
34
|
import {isLeaf} from './src/trees';
|
|
34
35
|
|
|
36
|
+
export {
|
|
37
|
+
DistanceMatrix
|
|
38
|
+
} from './src/trees/distance-matrix';
|
|
39
|
+
|
|
35
40
|
export {
|
|
36
41
|
ALIGNMENT,
|
|
37
42
|
ALPHABET,
|
|
@@ -60,6 +65,17 @@ export {
|
|
|
60
65
|
NodeCuttedType
|
|
61
66
|
} from './src/trees';
|
|
62
67
|
|
|
68
|
+
export {
|
|
69
|
+
ITreeHelper,
|
|
70
|
+
getTreeHelper
|
|
71
|
+
} from './src/trees/tree-helper';
|
|
72
|
+
|
|
73
|
+
export {
|
|
74
|
+
TreeCutOptions,
|
|
75
|
+
IDendrogramService,
|
|
76
|
+
getDendrogramService
|
|
77
|
+
} from './src/trees/dendrogram';
|
|
78
|
+
|
|
63
79
|
export {
|
|
64
80
|
Shapes,
|
|
65
81
|
TreeTypes
|
|
@@ -103,8 +119,6 @@ export {
|
|
|
103
119
|
parseNewick,
|
|
104
120
|
// Utils,
|
|
105
121
|
// Newick,
|
|
106
|
-
ITreeHelper,
|
|
107
|
-
getTreeHelper,
|
|
108
122
|
|
|
109
123
|
getNglGlService,
|
|
110
124
|
NglGlServiceBase,
|
package/package.json
CHANGED
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
6
|
"friendlyName": "Datagrok bio library",
|
|
7
|
-
"version": "5.16.
|
|
7
|
+
"version": "5.16.3",
|
|
8
8
|
"description": "",
|
|
9
9
|
"dependencies": {
|
|
10
|
+
"@datagrok-libraries/gridext": "^1.3.22",
|
|
10
11
|
"@datagrok-libraries/utils": "^1.10.1",
|
|
11
12
|
"cash-dom": "latest",
|
|
12
13
|
"datagrok-api": "^1.8.2",
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as DG from 'datagrok-api/dg';
|
|
2
|
+
import { GridNeighbor } from '@datagrok-libraries/gridext/src/ui/GridNeighbor';
|
|
3
|
+
import { NodeType } from '.';
|
|
4
|
+
export type TreeCutOptions = {
|
|
5
|
+
min: number;
|
|
6
|
+
max: number;
|
|
7
|
+
dataDf: DG.DataFrame;
|
|
8
|
+
clusterDf: DG.DataFrame;
|
|
9
|
+
clusterColName: string;
|
|
10
|
+
};
|
|
11
|
+
export interface IDendrogramService {
|
|
12
|
+
/** Inject Dendrogram tree to {@see grid}. Requires Dendrogram package. */
|
|
13
|
+
injectTreeForGrid(grid: DG.Grid, treeRoot: NodeType | null, leafColName?: string, neighborWidth?: number, cut?: TreeCutOptions): GridNeighbor;
|
|
14
|
+
}
|
|
15
|
+
export declare function getDendrogramService(): Promise<IDendrogramService>;
|
|
16
|
+
//# sourceMappingURL=dendrogram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dendrogram.d.ts","sourceRoot":"","sources":["dendrogram.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,YAAY,EAAC,MAAM,iDAAiD,CAAC;AAC7E,OAAO,EAAC,QAAQ,EAAC,MAAM,GAAG,CAAC;AAE3B,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;IAC/C,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;CACjD,CAAA;AAED,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,iBAAiB,CACf,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,cAAc,GAC3G,YAAY,CAAC;CACjB;AAED,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAExE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
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 grok from 'datagrok-api/grok';
|
|
11
|
+
export function getDendrogramService() {
|
|
12
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13
|
+
return yield grok.functions.call('Dendrogram:getDendrogramService', {});
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVuZHJvZ3JhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRlbmRyb2dyYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxtQkFBbUIsQ0FBQztBQW1CMUMsTUFBTSxVQUFnQixvQkFBb0I7O1FBQ3hDLE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRSxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG5pbXBvcnQge0dyaWROZWlnaGJvcn0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9ncmlkZXh0L3NyYy91aS9HcmlkTmVpZ2hib3InO1xuaW1wb3J0IHtOb2RlVHlwZX0gZnJvbSAnLic7XG5cbmV4cG9ydCB0eXBlIFRyZWVDdXRPcHRpb25zID0ge1xuICBtaW46IG51bWJlciwgbWF4OiBudW1iZXIsIGRhdGFEZjogREcuRGF0YUZyYW1lLFxuICBjbHVzdGVyRGY6IERHLkRhdGFGcmFtZSwgY2x1c3RlckNvbE5hbWU6IHN0cmluZyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGVuZHJvZ3JhbVNlcnZpY2Uge1xuICAvKiogSW5qZWN0IERlbmRyb2dyYW0gdHJlZSB0byB7QHNlZSBncmlkfS4gUmVxdWlyZXMgRGVuZHJvZ3JhbSBwYWNrYWdlLiAqL1xuICBpbmplY3RUcmVlRm9yR3JpZChcbiAgICBncmlkOiBERy5HcmlkLCB0cmVlUm9vdDogTm9kZVR5cGUgfCBudWxsLCBsZWFmQ29sTmFtZT86IHN0cmluZywgbmVpZ2hib3JXaWR0aD86IG51bWJlciwgY3V0PzogVHJlZUN1dE9wdGlvbnNcbiAgKTogR3JpZE5laWdoYm9yO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RGVuZHJvZ3JhbVNlcnZpY2UoKTogUHJvbWlzZTxJRGVuZHJvZ3JhbVNlcnZpY2U+IHtcbiAgcmV0dXJuIGF3YWl0IGdyb2suZnVuY3Rpb25zLmNhbGwoJ0RlbmRyb2dyYW06Z2V0RGVuZHJvZ3JhbVNlcnZpY2UnLCB7fSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Distance matrix class compatible with data structure of scipy.spatial.distance.pdist */
|
|
2
|
+
export declare class DistanceMatrix {
|
|
3
|
+
_data: Float32Array;
|
|
4
|
+
_size: number;
|
|
5
|
+
get data(): Float32Array;
|
|
6
|
+
get size(): number;
|
|
7
|
+
/**
|
|
8
|
+
* @param {Float64Array} data Distance data
|
|
9
|
+
* @param {number} m Number of original observations
|
|
10
|
+
*/
|
|
11
|
+
constructor(data?: Float32Array, size?: number);
|
|
12
|
+
private _linearizeIJ;
|
|
13
|
+
get(i: number, j: number): number;
|
|
14
|
+
set(i: number, j: number, value: number): void;
|
|
15
|
+
static calc<TObj>(list: TObj[], method: (a: TObj, b: TObj) => number): DistanceMatrix;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=distance-matrix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distance-matrix.d.ts","sourceRoot":"","sources":["distance-matrix.ts"],"names":[],"mappings":"AAIA,2FAA2F;AAC3F,qBAAa,cAAc;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,IAAI,IAAI,YAAY,CAAuB;IAE/C,IAAI,IAAI,IAAI,MAAM,CAAuB;IAEzC;;;OAGG;gBACS,IAAI,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,MAAM;IAqB9C,OAAO,CAAC,YAAY;IAKpB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IASxB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIvC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,KAAK,MAAM,GAAG,cAAc;CAStF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/** Distance matrix class compatible with data structure of scipy.spatial.distance.pdist */
|
|
2
|
+
export class DistanceMatrix {
|
|
3
|
+
get data() { return this._data; }
|
|
4
|
+
get size() { return this._size; }
|
|
5
|
+
/**
|
|
6
|
+
* @param {Float64Array} data Distance data
|
|
7
|
+
* @param {number} m Number of original observations
|
|
8
|
+
*/
|
|
9
|
+
constructor(data, size) {
|
|
10
|
+
if (size == undefined) {
|
|
11
|
+
if (data == undefined)
|
|
12
|
+
throw new Error('Arguments error: data or size is required.');
|
|
13
|
+
this._data = data;
|
|
14
|
+
this._size = (1 + Math.sqrt(1 + 4 * 2 * this._data.length)) / 2;
|
|
15
|
+
if (this._size != Math.floor(this._size))
|
|
16
|
+
throw new Error(`Invalid data length ${this._data.length} leads to non integer size ${this._size}`);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this._size = size;
|
|
20
|
+
const dataLength = size * (size - 1) / 2;
|
|
21
|
+
if (data) {
|
|
22
|
+
if (data.length != dataLength)
|
|
23
|
+
throw new Error(`Invalid data length. Observations size ${size} requires data length ${dataLength}.`);
|
|
24
|
+
this._data = data;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this._data = new Float32Array(dataLength);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
_linearizeIJ(i, j) {
|
|
32
|
+
if (!(i < j))
|
|
33
|
+
throw new Error('i must be less than j');
|
|
34
|
+
return this._size * i + j - Math.floor(((i + 2) * (i + 1)) / 2);
|
|
35
|
+
}
|
|
36
|
+
get(i, j) {
|
|
37
|
+
if (i == j)
|
|
38
|
+
return 0;
|
|
39
|
+
else if (i < j)
|
|
40
|
+
return this._data[this._linearizeIJ(i, j)];
|
|
41
|
+
else
|
|
42
|
+
return this._data[this._linearizeIJ(j, i)];
|
|
43
|
+
}
|
|
44
|
+
set(i, j, value) {
|
|
45
|
+
this._data[this._linearizeIJ(i, j)] = value;
|
|
46
|
+
}
|
|
47
|
+
static calc(list, method) {
|
|
48
|
+
const size = list.length;
|
|
49
|
+
const res = new DistanceMatrix(undefined, size);
|
|
50
|
+
for (let i = 0; i < size; i++) {
|
|
51
|
+
for (let j = i + 1; j < size; j++)
|
|
52
|
+
res.set(i, j, method(list[i], list[j]));
|
|
53
|
+
}
|
|
54
|
+
return res;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdGFuY2UtbWF0cml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlzdGFuY2UtbWF0cml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLDJGQUEyRjtBQUMzRixNQUFNLE9BQU8sY0FBYztJQUl6QixJQUFJLElBQUksS0FBbUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUUvQyxJQUFJLElBQUksS0FBYSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRXpDOzs7T0FHRztJQUNILFlBQVksSUFBbUIsRUFBRSxJQUFhO1FBQzVDLElBQUksSUFBSSxJQUFJLFNBQVMsRUFBRTtZQUNyQixJQUFJLElBQUksSUFBSSxTQUFTO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztZQUVyRixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUssQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNoRSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sOEJBQThCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZHO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixNQUFNLFVBQVUsR0FBVyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxVQUFVO29CQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxJQUFJLHlCQUF5QixVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUN4RyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQzthQUNuQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzNDO1NBQ0Y7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ3ZDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDdkQsT0FBTyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELEdBQUcsQ0FBQyxDQUFTLEVBQUUsQ0FBUztRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1IsT0FBTyxDQUFDLENBQUM7YUFDTixJQUFJLENBQUMsR0FBRyxDQUFDO1lBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7O1lBRTNDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxLQUFhO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQU8sSUFBWSxFQUFFLE1BQW9DO1FBQ2xFLE1BQU0sSUFBSSxHQUFXLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUMvQixHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBncm9rIGZyb20gJ2RhdGFncm9rLWFwaS9ncm9rJztcbmltcG9ydCAqIGFzIHVpIGZyb20gJ2RhdGFncm9rLWFwaS91aSc7XG5pbXBvcnQgKiBhcyBERyBmcm9tICdkYXRhZ3Jvay1hcGkvZGcnO1xuXG4vKiogRGlzdGFuY2UgbWF0cml4IGNsYXNzIGNvbXBhdGlibGUgd2l0aCBkYXRhIHN0cnVjdHVyZSBvZiBzY2lweS5zcGF0aWFsLmRpc3RhbmNlLnBkaXN0ICovXG5leHBvcnQgY2xhc3MgRGlzdGFuY2VNYXRyaXgge1xuICBfZGF0YTogRmxvYXQzMkFycmF5O1xuICBfc2l6ZTogbnVtYmVyO1xuXG4gIGdldCBkYXRhKCk6IEZsb2F0MzJBcnJheSB7IHJldHVybiB0aGlzLl9kYXRhOyB9XG5cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuX3NpemU7IH1cblxuICAvKipcbiAgICogQHBhcmFtIHtGbG9hdDY0QXJyYXl9IGRhdGEgIERpc3RhbmNlIGRhdGFcbiAgICogQHBhcmFtIHtudW1iZXJ9IG0gICAgICAgICAgIE51bWJlciBvZiBvcmlnaW5hbCBvYnNlcnZhdGlvbnNcbiAgICovXG4gIGNvbnN0cnVjdG9yKGRhdGE/OiBGbG9hdDMyQXJyYXksIHNpemU/OiBudW1iZXIpIHtcbiAgICBpZiAoc2l6ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChkYXRhID09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudHMgZXJyb3I6IGRhdGEgb3Igc2l6ZSBpcyByZXF1aXJlZC4nKTtcblxuICAgICAgdGhpcy5fZGF0YSA9IGRhdGEhO1xuICAgICAgdGhpcy5fc2l6ZSA9ICgxICsgTWF0aC5zcXJ0KDEgKyA0ICogMiAqIHRoaXMuX2RhdGEubGVuZ3RoKSkgLyAyO1xuICAgICAgaWYgKHRoaXMuX3NpemUgIT0gTWF0aC5mbG9vcih0aGlzLl9zaXplKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRhdGEgbGVuZ3RoICR7dGhpcy5fZGF0YS5sZW5ndGh9IGxlYWRzIHRvIG5vbiBpbnRlZ2VyIHNpemUgJHt0aGlzLl9zaXplfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zaXplID0gc2l6ZTtcbiAgICAgIGNvbnN0IGRhdGFMZW5ndGg6IG51bWJlciA9IHNpemUgKiAoc2l6ZSAtIDEpIC8gMjtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCAhPSBkYXRhTGVuZ3RoKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkYXRhIGxlbmd0aC4gT2JzZXJ2YXRpb25zIHNpemUgJHtzaXplfSByZXF1aXJlcyBkYXRhIGxlbmd0aCAke2RhdGFMZW5ndGh9LmApO1xuICAgICAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2RhdGEgPSBuZXcgRmxvYXQzMkFycmF5KGRhdGFMZW5ndGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2xpbmVhcml6ZUlKKGk6IG51bWJlciwgajogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoIShpIDwgaikpIHRocm93IG5ldyBFcnJvcignaSBtdXN0IGJlIGxlc3MgdGhhbiBqJyk7XG4gICAgcmV0dXJuIHRoaXMuX3NpemUgKiBpICsgaiAtIE1hdGguZmxvb3IoKChpICsgMikgKiAoaSArIDEpKSAvIDIpO1xuICB9XG5cbiAgZ2V0KGk6IG51bWJlciwgajogbnVtYmVyKSB7XG4gICAgaWYgKGkgPT0gailcbiAgICAgIHJldHVybiAwO1xuICAgIGVsc2UgaWYgKGkgPCBqKVxuICAgICAgcmV0dXJuIHRoaXMuX2RhdGFbdGhpcy5fbGluZWFyaXplSUooaSwgaildO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLl9kYXRhW3RoaXMuX2xpbmVhcml6ZUlKKGosIGkpXTtcbiAgfVxuXG4gIHNldChpOiBudW1iZXIsIGo6IG51bWJlciwgdmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2RhdGFbdGhpcy5fbGluZWFyaXplSUooaSwgaildID0gdmFsdWU7XG4gIH1cblxuICBzdGF0aWMgY2FsYzxUT2JqPihsaXN0OiBUT2JqW10sIG1ldGhvZDogKGE6IFRPYmosIGI6IFRPYmopID0+IG51bWJlcik6IERpc3RhbmNlTWF0cml4IHtcbiAgICBjb25zdCBzaXplOiBudW1iZXIgPSBsaXN0Lmxlbmd0aDtcbiAgICBjb25zdCByZXMgPSBuZXcgRGlzdGFuY2VNYXRyaXgodW5kZWZpbmVkLCBzaXplKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgc2l6ZTsgaisrKVxuICAgICAgICByZXMuc2V0KGksIGosIG1ldGhvZChsaXN0W2ldLCBsaXN0W2pdKSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as DG from 'datagrok-api/dg';
|
|
2
2
|
import { NodeCuttedType, NodeType } from './index';
|
|
3
|
+
import { DistanceMatrix } from './distance-matrix';
|
|
3
4
|
export interface ITreeHelper {
|
|
4
5
|
/** Generates data frame with row per node, parent relation, distance, annotation
|
|
5
6
|
* @param {string} newick Newick format data
|
|
@@ -9,37 +10,39 @@ export interface ITreeHelper {
|
|
|
9
10
|
*/
|
|
10
11
|
newickToDf(newick: string, name: string, nodePrefix?: string, emptyParentRootSkip?: boolean): DG.DataFrame;
|
|
11
12
|
toNewick(node: NodeType | null): string;
|
|
12
|
-
getLeafList<TNode extends NodeType>(node: TNode): TNode[];
|
|
13
|
-
getNodeList<TNode extends NodeType>(node: TNode): TNode[];
|
|
13
|
+
getLeafList<TNode extends NodeType>(node: TNode | null): TNode[];
|
|
14
|
+
getNodeList<TNode extends NodeType>(node: TNode | null): TNode[];
|
|
14
15
|
/** Filters tree by leaves (by set).
|
|
15
16
|
* An internal node will be eliminated only if all its subs (children/leaves) are filtered out by {link @leaves}.
|
|
16
17
|
*/
|
|
17
|
-
filterTreeByLeaves(node: NodeType, leaves: {
|
|
18
|
+
filterTreeByLeaves(node: NodeType | null, leaves: {
|
|
18
19
|
[name: string]: any;
|
|
19
20
|
}): NodeType | null;
|
|
20
21
|
/** Collects nodes by leaves (by set).
|
|
21
22
|
* Node will be returned only if all its subs (children/leaves) are present in {@link leaves}.
|
|
22
23
|
*/
|
|
23
|
-
getNodesByLeaves<TNode extends NodeType>(node: TNode, leaves: {
|
|
24
|
+
getNodesByLeaves<TNode extends NodeType>(node: TNode | null, leaves: {
|
|
24
25
|
[name: string]: any;
|
|
25
26
|
}): TNode[];
|
|
26
|
-
treeCutAsLeaves(node: NodeType, cutHeight: number, currentHeight?: number): NodeType[];
|
|
27
|
-
treeCutAsTree(node: NodeType, cutHeight: number, keepShorts?: boolean, currentHeight?: number): NodeType | null;
|
|
27
|
+
treeCutAsLeaves(node: NodeType | null, cutHeight: number, currentHeight?: number): NodeType[];
|
|
28
|
+
treeCutAsTree(node: NodeType | null, cutHeight: number, keepShorts?: boolean, currentHeight?: number): NodeType | null;
|
|
28
29
|
/** Reorder the grid's rows according to the leaves' order in the tree.
|
|
29
30
|
* @param {string|null} leafColName Column name for leaf name in newick, null - use row index
|
|
30
31
|
*/
|
|
31
|
-
setGridOrder(tree: NodeType, grid: DG.Grid, leafColName
|
|
32
|
+
setGridOrder(tree: NodeType | null, grid: DG.Grid, leafColName?: string): [NodeType, string[]];
|
|
32
33
|
markClusters(tree: NodeCuttedType, dataDf: DG.DataFrame, leafColName: string | null, clusterColName: string, na?: any): void;
|
|
33
34
|
/**
|
|
34
35
|
* @param {string|null} leafColName Column name for leaf name in newick, null - use row index
|
|
35
36
|
*/
|
|
36
|
-
buildClusters(tree: NodeCuttedType, clusterDf: DG.DataFrame, clusterColName: string, leafColName
|
|
37
|
+
buildClusters(tree: NodeCuttedType, clusterDf: DG.DataFrame, clusterColName: string, leafColName?: string): void;
|
|
37
38
|
/** Modifies the tree ({@link node}) cutting at {@link cutHeight} creating extra nodes.
|
|
38
39
|
* @param {string|null} leafColName Column name for leaf name in newick, null - use row index
|
|
39
40
|
*/
|
|
40
41
|
cutTreeToGrid(node: NodeType, cutHeight: number, dataDf: DG.DataFrame, leafColName: string, clusterColName: string, na?: any): void;
|
|
41
42
|
/** Generate tree structures with {@link size} nodes number (counting internal).*/
|
|
42
43
|
generateTree(size: number): NodeType;
|
|
44
|
+
hierarchicalClustering(df: DG.DataFrame, distance: string, linkage: string): Promise<NodeType>;
|
|
45
|
+
hierarchicalClusteringByDistance(distance: DistanceMatrix, linkage: string): Promise<NodeType>;
|
|
43
46
|
}
|
|
44
47
|
export declare function getTreeHelper(): Promise<ITreeHelper>;
|
|
45
48
|
//# sourceMappingURL=tree-helper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-helper.d.ts","sourceRoot":"","sources":["tree-helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,cAAc,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"tree-helper.d.ts","sourceRoot":"","sources":["tree-helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,cAAc,EAAE,QAAQ,EAAC,MAAM,SAAS,CAAC;AACjD,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IAE3G,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;IAExC,WAAW,CAAC,KAAK,SAAS,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;IAEjE,WAAW,CAAC,KAAK,SAAS,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;IAEjE;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,MAAM,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,QAAQ,GAAG,IAAI,CAAC;IAE5F;;OAEG;IACH,gBAAgB,CAAC,KAAK,SAAS,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,KAAK,EAAE,CAAC;IAEvG,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAE9F,aAAa,CACX,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAAC;IAE3G;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAE/F,YAAY,CAAC,IAAI,EAAE,cAAc,EAC/B,MAAM,EAAE,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAE5F;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjH;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,EACnE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;IAE/D,kFAAkF;IAClF,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IAErC,sBAAsB,CAAC,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE/F,gCAAgC,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CAChG;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC,CAO1D"}
|
package/src/trees/tree-helper.js
CHANGED
|
@@ -17,4 +17,4 @@ export function getTreeHelper() {
|
|
|
17
17
|
return res;
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0cmVlLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQSxPQUFPLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBOER0QyxNQUFNLFVBQWdCLGFBQWE7O1FBQ2pDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFDLENBQUMsQ0FBQztRQUM5RSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7UUFFbEYsTUFBTSxHQUFHLEdBQWdCLENBQUMsTUFBTSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxtQkFBbUIsRUFBaUIsQ0FBQztRQUNuRyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGdyb2sgZnJvbSAnZGF0YWdyb2stYXBpL2dyb2snO1xuaW1wb3J0ICogYXMgdWkgZnJvbSAnZGF0YWdyb2stYXBpL3VpJztcbmltcG9ydCAqIGFzIERHIGZyb20gJ2RhdGFncm9rLWFwaS9kZyc7XG5cbmltcG9ydCB7Tm9kZUN1dHRlZFR5cGUsIE5vZGVUeXBlfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7RGlzdGFuY2VNYXRyaXh9IGZyb20gJy4vZGlzdGFuY2UtbWF0cml4JztcblxuZXhwb3J0IGludGVyZmFjZSBJVHJlZUhlbHBlciB7XG4gIC8qKiBHZW5lcmF0ZXMgZGF0YSBmcmFtZSB3aXRoIHJvdyBwZXIgbm9kZSwgcGFyZW50IHJlbGF0aW9uLCBkaXN0YW5jZSwgYW5ub3RhdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3aWNrICAgICAgICAgICAgICAgIE5ld2ljayBmb3JtYXQgZGF0YVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgICAgICAgICAgIFJlc3VsdCBkYXRhIGZyYW1lIG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5vZGVQcmVmaXggICAgICAgICAgICBQcmVmaXggZm9yIG5vZGVzIHdpdGggYXV0byBnZW5lcmF0ZWQgbmFtZSAgICpcbiAgICogQHBhcmFtIHtib29sfSAgIGVtcHR5UGFyZW50Um9vdFNraXAgICBTa2lwIHJvdyB3aXRoIHJvb3Qgbm9kZSBhbmQgZW1wdHkgcGFyZW50IChmb3IgTmV0d29yayBEaWFncmFtKVxuICAgKi9cbiAgbmV3aWNrVG9EZihuZXdpY2s6IHN0cmluZywgbmFtZTogc3RyaW5nLCBub2RlUHJlZml4Pzogc3RyaW5nLCBlbXB0eVBhcmVudFJvb3RTa2lwPzogYm9vbGVhbik6IERHLkRhdGFGcmFtZTtcblxuICB0b05ld2ljayhub2RlOiBOb2RlVHlwZSB8IG51bGwpOiBzdHJpbmc7XG5cbiAgZ2V0TGVhZkxpc3Q8VE5vZGUgZXh0ZW5kcyBOb2RlVHlwZT4obm9kZTogVE5vZGUgfCBudWxsKTogVE5vZGVbXTtcblxuICBnZXROb2RlTGlzdDxUTm9kZSBleHRlbmRzIE5vZGVUeXBlPihub2RlOiBUTm9kZSB8IG51bGwpOiBUTm9kZVtdO1xuXG4gIC8qKiBGaWx0ZXJzIHRyZWUgYnkgbGVhdmVzIChieSBzZXQpLlxuICAgKiBBbiBpbnRlcm5hbCBub2RlIHdpbGwgYmUgZWxpbWluYXRlZCBvbmx5IGlmIGFsbCBpdHMgc3VicyAoY2hpbGRyZW4vbGVhdmVzKSBhcmUgZmlsdGVyZWQgb3V0IGJ5IHtsaW5rIEBsZWF2ZXN9LlxuICAgKi9cbiAgZmlsdGVyVHJlZUJ5TGVhdmVzKG5vZGU6IE5vZGVUeXBlIHwgbnVsbCwgbGVhdmVzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSk6IE5vZGVUeXBlIHwgbnVsbDtcblxuICAvKiogQ29sbGVjdHMgbm9kZXMgYnkgbGVhdmVzIChieSBzZXQpLlxuICAgKiBOb2RlIHdpbGwgYmUgcmV0dXJuZWQgb25seSBpZiBhbGwgaXRzIHN1YnMgKGNoaWxkcmVuL2xlYXZlcykgYXJlIHByZXNlbnQgaW4ge0BsaW5rIGxlYXZlc30uXG4gICAqL1xuICBnZXROb2Rlc0J5TGVhdmVzPFROb2RlIGV4dGVuZHMgTm9kZVR5cGU+KG5vZGU6IFROb2RlIHwgbnVsbCwgbGVhdmVzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSk6IFROb2RlW107XG5cbiAgdHJlZUN1dEFzTGVhdmVzKG5vZGU6IE5vZGVUeXBlIHwgbnVsbCwgY3V0SGVpZ2h0OiBudW1iZXIsIGN1cnJlbnRIZWlnaHQ/OiBudW1iZXIpOiBOb2RlVHlwZVtdO1xuXG4gIHRyZWVDdXRBc1RyZWUoXG4gICAgbm9kZTogTm9kZVR5cGUgfCBudWxsLCBjdXRIZWlnaHQ6IG51bWJlciwga2VlcFNob3J0cz86IGJvb2xlYW4sIGN1cnJlbnRIZWlnaHQ/OiBudW1iZXIpOiBOb2RlVHlwZSB8IG51bGw7XG5cbiAgLyoqIFJlb3JkZXIgdGhlIGdyaWQncyByb3dzIGFjY29yZGluZyB0byB0aGUgbGVhdmVzJyBvcmRlciBpbiB0aGUgdHJlZS5cbiAgICogQHBhcmFtIHtzdHJpbmd8bnVsbH0gbGVhZkNvbE5hbWUgQ29sdW1uIG5hbWUgZm9yIGxlYWYgbmFtZSBpbiBuZXdpY2ssIG51bGwgLSB1c2Ugcm93IGluZGV4XG4gICAqL1xuICBzZXRHcmlkT3JkZXIodHJlZTogTm9kZVR5cGUgfCBudWxsLCBncmlkOiBERy5HcmlkLCBsZWFmQ29sTmFtZT86IHN0cmluZyk6IFtOb2RlVHlwZSwgc3RyaW5nW11dO1xuXG4gIG1hcmtDbHVzdGVycyh0cmVlOiBOb2RlQ3V0dGVkVHlwZSxcbiAgICBkYXRhRGY6IERHLkRhdGFGcmFtZSwgbGVhZkNvbE5hbWU6IHN0cmluZyB8IG51bGwsIGNsdXN0ZXJDb2xOYW1lOiBzdHJpbmcsIG5hPzogYW55KTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd8bnVsbH0gbGVhZkNvbE5hbWUgQ29sdW1uIG5hbWUgZm9yIGxlYWYgbmFtZSBpbiBuZXdpY2ssIG51bGwgLSB1c2Ugcm93IGluZGV4XG4gICAqL1xuICBidWlsZENsdXN0ZXJzKHRyZWU6IE5vZGVDdXR0ZWRUeXBlLCBjbHVzdGVyRGY6IERHLkRhdGFGcmFtZSwgY2x1c3RlckNvbE5hbWU6IHN0cmluZywgbGVhZkNvbE5hbWU/OiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKiBNb2RpZmllcyB0aGUgdHJlZSAoe0BsaW5rIG5vZGV9KSBjdXR0aW5nIGF0IHtAbGluayBjdXRIZWlnaHR9IGNyZWF0aW5nIGV4dHJhIG5vZGVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ3xudWxsfSBsZWFmQ29sTmFtZSBDb2x1bW4gbmFtZSBmb3IgbGVhZiBuYW1lIGluIG5ld2ljaywgbnVsbCAtIHVzZSByb3cgaW5kZXhcbiAgICovXG4gIGN1dFRyZWVUb0dyaWQobm9kZTogTm9kZVR5cGUsIGN1dEhlaWdodDogbnVtYmVyLCBkYXRhRGY6IERHLkRhdGFGcmFtZSxcbiAgICBsZWFmQ29sTmFtZTogc3RyaW5nLCBjbHVzdGVyQ29sTmFtZTogc3RyaW5nLCBuYT86IGFueSk6IHZvaWQ7XG5cbiAgLyoqIEdlbmVyYXRlIHRyZWUgc3RydWN0dXJlcyB3aXRoIHtAbGluayBzaXplfSBub2RlcyBudW1iZXIgKGNvdW50aW5nIGludGVybmFsKS4qL1xuICBnZW5lcmF0ZVRyZWUoc2l6ZTogbnVtYmVyKTogTm9kZVR5cGU7XG5cbiAgaGllcmFyY2hpY2FsQ2x1c3RlcmluZyhkZjogREcuRGF0YUZyYW1lLCBkaXN0YW5jZTogc3RyaW5nLCBsaW5rYWdlOiBzdHJpbmcpOiBQcm9taXNlPE5vZGVUeXBlPjtcblxuICBoaWVyYXJjaGljYWxDbHVzdGVyaW5nQnlEaXN0YW5jZShkaXN0YW5jZTogRGlzdGFuY2VNYXRyaXgsIGxpbmthZ2U6IHN0cmluZyk6IFByb21pc2U8Tm9kZVR5cGU+O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0VHJlZUhlbHBlcigpOiBQcm9taXNlPElUcmVlSGVscGVyPiB7XG4gIGNvbnN0IGZ1bmNMaXN0ID0gREcuRnVuYy5maW5kKHtwYWNrYWdlOiAnRGVuZHJvZ3JhbScsIG5hbWU6ICdnZXRUcmVlSGVscGVyJ30pO1xuICBpZiAoZnVuY0xpc3QubGVuZ3RoID09PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignUGFja2FnZSBcIlBoeWxvVHJlZVZpZXdlclwiXCIgbXVzdCBiZSBpbnN0YWxsZWQgZm9yIFRyZWVIZWxwZXIuJyk7XG5cbiAgY29uc3QgcmVzOiBJVHJlZUhlbHBlciA9IChhd2FpdCBmdW5jTGlzdFswXS5wcmVwYXJlKCkuY2FsbCgpKS5nZXRPdXRwdXRQYXJhbVZhbHVlKCkgYXMgSVRyZWVIZWxwZXI7XG4gIHJldHVybiByZXM7XG59XG4iXX0=
|