from mmtk import * import string ff = AmberForceField() world = InfiniteUniverse(ff) layer = Group('kaehler_a_layer') join = Joiner(layer) join.joinGroups(layer.hookup, layer.hookdown) join.joinGroups(join.getIntermediateResult().hookup, layer.hookdown) join.joinGroups(join.getIntermediateResult().hookup, layer.hookdown) join.joinGroups(join.getIntermediateResult().hookup, layer.hookdown) result = join.getResult() try: result.setPositions(ff) except ConformationError, msg: print 'ConformationError',msg world.group = result minimizer = ConjugateGradientMinimizer(world, log = (0, None, 50, stdout, ("energy",))) #minimizer(convergence = 1.e-3, steps = 25) world.removeObject(result) hpairs = [[result.findAtomByName('kaehler_a_layer.kaehler_a_layer1.H2'),\ result.findAtomByName('kaehler_a_layer.kaehler_a_layer2.H3')],\ [result.findAtomByName('kaehler_a_layer.kaehler_a_layer1.H4'),\ result.findAtomByName('kaehler_a_layer.kaehler_a_layer2.H5')],\ [result.findAtomByName('kaehler_a_layer.kaehler_a_layer2.H4'),\ result.findAtomByName('kaehler_a_layer.kaehler_a_layer3.H5')],\ 'kaehler_a_layer.kaehler_a_layer2.C1'] oxygens = [result.generateNewAtom('O'), result.generateNewAtom('O'),\ result.generateNewAtom('O'), result.generateNewAtom('Si')] result.replaceAtoms(hpairs, oxygens) world.group = result #minimizer = ConjugateGradientMinimizer(world, log = (0, None, 50, stdout, # ("energy",))) #minimizer(convergence = 1.e-3, steps = 25) from ConfigIO import OutputFile fmt = OutputFile('PDB/resultk.pdb', 'pdb.connect') fmt.write(result) fmt.close() if 1: import RasMol ras_session = RasMol.RasMol(result, 1) ras_session.RefreshScreen() ras_session.Interact()