Example #1
0
def cmpxyz(ifname1, ifname2):
    conns = read.readconns(ifname1)

    Rs = relalist.genR(conns)
    As = relalist.genA(conns)
    Ds = relalist.genD(conns)
    
    xyz1 = read.readxyz_2(ifname1)
    xyz2 = read.readxyz_2(ifname2)

    Rds1 = [tools.distance(xyz1[x[0]], xyz1[x[1]]) for x in Rs]
    Rds2 = [tools.distance(xyz2[x[0]], xyz2[x[1]]) for x in Rs]
    
    Ads1 = [tools.angle(xyz1[x[0]], xyz1[x[1]], xyz1[x[2]]) for x in As]
    Ads2 = [tools.angle(xyz2[x[0]], xyz2[x[1]], xyz2[x[2]]) for x in As]

    Dds1 = [tools.torsionangle(xyz1[x[0]], xyz1[x[1]], xyz1[x[2]], xyz1[x[3]]) \
            for x in Ds]
    Dds2 = [tools.torsionangle(xyz2[x[0]], xyz2[x[1]], xyz2[x[2]], xyz2[x[3]]) \
            for x in Ds]

    dR = [math.fabs(Rds1[i] - Rds2[i]) for i in range(len(Rds1))]
    dA = [math.fabs(Ads1[i] - Ads2[i]) for i in range(len(Ads1))]
    dD = [math.fabs(Dds1[i] - Dds2[i]) for i in range(len(Dds1))]

    M = maxb(dR)
    print 'max R diff: %f, R(%i, %i)' % (dR[M], Rs[M][0]+1, Rs[M][1]+1)

    M = maxb(dA)
    print 'max angle diff: %f, A(%i, %i, %i)' % \
          (dA[M], As[M][0]+1, As[M][1]+1, As[M][2]+1)

    M = maxb(dD)
    print 'max torsion diff: %f, D(%i, %i, %i, %i)' % \
          (dD[M], Ds[M][0]+1, Ds[M][1]+1, Ds[M][2]+1, Ds[M][3]+1)
Example #2
0
def calctor(coords, loopatoms):
    'return in degrees'
    doubleloop = loopatoms * 2
    return tuple([math.degrees
                  (torsionangle(*tuple([coords[j] for j in doubleloop[i:i+4]])))
                  for i in range(len(loopatoms))])