def LongLinearChainHetConf(n): #n represents the number of atoms in the chain atomtypes = [i for i in range(0,n)] atomcoor = [[i,0,0] for i in range(0,n)] a = MolecularCoordinates.MolecularGeometry(atomtypes,atomcoor) b = MolecularCoordinates.MolecularGeometry(atomtypes,atomcoor) return MolecularCoordinates.checkConformationalEquivalence(b, a, Atol=0.5)
def MirrorImageConf(): ac = [[-1.5846, -0.5216, 0.1338], [-1.1512, -1.5146, -0.0477 ], [-1.7781, -0.4440, 1.2120 ], [-2.5555, -0.4907, -0.3770 ], [-0.6751, 0.5855, -0.3509 ], [-1.1705, 1.5633, -0.1896 ], [-0.5293, 0.5028, -1.4463 ], [ 0.6751, 0.5854, 0.3509 ], [ 1.1705, 1.5633, 0.1895 ], [ 0.5294, 0.5028, 1.4463 ], [ 1.5846, -0.5216, -0.1338 ], [ 2.5554, -0.4908, 0.3772 ], [ 1.1510, -1.5146, 0.0475 ], [ 1.7783, -0.4438, -1.2120]] aa = [6, 1, 1, 1, 6, 1, 1, 6, 1, 1, 6, 1, 1, 1] bc = [[ -1.5845, -0.5216, -0.1338], [-1.7784, -0.4438, -1.2120 ], [-1.1509, -1.5146, 0.0474 ], [-2.5553, -0.4910, 0.3773 ], [-0.6751, 0.5855, 0.3508 ], [-0.5293, 0.5028, 1.4463 ], [-1.1705, 1.5634, 0.1895 ], [ 0.6751, 0.5855, -0.3508 ], [ 1.1705, 1.5633, -0.1893 ], [ 0.5294, 0.5030, -1.4463 ], [ 1.5845, -0.5216, 0.1338 ], [ 1.1510, -1.5146, -0.0478 ], [ 2.5555, -0.4908, -0.3770 ], [ 1.7780, -0.4441, 1.2121 ]] ba = [6, 1, 1, 1, 6, 1, 1, 6, 1, 1, 6, 1, 1, 1] a = MolecularCoordinates.MolecularGeometry(aa,ac) b = MolecularCoordinates.MolecularGeometry(ba,bc) return MolecularCoordinates.checkConformationalEquivalence(b, a, Atol=0.001)
def LongLinearChainHomConf(n): #n represents the number of atoms in the chain #all the atom-to-atom distances should be unique by the "binary" construction of the coordinates atomtypes = [1 for i in range(0,n)] atomcoor = [[2**i,0,0] for i in range(0,n)] a = MolecularCoordinates.MolecularGeometry(atomtypes,atomcoor) b = MolecularCoordinates.MolecularGeometry(atomtypes,atomcoor) return MolecularCoordinates.checkConformationalEquivalence(b, a, Atol=0.5)
def testCalcDistDev(self): """ A test of distance deviations, given a mapping Uses mirror image conformations of gauche n-butane (each independently optimized using PM3 in Gaussian03 using default convergence criteria) """ ac = [[-1.5846, -0.5216, 0.1338], [-1.1512, -1.5146, -0.0477 ], [-1.7781, -0.4440, 1.2120 ], [-2.5555, -0.4907, -0.3770 ], [-0.6751, 0.5855, -0.3509 ], [-1.1705, 1.5633, -0.1896 ], [-0.5293, 0.5028, -1.4463 ], [ 0.6751, 0.5854, 0.3509 ], [ 1.1705, 1.5633, 0.1895 ], [ 0.5294, 0.5028, 1.4463 ], [ 1.5846, -0.5216, -0.1338 ], [ 2.5554, -0.4908, 0.3772 ], [ 1.1510, -1.5146, 0.0475 ], [ 1.7783, -0.4438, -1.2120]] aa = [6, 1, 1, 1, 6, 1, 1, 6, 1, 1, 6, 1, 1, 1] bc = [[ -1.5845, -0.5216, -0.1338], [-1.7784, -0.4438, -1.2120 ], [-1.1509, -1.5146, 0.0474 ], [-2.5553, -0.4910, 0.3773 ], [-0.6751, 0.5855, 0.3508 ], [-0.5293, 0.5028, 1.4463 ], [-1.1705, 1.5634, 0.1895 ], [ 0.6751, 0.5855, -0.3508 ], [ 1.1705, 1.5633, -0.1893 ], [ 0.5294, 0.5030, -1.4463 ], [ 1.5845, -0.5216, 0.1338 ], [ 1.1510, -1.5146, -0.0478 ], [ 2.5555, -0.4908, -0.3770 ], [ 1.7780, -0.4441, 1.2121 ]] ba = [6, 1, 1, 1, 6, 1, 1, 6, 1, 1, 6, 1, 1, 1] a = MolecularCoordinates.MolecularGeometry(aa,ac) b = MolecularCoordinates.MolecularGeometry(ba,bc) #atomMap = {1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8, 9:9, 10:10, 11:11, 12:12, 13:13, 14:14} #a naive mapping atomMap = {1: 1, 2: 3, 3: 2, 4: 4, 5: 5, 6: 7, 7: 6, 8: 8, 9: 9, 10: 10, 11: 11, 12: 13, 13: 12, 14: 14} #a "correct" mapping (there is also one other "correct" mapping) (distDevAbs,distDevRel) = MolecularCoordinates.calcDistanceDeviationsGivenMapping(a, b, atomMap) distDevAbsMax = MolecularCoordinates.dictionaryMaxAbs(distDevAbs) distDevRelMax = MolecularCoordinates.dictionaryMaxAbs(distDevRel) self.assertAlmostEqual(distDevAbsMax, 0.000528777418128, 5) self.assertAlmostEqual(distDevRelMax, 0.000145546853437, 5)
def LongLinearChainHetConfDist(n): #n represents the number of atoms in the chain atomtypes = [i for i in range(0,n)] atomcoor = [[i,0,0] for i in range(0,n)] a = MolecularCoordinates.MolecularGeometry(atomtypes,atomcoor) return a.getDistanceMappings()
def AtomTypeSwapConf(): a = MolecularCoordinates.MolecularGeometry([8,1,1],[[0,0,0],[1,0,0],[0,1,0]]) b = MolecularCoordinates.MolecularGeometry([1,8,1],[[0,0,0],[1,0,0],[0,1,0]]) return MolecularCoordinates.checkConformationalEquivalence(b, a, Atol=0.01)
def SimpleHomConf(): a = MolecularCoordinates.MolecularGeometry([1,1,1,1,1,1,1,1],[[0,0,0],[1,0,0],[0,1,0],[0,0,1],[0,1,1],[1,0,1],[1,1,0],[1,1,1]]) b = MolecularCoordinates.MolecularGeometry([1,1,1,1,1,1,1,1],[[0,0,0],[1,0,0],[0,1,0],[0,0,1],[0,1,1],[1,0,1],[1,1,0],[1,1,1]]) return MolecularCoordinates.checkConformationalEquivalence(b, a, Atol=0.01)