20 #ifndef OST_MM_FORCE_FIELD_HH
21 #define OST_MM_FORCE_FIELD_HH
27 #include <boost/shared_ptr.hpp>
28 #include <boost/unordered_map.hpp>
36 namespace ost {
namespace mol{
namespace mm{
60 template <
typename DS>
73 Forcefield(): gen_pairs_(true), fudge_LJ_(1.0),fudge_QQ_(1.0) { }
96 const String& type2)
const;
100 const String& type3)
const;
105 const String& type4)
const;
110 const String& type4)
const;
116 const String& type5)
const;
122 bool pair=
false)
const;
166 const String& ff_main_name,
167 const String& ff_n_ter_name,
168 const String& ff_c_ter_name,
169 const String& ff_two_ter_name);
172 const String& old_atom_name,
173 const String& new_atom_name);
186 hydrogen_constructors_[residue_name] = p;
202 return (atom_renaming_ff_specific_.find(res_name)
203 != atom_renaming_ff_specific_.end());
210 String AtomTypesToKeyword(std::vector<String>&
types,
bool allow_reordering =
true)
const;
218 boost::unordered_map<String, Real> atom_masses_;
219 boost::unordered_map<String, BuildingBlockPtr> building_blocks_;
220 boost::unordered_map<String, BlockModifierPtr> block_modifiers_;
223 boost::unordered_map<String,InteractionPtr> bonds_;
224 boost::unordered_map<String,InteractionPtr> angles_;
225 boost::unordered_map<String,InteractionPtr> lj_14_pairs_;
226 boost::unordered_map<String,InteractionPtr> constraints_;
227 boost::unordered_map<String,InteractionPtr> cmaps_;
228 boost::unordered_map<String,InteractionPtr> implicit_genborn_;
229 boost::unordered_map<String,InteractionPtr> ljs_;
230 boost::unordered_map<String,std::vector<InteractionPtr> > dihedrals_;
231 boost::unordered_map<String,std::vector<InteractionPtr> > improper_dihedrals_;
233 boost::unordered_map<String, AtomRenamingType> atom_renaming_ff_specific_;
234 boost::unordered_map<String, ResidueNamesPtr> res_renaming_ff_specific_;
236 boost::unordered_map<String, HydrogenConstructorPtr> hydrogen_constructors_;
237 boost::unordered_map<String, String> standard_n_termini_;
238 boost::unordered_map<String, String> standard_c_termini_;
void SetStandardNTer(const String &res_name, const String &ter_name)
void AddCMap(InteractionPtr p)
void AddBlockModifier(const String &modifier_name, BlockModifierPtr p)
String GetAtomType(const String &res_name, const String &atom_name) const
std::vector< InteractionPtr > GetImpropers(const String &type1, const String &type2, const String &type3, const String &type4) const
boost::shared_ptr< HydrogenConstructor > HydrogenConstructorPtr
boost::shared_ptr< Interaction > InteractionPtr
void AddLJ(InteractionPtr p)
void SetFudgeLJ(Real f_lj)
void AddLJPair(InteractionPtr p)
void AddAtomRenamingRule(const String &res_name, const String &old_atom_name, const String &new_atom_name)
InteractionPtr GetImplicitGenborn(const String &type1) const
String GetResidueRenamingCTer(const String &name) const
BlockModifierPtr GetBlockModifier(const String &modifier_name) const
boost::shared_ptr< BlockModifier > BlockModifierPtr
String GetAtomRenaming(const String &res_name, const String &atom_name) const
void AssignFFSpecificNames(ost::mol::EntityHandle &handle, bool reverse=false) const
Real GetMass(const String &type) const
static ForcefieldPtr Load(const String &filename)
InteractionPtr GetLJ(const String &type1, const String &type2, bool pair=false) const
void AddImplicitGenborn(InteractionPtr p)
InteractionPtr GetAngle(const String &type1, const String &type2, const String &type3) const
void AddHydrogenConstructor(const String &residue_name, HydrogenConstructorPtr p)
String GetResidueRenamingMain(const String &name) const
void Save(const String &filename)
InteractionPtr GetCMap(const String &type1, const String &type2, const String &type3, const String &type4, const String &type5) const
bool Contains(const String &name)
BuildingBlockPtr GetBuildingBlock(const String &name) const
boost::shared_ptr< ost::mol::mm::Forcefield > ForcefieldPtr
BlockModifierPtr GetNTerModifier(const String &res_name, const String &ter_name="") const
bool HasAtomRenamingRules(const String &res_name) const
HydrogenConstructorPtr GetHydrogenConstructor(const String &name) const
void AddBond(InteractionPtr p)
void AddImproper(InteractionPtr p)
ResidueNames(String a, String b, String c, String d)
void AddMass(const String &type, Real mass)
void SetStandardCTer(const String &res_name, const String &ter_name)
void AddConstraint(InteractionPtr p)
String GetResidueRenamingTwoTer(const String &name) const
InteractionPtr GetConstraint(const String &type1, const String &type2)
std::vector< std::pair< String, String > > AtomRenamingType
void AddDihedral(InteractionPtr p)
std::vector< InteractionPtr > GetDihedrals(const String &type1, const String &type2, const String &type3, const String &type4) const
void SetFudgeQQ(Real f_qq)
String GetResidueRenamingNTer(const String &name) const
std::vector< String > GetBuildingBlockNames() const
void AddAngle(InteractionPtr p)
void AddBuildingBlock(const String &name, BuildingBlockPtr p)
void SetGenPairs(bool gen_pairs)
boost::shared_ptr< ResidueNames > ResidueNamesPtr
void AddResidueRenamingRule(const String &name, const String &ff_main_name, const String &ff_n_ter_name, const String &ff_c_ter_name, const String &ff_two_ter_name)
InteractionPtr GetBond(const String &type1, const String &type2) const
BlockModifierPtr GetCTerModifier(const String &res_name, const String &ter_name="") const
const AtomRenamingType & GetAtomRenamingRules(const String &res_name) const
boost::shared_ptr< BuildingBlock > BuildingBlockPtr