diff --git a/modules/io/src/mol/pdb_reader.cc b/modules/io/src/mol/pdb_reader.cc index 0e3c60c4035629b153b68816452c7f7dcec6d926..6712019c326bba5beceb15318f51170d29d584c3 100644 --- a/modules/io/src/mol/pdb_reader.cc +++ b/modules/io/src/mol/pdb_reader.cc @@ -329,6 +329,12 @@ bool PDBReader::ParseAtomIdent(const StringRef& line, int line_num, if (!this->EnsureLineLength(line, 27)) { return false; } + atom_name=line.substr(12, 4).trim(); + if (PDB::Flags() & PDB::CALPHA_ONLY) { + if (atom_name!=StringRef("CA", 2)) { + return false; + } + } if (PDB::Flags() & PDB::CHARMM_FORMAT) { if (line.size()>73) { size_t width=std::min(line.size()-72, size_t(4)); @@ -349,7 +355,7 @@ bool PDBReader::ParseAtomIdent(const StringRef& line, int line_num, } LOG_WARNING("invalid atom number on line " << line_num); } - atom_name=line.substr(12, 4).trim(); + alt_loc=line[16]; res_name=line.substr(17, (PDB::Flags() & PDB::CHARMM_FORMAT) ? 4 : 3).trim(); std::pair<bool, int> res_num=line.substr(22, 4).ltrim().to_int();; @@ -362,15 +368,6 @@ bool PDBReader::ParseAtomIdent(const StringRef& line, int line_num, char ins_c=line[26]; resnum=to_res_num(res_num.second, ins_c); - if (PDB::Flags() & PDB::CALPHA_ONLY) { - if (record_type[0]=='H' || record_type[0]=='h') { - return false; - } - if (atom_name!=StringRef("CA", 2)) { - return false; - } - return true; - } return true; }