UNPKG

molstar

Version:

A comprehensive macromolecular library.

82 lines 4.28 kB
"use strict"; /** * Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Sebastian Bittrich <sebastian.bittrich@rcsb.org> * @author Alexander Rose <alexander.rose@weirdbyte.de> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.AccessibleSurfaceAreaColorThemeProvider = exports.AccessibleSurfaceAreaColorTheme = exports.getAccessibleSurfaceAreaColorThemeParams = exports.AccessibleSurfaceAreaColorThemeParams = void 0; var param_definition_1 = require("../../../mol-util/param-definition"); var color_1 = require("../../../mol-util/color"); var structure_1 = require("../../../mol-model/structure"); var accessible_surface_area_1 = require("../accessible-surface-area"); var shrake_rupley_1 = require("../accessible-surface-area/shrake-rupley"); var util_1 = require("../../../mol-data/util"); var DefaultColor = (0, color_1.Color)(0xFAFAFA); var Description = 'Assigns a color based on the relative accessible surface area of a residue.'; exports.AccessibleSurfaceAreaColorThemeParams = { list: param_definition_1.ParamDefinition.ColorList('rainbow', { presetKind: 'scale' }) }; function getAccessibleSurfaceAreaColorThemeParams(ctx) { return exports.AccessibleSurfaceAreaColorThemeParams; // TODO return copy } exports.getAccessibleSurfaceAreaColorThemeParams = getAccessibleSurfaceAreaColorThemeParams; function AccessibleSurfaceAreaColorTheme(ctx, props) { var color; var scale = color_1.ColorScale.create({ listOrName: props.list.colors, minLabel: 'buried', maxLabel: 'exposed', domain: [0.0, 1.0] }); var accessibleSurfaceArea = ctx.structure && accessible_surface_area_1.AccessibleSurfaceAreaProvider.get(ctx.structure); var contextHash = accessibleSurfaceArea ? (0, util_1.hash2)(accessibleSurfaceArea.id, accessibleSurfaceArea.version) : -1; if ((accessibleSurfaceArea === null || accessibleSurfaceArea === void 0 ? void 0 : accessibleSurfaceArea.value) && ctx.structure) { var l_1 = structure_1.StructureElement.Location.create(ctx.structure); var asa_1 = accessibleSurfaceArea.value; var getColor_1 = function (location) { var value = shrake_rupley_1.AccessibleSurfaceArea.getNormalizedValue(location, asa_1); return value === -1 ? DefaultColor : scale.color(value); }; color = function (location) { if (structure_1.StructureElement.Location.is(location) && structure_1.Unit.isAtomic(location.unit)) { return getColor_1(location); } else if (structure_1.Bond.isLocation(location)) { l_1.unit = location.aUnit; l_1.element = location.aUnit.elements[location.aIndex]; return getColor_1(l_1); } return DefaultColor; }; } else { color = function () { return DefaultColor; }; } return { factory: AccessibleSurfaceAreaColorTheme, granularity: 'group', preferSmoothing: true, color: color, props: props, contextHash: contextHash, description: Description, legend: scale ? scale.legend : undefined }; } exports.AccessibleSurfaceAreaColorTheme = AccessibleSurfaceAreaColorTheme; exports.AccessibleSurfaceAreaColorThemeProvider = { name: 'accessible-surface-area', label: 'Accessible Surface Area', category: "Residue Property" /* Residue */, factory: AccessibleSurfaceAreaColorTheme, getParams: getAccessibleSurfaceAreaColorThemeParams, defaultValues: param_definition_1.ParamDefinition.getDefaultValues(exports.AccessibleSurfaceAreaColorThemeParams), isApplicable: function (ctx) { return !!ctx.structure; }, ensureCustomProperties: { attach: function (ctx, data) { return data.structure ? accessible_surface_area_1.AccessibleSurfaceAreaProvider.attach(ctx, data.structure, void 0, true) : Promise.resolve(); }, detach: function (data) { return data.structure && accessible_surface_area_1.AccessibleSurfaceAreaProvider.ref(data.structure, false); } } }; //# sourceMappingURL=accessible-surface-area.js.map