From 09c7edce885514a0a70f2abbdc5bf61c9408d67e Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Tue, 24 Sep 2019 10:11:42 -0700 Subject: [PATCH] smaller terminal links and dashed terminal links to metals --- .../carbohydrate-terminal-link-cylinder.ts | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.ts b/src/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.ts index 0dbb6c91b..25c86190f 100644 --- a/src/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.ts +++ b/src/mol-repr/structure/visual/carbohydrate-terminal-link-cylinder.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. + * Copyright (c) 2018-2019 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ @@ -20,10 +20,11 @@ import { LocationIterator } from '../../../mol-geo/util/location-iterator'; import { OrderedSet, Interval } from '../../../mol-data/int'; import { PickingId } from '../../../mol-geo/geometry/picking'; import { EmptyLoci, Loci } from '../../../mol-model/loci'; +import { getElementIdx, MetalsSet } from '../../../mol-model/structure/structure/unit/links/common'; function createCarbohydrateTerminalLinkCylinderMesh(ctx: VisualContext, structure: Structure, theme: Theme, props: PD.Values<CarbohydrateTerminalLinkParams>, mesh?: Mesh) { const { terminalLinks, elements } = structure.carbohydrates - const { linkSizeFactor } = props + const { terminalLinkSizeFactor } = props const location = StructureElement.Location.create() @@ -41,7 +42,12 @@ function createCarbohydrateTerminalLinkCylinderMesh(ctx: VisualContext, structur } }, order: (edgeIndex: number) => 1, - flags: (edgeIndex: number) => BitFlags.create(LinkType.Flag.None), + flags: (edgeIndex: number) => { + const l = terminalLinks[edgeIndex] + const eI = l.elementUnit.elements[l.elementIndex] + const beI = getElementIdx(l.elementUnit.model.atomicHierarchy.atoms.type_symbol.value(eI)); + return BitFlags.create(MetalsSet.has(beI) ? LinkType.Flag.MetallicCoordination : LinkType.Flag.None); + }, radius: (edgeIndex: number) => { const l = terminalLinks[edgeIndex] if (l.fromCarbohydrate) { @@ -51,7 +57,7 @@ function createCarbohydrateTerminalLinkCylinderMesh(ctx: VisualContext, structur location.unit = l.elementUnit location.element = l.elementUnit.elements[l.elementIndex] } - return theme.size.size(location) * linkSizeFactor + return theme.size.size(location) * terminalLinkSizeFactor }, ignore: (edgeIndex: number) => false } @@ -62,7 +68,7 @@ function createCarbohydrateTerminalLinkCylinderMesh(ctx: VisualContext, structur export const CarbohydrateTerminalLinkParams = { ...UnitsMeshParams, ...LinkCylinderParams, - linkSizeFactor: PD.Numeric(0.3, { min: 0, max: 3, step: 0.01 }), + terminalLinkSizeFactor: PD.Numeric(0.2, { min: 0, max: 3, step: 0.01 }), } export type CarbohydrateTerminalLinkParams = typeof CarbohydrateTerminalLinkParams @@ -75,7 +81,7 @@ export function CarbohydrateTerminalLinkVisual(materialId: number): ComplexVisua eachLocation: eachTerminalLink, setUpdateState: (state: VisualUpdateState, newProps: PD.Values<CarbohydrateTerminalLinkParams>, currentProps: PD.Values<CarbohydrateTerminalLinkParams>) => { state.createGeometry = ( - newProps.linkSizeFactor !== currentProps.linkSizeFactor || + newProps.terminalLinkSizeFactor !== currentProps.terminalLinkSizeFactor || newProps.radialSegments !== currentProps.radialSegments ) } -- GitLab