diff --git a/modules/io/src/mol/mmcif_writer.cc b/modules/io/src/mol/mmcif_writer.cc index 4ad71c449f333093d7261adc55b395378741e4b1..1b3bcf5489461a0c139bc1112dc6cd368ba184b7 100644 --- a/modules/io/src/mol/mmcif_writer.cc +++ b/modules/io/src/mol/mmcif_writer.cc @@ -199,9 +199,7 @@ namespace { // - polymer // - water - // this function is overly simplistic and won't identify macrolid or - // branched => explicitely checks for water, everything else is either - // non-polymer or polymer depending on number of residues + // this function is overly simplistic and won't identify macrolid std::set<char> chem_classes; for(auto res: res_list) { @@ -221,6 +219,15 @@ namespace { return "non-polymer"; } + std::set<char> branched_set; + branched_set.insert(ost::mol::ChemClass::L_SACCHARIDE); + branched_set.insert(ost::mol::ChemClass::D_SACCHARIDE); + branched_set.insert(ost::mol::ChemClass::SACCHARIDE); + branched_set.insert(chem_classes.begin(), chem_classes.end()); + if(branched_set.size() == 3) { + return "branched"; + } + return "polymer"; }