1 package org.jmol.api; 2 3 import java.util.Map; 4 5 import javajs.util.BS; 6 import javajs.util.Lst; 7 import javajs.util.M3; 8 import javajs.util.M4; 9 import javajs.util.Matrix; 10 import javajs.util.P3; 11 import javajs.util.Quat; 12 import javajs.util.SB; 13 import javajs.util.T3; 14 import javajs.util.V3; 15 16 import org.jmol.modelset.Atom; 17 import org.jmol.modelset.ModelSet; 18 import org.jmol.symmetry.Symmetry; 19 import org.jmol.util.Tensor; 20 import org.jmol.viewer.Viewer; 21 22 public interface SymmetryInterface { 23 addBioMoleculeOperation(M4 mat, boolean isReverse)24 public int addBioMoleculeOperation(M4 mat, boolean isReverse); 25 addLatticeVectors(Lst<float[]> lattvecs)26 public boolean addLatticeVectors(Lst<float[]> lattvecs); 27 addOp(String code, Matrix rs, Matrix vs, Matrix sigma)28 public String addOp(String code, Matrix rs, Matrix vs, Matrix sigma); 29 addSpaceGroupOperation(String xyz, int opId)30 public int addSpaceGroupOperation(String xyz, int opId); 31 checkDistance(P3 f1, P3 f2, float distance, float dx, int iRange, int jRange, int kRange, P3 ptOffset)32 public boolean checkDistance(P3 f1, P3 f2, float distance, 33 float dx, int iRange, int jRange, int kRange, P3 ptOffset); 34 checkUnitCell(SymmetryInterface uc, P3 cell, P3 ptTemp, boolean isAbsolute)35 public boolean checkUnitCell(SymmetryInterface uc, P3 cell, P3 ptTemp, boolean isAbsolute); 36 createSpaceGroup(int desiredSpaceGroupIndex, String name, Object data, int modDim)37 public boolean createSpaceGroup(int desiredSpaceGroupIndex, 38 String name, 39 Object data, int modDim); 40 fcoord(T3 p)41 public String fcoord(T3 p); 42 getCanonicalCopy(float scale, boolean withOffset)43 public P3[] getCanonicalCopy(float scale, boolean withOffset); 44 getCartesianOffset()45 public P3 getCartesianOffset(); 46 getCellRange()47 public int[] getCellRange(); 48 getCoordinatesAreFractional()49 public boolean getCoordinatesAreFractional(); 50 getFractionalOffset()51 public P3 getFractionalOffset(); 52 getLatticeDesignation()53 public Object getLatticeDesignation(); 54 getLatticeOp()55 public int getLatticeOp(); 56 getMatrixFromString(String xyz, float[] temp, boolean allowScaling, int modDim)57 public String getMatrixFromString(String xyz, float[] temp, boolean allowScaling, int modDim); 58 getMoreInfo()59 Lst<String> getMoreInfo(); 60 getUnitCellParams()61 public float[] getUnitCellParams(); 62 getOperationRsVs(int op)63 public Matrix getOperationRsVs(int op); 64 getPointGroupInfo(int modelIndex, String drawID, boolean asInfo, String type, int index, float scale)65 public Object getPointGroupInfo(int modelIndex, String drawID, 66 boolean asInfo, String type, 67 int index, float scale); 68 getPointGroupName()69 public String getPointGroupName(); 70 getSiteMultiplicity(P3 a)71 public int getSiteMultiplicity(P3 a); 72 getSpaceGroup()73 public Object getSpaceGroup(); 74 getSpaceGroupInfo(ModelSet modelSet, String spaceGroup, int modelIndex, boolean isFull, float[] cellParams)75 public Map<String, Object> getSpaceGroupInfo(ModelSet modelSet, String spaceGroup, int modelIndex, boolean isFull, float[] cellParams); 76 getSpaceGroupInfoObj(String name, SymmetryInterface cellInfo, boolean isFull)77 Object getSpaceGroupInfoObj(String name, SymmetryInterface cellInfo, 78 boolean isFull); 79 getSpaceGroupName()80 public String getSpaceGroupName(); 81 setSpaceGroupName(String name)82 public void setSpaceGroupName(String name); 83 getSpaceGroupOperation(int i)84 public M4 getSpaceGroupOperation(int i); 85 getSpaceGroupOperationRaw(int i)86 public M4 getSpaceGroupOperationRaw(int i); 87 getSpaceGroupOperationCode(int op)88 public String getSpaceGroupOperationCode(int op); 89 getSpaceGroupOperationCount()90 public int getSpaceGroupOperationCount(); 91 getSpaceGroupXyz(int i, boolean doNormalize)92 public String getSpaceGroupXyz(int i, boolean doNormalize); 93 getSymmetryInfoStr()94 public String getSymmetryInfoStr(); 95 getSymmetryOperations()96 public M4[] getSymmetryOperations(); 97 getSpinOp(int op)98 public float getSpinOp(int op); 99 getUnitCell(T3[] points, boolean setRelative, String name)100 public SymmetryInterface getUnitCell(T3[] points, boolean setRelative, String name); 101 getUnitCellAsArray(boolean vectorsOnly)102 public float[] getUnitCellAsArray(boolean vectorsOnly); 103 getUnitCellInfo()104 public String getUnitCellInfo(); 105 getUnitCellInfoType(int infoType)106 public float getUnitCellInfoType(int infoType); 107 getUnitCellMultiplier()108 public T3 getUnitCellMultiplier(); 109 getUnitCellState()110 public String getUnitCellState(); 111 getUnitCellVectors()112 public P3[] getUnitCellVectors(); 113 getUnitCellVerticesNoOffset()114 public P3[] getUnitCellVerticesNoOffset(); 115 getUnitCellInfoMap()116 public Map<String, Object> getUnitCellInfoMap(); 117 haveUnitCell()118 public boolean haveUnitCell(); 119 isBio()120 public boolean isBio(); 121 isSimple()122 public boolean isSimple(); 123 isPolymer()124 public boolean isPolymer(); 125 isSlab()126 public boolean isSlab(); 127 isSupercell()128 public boolean isSupercell(); 129 newSpaceGroupPoint(int i, P3 atom1, P3 atom2, int transX, int transY, int transZ, M4 o)130 public void newSpaceGroupPoint(int i, P3 atom1, P3 atom2, 131 int transX, int transY, int transZ, M4 o); 132 notInCentroid(ModelSet modelSet, BS bsAtoms, int[] minmax)133 public BS notInCentroid(ModelSet modelSet, BS bsAtoms, 134 int[] minmax); 135 rotateAxes(int iop, V3[] axes, P3 ptTemp, M3 mTemp)136 public V3[] rotateAxes(int iop, V3[] axes, P3 ptTemp, M3 mTemp); 137 setFinalOperations(String name, P3[] atoms, int iAtomFirst, int noSymmetryCount, boolean doNormalize, String filterSymop)138 public void setFinalOperations(String name, P3[] atoms, 139 int iAtomFirst, 140 int noSymmetryCount, boolean doNormalize, String filterSymop); 141 142 /** 143 * set symmetry lattice type using Hall rotations 144 * 145 * @param latt SHELX index or character lattice character P I R F A B C S T or \0 146 * 147 */ setLattice(int latt)148 public void setLattice(int latt); 149 setOffset(int nnn)150 public void setOffset(int nnn); 151 setOffsetPt(T3 pt)152 public void setOffsetPt(T3 pt); 153 setPointGroup( SymmetryInterface pointGroupPrevious, T3 center, T3[] atomset, BS bsAtoms, boolean haveVibration, float distanceTolerance, float linearTolerance, boolean localEnvOnly)154 public SymmetryInterface setPointGroup( 155 SymmetryInterface pointGroupPrevious, 156 T3 center, T3[] atomset, 157 BS bsAtoms, 158 boolean haveVibration, 159 float distanceTolerance, float linearTolerance, boolean localEnvOnly); 160 setSpaceGroup(boolean doNormalize)161 public void setSpaceGroup(boolean doNormalize); 162 setSpaceGroupFrom(SymmetryInterface symmetry)163 public void setSpaceGroupFrom(SymmetryInterface symmetry); 164 setSymmetryInfo(int modelIndex, Map<String, Object> modelAuxiliaryInfo, float[] notionalCell)165 public SymmetryInterface setSymmetryInfo(int modelIndex, Map<String, Object> modelAuxiliaryInfo, float[] notionalCell); 166 167 /** 168 * 169 * @param ms 170 * @param iatom 171 * @param xyz 172 * @param op 173 * @param translation TODO 174 * @param pt 175 * @param pt2 a second point or an offset 176 * @param id 177 * @param type T.point, T.lattice, or T.draw, T.matrix4f, T.label, T.list, T.info, T.translation, T.axis, T.plane, T.angle, T.center 178 * @param scaleFactor 179 * @param nth TODO 180 * @param options could be T.offset 181 * @return a variety of object types 182 */ getSymmetryInfoAtom(ModelSet ms, int iatom, String xyz, int op, P3 translation, P3 pt, P3 pt2, String id, int type, float scaleFactor, int nth, int options)183 public Object getSymmetryInfoAtom(ModelSet ms, int iatom, String xyz, int op, 184 P3 translation, P3 pt, P3 pt2, String id, int type, float scaleFactor, int nth, int options); 185 setTimeReversal(int op, int val)186 public void setTimeReversal(int op, int val); 187 setUnitCell(float[] params, boolean setRelative)188 public void setUnitCell(float[] params, boolean setRelative); 189 initializeOrientation(M3 matUnitCellOrientation)190 public void initializeOrientation(M3 matUnitCellOrientation); 191 toCartesian(T3 pt, boolean asAbsolute)192 public void toCartesian(T3 pt, boolean asAbsolute); 193 toFractional(T3 pt, boolean asAbsolute)194 public void toFractional(T3 pt, boolean asAbsolute); 195 toSupercell(P3 fpt)196 public P3 toSupercell(P3 fpt); 197 toUnitCell(T3 pt, T3 offset)198 public void toUnitCell(T3 pt, T3 offset); 199 unitCellEquals(SymmetryInterface uc2)200 public boolean unitCellEquals(SymmetryInterface uc2); 201 unitize(T3 ptFrac)202 public void unitize(T3 ptFrac); 203 getV0abc(Object def)204 public T3[] getV0abc(Object def); 205 getQuaternionRotation(String abc)206 public Quat getQuaternionRotation(String abc); 207 getTensor(Viewer vwr, float[] anisoBorU)208 public Tensor getTensor(Viewer vwr, float[] anisoBorU); 209 getFractionalOrigin()210 public T3 getFractionalOrigin(); 211 getState(SB commands)212 public boolean getState(SB commands); 213 getIterator(Viewer vwr, Atom atom, Atom[] atoms, BS bstoms, float radius)214 public AtomIndexIterator getIterator(Viewer vwr, Atom atom, Atom[] atoms, BS bstoms, float radius); 215 toFromPrimitive(boolean toPrimitive, char type, T3[] oabc, M3 primitiveToCrystal)216 boolean toFromPrimitive(boolean toPrimitive, char type, T3[] oabc, 217 M3 primitiveToCrystal); 218 getLatticeType()219 public String getLatticeType(); 220 setLatticeType(String type)221 public void setLatticeType(String type); 222 getIntTableNumber()223 public String getIntTableNumber(); 224 generateCrystalClass(P3 pt0)225 Lst<P3> generateCrystalClass(P3 pt0); 226 toFractionalM(M4 m)227 void toFractionalM(M4 m); 228 calculateCIPChiralityForAtoms(Viewer vwr, BS bsAtoms)229 void calculateCIPChiralityForAtoms(Viewer vwr, BS bsAtoms); 230 calculateCIPChiralityForSmiles(Viewer vwr, String smiles)231 String[] calculateCIPChiralityForSmiles(Viewer vwr, String smiles) 232 throws Exception; 233 getConventionalUnitCell(String latticeType, M3 primitiveToCryst)234 public T3[] getConventionalUnitCell(String latticeType, M3 primitiveToCryst); 235 setUnitCell(Symmetry uc)236 public void setUnitCell(Symmetry uc); 237 238 // void unitize01(T3 ptFrac); 239 240 241 } 242