Esempio n. 1
0
    dists = distance.cdist(coords1, coords2)

    mindist = numpy.min(dists)

    print "New mindist: ", mindist

    return xlist, ylist, zlist, atoms


###############################################################################

filename = ""
step = 6.1
nstep = 1  # se nstep == 1 unico spostamento

if (len(sys.argv)) == 2:
    filename = sys.argv[1]
else:
    print "usage :", sys.argv[0], " xyzfile"
    exit(1)

xlist, ylist, zlist, atoms = xyznanop.read_ncxyz(filename, False)

for i in range(nstep):
    s = step / float(nstep)

    xlist, ylist, zlist, atoms = \
            move_mindist_vers (xlist, ylist, zlist, atoms, s)

xyznanop.write_ncxyz("out.xyz", xlist, ylist, zlist, atoms)
Esempio n. 2
0
def compare (filename1, filename2, verbose, dumpalsoobmol):

    xlist1, ylist1, zlist1, atoms1 = xyznanop.read_ncxyz (filename1)
    xlist2, ylist2, zlist2, atoms2 = xyznanop.read_ncxyz (filename2)
    
    if len(atoms1) == len(atoms2):
      mol1list = numpy.zeros((len(atoms1), 3))
      mol2list = numpy.zeros((len(atoms2), 3))
    
      for i in range(0, len(atoms1)):
        mol1list[i, 0] = xlist1[i]
        mol1list[i, 1] = ylist1[i]
        mol1list[i, 2] = zlist1[i]
    
      for i in range(0, len(atoms2)):
        mol2list[i, 0] = xlist2[i]
        mol2list[i, 1] = ylist2[i]
        mol2list[i, 2] = zlist2[i]
    
      if (verbose):
        print "RMSD: ", kabsch_minima.rmsd(mol1list, mol2list)
    
      rmatrix, translate2, translate1 = \
              kabsch_minima.return_rotation_matrix(mol2list, mol1list, verbose)
    
      if verbose:
        print "Translate: ", filename1
      for i in range(0, len(atoms1)):
        xlist1[i] -= translate1[0]
        ylist1[i] -= translate1[1]
        zlist1[i] -= translate1[2]
      if verbose:
        print "Done"
    
      if verbose:
        xyznanop.write_ncxyz("out1.xyz", xlist1, ylist1, zlist1, atoms1)
    
      if verbose:
        print "Translate: ", filename2
      for i in range(0, len(atoms1)):
        xlist2[i] -= translate2[0]
        ylist2[i] -= translate2[1]
        zlist2[i] -= translate2[2]
    
      d11 = rmatrix[0, 0]
      d12 = rmatrix[0, 1]
      d13 = rmatrix[0, 2]
    
      d21 = rmatrix[1, 0]
      d22 = rmatrix[1, 1]
      d23 = rmatrix[1, 2]
    
      d31 = rmatrix[2, 0]
      d32 = rmatrix[2, 1]
      d33 = rmatrix[2, 2]
    
      qx = []
      qy = []
      qz = []
      
      if verbose:
        print "Rotate: ", filename2
      for i in range(0,len(atoms2)):
        qx.append(d11*xlist2[i] + d12*ylist2[i] + d13*zlist2[i])
        qy.append(d21*xlist2[i] + d22*ylist2[i] + d23*zlist2[i]) 
        qz.append(d31*xlist2[i] + d32*ylist2[i] + d33*zlist2[i]) 
      if verbose:
        print "Done"
    
      if verbose:
        xyznanop.write_ncxyz("out2.xyz", qx, qy, qz, atoms2)
    
      for i in range(0, len(atoms1)):
        mol1list[i, 0] = xlist1[i]
        mol1list[i, 1] = ylist1[i]
        mol1list[i, 2] = zlist1[i]
    
      for i in range(0, len(atoms2)):
        mol2list[i, 0] = qx[i]
        mol2list[i, 1] = qy[i]
        mol2list[i, 2] = qz[i]
    
      rmsdfinal = kabsch_minima.rmsd(mol1list, mol2list)

      if verbose:
        print filename1, " ", filename2, " ", "RMSD: ", \
                rmsdfinal
   
      if dumpalsoobmol:
        ormatrix = pybel.ob.matrix3x3()
        for i in range(3):
          for j in range(3):
            ormatrix.Set(i, j, rmatrix[i,j]) 
            myrm = pybel.ob.doubleArray(9)
            ormatrix.GetArray(myrm)
        
        print "Translate: ", filename1
        mol1 = pybel.readfile("xyz", filename1).next()
        print "  read file"
        mol1.OBMol.Translate(pybel.ob.vector3(-translate1[0], -translate1[1], -translate1[2]));
        print "  translate"
        output = pybel.Outputfile("xyz", "pout1.xyz", overwrite=True)
        output.write(mol1)
        output.close()
        print "Done"
        
        print "Rotate and Translate: ", filename1
        mol2 = pybel.readfile("xyz", filename2).next()
        print "  read file"
        mol2.OBMol.Translate(pybel.ob.vector3(-translate2[0], -translate2[1], -translate2[2]));
        print "  translate"
        mol2.OBMol.Rotate(myrm)
        print "  rotate"
        output = pybel.Outputfile("xyz", "pout2.xyz", overwrite=True)
        output.write(mol2)
        output.close()
        print "Done"
    
      return rmsdfinal
    else:
      print "Wrong dim"

    return None
Esempio n. 3
0
        print "RMSD: ", kabsch_minima.rmsd(mol1list, mol2list)

    rmatrix, translate2, translate1 = \
            kabsch_minima.return_rotation_matrix(mol2list, mol1list, verbose)

    if verbose:
        print "Translate: ", filename1
    for i in range(0, len(atoms1)):
        xlist1[i] -= translate1[0]
        ylist1[i] -= translate1[1]
        zlist1[i] -= translate1[2]
    if verbose:
        print "Done"

    if verbose:
        xyznanop.write_ncxyz("out1.xyz", xlist1, ylist1, zlist1, atoms1)

    if verbose:
        print "Translate: ", filename2
    for i in range(0, len(atoms1)):
        xlist2[i] -= translate2[0]
        ylist2[i] -= translate2[1]
        zlist2[i] -= translate2[2]

    d11 = rmatrix[0, 0]
    d12 = rmatrix[0, 1]
    d13 = rmatrix[0, 2]

    d21 = rmatrix[1, 0]
    d22 = rmatrix[1, 1]
    d23 = rmatrix[1, 2]