diff --git a/modules/mol/base/src/impl/entity_impl.cc b/modules/mol/base/src/impl/entity_impl.cc index 096db3ceeb0ce3552d82424bc82dfd5bce85914f..e17a5a76dbcd2b23047cd34df54ed6ac3a5dff61 100644 --- a/modules/mol/base/src/impl/entity_impl.cc +++ b/modules/mol/base/src/impl/entity_impl.cc @@ -227,6 +227,7 @@ void EntityImpl::DoCopy(EntityImplPtr dest) { // first copy the chain - residue - atom hierarchy before replicating the // bond network and the torsions + dest->SetName(this->GetName()); this->ReplicateHierarchy(dest); this->DoCopyBondsAndTorsions(dest); } diff --git a/modules/mol/base/src/view_op.cc b/modules/mol/base/src/view_op.cc index c186931a79ab8b2fca6df5a67ab8c494c71957d7..0526dd4cbeec4870e0a50b6b0a45584f0d0a4db7 100644 --- a/modules/mol/base/src/view_op.cc +++ b/modules/mol/base/src/view_op.cc @@ -398,6 +398,7 @@ EntityHandle CreateEntityFromView(const EntityView& view, if (!handle.IsValid()) { handle=CreateEntity(); } + handle.SetName(view.GetName()); Replicator replicator(handle.Impl(), view, include_exlusive_atoms); TorsionAdder adder(replicator, handle.Impl(), view); return handle; diff --git a/modules/mol/base/tests/test_entity.cc b/modules/mol/base/tests/test_entity.cc index bacd2f410c1d4e5fe3b83086d8bd86868d74a794..8deba9b01bad9b3a814daee98736ef1e8d0b465f 100644 --- a/modules/mol/base/tests/test_entity.cc +++ b/modules/mol/base/tests/test_entity.cc @@ -49,6 +49,8 @@ EntityHandle make_test_entity() ChainHandle chain = e.InsertChain("A"); ResidueHandle res1 = e.AppendResidue(chain, "MET"); + eh.SetName("TestEntity"); + e.InsertAtom(res1, "N",geom::Vec3(21.609,35.384,56.705)); e.InsertAtom(res1, "CA",geom::Vec3(20.601,35.494,57.793)); e.InsertAtom(res1, "C",geom::Vec3(19.654,34.300,57.789)); @@ -78,6 +80,9 @@ BOOST_AUTO_TEST_SUITE( mol_base ) BOOST_AUTO_TEST_CASE(entity_creator) { EntityHandle eh = CreateEntity(); + eh.SetName("TestEntity"); + BOOST_CHECK(eh.GetName()=="TestEntity"); + XCSEditor e=eh.RequestXCSEditor(); ChainHandle chain = e.InsertChain("C"); BOOST_CHECK(chain.GetName()=="C"); @@ -297,6 +302,8 @@ BOOST_AUTO_TEST_CASE(copy) { EntityHandle eh=make_test_entity(); EntityHandle cp=eh.Copy(); + BOOST_CHECK_EQUAL(cp.GetName(),eh.GetName()); + ResidueHandle x2=eh.FindResidue("A", mol::ResNum(2)); BOOST_CHECK_EQUAL(cp.GetAtomCount(),eh.GetAtomCount()); BOOST_CHECK_EQUAL(cp.GetResidueCount(),eh.GetResidueCount()); diff --git a/modules/mol/base/tests/test_view_op.cc b/modules/mol/base/tests/test_view_op.cc index 6af7d87f3340fb38941fd927456d3892497cee0d..f589bf2107638956d21663a4db196044c020c610 100644 --- a/modules/mol/base/tests/test_view_op.cc +++ b/modules/mol/base/tests/test_view_op.cc @@ -30,6 +30,7 @@ using namespace ost::mol; EntityHandle mk_test_ent() { EntityHandle ent=CreateEntity(); + ent.SetName("TestEntity"); XCSEditor edi=ent.RequestXCSEditor(); ChainHandle chain_a=edi.InsertChain("A"); ResidueHandle res_a=edi.AppendResidue(chain_a, "A"); @@ -333,5 +334,18 @@ BOOST_AUTO_TEST_CASE(test_intersection_b) bonds)); } +BOOST_AUTO_TEST_CASE(entity_from_view) { + EntityHandle ent=mk_test_ent(); + EntityView v1=ent.Select("aname=B,C,F,G"); + EntityHandle ent_fv=mol::CreateEntityFromView(v1, false); + + BOOST_CHECK_EQUAL(ent.GetName(), ent_fv.GetName()); + BOOST_CHECK_EQUAL(ent_fv.GetBondCount(),2); + BOOST_CHECK_EQUAL(ent_fv.GetAtomCount(), 4); + BOOST_CHECK_EQUAL(ent_fv.GetResidueCount(), 4); + BOOST_CHECK_EQUAL(ent_fv.GetChainCount(), 2); + +} + BOOST_AUTO_TEST_SUITE_END()