From 5ba5767bd2925a041ef4f10a5b76fbb281f69ad3 Mon Sep 17 00:00:00 2001 From: Jarrett Johnson Date: Mon, 20 May 2024 15:12:46 -0400 Subject: [PATCH] Load from bcif.gz; add unit test --- layer3/Executive.cpp | 2 ++ modules/pymol/constants.py | 3 ++- modules/pymol/importing.py | 3 +++ testing/data/115d.bcif.gz | Bin 0 -> 15343 bytes testing/tests/api/test_importing.py | 8 ++++++++ 5 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 testing/data/115d.bcif.gz create mode 100644 testing/tests/api/test_importing.py diff --git a/layer3/Executive.cpp b/layer3/Executive.cpp index 8f61a049c..dcbacc726 100644 --- a/layer3/Executive.cpp +++ b/layer3/Executive.cpp @@ -3693,6 +3693,7 @@ ExecutiveLoadPrepareArgs(PyMOLGlobals * G, case cLoadTypeSDF2Str: case cLoadTypeXYZStr: case cLoadTypeDXStr: + case cLoadTypeBCIFStr: if (!content) { return pymol::Error("content is nullptr"); } @@ -3715,6 +3716,7 @@ ExecutiveLoadPrepareArgs(PyMOLGlobals * G, case cLoadTypeSDF2: case cLoadTypeXYZ: case cLoadTypeDXMap: + case cLoadTypeBCIF: if (content) { fname_null_ok = true; break; diff --git a/modules/pymol/constants.py b/modules/pymol/constants.py index 4d7ca8e24..dc19cdebc 100644 --- a/modules/pymol/constants.py +++ b/modules/pymol/constants.py @@ -84,7 +84,8 @@ def _reverse_lookup(cls, number): loadable.map : loadable.mapstr, loadable.dx : loadable.dxstr, loadable.xyz : loadable.xyzstr, - loadable.sdf2 : loadable.sdf2str} + loadable.sdf2 : loadable.sdf2str, + loadable.bcif : loadable.bcifstr} sanitize_alpha_list_re = re.compile(r"[^a-zA-Z0-9_\'\"\.\-\[\]\,]+") nt_hidden_path_re = re.compile(r"\$[\/\\]") diff --git a/modules/pymol/importing.py b/modules/pymol/importing.py index b6abd61cf..da323aa02 100644 --- a/modules/pymol/importing.py +++ b/modules/pymol/importing.py @@ -91,6 +91,9 @@ def filename_to_format(filename): format = 'cif' elif ext in ('bcif',): format = 'bcif' + elif ext in ('bcifgz',): + format = 'bcif' + zipped = 'gz' elif re.match(r'pdb\d+$', ext): format = 'pdb' elif re.match(r'xyz_\d+$', ext): diff --git a/testing/data/115d.bcif.gz b/testing/data/115d.bcif.gz new file mode 100644 index 0000000000000000000000000000000000000000..08a37fcdeb4eb06b8d37e591e8e49853f0516e9b GIT binary patch literal 15343 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 N{tIC}_B?Bm0s!#D$>;z8 literal 0 HcmV?d00001 diff --git a/testing/tests/api/test_importing.py b/testing/tests/api/test_importing.py new file mode 100644 index 000000000..6a34c2c52 --- /dev/null +++ b/testing/tests/api/test_importing.py @@ -0,0 +1,8 @@ +from pymol import cmd +from pymol import test_utils + + +@test_utils.requires_version("3.0") +def test_bcif(): + cmd.load(test_utils.datafile("115d.bcif.gz")) + assert cmd.count_atoms() == 407