molstar 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +194 -194
- package/build/viewer/embedded.html +43 -43
- package/build/viewer/index.html +106 -106
- package/build/viewer/molstar.js +1 -1
- package/lib/apps/docking-viewer/index.html +36 -36
- package/lib/apps/viewer/embedded.html +43 -43
- package/lib/apps/viewer/index.html +106 -106
- package/lib/commonjs/mol-geo/geometry/cylinders/cylinders.d.ts +2 -2
- package/lib/commonjs/mol-geo/geometry/lines/lines.d.ts +0 -1
- package/lib/commonjs/mol-geo/geometry/points/points.d.ts +1 -1
- package/lib/commonjs/mol-io/reader/cif/schema/mmcif.d.ts +22 -0
- package/lib/commonjs/mol-io/reader/cif/schema/mmcif.js +22 -0
- package/lib/commonjs/mol-model/structure/export/categories/atom_site.js +68 -1
- package/lib/commonjs/mol-model/structure/structure/util/superposition-sifts-mapping.d.ts +21 -0
- package/lib/commonjs/mol-model/structure/structure/util/{superposition-db-mapping.js → superposition-sifts-mapping.js} +40 -20
- package/lib/commonjs/mol-model-formats/structure/basic/schema.d.ts +5 -0
- package/lib/commonjs/mol-model-formats/structure/common/property.d.ts +5 -2
- package/lib/commonjs/mol-model-formats/structure/common/property.js +20 -8
- package/lib/commonjs/mol-model-formats/structure/property/bonds/index-pair.d.ts +1 -0
- package/lib/commonjs/mol-model-formats/structure/property/bonds/index-pair.js +2 -1
- package/lib/commonjs/mol-model-props/sequence/{best-database-mapping.d.ts → sifts-mapping.d.ts} +7 -5
- package/lib/commonjs/mol-model-props/sequence/{best-database-mapping.js → sifts-mapping.js} +29 -26
- package/lib/{mol-model-props/sequence/themes/best-database-mapping.d.ts → commonjs/mol-model-props/sequence/themes/sifts-mapping.d.ts} +5 -5
- package/lib/commonjs/mol-model-props/sequence/themes/{best-database-mapping.js → sifts-mapping.js} +22 -22
- package/lib/commonjs/mol-plugin/behavior/dynamic/custom-props/sequence/{best-database-mapping.d.ts → sifts-mapping.d.ts} +1 -1
- package/lib/commonjs/mol-plugin/behavior/dynamic/custom-props/sequence/{best-database-mapping.js → sifts-mapping.js} +11 -11
- package/lib/commonjs/mol-plugin/behavior/dynamic/custom-props.d.ts +1 -1
- package/lib/commonjs/mol-plugin/behavior/dynamic/custom-props.js +2 -2
- package/lib/commonjs/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +2 -3
- package/lib/commonjs/mol-plugin-ui/structure/superposition.d.ts +4 -1
- package/lib/commonjs/mol-plugin-ui/structure/superposition.js +66 -30
- package/lib/commonjs/mol-script/language/builder.d.ts +1 -0
- package/lib/examples/alpha-orbitals/index.html +61 -61
- package/lib/examples/basic-wrapper/index.html +137 -137
- package/lib/examples/lighting/index.html +88 -88
- package/lib/examples/proteopedia-wrapper/index.html +236 -236
- package/lib/mol-geo/geometry/cylinders/cylinders.d.ts +2 -2
- package/lib/mol-geo/geometry/lines/lines.d.ts +0 -1
- package/lib/mol-geo/geometry/points/points.d.ts +1 -1
- package/lib/mol-io/reader/cif/schema/mmcif.d.ts +22 -0
- package/lib/mol-io/reader/cif/schema/mmcif.js +22 -0
- package/lib/mol-model/structure/export/categories/atom_site.js +68 -1
- package/lib/mol-model/structure/structure/util/superposition-sifts-mapping.d.ts +21 -0
- package/lib/mol-model/structure/structure/util/{superposition-db-mapping.js → superposition-sifts-mapping.js} +38 -18
- package/lib/mol-model-formats/structure/basic/schema.d.ts +5 -0
- package/lib/mol-model-formats/structure/common/property.d.ts +5 -2
- package/lib/mol-model-formats/structure/common/property.js +20 -8
- package/lib/mol-model-formats/structure/property/bonds/index-pair.d.ts +1 -0
- package/lib/mol-model-formats/structure/property/bonds/index-pair.js +2 -1
- package/lib/mol-model-props/sequence/{best-database-mapping.d.ts → sifts-mapping.d.ts} +7 -5
- package/lib/mol-model-props/sequence/{best-database-mapping.js → sifts-mapping.js} +28 -25
- package/lib/{commonjs/mol-model-props/sequence/themes/best-database-mapping.d.ts → mol-model-props/sequence/themes/sifts-mapping.d.ts} +5 -5
- package/lib/mol-model-props/sequence/themes/{best-database-mapping.js → sifts-mapping.js} +19 -19
- package/lib/mol-plugin/behavior/dynamic/custom-props/sequence/{best-database-mapping.d.ts → sifts-mapping.d.ts} +1 -1
- package/lib/mol-plugin/behavior/dynamic/custom-props/sequence/{best-database-mapping.js → sifts-mapping.js} +8 -8
- package/lib/mol-plugin/behavior/dynamic/custom-props.d.ts +1 -1
- package/lib/mol-plugin/behavior/dynamic/custom-props.js +1 -1
- package/lib/mol-plugin/behavior/dynamic/volume-streaming/model.d.ts +2 -3
- package/lib/mol-plugin/version.js +2 -2
- package/lib/mol-plugin-ui/skin/base/base.scss +32 -32
- package/lib/mol-plugin-ui/skin/base/components/controls-base.scss +333 -333
- package/lib/mol-plugin-ui/skin/base/components/controls.scss +418 -418
- package/lib/mol-plugin-ui/skin/base/components/help.scss +27 -27
- package/lib/mol-plugin-ui/skin/base/components/line-graph.scss +67 -67
- package/lib/mol-plugin-ui/skin/base/components/log.scss +100 -100
- package/lib/mol-plugin-ui/skin/base/components/misc.scss +643 -643
- package/lib/mol-plugin-ui/skin/base/components/sequence.scss +125 -125
- package/lib/mol-plugin-ui/skin/base/components/slider.scss +165 -165
- package/lib/mol-plugin-ui/skin/base/components/tasks.scss +99 -99
- package/lib/mol-plugin-ui/skin/base/components/toast.scss +83 -83
- package/lib/mol-plugin-ui/skin/base/components/transformer.scss +163 -163
- package/lib/mol-plugin-ui/skin/base/components/viewport.scss +127 -127
- package/lib/mol-plugin-ui/skin/base/layout/common.scss +71 -71
- package/lib/mol-plugin-ui/skin/base/layout/controls-landscape.scss +89 -89
- package/lib/mol-plugin-ui/skin/base/layout/controls-outside.scss +98 -98
- package/lib/mol-plugin-ui/skin/base/layout/controls-portrait.scss +108 -108
- package/lib/mol-plugin-ui/skin/base/layout.scss +40 -40
- package/lib/mol-plugin-ui/skin/base/logo.scss +12 -12
- package/lib/mol-plugin-ui/skin/base/normalize.scss +209 -209
- package/lib/mol-plugin-ui/skin/base/ui.scss +40 -40
- package/lib/mol-plugin-ui/skin/base/variables.scss +85 -85
- package/lib/mol-plugin-ui/skin/blue.scss +1 -1
- package/lib/mol-plugin-ui/skin/colors/blue.scss +23 -23
- package/lib/mol-plugin-ui/skin/colors/dark.scss +23 -23
- package/lib/mol-plugin-ui/skin/colors/light.scss +29 -29
- package/lib/mol-plugin-ui/skin/dark.scss +1 -1
- package/lib/mol-plugin-ui/skin/light.scss +1 -1
- package/lib/mol-plugin-ui/structure/superposition.d.ts +4 -1
- package/lib/mol-plugin-ui/structure/superposition.js +66 -30
- package/lib/mol-script/language/builder.d.ts +1 -0
- package/package.json +160 -160
- package/lib/commonjs/mol-model/structure/structure/util/superposition-db-mapping.d.ts +0 -13
- package/lib/mol-model/structure/structure/util/superposition-db-mapping.d.ts +0 -13
|
@@ -1,34 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Copyright (c) 2021 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
|
+
* Copyright (c) 2021-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
4
4
|
*
|
|
5
5
|
* @author David Sehnal <david.sehnal@gmail.com>
|
|
6
|
+
* @author Sebastian Bittrich <sebastian.bittrich@rcsb.org>
|
|
6
7
|
*/
|
|
7
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
9
|
+
exports.alignAndSuperposeWithSIFTSMapping = void 0;
|
|
9
10
|
var int_1 = require("../../../../mol-data/int");
|
|
10
|
-
var linear_algebra_1 = require("../../../../mol-math/linear-algebra");
|
|
11
11
|
var minimize_rmsd_1 = require("../../../../mol-math/linear-algebra/3d/minimize-rmsd");
|
|
12
|
-
var
|
|
13
|
-
function
|
|
12
|
+
var sifts_mapping_1 = require("../../../../mol-model-props/sequence/sifts-mapping");
|
|
13
|
+
function alignAndSuperposeWithSIFTSMapping(structures, options) {
|
|
14
|
+
var _a;
|
|
14
15
|
var indexMap = new Map();
|
|
15
16
|
for (var i = 0; i < structures.length; i++) {
|
|
16
|
-
buildIndex(structures[i], indexMap, i);
|
|
17
|
+
buildIndex(structures[i], indexMap, i, (_a = options === null || options === void 0 ? void 0 : options.traceOnly) !== null && _a !== void 0 ? _a : true);
|
|
17
18
|
}
|
|
18
19
|
var index = Array.from(indexMap.values());
|
|
19
20
|
// TODO: support non-first structure pivots
|
|
20
21
|
var pairs = findPairs(structures.length, index);
|
|
21
|
-
var
|
|
22
|
+
var zeroOverlapPairs = [];
|
|
23
|
+
var failedPairs = [];
|
|
24
|
+
var entries = [];
|
|
22
25
|
for (var _i = 0, pairs_1 = pairs; _i < pairs_1.length; _i++) {
|
|
23
26
|
var p = pairs_1[_i];
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
if (p.count === 0) {
|
|
28
|
+
zeroOverlapPairs.push([p.i, p.j]);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
var _b = getPositionTables(index, p.i, p.j, p.count), a = _b[0], b = _b[1];
|
|
32
|
+
var transform = minimize_rmsd_1.MinimizeRmsd.compute({ a: a, b: b });
|
|
33
|
+
if (Number.isNaN(transform.rmsd)) {
|
|
34
|
+
failedPairs.push([p.i, p.j]);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
entries.push({ transform: transform, pivot: p.i, other: p.j });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
28
40
|
}
|
|
29
|
-
return
|
|
41
|
+
return { entries: entries, zeroOverlapPairs: zeroOverlapPairs, failedPairs: failedPairs };
|
|
30
42
|
}
|
|
31
|
-
exports.
|
|
43
|
+
exports.alignAndSuperposeWithSIFTSMapping = alignAndSuperposeWithSIFTSMapping;
|
|
32
44
|
function getPositionTables(index, pivot, other, N) {
|
|
33
45
|
var xs = minimize_rmsd_1.MinimizeRmsd.Positions.empty(N);
|
|
34
46
|
var ys = minimize_rmsd_1.MinimizeRmsd.Positions.empty(N);
|
|
@@ -40,7 +52,6 @@ function getPositionTables(index, pivot, other, N) {
|
|
|
40
52
|
if (!a || !b)
|
|
41
53
|
continue;
|
|
42
54
|
var l = Math.min(a[2] - a[1], b[2] - b[1]);
|
|
43
|
-
// TODO: allow to use just backbone atoms?
|
|
44
55
|
// TODO: check if residue types match?
|
|
45
56
|
for (var i = 0; i < l; i++) {
|
|
46
57
|
var eI = (a[1] + i);
|
|
@@ -94,19 +105,20 @@ function findPairs(N, index) {
|
|
|
94
105
|
// }
|
|
95
106
|
return ret;
|
|
96
107
|
}
|
|
97
|
-
function buildIndex(structure, index, sI) {
|
|
108
|
+
function buildIndex(structure, index, sI, traceOnly) {
|
|
98
109
|
var _a;
|
|
99
110
|
for (var _i = 0, _b = structure.units; _i < _b.length; _i++) {
|
|
100
111
|
var unit = _b[_i];
|
|
101
112
|
if (unit.kind !== 0 /* Atomic */)
|
|
102
113
|
continue;
|
|
103
114
|
var elements = unit.elements, model = unit.model;
|
|
104
|
-
var map =
|
|
115
|
+
var map = sifts_mapping_1.SIFTSMapping.Provider.get(model).value;
|
|
105
116
|
if (!map)
|
|
106
117
|
return;
|
|
107
118
|
var dbName = map.dbName, accession = map.accession, num = map.num;
|
|
108
119
|
var chainsIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.chainAtomSegments, elements);
|
|
109
120
|
var residuesIt = int_1.Segmentation.transientSegments(unit.model.atomicHierarchy.residueAtomSegments, elements);
|
|
121
|
+
var traceElementIndex = unit.model.atomicHierarchy.derived.residue.traceElementIndex;
|
|
110
122
|
while (chainsIt.hasNext) {
|
|
111
123
|
var chainSegment = chainsIt.move();
|
|
112
124
|
residuesIt.setSegment(chainSegment);
|
|
@@ -115,8 +127,17 @@ function buildIndex(structure, index, sI) {
|
|
|
115
127
|
var rI = residueSegment.index;
|
|
116
128
|
if (!dbName[rI])
|
|
117
129
|
continue;
|
|
118
|
-
var start =
|
|
119
|
-
|
|
130
|
+
var start = void 0, end = void 0;
|
|
131
|
+
if (traceOnly) {
|
|
132
|
+
start = traceElementIndex[rI];
|
|
133
|
+
if (start === -1)
|
|
134
|
+
continue;
|
|
135
|
+
end = start + 1;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
start = elements[residueSegment.start];
|
|
139
|
+
end = elements[residueSegment.end - 1] + 1;
|
|
140
|
+
}
|
|
120
141
|
var key = "".concat(dbName[rI], "-").concat(accession[rI], "-").concat(num[rI]);
|
|
121
142
|
if (!index.has(key)) {
|
|
122
143
|
index.set(key, { key: key, pivots: (_a = {}, _a[sI] = [unit, start, end], _a) });
|
|
@@ -130,6 +151,5 @@ function buildIndex(structure, index, sI) {
|
|
|
130
151
|
}
|
|
131
152
|
}
|
|
132
153
|
}
|
|
133
|
-
console.log(index);
|
|
134
154
|
}
|
|
135
|
-
//# sourceMappingURL=superposition-
|
|
155
|
+
//# sourceMappingURL=superposition-sifts-mapping.js.map
|
|
@@ -125,6 +125,11 @@ export declare const BasicSchema: {
|
|
|
125
125
|
pdbx_PDB_ins_code: import("../../../mol-data/db/column").Column.Schema.Str;
|
|
126
126
|
pdbx_PDB_model_num: import("../../../mol-data/db/column").Column.Schema.Int;
|
|
127
127
|
pdbx_formal_charge: import("../../../mol-data/db/column").Column.Schema.Int;
|
|
128
|
+
pdbx_label_index: import("../../../mol-data/db/column").Column.Schema.Int;
|
|
129
|
+
pdbx_sifts_xref_db_name: import("../../../mol-data/db/column").Column.Schema.Str;
|
|
130
|
+
pdbx_sifts_xref_db_acc: import("../../../mol-data/db/column").Column.Schema.Str;
|
|
131
|
+
pdbx_sifts_xref_db_num: import("../../../mol-data/db/column").Column.Schema.Str;
|
|
132
|
+
pdbx_sifts_xref_db_res: import("../../../mol-data/db/column").Column.Schema.Str;
|
|
128
133
|
ihm_model_id: import("../../../mol-data/db/column").Column.Schema.Int;
|
|
129
134
|
};
|
|
130
135
|
ihm_sphere_obj_site: {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c) 2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
2
|
+
* Copyright (c) 2020-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
|
+
* @author David Sehnal <david.sehnal@gmail.com>
|
|
5
6
|
*/
|
|
6
7
|
import { Model } from '../../../mol-model/structure';
|
|
7
8
|
import { ModelFormat } from '../../format';
|
|
@@ -24,5 +25,7 @@ interface FormatPropertyProvider<T> {
|
|
|
24
25
|
delete(model: Model): void;
|
|
25
26
|
}
|
|
26
27
|
declare namespace FormatPropertyProvider {
|
|
27
|
-
function create<T>(descriptor: CustomPropertyDescriptor
|
|
28
|
+
function create<T>(descriptor: CustomPropertyDescriptor, options?: {
|
|
29
|
+
asDynamic?: boolean;
|
|
30
|
+
}): FormatPropertyProvider<T>;
|
|
28
31
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Copyright (c) 2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
|
+
* Copyright (c) 2020-2022 mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
4
4
|
*
|
|
5
5
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
6
|
+
* @author David Sehnal <david.sehnal@gmail.com>
|
|
6
7
|
*/
|
|
7
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
9
|
exports.FormatPropertyProvider = void 0;
|
|
@@ -31,7 +32,7 @@ var FormatRegistry = /** @class */ (function () {
|
|
|
31
32
|
}());
|
|
32
33
|
var FormatPropertyProvider;
|
|
33
34
|
(function (FormatPropertyProvider) {
|
|
34
|
-
function create(descriptor) {
|
|
35
|
+
function create(descriptor, options) {
|
|
35
36
|
var name = descriptor.name;
|
|
36
37
|
var formatRegistry = new FormatRegistry();
|
|
37
38
|
return {
|
|
@@ -41,22 +42,33 @@ var FormatPropertyProvider;
|
|
|
41
42
|
return formatRegistry.isApplicable(model);
|
|
42
43
|
},
|
|
43
44
|
get: function (model) {
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
var store = (options === null || options === void 0 ? void 0 : options.asDynamic) ? model._dynamicPropertyData : model._staticPropertyData;
|
|
46
|
+
if (store[name])
|
|
47
|
+
return store[name];
|
|
46
48
|
if (model.customProperties.has(descriptor))
|
|
47
49
|
return;
|
|
48
50
|
var obtain = formatRegistry.get(model.sourceData.kind);
|
|
49
51
|
if (!obtain)
|
|
50
52
|
return;
|
|
51
|
-
|
|
53
|
+
store[name] = obtain(model);
|
|
52
54
|
model.customProperties.add(descriptor);
|
|
53
|
-
return
|
|
55
|
+
return store[name];
|
|
54
56
|
},
|
|
55
57
|
set: function (model, value) {
|
|
56
|
-
|
|
58
|
+
if (options === null || options === void 0 ? void 0 : options.asDynamic) {
|
|
59
|
+
model._dynamicPropertyData[name] = value;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
model._staticPropertyData[name] = value;
|
|
63
|
+
}
|
|
57
64
|
},
|
|
58
65
|
delete: function (model) {
|
|
59
|
-
|
|
66
|
+
if (options === null || options === void 0 ? void 0 : options.asDynamic) {
|
|
67
|
+
delete model._dynamicPropertyData[name];
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
delete model._staticPropertyData[name];
|
|
71
|
+
}
|
|
60
72
|
}
|
|
61
73
|
};
|
|
62
74
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2019-2022 Mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
3
3
|
*
|
|
4
4
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
5
|
+
* @author David Sehnal <david.sehnal@gmail.com>
|
|
5
6
|
*/
|
|
6
7
|
import { CustomPropertyDescriptor } from '../../../../mol-model/custom-property';
|
|
7
8
|
import { IntAdjacencyGraph } from '../../../../mol-math/graph';
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright (c) 2019-2022 Mol* contributors, licensed under MIT, See LICENSE file for more info.
|
|
4
4
|
*
|
|
5
5
|
* @author Alexander Rose <alexander.rose@weirdbyte.de>
|
|
6
|
+
* @author David Sehnal <david.sehnal@gmail.com>
|
|
6
7
|
*/
|
|
7
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
9
|
exports.IndexPairBonds = void 0;
|
|
@@ -29,7 +30,7 @@ var IndexPairBonds;
|
|
|
29
30
|
IndexPairBonds.Descriptor = {
|
|
30
31
|
name: 'index_pair_bonds',
|
|
31
32
|
};
|
|
32
|
-
IndexPairBonds.Provider = property_1.FormatPropertyProvider.create(IndexPairBonds.Descriptor);
|
|
33
|
+
IndexPairBonds.Provider = property_1.FormatPropertyProvider.create(IndexPairBonds.Descriptor, { asDynamic: true });
|
|
33
34
|
IndexPairBonds.DefaultProps = {
|
|
34
35
|
/**
|
|
35
36
|
* If negative, test using element-based threshold, otherwise distance in Angstrom.
|
package/lib/commonjs/mol-model-props/sequence/{best-database-mapping.d.ts → sifts-mapping.d.ts}
RENAMED
|
@@ -3,17 +3,19 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @author David Sehnal <david.sehnal@gmail.com>
|
|
5
5
|
*/
|
|
6
|
+
import { Model } from '../../mol-model/structure';
|
|
6
7
|
import { StructureElement } from '../../mol-model/structure/structure';
|
|
7
8
|
import { CustomModelProperty } from '../common/custom-model-property';
|
|
8
|
-
export {
|
|
9
|
-
interface
|
|
9
|
+
export { SIFTSMapping as SIFTSMapping };
|
|
10
|
+
interface SIFTSMappingMapping {
|
|
10
11
|
readonly dbName: string[];
|
|
11
12
|
readonly accession: string[];
|
|
12
|
-
readonly num:
|
|
13
|
+
readonly num: string[];
|
|
13
14
|
readonly residue: string[];
|
|
14
15
|
}
|
|
15
|
-
declare namespace
|
|
16
|
-
const Provider: CustomModelProperty.Provider<{},
|
|
16
|
+
declare namespace SIFTSMapping {
|
|
17
|
+
const Provider: CustomModelProperty.Provider<{}, SIFTSMappingMapping>;
|
|
18
|
+
function isAvailable(model: Model): boolean;
|
|
17
19
|
function getKey(loc: StructureElement.Location): string;
|
|
18
20
|
function getLabel(loc: StructureElement.Location): string | undefined;
|
|
19
21
|
}
|
|
@@ -5,42 +5,49 @@
|
|
|
5
5
|
* @author David Sehnal <david.sehnal@gmail.com>
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
8
|
+
exports.SIFTSMapping = void 0;
|
|
9
9
|
var tslib_1 = require("tslib");
|
|
10
10
|
var mmcif_1 = require("../../mol-model-formats/structure/mmcif");
|
|
11
11
|
var custom_property_1 = require("../../mol-model/custom-property");
|
|
12
12
|
var custom_model_property_1 = require("../common/custom-model-property");
|
|
13
|
-
var
|
|
14
|
-
(function (
|
|
13
|
+
var SIFTSMapping;
|
|
14
|
+
(function (SIFTSMapping) {
|
|
15
15
|
var _this = this;
|
|
16
|
-
|
|
17
|
-
label: '
|
|
16
|
+
SIFTSMapping.Provider = custom_model_property_1.CustomModelProperty.createProvider({
|
|
17
|
+
label: 'SIFTS Mapping',
|
|
18
18
|
descriptor: (0, custom_property_1.CustomPropertyDescriptor)({
|
|
19
|
-
name: '
|
|
19
|
+
name: 'sifts_sequence_mapping'
|
|
20
20
|
}),
|
|
21
21
|
type: 'static',
|
|
22
22
|
defaultParams: {},
|
|
23
23
|
getParams: function () { return ({}); },
|
|
24
|
-
isApplicable: function (data) {
|
|
24
|
+
isApplicable: function (data) { return isAvailable(data); },
|
|
25
25
|
obtain: function (ctx, data) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () {
|
|
26
26
|
return (0, tslib_1.__generator)(this, function (_a) {
|
|
27
27
|
return [2 /*return*/, { value: fromCif(data) }];
|
|
28
28
|
});
|
|
29
29
|
}); }
|
|
30
30
|
});
|
|
31
|
+
function isAvailable(model) {
|
|
32
|
+
if (!mmcif_1.MmcifFormat.is(model.sourceData))
|
|
33
|
+
return false;
|
|
34
|
+
var _a = model.sourceData.data.db.atom_site, db_name = _a.pdbx_sifts_xref_db_name, db_acc = _a.pdbx_sifts_xref_db_acc, db_num = _a.pdbx_sifts_xref_db_num, db_res = _a.pdbx_sifts_xref_db_res;
|
|
35
|
+
return db_name.isDefined && db_acc.isDefined && db_num.isDefined && db_res.isDefined;
|
|
36
|
+
}
|
|
37
|
+
SIFTSMapping.isAvailable = isAvailable;
|
|
31
38
|
function getKey(loc) {
|
|
32
39
|
var model = loc.unit.model;
|
|
33
|
-
var data =
|
|
40
|
+
var data = SIFTSMapping.Provider.get(model).value;
|
|
34
41
|
if (!data)
|
|
35
42
|
return '';
|
|
36
43
|
var eI = loc.unit.elements[loc.element];
|
|
37
44
|
var rI = model.atomicHierarchy.residueAtomSegments.index[eI];
|
|
38
45
|
return data.accession[rI];
|
|
39
46
|
}
|
|
40
|
-
|
|
47
|
+
SIFTSMapping.getKey = getKey;
|
|
41
48
|
function getLabel(loc) {
|
|
42
49
|
var model = loc.unit.model;
|
|
43
|
-
var data =
|
|
50
|
+
var data = SIFTSMapping.Provider.get(model).value;
|
|
44
51
|
if (!data)
|
|
45
52
|
return;
|
|
46
53
|
var eI = loc.unit.elements[loc.element];
|
|
@@ -50,19 +57,15 @@ var BestDatabaseSequenceMapping;
|
|
|
50
57
|
return;
|
|
51
58
|
return "".concat(dbName, " ").concat(data.accession[rI], " ").concat(data.num[rI], " ").concat(data.residue[rI]);
|
|
52
59
|
}
|
|
53
|
-
|
|
60
|
+
SIFTSMapping.getLabel = getLabel;
|
|
54
61
|
function fromCif(model) {
|
|
55
62
|
if (!mmcif_1.MmcifFormat.is(model.sourceData))
|
|
56
63
|
return;
|
|
57
|
-
var
|
|
58
|
-
|
|
59
|
-
var db_acc = atom_site.getField('pdbx_sifts_xref_db_acc');
|
|
60
|
-
var db_num = atom_site.getField('pdbx_sifts_xref_db_num');
|
|
61
|
-
var db_res = atom_site.getField('pdbx_sifts_xref_db_res');
|
|
62
|
-
if (!db_name || !db_acc || !db_num || !db_res)
|
|
64
|
+
var _a = model.sourceData.data.db.atom_site, db_name = _a.pdbx_sifts_xref_db_name, db_acc = _a.pdbx_sifts_xref_db_acc, db_num = _a.pdbx_sifts_xref_db_num, db_res = _a.pdbx_sifts_xref_db_res;
|
|
65
|
+
if (!db_name.isDefined || !db_acc.isDefined || !db_num.isDefined || !db_res.isDefined)
|
|
63
66
|
return;
|
|
64
67
|
var atomSourceIndex = model.atomicHierarchy.atomSourceIndex;
|
|
65
|
-
var
|
|
68
|
+
var _b = model.atomicHierarchy.residueAtomSegments, count = _b.count, residueOffsets = _b.offsets;
|
|
66
69
|
var dbName = new Array(count);
|
|
67
70
|
var accession = new Array(count);
|
|
68
71
|
var num = new Array(count);
|
|
@@ -72,17 +75,17 @@ var BestDatabaseSequenceMapping;
|
|
|
72
75
|
if (db_name.valueKind(row) !== 0 /* Present */) {
|
|
73
76
|
dbName[i] = '';
|
|
74
77
|
accession[i] = '';
|
|
75
|
-
num[i] =
|
|
78
|
+
num[i] = '';
|
|
76
79
|
residue[i] = '';
|
|
77
80
|
continue;
|
|
78
81
|
}
|
|
79
|
-
dbName[i] = db_name.
|
|
80
|
-
accession[i] = db_acc.
|
|
81
|
-
num[i] = db_num.
|
|
82
|
-
residue[i] = db_res.
|
|
82
|
+
dbName[i] = db_name.value(row);
|
|
83
|
+
accession[i] = db_acc.value(row);
|
|
84
|
+
num[i] = db_num.value(row);
|
|
85
|
+
residue[i] = db_res.value(row);
|
|
83
86
|
}
|
|
84
87
|
return { dbName: dbName, accession: accession, num: num, residue: residue };
|
|
85
88
|
}
|
|
86
|
-
})(
|
|
87
|
-
exports.
|
|
88
|
-
//# sourceMappingURL=
|
|
89
|
+
})(SIFTSMapping || (SIFTSMapping = {}));
|
|
90
|
+
exports.SIFTSMapping = SIFTSMapping;
|
|
91
|
+
//# sourceMappingURL=sifts-mapping.js.map
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { ColorTheme } from '../../../mol-theme/color';
|
|
7
7
|
import { ThemeDataContext } from '../../../mol-theme/theme';
|
|
8
8
|
import { ParamDefinition as PD } from '../../../mol-util/param-definition';
|
|
9
|
-
export declare const
|
|
9
|
+
export declare const SIFTSMappingColorThemeParams: {
|
|
10
10
|
palette: PD.Mapped<PD.NamedParams<PD.Normalize<{
|
|
11
11
|
maxCount: number;
|
|
12
12
|
hue: [number, number];
|
|
@@ -21,8 +21,8 @@ export declare const BestDatabaseSequenceMappingColorThemeParams: {
|
|
|
21
21
|
};
|
|
22
22
|
}>, "colors">>;
|
|
23
23
|
};
|
|
24
|
-
export declare type
|
|
25
|
-
export declare function
|
|
24
|
+
export declare type SIFTSMappingColorThemeParams = typeof SIFTSMappingColorThemeParams;
|
|
25
|
+
export declare function getSIFTSMappingColorThemeParams(ctx: ThemeDataContext): {
|
|
26
26
|
palette: PD.Mapped<PD.NamedParams<PD.Normalize<{
|
|
27
27
|
maxCount: number;
|
|
28
28
|
hue: [number, number];
|
|
@@ -37,5 +37,5 @@ export declare function getBestDatabaseSequenceMappingColorThemeParams(ctx: Them
|
|
|
37
37
|
};
|
|
38
38
|
}>, "colors">>;
|
|
39
39
|
};
|
|
40
|
-
export declare function
|
|
41
|
-
export declare const
|
|
40
|
+
export declare function SIFTSMappingColorTheme(ctx: ThemeDataContext, props: PD.Values<SIFTSMappingColorThemeParams>): ColorTheme<SIFTSMappingColorThemeParams>;
|
|
41
|
+
export declare const SIFTSMappingColorThemeProvider: ColorTheme.Provider<SIFTSMappingColorThemeParams, 'sifts-mapping'>;
|
package/lib/commonjs/mol-model-props/sequence/themes/{best-database-mapping.js → sifts-mapping.js}
RENAMED
|
@@ -5,28 +5,28 @@
|
|
|
5
5
|
* @author David Sehnal <david.sehnal@gmail.com>
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
8
|
+
exports.SIFTSMappingColorThemeProvider = exports.SIFTSMappingColorTheme = exports.getSIFTSMappingColorThemeParams = exports.SIFTSMappingColorThemeParams = void 0;
|
|
9
9
|
var tslib_1 = require("tslib");
|
|
10
10
|
var structure_1 = require("../../../mol-model/structure");
|
|
11
11
|
var color_1 = require("../../../mol-util/color");
|
|
12
12
|
var palette_1 = require("../../../mol-util/color/palette");
|
|
13
13
|
var param_definition_1 = require("../../../mol-util/param-definition");
|
|
14
|
-
var
|
|
14
|
+
var sifts_mapping_1 = require("../sifts-mapping");
|
|
15
15
|
var DefaultColor = (0, color_1.Color)(0xFAFAFA);
|
|
16
|
-
var Description = 'Assigns a color based on
|
|
16
|
+
var Description = 'Assigns a color based on SIFTS mapping.';
|
|
17
17
|
// same colors for same accessions
|
|
18
18
|
var globalAccessionMap = new Map();
|
|
19
|
-
exports.
|
|
20
|
-
function
|
|
21
|
-
return exports.
|
|
19
|
+
exports.SIFTSMappingColorThemeParams = (0, tslib_1.__assign)({}, (0, palette_1.getPaletteParams)({ type: 'colors', colorList: 'set-1' }));
|
|
20
|
+
function getSIFTSMappingColorThemeParams(ctx) {
|
|
21
|
+
return exports.SIFTSMappingColorThemeParams; // TODO return copy
|
|
22
22
|
}
|
|
23
|
-
exports.
|
|
24
|
-
function
|
|
23
|
+
exports.getSIFTSMappingColorThemeParams = getSIFTSMappingColorThemeParams;
|
|
24
|
+
function SIFTSMappingColorTheme(ctx, props) {
|
|
25
25
|
var color;
|
|
26
26
|
if (ctx.structure) {
|
|
27
27
|
for (var _i = 0, _a = ctx.structure.models; _i < _a.length; _i++) {
|
|
28
28
|
var m = _a[_i];
|
|
29
|
-
var mapping =
|
|
29
|
+
var mapping = sifts_mapping_1.SIFTSMapping.Provider.get(m).value;
|
|
30
30
|
if (!mapping)
|
|
31
31
|
continue;
|
|
32
32
|
for (var _b = 0, _c = mapping.accession; _b < _c.length; _b++) {
|
|
@@ -40,7 +40,7 @@ function BestDatabaseSequenceMappingColorTheme(ctx, props) {
|
|
|
40
40
|
var palette_2 = (0, palette_1.getPalette)(globalAccessionMap.size + 1, props, { valueLabel: function (i) { return "".concat(i); } });
|
|
41
41
|
var colorMap_1 = new Map();
|
|
42
42
|
var getColor_1 = function (location) {
|
|
43
|
-
var key =
|
|
43
|
+
var key = sifts_mapping_1.SIFTSMapping.getKey(location);
|
|
44
44
|
if (!key)
|
|
45
45
|
return DefaultColor;
|
|
46
46
|
if (colorMap_1.has(key))
|
|
@@ -65,7 +65,7 @@ function BestDatabaseSequenceMappingColorTheme(ctx, props) {
|
|
|
65
65
|
color = function () { return DefaultColor; };
|
|
66
66
|
}
|
|
67
67
|
return {
|
|
68
|
-
factory:
|
|
68
|
+
factory: SIFTSMappingColorTheme,
|
|
69
69
|
granularity: 'group',
|
|
70
70
|
preferSmoothing: true,
|
|
71
71
|
color: color,
|
|
@@ -73,15 +73,15 @@ function BestDatabaseSequenceMappingColorTheme(ctx, props) {
|
|
|
73
73
|
description: Description,
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
|
-
exports.
|
|
77
|
-
exports.
|
|
78
|
-
name: '
|
|
79
|
-
label: '
|
|
76
|
+
exports.SIFTSMappingColorTheme = SIFTSMappingColorTheme;
|
|
77
|
+
exports.SIFTSMappingColorThemeProvider = {
|
|
78
|
+
name: 'sifts-mapping',
|
|
79
|
+
label: 'SIFTS Mapping',
|
|
80
80
|
category: "Residue Property" /* Residue */,
|
|
81
|
-
factory:
|
|
82
|
-
getParams:
|
|
83
|
-
defaultValues: param_definition_1.ParamDefinition.getDefaultValues(exports.
|
|
84
|
-
isApplicable: function (ctx) { var _a; return !!((_a = ctx.structure) === null || _a === void 0 ? void 0 : _a.models.some(function (m) { return
|
|
81
|
+
factory: SIFTSMappingColorTheme,
|
|
82
|
+
getParams: getSIFTSMappingColorThemeParams,
|
|
83
|
+
defaultValues: param_definition_1.ParamDefinition.getDefaultValues(exports.SIFTSMappingColorThemeParams),
|
|
84
|
+
isApplicable: function (ctx) { var _a; return !!((_a = ctx.structure) === null || _a === void 0 ? void 0 : _a.models.some(function (m) { return sifts_mapping_1.SIFTSMapping.Provider.isApplicable(m); })); },
|
|
85
85
|
ensureCustomProperties: {
|
|
86
86
|
attach: function (ctx, data) { return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () {
|
|
87
87
|
var _i, _a, m;
|
|
@@ -95,7 +95,7 @@ exports.BestDatabaseSequenceMappingColorThemeProvider = {
|
|
|
95
95
|
case 1:
|
|
96
96
|
if (!(_i < _a.length)) return [3 /*break*/, 4];
|
|
97
97
|
m = _a[_i];
|
|
98
|
-
return [4 /*yield*/,
|
|
98
|
+
return [4 /*yield*/, sifts_mapping_1.SIFTSMapping.Provider.attach(ctx, m, void 0, true)];
|
|
99
99
|
case 2:
|
|
100
100
|
_b.sent();
|
|
101
101
|
_b.label = 3;
|
|
@@ -111,9 +111,9 @@ exports.BestDatabaseSequenceMappingColorThemeProvider = {
|
|
|
111
111
|
return;
|
|
112
112
|
for (var _i = 0, _a = data.structure.models; _i < _a.length; _i++) {
|
|
113
113
|
var m = _a[_i];
|
|
114
|
-
|
|
114
|
+
sifts_mapping_1.SIFTSMapping.Provider.ref(m, false);
|
|
115
115
|
}
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
};
|
|
119
|
-
//# sourceMappingURL=
|
|
119
|
+
//# sourceMappingURL=sifts-mapping.js.map
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @author David Sehnal <david.sehnal@gmail.com>
|
|
5
5
|
*/
|
|
6
6
|
import { PluginBehavior } from '../../../behavior';
|
|
7
|
-
export declare const
|
|
7
|
+
export declare const SIFTSMapping: import("../../../../../mol-state/transformer").StateTransformer<PluginBehavior.Category, PluginBehavior.Behavior, {
|
|
8
8
|
autoAttach: boolean;
|
|
9
9
|
showTooltip: boolean;
|
|
10
10
|
}>;
|
|
@@ -5,23 +5,23 @@
|
|
|
5
5
|
* @author David Sehnal <david.sehnal@gmail.com>
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.
|
|
8
|
+
exports.SIFTSMapping = void 0;
|
|
9
9
|
var tslib_1 = require("tslib");
|
|
10
10
|
var int_1 = require("../../../../../mol-data/int");
|
|
11
|
-
var
|
|
12
|
-
var
|
|
11
|
+
var sifts_mapping_1 = require("../../../../../mol-model-props/sequence/sifts-mapping");
|
|
12
|
+
var sifts_mapping_2 = require("../../../../../mol-model-props/sequence/themes/sifts-mapping");
|
|
13
13
|
var structure_1 = require("../../../../../mol-model/structure");
|
|
14
14
|
var param_definition_1 = require("../../../../../mol-util/param-definition");
|
|
15
15
|
var behavior_1 = require("../../../behavior");
|
|
16
|
-
exports.
|
|
17
|
-
name: '
|
|
16
|
+
exports.SIFTSMapping = behavior_1.PluginBehavior.create({
|
|
17
|
+
name: 'sifts-mapping-prop',
|
|
18
18
|
category: 'custom-props',
|
|
19
|
-
display: { name: '
|
|
19
|
+
display: { name: 'SIFTS Mapping' },
|
|
20
20
|
ctor: /** @class */ (function (_super) {
|
|
21
21
|
(0, tslib_1.__extends)(class_1, _super);
|
|
22
22
|
function class_1() {
|
|
23
23
|
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
24
|
-
_this.provider =
|
|
24
|
+
_this.provider = sifts_mapping_1.SIFTSMapping.Provider;
|
|
25
25
|
_this.labelProvider = {
|
|
26
26
|
label: function (loci) {
|
|
27
27
|
if (!_this.params.showTooltip)
|
|
@@ -41,12 +41,12 @@ exports.BestDatabaseSequenceMapping = behavior_1.PluginBehavior.create({
|
|
|
41
41
|
};
|
|
42
42
|
class_1.prototype.register = function () {
|
|
43
43
|
this.ctx.customModelProperties.register(this.provider, this.params.autoAttach);
|
|
44
|
-
this.ctx.representation.structure.themes.colorThemeRegistry.add(
|
|
44
|
+
this.ctx.representation.structure.themes.colorThemeRegistry.add(sifts_mapping_2.SIFTSMappingColorThemeProvider);
|
|
45
45
|
this.ctx.managers.lociLabels.addProvider(this.labelProvider);
|
|
46
46
|
};
|
|
47
47
|
class_1.prototype.unregister = function () {
|
|
48
48
|
this.ctx.customModelProperties.unregister(this.provider.descriptor.name);
|
|
49
|
-
this.ctx.representation.structure.themes.colorThemeRegistry.remove(
|
|
49
|
+
this.ctx.representation.structure.themes.colorThemeRegistry.remove(sifts_mapping_2.SIFTSMappingColorThemeProvider);
|
|
50
50
|
this.ctx.managers.lociLabels.removeProvider(this.labelProvider);
|
|
51
51
|
};
|
|
52
52
|
return class_1;
|
|
@@ -64,7 +64,7 @@ function bestDatabaseSequenceMappingLabel(loci) {
|
|
|
64
64
|
var e = loci.elements[0];
|
|
65
65
|
var u = e.unit;
|
|
66
66
|
var se = structure_1.StructureElement.Location.create(loci.structure, u, u.elements[int_1.OrderedSet.getAt(e.indices, 0)]);
|
|
67
|
-
return
|
|
67
|
+
return sifts_mapping_1.SIFTSMapping.getLabel(se);
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
//# sourceMappingURL=
|
|
70
|
+
//# sourceMappingURL=sifts-mapping.js.map
|
|
@@ -9,5 +9,5 @@ export { AccessibleSurfaceArea } from './custom-props/computed/accessible-surfac
|
|
|
9
9
|
export { Interactions } from './custom-props/computed/interactions';
|
|
10
10
|
export { SecondaryStructure } from './custom-props/computed/secondary-structure';
|
|
11
11
|
export { ValenceModel } from './custom-props/computed/valence-model';
|
|
12
|
-
export { BestDatabaseSequenceMapping } from './custom-props/sequence/
|
|
12
|
+
export { SIFTSMapping as BestDatabaseSequenceMapping } from './custom-props/sequence/sifts-mapping';
|
|
13
13
|
export { CrossLinkRestraint } from './custom-props/integrative/cross-link-restraint';
|
|
@@ -17,8 +17,8 @@ var secondary_structure_1 = require("./custom-props/computed/secondary-structure
|
|
|
17
17
|
Object.defineProperty(exports, "SecondaryStructure", { enumerable: true, get: function () { return secondary_structure_1.SecondaryStructure; } });
|
|
18
18
|
var valence_model_1 = require("./custom-props/computed/valence-model");
|
|
19
19
|
Object.defineProperty(exports, "ValenceModel", { enumerable: true, get: function () { return valence_model_1.ValenceModel; } });
|
|
20
|
-
var
|
|
21
|
-
Object.defineProperty(exports, "BestDatabaseSequenceMapping", { enumerable: true, get: function () { return
|
|
20
|
+
var sifts_mapping_1 = require("./custom-props/sequence/sifts-mapping");
|
|
21
|
+
Object.defineProperty(exports, "BestDatabaseSequenceMapping", { enumerable: true, get: function () { return sifts_mapping_1.SIFTSMapping; } });
|
|
22
22
|
var cross_link_restraint_1 = require("./custom-props/integrative/cross-link-restraint");
|
|
23
23
|
Object.defineProperty(exports, "CrossLinkRestraint", { enumerable: true, get: function () { return cross_link_restraint_1.CrossLinkRestraint; } });
|
|
24
24
|
//# sourceMappingURL=custom-props.js.map
|
|
@@ -9,12 +9,12 @@ import { Volume } from '../../../../mol-model/volume';
|
|
|
9
9
|
import { Structure } from '../../../../mol-model/structure';
|
|
10
10
|
declare const VolumeServerInfo_base: {
|
|
11
11
|
new (data: VolumeServerInfo.Data, props?: {
|
|
12
|
-
|
|
12
|
+
/** Precision data the server can show. */
|
|
13
|
+
label: string;
|
|
13
14
|
description?: string | undefined;
|
|
14
15
|
} | undefined): {
|
|
15
16
|
id: import("../../../../mol-util/uuid").UUID;
|
|
16
17
|
type: PluginStateObject.TypeInfo;
|
|
17
|
-
/** The value are stored in blockSize^3 cubes */
|
|
18
18
|
label: string;
|
|
19
19
|
description?: string | undefined;
|
|
20
20
|
data: VolumeServerInfo.Data;
|
|
@@ -23,7 +23,6 @@ declare const VolumeServerInfo_base: {
|
|
|
23
23
|
is(obj?: import("../../../../mol-state/object").StateObject<any, import("../../../../mol-state/object").StateObject.Type<any>> | undefined): obj is {
|
|
24
24
|
id: import("../../../../mol-util/uuid").UUID;
|
|
25
25
|
type: PluginStateObject.TypeInfo;
|
|
26
|
-
/** The value are stored in blockSize^3 cubes */
|
|
27
26
|
label: string;
|
|
28
27
|
description?: string | undefined;
|
|
29
28
|
data: VolumeServerInfo.Data;
|