drugflow-molstar 0.1.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 +201 -0
- package/README.md +15 -0
- package/build/pdbe-molstar-3.1.2.css +1 -0
- package/build/pdbe-molstar-component-3.1.2.js +25 -0
- package/build/pdbe-molstar-plugin-3.1.2.js +2 -0
- package/build/pdbe-molstar-plugin-3.1.2.js.LICENSE.txt +39 -0
- package/lib/alphafold-transparency.d.ts +6 -0
- package/lib/alphafold-transparency.js +153 -0
- package/lib/custom-events.d.ts +4 -0
- package/lib/custom-events.js +56 -0
- package/lib/domain-annotations/behavior.d.ts +5 -0
- package/lib/domain-annotations/behavior.js +49 -0
- package/lib/domain-annotations/color.d.ts +10 -0
- package/lib/domain-annotations/color.js +78 -0
- package/lib/domain-annotations/prop.d.ts +35 -0
- package/lib/domain-annotations/prop.js +160 -0
- package/lib/helpers.d.ts +80 -0
- package/lib/helpers.js +278 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +901 -0
- package/lib/labels.d.ts +2 -0
- package/lib/labels.js +42 -0
- package/lib/loci-details.d.ts +27 -0
- package/lib/loci-details.js +128 -0
- 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 -0
- package/lib/sifts-mapping.js +83 -0
- package/lib/sifts-mappings-behaviour.d.ts +5 -0
- package/lib/sifts-mappings-behaviour.js +64 -0
- package/lib/spec.d.ts +75 -0
- package/lib/spec.js +105 -0
- package/lib/subscribe-events.d.ts +1 -0
- package/lib/subscribe-events.js +194 -0
- package/lib/superposition-export.d.ts +4 -0
- package/lib/superposition-export.js +152 -0
- package/lib/superposition-focus-representation.d.ts +16 -0
- package/lib/superposition-focus-representation.js +153 -0
- package/lib/superposition-sifts-mapping.d.ts +22 -0
- package/lib/superposition-sifts-mapping.js +159 -0
- package/lib/superposition.d.ts +18 -0
- package/lib/superposition.js +794 -0
- package/lib/ui/alphafold-superposition.d.ts +56 -0
- package/lib/ui/alphafold-superposition.js +178 -0
- package/lib/ui/alphafold-tranparency.d.ts +22 -0
- package/lib/ui/alphafold-tranparency.js +65 -0
- package/lib/ui/annotation-controls.d.ts +24 -0
- package/lib/ui/annotation-controls.js +166 -0
- package/lib/ui/export-superposition.d.ts +6 -0
- package/lib/ui/export-superposition.js +71 -0
- package/lib/ui/pdbe-left-panel.d.ts +18 -0
- package/lib/ui/pdbe-left-panel.js +167 -0
- package/lib/ui/pdbe-screenshot-controls.d.ts +20 -0
- package/lib/ui/pdbe-screenshot-controls.js +101 -0
- package/lib/ui/pdbe-structure-controls.d.ts +17 -0
- package/lib/ui/pdbe-structure-controls.js +70 -0
- package/lib/ui/pdbe-viewport-controls.d.ts +6 -0
- package/lib/ui/pdbe-viewport-controls.js +56 -0
- package/lib/ui/segment-tree.d.ts +18 -0
- package/lib/ui/segment-tree.js +804 -0
- package/lib/ui/superposition-components.d.ts +10 -0
- package/lib/ui/superposition-components.js +435 -0
- package/lib/ui/superposition-viewport.d.ts +5 -0
- package/lib/ui/superposition-viewport.js +23 -0
- package/package.json +79 -0
package/lib/helpers.d.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { PluginContext } from 'Molstar/mol-plugin/context';
|
|
2
|
+
import Expression from 'Molstar/mol-script/language/expression';
|
|
3
|
+
import { BuiltInTrajectoryFormat } from 'Molstar/mol-plugin-state/formats/trajectory';
|
|
4
|
+
import { Model } from 'Molstar/mol-model/structure';
|
|
5
|
+
export declare type SupportedFormats = 'mmcif' | 'bcif' | 'cif' | 'pdb' | 'sdf';
|
|
6
|
+
export declare type LoadParams = {
|
|
7
|
+
url: string;
|
|
8
|
+
format?: BuiltInTrajectoryFormat;
|
|
9
|
+
assemblyId?: string;
|
|
10
|
+
isHetView?: boolean;
|
|
11
|
+
isBinary?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare namespace PDBeVolumes {
|
|
14
|
+
function mapParams(defaultParams: any, mapParams: any, ref?: string | number): any;
|
|
15
|
+
function displayUsibilityMessage(plugin: PluginContext): void;
|
|
16
|
+
function toggle(plugin: PluginContext): void;
|
|
17
|
+
}
|
|
18
|
+
export declare namespace AlphafoldView {
|
|
19
|
+
function getLociByPLDDT(score: number, contextData: any): import("molstar/lib/mol-model/structure/structure/element/loci").Loci;
|
|
20
|
+
}
|
|
21
|
+
export declare type LigandQueryParam = {
|
|
22
|
+
label_comp_id_list?: any;
|
|
23
|
+
auth_asym_id?: string;
|
|
24
|
+
struct_asym_id?: string;
|
|
25
|
+
label_comp_id?: string;
|
|
26
|
+
auth_seq_id?: number;
|
|
27
|
+
show_all?: boolean;
|
|
28
|
+
};
|
|
29
|
+
export declare namespace LigandView {
|
|
30
|
+
function query(ligandViewParams: LigandQueryParam): {
|
|
31
|
+
core: Expression.Expression;
|
|
32
|
+
surroundings: Expression.Expression;
|
|
33
|
+
};
|
|
34
|
+
function branchedQuery(params: any): {
|
|
35
|
+
core: Expression.Expression;
|
|
36
|
+
surroundings: Expression.Expression;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export declare type QueryParam = {
|
|
40
|
+
auth_seq_id?: number;
|
|
41
|
+
entity_id?: string;
|
|
42
|
+
auth_asym_id?: string;
|
|
43
|
+
struct_asym_id?: string;
|
|
44
|
+
residue_number?: number;
|
|
45
|
+
start_residue_number?: number;
|
|
46
|
+
end_residue_number?: number;
|
|
47
|
+
auth_residue_number?: number;
|
|
48
|
+
auth_ins_code_id?: string;
|
|
49
|
+
start_auth_residue_number?: number;
|
|
50
|
+
start_auth_ins_code_id?: string;
|
|
51
|
+
end_auth_residue_number?: number;
|
|
52
|
+
end_auth_ins_code_id?: string;
|
|
53
|
+
atoms?: string[];
|
|
54
|
+
label_comp_id?: string;
|
|
55
|
+
color?: any;
|
|
56
|
+
sideChain?: boolean;
|
|
57
|
+
representation?: string;
|
|
58
|
+
representationColor?: any;
|
|
59
|
+
focus?: boolean;
|
|
60
|
+
tooltip?: string;
|
|
61
|
+
start?: any;
|
|
62
|
+
end?: any;
|
|
63
|
+
atom_id?: number[];
|
|
64
|
+
uniprot_accession?: string;
|
|
65
|
+
uniprot_residue_number?: number;
|
|
66
|
+
start_uniprot_residue_number?: number;
|
|
67
|
+
end_uniprot_residue_number?: number;
|
|
68
|
+
};
|
|
69
|
+
export declare namespace QueryHelper {
|
|
70
|
+
function getQueryObject(params: QueryParam[], contextData: any): Expression.Expression;
|
|
71
|
+
function getInteractivityLoci(params: any, contextData: any): import("molstar/lib/mol-model/structure/structure/element/loci").Loci;
|
|
72
|
+
function getHetLoci(queryExp: Expression.Expression, contextData: any): import("molstar/lib/mol-model/structure/structure/element/loci").Loci;
|
|
73
|
+
}
|
|
74
|
+
export interface ModelInfo {
|
|
75
|
+
hetNames: string[];
|
|
76
|
+
carbEntityCount: number;
|
|
77
|
+
}
|
|
78
|
+
export declare namespace ModelInfo {
|
|
79
|
+
function get(model: Model, structures: any): Promise<ModelInfo>;
|
|
80
|
+
}
|
package/lib/helpers.js
ADDED
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ModelInfo = exports.QueryHelper = exports.LigandView = exports.AlphafoldView = exports.PDBeVolumes = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var commands_1 = require("Molstar/mol-plugin/commands");
|
|
6
|
+
var builder_1 = require("Molstar/mol-script/language/builder");
|
|
7
|
+
var mol_state_1 = require("Molstar/mol-state");
|
|
8
|
+
var structure_1 = require("Molstar/mol-model/structure");
|
|
9
|
+
var transformers_1 = require("Molstar/mol-plugin/behavior/dynamic/volume-streaming/transformers");
|
|
10
|
+
var compiler_1 = require("Molstar/mol-script/runtime/query/compiler");
|
|
11
|
+
var structure_2 = require("Molstar/mol-model/structure");
|
|
12
|
+
var sifts_mapping_1 = require("./sifts-mapping");
|
|
13
|
+
var query_1 = require("Molstar/mol-model/structure/query/query");
|
|
14
|
+
var prop_1 = require("Molstar/extensions/model-archive/quality-assessment/prop");
|
|
15
|
+
var PDBeVolumes;
|
|
16
|
+
(function (PDBeVolumes) {
|
|
17
|
+
function mapParams(defaultParams, mapParams, ref) {
|
|
18
|
+
var pdbeParams = tslib_1.__assign({}, defaultParams);
|
|
19
|
+
pdbeParams.options.behaviorRef = 'volume-streaming' + '' + Math.floor(Math.random() * Math.floor(100));
|
|
20
|
+
pdbeParams.options.emContourProvider = 'pdbe';
|
|
21
|
+
pdbeParams.options.serverUrl = 'https://www.ebi.ac.uk/pdbe/volume-server';
|
|
22
|
+
pdbeParams.options.channelParams['em'] = {
|
|
23
|
+
opacity: (mapParams && mapParams.em && mapParams.em.opacity) ? mapParams.em.opacity : 0.49,
|
|
24
|
+
wireframe: (mapParams && mapParams.em && mapParams.em.wireframe) ? mapParams.em.wireframe : false
|
|
25
|
+
};
|
|
26
|
+
pdbeParams.options.channelParams['2fo-fc'] = {
|
|
27
|
+
opacity: (mapParams && mapParams['2fo-fc'] && mapParams['2fo-fc'].opacity) ? mapParams['2fo-fc'].opacity : 0.49,
|
|
28
|
+
wireframe: (mapParams && mapParams['2fo-fc'] && mapParams['2fo-fc'].wireframe) ? mapParams['2fo-fc'].wireframe : false
|
|
29
|
+
};
|
|
30
|
+
pdbeParams.options.channelParams['fo-fc(+ve)'] = {
|
|
31
|
+
opacity: (mapParams && mapParams['fo-fc(+ve)'] && mapParams['fo-fc(+ve)'].opacity) ? mapParams['fo-fc(+ve)'].opacity : 0.3,
|
|
32
|
+
wireframe: (mapParams && mapParams['fo-fc(+ve)'] && mapParams['fo-fc(+ve)'].wireframe) ? mapParams['fo-fc(+ve)'].wireframe : true
|
|
33
|
+
};
|
|
34
|
+
pdbeParams.options.channelParams['fo-fc(-ve)'] = {
|
|
35
|
+
opacity: (mapParams && mapParams['fo-fc(-ve)'] && mapParams['fo-fc(-ve)'].opacity) ? mapParams['fo-fc(-ve)'].opacity : 0.3,
|
|
36
|
+
wireframe: (mapParams && mapParams['fo-fc(-ve)'] && mapParams['fo-fc(-ve)'].wireframe) ? mapParams['fo-fc(-ve)'].wireframe : true
|
|
37
|
+
};
|
|
38
|
+
return pdbeParams;
|
|
39
|
+
}
|
|
40
|
+
PDBeVolumes.mapParams = mapParams;
|
|
41
|
+
function displayUsibilityMessage(plugin) {
|
|
42
|
+
commands_1.PluginCommands.Toast.Show(plugin, {
|
|
43
|
+
title: 'Volume',
|
|
44
|
+
message: 'Streaming enabled, click on a residue or an atom to view the data.',
|
|
45
|
+
key: 'toast-1',
|
|
46
|
+
timeoutMs: 7000
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
PDBeVolumes.displayUsibilityMessage = displayUsibilityMessage;
|
|
50
|
+
function toggle(plugin) {
|
|
51
|
+
var state = plugin.state.data;
|
|
52
|
+
var streamingState = state.select(mol_state_1.StateSelection.Generators.ofTransformer(transformers_1.CreateVolumeStreamingInfo))[0];
|
|
53
|
+
if (streamingState) {
|
|
54
|
+
commands_1.PluginCommands.State.ToggleVisibility(plugin, { state: state, ref: streamingState.transform.ref });
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
PDBeVolumes.toggle = toggle;
|
|
59
|
+
})(PDBeVolumes = exports.PDBeVolumes || (exports.PDBeVolumes = {}));
|
|
60
|
+
var AlphafoldView;
|
|
61
|
+
(function (AlphafoldView) {
|
|
62
|
+
function getLociByPLDDT(score, contextData) {
|
|
63
|
+
var queryExp = builder_1.MolScriptBuilder.struct.modifier.union([
|
|
64
|
+
builder_1.MolScriptBuilder.struct.modifier.wholeResidues([
|
|
65
|
+
builder_1.MolScriptBuilder.struct.modifier.union([
|
|
66
|
+
builder_1.MolScriptBuilder.struct.generator.atomGroups({
|
|
67
|
+
'chain-test': builder_1.MolScriptBuilder.core.rel.eq([builder_1.MolScriptBuilder.ammp('objectPrimitive'), 'atomistic']),
|
|
68
|
+
'residue-test': builder_1.MolScriptBuilder.core.rel.gr([prop_1.QualityAssessment.symbols.pLDDT.symbol(), score]),
|
|
69
|
+
})
|
|
70
|
+
])
|
|
71
|
+
])
|
|
72
|
+
]);
|
|
73
|
+
var query = (0, compiler_1.compile)(queryExp);
|
|
74
|
+
var sel = query(new structure_1.QueryContext(contextData));
|
|
75
|
+
return structure_1.StructureSelection.toLociWithSourceUnits(sel);
|
|
76
|
+
}
|
|
77
|
+
AlphafoldView.getLociByPLDDT = getLociByPLDDT;
|
|
78
|
+
})(AlphafoldView = exports.AlphafoldView || (exports.AlphafoldView = {}));
|
|
79
|
+
var LigandView;
|
|
80
|
+
(function (LigandView) {
|
|
81
|
+
function query(ligandViewParams) {
|
|
82
|
+
var atomGroupsParams = {
|
|
83
|
+
'group-by': builder_1.MolScriptBuilder.core.str.concat([builder_1.MolScriptBuilder.struct.atomProperty.core.operatorName(), builder_1.MolScriptBuilder.struct.atomProperty.macromolecular.residueKey()])
|
|
84
|
+
};
|
|
85
|
+
// Residue Param
|
|
86
|
+
var residueParam;
|
|
87
|
+
if (ligandViewParams.auth_seq_id) {
|
|
88
|
+
residueParam = builder_1.MolScriptBuilder.core.rel.eq([builder_1.MolScriptBuilder.struct.atomProperty.macromolecular.auth_seq_id(), ligandViewParams.auth_seq_id]);
|
|
89
|
+
}
|
|
90
|
+
else if (ligandViewParams.label_comp_id) {
|
|
91
|
+
residueParam = builder_1.MolScriptBuilder.core.rel.eq([builder_1.MolScriptBuilder.struct.atomProperty.macromolecular.label_comp_id(), ligandViewParams.label_comp_id]);
|
|
92
|
+
}
|
|
93
|
+
if (residueParam)
|
|
94
|
+
atomGroupsParams['residue-test'] = residueParam;
|
|
95
|
+
// Chain Param
|
|
96
|
+
if (ligandViewParams.auth_asym_id) {
|
|
97
|
+
atomGroupsParams['chain-test'] = builder_1.MolScriptBuilder.core.rel.eq([builder_1.MolScriptBuilder.struct.atomProperty.macromolecular.auth_asym_id(), ligandViewParams.auth_asym_id]);
|
|
98
|
+
}
|
|
99
|
+
else if (ligandViewParams.struct_asym_id) {
|
|
100
|
+
atomGroupsParams['chain-test'] = builder_1.MolScriptBuilder.core.rel.eq([builder_1.MolScriptBuilder.struct.atomProperty.macromolecular.label_asym_id(), ligandViewParams.struct_asym_id]);
|
|
101
|
+
}
|
|
102
|
+
// Construct core query
|
|
103
|
+
var core = ligandViewParams.show_all ?
|
|
104
|
+
builder_1.MolScriptBuilder.struct.generator.atomGroups(atomGroupsParams) :
|
|
105
|
+
builder_1.MolScriptBuilder.struct.filter.first([
|
|
106
|
+
builder_1.MolScriptBuilder.struct.generator.atomGroups(atomGroupsParams)
|
|
107
|
+
]);
|
|
108
|
+
// Construct surroundings query
|
|
109
|
+
var surroundings = builder_1.MolScriptBuilder.struct.modifier.includeSurroundings({ 0: core, radius: 5, 'as-whole-residues': true });
|
|
110
|
+
return {
|
|
111
|
+
core: core,
|
|
112
|
+
surroundings: surroundings
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
LigandView.query = query;
|
|
116
|
+
function branchedQuery(params) {
|
|
117
|
+
var entityObjArray = [];
|
|
118
|
+
params.atom_site.forEach(function (param) {
|
|
119
|
+
var qEntities = {
|
|
120
|
+
'group-by': builder_1.MolScriptBuilder.core.str.concat([builder_1.MolScriptBuilder.struct.atomProperty.core.operatorName(), builder_1.MolScriptBuilder.struct.atomProperty.macromolecular.residueKey()]),
|
|
121
|
+
'residue-test': builder_1.MolScriptBuilder.core.rel.eq([builder_1.MolScriptBuilder.struct.atomProperty.macromolecular.auth_seq_id(), param.auth_seq_id])
|
|
122
|
+
};
|
|
123
|
+
entityObjArray.push(qEntities);
|
|
124
|
+
});
|
|
125
|
+
var atmGroupsQueries = [];
|
|
126
|
+
entityObjArray.forEach(function (entityObj) {
|
|
127
|
+
atmGroupsQueries.push(builder_1.MolScriptBuilder.struct.generator.atomGroups(entityObj));
|
|
128
|
+
});
|
|
129
|
+
var core = builder_1.MolScriptBuilder.struct.modifier.union([
|
|
130
|
+
atmGroupsQueries.length === 1
|
|
131
|
+
? atmGroupsQueries[0]
|
|
132
|
+
// Need to union before merge for fast performance
|
|
133
|
+
: builder_1.MolScriptBuilder.struct.combinator.merge(atmGroupsQueries.map(function (q) { return builder_1.MolScriptBuilder.struct.modifier.union([q]); }))
|
|
134
|
+
]);
|
|
135
|
+
// Construct surroundings query
|
|
136
|
+
var surroundings = builder_1.MolScriptBuilder.struct.modifier.includeSurroundings({ 0: core, radius: 5, 'as-whole-residues': true });
|
|
137
|
+
return {
|
|
138
|
+
core: core,
|
|
139
|
+
surroundings: surroundings
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
LigandView.branchedQuery = branchedQuery;
|
|
143
|
+
})(LigandView = exports.LigandView || (exports.LigandView = {}));
|
|
144
|
+
var QueryHelper;
|
|
145
|
+
(function (QueryHelper) {
|
|
146
|
+
function getQueryObject(params, contextData) {
|
|
147
|
+
var selections = [];
|
|
148
|
+
var siftMappings;
|
|
149
|
+
var currentAccession;
|
|
150
|
+
params.forEach(function (param) {
|
|
151
|
+
var selection = {};
|
|
152
|
+
// entity
|
|
153
|
+
if (param.entity_id)
|
|
154
|
+
selection['entityTest'] = function (l) { return structure_1.StructureProperties.entity.id(l.element) === param.entity_id; };
|
|
155
|
+
// chain
|
|
156
|
+
if (param.struct_asym_id) {
|
|
157
|
+
selection['chainTest'] = function (l) { return structure_1.StructureProperties.chain.label_asym_id(l.element) === param.struct_asym_id; };
|
|
158
|
+
}
|
|
159
|
+
else if (param.auth_asym_id) {
|
|
160
|
+
selection['chainTest'] = function (l) { return structure_1.StructureProperties.chain.auth_asym_id(l.element) === param.auth_asym_id; };
|
|
161
|
+
}
|
|
162
|
+
// residues
|
|
163
|
+
if (param.label_comp_id) {
|
|
164
|
+
selection['residueTest'] = function (l) { return structure_1.StructureProperties.atom.label_comp_id(l.element) === param.label_comp_id; };
|
|
165
|
+
}
|
|
166
|
+
else if (param.uniprot_accession && param.uniprot_residue_number) {
|
|
167
|
+
selection['residueTest'] = function (l) {
|
|
168
|
+
if (!siftMappings || currentAccession !== param.uniprot_accession) {
|
|
169
|
+
siftMappings = sifts_mapping_1.SIFTSMapping.Provider.get(contextData.models[0]).value;
|
|
170
|
+
currentAccession = param.uniprot_accession;
|
|
171
|
+
}
|
|
172
|
+
var rI = structure_1.StructureProperties.residue.key(l.element);
|
|
173
|
+
return param.uniprot_accession === siftMappings.accession[rI] && param.uniprot_residue_number === +siftMappings.num[rI];
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
else if (param.uniprot_accession && param.start_uniprot_residue_number && param.end_uniprot_residue_number) {
|
|
177
|
+
selection['residueTest'] = function (l) {
|
|
178
|
+
if (!siftMappings || currentAccession !== param.uniprot_accession) {
|
|
179
|
+
siftMappings = sifts_mapping_1.SIFTSMapping.Provider.get(contextData.models[0]).value;
|
|
180
|
+
currentAccession = param.uniprot_accession;
|
|
181
|
+
}
|
|
182
|
+
var rI = structure_1.StructureProperties.residue.key(l.element);
|
|
183
|
+
return param.uniprot_accession === siftMappings.accession[rI] && (param.start_uniprot_residue_number <= +siftMappings.num[rI] && param.end_uniprot_residue_number >= +siftMappings.num[rI]);
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
else if (param.residue_number) {
|
|
187
|
+
selection['residueTest'] = function (l) { return structure_1.StructureProperties.residue.label_seq_id(l.element) === param.residue_number; };
|
|
188
|
+
}
|
|
189
|
+
else if ((param.start_residue_number && param.end_residue_number) && (param.end_residue_number > param.start_residue_number)) {
|
|
190
|
+
selection['residueTest'] = function (l) {
|
|
191
|
+
var labelSeqId = structure_1.StructureProperties.residue.label_seq_id(l.element);
|
|
192
|
+
return labelSeqId >= param.start_residue_number && labelSeqId <= param.end_residue_number;
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
else if ((param.start_residue_number && param.end_residue_number) && (param.end_residue_number === param.start_residue_number)) {
|
|
196
|
+
selection['residueTest'] = function (l) { return structure_1.StructureProperties.residue.label_seq_id(l.element) === param.start_residue_number; };
|
|
197
|
+
}
|
|
198
|
+
else if (param.auth_seq_id) {
|
|
199
|
+
selection['residueTest'] = function (l) { return structure_1.StructureProperties.residue.auth_seq_id(l.element) === param.auth_seq_id; };
|
|
200
|
+
}
|
|
201
|
+
else if (param.auth_residue_number && !param.auth_ins_code_id) {
|
|
202
|
+
selection['residueTest'] = function (l) { return structure_1.StructureProperties.residue.auth_seq_id(l.element) === param.auth_residue_number; };
|
|
203
|
+
}
|
|
204
|
+
else if (param.auth_residue_number && param.auth_ins_code_id) {
|
|
205
|
+
selection['residueTest'] = function (l) { return structure_1.StructureProperties.residue.auth_seq_id(l.element) === param.auth_residue_number; };
|
|
206
|
+
}
|
|
207
|
+
else if ((param.start_auth_residue_number && param.end_auth_residue_number) && (param.end_auth_residue_number > param.start_auth_residue_number)) {
|
|
208
|
+
selection['residueTest'] = function (l) {
|
|
209
|
+
var authSeqId = structure_1.StructureProperties.residue.auth_seq_id(l.element);
|
|
210
|
+
return authSeqId >= param.start_auth_residue_number && authSeqId <= param.end_auth_residue_number;
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
else if ((param.start_auth_residue_number && param.end_auth_residue_number) && (param.end_auth_residue_number === param.start_auth_residue_number)) {
|
|
214
|
+
selection['residueTest'] = function (l) { return structure_1.StructureProperties.residue.auth_seq_id(l.element) === param.start_auth_residue_number; };
|
|
215
|
+
}
|
|
216
|
+
// atoms
|
|
217
|
+
if (param.atoms) {
|
|
218
|
+
selection['atomTest'] = function (l) { return param.atoms.includes(structure_1.StructureProperties.atom.label_atom_id(l.element)); };
|
|
219
|
+
}
|
|
220
|
+
if (param.atom_id) {
|
|
221
|
+
selection['atomTest'] = function (l) { return param.atom_id.includes(structure_1.StructureProperties.atom.id(l.element)); };
|
|
222
|
+
}
|
|
223
|
+
selections.push(selection);
|
|
224
|
+
});
|
|
225
|
+
var atmGroupsQueries = [];
|
|
226
|
+
selections.forEach(function (selection) {
|
|
227
|
+
atmGroupsQueries.push(structure_2.Queries.generators.atoms(selection));
|
|
228
|
+
});
|
|
229
|
+
return structure_2.Queries.combinators.merge(atmGroupsQueries);
|
|
230
|
+
}
|
|
231
|
+
QueryHelper.getQueryObject = getQueryObject;
|
|
232
|
+
function getInteractivityLoci(params, contextData) {
|
|
233
|
+
var sel = query_1.StructureQuery.run(QueryHelper.getQueryObject(params, contextData), contextData);
|
|
234
|
+
return structure_1.StructureSelection.toLociWithSourceUnits(sel);
|
|
235
|
+
}
|
|
236
|
+
QueryHelper.getInteractivityLoci = getInteractivityLoci;
|
|
237
|
+
function getHetLoci(queryExp, contextData) {
|
|
238
|
+
var query = (0, compiler_1.compile)(queryExp);
|
|
239
|
+
var sel = query(new structure_1.QueryContext(contextData));
|
|
240
|
+
return structure_1.StructureSelection.toLociWithSourceUnits(sel);
|
|
241
|
+
}
|
|
242
|
+
QueryHelper.getHetLoci = getHetLoci;
|
|
243
|
+
})(QueryHelper = exports.QueryHelper || (exports.QueryHelper = {}));
|
|
244
|
+
var ModelInfo;
|
|
245
|
+
(function (ModelInfo) {
|
|
246
|
+
function get(model, structures) {
|
|
247
|
+
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
248
|
+
var residueCount, residueOffsets, chainIndex, hetNames, carbEntityCount, rI, cI, eI, entityType, comp_id;
|
|
249
|
+
return tslib_1.__generator(this, function (_a) {
|
|
250
|
+
residueCount = model.atomicHierarchy.residues._rowCount;
|
|
251
|
+
residueOffsets = model.atomicHierarchy.residueAtomSegments.offsets;
|
|
252
|
+
chainIndex = model.atomicHierarchy.chainAtomSegments.index;
|
|
253
|
+
hetNames = [];
|
|
254
|
+
carbEntityCount = 0;
|
|
255
|
+
for (rI = 0; rI < residueCount; rI++) {
|
|
256
|
+
cI = chainIndex[residueOffsets[rI]];
|
|
257
|
+
eI = model.atomicHierarchy.index.getEntityFromChain(cI);
|
|
258
|
+
entityType = model.entities.data.type.value(eI);
|
|
259
|
+
if (entityType !== 'non-polymer' && entityType !== 'branched')
|
|
260
|
+
continue;
|
|
261
|
+
comp_id = model.atomicHierarchy.atoms.label_comp_id.value(residueOffsets[rI]);
|
|
262
|
+
if (entityType === 'branched') {
|
|
263
|
+
carbEntityCount++;
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
if (hetNames.indexOf(comp_id) === -1)
|
|
267
|
+
hetNames.push(comp_id);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return [2 /*return*/, {
|
|
271
|
+
hetNames: hetNames,
|
|
272
|
+
carbEntityCount: carbEntityCount
|
|
273
|
+
}];
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
ModelInfo.get = get;
|
|
278
|
+
})(ModelInfo = exports.ModelInfo || (exports.ModelInfo = {}));
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|