From ab7dd9eaf35e5ab3256080a7812b68c3301a7acf Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Mon, 11 Feb 2019 14:26:10 -0800 Subject: [PATCH] volume param tweaks, handle 0 sigma --- src/mol-geo/geometry/direct-volume/direct-volume.ts | 6 +++--- src/mol-model/volume/data.ts | 2 +- src/mol-plugin/ui/controls/parameters.tsx | 2 +- src/mol-repr/structure/visual/gaussian-density-volume.ts | 2 +- src/mol-repr/volume/direct-volume.ts | 1 - src/mol-repr/volume/isosurface.ts | 4 ++-- 6 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/mol-geo/geometry/direct-volume/direct-volume.ts b/src/mol-geo/geometry/direct-volume/direct-volume.ts index 47d89aad9..d97903561 100644 --- a/src/mol-geo/geometry/direct-volume/direct-volume.ts +++ b/src/mol-geo/geometry/direct-volume/direct-volume.ts @@ -73,7 +73,7 @@ export namespace DirectVolume { export const Params = { ...BaseGeometry.Params, - isoValue: PD.Numeric(0.22, { min: -1, max: 1, step: 0.01 }), + isoValueNorm: PD.Numeric(0.22, { min: 0, max: 1, step: 0.01 }, { description: 'Normalized Isolevel Value' }), renderMode: PD.Select('volume', RenderModeOptions), controlPoints: PD.LineGraph([ Vec2.create(0.19, 0.0), Vec2.create(0.2, 0.05), Vec2.create(0.25, 0.05), Vec2.create(0.26, 0.0), @@ -122,7 +122,7 @@ export namespace DirectVolume { boundingSphere: ValueCell.create(boundingSphere), invariantBoundingSphere: ValueCell.create(invariantBoundingSphere), - uIsoValue: ValueCell.create(props.isoValue), + uIsoValue: ValueCell.create(props.isoValueNorm), uBboxMin: bboxMin, uBboxMax: bboxMax, uBboxSize: bboxSize, @@ -145,7 +145,7 @@ export namespace DirectVolume { } function updateValues(values: DirectVolumeValues, props: PD.Values<Params>) { - ValueCell.updateIfChanged(values.uIsoValue, props.isoValue) + ValueCell.updateIfChanged(values.uIsoValue, props.isoValueNorm) ValueCell.updateIfChanged(values.uAlpha, props.alpha) ValueCell.updateIfChanged(values.dUseFog, props.useFog) ValueCell.updateIfChanged(values.dRenderMode, props.renderMode) diff --git a/src/mol-model/volume/data.ts b/src/mol-model/volume/data.ts index 2805e7e70..6e9ab3173 100644 --- a/src/mol-model/volume/data.ts +++ b/src/mol-model/volume/data.ts @@ -55,7 +55,7 @@ namespace VolumeIsoValue { } export function calcRelative(stats: VolumeData['dataStats'], absoluteValue: number): number { - return (absoluteValue - stats.mean) / stats.sigma + return stats.sigma === 0 ? 0 : ((absoluteValue - stats.mean) / stats.sigma) } export function toAbsolute(value: VolumeIsoValue): Absolute { diff --git a/src/mol-plugin/ui/controls/parameters.tsx b/src/mol-plugin/ui/controls/parameters.tsx index ed890ef13..a6bff120b 100644 --- a/src/mol-plugin/ui/controls/parameters.tsx +++ b/src/mol-plugin/ui/controls/parameters.tsx @@ -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 David Sehnal <david.sehnal@gmail.com> * @author Alexander Rose <alexander.rose@weirdbyte.de> diff --git a/src/mol-repr/structure/visual/gaussian-density-volume.ts b/src/mol-repr/structure/visual/gaussian-density-volume.ts index e5a8a9683..3c928cdb6 100644 --- a/src/mol-repr/structure/visual/gaussian-density-volume.ts +++ b/src/mol-repr/structure/visual/gaussian-density-volume.ts @@ -95,7 +95,7 @@ export function GaussianDensityVolumeVisual(): ComplexVisual<GaussianDensityVolu if (newProps.radiusOffset !== currentProps.radiusOffset) state.createGeometry = true if (newProps.smoothness !== currentProps.smoothness) { state.createGeometry = true - newProps.isoValue = Math.exp(-newProps.smoothness) + newProps.isoValueNorm = Math.exp(-newProps.smoothness) } } }) diff --git a/src/mol-repr/volume/direct-volume.ts b/src/mol-repr/volume/direct-volume.ts index 07f1e322e..5957435a2 100644 --- a/src/mol-repr/volume/direct-volume.ts +++ b/src/mol-repr/volume/direct-volume.ts @@ -152,7 +152,6 @@ export async function createDirectVolume(ctx: VisualContext, volume: VolumeData, await createDirectVolume2d(runtime, webgl, volume, directVolume) } - // export const DirectVolumeParams = { diff --git a/src/mol-repr/volume/isosurface.ts b/src/mol-repr/volume/isosurface.ts index 778b82946..4504d8766 100644 --- a/src/mol-repr/volume/isosurface.ts +++ b/src/mol-repr/volume/isosurface.ts @@ -25,12 +25,12 @@ const IsoValueParam = PD.Conditioned( 'absolute': PD.Converted( (v: VolumeIsoValue) => VolumeIsoValue.toAbsolute(v).absoluteValue, (v: number) => VolumeIsoValue.absolute(VolumeData.Empty.dataStats, v), - PD.Numeric(0, { min: -1, max: 1, step: 0.01 }) + PD.Numeric(0.5, { min: -1, max: 1, step: 0.01 }) ), 'relative': PD.Converted( (v: VolumeIsoValue) => VolumeIsoValue.toRelative(v).relativeValue, (v: number) => VolumeIsoValue.relative(VolumeData.Empty.dataStats, v), - PD.Numeric(0, { min: -1, max: 1, step: 0.01 }) + PD.Numeric(2, { min: -10, max: 10, step: 0.01 }) ) }, (v: VolumeIsoValue) => v.kind === 'absolute' ? 'absolute' : 'relative', -- GitLab