diff --git a/src/mol-model/volume/data.ts b/src/mol-model/volume/data.ts index 18d06c52d7771cf5d2ddc1f7bfe39c362421be06..fce0581ed0e1d209f2f41c701c02fe8294ffae5f 100644 --- a/src/mol-model/volume/data.ts +++ b/src/mol-model/volume/data.ts @@ -65,6 +65,12 @@ namespace VolumeIsoValue { export function toRelative(value: VolumeIsoValue, stats: VolumeData['dataStats']): Relative { return value.kind === 'relative' ? value : { kind: 'relative', relativeValue: VolumeIsoValue.calcRelative(stats, value.absoluteValue) } } + + export function toString(value: VolumeIsoValue) { + return value.kind === 'relative' + ? `${value.relativeValue} Ď` + : `${value.absoluteValue}` + } } export { VolumeData, VolumeIsoValue } \ No newline at end of file diff --git a/src/mol-plugin/state/transforms/representation.ts b/src/mol-plugin/state/transforms/representation.ts index 8127153899db4d6dda69ec83c818d38229df2e28..7e0e17acdba9b3e5c75dd093b97cad7f8ec113ff 100644 --- a/src/mol-plugin/state/transforms/representation.ts +++ b/src/mol-plugin/state/transforms/representation.ts @@ -16,7 +16,7 @@ import { BuiltInStructureRepresentationsName } from 'mol-repr/structure/registry import { Structure } from 'mol-model/structure'; import { StructureParams } from 'mol-repr/structure/representation'; import { ExplodeRepresentation3D } from 'mol-plugin/behavior/dynamic/representation'; -import { VolumeData } from 'mol-model/volume'; +import { VolumeData, VolumeIsoValue } from 'mol-model/volume'; import { BuiltInVolumeRepresentationsName } from 'mol-repr/volume/registry'; import { VolumeParams } from 'mol-repr/volume/representation'; import { BuiltInColorThemeName, ColorTheme } from 'mol-theme/color'; @@ -174,6 +174,10 @@ export namespace VolumeRepresentation3DHelpers { sizeTheme: { name: type.defaultSizeTheme, params: sizeParams ? { ...sizeType.defaultValues, ...sizeParams } : sizeType.defaultValues } }) } + + export function getDescription(props: any) { + return props.isoValue && VolumeIsoValue.toString(props.isoValue) + } } export { VolumeRepresentation3D } type VolumeRepresentation3D = typeof VolumeRepresentation3D @@ -235,9 +239,8 @@ const VolumeRepresentation3D = PluginStateTransform.BuiltIn({ const repr = provider.factory({ webgl: plugin.canvas3d.webgl, ...plugin.volumeRepresentation.themeCtx }, provider.getParams) repr.setTheme(createTheme(plugin.volumeRepresentation.themeCtx, { volume: a.data }, params)) // TODO set initial state, repr.setState({}) - // TODO include isoValue in the label where available await repr.createOrUpdate(props, a.data).runInContext(ctx); - return new SO.Volume.Representation3D(repr, { label: provider.label }); + return new SO.Volume.Representation3D(repr, { label: provider.label, description: VolumeRepresentation3DHelpers.getDescription(props) }); }); }, update({ a, b, oldParams, newParams }, plugin: PluginContext) { @@ -246,6 +249,7 @@ const VolumeRepresentation3D = PluginStateTransform.BuiltIn({ const props = { ...b.data.props, ...newParams.type.params } b.data.setTheme(createTheme(plugin.volumeRepresentation.themeCtx, { volume: a.data }, newParams)) await b.data.createOrUpdate(props, a.data).runInContext(ctx); + b.description = VolumeRepresentation3DHelpers.getDescription(props) return Transformer.UpdateResult.Updated; }); } diff --git a/src/mol-repr/volume/isosurface.ts b/src/mol-repr/volume/isosurface.ts index ec560fbbaf715a50eb24f8e51f67b6e714732bdc..db801ed3d30c159e43b5f8abd046e31d1b2df180 100644 --- a/src/mol-repr/volume/isosurface.ts +++ b/src/mol-repr/volume/isosurface.ts @@ -148,7 +148,7 @@ export function getIsosurfaceParams(ctx: ThemeRegistryContext, volume: VolumeDat 'relative': PD.Converted( (v: VolumeIsoValue) => VolumeIsoValue.toRelative(v, stats).relativeValue, (v: number) => VolumeIsoValue.relative(v), - PD.Numeric(2, { min: -10, max: 10, step: 0.001 }) + PD.Numeric(2, { min: Math.floor((min - mean) / sigma), max: Math.ceil((max - mean) / sigma), step: Math.ceil((max - min) / sigma) / 100 }) ) }, (v: VolumeIsoValue) => v.kind === 'absolute' ? 'absolute' : 'relative',