diff --git a/Dockerfile b/Dockerfile index 9eb82c88340928f1df58c97a41271c5ecf804369..3d95b53e473ae5416da2b4b30d83686c2dfa5362 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 b0ff7fe28eeda8df3380f174207b5f1b4a5e7f67..82beb3b8fe831ff46427482ac6f644ea0df73608 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]