d = math.pow(xlist1[i] - xlist2[j], 2.0) + \ math.pow(ylist1[i] - ylist2[j], 2.0) + \ math.pow(zlist1[i] - zlist2[j], 2.0) d = math.sqrt(d) if (d != dists[i, j]): return None return d ############################################################################### filename = "" 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) d = mindist(xlist, ylist, zlist, atoms) if d == None: exit(1) if d < 2.25: print filename
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
import kabsch_minima import xyznanop filename1 = "" filename2 = "" verbose = False dumpalsoobmol = False if (len(sys.argv)) == 3: filename1 = sys.argv[1] filename2 = sys.argv[2] else: print "usage :", sys.argv[0], " target.xyz filename.xyz" exit(1) 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]
sys.path.append("../modules") import xyznanop xyz1 = "" xyz2 = "" if (len(sys.argv)) == 3: xyz1 = sys.argv[1] xyz2 = sys.argv[2] else: print "usage: ", sys.argv[0], " file1.xyz file2.xyz" exit(1) x1, y1, z1, atoms1 = xyznanop.read_ncxyz(xyz1, trans=False) x2, y2, z2, atoms2 = xyznanop.read_ncxyz(xyz2, trans=False) if len(atoms1) != len(atoms2): print "Error different number of atoms" exit(1) distances = [] for i in range(len(atoms1)): if atoms1[i] != atoms2[i]: print "Error different atom" exit(1) for j in range(len(atoms1)): if (j != i):
botx, topx, boty, topy, botz, topz = \ nanoparticle.file_to_nanoparticle_list(filename, nanaparticles) if (botx >= topx) or (boty >= topy) or \ (boty >= topy): print "Error Invalid BOX" exit() minbox_x = 100000.0 maxbox_x = -100000.0 minbox_y = 100000.0 maxbox_y = -100000.0 minbox_z = 100000.0 maxbox_z = -100000.0 xlist, ylist, zlist, atoms = xyznanop.read_ncxyz(xyzfile, False) xlist1 = xlist[:len(xlist) / 2] ylist1 = ylist[:len(ylist) / 2] zlist1 = zlist[:len(zlist) / 2] atoms1 = atoms[:len(atoms) / 2] xlist2 = xlist[len(xlist) / 2:] ylist2 = ylist[len(ylist) / 2:] zlist2 = zlist[len(zlist) / 2:] atoms2 = atoms[len(atoms) / 2:] if len(nanaparticles) != 2: print "Only two nanoparticles can be used" exit(1)
fp = open(filename) for l in fp: sl = l.split(",") rootpath = "./" #print sl[0] #print find (sl[0], "./") paths = [ line[2:] for line in subprocess.check_output( "find " + rootpath + " -name " + sl[0], shell=True).splitlines() ] if len(paths) == 0: print "Error in ", sl[0] else: print "Found ", len(paths) for i in range(1, len(paths)): rmsd = compare("./" + paths[0], "./" + paths[i], False, False) if rmsd > 1.0e-5: print paths[0], " vs ", paths[i], " ", rmsd xlist, ylist, zlist, atoms = xyznanop.read_ncxyz(paths[0], False) d, dist = mindist(xlist, ylist, zlist, atoms) print sl[0], " dist ", d, " (", dist, ") " fp.close()
import xyznanop import common import sphere import point import util import line mypath = "./XYZ/" onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))] alldists = [] for file in onlyfiles: if file.endswith('.xyz'): print mypath + file xlist, ylist, zlist, atoms = xyznanop.read_ncxyz(mypath + file) xlist1 = xlist[0:(len(xlist) / 2) - 1] ylist1 = ylist[0:(len(ylist) / 2) - 1] zlist1 = zlist[0:(len(zlist) / 2) - 1] xlist2 = xlist[len(xlist) / 2:len(xlist) - 1] ylist2 = ylist[len(ylist) / 2:len(ylist) - 1] zlist2 = zlist[len(zlist) / 2:len(zlist) - 1] dists = [] for i in range(0, len(xlist1)): dx = (xlist1[i] - xlist2[i])**2 dy = (ylist1[i] - ylist2[i])**2 dz = (zlist1[i] - zlist2[i])**2
parser.add_argument("-f", "--input-film", help="input the film file if needed", \ type=str, required=False, default="", dest="filmfile") parser.add_argument("-v", "--verbose", help="increase output verbosity", \ default=False, action="store_true") if len(sys.argv) == 1: parser.print_help() exit(1) args = parser.parse_args() verbose = args.verbose xyzfname = args.xyzfile xlist, ylist, zlist, atoms = xyznanop.read_ncxyz(xyzfname) xlist = numpy.divide(xlist, CONVERTFCT) ylist = numpy.divide(ylist, CONVERTFCT) zlist = numpy.divide(zlist, CONVERTFCT) alltraps = [] for pair in args.curvefiles.split(";"): id, fname = pair.split(":") print >> sys.stderr, id, fname x, xval, sumx, \ y, yval, sumy, \ z, zval, sumz = read_filecurve (fname)
"Nanoparticle: ", n.get_volume(), " [", \ math.fabs(spheres[0].get_volume() - n.get_volume()), "] " botx = min(scx) boty = min(scy) botz = min(scz) topx = max(scx) topy = max(scy) topz = max(scz) if (botx >= topx) or (boty >= topy) or \ (boty >= topy): print "Error Invalid BOX" exit() xlistin, ylistin, zlistin, atoms = xyznanop.read_ncxyz(xyznc) vdwradius = {'O': 0.60, 'Ti': 1.40} sumofvdw = numpy.zeros((len(atoms), len(atoms))) for i in range(0, len(atoms)): for j in range(0, len(atoms)): sumofvdw[i][j] = vdwradius[atoms[i]] + vdwradius[atoms[j]] #print sumofvdw xlistall = [] ylistall = [] zlistall = [] atomsall = [] lplacedcx = []