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