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