Class IsoSolventReader

All Implemented Interfaces:
VertexDataServer

class IsoSolventReader extends AtomDataReader
  • Field Details

    • cavityRadius

      private float cavityRadius
    • envelopeRadius

      private float envelopeRadius
    • dots

      private javajs.util.P3[] dots
    • doCalculateTroughs

      private boolean doCalculateTroughs
    • isCavity

      private boolean isCavity
    • isPocket

      private boolean isPocket
    • iter

      private AtomIndexIterator iter
    • bsSurfacePoints

      private javajs.util.BS bsSurfacePoints
    • bsSurfaceDone

      private javajs.util.BS bsSurfaceDone
    • bsLocale

      private javajs.util.BS[] bsLocale
    • htEdges

      private Map<String,IsoSolventReader.Edge> htEdges
    • vEdges

      protected javajs.util.Lst<IsoSolventReader.Edge> vEdges
    • vFaces

      private javajs.util.Lst<IsoSolventReader.Face> vFaces
    • ptS1

      private final javajs.util.P3 ptS1
    • ptS2

      private final javajs.util.P3 ptS2
    • vTemp

      protected final javajs.util.V3 vTemp
    • plane

      protected final javajs.util.P4 plane
    • ptTemp2

      protected final javajs.util.P3 ptTemp2
    • vTemp2

      protected final javajs.util.V3 vTemp2
    • p

      protected final javajs.util.P3 p
    • testLinear

      private static boolean testLinear
    • bsAtomMinMax

      private javajs.util.BS[] bsAtomMinMax
    • isSurfacePoint

      private boolean isSurfacePoint
    • iAtomSurface

      private int iAtomSurface
    • nTest

      int nTest
    • rAS

      private float rAS
    • rBS

      private float rBS
    • rAS2

      private float rAS2
    • rBS2

      private float rBS2
    • dAB

      private float dAB
    • dAB2

      private float dAB2
    • ecosASB2

      private float ecosASB2
  • Constructor Details

    • IsoSolventReader

      IsoSolventReader()
  • Method Details

    • init

      void init(SurfaceGenerator sg)
      Description copied from class: SurfaceReader
      implemented in SurfaceFileReader and
      Overrides:
      init in class VolumeDataReader
      Parameters:
      sg -
    • readVolumeParameters

      protected boolean readVolumeParameters(boolean isMapData)
      Overrides:
      readVolumeParameters in class VolumeDataReader
    • setup

      protected void setup(boolean isMapData)
      Overrides:
      setup in class AtomDataReader
      Parameters:
      isMapData -
    • generateCube

      protected void generateCube()
      Overrides:
      generateCube in class VolumeDataReader
    • getSurfacePointAndFraction

      protected float getSurfacePointAndFraction(float cutoff, boolean isCutoffAbsolute, float valueA, float valueB, javajs.util.T3 pointA, javajs.util.V3 edgeVector, int x, int y, int z, int vA0, int vB0, float[] fReturn, javajs.util.T3 ptReturn)
      TEST: alternative EXACT position of fraction for spherical MarchingCubes FOR: ttest.xyz: 2 isosurface molecular test showing discontinuities C -2.70 0 0 C 2.75 0 0 RESULT: LINEAR (points slightly within R): $ isosurface resolution 5 volume area solvent 1.5 full isosurface1 created with cutoff=0.0; number of isosurfaces = 1 isosurfaceArea = [75.06620391572324] isosurfaceVolume = [41.639681683494324] NONLINEAR: $ isosurface resolution 5 volume area solvent 1.5 full isosurface1 created with cutoff=0.0; number of isosurfaces = 1 isosurfaceArea = [75.11873783245028] isosurfaceVolume = [41.727027252180655] revision 3/16/2014: isosurfaceArea = [75.13146821881998] isosurfaceVolume = [41.74598178064965] MSMS: msms -if ttest.xyzrn -of ttest -density 5 MSMS 2.6.1 started on Local PC Copyright M.F. Sanner (1994) Compilation flags INPUT ttest.xyzrn 2 spheres 0 collision only, radii 1.700 to 1.700 PARAM Probe_radius 1.500 density 5.000 hdensity 3.000 Couldn't find first face trying -all option ANALYTICAL SURFACE AREA : Comp. probe_radius, reent, toric, contact SES SAS 0 1.500 0.000 8.144 67.243 75.387 238.258 NUMERICAL VOLUMES AND AREA Comp. probe_radius SES_volume SES_area) 0 1.50 40.497 74.132 Total ses_volume: 40.497 MSMS terminated normally CONCLUSION: -- surfaces are essentially identical -- nonlinear is slightly closer to analytical area (75.387), as expected -- both are better than MSMS triangulation for same "resolution": prog parameters %Error MSMS -density 5 1.66% (1412 faces) MSMS -density 20 0.36% (2968 faces) JMOL LINEAR resol 5 0.42% (2720 faces) JMOL NONLINEAR resol 5 0.32% (2720 faces) -- Marching Cubes is slightly improved using nonlinear calc.
      Overrides:
      getSurfacePointAndFraction in class SurfaceReader
      Parameters:
      cutoff -
      isCutoffAbsolute -
      valueA -
      valueB -
      pointA -
      edgeVector -
      fReturn -
      ptReturn -
      Returns:
      fractional distance from A to B
    • addVertexCopy

      public int addVertexCopy(javajs.util.T3 vertexXYZ, float value, int assocVertex, boolean asCopy)
      Description copied from interface: VertexDataServer
      addVertexCopy is used by the Marching Squares algorithm to uniquely identify a new vertex when an edge is crossed in the 2D plane. The implementing method should COPY the Point3f using Point3f.set(). The data consumer can use the association key to group this vertex with others near the same gridpoint.
      Specified by:
      addVertexCopy in interface VertexDataServer
      Overrides:
      addVertexCopy in class SurfaceReader
      Parameters:
      vertexXYZ -
      value -
      assocVertex - unique association vertex or -1
      asCopy -
      Returns:
      new vertex index
    • selectPocket

      public void selectPocket(boolean doExclude)
      Overrides:
      selectPocket in class SurfaceReader
      Parameters:
      doExclude -
    • postProcessVertices

      protected void postProcessVertices()
      Overrides:
      postProcessVertices in class SurfaceReader
    • generateSolventCavity

      private void generateSolventCavity()
    • generateSolventCube

      private void generateSolventCube()
    • getEdges

      private void getEdges()
    • findEdge

      protected IsoSolventReader.Edge findEdge(int i, int j)
    • getFaces

      private void getFaces()
    • validateFace

      private IsoSolventReader.Face validateFace(int ia, int ib, int ic, IsoSolventReader.Edge edge, javajs.util.P3 ptS)
    • markFaceVoxels

      private void markFaceVoxels(boolean firstPass)
    • markToroidVoxels

      private void markToroidVoxels()
    • unsetVoxelData

      protected void unsetVoxelData()
      Overrides:
      unsetVoxelData in class AtomDataReader
    • getSolventPoints

      private boolean getSolventPoints(IsoSolventReader.Edge edge, int ia, int ib, int ic)
    • checkSpecialVoxel

      private float checkSpecialVoxel(javajs.util.P3 ptA, javajs.util.P3 ptB, javajs.util.P3 ptV)
    • solventDistance

      private float solventDistance(float rAS, float rAS2, float rBS2, float dAV, float dAV2, float dBV2)
    • dumpLine

      void dumpLine(javajs.util.P3 pt1, javajs.util.T3 pt2, String label, String color)
    • dumpLine2

      void dumpLine2(javajs.util.P3 pt1, javajs.util.P3 pt2, String label, float d, String color1, String color2)
    • dumpPoint

      void dumpPoint(javajs.util.P3 pt, String label, String color)
    • getValueAtPoint

      public float getValueAtPoint(javajs.util.T3 pt, boolean getSource)
      Overrides:
      getValueAtPoint in class SurfaceReader
      Parameters:
      pt -
      getSource - TODO
      Returns:
      value
    • discardTempData

      void discardTempData(boolean discardAll)
      Overrides:
      discardTempData in class SurfaceReader
    • getPlane

      public float[] getPlane(int x)
      Specified by:
      getPlane in interface VertexDataServer
      Overrides:
      getPlane in class SurfaceReader