diff --git a/modules/io/src/mol/mmcif_reader.cc b/modules/io/src/mol/mmcif_reader.cc index 52cd7e1ae82f20b47834bfe69862097fd9d0dfd9..d6af7a25800df040c52d0d111dfb44ba993eadd8 100644 --- a/modules/io/src/mol/mmcif_reader.cc +++ b/modules/io/src/mol/mmcif_reader.cc @@ -750,13 +750,18 @@ void MMCifReader::ParseCitation(const std::vector<StringRef>& columns) // just add info cit.SetID(columns[indices_[CITATION_ID]].str()); if (indices_[ABSTRACT_ID_CAS] != -1) { - cit.SetCAS(columns[indices_[ABSTRACT_ID_CAS]].str()); + if (columns[indices_[ABSTRACT_ID_CAS]][0]!='?') { + cit.SetCAS(columns[indices_[ABSTRACT_ID_CAS]].str()); + } } if (indices_[BOOK_ID_ISBN] != -1) { - cit.SetISBN(columns[indices_[BOOK_ID_ISBN]].str()); + if (columns[indices_[BOOK_ID_ISBN]][0]!='?') { + cit.SetISBN(columns[indices_[BOOK_ID_ISBN]].str()); + } } if (indices_[BOOK_TITLE] != -1) { - if (columns[indices_[BOOK_TITLE]] != StringRef(".", 1)) { + if ((columns[indices_[BOOK_TITLE]] != StringRef(".", 1)) && + (columns[indices_[BOOK_TITLE]][0]!='?')) { cit.SetPublishedIn(columns[indices_[BOOK_TITLE]].str()); } } @@ -774,16 +779,24 @@ void MMCifReader::ParseCitation(const std::vector<StringRef>& columns) } } if (indices_[JOURNAL_VOLUME] != -1) { - cit.SetVolume(columns[indices_[JOURNAL_VOLUME]].str()); + if (columns[indices_[JOURNAL_VOLUME]][0]!='?') { + cit.SetVolume(columns[indices_[JOURNAL_VOLUME]].str()); + } } if (indices_[PAGE_FIRST] != -1) { - cit.SetPageFirst(columns[indices_[PAGE_FIRST]].str()); + if (columns[indices_[PAGE_FIRST]][0]!='?') { + cit.SetPageFirst(columns[indices_[PAGE_FIRST]].str()); + } } if (indices_[PAGE_LAST] != -1) { - cit.SetPageLast(columns[indices_[PAGE_LAST]].str()); + if (columns[indices_[PAGE_LAST]][0]!='?') { + cit.SetPageLast(columns[indices_[PAGE_LAST]].str()); + } } if (indices_[PDBX_DATABASE_ID_DOI] != -1) { - cit.SetDOI(columns[indices_[PDBX_DATABASE_ID_DOI]].str()); + if (columns[indices_[PDBX_DATABASE_ID_DOI]][0]!='?') { + cit.SetDOI(columns[indices_[PDBX_DATABASE_ID_DOI]].str()); + } } if (indices_[PDBX_DATABASE_ID_PUBMED] != -1) { if (columns[indices_[PDBX_DATABASE_ID_PUBMED]][0]!='?') { @@ -1072,8 +1085,10 @@ void MMCifReader::ParseStruct(const std::vector<StringRef>& columns) } if (indices_[PDBX_FORMULA_WEIGHT] != -1) { - details.SetMass(this->TryGetReal(columns[indices_[PDBX_FORMULA_WEIGHT]], - "struct.pdbx_formula_weight")); + if (columns[indices_[PDBX_FORMULA_WEIGHT]][0] != '?') { + details.SetMass(this->TryGetReal(columns[indices_[PDBX_FORMULA_WEIGHT]], + "struct.pdbx_formula_weight")); + } } if (indices_[PDBX_FORMULA_WEIGHT_METHOD] != -1) {