Package org.jmol.symmetry
Class Symmetry
- java.lang.Object
-
- org.jmol.symmetry.Symmetry
-
- All Implemented Interfaces:
SymmetryInterface
public class Symmetry extends Object implements SymmetryInterface
-
-
Field Summary
Fields Modifier and Type Field Description (package private) CIPChirality
cip
private SymmetryDesc
desc
private boolean
isBio
private PointGroup
pointGroup
(package private) SpaceGroup
spaceGroup
private SymmetryInfo
symmetryInfo
private UnitCell
unitCell
-
Constructor Summary
Constructors Constructor Description Symmetry()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
addBioMoleculeOperation(javajs.util.M4 mat, boolean isReverse)
boolean
addLatticeVectors(javajs.util.Lst<float[]> lattvecs)
String
addOp(String code, javajs.util.Matrix rs, javajs.util.Matrix vs, javajs.util.Matrix sigma)
int
addSpaceGroupOperation(String xyz, int opId)
void
calculateCIPChiralityForAtoms(Viewer vwr, javajs.util.BS bsAtoms)
String[]
calculateCIPChiralityForSmiles(Viewer vwr, String smiles)
boolean
checkDistance(javajs.util.P3 f1, javajs.util.P3 f2, float distance, float dx, int iRange, int jRange, int kRange, javajs.util.P3 ptOffset)
boolean
checkUnitCell(SymmetryInterface uc, javajs.util.P3 cell, javajs.util.P3 ptTemp, boolean isAbsolute)
boolean
createSpaceGroup(int desiredSpaceGroupIndex, String name, Object data, int modDim)
String
fcoord(javajs.util.T3 p)
javajs.util.Lst<javajs.util.P3>
generateCrystalClass(javajs.util.P3 pt0)
javajs.util.P3[]
getCanonicalCopy(float scale, boolean withOffset)
javajs.util.P3
getCartesianOffset()
int[]
getCellRange()
private CIPChirality
getCIPChirality(Viewer vwr)
javajs.util.T3[]
getConventionalUnitCell(String latticeType, javajs.util.M3 primitiveToCrystal)
return a conventional lattice from a primitiveboolean
getCoordinatesAreFractional()
private SymmetryDesc
getDesc(ModelSet modelSet)
javajs.util.P3
getFractionalOffset()
javajs.util.T3
getFractionalOrigin()
String
getIntTableNumber()
AtomIndexIterator
getIterator(Viewer vwr, Atom atom, Atom[] atoms, javajs.util.BS bsAtoms, float radius)
Object
getLatticeDesignation()
int
getLatticeOp()
String
getLatticeType()
String
getMatrixFromString(String xyz, float[] rotTransMatrix, boolean allowScaling, int modDim)
javajs.util.Lst<String>
getMoreInfo()
javajs.util.Matrix
getOperationRsVs(int iop)
Object
getPointGroupInfo(int modelIndex, String drawID, boolean asInfo, String type, int index, float scale)
String
getPointGroupName()
javajs.util.Quat
getQuaternionRotation(String abc)
int
getSiteMultiplicity(javajs.util.P3 pt)
Object
getSpaceGroup()
Map<String,Object>
getSpaceGroupInfo(ModelSet modelSet, String sgName, int modelIndex, boolean isFull, float[] cellParams)
Object
getSpaceGroupInfoObj(String name, SymmetryInterface cellInfo, boolean isFull)
String
getSpaceGroupName()
javajs.util.M4
getSpaceGroupOperation(int i)
String
getSpaceGroupOperationCode(int iOp)
int
getSpaceGroupOperationCount()
javajs.util.M4
getSpaceGroupOperationRaw(int i)
String
getSpaceGroupXyz(int i, boolean doNormalize)
float
getSpinOp(int op)
boolean
getState(javajs.util.SB commands)
Object
getSymmetryInfoAtom(ModelSet modelSet, int iatom, String xyz, int op, javajs.util.P3 pt, javajs.util.P3 pt2, String id, int type, float scaleFactor, int nth, int options)
String
getSymmetryInfoStr()
javajs.util.M4[]
getSymmetryOperations()
Tensor
getTensor(Viewer vwr, float[] parBorU)
SymmetryInterface
getUnitCell(javajs.util.T3[] oabc, boolean setRelative, String name)
float[]
getUnitCellAsArray(boolean vectorsOnly)
String
getUnitCellInfo()
Map<String,Object>
getUnitCellInfoMap()
float
getUnitCellInfoType(int infoType)
javajs.util.T3
getUnitCellMultiplier()
float[]
getUnitCellParams()
String
getUnitCellState()
javajs.util.P3[]
getUnitCellVectors()
javajs.util.P3[]
getUnitCellVerticesNoOffset()
String
getUnitsymmetryInfo()
javajs.util.T3[]
getV0abc(Object def)
boolean
haveUnitCell()
void
initializeOrientation(javajs.util.M3 mat)
boolean
isBio()
private boolean
isNotCentroid(javajs.util.P3 center, int n, int[] minmax, boolean centroidPacked)
boolean
isPolymer()
boolean
isSimple()
boolean
isSlab()
boolean
isSupercell()
void
newSpaceGroupPoint(int i, javajs.util.P3 atom1, javajs.util.P3 atom2, int transX, int transY, int transZ, javajs.util.M4 o)
javajs.util.BS
notInCentroid(ModelSet modelSet, javajs.util.BS bsAtoms, int[] minmax)
javajs.util.V3[]
rotateAxes(int iop, javajs.util.V3[] axes, javajs.util.P3 ptTemp, javajs.util.M3 mTemp)
void
setFinalOperations(String name, javajs.util.P3[] atoms, int iAtomFirst, int noSymmetryCount, boolean doNormalize, String filterSymop)
void
setLattice(int latt)
set symmetry lattice type using Hall rotationsvoid
setLatticeType(String type)
void
setOffset(int nnn)
void
setOffsetPt(javajs.util.T3 pt)
SymmetryInterface
setPointGroup(SymmetryInterface siLast, javajs.util.T3 center, javajs.util.T3[] atomset, javajs.util.BS bsAtoms, boolean haveVibration, float distanceTolerance, float linearTolerance, boolean localEnvOnly)
void
setSpaceGroup(boolean doNormalize)
void
setSpaceGroupFrom(SymmetryInterface symmetry)
void
setSpaceGroupName(String name)
SymmetryInterface
setSymmetryInfo(int modelIndex, Map<String,Object> modelAuxiliaryInfo, float[] unitCellParams)
Set space group and unit cell from the auxiliary info generated by the model adapter.void
setTimeReversal(int op, int val)
void
setUnitCell(float[] unitCellParams, boolean setRelative)
void
setUnitCell(Symmetry uc)
void
toCartesian(javajs.util.T3 fpt, boolean ignoreOffset)
void
toFractional(javajs.util.T3 pt, boolean ignoreOffset)
void
toFractionalM(javajs.util.M4 m)
boolean
toFromPrimitive(boolean toPrimitive, char type, javajs.util.T3[] oabc, javajs.util.M3 primitiveToCrystal)
javajs.util.P3
toSupercell(javajs.util.P3 fpt)
void
toUnitCell(javajs.util.T3 pt, javajs.util.T3 offset)
boolean
unitCellEquals(SymmetryInterface uc2)
void
unitize(javajs.util.T3 ptFrac)
-
-
-
Field Detail
-
pointGroup
private PointGroup pointGroup
-
spaceGroup
SpaceGroup spaceGroup
-
symmetryInfo
private SymmetryInfo symmetryInfo
-
unitCell
private UnitCell unitCell
-
isBio
private boolean isBio
-
desc
private SymmetryDesc desc
-
cip
CIPChirality cip
-
-
Method Detail
-
isBio
public boolean isBio()
- Specified by:
isBio
in interfaceSymmetryInterface
-
setPointGroup
public SymmetryInterface setPointGroup(SymmetryInterface siLast, javajs.util.T3 center, javajs.util.T3[] atomset, javajs.util.BS bsAtoms, boolean haveVibration, float distanceTolerance, float linearTolerance, boolean localEnvOnly)
- Specified by:
setPointGroup
in interfaceSymmetryInterface
-
getPointGroupName
public String getPointGroupName()
- Specified by:
getPointGroupName
in interfaceSymmetryInterface
-
getPointGroupInfo
public Object getPointGroupInfo(int modelIndex, String drawID, boolean asInfo, String type, int index, float scale)
- Specified by:
getPointGroupInfo
in interfaceSymmetryInterface
-
setSpaceGroup
public void setSpaceGroup(boolean doNormalize)
- Specified by:
setSpaceGroup
in interfaceSymmetryInterface
-
addSpaceGroupOperation
public int addSpaceGroupOperation(String xyz, int opId)
- Specified by:
addSpaceGroupOperation
in interfaceSymmetryInterface
-
addBioMoleculeOperation
public int addBioMoleculeOperation(javajs.util.M4 mat, boolean isReverse)
- Specified by:
addBioMoleculeOperation
in interfaceSymmetryInterface
-
setLattice
public void setLattice(int latt)
Description copied from interface:SymmetryInterface
set symmetry lattice type using Hall rotations- Specified by:
setLattice
in interfaceSymmetryInterface
- Parameters:
latt
- SHELX index or character lattice character P I R F A B C S T or \0
-
getSpaceGroup
public Object getSpaceGroup()
- Specified by:
getSpaceGroup
in interfaceSymmetryInterface
-
setSpaceGroupFrom
public void setSpaceGroupFrom(SymmetryInterface symmetry)
- Specified by:
setSpaceGroupFrom
in interfaceSymmetryInterface
-
createSpaceGroup
public boolean createSpaceGroup(int desiredSpaceGroupIndex, String name, Object data, int modDim)
- Specified by:
createSpaceGroup
in interfaceSymmetryInterface
- Parameters:
desiredSpaceGroupIndex
-name
-data
- a Lst<SymmetryOperation> or Lst<M4>modDim
- in [3+d] modulation dimension- Returns:
- true if a known space group
-
getSpaceGroupInfoObj
public Object getSpaceGroupInfoObj(String name, SymmetryInterface cellInfo, boolean isFull)
- Specified by:
getSpaceGroupInfoObj
in interfaceSymmetryInterface
-
getLatticeDesignation
public Object getLatticeDesignation()
- Specified by:
getLatticeDesignation
in interfaceSymmetryInterface
-
setFinalOperations
public void setFinalOperations(String name, javajs.util.P3[] atoms, int iAtomFirst, int noSymmetryCount, boolean doNormalize, String filterSymop)
- Specified by:
setFinalOperations
in interfaceSymmetryInterface
-
getSpaceGroupOperation
public javajs.util.M4 getSpaceGroupOperation(int i)
- Specified by:
getSpaceGroupOperation
in interfaceSymmetryInterface
-
getSpaceGroupOperationRaw
public javajs.util.M4 getSpaceGroupOperationRaw(int i)
- Specified by:
getSpaceGroupOperationRaw
in interfaceSymmetryInterface
-
getSpaceGroupXyz
public String getSpaceGroupXyz(int i, boolean doNormalize)
- Specified by:
getSpaceGroupXyz
in interfaceSymmetryInterface
-
newSpaceGroupPoint
public void newSpaceGroupPoint(int i, javajs.util.P3 atom1, javajs.util.P3 atom2, int transX, int transY, int transZ, javajs.util.M4 o)
- Specified by:
newSpaceGroupPoint
in interfaceSymmetryInterface
-
rotateAxes
public javajs.util.V3[] rotateAxes(int iop, javajs.util.V3[] axes, javajs.util.P3 ptTemp, javajs.util.M3 mTemp)
- Specified by:
rotateAxes
in interfaceSymmetryInterface
-
getSpaceGroupOperationCode
public String getSpaceGroupOperationCode(int iOp)
- Specified by:
getSpaceGroupOperationCode
in interfaceSymmetryInterface
-
setTimeReversal
public void setTimeReversal(int op, int val)
- Specified by:
setTimeReversal
in interfaceSymmetryInterface
-
getSpinOp
public float getSpinOp(int op)
- Specified by:
getSpinOp
in interfaceSymmetryInterface
-
addLatticeVectors
public boolean addLatticeVectors(javajs.util.Lst<float[]> lattvecs)
- Specified by:
addLatticeVectors
in interfaceSymmetryInterface
-
getLatticeOp
public int getLatticeOp()
- Specified by:
getLatticeOp
in interfaceSymmetryInterface
-
getOperationRsVs
public javajs.util.Matrix getOperationRsVs(int iop)
- Specified by:
getOperationRsVs
in interfaceSymmetryInterface
-
getSiteMultiplicity
public int getSiteMultiplicity(javajs.util.P3 pt)
- Specified by:
getSiteMultiplicity
in interfaceSymmetryInterface
-
addOp
public String addOp(String code, javajs.util.Matrix rs, javajs.util.Matrix vs, javajs.util.Matrix sigma)
- Specified by:
addOp
in interfaceSymmetryInterface
-
getMatrixFromString
public String getMatrixFromString(String xyz, float[] rotTransMatrix, boolean allowScaling, int modDim)
- Specified by:
getMatrixFromString
in interfaceSymmetryInterface
-
getSpaceGroupName
public String getSpaceGroupName()
- Specified by:
getSpaceGroupName
in interfaceSymmetryInterface
-
setSpaceGroupName
public void setSpaceGroupName(String name)
- Specified by:
setSpaceGroupName
in interfaceSymmetryInterface
-
getSpaceGroupOperationCount
public int getSpaceGroupOperationCount()
- Specified by:
getSpaceGroupOperationCount
in interfaceSymmetryInterface
-
getLatticeType
public String getLatticeType()
- Specified by:
getLatticeType
in interfaceSymmetryInterface
-
setLatticeType
public void setLatticeType(String type)
- Specified by:
setLatticeType
in interfaceSymmetryInterface
-
getIntTableNumber
public String getIntTableNumber()
- Specified by:
getIntTableNumber
in interfaceSymmetryInterface
-
getCoordinatesAreFractional
public boolean getCoordinatesAreFractional()
- Specified by:
getCoordinatesAreFractional
in interfaceSymmetryInterface
-
getCellRange
public int[] getCellRange()
- Specified by:
getCellRange
in interfaceSymmetryInterface
-
getSymmetryInfoStr
public String getSymmetryInfoStr()
- Specified by:
getSymmetryInfoStr
in interfaceSymmetryInterface
-
getSymmetryOperations
public javajs.util.M4[] getSymmetryOperations()
- Specified by:
getSymmetryOperations
in interfaceSymmetryInterface
-
isSimple
public boolean isSimple()
- Specified by:
isSimple
in interfaceSymmetryInterface
-
setSymmetryInfo
public SymmetryInterface setSymmetryInfo(int modelIndex, Map<String,Object> modelAuxiliaryInfo, float[] unitCellParams)
Set space group and unit cell from the auxiliary info generated by the model adapter.- Specified by:
setSymmetryInfo
in interfaceSymmetryInterface
-
haveUnitCell
public boolean haveUnitCell()
- Specified by:
haveUnitCell
in interfaceSymmetryInterface
-
checkUnitCell
public boolean checkUnitCell(SymmetryInterface uc, javajs.util.P3 cell, javajs.util.P3 ptTemp, boolean isAbsolute)
- Specified by:
checkUnitCell
in interfaceSymmetryInterface
-
setUnitCell
public void setUnitCell(float[] unitCellParams, boolean setRelative)
- Specified by:
setUnitCell
in interfaceSymmetryInterface
-
unitCellEquals
public boolean unitCellEquals(SymmetryInterface uc2)
- Specified by:
unitCellEquals
in interfaceSymmetryInterface
-
getUnitCellState
public String getUnitCellState()
- Specified by:
getUnitCellState
in interfaceSymmetryInterface
-
getMoreInfo
public javajs.util.Lst<String> getMoreInfo()
- Specified by:
getMoreInfo
in interfaceSymmetryInterface
-
getUnitsymmetryInfo
public String getUnitsymmetryInfo()
-
initializeOrientation
public void initializeOrientation(javajs.util.M3 mat)
- Specified by:
initializeOrientation
in interfaceSymmetryInterface
-
unitize
public void unitize(javajs.util.T3 ptFrac)
- Specified by:
unitize
in interfaceSymmetryInterface
-
toUnitCell
public void toUnitCell(javajs.util.T3 pt, javajs.util.T3 offset)
- Specified by:
toUnitCell
in interfaceSymmetryInterface
-
toSupercell
public javajs.util.P3 toSupercell(javajs.util.P3 fpt)
- Specified by:
toSupercell
in interfaceSymmetryInterface
-
toFractional
public void toFractional(javajs.util.T3 pt, boolean ignoreOffset)
- Specified by:
toFractional
in interfaceSymmetryInterface
-
toFractionalM
public void toFractionalM(javajs.util.M4 m)
- Specified by:
toFractionalM
in interfaceSymmetryInterface
-
toCartesian
public void toCartesian(javajs.util.T3 fpt, boolean ignoreOffset)
- Specified by:
toCartesian
in interfaceSymmetryInterface
-
getUnitCellParams
public float[] getUnitCellParams()
- Specified by:
getUnitCellParams
in interfaceSymmetryInterface
-
getUnitCellAsArray
public float[] getUnitCellAsArray(boolean vectorsOnly)
- Specified by:
getUnitCellAsArray
in interfaceSymmetryInterface
-
getTensor
public Tensor getTensor(Viewer vwr, float[] parBorU)
- Specified by:
getTensor
in interfaceSymmetryInterface
-
getUnitCellVerticesNoOffset
public javajs.util.P3[] getUnitCellVerticesNoOffset()
- Specified by:
getUnitCellVerticesNoOffset
in interfaceSymmetryInterface
-
getCartesianOffset
public javajs.util.P3 getCartesianOffset()
- Specified by:
getCartesianOffset
in interfaceSymmetryInterface
-
getFractionalOffset
public javajs.util.P3 getFractionalOffset()
- Specified by:
getFractionalOffset
in interfaceSymmetryInterface
-
setOffsetPt
public void setOffsetPt(javajs.util.T3 pt)
- Specified by:
setOffsetPt
in interfaceSymmetryInterface
-
setOffset
public void setOffset(int nnn)
- Specified by:
setOffset
in interfaceSymmetryInterface
-
getUnitCellMultiplier
public javajs.util.T3 getUnitCellMultiplier()
- Specified by:
getUnitCellMultiplier
in interfaceSymmetryInterface
-
getCanonicalCopy
public javajs.util.P3[] getCanonicalCopy(float scale, boolean withOffset)
- Specified by:
getCanonicalCopy
in interfaceSymmetryInterface
-
getUnitCellInfoType
public float getUnitCellInfoType(int infoType)
- Specified by:
getUnitCellInfoType
in interfaceSymmetryInterface
-
getUnitCellInfo
public String getUnitCellInfo()
- Specified by:
getUnitCellInfo
in interfaceSymmetryInterface
-
isSlab
public boolean isSlab()
- Specified by:
isSlab
in interfaceSymmetryInterface
-
isPolymer
public boolean isPolymer()
- Specified by:
isPolymer
in interfaceSymmetryInterface
-
checkDistance
public boolean checkDistance(javajs.util.P3 f1, javajs.util.P3 f2, float distance, float dx, int iRange, int jRange, int kRange, javajs.util.P3 ptOffset)
- Specified by:
checkDistance
in interfaceSymmetryInterface
-
getUnitCellVectors
public javajs.util.P3[] getUnitCellVectors()
- Specified by:
getUnitCellVectors
in interfaceSymmetryInterface
-
getUnitCell
public SymmetryInterface getUnitCell(javajs.util.T3[] oabc, boolean setRelative, String name)
- Specified by:
getUnitCell
in interfaceSymmetryInterface
- Parameters:
oabc
- [ptorigin, va, vb, vc]setRelative
- a flag only set true for IsosurfaceMeshname
-- Returns:
- this SymmetryInterface
-
isSupercell
public boolean isSupercell()
- Specified by:
isSupercell
in interfaceSymmetryInterface
-
notInCentroid
public javajs.util.BS notInCentroid(ModelSet modelSet, javajs.util.BS bsAtoms, int[] minmax)
- Specified by:
notInCentroid
in interfaceSymmetryInterface
-
isNotCentroid
private boolean isNotCentroid(javajs.util.P3 center, int n, int[] minmax, boolean centroidPacked)
-
getDesc
private SymmetryDesc getDesc(ModelSet modelSet)
-
getSymmetryInfoAtom
public Object getSymmetryInfoAtom(ModelSet modelSet, int iatom, String xyz, int op, javajs.util.P3 pt, javajs.util.P3 pt2, String id, int type, float scaleFactor, int nth, int options)
- Specified by:
getSymmetryInfoAtom
in interfaceSymmetryInterface
pt2
- a second point or an offsettype
- T.point, T.lattice, or T.draw, T.matrix4f, T.label, T.list, T.info, T.translation, T.axis, T.plane, T.angle, T.centernth
- TODOoptions
- could be T.offset- Returns:
- a variety of object types
-
getSpaceGroupInfo
public Map<String,Object> getSpaceGroupInfo(ModelSet modelSet, String sgName, int modelIndex, boolean isFull, float[] cellParams)
- Specified by:
getSpaceGroupInfo
in interfaceSymmetryInterface
-
fcoord
public String fcoord(javajs.util.T3 p)
- Specified by:
fcoord
in interfaceSymmetryInterface
-
getV0abc
public javajs.util.T3[] getV0abc(Object def)
- Specified by:
getV0abc
in interfaceSymmetryInterface
-
getQuaternionRotation
public javajs.util.Quat getQuaternionRotation(String abc)
- Specified by:
getQuaternionRotation
in interfaceSymmetryInterface
-
getFractionalOrigin
public javajs.util.T3 getFractionalOrigin()
- Specified by:
getFractionalOrigin
in interfaceSymmetryInterface
-
getState
public boolean getState(javajs.util.SB commands)
- Specified by:
getState
in interfaceSymmetryInterface
-
getIterator
public AtomIndexIterator getIterator(Viewer vwr, Atom atom, Atom[] atoms, javajs.util.BS bsAtoms, float radius)
- Specified by:
getIterator
in interfaceSymmetryInterface
-
toFromPrimitive
public boolean toFromPrimitive(boolean toPrimitive, char type, javajs.util.T3[] oabc, javajs.util.M3 primitiveToCrystal)
- Specified by:
toFromPrimitive
in interfaceSymmetryInterface
-
generateCrystalClass
public javajs.util.Lst<javajs.util.P3> generateCrystalClass(javajs.util.P3 pt0)
- Specified by:
generateCrystalClass
in interfaceSymmetryInterface
-
calculateCIPChiralityForAtoms
public void calculateCIPChiralityForAtoms(Viewer vwr, javajs.util.BS bsAtoms)
- Specified by:
calculateCIPChiralityForAtoms
in interfaceSymmetryInterface
-
calculateCIPChiralityForSmiles
public String[] calculateCIPChiralityForSmiles(Viewer vwr, String smiles) throws Exception
- Specified by:
calculateCIPChiralityForSmiles
in interfaceSymmetryInterface
- Throws:
Exception
-
getCIPChirality
private CIPChirality getCIPChirality(Viewer vwr)
-
getConventionalUnitCell
public javajs.util.T3[] getConventionalUnitCell(String latticeType, javajs.util.M3 primitiveToCrystal)
return a conventional lattice from a primitive- Specified by:
getConventionalUnitCell
in interfaceSymmetryInterface
- Parameters:
latticeType
- "A" "B" "C" "R" etc.- Returns:
- [origin va vb vc]
-
getUnitCellInfoMap
public Map<String,Object> getUnitCellInfoMap()
- Specified by:
getUnitCellInfoMap
in interfaceSymmetryInterface
-
setUnitCell
public void setUnitCell(Symmetry uc)
- Specified by:
setUnitCell
in interfaceSymmetryInterface
-
-