Example #1
0
    ENGINE.set_groups(groups)
    LOGGER.info("@%s Setting oxygen atoms groups (%i)"%(fname, len(groups),))

# run all frames independantly to optimize and fix oxygen atom positions
WM.run_independant(nCycle=10, numberOfSteps=10000, saveFrequency=1, cycleTimeout=3600)




################################################################################
######################### OPTIMIZE ALL ATOMS POSITION ##########################
for sf in ENGINE.frames[multiframe]['frames_name']:
    fname = os.path.join(multiframe, sf)
    ENGINE.set_used_frame(fname)
    # set groups as oxygen atoms only
    ENGINE.set_groups_as_atoms()
    LOGGER.info("@%s Setting groups as atoms (%i)"%(fname, len(ENGINE.groups)))

# run all frames independantly to optimize and fix oxygen atom positions
WM.run_independant(nCycle=50, numberOfSteps=10000, saveFrequency=1, cycleTimeout=3600)


################################################################################
################## MOVE ALL ATOMS IN ALL FRAMES SYNCHRONOUSLY ##################
for sf in ENGINE.frames[multiframe]['frames_name']:
    fname = os.path.join(multiframe, sf)
    ENGINE.set_used_frame(fname)
    # set groups as all atoms
    ENGINE.set_groups_as_atoms()
    LOGGER.info("@%s Setting groups as atoms (%i)"%(fname, len(ENGINE.groups)))
Example #2
0
def run_engine(PDF=True,
               IMD=True,
               B=True,
               BA=True,
               IA=True,
               molecular=True,
               nsteps=10000,
               ncores=1):
    ENGINE = Engine(path=None)
    ENGINE.set_pdb(pdbPath)
    # create experimental constraints
    if PDF:
        C = PairDistributionConstraint(experimentalData=expPath,
                                       weighting="atomicNumber")
        ENGINE.add_constraints(C)
    # create and define molecular constraints
    if IMD:
        C = InterMolecularDistanceConstraint(defaultDistance=1.5)
        ENGINE.add_constraints(C)
    if B:
        C = BondConstraint()
        ENGINE.add_constraints(C)
        C.create_bonds_by_definition(
            bondsDefinition={
                "THF": [('O', 'C1', 1.29,
                         1.70), ('O', 'C4', 1.29,
                                 1.70), ('C1', 'C2', 1.29,
                                         1.70), ('C2', 'C3', 1.29,
                                                 1.70), ('C3', 'C4', 1.29,
                                                         1.70),
                        ('C1', 'H11', 0.58,
                         1.15), ('C1', 'H12', 0.58,
                                 1.15), ('C2', 'H21', 0.58,
                                         1.15), ('C2', 'H22', 0.58, 1.15),
                        ('C3', 'H31', 0.58,
                         1.15), ('C3', 'H32', 0.58,
                                 1.15), ('C4', 'H41', 0.58,
                                         1.15), ('C4', 'H42', 0.58, 1.15)]
            })
    if BA:
        C = BondsAngleConstraint()
        ENGINE.add_constraints(C)
        C.create_angles_by_definition(
            anglesDefinition={
                "THF": [
                    ('O', 'C1', 'C4', 95, 135),
                    ('C1', 'O', 'C2', 95, 135),
                    ('C4', 'O', 'C3', 95, 135),
                    ('C2', 'C1', 'C3', 90, 120),
                    ('C3', 'C2', 'C4', 90, 120),
                    # H-C-H angle
                    ('C1', 'H11', 'H12', 95, 125),
                    ('C2', 'H21', 'H22', 95, 125),
                    ('C3', 'H31', 'H32', 95, 125),
                    ('C4', 'H41', 'H42', 95, 125),
                    # H-C-O angle
                    ('C1', 'H11', 'O', 100, 120),
                    ('C1', 'H12', 'O', 100, 120),
                    ('C4', 'H41', 'O', 100, 120),
                    ('C4', 'H42', 'O', 100, 120),
                    # H-C-C
                    ('C1', 'H11', 'C2', 80, 123),
                    ('C1', 'H12', 'C2', 80, 123),
                    ('C2', 'H21', 'C1', 80, 123),
                    ('C2', 'H21', 'C3', 80, 123),
                    ('C2', 'H22', 'C1', 80, 123),
                    ('C2', 'H22', 'C3', 80, 123),
                    ('C3', 'H31', 'C2', 80, 123),
                    ('C3', 'H31', 'C4', 80, 123),
                    ('C3', 'H32', 'C2', 80, 123),
                    ('C3', 'H32', 'C4', 80, 123),
                    ('C4', 'H41', 'C3', 80, 123),
                    ('C4', 'H42', 'C3', 80, 123)
                ]
            })
    if IA:
        C = ImproperAngleConstraint()
        ENGINE.add_constraints(C)
        C.create_angles_by_definition(
            anglesDefinition={
                "THF": [('C2', 'O', 'C1', 'C4', -15,
                         15), ('C3', 'O', 'C1', 'C4', -15, 15)]
            })
    # initialize constraints data
    ENGINE.initialize_used_constraints()
    # run engine
    if molecular:
        ENGINE.set_groups_as_molecules()
        print 'molecular, %s atoms, %s steps, %2s cores' % (
            ENGINE.numberOfAtoms, nsteps, ncores),
        tic = time.time()
        ENGINE.run(numberOfSteps=nsteps,
                   saveFrequency=2 * nsteps,
                   restartPdb=None,
                   ncores=ncores)
        elapsed = float(time.time() - tic) / float(nsteps)
        print ' -- > %s seconds per step' % (elapsed, )
    else:
        ENGINE.set_groups_as_atoms()
        print 'atomic   , %s atoms, %s steps, %2s cores' % (
            ENGINE.numberOfAtoms, nsteps, ncores),
        tic = time.time()
        ENGINE.run(numberOfSteps=nsteps,
                   saveFrequency=2 * nsteps,
                   restartPdb=None,
                   ncores=ncores)
        elapsed = float(time.time() - tic) / float(nsteps)
        print ' -- > %s seconds per step' % (elapsed, )
        # return elapsed time
    return elapsed