Ejemplo n.º 1
0
    def test_1(self):
        import StringIO
        mol1 = read.readxyz(StringIO.StringIO(test_in_1))
        mol2 = read.readxyz(StringIO.StringIO(test_in_2))

        self.assertAlmostEqual(_rmsd.rmsd(mol1, mol2), 1.001, 3)
        self.assertAlmostEqual(_rmsd.rmsd(mol1.coords.take([0], axis=0),
                                          mol2.coords.take([0], axis=0)),
                               0.0)
Ejemplo n.º 2
0
def main():
    if len(sys.argv) != 3:
        import os.path
        sys.stderr.write('Usage: %s xyzfname1 xyzfname2\n'
                         'result unit is degree\n'
                          % os.path.basename(sys.argv[0]))
        sys.exit(1)
    mol1 = read.readxyz(file(sys.argv[1]))
    mol2 = read.readxyz(file(sys.argv[2]))
    print math.degrees(catordiff(mol1, mol2))
Ejemplo n.º 3
0
 def __setstate__(self, dicts):
     self.__dict__.update(dicts)
     self.olddir = os.getcwd()
     self.newdir = tempfile.mkdtemp("itcc")
     os.chdir(self.newdir)
     if self.tmp_mtxyz_fname is not None:
         self.tmp_mtxyz_fname = os.path.join(self.olddir, os.path.basename(self.tmp_mtxyz_fname))
         self.tmp_mtxyz_file = file(self.tmp_mtxyz_fname, "ab+")
         for i in range(len(self._tasks)):  # pylint: disable-msg=W0612
             read.readxyz(self.tmp_mtxyz_file)
         self.tmp_mtxyz_file.truncate()
     else:
         self.tmp_mtxyz_file = None
     self.mutex = threading.Lock()
Ejemplo n.º 4
0
def printbonds():
    if len(sys.argv) != 2:
        sys.stderr.write('Usage: %s <xyzfname>\n' % os.path.basename(sys.argv[0]))
        sys.exit(1)
    mol = read.readxyz(file(sys.argv[1]))
    a = relalist.Relalist(mol)
    print a
Ejemplo n.º 5
0
def mirrormol():
    if len(sys.argv) != 2:
        sys.stderr.write('Usage: %s <xyzfname>\n' % os.path.basename(sys.argv[0]))
        sys.exit(1)
    mol = read.readxyz(file(sys.argv[1]))
    mol.coords = -mol.coords
    write.writexyz(mol)
Ejemplo n.º 6
0
def shake(xyz_ifile, dat_ifile):
    mol = read.readxyz(xyz_ifile)
    dats = read_dat(dat_ifile)
    for i in range(1):
        ofile = file("ello%03i.xyz" % i, "w")
        shake1(mol, dats, ofile)
        ofile.close()
Ejemplo n.º 7
0
def parmfit(datfname, idxfname, param):
    fnames, enes, weights = tools.readdat(datfname)
    idxs, folds = readidx(idxfname)
    params = getparams(idxs, param)
    A = []
    B = []
    for fname, E_qm, weight in zip(fnames, enes, weights):
        mol = read.readxyz(file(fname))
        tors = analyze.gettorsbytype(mol, idxs)
        newmol, E_mm = tinker.minimize_file(fname, param)
        E_tor = getetor(newmol, tors, params)
        E_fit = E_qm - E_mm + E_tor
        weight = math.sqrt(weight)
        B.append(E_fit * weight)
        A.append([x*weight for x in getA(newmol, idxs, folds, tors)])
    A = numpy.array(A)
    B = numpy.array(B)

    result = numpy.linalg.lstsq(A, B)
    newparam = list(result[0][:-1])
    errors = numpy.dot(A, result[0]) - B
    errors = [error/math.sqrt(weight) for error, weight in zip(errors, weights)]
    error = extra_tools.weightedsd(errors, weights)
    printprm(newparam, idxs, folds)
    print error
Ejemplo n.º 8
0
def settype(xyzfile, typefile):
    mol = read.readxyz(xyzfile)
    types = tuple(_gettypes(typefile))
    assert len(mol) == len(types), "%s - %s" % (len(mol), len(types))
    for idx, atype in enumerate(types):
        mol.settype(idx, atype)
    write.writexyz(mol, sys.stdout)
Ejemplo n.º 9
0
 def test_1(self):
     mol = read.readxyz(StringIO(test_in))
     mol = loads(dumps(mol))
     ofile = StringIO()
     write.writexyz(mol, ofile)
     for line1, line2 in zip(ofile.getvalue().splitlines(),
                             test_in.splitlines()):
         self.assertEqual(line1, line2)
Ejemplo n.º 10
0
def dmddummy(xyzfname):
    mol = read.readxyz(file(xyzfname))
    rlist = relalist.Relalist(mol)
    tors = rlist.torsions

    for tor in tors:
        if mol.atoms[tor[0]].no == 1 or mol.atoms[tor[-1]].no == 1:
            print tor[0]+1, tor[-1]+1
Ejemplo n.º 11
0
def main():
    from optparse import OptionParser
    parser = OptionParser(usage="\n\t%prog [options] xyzfname1 xyzfname2\n\t%prog -h")
    parser.set_defaults(chiral=False)
    parser.add_option("-c", "--chiral",
                      action="store_true",
                      dest="chiral",
                      help="also check chiral")
    (options, args) = parser.parse_args()
    if len(args) != 2:
        parser.error("incorrect number of arguments")
        
    mol1 = read.readxyz(file(sys.argv[1]))
    mol2 = read.readxyz(file(sys.argv[2]))
    if cmpxyztop(mol1, mol2, options.chiral):
        sys.exit(0)
    else:
        sys.exit(1)
Ejemplo n.º 12
0
def cache_mol(fname1, mol_cache):
    if fname1 in mol_cache:
        mol1 = mol_cache[fname1]
    else:
        ifile1 = sys.stdin
        if fname1 != '-':
            ifile1 = file(fname1)
        mol1 = read.readxyz(ifile1)
        mol_cache[fname1] = mol1
    return mol1
Ejemplo n.º 13
0
def main():
    import sys
    if len(sys.argv) != 3:
        import os.path
        sys.stderr.write('Usage: %s molname forcefield\n'
                         % os.path.basename(sys.argv[0]))
        sys.exit(1)
    from itcc.molecule import read
    mol = read.readxyz(file(sys.argv[1]))
    print solvent_caflisch(mol, sys.argv[2], 1)
Ejemplo n.º 14
0
def mtxyz2txyz(ifile, ofilenamepattern):
    i = 1
    while 1:
        try:
            ofname = ofilenamepattern % i
            mol = read.readxyz(ifile)
            write.writexyz(mol, file(ofname, 'w'))
        except:
            break
        i += 1
Ejemplo n.º 15
0
def mol2tor(molfname, ofile=sys.stdout):
    if(not hasattr(molfname, 'read')):
      ifile = file(molfname)
    else:
      ifile = molfname
    mol = read.readxyz(ifile)
    tors = Relalist(mol).torsions
    for tor in tors:
        if all([mol.atoms[idx].no != 1 for idx in tor]):
            ofile.write('%s\n' % ' '.join([str(idx+1) for idx in tor]))
Ejemplo n.º 16
0
def main():
    if len(sys.argv) != 2:
        import os.path
        sys.stderr.write('Usage: %s molfname\n' % os.path.basename(sys.argv[0]))
        sys.exit(1)
    mol = read.readxyz(file(sys.argv[1]))
    res = molcenter(mol)
    for i in range(3):
        print res[i],
    print
Ejemplo n.º 17
0
def rg():
    if len(sys.argv) < 2:
        sys.stderr.write('Usage: %s XYZFNAME...\n' % os.path.basename(sys.argv[0]))
        sys.exit(1)
    from itcc.molecule import radius_of_gyration
    for fname in sys.argv[1:]:
        ifile = sys.stdin
        if fname != '-':
            ifile = file(fname)
        mol = read.readxyz(ifile)
        print ifile.name, radius_of_gyration(mol)
Ejemplo n.º 18
0
def cached_fname2tors(fname, idxs, cache):
    if fname in cache:
        return cache[fname]

    ifile1 = sys.stdin
    if fname != '-':
        ifile1 = file(fname)
    mol1 = read.readxyz(ifile1)
    data1 = numpy.array([mol1.calctor(idx[0], idx[1], idx[2], idx[3]) for idx in idxs])
    cache[fname] = data1
    return data1
Ejemplo n.º 19
0
def main():    
    if len(sys.argv) != 3:
        import os.path
        sys.stderr.write('Usage: %s mol1fname mol2fname\n' % os.path.basename(sys.argv[0]))
        sys.exit(1)
    
    mol1_ifile = sys.stdin
    if sys.argv[1] != '-':
        mol1_ifile = file(sys.argv[1])
    mol1 = read.readxyz(mol1_ifile)
    
    mol2_ifile = sys.stdin
    if sys.argv[2] != '-':
        mol2_ifile = file(sys.argv[2])
    mol2 = read.readxyz(mol2_ifile)
    
    res = moldiff(mol1, mol2)
    
    for i, x in enumerate(res):
        print i+1, '%f' % x
Ejemplo n.º 20
0
    def test_2(self):
        import StringIO
        mol1 = read.readxyz(StringIO.StringIO(test_in_1))
        mol2 = read.readxyz(StringIO.StringIO(test_in_2))
        res = _rmsd.rmsd2(mol1, mol2)
        self.assertAlmostEqual(res[0], 1.001, 3)
        for i in range(3):
            self.assertAlmostEqual(res[1][3][i], 0.0)
        self.assertAlmostEqual(res[1][3][3], 1.0)

        mat = numpy.array([x[:3] for x in res[1][:3]])
        self.assertAlmostEqual(abs((numpy.dot(mat, mat.transpose()) - numpy.eye(3))).max(), 0.0)
        self.assertAlmostEqual(numpy.linalg.det(mat), 1.0)

        newcoords2 = numpy.dot(mat, mol2.coords.transpose()).transpose() \
                + numpy.array([res[1][i][3] for i in range(3)])
        diff = newcoords2 - mol1.coords
        self.assertAlmostEqual(((diff**2).sum()/(len(mol1)-1)) ** 0.5, res[0])

        res2 = _rmsd.rmsd2(mol1, mol1)
        self.assertAlmostEqual(res2[0], 0.0)
        self.assertAlmostEqual(abs(res2[1] - numpy.eye(4)).max(), 0.0)
Ejemplo n.º 21
0
def dmddat2mtxyz(dmddatfile, molfile, ofile, select_frames=None):
    aDmddat = dmddat.Dmddat(dmddatfile)
    mol = read.readxyz(molfile)

    if select_frames is None:
        select_frames = range(aDmddat.framenum)

    for frame_idx in select_frames:
        aDmddat.seek_frame(frame_idx)
        frame = aDmddat.next().coords
        for i in range(len(frame)):
            mol.coords[i] = molecule.CoordType(frame[i])
        write.writexyz(mol, ofile, comment = 'frame: %i' % (frame_idx+1))
Ejemplo n.º 22
0
def main():
    if len(sys.argv) != 4:
        import os.path
        sys.stderr.write('Usage: %s <mol1|-> <mol2|-> <corr|->\n'
                         % os.path.basename(sys.argv[0]))
        sys.exit(1)
    mol1_ifile = sys.stdin
    if sys.argv[1] != '-':
        mol1_ifile = file(sys.argv[1])
    mol1 = read.readxyz(mol1_ifile)

    mol2_ifile = sys.stdin
    if sys.argv[2] != '-':
        mol2_ifile = file(sys.argv[2])
    mol2 = read.readxyz(mol2_ifile)

    corr_ifile = sys.stdin
    if sys.argv[3] != '-':
        corr_ifile = file(sys.argv[3])
    corr = read_corr(corr_ifile)

    verify_correspoding(mol1, mol2, corr)
Ejemplo n.º 23
0
def main():
    mol = read.readxyz(file(sys.argv[1]))
    loop  = detectloop.loopdetect(mol)[0]
    loopc = loopclosure.LoopClosure()

    shakedata = loopclosure.getshakedata(mol, loop)
    loopc.shakedata = shakedata
    loopc.forcefield = "oplsaa"
    loopc.log_level = 0

    for r6 in peptide.Peptide(mol).getr6s(loop):
        for mol, ene in loopc.findneighbor(mol, r6):
            print ene
Ejemplo n.º 24
0
    def __call__(self, ifile, ofile, idxs):
        mol = read.readxyz(ifile)

        ns = []

        for i in range(len(mol)):
            if mol.atoms[i].no == 7:
                ns.append(i)

        for i in idxs:
            assert i < len(ns)
            self.add_one_methyl(mol, ns[i])

        write.writexyz(mol, ofile)
Ejemplo n.º 25
0
def sumxyz_torsion(list_, filelist):
    if len(list_) != 4:
        raise ValueError

    result = []

    for x in filelist:
        if x == '-':
            ifile = sys.stdin
        else:
            ifile = file(x)
        mol = read.readxyz(ifile)
        print ifile.name, math.degrees(mol.calctor(list_[0], list_[1],
            list_[2], list_[3]))
Ejemplo n.º 26
0
def constrain(ifname, param = None):
    """constrain(ifname, param = None) -> List of String
    return the content of the constrain key file based on mol specified by ifname.
    restrain all torsions on mol.
    """

    mol = read.readxyz(file(ifname))
    rel = relalist.Relalist(mol)
    lines = ['restrain-torsion %d %d %d %d\n' % x for x in rel.torsions]

    if param is not None:
        lines.append('parameters %s\n' % param)

    return lines
Ejemplo n.º 27
0
    def newton_mol(self, mol, forcefield,
                   converge = 0.01, prefix=None):
        """newton_mol(mol, forcefield, converge = 0.01, prefix=None) -> (Molecule, Float)
        optimized the mol with newton, and return the optimized energy
        """
        forcefield = getparam(forcefield)

        if curdir:
            if prefix is None:
                ifname = 'tinker.xyz'
            else:
                ifname = prefix + '.xyz'
            ofile = file(ifname, 'w')
        else:
            ofile = tempfile.NamedTemporaryFile(suffix='.xyz')
            ifname = ofile.name
        write.writexyz(mol, ofile)
        ofile.flush()

        ofname = ifname + '_2'

        ifile = subprocess.Popen(['newton', ifname, forcefield, 'A', 'A', str(converge)],
                                 stdout=subprocess.PIPE).communicate()[0]

        result = None

        lines = ifile.splitlines()

        if self.log_iter:
            self.do_log_iter(lines)

        for line in lines:
            if line.startswith(' Final Function'):
                result = float(line.split()[-1])
                break


        if result is None:
            sys.stdout.writelines(lines)
            raise RuntimeError, ifname
        try:
            newmol = read.readxyz(file(ofname))
        except:
            print ifname, ofname
            raise
        ofile.close()
        os.remove(ofname)
        if curdir:
            os.remove(ifname)
        return newmol, result
Ejemplo n.º 28
0
def printefit(datfname, idxfname, param):
    '''Only print E_fit'''
    import csv
    fnames, enes, weights = tools.readdat(datfname)
    idxs, folds = parmfit.readidx(idxfname)
    params = parmfit.getparams(idxs, param)
    writer = csv.writer(sys.stdout)
    writer.writerow(['Filename', 'weight', 'E_qm', 'E_mm', 'E_tor', 'E_fit'])
    for fname, E_qm, weight in zip(fnames, enes, weights):
        mol = read.readxyz(file(fname))
        tors = analyze.gettorsbytype(mol, idxs)
        newmol, E_mm = tinker.minimize_file(fname, param)
        E_tor = parmfit.getetor(newmol, tors, params)
        E_fit = E_qm - E_mm + E_tor
        writer.writerow([fname, weight, E_qm, E_mm, E_tor, E_fit])
Ejemplo n.º 29
0
def sub_pyramid_check(fname, atoms):
    mol = read.readxyz(file(fname))
    if atoms is None:
        atoms = range(len(mol))
    res = []
    for atom in atoms:
        neis = neighbours(mol, atom)
        if len(neis) != 4:
            continue
        if is_pyramid(mol.coords[atom],
                      mol.coords[neis[0]],
                      mol.coords[neis[1]],
                      mol.coords[neis[2]],
                      mol.coords[neis[3]]):
            res.append(atom)
    return res
Ejemplo n.º 30
0
def optimize_minimize_mol(cmdname, mol, forcefield,
                          converge = 0.01, prefix=None):
    """optimizemol(mol, forcefield, converge = 0.01) -> (Molecule, Float)
    optimized the mol, and return the optimized energy
    """
    progpath = os.path.join(TINKERDIR, cmdname)
    forcefield = getparam(forcefield)

    if curdir:
        if prefix is None:
            ifname = 'tinker.xyz'
        else:
            ifname = prefix + '.xyz'
        ofile = file(ifname, 'w')
    else:
        ofile = tempfile.NamedTemporaryFile(suffix='.xyz')
        ifname = ofile.name
    write.writexyz(mol, ofile)
    ofile.flush()

    ofname = ifname + '_2'

    lines = subprocess.Popen([progpath, ifname, forcefield, str(converge)],
                             stdout=subprocess.PIPE).communicate()[0].splitlines()

    result = None

    for line in lines:
        if line.find('Function') != -1:
            result = float(line.split()[-1])
            break


    if result is None:
        sys.stdout.writelines(lines)
        raise RuntimeError, ifname
    try:
        newmol = read.readxyz(file(ofname))
    except:
        print ifname, ofname
        raise
    ofile.close()
    os.remove(ofname)
    if curdir:
        os.remove(ifname)

    return newmol, result