diff --git a/modules/mol/base/src/impl/entity_impl.cc b/modules/mol/base/src/impl/entity_impl.cc index 4b4cb3a7a1331b60d1295f0069a782b496503b72..1fd465f235f4d05f7d29d727b4b423dc6a69d277 100644 --- a/modules/mol/base/src/impl/entity_impl.cc +++ b/modules/mol/base/src/impl/entity_impl.cc @@ -145,20 +145,7 @@ void EntityImpl::ReplicateHierarchy(EntityImplPtr dest) for (ChainImplList::const_iterator i=chain_list_.begin(), e1=chain_list_.end(); i!=e1; ++i) { ChainImplPtr src_chain=*i; - ChainImplPtr dst_chain=dest->InsertChain(src_chain,false); - // copy generic properties - dst_chain->Assign(*src_chain.get()); - for (ResidueImplList::iterator j=src_chain->GetResidueList().begin(), - e2=src_chain->GetResidueList().end(); j!=e2; ++j) { - ResidueImplPtr src_res=*j; - ResidueImplPtr dst_res=dst_chain->AppendResidue(src_res, false); - for (AtomImplList::iterator k=src_res->GetAtomList().begin(), - e3=src_res->GetAtomList().end(); k!=e3; ++k) { - AtomImplPtr src_atom=*k; - AtomImplPtr dst_atom=dst_res->InsertAtom(src_atom); - dst_atom->SetIndex(src_atom->GetIndex()); - } - } + dest->InsertChain(src_chain,true); } } diff --git a/modules/mol/base/src/impl/residue_impl.cc b/modules/mol/base/src/impl/residue_impl.cc index fd2c7762b3193caafa68d2b86af177243ceafe5d..29fee9883e5a8381eac4c12d3d75a194f007de44 100644 --- a/modules/mol/base/src/impl/residue_impl.cc +++ b/modules/mol/base/src/impl/residue_impl.cc @@ -69,7 +69,8 @@ AtomImplPtr ResidueImpl::InsertAtom(const AtomImplPtr& atom) dst_atom->SetState(atom->GetState()); dst_atom->SetBFactor(atom->GetBFactor()); dst_atom->SetOccupancy(atom->GetOccupancy()); - dst_atom->SetHetAtom(atom->IsHetAtom()); + dst_atom->SetHetAtom(atom->IsHetAtom()); + dst_atom->SetIndex(atom->GetIndex()); if (!atom->HasDefaultProps()) { dst_atom->SetRadius(atom->GetRadius());