diff --git a/loop/doc/backbone.rst b/loop/doc/backbone.rst index 554bdea26e92cd4379e733ff36271540e1786fa5..15288fb3c55e5af3ff5a698fc8fc41a9223778a4 100644 --- a/loop/doc/backbone.rst +++ b/loop/doc/backbone.rst @@ -299,6 +299,12 @@ The BackboneList class Remove all residues from this list. + .. method:: Copy() + + Creates and returns a deep copy of this :class:`BackboneList`. This can be + useful, since Python uses reference assignments. + + :rtype: :class:`BackboneList` .. method:: ReconstructCBetaPositions() diff --git a/loop/pymod/export_backbone.cc b/loop/pymod/export_backbone.cc index 69a9c21bf1f4555278d3d5eead99c23f9e935b01..6d97c8a7eddf9dc0544697e1e00c486e58d323b5 100644 --- a/loop/pymod/export_backbone.cc +++ b/loop/pymod/export_backbone.cc @@ -66,6 +66,11 @@ BackboneListPtr FullInitWrapperRHList(const String& sequence, return p; } +BackboneListPtr WrapCopy(BackboneListPtr p){ + BackboneListPtr return_p(new BackboneList(*p)); + return return_p; +} + void InsertInto_int(BackboneListPtr p, ost::mol::ChainHandle& chain, uint start_resnum) { p->InsertInto(chain, start_resnum); @@ -156,6 +161,7 @@ void export_Backbone() { .def(init<const String&>()) .def("__init__", make_constructor(&FullInitWrapper)) .def("__init__", make_constructor(&FullInitWrapperRHList)) + .def("Copy", &WrapCopy) .def("ToDensity", &BackboneList::ToDensity, (arg("padding")=10.0, arg("sampling")=geom::Vec3(1.0,1.0,1.0), diff --git a/modelling/pymod/_closegaps.py b/modelling/pymod/_closegaps.py index 57219d00621d2d72afb140c1383a3393835e0d66..abfc2afe5c873d2db23b9189715e821f01b2b2e9 100644 --- a/modelling/pymod/_closegaps.py +++ b/modelling/pymod/_closegaps.py @@ -160,7 +160,7 @@ def _CloseLoopFrame(mhandle, gap_orig, actual_candidates, actual_extended_gaps, start_index = actual_extended_gaps[i].before.GetNumber().GetNum()\ - min_before_resnum for j, loop_candidate in enumerate(loop_candidates): - actual_frame_backbone_list = frame_backbone_list + actual_frame_backbone_list = frame_backbone_list.Copy() actual_frame_backbone_list.ReplaceFragment( loop_candidate, start_index, False) final_loop_candidates.Add(actual_frame_backbone_list)