Переглянути джерело

wip, computeStructureGaussianDensity

Alexander Rose 6 роки тому
батько
коміт
ebc1af8362
1 змінених файлів з 16 додано та 8 видалено
  1. 16 8
      src/mol-repr/structure/visual/util/gaussian.ts

+ 16 - 8
src/mol-repr/structure/visual/util/gaussian.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>
  */
@@ -23,6 +23,16 @@ export const GaussianDensityParams = {
 export const DefaultGaussianDensityProps = PD.getDefaultValues(GaussianDensityParams)
 export type GaussianDensityProps = typeof DefaultGaussianDensityProps
 
+export const GaussianDensityTextureParams = {
+    resolution: PD.Numeric(1, { min: 0.1, max: 10, step: 0.1 }),
+    radiusOffset: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }),
+    smoothness: PD.Numeric(1.5, { min: 0.5, max: 2.5, step: 0.1 }),
+}
+export const DefaultGaussianDensityTextureProps = PD.getDefaultValues(GaussianDensityTextureParams)
+export type GaussianDensityTextureProps = typeof DefaultGaussianDensityTextureProps
+
+//
+
 function getConformation(unit: Unit) {
     switch (unit.kind) {
         case Unit.Kind.Atomic: return unit.model.atomicConformation
@@ -101,15 +111,13 @@ function getStructureConformationAndRadius(structure: Structure) {
     return { position, radius }
 }
 
-export const GaussianDensityTextureParams = {
-    resolution: PD.Numeric(1, { min: 0.1, max: 10, step: 0.1 }),
-    radiusOffset: PD.Numeric(0, { min: 0, max: 10, step: 0.1 }),
-    smoothness: PD.Numeric(1.5, { min: 0.5, max: 2.5, step: 0.1 }),
+export function computeStructureGaussianDensity(structure: Structure, props: GaussianDensityProps, webgl?: WebGLContext) {
+    const { position, radius } = getStructureConformationAndRadius(structure)
+    return Task.create('Gaussian Density', async ctx => {
+        return await GaussianDensity(ctx, position, structure.lookup3d.boundary.box, radius, props, webgl);
+    });
 }
-export const DefaultGaussianDensityTextureProps = PD.getDefaultValues(GaussianDensityTextureParams)
-export type GaussianDensityTextureProps = typeof DefaultGaussianDensityTextureProps
 
-// TODO calculate by combining unit volumes
 export function computeStructureGaussianDensityTexture(structure: Structure, props: GaussianDensityTextureProps, webgl: WebGLContext, texture?: Texture) {
     const { position, radius } = getStructureConformationAndRadius(structure)
     return Task.create('Gaussian Density', async ctx => {