本文整理汇总了Python中forcebalance.molecule.Molecule.rigid_water方法的典型用法代码示例。如果您正苦于以下问题:Python Molecule.rigid_water方法的具体用法?Python Molecule.rigid_water怎么用?Python Molecule.rigid_water使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类forcebalance.molecule.Molecule
的用法示例。
在下文中一共展示了Molecule.rigid_water方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: from forcebalance.molecule import Molecule [as 别名]
# 或者: from forcebalance.molecule.Molecule import rigid_water [as 别名]
def __init__(self,options,tgt_opts,forcefield):
super(BindingEnergy,self).__init__(options,tgt_opts,forcefield)
self.set_option(None, None, 'inter_txt', os.path.join(self.tgtdir,tgt_opts['inter_txt']))
self.global_opts, self.sys_opts, self.inter_opts = parse_interactions(self.inter_txt)
# If the global option doesn't exist in the system / interaction, then it is copied over.
for opt in self.global_opts:
for sys in self.sys_opts:
if opt not in self.sys_opts[sys]:
self.sys_opts[sys][opt] = self.global_opts[opt]
for inter in self.inter_opts:
if opt not in self.inter_opts[inter]:
self.inter_opts[inter][opt] = self.global_opts[opt]
for inter in self.inter_opts:
if 'energy_unit' in self.inter_opts[inter] and self.inter_opts[inter]['energy_unit'].lower() not in ['kilocalorie_per_mole', 'kilocalories_per_mole']:
logger.error('Usage of physical units is has been removed, please provide all binding energies in kcal/mole\n')
raise RuntimeError
self.inter_opts[inter]['reference_physical'] = self.inter_opts[inter]['energy']
if tgt_opts['energy_denom'] == 0.0:
self.set_option(None, None, 'energy_denom', val=np.std(np.array([val['reference_physical'] for val in self.inter_opts.values()])))
else:
self.set_option(None, None, 'energy_denom', val=tgt_opts['energy_denom'])
self.set_option(None, None, 'rmsd_denom', val=tgt_opts['rmsd_denom'])
self.set_option(tgt_opts,'cauchy')
self.set_option(tgt_opts,'attenuate')
## LPW 2018-02-11: This is set to True if the target calculates
## a single-point property over several existing snapshots.
self.loop_over_snapshots = False
logger.info("The energy denominator is: %s\n" % str(self.energy_denom))
logger.info("The RMSD denominator is: %s\n" % str(self.rmsd_denom))
if self.cauchy:
logger.info("Each contribution to the interaction energy objective function will be scaled by 1.0 / ( denom**2 + reference**2 )\n")
if self.attenuate:
logger.error('attenuate and cauchy are mutually exclusive\n')
raise RuntimeError
elif self.attenuate:
logger.info("Repulsive interactions beyond energy_denom will be scaled by 1.0 / ( denom**2 + (reference-denom)**2 )\n")
## Build keyword dictionaries to pass to engine.
engine_args = OrderedDict(list(self.OptionDict.items()) + list(options.items()))
del engine_args['name']
## Create engine objects.
self.engines = OrderedDict()
for sysname,sysopt in self.sys_opts.items():
M = Molecule(os.path.join(self.root, self.tgtdir, sysopt['geometry']))
if 'select' in sysopt:
atomselect = np.array(uncommadash(sysopt['select']))
M = M.atom_select(atomselect)
if self.FF.rigid_water: M.rigid_water()
self.engines[sysname] = self.engine_(target=self, mol=M, name=sysname, tinker_key=os.path.join(sysopt['keyfile']), **engine_args)