From 66df8ace9bff98d20e38ffaada436c16a8fc1cff Mon Sep 17 00:00:00 2001 From: Gabriel Studer <gabriel.studer@unibas.ch> Date: Tue, 11 Mar 2025 16:21:36 +0100 Subject: [PATCH] OMF: extract rnums from omf obj --- modules/io/pymod/export_omf_io.cc | 5 +++++ modules/io/src/mol/omf.cc | 8 ++++++++ modules/io/src/mol/omf.hh | 2 ++ 3 files changed, 15 insertions(+) diff --git a/modules/io/pymod/export_omf_io.cc b/modules/io/pymod/export_omf_io.cc index 1c52809be..cfb1977a8 100644 --- a/modules/io/pymod/export_omf_io.cc +++ b/modules/io/pymod/export_omf_io.cc @@ -67,6 +67,10 @@ namespace{ return boost::python::make_tuple(VecToList(rnums), pos); } + boost::python::list wrap_get_rnums(OMFPtr omf, const String& cname) { + const std::vector<int>& rnums = omf->GetRNums(cname); + return VecToList<int>(rnums); + } } void export_omf_io() { @@ -97,6 +101,7 @@ void export_omf_io() { .def("GetAvgBFactors", &OMF::GetAvgBFactors,(arg("cname"))) .def("GetOccupancies", &OMF::GetOccupancies, return_value_policy<reference_existing_object>(),(arg("cname"))) .def("GetSequence", &OMF::GetSequence, (arg("cname"))) + .def("GetRNums", &wrap_get_rnums, (arg("cname"))) .def("ToAssembly", &wrap_to_assembly, (arg("bu_info"))) .def("Trace", &wrap_trace, (arg("cname"), arg("aname"))) ; diff --git a/modules/io/src/mol/omf.cc b/modules/io/src/mol/omf.cc index b4fd31c86..a00acc67e 100644 --- a/modules/io/src/mol/omf.cc +++ b/modules/io/src/mol/omf.cc @@ -5677,4 +5677,12 @@ String OMF::GetSequence(const String& cname) const { return sequence; } +const std::vector<int>& OMF::GetRNums(const String& cname) const { + auto it = chain_data_.find(cname); + if(it == chain_data_.end()) { + throw ost::Error("Provided chain name not in OMF structure"); + } + return it->second->rnums; +} + }} //ns diff --git a/modules/io/src/mol/omf.hh b/modules/io/src/mol/omf.hh index ce0850e37..2fd9c0595 100644 --- a/modules/io/src/mol/omf.hh +++ b/modules/io/src/mol/omf.hh @@ -242,6 +242,8 @@ public: String GetSequence(const String& cname) const; + const std::vector<int>& GetRNums(const String& cname) const; + // raw data access - pros only... const std::vector<ResidueDefinition>& GetResidueDefinitions() const { return residue_definitions_; -- GitLab