Skip to content
Snippets Groups Projects
Commit 7d7244e6 authored by Alexander Rose's avatar Alexander Rose
Browse files

added distance restraint repr, used spacefill for spheres complex

parent 157f51d9
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,8 @@ import { StateTreeBuilder } from 'mol-state/tree/builder';
import { PolymerIdColorThemeParams } from 'mol-theme/color/polymer-id';
import { UniformSizeThemeParams } from 'mol-theme/size/uniform';
import { ElementSymbolColorThemeParams } from 'mol-theme/color/element-symbol';
import { PhysicalSizeThemeParams } from 'mol-theme/size/physical';
import { SpacefillParams } from 'mol-repr/structure/representation/spacefill';
// TODO: "structure parser provider"
......@@ -124,8 +126,12 @@ function complexRepresentation(root: StateTreeBuilder.To<PluginStateObject.Molec
colorTheme: { name: 'element-symbol', params: PD.getDefaultValues(ElementSymbolColorThemeParams) },
sizeTheme: { name: 'uniform', params: PD.getDefaultValues(UniformSizeThemeParams) },
})
root.apply(StateTransforms.Model.StructureComplexElement, { type: 'spheres' });
// TODO: create spheres visual
root.apply(StateTransforms.Model.StructureComplexElement, { type: 'spheres' })
.apply(StateTransforms.Representation.StructureRepresentation3D, {
type: { name: 'spacefill', params: { ...PD.getDefaultValues(SpacefillParams) } },
colorTheme: { name: 'polymer-id', params: PD.getDefaultValues(PolymerIdColorThemeParams) },
sizeTheme: { name: 'physical', params: PD.getDefaultValues(PhysicalSizeThemeParams) },
})
}
export const CreateComplexRepresentation = StateAction.build({
......
......@@ -11,6 +11,7 @@ import { BallAndStickRepresentationProvider } from './representation/ball-and-st
import { MolecularSurfaceRepresentationProvider } from './representation/molecular-surface';
import { CarbohydrateRepresentationProvider } from './representation/carbohydrate';
import { SpacefillRepresentationProvider } from './representation/spacefill';
import { DistanceRestraintRepresentationProvider } from './representation/distance-restraint';
export class StructureRepresentationRegistry extends RepresentationRegistry<Structure> {
constructor() {
......@@ -26,6 +27,7 @@ export const BuiltInStructureRepresentations = {
'cartoon': CartoonRepresentationProvider,
'ball-and-stick': BallAndStickRepresentationProvider,
'carbohydrate': CarbohydrateRepresentationProvider,
'distance-restraint': DistanceRestraintRepresentationProvider,
'molecular-surface': MolecularSurfaceRepresentationProvider,
'spacefill': SpacefillRepresentationProvider,
}
......
// /**
// * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
// *
// * @author Alexander Rose <alexander.rose@weirdbyte.de>
// */
/**
* Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
// import { CrossLinkRestraintVisual, CrossLinkRestraintParams } from '../visual/cross-link-restraint-cylinder';
// import { ParamDefinition as PD } from 'mol-util/param-definition';
// import { ComplexRepresentation } from '../complex-representation';
// import { StructureRepresentation } from '../representation';
// import { Representation } from 'mol-repr/representation';
// import { ThemeRegistryContext } from 'mol-theme/theme';
// import { Structure } from 'mol-model/structure';
import { CrossLinkRestraintVisual, CrossLinkRestraintParams } from '../visual/cross-link-restraint-cylinder';
import { ParamDefinition as PD } from 'mol-util/param-definition';
import { ComplexRepresentation } from '../complex-representation';
import { StructureRepresentation, StructureRepresentationProvider } from '../representation';
import { Representation, RepresentationContext, RepresentationParamsGetter } from 'mol-repr/representation';
import { ThemeRegistryContext } from 'mol-theme/theme';
import { Structure } from 'mol-model/structure';
import { UnitKind, UnitKindOptions } from '../visual/util/common';
// export const DistanceRestraintParams = {
// ...CrossLinkRestraintParams,
// }
// export function getDistanceRestraintParams(ctx: ThemeRegistryContext, structure: Structure) {
// return DistanceRestraintParams // TODO return copy
// }
// export type DistanceRestraintProps = PD.DefaultValues<typeof DistanceRestraintParams>
const DistanceRestraintVisuals = {
'distance-restraint': (ctx: RepresentationContext, getParams: RepresentationParamsGetter<Structure, CrossLinkRestraintParams>) => ComplexRepresentation('Cross-link restraint', ctx, getParams, CrossLinkRestraintVisual),
}
// export type DistanceRestraintRepresentation = StructureRepresentation<DistanceRestraintProps>
export const DistanceRestraintParams = {
...CrossLinkRestraintParams,
unitKinds: PD.MultiSelect<UnitKind>(['atomic', 'spheres'], UnitKindOptions),
}
export type DistanceRestraintParams = typeof DistanceRestraintParams
export function getDistanceRestraintParams(ctx: ThemeRegistryContext, structure: Structure) {
return PD.clone(DistanceRestraintParams)
}
// export function DistanceRestraintRepresentation(defaultProps: DistanceRestraintProps): DistanceRestraintRepresentation {
// return Representation.createMulti('Distance restraint', defaultProps, [
// ComplexRepresentation('Cross-link restraint', defaultProps, CrossLinkRestraintVisual)
// ])
// }
\ No newline at end of file
export type DistanceRestraintRepresentation = StructureRepresentation<DistanceRestraintParams>
export function DistanceRestraintRepresentation(ctx: RepresentationContext, getParams: RepresentationParamsGetter<Structure, DistanceRestraintParams>): DistanceRestraintRepresentation {
return Representation.createMulti('DistanceRestraint', ctx, getParams, DistanceRestraintVisuals as unknown as Representation.Def<Structure, DistanceRestraintParams>)
}
export const DistanceRestraintRepresentationProvider: StructureRepresentationProvider<typeof DistanceRestraintParams> = {
label: 'DistanceRestraint',
description: 'Displays cross-link distance restraints.',
factory: DistanceRestraintRepresentation,
getParams: getDistanceRestraintParams,
defaultValues: PD.getDefaultValues(DistanceRestraintParams),
defaultColorTheme: 'cross-link',
defaultSizeTheme: 'uniform'
}
\ No newline at end of file
......@@ -19,7 +19,7 @@ const SpacefillVisuals = {
export const SpacefillParams = {
...ElementSphereParams,
unitKinds: PD.MultiSelect<UnitKind>(['atomic', 'gaussians'], UnitKindOptions),
unitKinds: PD.MultiSelect<UnitKind>(['atomic', 'spheres'], UnitKindOptions),
}
export type SpacefillParams = typeof SpacefillParams
export function getSpacefillParams(ctx: ThemeRegistryContext, structure: Structure) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment