Beispiel #1
0
    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
Beispiel #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
Beispiel #3
0
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]
Beispiel #4
0
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)
Beispiel #6
0
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()
Beispiel #7
0
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
Beispiel #8
0
    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 = []