diff --git a/modules/io/src/mol/mmcif_reader.cc b/modules/io/src/mol/mmcif_reader.cc index 1c971ee2fa6ee08101d9303cd09e7bda21c1a9bc..9d0fac1940bfc0e8cb700fa7c70d75947ce5489f 100644 --- a/modules/io/src/mol/mmcif_reader.cc +++ b/modules/io/src/mol/mmcif_reader.cc @@ -357,6 +357,10 @@ bool MMCifReader::OnBeginLoop(const StarLoopDesc& header) indices_[PARH_ORDINAL] = header.GetIndex("ordinal"); // TOCHECK: shouldn't ordinal be mandatory?? his_revision_ordinal_avail_ = (indices_[PARH_ORDINAL] != -1); + if (!his_revision_ordinal_avail_) { + LOG_WARNING("No 'pdbx_audit_revision_history.ordinal' items " + "found! The revision history will not have status entries!"); + } cat_available = true; } else if (header.GetCategory()=="pdbx_audit_revision_details") { // THIS IS FOR mmCIF versions >= 5 @@ -367,6 +371,10 @@ bool MMCifReader::OnBeginLoop(const StarLoopDesc& header) indices_[PARD_REVISION_ORDINAL] = header.GetIndex("revision_ordinal"); // TOCHECK: shouldn't ordinal be mandatory?? det_revision_ordinal_avail_ = (indices_[PARD_REVISION_ORDINAL] != -1); + if (!det_revision_ordinal_avail_) { + LOG_WARNING("No 'pdbx_audit_revision_details.revision_ordinal' items " + "found! The revision history will not have status entries!"); + } cat_available = true; } else if (header.GetCategory()=="pdbx_database_status") { // THIS IS FOR mmCIF versions >= 5 @@ -1413,7 +1421,7 @@ void MMCifReader::ParsePdbxAuditRevisionHistory( } else if (revision_dates_.empty()) { num = 0; } else { - num = revision_dates_.begin()->first + 1; + num = revision_dates_.rbegin()->first + 1; } // get date date = columns[indices_[PARH_REVISION_DATE]]; @@ -1432,7 +1440,7 @@ void MMCifReader::ParsePdbxAuditRevisionDetails( } else if (revision_types_.empty()) { num = 0; } else { - num = revision_types_.begin()->first + 1; + num = revision_types_.rbegin()->first + 1; } // get type type = columns[indices_[PARD_TYPE]]; @@ -1797,7 +1805,7 @@ void MMCifReader::OnEndData() // add revision history for new style mmCIFs (only if no old data there) if (!database_PDB_rev_added_) { - std::map<int, String>::const_iterator rd_it, rt_it; + std::map<int, String>::const_iterator rd_it; for (rd_it = revision_dates_.begin(); rd_it != revision_dates_.end(); ++rd_it) { // look for status