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 validateInputs(self): issues = dict() inWS = self.getProperty("InputWorkspace").value dimX = inWS.getXDimension() dimY = inWS.getYDimension() dimZ = inWS.getZDimension() if dimX.name != '[H,0,0]' or dimY.name != '[0,K,0]' or dimZ.name != '[0,0,L]': issues[ 'InputWorkspace'] = 'dimensions must be [H,0,0], [0,K,0] and [0,0,L]' for d in range(inWS.getNumDims()): dim = inWS.getDimension(d) if not np.isclose(dim.getMaximum(), -dim.getMinimum(), atol=1e-5): issues[ 'InputWorkspace'] = 'dimensions must be centered on zero' if self.getProperty("Convolution").value and self.getProperty( "Method").value == 'Punch and fill': try: import astropy # noqa except ImportError: issues[ "Convolution"] = 'python-astropy required to do convolution' size = self.getProperty("Size").value if len(size) != 1 and len(size) != 3: issues["Size"] = 'Must provide 1 or 3 sizes' if self.getProperty("SpaceGroup").value: space_group = self.getProperty("SpaceGroup").value try: if not SpaceGroupFactory.isSubscribedNumber(int(space_group)): issues["SpaceGroup"] = 'Space group number is not valid' except ValueError: if not SpaceGroupFactory.isSubscribedSymbol(space_group): issues["SpaceGroup"] = 'Space group name is not valid' sphereMin = self.getProperty("SphereMin").value if len(sphereMin) != 1 and len(sphereMin) != 3: issues["SphereMin"] = 'Must provide 1 or 3 diameters' sphereMax = self.getProperty("SphereMax").value if len(sphereMax) != 1 and len(sphereMax) != 3: issues["SphereMax"] = 'Must provide 1 or 3 diameters' if self.getProperty("WindowFunction").value == 'Tukey': try: ssignal.tukey except AttributeError: issues[ "WindowFunction"] = 'Tukey window requires scipy >= 0.16.0' return issues
def validateInputs(self): issues = dict() inWS = self.getProperty("InputWorkspace").value dimX=inWS.getXDimension() dimY=inWS.getYDimension() dimZ=inWS.getZDimension() if dimX.name != '[H,0,0]' or dimY.name != '[0,K,0]' or dimZ.name != '[0,0,L]': issues['InputWorkspace'] = 'dimensions must be [H,0,0], [0,K,0] and [0,0,L]' for d in range(inWS.getNumDims()): dim = inWS.getDimension(d) if not np.isclose(dim.getMaximum(), -dim.getMinimum(), atol=1e-5): issues['InputWorkspace'] = 'dimensions must be centered on zero' if self.getProperty("Convolution").value and self.getProperty("Method").value == 'Punch and fill': try: import astropy # noqa except ImportError: issues["Convolution"] = 'python-astropy required to do convolution' size = self.getProperty("Size").value if len(size) != 1 and len(size) != 3: issues["Size"] = 'Must provide 1 or 3 sizes' if self.getProperty("SpaceGroup").value: space_group=self.getProperty("SpaceGroup").value try: if not SpaceGroupFactory.isSubscribedNumber(int(space_group)): issues["SpaceGroup"] = 'Space group number is not valid' except ValueError: if not SpaceGroupFactory.isSubscribedSymbol(space_group): issues["SpaceGroup"] = 'Space group name is not valid' sphereMin = self.getProperty("SphereMin").value if len(sphereMin) != 1 and len(sphereMin) != 3: issues["SphereMin"] = 'Must provide 1 or 3 diameters' sphereMax = self.getProperty("SphereMax").value if len(sphereMax) != 1 and len(sphereMax) != 3: issues["SphereMax"] = 'Must provide 1 or 3 diameters' if self.getProperty("WindowFunction").value == 'Tukey': try: ssignal.tukey except AttributeError: issues["WindowFunction"] = 'Tukey window requires scipy >= 0.16.0' return issues
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
#symOps = SymmetryOperationFactory.createSymOps("x,y,-z; -x,-y,-z; z,x,y") #print "Number of operations:", len(symOps) #print "Operations:" #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: