Skip to content
Snippets Groups Projects
  • Marco Biasini's avatar
    d60398e7
    fix BZDNG-261 · d60398e7
    Marco Biasini authored
    Before falling back to alternative atom names as defined by the
    components.cif dictionary, skim through all primary names. Some
    residues in PDB files reuse alternative atom names as primary
    names for other atoms. This resulted in wrong connectivity in,
    for example, 1hiv.
    d60398e7
    History
    fix BZDNG-261
    Marco Biasini authored
    Before falling back to alternative atom names as defined by the
    components.cif dictionary, skim through all primary names. Some
    residues in PDB files reuse alternative atom names as primary
    names for other atoms. This resulted in wrong connectivity in,
    for example, 1hiv.
compound.cc 1.63 KiB
//------------------------------------------------------------------------------
// This file is part of the OpenStructure project <www.openstructure.org>
//
// Copyright (C) 2008-2011 by the OpenStructure authors
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License as published by the Free
// Software Foundation; either version 3.0 of the License, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more
// details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this library; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
//------------------------------------------------------------------------------
#include "compound.hh"

namespace ost { namespace conop {


int Compound::GetAtomSpecIndex(const String& name) const {
  AtomSpecList::const_iterator i=atom_specs_.begin();
  // BZDNG-261: first search all primary atom names before falling back to
  // alternative names. There are some files where alternative atom names are 
  // used as primary names for other atoms
  for (; i!=atom_specs_.end(); ++i) {
    if ((*i).name==name)
      return std::distance(atom_specs_.begin(), i);
  } 
  for (; i!=atom_specs_.end(); ++i) {
    if ((*i).alt_name==name)
      return std::distance(atom_specs_.begin(), i);
  }
 return -1;
}
}}