diff --git a/modules/io/src/mol/mmcif_reader.cc b/modules/io/src/mol/mmcif_reader.cc index 5ed09e1edbec1cb892781eeffc5cd54feccb5d80..a232e371128ab5b533197e3db051b73853eb3019 100644 --- a/modules/io/src/mol/mmcif_reader.cc +++ b/modules/io/src/mol/mmcif_reader.cc @@ -1312,10 +1312,18 @@ void MMCifReader::ParseStructConf(const std::vector<StringRef>& columns) if (restrict_chains_.size() == 0 || restrict_chains_.find(chain_name.str()) != String::npos) { // fetch start and end - s_res_num = this->TryGetInt(columns[indices_[SC_BEG_LABEL_SEQ_ID]], - "struct_conf.beg_label_seq_id"); - e_res_num = this->TryGetInt(columns[indices_[SC_END_LABEL_SEQ_ID]], - "struct_conf.end_label_seq_id"); + std::pair<bool,int> s_beg = this->TryGetInt(columns[indices_[SC_BEG_LABEL_SEQ_ID]], // s_res_num + "struct_conf.beg_label_seq_id", + profile_.fault_tolerant); + std::pair<bool,int> s_end = this->TryGetInt(columns[indices_[SC_END_LABEL_SEQ_ID]], // e_res_num + "struct_conf.end_label_seq_id", + profile_.fault_tolerant); + if (!(s_beg.first && s_end.first)) { + return; + } + s_res_num = s_beg.second; + e_res_num = s_end.second; + MMCifHSEntry hse = {to_res_num(s_res_num, ' '), to_res_num(e_res_num, ' '), chain_name.str()}; @@ -1353,10 +1361,17 @@ void MMCifReader::ParseStructSheetRange(const std::vector<StringRef>& columns) if (restrict_chains_.size() == 0 || restrict_chains_.find(chain_name.str()) != String::npos) { - s_res_num = this->TryGetInt(columns[indices_[SSR_BEG_LABEL_SEQ_ID]], - "struct_sheet_range.beg_label_seq_id"); - e_res_num = this->TryGetInt(columns[indices_[SSR_END_LABEL_SEQ_ID]], - "struct_sheet_range.end_label_seq_id"); + std::pair<bool,int> s_beg = this->TryGetInt(columns[indices_[SSR_BEG_LABEL_SEQ_ID]], // s_res_num + "struct_sheet_range.beg_label_seq_id", + profile_.fault_tolerant); + std::pair<bool,int> s_end = this->TryGetInt(columns[indices_[SSR_END_LABEL_SEQ_ID]], // e_res_num + "struct_sheet_range.end_label_seq_id", + profile_.fault_tolerant); + if (!(s_beg.first && s_end.first)) { + return; + } + s_res_num = s_beg.second; + e_res_num = s_end.second; MMCifHSEntry hse = {to_res_num(s_res_num, ' '), to_res_num(e_res_num, ' '),