rcsb.exdb 1.31__py3-none-any.whl
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/__init__.py +1 -0
- rcsb/exdb/__init__.py +1 -0
- rcsb/exdb/branch/BranchedEntityExtractor.py +82 -0
- rcsb/exdb/branch/GlycanProvider.py +116 -0
- rcsb/exdb/branch/GlycanUtils.py +114 -0
- rcsb/exdb/branch/__init__.py +0 -0
- rcsb/exdb/chemref/ChemRefEtlWorker.py +118 -0
- rcsb/exdb/chemref/ChemRefExtractor.py +70 -0
- rcsb/exdb/chemref/ChemRefMappingProvider.py +139 -0
- rcsb/exdb/chemref/PubChemDataCacheProvider.py +372 -0
- rcsb/exdb/chemref/PubChemEtlWrapper.py +280 -0
- rcsb/exdb/chemref/PubChemIndexCacheProvider.py +638 -0
- rcsb/exdb/chemref/__init__.py +0 -0
- rcsb/exdb/citation/CitationAdapter.py +91 -0
- rcsb/exdb/citation/CitationExtractor.py +190 -0
- rcsb/exdb/citation/CitationUtils.py +51 -0
- rcsb/exdb/citation/__init__.py +0 -0
- rcsb/exdb/cli/__init__.py +0 -0
- rcsb/exdb/entry/EntryInfoProvider.py +148 -0
- rcsb/exdb/entry/__init__.py +0 -0
- rcsb/exdb/examples-seq/EntityInstanceExtractor.py +557 -0
- rcsb/exdb/examples-seq/EntityPolymerExtractor.py +544 -0
- rcsb/exdb/examples-seq/EntityPolymerExtractorFullTests.py +176 -0
- rcsb/exdb/examples-seq/ReferenceSequenceAssignmentUpdater.py +449 -0
- rcsb/exdb/examples-seq/ReferenceSequenceUtils.py +123 -0
- rcsb/exdb/examples-seq/ReferenceSequenceUtilsTests.py +109 -0
- rcsb/exdb/examples-seq/exampleObjectExtractor.py +109 -0
- rcsb/exdb/examples-seq/fixtureEntityPolymerExtractor.py +85 -0
- rcsb/exdb/examples-seq/testEntityInstanceExtractor.py +170 -0
- rcsb/exdb/examples-seq/testEntityPolymerExtractor.py +171 -0
- rcsb/exdb/examples-seq/testReferenceSequenceAssignmentUpdater.py +79 -0
- rcsb/exdb/examples-seq/testReferenceSequenceUtils.py +108 -0
- rcsb/exdb/seq/AnnotationExtractor.py +76 -0
- rcsb/exdb/seq/LigandNeighborMappingExtractor.py +84 -0
- rcsb/exdb/seq/LigandNeighborMappingProvider.py +106 -0
- rcsb/exdb/seq/PolymerEntityExtractor.py +328 -0
- rcsb/exdb/seq/ReferenceSequenceAnnotationAdapter.py +598 -0
- rcsb/exdb/seq/ReferenceSequenceAnnotationProvider.py +228 -0
- rcsb/exdb/seq/ReferenceSequenceAssignmentAdapter.py +534 -0
- rcsb/exdb/seq/ReferenceSequenceAssignmentProvider.py +388 -0
- rcsb/exdb/seq/ReferenceSequenceCacheProvider.py +397 -0
- rcsb/exdb/seq/TaxonomyExtractor.py +69 -0
- rcsb/exdb/seq/UniProtCoreEtlWorker.py +177 -0
- rcsb/exdb/seq/UniProtExtractor.py +80 -0
- rcsb/exdb/seq/__init__.py +0 -0
- rcsb/exdb/tests/TEST-EXDB-CLI-EXEC.sh +19 -0
- rcsb/exdb/tests/TEST-EXDB-CLI-REFSEQ-EXEC.sh +12 -0
- rcsb/exdb/tests/__init__.py +0 -0
- rcsb/exdb/tests/fixtureDictMethodResourceProvider.py +104 -0
- rcsb/exdb/tests/fixturePdbxLoader.py +298 -0
- rcsb/exdb/tests/test-data/components-abbrev.cif +2739 -0
- rcsb/exdb/tests/test-data/prdcc-abbrev.cif +9171 -0
- rcsb/exdb/tests/testAnnotationExtractor.py +79 -0
- rcsb/exdb/tests/testBranchedEntityExtractor.py +81 -0
- rcsb/exdb/tests/testChemRefLoader.py +106 -0
- rcsb/exdb/tests/testChemRefMappingProvider.py +95 -0
- rcsb/exdb/tests/testCitationAdapter.py +97 -0
- rcsb/exdb/tests/testCitationExtractor.py +93 -0
- rcsb/exdb/tests/testCitationUtils.py +92 -0
- rcsb/exdb/tests/testEntryInfoEtlWorkflow.py +70 -0
- rcsb/exdb/tests/testEntryInfoProvider.py +97 -0
- rcsb/exdb/tests/testGlycanEtlWorkflow.py +70 -0
- rcsb/exdb/tests/testGlycanProvider.py +98 -0
- rcsb/exdb/tests/testGlycanUtils.py +64 -0
- rcsb/exdb/tests/testLigandNeighborMappingProvider.py +90 -0
- rcsb/exdb/tests/testObjectExtractor.py +342 -0
- rcsb/exdb/tests/testObjectTransformer.py +83 -0
- rcsb/exdb/tests/testObjectUpdater.py +120 -0
- rcsb/exdb/tests/testPolymerEntityExtractor.py +93 -0
- rcsb/exdb/tests/testPubChemDataCacheProvider.py +124 -0
- rcsb/exdb/tests/testPubChemEtlWorkflow.py +134 -0
- rcsb/exdb/tests/testPubChemEtlWrapper.py +155 -0
- rcsb/exdb/tests/testPubChemIndexCacheProvider.py +123 -0
- rcsb/exdb/tests/testReferenceSequenceAnnotationAdapter.py +106 -0
- rcsb/exdb/tests/testReferenceSequenceAssignmentAdapter.py +121 -0
- rcsb/exdb/tests/testReferenceSequenceAssignmentAdapterValidate.py +122 -0
- rcsb/exdb/tests/testReferenceSequenceAssignmentProvider.py +117 -0
- rcsb/exdb/tests/testReferenceSequenceCacheProvider.py +94 -0
- rcsb/exdb/tests/testTaxonomyExtractor.py +75 -0
- rcsb/exdb/tests/testTreeNodeListWorker.py +111 -0
- rcsb/exdb/tests/testUniProtCoreEtlWorker.py +99 -0
- rcsb/exdb/tests/testUniProtExtractor.py +77 -0
- rcsb/exdb/tree/TreeNodeListWorker.py +228 -0
- rcsb/exdb/tree/__init__.py +0 -0
- rcsb/exdb/utils/ObjectAdapterBase.py +22 -0
- rcsb/exdb/utils/ObjectExtractor.py +286 -0
- rcsb/exdb/utils/ObjectTransformer.py +124 -0
- rcsb/exdb/utils/ObjectUpdater.py +121 -0
- rcsb/exdb/utils/ObjectValidator.py +160 -0
- rcsb/exdb/utils/__init__.py +0 -0
- rcsb/exdb/wf/EntryInfoEtlWorkflow.py +71 -0
- rcsb/exdb/wf/GlycanEtlWorkflow.py +76 -0
- rcsb/exdb/wf/PubChemEtlWorkflow.py +240 -0
- rcsb/exdb/wf/__init__.py +0 -0
- rcsb_exdb-1.31.dist-info/METADATA +103 -0
- rcsb_exdb-1.31.dist-info/RECORD +98 -0
- rcsb_exdb-1.31.dist-info/WHEEL +4 -0
- rcsb_exdb-1.31.dist-info/licenses/LICENSE +201 -0
|
File without changes
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
##
|
|
2
|
+
# File: EntryInfoEtlWorkflow.py
|
|
3
|
+
# Date: 22-Sep-2021 jdw
|
|
4
|
+
#
|
|
5
|
+
# Workflow wrapper -- Entry-level annotations extracted from ExDB
|
|
6
|
+
#
|
|
7
|
+
# Updates:
|
|
8
|
+
# 1-Jun-2023 aae Don't back up resources to GitHub during cache update workflows
|
|
9
|
+
#
|
|
10
|
+
##
|
|
11
|
+
__docformat__ = "google en"
|
|
12
|
+
__author__ = "John Westbrook"
|
|
13
|
+
__email__ = "jwest@rcsb.rutgers.edu"
|
|
14
|
+
__license__ = "Apache 2.0"
|
|
15
|
+
|
|
16
|
+
import logging
|
|
17
|
+
import os
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
from rcsb.exdb.entry.EntryInfoProvider import EntryInfoProvider
|
|
21
|
+
from rcsb.utils.config.ConfigUtil import ConfigUtil
|
|
22
|
+
|
|
23
|
+
logger = logging.getLogger(__name__)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class EntryInfoEtlWorkflow(object):
|
|
27
|
+
def __init__(self, **kwargs):
|
|
28
|
+
"""Workflow wrapper -- extract selected entry-level annotations from ExDb
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
configPath (str, optional): path to configuration file (default: exdb-config-example.yml)
|
|
32
|
+
configName (str, optional): configuration section name (default: site_info_configuration)
|
|
33
|
+
cachePath (str, optional): path to cache directory (default: '.')
|
|
34
|
+
stashRemotePrefix (str, optional): file name prefix (channel) applied to remote stash file artifacts (default: None)
|
|
35
|
+
"""
|
|
36
|
+
configPath = kwargs.get("configPath", "exdb-config-example.yml")
|
|
37
|
+
self.__configName = kwargs.get("configName", "site_info_configuration")
|
|
38
|
+
mockTopPath = kwargs.get("mockTopPath", None)
|
|
39
|
+
self.__cfgOb = ConfigUtil(configPath=configPath, defaultSectionName=self.__configName, mockTopPath=mockTopPath)
|
|
40
|
+
#
|
|
41
|
+
self.__cachePath = kwargs.get("cachePath", ".")
|
|
42
|
+
self.__cachePath = os.path.abspath(self.__cachePath)
|
|
43
|
+
self.__stashRemotePrefix = kwargs.get("stashRemotePrefix", None)
|
|
44
|
+
#
|
|
45
|
+
self.__debugFlag = kwargs.get("debugFlag", False)
|
|
46
|
+
if self.__debugFlag:
|
|
47
|
+
logger.setLevel(logging.DEBUG)
|
|
48
|
+
#
|
|
49
|
+
|
|
50
|
+
def update(self, backup=True):
|
|
51
|
+
"""Update extraction of selected entry-level annotations from ExDB.
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
(bool): True for success or False otherwise
|
|
55
|
+
|
|
56
|
+
"""
|
|
57
|
+
try:
|
|
58
|
+
ok = False
|
|
59
|
+
eiP = EntryInfoProvider(cachePath=self.__cachePath, useCache=True)
|
|
60
|
+
eiP.update(self.__cfgOb, fmt="json", indent=3)
|
|
61
|
+
#
|
|
62
|
+
if backup:
|
|
63
|
+
ok = eiP.backup(self.__cfgOb, self.__configName, self.__stashRemotePrefix, useGit=False, useStash=True)
|
|
64
|
+
logger.info("Backup entry-level annotations (%r)", ok)
|
|
65
|
+
else:
|
|
66
|
+
ok = True
|
|
67
|
+
|
|
68
|
+
except Exception as e:
|
|
69
|
+
logger.exception("Failing with %s", str(e))
|
|
70
|
+
#
|
|
71
|
+
return ok
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
##
|
|
2
|
+
# File: GlycanEtlWorkflow.py
|
|
3
|
+
# Date: 30-Jun-2021 jdw
|
|
4
|
+
#
|
|
5
|
+
# Workflow wrapper -- Glycan ETL utilities
|
|
6
|
+
#
|
|
7
|
+
# Updates:
|
|
8
|
+
# 1-Jun-2023 aae Don't back up resources to GitHub during cache update workflows
|
|
9
|
+
#
|
|
10
|
+
##
|
|
11
|
+
__docformat__ = "google en"
|
|
12
|
+
__author__ = "John Westbrook"
|
|
13
|
+
__email__ = "jwest@rcsb.rutgers.edu"
|
|
14
|
+
__license__ = "Apache 2.0"
|
|
15
|
+
|
|
16
|
+
import logging
|
|
17
|
+
import os
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
from rcsb.exdb.branch.GlycanProvider import GlycanProvider
|
|
21
|
+
from rcsb.utils.config.ConfigUtil import ConfigUtil
|
|
22
|
+
|
|
23
|
+
logger = logging.getLogger(__name__)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class GlycanEtlWorkflow(object):
|
|
27
|
+
def __init__(self, **kwargs):
|
|
28
|
+
"""Workflow wrapper -- Glycan mapping ETL utilities
|
|
29
|
+
|
|
30
|
+
Args:
|
|
31
|
+
configPath (str, optional): path to configuration file (default: exdb-config-example.yml)
|
|
32
|
+
configName (str, optional): configuration section name (default: site_info_configuration)
|
|
33
|
+
cachePath (str, optional): path to cache directory (default: '.')
|
|
34
|
+
stashRemotePrefix (str, optional): file name prefix (channel) applied to remote stash file artifacts (default: None)
|
|
35
|
+
"""
|
|
36
|
+
configPath = kwargs.get("configPath", "exdb-config-example.yml")
|
|
37
|
+
self.__configName = kwargs.get("configName", "site_info_configuration")
|
|
38
|
+
mockTopPath = kwargs.get("mockTopPath", None)
|
|
39
|
+
self.__cfgOb = ConfigUtil(configPath=configPath, defaultSectionName=self.__configName, mockTopPath=mockTopPath)
|
|
40
|
+
#
|
|
41
|
+
self.__cachePath = kwargs.get("cachePath", ".")
|
|
42
|
+
self.__cachePath = os.path.abspath(self.__cachePath)
|
|
43
|
+
self.__stashRemotePrefix = kwargs.get("stashRemotePrefix", None)
|
|
44
|
+
#
|
|
45
|
+
self.__debugFlag = kwargs.get("debugFlag", False)
|
|
46
|
+
if self.__debugFlag:
|
|
47
|
+
logger.setLevel(logging.DEBUG)
|
|
48
|
+
#
|
|
49
|
+
|
|
50
|
+
def updateMatchedIndex(self, backup=True):
|
|
51
|
+
"""Update Glycan correspondence index.
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
(bool): True for success or False otherwise
|
|
55
|
+
|
|
56
|
+
"""
|
|
57
|
+
try:
|
|
58
|
+
ok1 = ok2 = False
|
|
59
|
+
gP = GlycanProvider(cachePath=self.__cachePath, useCache=True)
|
|
60
|
+
ok = gP.restore(self.__cfgOb, self.__configName, self.__stashRemotePrefix, useStash=True, useGit=True)
|
|
61
|
+
logger.info("Restore glycan matched identifiers status (%r)", ok)
|
|
62
|
+
|
|
63
|
+
ok1 = gP.update(self.__cfgOb, fmt="json", indent=3)
|
|
64
|
+
riD = gP.getIdentifiers()
|
|
65
|
+
logger.info("Matched glycan identifiers (%d)", len(riD))
|
|
66
|
+
#
|
|
67
|
+
if backup:
|
|
68
|
+
ok2 = gP.backup(self.__cfgOb, self.__configName, self.__stashRemotePrefix, useGit=False, useStash=True)
|
|
69
|
+
logger.info("Backup matched glycan identifiers (%r)", ok2)
|
|
70
|
+
else:
|
|
71
|
+
ok2 = True
|
|
72
|
+
|
|
73
|
+
except Exception as e:
|
|
74
|
+
logger.exception("Failing with %s", str(e))
|
|
75
|
+
#
|
|
76
|
+
return ok1 and ok2
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
##
|
|
2
|
+
# File: PubChemEtlWorkflow.py
|
|
3
|
+
# Date: 28-Jul-2020 jdw
|
|
4
|
+
#
|
|
5
|
+
# Workflow wrapper -- PubChem ETL utilities
|
|
6
|
+
#
|
|
7
|
+
# Updates:
|
|
8
|
+
# 13-Mar-2023 aae Updates to use multiprocess count, disable git stash testing
|
|
9
|
+
# 1-Jun-2023 aae Don't back up resources to GitHub during cache update workflows
|
|
10
|
+
##
|
|
11
|
+
__docformat__ = "google en"
|
|
12
|
+
__author__ = "John Westbrook"
|
|
13
|
+
__email__ = "jwest@rcsb.rutgers.edu"
|
|
14
|
+
__license__ = "Apache 2.0"
|
|
15
|
+
|
|
16
|
+
import logging
|
|
17
|
+
import os
|
|
18
|
+
import time
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
from rcsb.exdb.chemref.PubChemEtlWrapper import PubChemEtlWrapper
|
|
22
|
+
from rcsb.utils.config.ConfigUtil import ConfigUtil
|
|
23
|
+
|
|
24
|
+
logger = logging.getLogger(__name__)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class PubChemEtlWorkflow(object):
|
|
28
|
+
def __init__(self, **kwargs):
|
|
29
|
+
"""Workflow wrapper -- PubChem ETL utilities
|
|
30
|
+
|
|
31
|
+
Args:
|
|
32
|
+
configPath (str, optional): path to configuration file (default: exdb-config-example.yml)
|
|
33
|
+
configName (str, optional): configuration section name (default: site_info_configuration)
|
|
34
|
+
cachePath (str, optional): path to cache directory (default: '.')
|
|
35
|
+
stashRemotePrefix (str, optional): file name prefix (channel) applied to remote stash file artifacts (default: None)
|
|
36
|
+
"""
|
|
37
|
+
configPath = kwargs.get("configPath", "exdb-config-example.yml")
|
|
38
|
+
self.__configName = kwargs.get("configName", "site_info_configuration")
|
|
39
|
+
mockTopPath = kwargs.get("mockTopPath", None)
|
|
40
|
+
self.__cfgOb = ConfigUtil(configPath=configPath, defaultSectionName=self.__configName, mockTopPath=mockTopPath)
|
|
41
|
+
#
|
|
42
|
+
self.__cachePath = kwargs.get("cachePath", ".")
|
|
43
|
+
self.__cachePath = os.path.abspath(self.__cachePath)
|
|
44
|
+
self.__stashRemotePrefix = kwargs.get("stashRemotePrefix", None)
|
|
45
|
+
#
|
|
46
|
+
self.__debugFlag = kwargs.get("debugFlag", False)
|
|
47
|
+
if self.__debugFlag:
|
|
48
|
+
logger.setLevel(logging.DEBUG)
|
|
49
|
+
#
|
|
50
|
+
|
|
51
|
+
def dump(self, **kwargs):
|
|
52
|
+
"""Dump the current object store of PubChem correspondences and data.
|
|
53
|
+
|
|
54
|
+
Args:
|
|
55
|
+
useStash (bool): should stash (Buildlocker) be updated? (default: True)
|
|
56
|
+
useGit (bool): should stash (GitHub) be updated? (default: True)
|
|
57
|
+
|
|
58
|
+
Returns:
|
|
59
|
+
(bool): True for success or False otherwise
|
|
60
|
+
|
|
61
|
+
"""
|
|
62
|
+
ok1 = ok2 = ok3 = ok4 = False
|
|
63
|
+
try:
|
|
64
|
+
useStash = kwargs.get("useStash", True)
|
|
65
|
+
useGit = kwargs.get("useGit", True) # Revisit stashing in GitHub as file timestamp will always cause a commit
|
|
66
|
+
# -- Update local chemical indices and create PubChem mapping index ---
|
|
67
|
+
pcewP = PubChemEtlWrapper(self.__cfgOb, self.__cachePath, stashRemotePrefix=self.__stashRemotePrefix)
|
|
68
|
+
sTime = time.time()
|
|
69
|
+
logger.info("Dumping index data")
|
|
70
|
+
ok1 = pcewP.dump(contentType="index")
|
|
71
|
+
eTime = time.time()
|
|
72
|
+
logger.info("Dumping index data done in (%.4f seconds)", eTime - sTime)
|
|
73
|
+
if useGit or useStash:
|
|
74
|
+
sTime = time.time()
|
|
75
|
+
logger.info("Stashing index data")
|
|
76
|
+
ok2 = pcewP.toStash(contentType="index", useStash=useStash, useGit=useGit)
|
|
77
|
+
eTime = time.time()
|
|
78
|
+
logger.info("Stashing index data done in (%.4f seconds)", eTime - sTime)
|
|
79
|
+
else:
|
|
80
|
+
ok2 = True
|
|
81
|
+
|
|
82
|
+
sTime = time.time()
|
|
83
|
+
logger.info("Dumping reference data")
|
|
84
|
+
ok3 = pcewP.dump(contentType="data")
|
|
85
|
+
if useGit or useStash:
|
|
86
|
+
sTime = time.time()
|
|
87
|
+
logger.info("Stashing reference data")
|
|
88
|
+
ok4 = pcewP.toStash(contentType="data", useStash=useStash, useGit=useGit)
|
|
89
|
+
eTime = time.time()
|
|
90
|
+
logger.info("Stashing reference data done in (%.4f seconds)", eTime - sTime)
|
|
91
|
+
else:
|
|
92
|
+
ok4 = True
|
|
93
|
+
eTime = time.time()
|
|
94
|
+
logger.info("Dumping data done in (%.4f seconds)", eTime - sTime)
|
|
95
|
+
except Exception as e:
|
|
96
|
+
logger.exception("Failing with %s", str(e))
|
|
97
|
+
return ok1 and ok2 and ok3 and ok4
|
|
98
|
+
|
|
99
|
+
def stash(self):
|
|
100
|
+
"""Stash the current cache files containing PubChem correspondences and data."""
|
|
101
|
+
ok1 = ok2 = False
|
|
102
|
+
try:
|
|
103
|
+
# -- Update local chemical indices and create PubChem mapping index ---
|
|
104
|
+
pcewP = PubChemEtlWrapper(self.__cfgOb, self.__cachePath, stashRemotePrefix=self.__stashRemotePrefix)
|
|
105
|
+
sTime = time.time()
|
|
106
|
+
ok1 = pcewP. toStash(contentType="index")
|
|
107
|
+
eTime = time.time()
|
|
108
|
+
logger.info("Stashing index data done in (%.4f seconds)", eTime - sTime)
|
|
109
|
+
|
|
110
|
+
sTime = time.time()
|
|
111
|
+
logger.info("Stashing reference data")
|
|
112
|
+
ok2 = pcewP.toStash(contentType="data")
|
|
113
|
+
eTime = time.time()
|
|
114
|
+
logger.info("Stashing data done in (%.4f seconds)", eTime - sTime)
|
|
115
|
+
except Exception as e:
|
|
116
|
+
logger.exception("Failing with %s", str(e))
|
|
117
|
+
return ok1 and ok2
|
|
118
|
+
|
|
119
|
+
def restore(self):
|
|
120
|
+
"""Restore the current object store of PubChem correspondences and data from stashed data sets."""
|
|
121
|
+
ok1 = ok2 = False
|
|
122
|
+
numObjData = numObjIndex = 0
|
|
123
|
+
try:
|
|
124
|
+
# -- Update local chemical indices and create PubChem mapping index ---
|
|
125
|
+
pcewP = PubChemEtlWrapper(self.__cfgOb, self.__cachePath, stashRemotePrefix=self.__stashRemotePrefix)
|
|
126
|
+
sTime = time.time()
|
|
127
|
+
logger.info("Restoring stashed index data")
|
|
128
|
+
ok1 = pcewP.fromStash(contentType="index")
|
|
129
|
+
numObjIndex = pcewP.reloadDump(contentType="index")
|
|
130
|
+
eTime = time.time()
|
|
131
|
+
logger.info("Restoring index data done in (%.4f seconds)", eTime - sTime)
|
|
132
|
+
|
|
133
|
+
sTime = time.time()
|
|
134
|
+
logger.info("Restoring reference data")
|
|
135
|
+
ok2 = pcewP.fromStash(contentType="data")
|
|
136
|
+
numObjData = pcewP.reloadDump(contentType="data")
|
|
137
|
+
eTime = time.time()
|
|
138
|
+
logger.info("Restoring data done in (%.4f seconds)", eTime - sTime)
|
|
139
|
+
except Exception as e:
|
|
140
|
+
logger.exception("Failing with %s", str(e))
|
|
141
|
+
return ok1 and ok2 and numObjData > 1 and numObjIndex > 1
|
|
142
|
+
|
|
143
|
+
def updateMatchedIndex(self, **kwargs):
|
|
144
|
+
"""Update chemical indices and correspondence matches.
|
|
145
|
+
|
|
146
|
+
Args:
|
|
147
|
+
ccUrlTarget (str, optional): target url for chemical component dictionary resource file (default: None=all public)
|
|
148
|
+
birdUrlTarget (str, optional): target url for bird dictionary resource file (cc format) (default: None=all public)
|
|
149
|
+
ccFileNamePrefix (str, optional): index file prefix (default: full)
|
|
150
|
+
rebuildChemIndices (bool, optional): rebuild indices from source (default: False)
|
|
151
|
+
exportPath (str, optional): path to export raw PubChem search results (default: None)
|
|
152
|
+
numProcChemComp (int, optional): number processors to include in multiprocessing mode (default: 8)
|
|
153
|
+
numProc (int, optional): number processors to include in multiprocessing mode (default: 2)
|
|
154
|
+
useStash (bool, optional): should stash (Buildlocker) be updated? (default: True)
|
|
155
|
+
useGit (bool, optional): should stash (GitHub) be updated? (default: True)
|
|
156
|
+
|
|
157
|
+
Returns:
|
|
158
|
+
(bool): True for success or False otherwise
|
|
159
|
+
|
|
160
|
+
"""
|
|
161
|
+
try:
|
|
162
|
+
ok1 = ok2 = ok3 = False
|
|
163
|
+
# -- Update local chemical indices and create PubChem mapping index ---
|
|
164
|
+
ccUrlTarget = kwargs.get("ccUrlTarget", None)
|
|
165
|
+
birdUrlTarget = kwargs.get("birdUrlTarget", None)
|
|
166
|
+
ccFileNamePrefix = kwargs.get("ccFileNamePrefix", "cc-full")
|
|
167
|
+
numProcChemComp = kwargs.get("numProcChemComp", 8)
|
|
168
|
+
numProc = kwargs.get("numProc", 4)
|
|
169
|
+
rebuildChemIndices = kwargs.get("rebuildChemIndices", True)
|
|
170
|
+
exportPath = kwargs.get("exportPath", None)
|
|
171
|
+
useStash = kwargs.get("useStash", True)
|
|
172
|
+
useGit = kwargs.get("useGit", False)
|
|
173
|
+
#
|
|
174
|
+
pcewP = PubChemEtlWrapper(self.__cfgOb, self.__cachePath, stashRemotePrefix=self.__stashRemotePrefix)
|
|
175
|
+
ok1 = pcewP.updateIndex(
|
|
176
|
+
ccUrlTarget=ccUrlTarget,
|
|
177
|
+
birdUrlTarget=birdUrlTarget,
|
|
178
|
+
ccFileNamePrefix=ccFileNamePrefix,
|
|
179
|
+
exportPath=exportPath,
|
|
180
|
+
rebuildChemIndices=rebuildChemIndices,
|
|
181
|
+
numProcChemComp=numProcChemComp,
|
|
182
|
+
numProc=numProc,
|
|
183
|
+
)
|
|
184
|
+
logger.info("updateIndex completed with status %r", ok1)
|
|
185
|
+
ok2 = pcewP.dump(contentType="index")
|
|
186
|
+
logger.info("dump completed with status %r", ok2)
|
|
187
|
+
if useGit or useStash:
|
|
188
|
+
ok3 = pcewP.toStash(contentType="index", useStash=useStash, useGit=useGit)
|
|
189
|
+
logger.info("toStash completed with status %r", ok3)
|
|
190
|
+
else:
|
|
191
|
+
ok3 = True
|
|
192
|
+
except Exception as e:
|
|
193
|
+
logger.exception("Failing with %s", str(e))
|
|
194
|
+
#
|
|
195
|
+
return ok1 and ok2 and ok3
|
|
196
|
+
|
|
197
|
+
def updateMatchedData(self, **kwargs):
|
|
198
|
+
"""Update PubChem annotation data for matched correspondences. Generate and stash
|
|
199
|
+
related identifiers for corresponding components and BIRD chemical definitions.
|
|
200
|
+
|
|
201
|
+
Args:
|
|
202
|
+
numProc(int): number processors to include in multiprocessing mode (default: 2)
|
|
203
|
+
useStash(bool): should stash (Buildlocker) be updated? (default: True)
|
|
204
|
+
useGit(bool): should stash (GitHub) be updated? (default: True)
|
|
205
|
+
|
|
206
|
+
Returns:
|
|
207
|
+
(bool): True for success or False otherwise
|
|
208
|
+
"""
|
|
209
|
+
try:
|
|
210
|
+
ok1 = ok2 = ok3 = ok4 = ok5 = ok6 = False
|
|
211
|
+
# --
|
|
212
|
+
numProc = kwargs.get("numProc", 4)
|
|
213
|
+
useStash = kwargs.get("useStash", True)
|
|
214
|
+
useGit = kwargs.get("useGit", False)
|
|
215
|
+
#
|
|
216
|
+
pcewP = PubChemEtlWrapper(self.__cfgOb, self.__cachePath, stashRemotePrefix=self.__stashRemotePrefix)
|
|
217
|
+
ok1 = pcewP.updateMatchedData(numProc=numProc)
|
|
218
|
+
logger.info("PubChemEtlWrapper.updateMatchedData completed with status %r", ok1)
|
|
219
|
+
ok2 = pcewP.dump(contentType="data")
|
|
220
|
+
logger.info("PubChemEtlWrapper.dump 'data' completed with status %r", ok2)
|
|
221
|
+
if useGit or useStash:
|
|
222
|
+
ok3 = pcewP.toStash(contentType="data", useStash=useStash, useGit=useGit)
|
|
223
|
+
logger.info("PubChemEtlWrapper.toStash 'data' completed with status %r", ok3)
|
|
224
|
+
else:
|
|
225
|
+
ok3 = True
|
|
226
|
+
#
|
|
227
|
+
ok4 = pcewP.updateIdentifiers()
|
|
228
|
+
logger.info("PubChemEtlWrapper.updateIdentifiers completed with status %r", ok4)
|
|
229
|
+
ok5 = pcewP.dump(contentType="identifiers")
|
|
230
|
+
logger.info("PubChemEtlWrapper.dump 'identifiers' completed with status %r", ok5)
|
|
231
|
+
if useGit or useStash:
|
|
232
|
+
ok6 = pcewP.toStash(contentType="identifiers", useStash=useStash, useGit=useGit)
|
|
233
|
+
logger.info("PubChemEtlWrapper.toStash 'identifiers' completed with status %r", ok6)
|
|
234
|
+
else:
|
|
235
|
+
ok6 = True
|
|
236
|
+
#
|
|
237
|
+
except Exception as e:
|
|
238
|
+
logger.exception("Failing with %s", str(e))
|
|
239
|
+
#
|
|
240
|
+
return ok1 and ok2 and ok3 and ok4 and ok5 and ok6
|
rcsb/exdb/wf/__init__.py
ADDED
|
File without changes
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rcsb.exdb
|
|
3
|
+
Version: 1.31
|
|
4
|
+
Summary: RCSB Python ExDB data extraction and loading workflows
|
|
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
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Natural Language :: English
|
|
13
|
+
Classifier: Programming Language :: Python
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Requires-Python: >=3.9
|
|
17
|
+
Requires-Dist: jsonschema>=2.6.0
|
|
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
|
|
41
|
+
|
|
42
|
+
# py-rcsb_exdb
|
|
43
|
+
|
|
44
|
+
[](https://dev.azure.com/rcsb/RCSB%20PDB%20Python%20Projects/_build/latest?definitionId=18&branchName=master)
|
|
45
|
+
|
|
46
|
+
RCSB exchange database extraction and loading workflow tools
|
|
47
|
+
|
|
48
|
+
## Introduction
|
|
49
|
+
|
|
50
|
+
This module contains a collection of utility classes for extracting data from
|
|
51
|
+
the RCSB exchange database and subsequently reloading processed or integrated data.
|
|
52
|
+
|
|
53
|
+
### Installation
|
|
54
|
+
|
|
55
|
+
Download the library source software from the project repository:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
|
|
59
|
+
git clone --recurse-submodules https://github.com/rcsb/py-rcsb_exdb.git
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Optionally, run test suite (Python versions 2.7 and 3.7) using
|
|
64
|
+
[tox](http://tox.readthedocs.io/en/latest/example/platform.html):
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
tox
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Installation is via the program [pip](https://pypi.python.org/pypi/pip). To run tests
|
|
71
|
+
from the source tree, the package must be installed in editable mode (i.e. -e):
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pip install -e . --extra-index-url https://pypi.anaconda.org/OpenEye/simple
|
|
75
|
+
|
|
76
|
+
# or using uv
|
|
77
|
+
|
|
78
|
+
uv pip install -e .
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### Installing in Ubuntu Linux (tested in 18.04)
|
|
82
|
+
|
|
83
|
+
You will need a few packages, before `pip install .` can work:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
|
|
87
|
+
sudo apt install flex bison
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Installing on macOS
|
|
92
|
+
|
|
93
|
+
To use and develop this package on macOS requires a number of packages that are not
|
|
94
|
+
distributed as part of the base macOS operating system.
|
|
95
|
+
The following steps provide one approach to creating the development environment for this
|
|
96
|
+
package. First, install the Apple [XCode](https://developer.apple.com/xcode/) package and associate command-line tools.
|
|
97
|
+
This will provide essential compilers and supporting tools. The [HomeBrew](https://brew.sh/) package
|
|
98
|
+
manager provides further access to a variety of common open source services and tools.
|
|
99
|
+
Follow the instructions provided by at the [HomeBrew](https://brew.sh/) site to
|
|
100
|
+
install this system. Once HomeBrew is installed, you can further install the
|
|
101
|
+
[MongoDB](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/) packages which
|
|
102
|
+
are required to support the ExDB tools. HomeBrew also provides a variety of options for
|
|
103
|
+
managing a [Python virtual environments](https://gist.github.com/Geoyi/f55ed54d24cc9ff1c14bd95fac21c042).
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
rcsb/__init__.py,sha256=ED6jHcYiuYpr_0vjGz0zx2lrrmJT9sDJCzIljoDfmlM,65
|
|
2
|
+
rcsb/exdb/__init__.py,sha256=ED6jHcYiuYpr_0vjGz0zx2lrrmJT9sDJCzIljoDfmlM,65
|
|
3
|
+
rcsb/exdb/branch/BranchedEntityExtractor.py,sha256=et-rQWTMbvzFcOW3PPKeGLdvOzyCxwQo1p_y3LJqjJo,2645
|
|
4
|
+
rcsb/exdb/branch/GlycanProvider.py,sha256=D5jhSGKc6pembx-eQX2zQcEULffQ1yrkgVOzPDclhP8,4000
|
|
5
|
+
rcsb/exdb/branch/GlycanUtils.py,sha256=lovKiRrYwmVxk4VItrrUj0D6wQ_BIOojiM5dgNdY0g4,4507
|
|
6
|
+
rcsb/exdb/branch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
rcsb/exdb/chemref/ChemRefEtlWorker.py,sha256=pGVsCJt6gzIWAGRRUULiyvaFul5LHx5UfFBUbv6B6lI,5439
|
|
8
|
+
rcsb/exdb/chemref/ChemRefExtractor.py,sha256=D-m8oga4PtntTTkpxc9k8gwMbn16vkGKq0BrDicUZaM,2580
|
|
9
|
+
rcsb/exdb/chemref/ChemRefMappingProvider.py,sha256=UMrJtQHTThMBFhV1ZzDAwz6-ZXU4VPn2vemNzAPDPW0,5290
|
|
10
|
+
rcsb/exdb/chemref/PubChemDataCacheProvider.py,sha256=g1O9FoDbqsLqET_D-oFxqiOf50bIpBSnSwjg4OJMqNc,15479
|
|
11
|
+
rcsb/exdb/chemref/PubChemEtlWrapper.py,sha256=uvGsNH_vTdJg11n2iftR5mq5UVKuM2GbgtotsR5kYSQ,11699
|
|
12
|
+
rcsb/exdb/chemref/PubChemIndexCacheProvider.py,sha256=5SRTA437XVuCawJDT4JT3hV9zDkNk0peOpRJNKFlkMA,29299
|
|
13
|
+
rcsb/exdb/chemref/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
+
rcsb/exdb/citation/CitationAdapter.py,sha256=rgzzv2BChlv38kO-QO67KHucvAXT-HaQbYz5coYHke4,3501
|
|
15
|
+
rcsb/exdb/citation/CitationExtractor.py,sha256=tPJv9UJlUjNVwHnOdfZoOUlkFWMQHqUEYNpbHnCNTHM,7574
|
|
16
|
+
rcsb/exdb/citation/CitationUtils.py,sha256=4W1_-HgblZ4fk_rC5mzWinwZqDujV8K-QZxOL6e0ldk,1487
|
|
17
|
+
rcsb/exdb/citation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
+
rcsb/exdb/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
+
rcsb/exdb/entry/EntryInfoProvider.py,sha256=GE6ix6NjyUG0Q4RRTyzd4jWGdDp4Vrbbqh9XNZTZjm8,5095
|
|
20
|
+
rcsb/exdb/entry/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
+
rcsb/exdb/examples-seq/EntityInstanceExtractor.py,sha256=cAZmmijRhtrYnH4lclj-o_Xf2Yel8RYWJG5DOj2SB2w,28612
|
|
22
|
+
rcsb/exdb/examples-seq/EntityPolymerExtractor.py,sha256=zGxLTa9ahAKwgBVxUrhDErZjmSSqmAbNQy1QEJOW7zg,25846
|
|
23
|
+
rcsb/exdb/examples-seq/EntityPolymerExtractorFullTests.py,sha256=S15z0nd-zIakUU1UZFYgbO5vfD6-dGLkSAb-AiNliDo,7460
|
|
24
|
+
rcsb/exdb/examples-seq/ReferenceSequenceAssignmentUpdater.py,sha256=B73sF0uvPZjH15FNk6QvsFBGbKXVVWE1rFXJpjM8FaY,21678
|
|
25
|
+
rcsb/exdb/examples-seq/ReferenceSequenceUtils.py,sha256=xvNrtf2Y5I_cUwIHXiTzOUi8ChAGGwdqP4wiBDBdDXg,4779
|
|
26
|
+
rcsb/exdb/examples-seq/ReferenceSequenceUtilsTests.py,sha256=tOidiXKHm9V6K6yghcnQc03OgJBpnsEqjuEupxwvT1M,3880
|
|
27
|
+
rcsb/exdb/examples-seq/exampleObjectExtractor.py,sha256=1mawRGdX0Faot0Mtmu47D6OkHfPPZ6cV9zJLu40llc8,3908
|
|
28
|
+
rcsb/exdb/examples-seq/fixtureEntityPolymerExtractor.py,sha256=neBxsKl-gr85y6HC4DndJkO_2WkNkcEiiRlM98OLZPY,2918
|
|
29
|
+
rcsb/exdb/examples-seq/testEntityInstanceExtractor.py,sha256=aenQytsaG59vQws_juxSv5O_UWEx7QT1mzidpdG87vc,6834
|
|
30
|
+
rcsb/exdb/examples-seq/testEntityPolymerExtractor.py,sha256=p0yPGTBBG5mlHPobZ9Xol3LpOgxorGZejLcsz04lfJw,7305
|
|
31
|
+
rcsb/exdb/examples-seq/testReferenceSequenceAssignmentUpdater.py,sha256=V1wDTY4NSfafRjGQqhpHTKXQQkUdQajFnu9XmN0XL3E,2906
|
|
32
|
+
rcsb/exdb/examples-seq/testReferenceSequenceUtils.py,sha256=JIpQsyVfU9sx-50ludlDIWGQ2414o_4pI1JwMFyoBzU,3639
|
|
33
|
+
rcsb/exdb/seq/AnnotationExtractor.py,sha256=8iCE8LJR7QH8ilSWDkpKYQSfVuSvorlnM9VHIIYcRoY,2741
|
|
34
|
+
rcsb/exdb/seq/LigandNeighborMappingExtractor.py,sha256=PpRWunQHZ6j8s6MCu1tuY59cocEoUvM3bIUcsvQ-Ijo,3431
|
|
35
|
+
rcsb/exdb/seq/LigandNeighborMappingProvider.py,sha256=vzy2tJGB6IgDNgSHyzGU3TuTOV9cfWI_eLRkO3apQtk,3741
|
|
36
|
+
rcsb/exdb/seq/PolymerEntityExtractor.py,sha256=YPyK0F90mjHCBc_vqZdAvBcDecAcOHUax4TxGToEzmg,15004
|
|
37
|
+
rcsb/exdb/seq/ReferenceSequenceAnnotationAdapter.py,sha256=VXStOXoZcbFGYOm5eYiqn599BNksG87h3kzK_aQz2Xc,31160
|
|
38
|
+
rcsb/exdb/seq/ReferenceSequenceAnnotationProvider.py,sha256=2fbNeH1VkxEPpny0lfaTJ-UGEXQjxTdQbUoeiTRbJuU,9560
|
|
39
|
+
rcsb/exdb/seq/ReferenceSequenceAssignmentAdapter.py,sha256=P-t4w4uvnx4qv_vBAJwKuBGjo6wOIYZ8IKzGaw2bCQ8,25935
|
|
40
|
+
rcsb/exdb/seq/ReferenceSequenceAssignmentProvider.py,sha256=Y0wK9SsRNfZvFfyWDCEP_fXgYEMKu7XDT4eNJGyxyyU,18181
|
|
41
|
+
rcsb/exdb/seq/ReferenceSequenceCacheProvider.py,sha256=R0D_J65B7RtUuJFbJ4h787VAMi_BE3i-dH1pm-Em_v0,19497
|
|
42
|
+
rcsb/exdb/seq/TaxonomyExtractor.py,sha256=I7jsb5Kanrnh4X-znl9kZPZMJ7o2dp4fsnp2IWel4rs,2315
|
|
43
|
+
rcsb/exdb/seq/UniProtCoreEtlWorker.py,sha256=-fEojXF3lAJ1tbMsPIxT9In6ooiPThuKSoIRQ0YlZ1s,7590
|
|
44
|
+
rcsb/exdb/seq/UniProtExtractor.py,sha256=pR_A9e82YvbQ813M8rNPu1bCPOHMjGnCqJmLDMM23Qo,2695
|
|
45
|
+
rcsb/exdb/seq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
|
+
rcsb/exdb/tests/TEST-EXDB-CLI-EXEC.sh,sha256=DWiM-DeyG_GFRki4WWSIl41ErYVxrp8t0lPypizterc,778
|
|
47
|
+
rcsb/exdb/tests/TEST-EXDB-CLI-REFSEQ-EXEC.sh,sha256=CPQ8rRpfBVIl5r6IFt2t-P4aBBIWUo4NioR7M0LM6Nc,769
|
|
48
|
+
rcsb/exdb/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
+
rcsb/exdb/tests/fixtureDictMethodResourceProvider.py,sha256=h_iRfmZR9UG0nFYnVoPDtAE3VPpyrnwJRXbrdfeh0gY,3999
|
|
50
|
+
rcsb/exdb/tests/fixturePdbxLoader.py,sha256=wfXyJ4k2Z-85J6sCSArf-eAuYQVbsTilwWmnm8cNPa4,10167
|
|
51
|
+
rcsb/exdb/tests/testAnnotationExtractor.py,sha256=rpeB4RtOcYD27S3ZwnePHHSaac2j4bmvqfu-wJ5254U,2657
|
|
52
|
+
rcsb/exdb/tests/testBranchedEntityExtractor.py,sha256=efchTzuQylD7L7Kc0j-rEvBeLjnPzvSWVLA8I7JIBys,2936
|
|
53
|
+
rcsb/exdb/tests/testChemRefLoader.py,sha256=pZqWiSIQZ9bfZMJplw_ym9swCe0N6rjq63mfcqWtNO0,3696
|
|
54
|
+
rcsb/exdb/tests/testChemRefMappingProvider.py,sha256=wxypTg-Y5DsAksT4a2x2yh1_JCf-7HqP9z0jKDmNcNg,3353
|
|
55
|
+
rcsb/exdb/tests/testCitationAdapter.py,sha256=ZlvG6aTHzKVnREj3LXQd1iniwC-KXR45vbyzBgdoiu8,3625
|
|
56
|
+
rcsb/exdb/tests/testCitationExtractor.py,sha256=7Xg75JHtnZkfrFnZVNggLRVFeRNW6V5O0tGse40C9fc,3141
|
|
57
|
+
rcsb/exdb/tests/testCitationUtils.py,sha256=lCn5n_49vAnQIaUd4fSY-sQ6Ld5r5G32WRaprErryo8,3064
|
|
58
|
+
rcsb/exdb/tests/testEntryInfoEtlWorkflow.py,sha256=TutfC949U0nDkFbmMdXo_MgbxMfvll4O-5C7N8Qj3TA,2340
|
|
59
|
+
rcsb/exdb/tests/testEntryInfoProvider.py,sha256=2Ti-o2A8QlB0reJHFqXHjyrvehlLRFtycFhCTBTY_d0,3360
|
|
60
|
+
rcsb/exdb/tests/testGlycanEtlWorkflow.py,sha256=Olml-71jiWAGOU-NQNHiRSPrew7RJtLK3R6u6WTlUSc,2295
|
|
61
|
+
rcsb/exdb/tests/testGlycanProvider.py,sha256=n15qTncV289o-E5J_AsizPW1tgeCHZH8A7_qXG2Afr4,3201
|
|
62
|
+
rcsb/exdb/tests/testGlycanUtils.py,sha256=h59g_iuEEzhcWRW50VdYlRHw3UrpqiRYgJZKDU4C9Wc,1953
|
|
63
|
+
rcsb/exdb/tests/testLigandNeighborMappingProvider.py,sha256=JjY4y5a4ZuZPJ4gdOxIwRLVz5U6F0f0K963OeDZmFAM,3144
|
|
64
|
+
rcsb/exdb/tests/testObjectExtractor.py,sha256=aHP6q9UQqDFd44u8KNQrnfTWy8Rf9dQ8FnHhUHAmqq0,14122
|
|
65
|
+
rcsb/exdb/tests/testObjectTransformer.py,sha256=7fPWTfN4G6wFj6MZkw_L0dtONMsVBlBCzoHvxzrgsUo,2944
|
|
66
|
+
rcsb/exdb/tests/testObjectUpdater.py,sha256=Kq-Mk4ZbD-eMoIsR3zGJvamFq-OEX4tFXyPB9FePWxc,4950
|
|
67
|
+
rcsb/exdb/tests/testPolymerEntityExtractor.py,sha256=RTsEWZDarrtdVn2Xy7fbPIrZTw7Nd9VJ21aBBr3QFU0,3536
|
|
68
|
+
rcsb/exdb/tests/testPubChemDataCacheProvider.py,sha256=K2Fg4Bibtdg9Z9zLwwJqZDa-XlIKHiSb9A6ewIa2-sM,4679
|
|
69
|
+
rcsb/exdb/tests/testPubChemEtlWorkflow.py,sha256=vENOnc7D-EukdjElvhsZqTL0h5N6alPso4Gn3rDNMXg,5187
|
|
70
|
+
rcsb/exdb/tests/testPubChemEtlWrapper.py,sha256=yGg0HvtYvFTvEEK9OsqvSSRVzCIG90UPEK_Lh7SifAk,6511
|
|
71
|
+
rcsb/exdb/tests/testPubChemIndexCacheProvider.py,sha256=KVPfgnMdp7V57LnuwLLkbcZ-DjGHdEx4q0V1RAyOCXw,4947
|
|
72
|
+
rcsb/exdb/tests/testReferenceSequenceAnnotationAdapter.py,sha256=hABmh743REIhFe3vP_dKr0uUvUH6-Ci71fpHGUIzt6E,4495
|
|
73
|
+
rcsb/exdb/tests/testReferenceSequenceAssignmentAdapter.py,sha256=g9-t6-TMZNqxtjgZy9cYCXA19ZkOfjb0un7o8sasuAA,4897
|
|
74
|
+
rcsb/exdb/tests/testReferenceSequenceAssignmentAdapterValidate.py,sha256=p3wPa-9_Il9eHP3fQGI1ag2FE0mvuOdeGu2uet6APOU,5005
|
|
75
|
+
rcsb/exdb/tests/testReferenceSequenceAssignmentProvider.py,sha256=6qzk-xt0QVrX4IC8Ml6HnDzFcee14vIUs14AKAWFg9w,4631
|
|
76
|
+
rcsb/exdb/tests/testReferenceSequenceCacheProvider.py,sha256=thQnpv1dxnL46PfZS6alhyS2N_rnATRmvh8SU9HJHAM,3469
|
|
77
|
+
rcsb/exdb/tests/testTaxonomyExtractor.py,sha256=NZv0UFBnnRUxQN3gzPIruOqyJEG6F81avI8tQu9ILao,2536
|
|
78
|
+
rcsb/exdb/tests/testTreeNodeListWorker.py,sha256=PiVaSOG0140fonhHsp0yxft3KlYaBzDb2hwmPKZxy5Y,3653
|
|
79
|
+
rcsb/exdb/tests/testUniProtCoreEtlWorker.py,sha256=8LyJjeMiKkGSYZ1641xpO1clKSJSESWrHywrNqMeJ9o,3403
|
|
80
|
+
rcsb/exdb/tests/testUniProtExtractor.py,sha256=jNNAI1GIedEbZhpdG1C9CjuZskUwxFg8jxgZJi1tr2U,2604
|
|
81
|
+
rcsb/exdb/tests/test-data/components-abbrev.cif,sha256=Vodm2R_8ipO2X4e8W3Wa1MiH3YF7RSczdtXC0TA13sM,139314
|
|
82
|
+
rcsb/exdb/tests/test-data/prdcc-abbrev.cif,sha256=pA2yCImadbuh51q59fdIOsGnyXVBPFv-8Z8Zrk2jUqA,415606
|
|
83
|
+
rcsb/exdb/tree/TreeNodeListWorker.py,sha256=VLd7MWCxw9fONoC3xYbjvARp2O2V8Vyy-kUZnwQWi30,10233
|
|
84
|
+
rcsb/exdb/tree/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
85
|
+
rcsb/exdb/utils/ObjectAdapterBase.py,sha256=w-MGvs-TFQXzfgOfAX3aNyCfaN9gY8WP-7MU2FcMAYs,466
|
|
86
|
+
rcsb/exdb/utils/ObjectExtractor.py,sha256=fAJ-WW_-80h_s_XSDdZYi1I2pltb-uQ3teOtCkcyznk,11057
|
|
87
|
+
rcsb/exdb/utils/ObjectTransformer.py,sha256=B5myzcYzsu5vEnzbxUYG3c6u3UlD6ekKftMKQpUCsXg,5229
|
|
88
|
+
rcsb/exdb/utils/ObjectUpdater.py,sha256=prrpRKjMNr7Y8jPMfQdyQh4yJ2zDLd4pZMDxF7g5mks,5089
|
|
89
|
+
rcsb/exdb/utils/ObjectValidator.py,sha256=FiF7wNe0V13rrrIczxWneFIBRAp0p4gWaNhqgfYo4Ho,6973
|
|
90
|
+
rcsb/exdb/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
91
|
+
rcsb/exdb/wf/EntryInfoEtlWorkflow.py,sha256=YVr75Wz1BPjLr_satd28B9BeD3QL6HwmkR173AKqTno,2570
|
|
92
|
+
rcsb/exdb/wf/GlycanEtlWorkflow.py,sha256=oJ6wf438K2e-eLmy8Ni3MCPxjAKgVJY38SWO885gnmg,2820
|
|
93
|
+
rcsb/exdb/wf/PubChemEtlWorkflow.py,sha256=fNX3A6kf0S1XiJMz7ywNpFuuua5lT3XaUFjcCJtvQsU,11235
|
|
94
|
+
rcsb/exdb/wf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
95
|
+
rcsb_exdb-1.31.dist-info/METADATA,sha256=QWvZc5fDZqWlHPTXgBsRhu8Q7W7yZy4hOSp6sMJGxuk,3845
|
|
96
|
+
rcsb_exdb-1.31.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
97
|
+
rcsb_exdb-1.31.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
98
|
+
rcsb_exdb-1.31.dist-info/RECORD,,
|