drugflow-molstar 0.2.0 → 0.2.2
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/LICENSE +201 -201
- package/README.md +15 -15
- package/build/drugflow-molstar-component-0.2.2.js +25 -0
- package/build/drugflow-molstar-light.css +1 -1
- package/build/{drugflow-molstar-plugin-0.2.0.js → drugflow-molstar-plugin-0.2.2.js} +2 -2
- package/lib/alphafold-transparency.d.ts +6 -6
- package/lib/alphafold-transparency.js +153 -153
- package/lib/app/molstar/lib/apps/docking-viewer/index.html +37 -0
- package/lib/app/molstar/lib/apps/viewer/embedded.html +44 -0
- package/lib/app/molstar/lib/apps/viewer/favicon.ico +0 -0
- package/lib/app/molstar/lib/apps/viewer/index.html +110 -0
- package/lib/app/molstar/lib/examples/alpha-orbitals/index.html +73 -0
- package/lib/app/molstar/lib/examples/basic-wrapper/index.html +138 -0
- package/lib/app/molstar/lib/examples/lighting/index.html +89 -0
- package/lib/app/molstar/lib/examples/proteopedia-wrapper/index.html +237 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/base.scss +33 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/controls-base.scss +334 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/controls.scss +419 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/help.scss +27 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/line-graph.scss +68 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/log.scss +100 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/misc.scss +644 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/sequence.scss +126 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/slider.scss +166 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/toast.scss +84 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/transformer.scss +164 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/components/viewport.scss +128 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/layout/common.scss +72 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +90 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +99 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +109 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/layout.scss +41 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/logo.scss +13 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/normalize.scss +210 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/ui.scss +41 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/base/variables.scss +86 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/blue.scss +2 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/colors/blue.scss +24 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/colors/dark.scss +24 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/colors/light.scss +30 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/dark.scss +2 -0
- package/lib/app/molstar/lib/mol-plugin-ui/skin/light.scss +2 -0
- package/lib/custom-events.d.ts +4 -4
- package/lib/custom-events.js +56 -56
- package/lib/domain-annotations/behavior.d.ts +5 -5
- package/lib/domain-annotations/behavior.js +49 -49
- package/lib/domain-annotations/color.d.ts +10 -10
- package/lib/domain-annotations/color.js +78 -78
- package/lib/domain-annotations/prop.d.ts +35 -35
- package/lib/domain-annotations/prop.js +160 -160
- package/lib/drugflow-molstar-component-build-0.1.2.js +4268 -0
- package/lib/drugflow-molstar-component-build-0.1.2.js.LICENSE.txt +24 -0
- package/lib/drugflow-molstar-component-build-0.1.2.js.map +1 -0
- package/lib/drugflow-molstar-component-build-0.1.3.js +2 -0
- package/lib/drugflow-molstar-component-build-0.1.3.js.LICENSE.txt +24 -0
- package/lib/drugflow-molstar-component-build-0.1.4.js +2 -0
- package/lib/drugflow-molstar-component-build-0.1.4.js.LICENSE.txt +24 -0
- package/lib/drugflow-molstar-component-build-0.1.6.js +2 -0
- package/lib/drugflow-molstar-component-build-0.1.6.js.LICENSE.txt +24 -0
- package/lib/drugflow-molstar-component-build-0.2.2.js +2 -0
- package/lib/drugflow-molstar-component-build-0.2.2.js.LICENSE.txt +24 -0
- package/lib/helpers.d.ts +82 -81
- package/lib/helpers.js +278 -278
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1274 -1239
- package/lib/labels.d.ts +2 -2
- package/lib/labels.js +42 -42
- package/lib/loci-details.d.ts +27 -27
- package/lib/loci-details.js +128 -128
- package/lib/pdbe-molstar-component-build-3.1.2.js +2 -0
- package/lib/pdbe-molstar-component-build-3.1.2.js.LICENSE.txt +24 -0
- package/lib/sifts-mapping.d.ts +16 -16
- package/lib/sifts-mapping.js +83 -83
- package/lib/sifts-mappings-behaviour.d.ts +5 -5
- package/lib/sifts-mappings-behaviour.js +64 -64
- package/lib/spec.d.ts +76 -76
- package/lib/spec.js +105 -105
- package/lib/subscribe-events.d.ts +1 -1
- package/lib/subscribe-events.js +194 -194
- package/lib/superposition-export.d.ts +4 -4
- package/lib/superposition-export.js +152 -152
- package/lib/superposition-focus-representation.d.ts +16 -16
- package/lib/superposition-focus-representation.js +153 -153
- package/lib/superposition-sifts-mapping.d.ts +22 -22
- package/lib/superposition-sifts-mapping.js +159 -159
- package/lib/superposition.d.ts +18 -18
- package/lib/superposition.js +794 -794
- package/lib/ui/alphafold-superposition.d.ts +56 -56
- package/lib/ui/alphafold-superposition.js +178 -178
- package/lib/ui/alphafold-tranparency.d.ts +22 -22
- package/lib/ui/alphafold-tranparency.js +65 -65
- package/lib/ui/annotation-controls.d.ts +24 -24
- package/lib/ui/annotation-controls.js +166 -166
- package/lib/ui/export-superposition.d.ts +6 -6
- package/lib/ui/export-superposition.js +71 -71
- package/lib/ui/pdbe-left-panel.d.ts +18 -18
- package/lib/ui/pdbe-left-panel.js +167 -167
- package/lib/ui/pdbe-screenshot-controls.d.ts +20 -20
- package/lib/ui/pdbe-screenshot-controls.js +101 -101
- package/lib/ui/pdbe-structure-controls.d.ts +17 -17
- package/lib/ui/pdbe-structure-controls.js +70 -70
- package/lib/ui/pdbe-viewport-controls.d.ts +6 -6
- package/lib/ui/pdbe-viewport-controls.js +56 -56
- package/lib/ui/segment-tree.d.ts +18 -18
- package/lib/ui/segment-tree.js +804 -804
- package/lib/ui/superposition-components.d.ts +10 -10
- package/lib/ui/superposition-components.js +435 -435
- package/lib/ui/superposition-viewport.d.ts +5 -5
- package/lib/ui/superposition-viewport.js +23 -23
- package/package.json +79 -79
- /package/build/{drugflow-molstar-0.2.0.css → drugflow-molstar-0.2.2.css} +0 -0
- /package/build/{drugflow-molstar-plugin-0.2.0.js.LICENSE.txt → drugflow-molstar-plugin-0.2.2.js.LICENSE.txt} +0 -0
|
@@ -1,159 +1,159 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.alignAndSuperposeWithSIFTSMapping = void 0;
|
|
4
|
-
var int_1 = require("Molstar/mol-data/int");
|
|
5
|
-
var minimize_rmsd_1 = require("Molstar/mol-math/linear-algebra/3d/minimize-rmsd");
|
|
6
|
-
var sifts_mapping_1 = require("./sifts-mapping");
|
|
7
|
-
var element_1 = require("Molstar/mol-model/structure/structure/element");
|
|
8
|
-
function alignAndSuperposeWithSIFTSMapping(structures, options) {
|
|
9
|
-
var _a, _b;
|
|
10
|
-
var indexMap = new Map();
|
|
11
|
-
for (var i = 0; i < structures.length; i++) {
|
|
12
|
-
var includeResidueTest = (_a = options === null || options === void 0 ? void 0 : options.includeResidueTest) !== null && _a !== void 0 ? _a : _includeAllResidues;
|
|
13
|
-
if ((options === null || options === void 0 ? void 0 : options.applyTestIndex) && !options.applyTestIndex.includes(i))
|
|
14
|
-
includeResidueTest = _includeAllResidues;
|
|
15
|
-
buildIndex(structures[i], indexMap, i, (_b = options === null || options === void 0 ? void 0 : options.traceOnly) !== null && _b !== void 0 ? _b : true, includeResidueTest);
|
|
16
|
-
}
|
|
17
|
-
var index = Array.from(indexMap.values());
|
|
18
|
-
// TODO: support non-first structure pivots
|
|
19
|
-
var pairs = findPairs(structures.length, index);
|
|
20
|
-
var zeroOverlapPairs = [];
|
|
21
|
-
var failedPairs = [];
|
|
22
|
-
var entries = [];
|
|
23
|
-
for (var _i = 0, pairs_1 = pairs; _i < pairs_1.length; _i++) {
|
|
24
|
-
var p = pairs_1[_i];
|
|
25
|
-
if (p.count === 0) {
|
|
26
|
-
zeroOverlapPairs.push([p.i, p.j]);
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
var _c = getPositionTables(index, p.i, p.j, p.count), a = _c[0], b = _c[1];
|
|
30
|
-
var transform = minimize_rmsd_1.MinimizeRmsd.compute({ a: a, b: b });
|
|
31
|
-
if (Number.isNaN(transform.rmsd)) {
|
|
32
|
-
failedPairs.push([p.i, p.j]);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
entries.push({ transform: transform, pivot: p.i, other: p.j });
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return { entries: entries, zeroOverlapPairs: zeroOverlapPairs, failedPairs: failedPairs };
|
|
40
|
-
}
|
|
41
|
-
exports.alignAndSuperposeWithSIFTSMapping = alignAndSuperposeWithSIFTSMapping;
|
|
42
|
-
function getPositionTables(index, pivot, other, N) {
|
|
43
|
-
var xs = minimize_rmsd_1.MinimizeRmsd.Positions.empty(N);
|
|
44
|
-
var ys = minimize_rmsd_1.MinimizeRmsd.Positions.empty(N);
|
|
45
|
-
var o = 0;
|
|
46
|
-
for (var _i = 0, index_1 = index; _i < index_1.length; _i++) {
|
|
47
|
-
var pivots = index_1[_i].pivots;
|
|
48
|
-
var a = pivots[pivot];
|
|
49
|
-
var b = pivots[other];
|
|
50
|
-
if (!a || !b)
|
|
51
|
-
continue;
|
|
52
|
-
var l = Math.min(a[2] - a[1], b[2] - b[1]);
|
|
53
|
-
// TODO: check if residue types match?
|
|
54
|
-
for (var i = 0; i < l; i++) {
|
|
55
|
-
var eI = (a[1] + i);
|
|
56
|
-
xs.x[o] = a[0].conformation.x(eI);
|
|
57
|
-
xs.y[o] = a[0].conformation.y(eI);
|
|
58
|
-
xs.z[o] = a[0].conformation.z(eI);
|
|
59
|
-
eI = (b[1] + i);
|
|
60
|
-
ys.x[o] = b[0].conformation.x(eI);
|
|
61
|
-
ys.y[o] = b[0].conformation.y(eI);
|
|
62
|
-
ys.z[o] = b[0].conformation.z(eI);
|
|
63
|
-
o++;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return [xs, ys];
|
|
67
|
-
}
|
|
68
|
-
function findPairs(N, index) {
|
|
69
|
-
var pairwiseCounts = [];
|
|
70
|
-
for (var i = 0; i < N; i++) {
|
|
71
|
-
pairwiseCounts[i] = [];
|
|
72
|
-
for (var j = 0; j < N; j++)
|
|
73
|
-
pairwiseCounts[i][j] = 0;
|
|
74
|
-
}
|
|
75
|
-
for (var _i = 0, index_2 = index; _i < index_2.length; _i++) {
|
|
76
|
-
var pivots = index_2[_i].pivots;
|
|
77
|
-
for (var i = 0; i < N; i++) {
|
|
78
|
-
if (!pivots[i])
|
|
79
|
-
continue;
|
|
80
|
-
var lI = pivots[i][2] - pivots[i][1];
|
|
81
|
-
for (var j = i + 1; j < N; j++) {
|
|
82
|
-
if (!pivots[j])
|
|
83
|
-
continue;
|
|
84
|
-
var lJ = pivots[j][2] - pivots[j][1];
|
|
85
|
-
pairwiseCounts[i][j] = pairwiseCounts[i][j] + Math.min(lI, lJ);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
var ret = [];
|
|
90
|
-
for (var j = 1; j < N; j++) {
|
|
91
|
-
ret[j - 1] = { i: 0, j: j, count: pairwiseCounts[0][j] };
|
|
92
|
-
}
|
|
93
|
-
// TODO: support non-first structure pivots
|
|
94
|
-
// for (let i = 0; i < N - 1; i++) {
|
|
95
|
-
// let max = 0, maxJ = i;
|
|
96
|
-
// for (let j = i + 1; j < N; j++) {
|
|
97
|
-
// if (pairwiseCounts[i][j] > max) {
|
|
98
|
-
// maxJ = j;
|
|
99
|
-
// max = pairwiseCounts[i][j];
|
|
100
|
-
// }
|
|
101
|
-
// }
|
|
102
|
-
// ret[i] = { i, j: maxJ, count: max };
|
|
103
|
-
// }
|
|
104
|
-
return ret;
|
|
105
|
-
}
|
|
106
|
-
function _includeAllResidues() { return true; }
|
|
107
|
-
function buildIndex(structure, index, sI, traceOnly, includeTest) {
|
|
108
|
-
var _a;
|
|
109
|
-
var loc = element_1.StructureElement.Location.create(structure);
|
|
110
|
-
for (var _i = 0, _b = structure.units; _i < _b.length; _i++) {
|
|
111
|
-
var unit = _b[_i];
|
|
112
|
-
if (unit.kind !== 0 /* Atomic */)
|
|
113
|
-
continue;
|
|
114
|
-
var elements = unit.elements, model = unit.model;
|
|
115
|
-
loc.unit = unit;
|
|
116
|
-
var map = sifts_mapping_1.SIFTSMapping.Provider.get(model).value;
|
|
117
|
-
if (!map)
|
|
118
|
-
return;
|
|
119
|
-
var dbName = map.dbName, accession = map.accession, num = map.num;
|
|
120
|
-
var chainsIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.chainAtomSegments, elements);
|
|
121
|
-
var residuesIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.residueAtomSegments, elements);
|
|
122
|
-
var traceElementIndex = unit.model.atomicHierarchy.derived.residue.traceElementIndex;
|
|
123
|
-
while (chainsIt.hasNext) {
|
|
124
|
-
var chainSegment = chainsIt.move();
|
|
125
|
-
residuesIt.setSegment(chainSegment);
|
|
126
|
-
while (residuesIt.hasNext) {
|
|
127
|
-
var residueSegment = residuesIt.move();
|
|
128
|
-
var rI = residueSegment.index;
|
|
129
|
-
if (!dbName[rI])
|
|
130
|
-
continue;
|
|
131
|
-
var traceElement = traceElementIndex[rI];
|
|
132
|
-
var start = void 0, end = void 0;
|
|
133
|
-
if (traceOnly) {
|
|
134
|
-
start = traceElement;
|
|
135
|
-
if (start === -1)
|
|
136
|
-
continue;
|
|
137
|
-
end = start + 1;
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
start = elements[residueSegment.start];
|
|
141
|
-
end = elements[residueSegment.end - 1] + 1;
|
|
142
|
-
}
|
|
143
|
-
loc.element = (traceElement >= 0 ? traceElement : start);
|
|
144
|
-
if (!includeTest(loc, rI, start, end))
|
|
145
|
-
continue;
|
|
146
|
-
var key = "".concat(dbName[rI], "-").concat(accession[rI].split('-')[0], "-").concat(num[rI]);
|
|
147
|
-
if (!index.has(key)) {
|
|
148
|
-
index.set(key, { key: key, pivots: (_a = {}, _a[sI] = [unit, start, end], _a) });
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
var entry = index.get(key);
|
|
152
|
-
if (!entry.pivots[sI]) {
|
|
153
|
-
entry.pivots[sI] = [unit, start, end];
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.alignAndSuperposeWithSIFTSMapping = void 0;
|
|
4
|
+
var int_1 = require("Molstar/mol-data/int");
|
|
5
|
+
var minimize_rmsd_1 = require("Molstar/mol-math/linear-algebra/3d/minimize-rmsd");
|
|
6
|
+
var sifts_mapping_1 = require("./sifts-mapping");
|
|
7
|
+
var element_1 = require("Molstar/mol-model/structure/structure/element");
|
|
8
|
+
function alignAndSuperposeWithSIFTSMapping(structures, options) {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
var indexMap = new Map();
|
|
11
|
+
for (var i = 0; i < structures.length; i++) {
|
|
12
|
+
var includeResidueTest = (_a = options === null || options === void 0 ? void 0 : options.includeResidueTest) !== null && _a !== void 0 ? _a : _includeAllResidues;
|
|
13
|
+
if ((options === null || options === void 0 ? void 0 : options.applyTestIndex) && !options.applyTestIndex.includes(i))
|
|
14
|
+
includeResidueTest = _includeAllResidues;
|
|
15
|
+
buildIndex(structures[i], indexMap, i, (_b = options === null || options === void 0 ? void 0 : options.traceOnly) !== null && _b !== void 0 ? _b : true, includeResidueTest);
|
|
16
|
+
}
|
|
17
|
+
var index = Array.from(indexMap.values());
|
|
18
|
+
// TODO: support non-first structure pivots
|
|
19
|
+
var pairs = findPairs(structures.length, index);
|
|
20
|
+
var zeroOverlapPairs = [];
|
|
21
|
+
var failedPairs = [];
|
|
22
|
+
var entries = [];
|
|
23
|
+
for (var _i = 0, pairs_1 = pairs; _i < pairs_1.length; _i++) {
|
|
24
|
+
var p = pairs_1[_i];
|
|
25
|
+
if (p.count === 0) {
|
|
26
|
+
zeroOverlapPairs.push([p.i, p.j]);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
var _c = getPositionTables(index, p.i, p.j, p.count), a = _c[0], b = _c[1];
|
|
30
|
+
var transform = minimize_rmsd_1.MinimizeRmsd.compute({ a: a, b: b });
|
|
31
|
+
if (Number.isNaN(transform.rmsd)) {
|
|
32
|
+
failedPairs.push([p.i, p.j]);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
entries.push({ transform: transform, pivot: p.i, other: p.j });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return { entries: entries, zeroOverlapPairs: zeroOverlapPairs, failedPairs: failedPairs };
|
|
40
|
+
}
|
|
41
|
+
exports.alignAndSuperposeWithSIFTSMapping = alignAndSuperposeWithSIFTSMapping;
|
|
42
|
+
function getPositionTables(index, pivot, other, N) {
|
|
43
|
+
var xs = minimize_rmsd_1.MinimizeRmsd.Positions.empty(N);
|
|
44
|
+
var ys = minimize_rmsd_1.MinimizeRmsd.Positions.empty(N);
|
|
45
|
+
var o = 0;
|
|
46
|
+
for (var _i = 0, index_1 = index; _i < index_1.length; _i++) {
|
|
47
|
+
var pivots = index_1[_i].pivots;
|
|
48
|
+
var a = pivots[pivot];
|
|
49
|
+
var b = pivots[other];
|
|
50
|
+
if (!a || !b)
|
|
51
|
+
continue;
|
|
52
|
+
var l = Math.min(a[2] - a[1], b[2] - b[1]);
|
|
53
|
+
// TODO: check if residue types match?
|
|
54
|
+
for (var i = 0; i < l; i++) {
|
|
55
|
+
var eI = (a[1] + i);
|
|
56
|
+
xs.x[o] = a[0].conformation.x(eI);
|
|
57
|
+
xs.y[o] = a[0].conformation.y(eI);
|
|
58
|
+
xs.z[o] = a[0].conformation.z(eI);
|
|
59
|
+
eI = (b[1] + i);
|
|
60
|
+
ys.x[o] = b[0].conformation.x(eI);
|
|
61
|
+
ys.y[o] = b[0].conformation.y(eI);
|
|
62
|
+
ys.z[o] = b[0].conformation.z(eI);
|
|
63
|
+
o++;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return [xs, ys];
|
|
67
|
+
}
|
|
68
|
+
function findPairs(N, index) {
|
|
69
|
+
var pairwiseCounts = [];
|
|
70
|
+
for (var i = 0; i < N; i++) {
|
|
71
|
+
pairwiseCounts[i] = [];
|
|
72
|
+
for (var j = 0; j < N; j++)
|
|
73
|
+
pairwiseCounts[i][j] = 0;
|
|
74
|
+
}
|
|
75
|
+
for (var _i = 0, index_2 = index; _i < index_2.length; _i++) {
|
|
76
|
+
var pivots = index_2[_i].pivots;
|
|
77
|
+
for (var i = 0; i < N; i++) {
|
|
78
|
+
if (!pivots[i])
|
|
79
|
+
continue;
|
|
80
|
+
var lI = pivots[i][2] - pivots[i][1];
|
|
81
|
+
for (var j = i + 1; j < N; j++) {
|
|
82
|
+
if (!pivots[j])
|
|
83
|
+
continue;
|
|
84
|
+
var lJ = pivots[j][2] - pivots[j][1];
|
|
85
|
+
pairwiseCounts[i][j] = pairwiseCounts[i][j] + Math.min(lI, lJ);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
var ret = [];
|
|
90
|
+
for (var j = 1; j < N; j++) {
|
|
91
|
+
ret[j - 1] = { i: 0, j: j, count: pairwiseCounts[0][j] };
|
|
92
|
+
}
|
|
93
|
+
// TODO: support non-first structure pivots
|
|
94
|
+
// for (let i = 0; i < N - 1; i++) {
|
|
95
|
+
// let max = 0, maxJ = i;
|
|
96
|
+
// for (let j = i + 1; j < N; j++) {
|
|
97
|
+
// if (pairwiseCounts[i][j] > max) {
|
|
98
|
+
// maxJ = j;
|
|
99
|
+
// max = pairwiseCounts[i][j];
|
|
100
|
+
// }
|
|
101
|
+
// }
|
|
102
|
+
// ret[i] = { i, j: maxJ, count: max };
|
|
103
|
+
// }
|
|
104
|
+
return ret;
|
|
105
|
+
}
|
|
106
|
+
function _includeAllResidues() { return true; }
|
|
107
|
+
function buildIndex(structure, index, sI, traceOnly, includeTest) {
|
|
108
|
+
var _a;
|
|
109
|
+
var loc = element_1.StructureElement.Location.create(structure);
|
|
110
|
+
for (var _i = 0, _b = structure.units; _i < _b.length; _i++) {
|
|
111
|
+
var unit = _b[_i];
|
|
112
|
+
if (unit.kind !== 0 /* Atomic */)
|
|
113
|
+
continue;
|
|
114
|
+
var elements = unit.elements, model = unit.model;
|
|
115
|
+
loc.unit = unit;
|
|
116
|
+
var map = sifts_mapping_1.SIFTSMapping.Provider.get(model).value;
|
|
117
|
+
if (!map)
|
|
118
|
+
return;
|
|
119
|
+
var dbName = map.dbName, accession = map.accession, num = map.num;
|
|
120
|
+
var chainsIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.chainAtomSegments, elements);
|
|
121
|
+
var residuesIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.residueAtomSegments, elements);
|
|
122
|
+
var traceElementIndex = unit.model.atomicHierarchy.derived.residue.traceElementIndex;
|
|
123
|
+
while (chainsIt.hasNext) {
|
|
124
|
+
var chainSegment = chainsIt.move();
|
|
125
|
+
residuesIt.setSegment(chainSegment);
|
|
126
|
+
while (residuesIt.hasNext) {
|
|
127
|
+
var residueSegment = residuesIt.move();
|
|
128
|
+
var rI = residueSegment.index;
|
|
129
|
+
if (!dbName[rI])
|
|
130
|
+
continue;
|
|
131
|
+
var traceElement = traceElementIndex[rI];
|
|
132
|
+
var start = void 0, end = void 0;
|
|
133
|
+
if (traceOnly) {
|
|
134
|
+
start = traceElement;
|
|
135
|
+
if (start === -1)
|
|
136
|
+
continue;
|
|
137
|
+
end = start + 1;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
start = elements[residueSegment.start];
|
|
141
|
+
end = elements[residueSegment.end - 1] + 1;
|
|
142
|
+
}
|
|
143
|
+
loc.element = (traceElement >= 0 ? traceElement : start);
|
|
144
|
+
if (!includeTest(loc, rI, start, end))
|
|
145
|
+
continue;
|
|
146
|
+
var key = "".concat(dbName[rI], "-").concat(accession[rI].split('-')[0], "-").concat(num[rI]);
|
|
147
|
+
if (!index.has(key)) {
|
|
148
|
+
index.set(key, { key: key, pivots: (_a = {}, _a[sI] = [unit, start, end], _a) });
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
var entry = index.get(key);
|
|
152
|
+
if (!entry.pivots[sI]) {
|
|
153
|
+
entry.pivots[sI] = [unit, start, end];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
package/lib/superposition.d.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Mat4 } from 'Molstar/mol-math/linear-algebra';
|
|
2
|
-
import { PluginContext } from 'Molstar/mol-plugin/context';
|
|
3
|
-
declare type ClusterRec = {
|
|
4
|
-
pdb_id: string;
|
|
5
|
-
auth_asym_id: string;
|
|
6
|
-
struct_asym_id: string;
|
|
7
|
-
entity_id: string;
|
|
8
|
-
is_representative: boolean;
|
|
9
|
-
};
|
|
10
|
-
export declare type SuperpositionData = {
|
|
11
|
-
data: ClusterRec[];
|
|
12
|
-
matrix: Mat4[];
|
|
13
|
-
};
|
|
14
|
-
export declare function initSuperposition(plugin: PluginContext): Promise<void>;
|
|
15
|
-
export declare function loadAfStructure(plugin: PluginContext): Promise<string | false>;
|
|
16
|
-
export declare function superposeAf(plugin: PluginContext, traceOnly: boolean, segmentIndex?: number): Promise<true | undefined>;
|
|
17
|
-
export declare function renderSuperposition(plugin: PluginContext, segmentIndex: number, entryList: ClusterRec[]): Promise<void>;
|
|
18
|
-
export {};
|
|
1
|
+
import { Mat4 } from 'Molstar/mol-math/linear-algebra';
|
|
2
|
+
import { PluginContext } from 'Molstar/mol-plugin/context';
|
|
3
|
+
declare type ClusterRec = {
|
|
4
|
+
pdb_id: string;
|
|
5
|
+
auth_asym_id: string;
|
|
6
|
+
struct_asym_id: string;
|
|
7
|
+
entity_id: string;
|
|
8
|
+
is_representative: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare type SuperpositionData = {
|
|
11
|
+
data: ClusterRec[];
|
|
12
|
+
matrix: Mat4[];
|
|
13
|
+
};
|
|
14
|
+
export declare function initSuperposition(plugin: PluginContext): Promise<void>;
|
|
15
|
+
export declare function loadAfStructure(plugin: PluginContext): Promise<string | false>;
|
|
16
|
+
export declare function superposeAf(plugin: PluginContext, traceOnly: boolean, segmentIndex?: number): Promise<true | undefined>;
|
|
17
|
+
export declare function renderSuperposition(plugin: PluginContext, segmentIndex: number, entryList: ClusterRec[]): Promise<void>;
|
|
18
|
+
export {};
|