def test_creation_rotation(self): symOpPlus = SymmetryOperationFactory.createSymOp("-y,x-y,z") symElePlus = SymmetryElementFactory.createSymElement(symOpPlus) self.assertEquals(symElePlus.getRotationSense(), SymmetryElement.RotationSense.Positive) symOpMinus = SymmetryOperationFactory.createSymOp("-x+y,-x,z") symEleMinus = SymmetryElementFactory.createSymElement(symOpMinus) self.assertEquals(symEleMinus.getRotationSense(), SymmetryElement.RotationSense.Negative)
def test_creation_rotation(self): symOpPlus = SymmetryOperationFactory.createSymOp("-y,x-y,z") symElePlus = SymmetryElementFactory.createSymElement(symOpPlus) self.assertEqual(symElePlus.getRotationSense(), SymmetryElement.RotationSense.Positive) symOpMinus = SymmetryOperationFactory.createSymOp("-x+y,-x,z") symEleMinus = SymmetryElementFactory.createSymElement(symOpMinus) self.assertEqual(symEleMinus.getRotationSense(), SymmetryElement.RotationSense.Negative)
def test_creation_axis(self): symOp = SymmetryOperationFactory.createSymOp("x,y,-z") symEle = SymmetryElementFactory.createSymElement(symOp) self.assertEquals(symEle.getHMSymbol(), "m") self.assertEquals(symEle.getAxis(), V3D(0,0,1)) rotation = SymmetryOperationFactory.createSymOp("x,-y,-z") rotationElement = SymmetryElementFactory.createSymElement(rotation) self.assertEquals(rotationElement.getHMSymbol(), "2") self.assertEquals(rotationElement.getAxis(), V3D(1,0,0))
def test_creation_axis(self): symOp = SymmetryOperationFactory.createSymOp("x,y,-z") symEle = SymmetryElementFactory.createSymElement(symOp) self.assertEquals(symEle.getHMSymbol(), "m") self.assertEquals(symEle.getAxis(), V3D(0, 0, 1)) rotation = SymmetryOperationFactory.createSymOp("x,-y,-z") rotationElement = SymmetryElementFactory.createSymElement(rotation) self.assertEquals(rotationElement.getHMSymbol(), "2") self.assertEquals(rotationElement.getAxis(), V3D(1, 0, 0))
def _generate_UBList(self): CreateSingleValuedWorkspace(OutputWorkspace='__ub') LoadIsawUB('__ub', self.getProperty("UBMatrix").value) ub = mtd['__ub'].sample().getOrientedLattice().getUB().copy() DeleteWorkspace(Workspace='__ub') symOps = self.getProperty("SymmetryOps").value if symOps: try: symOps = SpaceGroupFactory.subscribedSpaceGroupSymbols( int(symOps))[0] except ValueError: pass if SpaceGroupFactory.isSubscribedSymbol(symOps): symOps = SpaceGroupFactory.createSpaceGroup( symOps).getSymmetryOperations() else: symOps = SymmetryOperationFactory.createSymOps(symOps) logger.information('Using symmetries: ' + str([sym.getIdentifier() for sym in symOps])) ub_list = [] for sym in symOps: UBtrans = np.zeros((3, 3)) UBtrans[0] = sym.transformHKL([1, 0, 0]) UBtrans[1] = sym.transformHKL([0, 1, 0]) UBtrans[2] = sym.transformHKL([0, 0, 1]) UBtrans = np.matrix(UBtrans.T) ub_list.append(ub * UBtrans) return ub_list else: return [ub]
def _generate_UBList(self): CreateSingleValuedWorkspace(OutputWorkspace='__ub') LoadIsawUB('__ub',self.getProperty("UBMatrix").value) ub=mtd['__ub'].sample().getOrientedLattice().getUB().copy() DeleteWorkspace(Workspace='__ub') symOps = self.getProperty("SymmetryOps").value if symOps: try: symOps = SpaceGroupFactory.subscribedSpaceGroupSymbols(int(symOps))[0] except ValueError: pass if SpaceGroupFactory.isSubscribedSymbol(symOps): symOps = SpaceGroupFactory.createSpaceGroup(symOps).getSymmetryOperations() else: symOps = SymmetryOperationFactory.createSymOps(symOps) logger.information('Using symmetries: '+str([sym.getIdentifier() for sym in symOps])) ub_list=[] for sym in symOps: UBtrans = np.zeros((3,3)) UBtrans[0] = sym.transformHKL([1,0,0]) UBtrans[1] = sym.transformHKL([0,1,0]) UBtrans[2] = sym.transformHKL([0,0,1]) UBtrans=np.matrix(UBtrans.T) ub_list.append(ub*UBtrans) return ub_list else: return [ub]
def test_apply(self): symOp = SymmetryOperationFactory.createSymOp("x,y,-z") hkl1 = V3D(1, 1, 1) hkl2 = symOp.apply(hkl1) self.assertEquals(hkl2, V3D(1, 1, -1)) self.assertEquals(symOp.transformHKL(hkl2), hkl1)
def validateInputs(self): issues = dict() if self.getProperty("SymmetryOps").value: syms=self.getProperty("SymmetryOps").value try: if not SpaceGroupFactory.isSubscribedNumber(int(syms)): issues["SymmetryOps"] = 'Space group number '+syms+' is not valid' except ValueError: if not SpaceGroupFactory.isSubscribedSymbol(syms): for sym in syms.split(';'): if not SymmetryOperationFactory.exists(sym): issues["SymmetryOps"] = sym+' is not valid symmetry or space group name' return issues
def _symmetrize_by_generators(self, mdws, axisAligned, basis0, basis1, basis2, basis3, normalizeBasisVectors, translation, outputExtents, outputBins, numOp, symOp1, symOp2, symOp3, symOp4, symOp5): unit0, basisVec0 = self._destringify(basis0) unit1, basisVec1 = self._destringify(basis1) unit2, basisVec2 = self._destringify(basis2) unit3, basisVec3 = self._destringify(basis3) symOpList = [symOp1, symOp2, symOp3, symOp4, symOp5] for i in range(numOp): basisVec0_str = None basisVec1_str = None basisVec2_str = None basisVec3_str = None symOp = SymmetryOperationFactory.createSymOp(symOpList[i]) if basisVec0 is not None: coordinatesPrime = symOp.transformCoordinates(basisVec0) basisVec0_str = unit0[0] + ',' + unit0[1] + ',' + str(coordinatesPrime.getX()) \ + ',' + str(coordinatesPrime.getY()) + ',' + str(coordinatesPrime.getZ()) + ',' + '0' if basisVec1 is not None: coordinatesPrime = symOp.transformCoordinates(basisVec1) basisVec1_str = unit1[0] + ',' + unit1[1] + ',' + str(coordinatesPrime.getX()) \ + ',' + str(coordinatesPrime.getY()) + ',' + str(coordinatesPrime.getZ()) + ',' + '0' if basisVec2 is not None: coordinatesPrime = symOp.transformCoordinates(basisVec2) basisVec2_str = unit2[0] + ',' + unit2[1] + ',' + str(coordinatesPrime.getX()) \ + ',' + str(coordinatesPrime.getY()) + ',' + str(coordinatesPrime.getZ()) + ',' + '0' if basisVec3 is not None: coordinatesPrime = symOp.transformCoordinates(basisVec3) basisVec3_str = unit3[0] + ',' + unit3[1] + ',' + str(coordinatesPrime.getX()) \ + ',' + str(coordinatesPrime.getY()) + ',' + str(coordinatesPrime.getZ()) + ',' + '0' self._binned_ws += BinMD(InputWorkspace=mdws, AxisAligned=axisAligned, BasisVector0=basisVec0_str, BasisVector1=basisVec1_str, BasisVector2=basisVec2_str, BasisVector3=basisVec3_str, NormalizeBasisVectors=normalizeBasisVectors, Translation=translation, OutputExtents=outputExtents, OutputBins=outputBins) return
Filename= '/SNS/CORELLI/shared/Calibration/CORELLI_Definition_cal_20160310.xml', OutputWorkspace='ub') LoadIsawUB(InputWorkspace='ub', Filename=UBfile) ub = mtd['ub'].sample().getOrientedLattice().getUB() print "Starting UB :" print ub #DTO Fd-3m (227) general position has 192 symmety operations. symOps = SymmetryOperationFactory.createSymOps(\ "x,y,z; -x,-y,z; -x,y,-z; x,-y,-z;\ z,x,y; z,-x,-y; -z,-x,y; -z,x,-y;\ y,z,x; -y,z,-x; y,-z,-x; -y,-z,x;\ y,x,-z; -y,-x,-z; y,-x,z; -y,x,z;\ x,z,-y; -x,z,y; -x,-z,-y; x,-z,y;\ z,y,-x; z,-y,x; -z,y,x; -z,-y,-x;\ -x,-y,-z; x,y,-z; x,-y,z; -x,y,z;\ -z,-x,-y; -z,x,y; z,x,-y; z,-x,y;\ -y,-z,-x; y,-z,x; -y,z,x; y,z,-x;\ -y,-x,z; y,x,z; -y,x,-z; y,-x,-z;\ -x,-z,y; x,-z,-y; x,z,y; -x,z,-y;\ -z,-y,x; -z,y,-x; z,-y,-x; z,y,x" ) ub_list = [] for sym in symOps: UBtrans = np.zeros((3, 3)) UBtrans[0] = sym.transformHKL([1, 0, 0]) UBtrans[1] = sym.transformHKL([0, 1, 0]) UBtrans[2] = sym.transformHKL([0, 0, 1]) UBtrans = np.matrix(UBtrans.T) new_ub = ub * UBtrans
def test_creation_no_rotation(self): symOpNone = SymmetryOperationFactory.createSymOp("-x,-y,-z") symEleNone = SymmetryElementFactory.createSymElement(symOpNone) self.assertEquals(symEleNone.getRotationSense(), SymmetryElement.RotationSense.NoRotation)
def test_creation(self): self.assertRaises(RuntimeError, SymmetryOperationFactory.createSymOp, "none") SymmetryOperationFactory.createSymOp("x,y,-z")
def test_creation_no_axis(self): symOp = SymmetryOperationFactory.createSymOp("-x,-y,-z") symEle = SymmetryElementFactory.createSymElement(symOp) self.assertEquals(symEle.getHMSymbol(), "-1") self.assertEquals(symEle.getAxis(), V3D(0,0,0))
def test_getInfo(self): symOp = SymmetryOperationFactory.createSymOp("x, y, -z") self.assertEquals(symOp.getOrder(), 2) self.assertEquals(symOp.getIdentifier(), "x,y,-z")
from mantid.geometry import SymmetryOperationFactory import numpy as np # Get UBs LoadEmptyInstrument( Filename= '/SNS/CORELLI/shared/Calibration/CORELLI_Definition_cal_20160310.xml', OutputWorkspace='ub') LoadIsawUB(InputWorkspace='ub', Filename="/SNS/users/rwp/benzil/benzil_Hexagonal.mat") ub = mtd['ub'].sample().getOrientedLattice().getUB() print "Starting UB :" print ub symOps = SymmetryOperationFactory.createSymOps( "x,y,z; -y,x-y,z+1/3; -x+y,-x,z+2/3; y,x,-z; x-y,-y,-z+2/3; -x,-x+y,-z+1/3" ) ub_list = [] for sym in symOps: UBtrans = np.zeros((3, 3)) UBtrans[0] = sym.transformHKL([1, 0, 0]) UBtrans[1] = sym.transformHKL([0, 1, 0]) UBtrans[2] = sym.transformHKL([0, 0, 1]) UBtrans = np.matrix(UBtrans.T) new_ub = ub * UBtrans print "Symmetry transform for " + sym.getIdentifier() print UBtrans print "New UB:" print new_ub ub_list.append(new_ub)
from mantid.simpleapi import * from mantid.geometry import SymmetryOperationFactory import numpy as np # Get UBs LoadEmptyInstrument(Filename='/SNS/CORELLI/shared/Calibration/CORELLI_Definition_cal_20160310.xml', OutputWorkspace='ub') LoadIsawUB(InputWorkspace='ub', Filename="/SNS/users/rwp/benzil/benzil_Hexagonal.mat") ub=mtd['ub'].sample().getOrientedLattice().getUB() print "Starting UB :" print ub symOps = SymmetryOperationFactory.createSymOps("x,y,z; -y,x-y,z+1/3; -x+y,-x,z+2/3; y,x,-z; x-y,-y,-z+2/3; -x,-x+y,-z+1/3") ub_list=[] for sym in symOps: UBtrans = np.zeros((3,3)) UBtrans[0] = sym.transformHKL([1,0,0]) UBtrans[1] = sym.transformHKL([0,1,0]) UBtrans[2] = sym.transformHKL([0,0,1]) UBtrans=np.matrix(UBtrans.T) new_ub = ub*UBtrans print "Symmetry transform for "+sym.getIdentifier() print UBtrans print "New UB:" print new_ub ub_list.append(new_ub) outputdir="/SNS/CORELLI/IPTS-15526/shared/" LoadNexus(Filename='/SNS/CORELLI/shared/Vanadium/2016B/SolidAngle20160720NoCC.nxs', OutputWorkspace='sa') LoadNexus(Filename='/SNS/CORELLI/shared/Vanadium/2016B/Spectrum20160720NoCC.nxs', OutputWorkspace='flux') #MaskBTP(workspace='sa',Pixel='1-16,241-256')
#for op in symOps: # print op.getIdentifier() # three different symmetry operation expressions #symOps='206' #symOps='x,y,z; -y,x-y,z+1/3; -x+y,-x,z+2/3; y,x,-z; x-y,-y,-z+2/3; -x,-x+y,-z+1/3' symOps = 'I a -3' try: symOps = SpaceGroupFactory.subscribedSpaceGroupSymbols(int(symOps))[0] except ValueError: pass if SpaceGroupFactory.isSubscribedSymbol(symOps): symOps = SpaceGroupFactory.createSpaceGroup(symOps).getSymmetryOperations() else: symOps = SymmetryOperationFactory.createSymOps(symOps) #print "Number of operations:", len(symOps) #print "Operations:" #for op in symOps: # print op.getIdentifier() totcoordinate = [] coordinates = [0, 0, 0] for op in symOps: coordinatesPrime = op.transformCoordinates(coordinates) print('{:<20s},{:10s}').format(op.getIdentifier(), coordinatesPrime) if coordinatesPrime not in totcoordinate: totcoordinate.append(coordinatesPrime) unique_coordinate = np.unique(totcoordinate, axis=0)
def test_creation_no_axis(self): symOp = SymmetryOperationFactory.createSymOp("-x,-y,-z") symEle = SymmetryElementFactory.createSymElement(symOp) self.assertEquals(symEle.getHMSymbol(), "-1") self.assertEquals(symEle.getAxis(), V3D(0, 0, 0))
LoadNexus(Filename='/SNS/CORELLI/shared/Vanadium/SolidAngle20161123_cc.nxs', OutputWorkspace='sa') # Get UBs LoadEmptyInstrument( Filename= '/SNS/CORELLI/shared/Calibration/CORELLI_Definition_cal_20160310.xml', OutputWorkspace='ub') LoadIsawUB(InputWorkspace='ub', Filename=outputdir + UBname) ub = mtd['ub'].sample().getOrientedLattice().getUB() print "Starting UB :" print ub #symOps = SymmetryOperationFactory.createSymOps(" x, y, z; -x ,-y, z; -x,y,-z; x,-y,-z;-x,-y,-z; x,y,-z; x,-y,z; -x,y,z") #symOps = SymmetryOperationFactory.createSymOps("x, y, z;x,-y,-z; x,y,-z; x,-y,z") symOps = SymmetryOperationFactory.createSymOps("x, y, z") #;-x,-y,-z") ub_list = [] for sym in symOps: UBtrans = np.zeros((3, 3)) UBtrans[0] = sym.transformHKL([1, 0, 0]) UBtrans[1] = sym.transformHKL([0, 1, 0]) UBtrans[2] = sym.transformHKL([0, 0, 1]) UBtrans = np.matrix(UBtrans.T) new_ub = ub * UBtrans print "Symmetry transform for " + sym.getIdentifier() print UBtrans print "New UB:" print new_ub ub_list.append(new_ub) if mtd.doesExist('normMD'):