From d96fc204e217b81da7ba67d7ebee24f2adf0d213 Mon Sep 17 00:00:00 2001
From: B13nch3n <b13nch3n_01@theb-si.de>
Date: Thu, 10 Nov 2022 17:10:00 +0100
Subject: [PATCH] Allow homo-di-mers

---
 Dockerfile            |  2 +-
 translate2modelcif.py | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/Dockerfile b/Dockerfile
index 9eb82c8..3d95b53 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -44,7 +44,7 @@ RUN set -e pipefail; \
 ARG ADD_DEV
 RUN set -e pipefail; \
     if test xYES = x`echo ${ADD_DEV} | tr '[:lower:]' '[:upper:]'`; then \
-      apt-get install -y pip emacs; \
+      apt-get install -y pip emacs less; \
       pip install black pylint; \
       apt-get remove -y pip; \
       apt-get -y autoremove; \
diff --git a/translate2modelcif.py b/translate2modelcif.py
index b0ff7fe..82beb3b 100644
--- a/translate2modelcif.py
+++ b/translate2modelcif.py
@@ -663,9 +663,23 @@ def _get_entities(pdb_file, up_acs):
     """Gather data for the mmCIF (target) entities."""
     entities = []
     ost_ent = io.LoadPDB(pdb_file)
+    already_seen = []
     for i, chn in enumerate(ost_ent.chains):
         cif_ent = {}
         sqe = _get_sequence(chn)
+        try:
+            e_idx = already_seen.index(up_acs[i])
+        except ValueError:
+            pass
+        else:
+            if sqe != entities[e_idx]["pdb_sequence"]:
+                _abort_msg(
+                    "Sequences are different for two chains of the same "
+                    "UniProtKB AC. This case is not implemented, yet."
+                )
+            entities[e_idx]["pdb_chain_id"].append(chn.name)
+            continue
+        already_seen.append(up_acs[i])
         upkb = _get_upkb_for_sequence(sqe, up_acs[i])
         cif_ent["pdb_sequence"] = sqe
         cif_ent["pdb_chain_id"] = [chn.name]
-- 
GitLab