diff --git a/modules/conop/pymod/export_processor.cc b/modules/conop/pymod/export_processor.cc index 00c72521b07a6218f60b811ef6c7bb4b5a0dcc30..27317133e9eee11d724045b77d31ba5a1296e607 100644 --- a/modules/conop/pymod/export_processor.cc +++ b/modules/conop/pymod/export_processor.cc @@ -39,6 +39,10 @@ struct WrappedProcessor : public PyProcessor, public wrapper<WrappedProcessor> { ProcessorPtr Copy() const { return call_method<ProcessorPtr>(self_, "Copy"); } + virtual String ToString() const { + return call_method<String>(self_, "ToString"); + } + String ToStringDefault() const { return ""; } ProcessorPtr CopyDefault() const { return ProcessorPtr(); } PyObject* self_; @@ -78,6 +82,7 @@ void export_processor() { bases<Processor> >("Processor") .def("Copy", &WrappedProcessor::CopyDefault) .def("DoProcess", &WrappedProcessor::DoProcessDefault) + .def("ToString", &WrappedProcessor::ToStringDefault) ; def("IsBondFeasible", &IsBondFeasible); } diff --git a/modules/conop/src/heuristic.cc b/modules/conop/src/heuristic.cc index d21c13fd513e816ade98b96787616593c2f7ec56..cecf6dcb2df8996a41b7685877e5c40518bac4b5 100644 --- a/modules/conop/src/heuristic.cc +++ b/modules/conop/src/heuristic.cc @@ -89,4 +89,10 @@ void HeuristicProcessor::DoProcess(DiagnosticsPtr diags, } } +String HeuristicProcessor::ToString() const { + std::stringstream ss; + ss << "HeuristicProcessor(" << this->OptionsToString() << ")"; + return ss.str(); +} + }} diff --git a/modules/conop/src/heuristic.hh b/modules/conop/src/heuristic.hh index 6fb8a7877c50ad6f83e8f02da1b464a8da7fa141..a0a7b60ff626b9e72c10f41b09237d14e00f8a6d 100644 --- a/modules/conop/src/heuristic.hh +++ b/modules/conop/src/heuristic.hh @@ -40,6 +40,8 @@ public: } HeuristicProcessor(bool bf, bool at, bool cn, bool aa, ConopAction zo): Processor(bf, at, cn, aa, zo) {} + + virtual String ToString() const; protected: void ProcessUnkResidue(DiagnosticsPtr diags, mol::ResidueHandle res) const; virtual void DoProcess(DiagnosticsPtr diags, diff --git a/modules/conop/src/processor.cc b/modules/conop/src/processor.cc index 80eec1fb3f01fb6734ed7e6e6fe7fd1b256019c1..a1d6a6cfb2c844ee03159901abbf00953d551792 100644 --- a/modules/conop/src/processor.cc +++ b/modules/conop/src/processor.cc @@ -412,6 +412,23 @@ void Processor::DistanceBasedConnect(mol::AtomHandle atom) const } } +String StringFromConopAction(ConopAction action) { + switch (action) { + case CONOP_FATAL: + return "fatal"; + case CONOP_SILENT: + return "silent"; + case CONOP_REMOVE: + return "rm"; + case CONOP_REMOVE_RESIDUE: + return "rm_residue"; + case CONOP_REMOVE_ATOM: + return "rm_atom"; + case CONOP_WARN: + return "warn"; + } +} + bool Processor::AreResiduesConsecutive(mol::ResidueHandle r1, mol::ResidueHandle r2) { @@ -422,4 +439,15 @@ bool Processor::AreResiduesConsecutive(mol::ResidueHandle r1, } +String Processor::OptionsToString() const { + std::stringstream ss; + ss << "check_bond_feasibility=" << (check_bond_feasibility_ ? "True" : "False") << ", " + << "assign_torsions=" << (assign_torsions_ ? "True" : "False") << ", " + << "connect=" << (connect_ ? "True" : "False") << ", " + << "connect_peptides=" << (connect_aa_ ? "True" : "False") << ", " + << "zero_occ_treatment='" << StringFromConopAction(zero_occ_treatment_) << "'"; + return ss.str(); +} + + }} diff --git a/modules/conop/src/processor.hh b/modules/conop/src/processor.hh index 01435123366e496c41d649bdd209fea6b9a6b51f..6001b5cbfa32b8610ef73753256515276f583f43 100644 --- a/modules/conop/src/processor.hh +++ b/modules/conop/src/processor.hh @@ -109,6 +109,9 @@ public: void SetZeroOccTreatment(ConopAction action) { zero_occ_treatment_ = action; } + virtual String ToString() const = 0; +protected: + String OptionsToString() const; private: bool check_bond_feasibility_; bool assign_torsions_; @@ -119,6 +122,8 @@ private: ConopAction DLLEXPORT_OST_CONOP ConopActionFromString(const String& name); +String DLLEXPORT_OST_CONOP StringFromConopAction(ConopAction action); + /// \brief guess element of atom based on name and hetatm flag String DLLEXPORT_OST_CONOP GuessAtomElement(const String& atom_name, bool hetatm); diff --git a/modules/conop/src/rule_based.cc b/modules/conop/src/rule_based.cc index 7bbf25f2e3f048f27368ad59d971e20bfb47d340..11dac390e7cec4d3a773a6080ff0852040a6944d 100644 --- a/modules/conop/src/rule_based.cc +++ b/modules/conop/src/rule_based.cc @@ -177,6 +177,16 @@ void RuleBasedProcessor::ProcessUnkAtoms(DiagnosticsPtr diags, } } +String RuleBasedProcessor::ToString() const { + std::stringstream ss; + ss << "RuleBasedProcesor(" << this->OptionsToString() + << ", fix_element=" << (fix_element_ ? "True" : "False") + << ", strict_hydrogens=" << (strict_hydrogens_ ? "True" : "False") + << ", unk_res_treatment='" << StringFromConopAction(unk_res_treatment_) + << ", unk_atom_treatment'=" << StringFromConopAction(unk_atom_treatment_) + << "')"; + return ss.str(); +} diff --git a/modules/conop/src/rule_based.hh b/modules/conop/src/rule_based.hh index 6fa83490c5a2b065f071a5cf2eaf98b0e5a711e9..2fde776130686becad978adf8bc34a3b1a38bba1 100644 --- a/modules/conop/src/rule_based.hh +++ b/modules/conop/src/rule_based.hh @@ -77,6 +77,8 @@ public: virtual ProcessorPtr Copy() const { return ProcessorPtr(new RuleBasedProcessor(*this)); } + + virtual String ToString() const; protected: void ProcessUnkResidue(DiagnosticsPtr diags, mol::ResidueHandle res, diff --git a/modules/io/src/mol/io_profile.hh b/modules/io/src/mol/io_profile.hh index f2214c2807ae4ca16898d81cbd0b0335c8c2e66b..abf37a6b22a2c1e389b9d58d1179e858ca9fe14a 100644 --- a/modules/io/src/mol/io_profile.hh +++ b/modules/io/src/mol/io_profile.hh @@ -61,17 +61,13 @@ public: inline std::ostream& operator<<(std::ostream& stream, const IOProfile& p) { -#if 0 - stream << "IOProfile(dialect='" << p.dialect << "', strict_hydrogens=" - << (p.strict_hydrogens ? "True" : "False") << ", quack_mode=" - << (p.quack_mode ? "True" : "False") << ", join_spread_atom_records=" - << (p.join_spread_atom_records ? "True" : "False") << ", no_hetatms=" - << (p.no_hetatms ? "True" : "False") << ", calpha_only=" - << (p.calpha_only ? "True" : "False") << ", fault_tolerant=" - << (p.fault_tolerant ? "True" : "False") << ", bond_feasibility_check=" - << (p.bond_feasibility_check ? "True" : "False") << ")"; -#endif -#warning implement me + stream << "IOProfile(dialect='" << p.dialect + << "', quack_mode=" << (p.quack_mode ? "True" : "False") << ", " + << "join_spread_atom_records=" << (p.join_spread_atom_records ? "True" : "False") << ", " + << "calpha_only=" << (p.calpha_only ? "True" : "False") << ", " + << "fault_tolerant=" << (p.fault_tolerant ? "True" : "False") << ", " + << "no_hetatms=" << (p.no_hetatms ? "True" : "False") << ", " + << "processor=" << (p.processor ? p.processor->ToString() : "None") << ")"; return stream; } diff --git a/modules/mol/alg/src/lddt.cc b/modules/mol/alg/src/lddt.cc index 4a82818dc47e1aa5850bc0b5791a71498dbac9f4..ef291041dfde41ce93c15cab603258540f0d3fe4 100644 --- a/modules/mol/alg/src/lddt.cc +++ b/modules/mol/alg/src/lddt.cc @@ -186,9 +186,6 @@ int main (int argc, char **argv) // creates the required loading profile IOProfile profile; -#warning implement me - //profile.bond_feasibility_check=false; - // parses options String sel; String custom_path; @@ -229,6 +226,7 @@ int main (int argc, char **argv) exit(0); } profile.processor = conop::RuleBasedProcessorPtr(new conop::RuleBasedProcessor(lib)); + profile.processor->SetCheckBondFeasibility(false); po::notify(vm); if (vm.count("version")) { std::cout << "Version: " << version << std::endl;