From 766884be4fb3728291fee75860b5e4a749913085 Mon Sep 17 00:00:00 2001
From: Gabriel Studer <gabriel.studer@unibas.ch>
Date: Thu, 4 Jan 2024 11:30:22 +0100
Subject: [PATCH] mmcif writer: CHAINTYPE_OLIGOSACCHARIDE is strictly
 entity.type 'branched'

---
 modules/io/src/mol/mmcif_writer.cc | 6 +++---
 modules/mol/base/src/chain_type.cc | 2 ++
 modules/mol/base/src/chain_type.hh | 3 ++-
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/modules/io/src/mol/mmcif_writer.cc b/modules/io/src/mol/mmcif_writer.cc
index 59d30f2e0..be209e559 100644
--- a/modules/io/src/mol/mmcif_writer.cc
+++ b/modules/io/src/mol/mmcif_writer.cc
@@ -241,15 +241,15 @@ namespace {
       case ost::mol::CHAINTYPE_POLY_PEPTIDE_L: return "polymer";
       case ost::mol::CHAINTYPE_POLY_DN: return "polymer";
       case ost::mol::CHAINTYPE_POLY_RN: return "polymer";
-      case ost::mol::CHAINTYPE_POLY_SAC_D: return "polymer"; // branched?
-      case ost::mol::CHAINTYPE_POLY_SAC_L: return "polymer"; // branched?
+      case ost::mol::CHAINTYPE_POLY_SAC_D: return "polymer";
+      case ost::mol::CHAINTYPE_POLY_SAC_L: return "polymer";
       case ost::mol::CHAINTYPE_POLY_DN_RN: return "polymer";
       case ost::mol::CHAINTYPE_UNKNOWN: return "unknown";
       case ost::mol::CHAINTYPE_MACROLIDE: return "macrolide";         
       case ost::mol::CHAINTYPE_CYCLIC_PSEUDO_PEPTIDE: return "polymer";
       case ost::mol::CHAINTYPE_POLY_PEPTIDE_DN_RN: return "polymer";
       case ost::mol::CHAINTYPE_BRANCHED: return "branched";
-      case ost::mol::CHAINTYPE_OLIGOSACCHARIDE: return "polymer"; // branched?
+      case ost::mol::CHAINTYPE_OLIGOSACCHARIDE: return "branched";
       default: return "unknown";
     }
   }
diff --git a/modules/mol/base/src/chain_type.cc b/modules/mol/base/src/chain_type.cc
index 8b1c444bc..7604bbc50 100644
--- a/modules/mol/base/src/chain_type.cc
+++ b/modules/mol/base/src/chain_type.cc
@@ -108,8 +108,10 @@ String StringFromChainType(ChainType type)
     return "cyclic-pseudo-peptide";
   } else if (CHAINTYPE_POLY_PEPTIDE_DN_RN == type) {
     return "peptide nucleic acid";
+    // chain types as found in the pdbx_entity_branch category of a mmcif file
   } else if (CHAINTYPE_OLIGOSACCHARIDE == type) {
     return "oligosaccharide";
+    // other...
   } else if (CHAINTYPE_UNKNOWN == type) {
     return "other";
   }
diff --git a/modules/mol/base/src/chain_type.hh b/modules/mol/base/src/chain_type.hh
index f062606ec..839844827 100644
--- a/modules/mol/base/src/chain_type.hh
+++ b/modules/mol/base/src/chain_type.hh
@@ -50,7 +50,8 @@ typedef enum {
   CHAINTYPE_CYCLIC_PSEUDO_PEPTIDE,  ///< cyclic-pseudo-peptide
   CHAINTYPE_POLY_PEPTIDE_DN_RN,     ///< peptide nucleic acid
   CHAINTYPE_BRANCHED,               ///< carbohydrate
-  CHAINTYPE_OLIGOSACCHARIDE,        ///< oligosaccharide (branched carbohydrate)
+  CHAINTYPE_OLIGOSACCHARIDE,        ///< oligosaccharide (branched carbohydrate,
+                                    ///< i.e. _entity.type is strictly 'branched')
   CHAINTYPE_N_CHAINTYPES    ///< no. of chain types
 } ChainType;
 
-- 
GitLab