rcsb.exdb 1.29__tar.gz → 1.31__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rcsb_exdb-1.31/.gitignore +112 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/HISTORY.txt +2 -0
- {rcsb_exdb-1.29/rcsb.exdb.egg-info → rcsb_exdb-1.31}/PKG-INFO +36 -46
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/README.md +4 -7
- rcsb_exdb-1.31/pyproject.toml +95 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/chemref/ChemRefEtlWorker.py +9 -6
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/chemref/ChemRefExtractor.py +3 -2
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/EntityInstanceExtractor.py +557 -0
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/EntityPolymerExtractor.py +544 -0
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/EntityPolymerExtractorFullTests.py +176 -0
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/ReferenceSequenceAssignmentUpdater.py +449 -0
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/ReferenceSequenceUtils.py +123 -0
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/ReferenceSequenceUtilsTests.py +109 -0
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/exampleObjectExtractor.py +109 -0
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/fixtureEntityPolymerExtractor.py +85 -0
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/testEntityInstanceExtractor.py +170 -0
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/testEntityPolymerExtractor.py +171 -0
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/testReferenceSequenceAssignmentUpdater.py +79 -0
- rcsb_exdb-1.31/rcsb/exdb/examples-seq/testReferenceSequenceUtils.py +108 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/fixturePdbxLoader.py +11 -4
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testObjectExtractor.py +2 -2
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testReferenceSequenceAnnotationAdapter.py +1 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testTreeNodeListWorker.py +1 -1
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tree/TreeNodeListWorker.py +87 -127
- rcsb_exdb-1.31/rcsb/exdb/wf/__init__.py +0 -0
- rcsb_exdb-1.29/MANIFEST.in +0 -7
- rcsb_exdb-1.29/PKG-INFO +0 -113
- rcsb_exdb-1.29/rcsb/exdb/cli/__init__.py +0 -5
- rcsb_exdb-1.29/rcsb.exdb.egg-info/SOURCES.txt +0 -91
- rcsb_exdb-1.29/rcsb.exdb.egg-info/dependency_links.txt +0 -1
- rcsb_exdb-1.29/rcsb.exdb.egg-info/not-zip-safe +0 -1
- rcsb_exdb-1.29/rcsb.exdb.egg-info/requires.txt +0 -20
- rcsb_exdb-1.29/rcsb.exdb.egg-info/top_level.txt +0 -1
- rcsb_exdb-1.29/requirements.txt +0 -17
- rcsb_exdb-1.29/setup.cfg +0 -10
- rcsb_exdb-1.29/setup.py +0 -67
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/LICENSE +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/__init__.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/__init__.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/branch/BranchedEntityExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/branch/GlycanProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/branch/GlycanUtils.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/branch/__init__.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/chemref/ChemRefMappingProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/chemref/PubChemDataCacheProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/chemref/PubChemEtlWrapper.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/chemref/PubChemIndexCacheProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/chemref/__init__.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/citation/CitationAdapter.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/citation/CitationExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/citation/CitationUtils.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/citation/__init__.py +0 -0
- {rcsb_exdb-1.29/rcsb/exdb/entry → rcsb_exdb-1.31/rcsb/exdb/cli}/__init__.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/entry/EntryInfoProvider.py +0 -0
- {rcsb_exdb-1.29/rcsb/exdb/seq → rcsb_exdb-1.31/rcsb/exdb/entry}/__init__.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/AnnotationExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/LigandNeighborMappingExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/LigandNeighborMappingProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/PolymerEntityExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/ReferenceSequenceAnnotationAdapter.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/ReferenceSequenceAnnotationProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/ReferenceSequenceAssignmentAdapter.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/ReferenceSequenceAssignmentProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/ReferenceSequenceCacheProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/TaxonomyExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/UniProtCoreEtlWorker.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/seq/UniProtExtractor.py +0 -0
- {rcsb_exdb-1.29/rcsb/exdb/tests → rcsb_exdb-1.31/rcsb/exdb/seq}/__init__.py +0 -0
- {rcsb_exdb-1.29/rcsb/exdb/tree → rcsb_exdb-1.31/rcsb/exdb/tests}/__init__.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/fixtureDictMethodResourceProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testAnnotationExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testBranchedEntityExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testChemRefLoader.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testChemRefMappingProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testCitationAdapter.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testCitationExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testCitationUtils.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testEntryInfoEtlWorkflow.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testEntryInfoProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testGlycanEtlWorkflow.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testGlycanProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testGlycanUtils.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testLigandNeighborMappingProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testObjectTransformer.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testObjectUpdater.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testPolymerEntityExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testPubChemDataCacheProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testPubChemEtlWorkflow.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testPubChemEtlWrapper.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testPubChemIndexCacheProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testReferenceSequenceAssignmentAdapter.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testReferenceSequenceAssignmentAdapterValidate.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testReferenceSequenceAssignmentProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testReferenceSequenceCacheProvider.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testTaxonomyExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testUniProtCoreEtlWorker.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/tests/testUniProtExtractor.py +0 -0
- {rcsb_exdb-1.29/rcsb/exdb/utils → rcsb_exdb-1.31/rcsb/exdb/tree}/__init__.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/utils/ObjectAdapterBase.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/utils/ObjectExtractor.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/utils/ObjectTransformer.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/utils/ObjectUpdater.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/utils/ObjectValidator.py +0 -0
- {rcsb_exdb-1.29/rcsb/exdb/wf → rcsb_exdb-1.31/rcsb/exdb/utils}/__init__.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/wf/EntryInfoEtlWorkflow.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/wf/GlycanEtlWorkflow.py +0 -0
- {rcsb_exdb-1.29 → rcsb_exdb-1.31}/rcsb/exdb/wf/PubChemEtlWorkflow.py +0 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
.vscode
|
|
2
|
+
test-output/
|
|
3
|
+
!test-output/.gitkeep
|
|
4
|
+
test-cache-preserve/
|
|
5
|
+
LOGTOX
|
|
6
|
+
CACHE/
|
|
7
|
+
Archive/
|
|
8
|
+
.idea/
|
|
9
|
+
# Byte-compiled / optimized / DLL files
|
|
10
|
+
__pycache__/
|
|
11
|
+
*.py[cod]
|
|
12
|
+
*$py.class
|
|
13
|
+
|
|
14
|
+
# C extensions
|
|
15
|
+
*.so
|
|
16
|
+
|
|
17
|
+
# Distribution / packaging
|
|
18
|
+
.Python
|
|
19
|
+
build/
|
|
20
|
+
develop-eggs/
|
|
21
|
+
dist/
|
|
22
|
+
downloads/
|
|
23
|
+
eggs/
|
|
24
|
+
.eggs/
|
|
25
|
+
lib/
|
|
26
|
+
lib64/
|
|
27
|
+
parts/
|
|
28
|
+
sdist/
|
|
29
|
+
var/
|
|
30
|
+
wheels/
|
|
31
|
+
*.egg-info/
|
|
32
|
+
.installed.cfg
|
|
33
|
+
*.egg
|
|
34
|
+
MANIFEST
|
|
35
|
+
|
|
36
|
+
# PyInstaller
|
|
37
|
+
# Usually these files are written by a python script from a template
|
|
38
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
39
|
+
*.manifest
|
|
40
|
+
*.spec
|
|
41
|
+
|
|
42
|
+
# Installer logs
|
|
43
|
+
pip-log.txt
|
|
44
|
+
pip-delete-this-directory.txt
|
|
45
|
+
|
|
46
|
+
# Unit test / coverage reports
|
|
47
|
+
htmlcov/
|
|
48
|
+
.tox/
|
|
49
|
+
.coverage
|
|
50
|
+
.coverage.*
|
|
51
|
+
.cache
|
|
52
|
+
nosetests.xml
|
|
53
|
+
coverage.xml
|
|
54
|
+
*.cover
|
|
55
|
+
.hypothesis/
|
|
56
|
+
.pytest_cache/
|
|
57
|
+
|
|
58
|
+
# Translations
|
|
59
|
+
*.mo
|
|
60
|
+
*.pot
|
|
61
|
+
|
|
62
|
+
# Django stuff:
|
|
63
|
+
*.log
|
|
64
|
+
local_settings.py
|
|
65
|
+
db.sqlite3
|
|
66
|
+
|
|
67
|
+
# Flask stuff:
|
|
68
|
+
instance/
|
|
69
|
+
.webassets-cache
|
|
70
|
+
|
|
71
|
+
# Scrapy stuff:
|
|
72
|
+
.scrapy
|
|
73
|
+
|
|
74
|
+
# Sphinx documentation
|
|
75
|
+
docs/_build/
|
|
76
|
+
|
|
77
|
+
# PyBuilder
|
|
78
|
+
target/
|
|
79
|
+
|
|
80
|
+
# Jupyter Notebook
|
|
81
|
+
.ipynb_checkpoints
|
|
82
|
+
|
|
83
|
+
# pyenv
|
|
84
|
+
.python-version
|
|
85
|
+
|
|
86
|
+
# celery beat schedule file
|
|
87
|
+
celerybeat-schedule
|
|
88
|
+
|
|
89
|
+
# SageMath parsed files
|
|
90
|
+
*.sage.py
|
|
91
|
+
|
|
92
|
+
# Environments
|
|
93
|
+
.env
|
|
94
|
+
.venv
|
|
95
|
+
env/
|
|
96
|
+
venv/
|
|
97
|
+
ENV/
|
|
98
|
+
env.bak/
|
|
99
|
+
venv.bak/
|
|
100
|
+
|
|
101
|
+
# Spyder project settings
|
|
102
|
+
.spyderproject
|
|
103
|
+
.spyproject
|
|
104
|
+
|
|
105
|
+
# Rope project settings
|
|
106
|
+
.ropeproject
|
|
107
|
+
|
|
108
|
+
# mkdocs documentation
|
|
109
|
+
/site
|
|
110
|
+
|
|
111
|
+
# mypy
|
|
112
|
+
.mypy_cache/
|
|
@@ -111,3 +111,5 @@
|
|
|
111
111
|
23-Jan-2025 V1.27 Update TreeNodeListWorker to index 'id' field
|
|
112
112
|
11-Feb-2025 V1.28 Move ExDB CLI code (workflow, exec, and tests) and Dockerfile to rcsb.workflow to avoid circular imports
|
|
113
113
|
8-Apr-2025 V1.29 Add more logging to PubChemIndexCacheProvider and increase default numProc
|
|
114
|
+
2-Oct-2025 V1.30 Make use of ExDB configuration file for loading drugbank and tree node list DBs/collections and setting indexed fields
|
|
115
|
+
2-Dec-2025 V1.31 Switch to 'pyproject.toml' file and update test pipelines to python 3.12
|
|
@@ -1,50 +1,43 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rcsb.exdb
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.31
|
|
4
4
|
Summary: RCSB Python ExDB data extraction and loading workflows
|
|
5
|
-
|
|
6
|
-
Author: John Westbrook
|
|
7
|
-
|
|
8
|
-
License: Apache
|
|
9
|
-
|
|
5
|
+
Project-URL: Homepage, https://github.com/rcsb/py-rcsb_exdb
|
|
6
|
+
Author-email: John Westbrook <john.westbrook@rcsb.org>
|
|
7
|
+
Maintainer-email: Dennis Piehl <dennis.piehl@rcsb.org>
|
|
8
|
+
License-Expression: Apache-2.0
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
11
|
Classifier: Intended Audience :: Developers
|
|
11
12
|
Classifier: Natural Language :: English
|
|
12
|
-
Classifier: License :: OSI Approved :: Apache Software License
|
|
13
13
|
Classifier: Programming Language :: Python
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.
|
|
16
|
-
|
|
17
|
-
Description-Content-Type: text/markdown
|
|
18
|
-
License-File: LICENSE
|
|
19
|
-
Requires-Dist: numpy
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Requires-Python: >=3.9
|
|
20
17
|
Requires-Dist: jsonschema>=2.6.0
|
|
21
|
-
Requires-Dist:
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
Requires-Dist: rcsb
|
|
24
|
-
Requires-Dist: rcsb
|
|
25
|
-
Requires-Dist: rcsb
|
|
26
|
-
Requires-Dist: rcsb
|
|
27
|
-
Requires-Dist: rcsb
|
|
28
|
-
Requires-Dist: rcsb
|
|
29
|
-
Requires-Dist: rcsb
|
|
30
|
-
Requires-Dist: rcsb
|
|
31
|
-
Requires-Dist: rcsb
|
|
32
|
-
Requires-Dist: rcsb
|
|
33
|
-
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Provides-Extra:
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
Dynamic: license-file
|
|
45
|
-
Dynamic: provides-extra
|
|
46
|
-
Dynamic: requires-dist
|
|
47
|
-
Dynamic: summary
|
|
18
|
+
Requires-Dist: numpy
|
|
19
|
+
Requires-Dist: openeye-toolkits>=2024.1.1
|
|
20
|
+
Requires-Dist: rcsb-db>=1.808
|
|
21
|
+
Requires-Dist: rcsb-utils-chem>=0.84
|
|
22
|
+
Requires-Dist: rcsb-utils-chemref>=0.91
|
|
23
|
+
Requires-Dist: rcsb-utils-config>=0.40
|
|
24
|
+
Requires-Dist: rcsb-utils-dictionary>=1.27
|
|
25
|
+
Requires-Dist: rcsb-utils-ec>=0.25
|
|
26
|
+
Requires-Dist: rcsb-utils-go>=0.18
|
|
27
|
+
Requires-Dist: rcsb-utils-io>=1.48
|
|
28
|
+
Requires-Dist: rcsb-utils-seq>=0.82
|
|
29
|
+
Requires-Dist: rcsb-utils-struct>=0.47
|
|
30
|
+
Requires-Dist: rcsb-utils-targets>=0.82
|
|
31
|
+
Requires-Dist: rcsb-utils-taxonomy>=0.43
|
|
32
|
+
Provides-Extra: tests
|
|
33
|
+
Requires-Dist: black>=21.5b1; extra == 'tests'
|
|
34
|
+
Requires-Dist: check-manifest; extra == 'tests'
|
|
35
|
+
Requires-Dist: coverage; extra == 'tests'
|
|
36
|
+
Requires-Dist: flake8; extra == 'tests'
|
|
37
|
+
Requires-Dist: pylint; extra == 'tests'
|
|
38
|
+
Requires-Dist: rcsb-utils-citation>=0.25; extra == 'tests'
|
|
39
|
+
Requires-Dist: tox; extra == 'tests'
|
|
40
|
+
Description-Content-Type: text/markdown
|
|
48
41
|
|
|
49
42
|
# py-rcsb_exdb
|
|
50
43
|
|
|
@@ -68,14 +61,9 @@ git clone --recurse-submodules https://github.com/rcsb/py-rcsb_exdb.git
|
|
|
68
61
|
```
|
|
69
62
|
|
|
70
63
|
Optionally, run test suite (Python versions 2.7 and 3.7) using
|
|
71
|
-
[setuptools](https://setuptools.readthedocs.io/en/latest/) or
|
|
72
64
|
[tox](http://tox.readthedocs.io/en/latest/example/platform.html):
|
|
73
65
|
|
|
74
66
|
```bash
|
|
75
|
-
python setup.py test
|
|
76
|
-
|
|
77
|
-
or simply run
|
|
78
|
-
|
|
79
67
|
tox
|
|
80
68
|
```
|
|
81
69
|
|
|
@@ -83,9 +71,11 @@ Installation is via the program [pip](https://pypi.python.org/pypi/pip). To run
|
|
|
83
71
|
from the source tree, the package must be installed in editable mode (i.e. -e):
|
|
84
72
|
|
|
85
73
|
```bash
|
|
86
|
-
pip install -
|
|
74
|
+
pip install -e . --extra-index-url https://pypi.anaconda.org/OpenEye/simple
|
|
75
|
+
|
|
76
|
+
# or using uv
|
|
87
77
|
|
|
88
|
-
pip install -e .
|
|
78
|
+
uv pip install -e .
|
|
89
79
|
```
|
|
90
80
|
|
|
91
81
|
#### Installing in Ubuntu Linux (tested in 18.04)
|
|
@@ -20,14 +20,9 @@ git clone --recurse-submodules https://github.com/rcsb/py-rcsb_exdb.git
|
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
Optionally, run test suite (Python versions 2.7 and 3.7) using
|
|
23
|
-
[setuptools](https://setuptools.readthedocs.io/en/latest/) or
|
|
24
23
|
[tox](http://tox.readthedocs.io/en/latest/example/platform.html):
|
|
25
24
|
|
|
26
25
|
```bash
|
|
27
|
-
python setup.py test
|
|
28
|
-
|
|
29
|
-
or simply run
|
|
30
|
-
|
|
31
26
|
tox
|
|
32
27
|
```
|
|
33
28
|
|
|
@@ -35,9 +30,11 @@ Installation is via the program [pip](https://pypi.python.org/pypi/pip). To run
|
|
|
35
30
|
from the source tree, the package must be installed in editable mode (i.e. -e):
|
|
36
31
|
|
|
37
32
|
```bash
|
|
38
|
-
pip install -
|
|
33
|
+
pip install -e . --extra-index-url https://pypi.anaconda.org/OpenEye/simple
|
|
34
|
+
|
|
35
|
+
# or using uv
|
|
39
36
|
|
|
40
|
-
pip install -e .
|
|
37
|
+
uv pip install -e .
|
|
41
38
|
```
|
|
42
39
|
|
|
43
40
|
#### Installing in Ubuntu Linux (tested in 18.04)
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "rcsb.exdb"
|
|
7
|
+
description = "RCSB Python ExDB data extraction and loading workflows"
|
|
8
|
+
version = "1.31"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
authors = [
|
|
11
|
+
{ name="John Westbrook", email="john.westbrook@rcsb.org" }
|
|
12
|
+
]
|
|
13
|
+
maintainers = [
|
|
14
|
+
{ name="Dennis Piehl", email="dennis.piehl@rcsb.org" }
|
|
15
|
+
]
|
|
16
|
+
license = "Apache-2.0"
|
|
17
|
+
license-files = ["LICENSE"]
|
|
18
|
+
requires-python = ">=3.9" # Latest OpenEye (2025.1.1) only supports up to 3.12 (as of Nov. 2025)
|
|
19
|
+
classifiers = [
|
|
20
|
+
"Development Status :: 5 - Production/Stable",
|
|
21
|
+
"Intended Audience :: Developers",
|
|
22
|
+
"Natural Language :: English",
|
|
23
|
+
"Programming Language :: Python",
|
|
24
|
+
"Programming Language :: Python :: 3",
|
|
25
|
+
"Programming Language :: Python :: 3.12", # Latest OpenEye (2025.1.1) only supports up to 3.12 (as of Nov. 2025)
|
|
26
|
+
]
|
|
27
|
+
|
|
28
|
+
dependencies = [
|
|
29
|
+
# OpenEye is needed here despite it not being a direct requirement of this package (it's used by rcsb.utils.chem)
|
|
30
|
+
"OpenEye-toolkits >= 2024.1.1",
|
|
31
|
+
#
|
|
32
|
+
"numpy",
|
|
33
|
+
"jsonschema >= 2.6.0",
|
|
34
|
+
"rcsb.utils.io >= 1.48",
|
|
35
|
+
"rcsb.db >= 1.808",
|
|
36
|
+
"rcsb.utils.chem >= 0.84",
|
|
37
|
+
"rcsb.utils.chemref >= 0.91",
|
|
38
|
+
"rcsb.utils.config >= 0.40",
|
|
39
|
+
"rcsb.utils.ec >= 0.25",
|
|
40
|
+
"rcsb.utils.go >= 0.18",
|
|
41
|
+
"rcsb.utils.seq >= 0.82",
|
|
42
|
+
"rcsb.utils.targets >= 0.82",
|
|
43
|
+
"rcsb.utils.struct >= 0.47",
|
|
44
|
+
"rcsb.utils.taxonomy >= 0.43",
|
|
45
|
+
"rcsb.utils.dictionary >= 1.27",
|
|
46
|
+
]
|
|
47
|
+
|
|
48
|
+
[project.optional-dependencies]
|
|
49
|
+
tests = ["tox", "pylint", "black>=21.5b1", "flake8", "coverage", "rcsb.utils.citation>=0.25", "check-manifest"]
|
|
50
|
+
|
|
51
|
+
[project.urls]
|
|
52
|
+
Homepage = "https://github.com/rcsb/py-rcsb_exdb"
|
|
53
|
+
|
|
54
|
+
# ---------------- hatch configuration ----------------
|
|
55
|
+
[tool.hatch.build.targets.sdist]
|
|
56
|
+
include = [
|
|
57
|
+
"/rcsb/**",
|
|
58
|
+
"/README.md",
|
|
59
|
+
"/LICENSE",
|
|
60
|
+
"/HISTORY.txt",
|
|
61
|
+
"/pyproject.toml",
|
|
62
|
+
]
|
|
63
|
+
exclude = [
|
|
64
|
+
"/rcsb/mock-*",
|
|
65
|
+
"/rcsb/exdb/test*/test*-*",
|
|
66
|
+
"/rcsb/exdb/test*/**.tdd",
|
|
67
|
+
"/rcsb/exdb/test*/**.txt",
|
|
68
|
+
"/rcsb/exdb/test*/**.sh",
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
[tool.hatch.build.targets.wheel]
|
|
72
|
+
packages = ["rcsb"]
|
|
73
|
+
exclude = [
|
|
74
|
+
"/rcsb/db/test*",
|
|
75
|
+
"/rcsb/mock-*",
|
|
76
|
+
]
|
|
77
|
+
|
|
78
|
+
[tool.hatch.envs.default]
|
|
79
|
+
skip-install = true
|
|
80
|
+
dependencies = ["OpenEye-toolkits>=2024.1.1"]
|
|
81
|
+
|
|
82
|
+
[tool.hatch.envs.default.env-vars]
|
|
83
|
+
PIP_EXTRA_INDEX_URL = "https://pypi.anaconda.org/OpenEye/simple"
|
|
84
|
+
|
|
85
|
+
# ---------------- test configuration ----------------
|
|
86
|
+
[tool.hatch.envs.hatch-test]
|
|
87
|
+
dependencies = ["tox"]
|
|
88
|
+
|
|
89
|
+
[tool.hatch.envs.hatch-test.scripts]
|
|
90
|
+
run = ["tox"]
|
|
91
|
+
|
|
92
|
+
# ---------------- UV configuration ----------------
|
|
93
|
+
[tool.uv]
|
|
94
|
+
extra-index-url = ["https://pypi.anaconda.org/OpenEye/simple"]
|
|
95
|
+
managed = false # This prevents uv from automatically creating venvs within individual packages when running 'uv run ...' from within the package directory
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
# Updates:
|
|
8
8
|
# 9-Dec-2018 jdw add validation methods
|
|
9
9
|
# 3-Sep-2019 jdw move to rcsb.exdb.chemref
|
|
10
|
+
# 7-Aug-2025 dwp change target DB and collection from "drugbank_core" to "dw" and "core_drugbank" (as part of transition to DW);
|
|
11
|
+
# make use of configuration file for loading drugbank collection and setting indexed fields
|
|
10
12
|
#
|
|
11
13
|
##
|
|
12
14
|
__docformat__ = "google en"
|
|
@@ -66,9 +68,10 @@ class ChemRefEtlWorker(object):
|
|
|
66
68
|
desp = DataExchangeStatus()
|
|
67
69
|
statusStartTimestamp = desp.setStartTime()
|
|
68
70
|
addValues = {}
|
|
71
|
+
collectionGroupName = "core_drugbank"
|
|
69
72
|
#
|
|
70
73
|
if extResource == "DrugBank":
|
|
71
|
-
|
|
74
|
+
databaseNameMongo = self.__schP.getDatabaseMongoName(collectionGroupName=collectionGroupName)
|
|
72
75
|
configName = self.__cfgOb.getDefaultSectionName()
|
|
73
76
|
user = self.__cfgOb.get("_DRUGBANK_AUTH_USERNAME", sectionName=configName)
|
|
74
77
|
pw = self.__cfgOb.get("_DRUGBANK_AUTH_PASSWORD", sectionName=configName)
|
|
@@ -81,10 +84,10 @@ class ChemRefEtlWorker(object):
|
|
|
81
84
|
#
|
|
82
85
|
logger.info("Resource %r extracted mapped document length %d", extResource, len(dList))
|
|
83
86
|
logger.debug("Objects %r", dList[:2])
|
|
84
|
-
|
|
87
|
+
_, _, collectionList, docIndexD = self.__schP.getSchemaInfo(collectionGroupName=collectionGroupName)
|
|
85
88
|
collectionName = collectionList[0] if collectionList else "unassigned"
|
|
86
|
-
|
|
87
|
-
logger.info("Database %r collection %r index attributes %r",
|
|
89
|
+
indexDL = docIndexD[collectionName] if collectionName in docIndexD else []
|
|
90
|
+
logger.info("Database %r collection %r index attributes %r", databaseNameMongo, collectionName, indexDL)
|
|
88
91
|
#
|
|
89
92
|
# For some reason, 'addValues' was being overwritten with an empty dict (https://github.com/rcsb/py-rcsb_exdb/commit/26bd79e9a2fffc97c034b4116dece9248d1c1f39)
|
|
90
93
|
# Will need to review this -- do we want to add the schema version values or not? (Also, see similar logic in UniProtCoreEtlWorker.py)
|
|
@@ -103,8 +106,8 @@ class ChemRefEtlWorker(object):
|
|
|
103
106
|
readBackCheck=self.__readBackCheck,
|
|
104
107
|
)
|
|
105
108
|
#
|
|
106
|
-
ok = dl.load(
|
|
107
|
-
self.__updateStatus(updateId,
|
|
109
|
+
ok = dl.load(databaseNameMongo, collectionName, loadType=loadType, documentList=dList, keyNames=None, addValues=addValues, indexDL=indexDL)
|
|
110
|
+
self.__updateStatus(updateId, databaseNameMongo, collectionName, ok, statusStartTimestamp)
|
|
108
111
|
|
|
109
112
|
return True
|
|
110
113
|
except Exception as e:
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
# Updates:
|
|
8
8
|
# 7-Jan-2019 jdw moved from ChemRefEtlWorker.
|
|
9
9
|
# 3-Sep-2019 jdw moved again to module rcsb.exdb.chemref
|
|
10
|
+
# 14-Aug-2025 dwp rename bird_chem_comp_core to core_chem_comp
|
|
10
11
|
#
|
|
11
12
|
##
|
|
12
13
|
__docformat__ = "google en"
|
|
@@ -42,8 +43,8 @@ class ChemRefExtractor(object):
|
|
|
42
43
|
"""
|
|
43
44
|
idD = {}
|
|
44
45
|
try:
|
|
45
|
-
databaseName = "
|
|
46
|
-
collectionName = "
|
|
46
|
+
databaseName = "dw"
|
|
47
|
+
collectionName = "core_chem_comp"
|
|
47
48
|
selectD = {"rcsb_chem_comp_related.resource_name": referenceResourceName}
|
|
48
49
|
selectionList = ["rcsb_id", "rcsb_chem_comp_related"]
|
|
49
50
|
logger.info("Searching %s %s with selection query %r", databaseName, collectionName, selectD)
|