From e155f2684ffa8cf2e801c78eb80abdc253c6fb16 Mon Sep 17 00:00:00 2001 From: Ansgar Philippsen <ansgar.philippsen@gmail.com> Date: Wed, 5 Sep 2012 13:16:58 -0400 Subject: [PATCH] fixed residue sorting in mae importer --- modules/io/src/mol/entity_io_mae_handler.cc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/modules/io/src/mol/entity_io_mae_handler.cc b/modules/io/src/mol/entity_io_mae_handler.cc index 6a5306b05..f52a9b6b8 100644 --- a/modules/io/src/mol/entity_io_mae_handler.cc +++ b/modules/io/src/mol/entity_io_mae_handler.cc @@ -297,7 +297,23 @@ void MAEReader::parse_and_add_atom(mol::EntityHandle ent, if(update_residue) { if (!(curr_residue_=curr_chain_.FindResidue(rnum))) { - curr_residue_=editor.AppendResidue(curr_chain_, rkey, rnum); + if(curr_chain_.GetResidueCount()>0) { + int loc=curr_chain_.GetResidueCount()-1; + for(;loc>=0;--loc) { + if(curr_chain_.GetResidueByIndex(loc).GetNumber()<rnum) break; + } + if(loc<0) { + curr_residue_=editor.InsertResidueBefore(curr_chain_,0,rnum,rkey); + } else { + curr_residue_=editor.InsertResidueAfter(curr_chain_,loc,rnum,rkey); + } + if(!curr_residue_) { + // this should not happen... + curr_residue_=editor.AppendResidue(curr_chain_, rkey, rnum); + } + } else { + curr_residue_=editor.AppendResidue(curr_chain_, rkey, rnum); + } assert(curr_residue_.IsValid()); LOG_TRACE(" new residue " << curr_residue_); ++residue_count_; -- GitLab