コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
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))
コード例 #4
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))
コード例 #5
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]
コード例 #6
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]
コード例 #7
0
    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)
コード例 #8
0
    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)
コード例 #9
0
    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
コード例 #10
0
    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
コード例 #11
0
	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
コード例 #12
0
    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
コード例 #13
0
    def test_creation_no_rotation(self):
        symOpNone = SymmetryOperationFactory.createSymOp("-x,-y,-z")
        symEleNone = SymmetryElementFactory.createSymElement(symOpNone)

        self.assertEquals(symEleNone.getRotationSense(), SymmetryElement.RotationSense.NoRotation)
コード例 #14
0
    def test_creation(self):
        self.assertRaises(RuntimeError, SymmetryOperationFactory.createSymOp, "none")

        SymmetryOperationFactory.createSymOp("x,y,-z")
コード例 #15
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))
コード例 #16
0
    def test_creation_no_rotation(self):
        symOpNone = SymmetryOperationFactory.createSymOp("-x,-y,-z")
        symEleNone = SymmetryElementFactory.createSymElement(symOpNone)

        self.assertEquals(symEleNone.getRotationSense(),
                          SymmetryElement.RotationSense.NoRotation)
コード例 #17
0
 def test_getInfo(self):
     symOp = SymmetryOperationFactory.createSymOp("x, y, -z")
     self.assertEquals(symOp.getOrder(), 2)
     self.assertEquals(symOp.getIdentifier(), "x,y,-z")
コード例 #18
0
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)
コード例 #19
0
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')
コード例 #20
0
ファイル: symmetryop.py プロジェクト: yefengjh/RMC
#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)
コード例 #21
0
 def test_getInfo(self):
     symOp = SymmetryOperationFactory.createSymOp("x, y, -z")
     self.assertEquals(symOp.getOrder(), 2)
     self.assertEquals(symOp.getIdentifier(), "x,y,-z")
コード例 #22
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))
コード例 #23
0
    def test_creation(self):
        self.assertRaises(RuntimeError, SymmetryOperationFactory.createSymOp,
                          "none")

        SymmetryOperationFactory.createSymOp("x,y,-z")
コード例 #24
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'):