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.H4'),\ result.findAtomByName('kaehler_a_layer.kaehler_a_layer2.H5')],\ [result.findAtomByName('kaehler_a_layer.kaehler_a_layer1.H6'),\ result.findAtomByName('kaehler_a_layer.kaehler_a_layer2.H1')],\ [result.findAtomByName('kaehler_a_layer.kaehler_a_layer2.H2'),\ result.findAtomByName('kaehler_a_layer.kaehler_a_layer3.H3')],\ [result.findAtomByName('kaehler_a_layer.kaehler_a_layer2.H4'),\ result.findAtomByName('kaehler_a_layer.kaehler_a_layer3.H5')],\ 'kaehler_a_layer.kaehler_a_layer2.H3','kaehler_a_layer.kaehler_a_layer2.H6',\ 'kaehler_a_layer.kaehler_a_layer1.C2','kaehler_a_layer.kaehler_a_layer3.C1'] print hpairs oxygens = [result.generateNewAtom('O'), result.generateNewAtom('O'),\ result.generateNewAtom('O'), result.generateNewAtom('O'),\ result.generateNewAtom('F'), result.generateNewAtom('F'),\ result.generateNewAtom('Si'), result.generateNewAtom('Si')] result.replaceAtoms(hpairs, oxygens) result.calcDanglingBonds(ff) result.positionDanglingBonds(ff) result.labelDanglingBonds() world.group = result #save(result,'resultk.mmtk') from ConfigIO import OutputFile fmt = OutputFile('PDB/resultk.pdb') fmt.write(result) fmt.close() if 1: import RasMol ras_session = RasMol.RasMol(result, 1) ras_session.RefreshScreen() ras_session.Interact()