pyobo 0.10.11__py3-none-any.whl → 0.11.0__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.
Files changed (152) hide show
  1. pyobo/__init__.py +0 -2
  2. pyobo/__main__.py +0 -2
  3. pyobo/api/__init__.py +0 -2
  4. pyobo/api/alts.py +6 -7
  5. pyobo/api/hierarchy.py +14 -15
  6. pyobo/api/metadata.py +3 -4
  7. pyobo/api/names.py +51 -31
  8. pyobo/api/properties.py +6 -7
  9. pyobo/api/relations.py +12 -11
  10. pyobo/api/species.py +5 -6
  11. pyobo/api/typedefs.py +1 -3
  12. pyobo/api/utils.py +63 -2
  13. pyobo/api/xrefs.py +4 -5
  14. pyobo/aws.py +3 -5
  15. pyobo/cli/__init__.py +0 -2
  16. pyobo/cli/aws.py +0 -2
  17. pyobo/cli/cli.py +0 -4
  18. pyobo/cli/database.py +1 -3
  19. pyobo/cli/lookup.py +2 -4
  20. pyobo/cli/utils.py +0 -2
  21. pyobo/constants.py +0 -3
  22. pyobo/getters.py +19 -26
  23. pyobo/gilda_utils.py +28 -8
  24. pyobo/identifier_utils.py +32 -15
  25. pyobo/mocks.py +5 -6
  26. pyobo/normalizer.py +24 -24
  27. pyobo/obographs.py +3 -3
  28. pyobo/plugins.py +3 -4
  29. pyobo/py.typed +0 -0
  30. pyobo/reader.py +19 -21
  31. pyobo/registries/__init__.py +0 -2
  32. pyobo/registries/metaregistry.py +6 -8
  33. pyobo/resource_utils.py +1 -3
  34. pyobo/resources/__init__.py +0 -2
  35. pyobo/resources/ncbitaxon.py +2 -3
  36. pyobo/resources/ro.py +2 -4
  37. pyobo/sources/README.md +15 -0
  38. pyobo/sources/__init__.py +2 -2
  39. pyobo/sources/agrovoc.py +3 -3
  40. pyobo/sources/antibodyregistry.py +4 -5
  41. pyobo/sources/biogrid.py +7 -7
  42. pyobo/sources/ccle.py +3 -4
  43. pyobo/sources/cgnc.py +1 -3
  44. pyobo/sources/chebi.py +2 -4
  45. pyobo/sources/chembl.py +1 -3
  46. pyobo/sources/civic_gene.py +2 -3
  47. pyobo/sources/complexportal.py +3 -5
  48. pyobo/sources/conso.py +2 -4
  49. pyobo/sources/cpt.py +1 -3
  50. pyobo/sources/credit.py +68 -0
  51. pyobo/sources/cvx.py +1 -3
  52. pyobo/sources/depmap.py +3 -4
  53. pyobo/sources/dictybase_gene.py +1 -3
  54. pyobo/sources/drugbank.py +6 -7
  55. pyobo/sources/drugbank_salt.py +3 -4
  56. pyobo/sources/drugcentral.py +5 -7
  57. pyobo/sources/expasy.py +11 -12
  58. pyobo/sources/famplex.py +3 -5
  59. pyobo/sources/flybase.py +2 -4
  60. pyobo/sources/geonames.py +28 -10
  61. pyobo/sources/gmt_utils.py +5 -6
  62. pyobo/sources/go.py +4 -6
  63. pyobo/sources/gwascentral_phenotype.py +1 -3
  64. pyobo/sources/gwascentral_study.py +2 -3
  65. pyobo/sources/hgnc.py +8 -9
  66. pyobo/sources/hgncgenefamily.py +2 -4
  67. pyobo/sources/icd10.py +3 -4
  68. pyobo/sources/icd11.py +3 -4
  69. pyobo/sources/icd_utils.py +6 -7
  70. pyobo/sources/interpro.py +3 -5
  71. pyobo/sources/itis.py +1 -3
  72. pyobo/sources/kegg/__init__.py +0 -2
  73. pyobo/sources/kegg/api.py +3 -4
  74. pyobo/sources/kegg/genes.py +3 -4
  75. pyobo/sources/kegg/genome.py +1 -3
  76. pyobo/sources/kegg/pathway.py +5 -6
  77. pyobo/sources/mesh.py +19 -21
  78. pyobo/sources/mgi.py +1 -3
  79. pyobo/sources/mirbase.py +4 -6
  80. pyobo/sources/mirbase_constants.py +0 -2
  81. pyobo/sources/mirbase_family.py +1 -3
  82. pyobo/sources/mirbase_mature.py +1 -3
  83. pyobo/sources/msigdb.py +4 -5
  84. pyobo/sources/ncbigene.py +3 -5
  85. pyobo/sources/npass.py +2 -4
  86. pyobo/sources/omim_ps.py +1 -3
  87. pyobo/sources/pathbank.py +3 -5
  88. pyobo/sources/pfam.py +1 -3
  89. pyobo/sources/pfam_clan.py +1 -3
  90. pyobo/sources/pid.py +3 -5
  91. pyobo/sources/pombase.py +1 -3
  92. pyobo/sources/pubchem.py +5 -6
  93. pyobo/sources/reactome.py +2 -4
  94. pyobo/sources/rgd.py +3 -4
  95. pyobo/sources/rhea.py +9 -10
  96. pyobo/sources/ror.py +69 -22
  97. pyobo/sources/selventa/__init__.py +0 -2
  98. pyobo/sources/selventa/schem.py +1 -3
  99. pyobo/sources/selventa/scomp.py +1 -3
  100. pyobo/sources/selventa/sdis.py +1 -3
  101. pyobo/sources/selventa/sfam.py +1 -3
  102. pyobo/sources/sgd.py +1 -3
  103. pyobo/sources/slm.py +1 -3
  104. pyobo/sources/umls/__init__.py +0 -2
  105. pyobo/sources/umls/__main__.py +0 -2
  106. pyobo/sources/umls/get_synonym_types.py +1 -1
  107. pyobo/sources/umls/umls.py +2 -4
  108. pyobo/sources/uniprot/__init__.py +0 -2
  109. pyobo/sources/uniprot/uniprot.py +6 -6
  110. pyobo/sources/uniprot/uniprot_ptm.py +6 -5
  111. pyobo/sources/utils.py +3 -5
  112. pyobo/sources/wikipathways.py +1 -3
  113. pyobo/sources/zfin.py +2 -3
  114. pyobo/ssg/__init__.py +3 -2
  115. pyobo/struct/__init__.py +0 -2
  116. pyobo/struct/reference.py +13 -15
  117. pyobo/struct/struct.py +106 -99
  118. pyobo/struct/typedef.py +19 -10
  119. pyobo/struct/utils.py +0 -2
  120. pyobo/utils/__init__.py +0 -2
  121. pyobo/utils/cache.py +14 -6
  122. pyobo/utils/io.py +9 -10
  123. pyobo/utils/iter.py +5 -6
  124. pyobo/utils/misc.py +1 -3
  125. pyobo/utils/ndex_utils.py +6 -7
  126. pyobo/utils/path.py +5 -5
  127. pyobo/version.py +3 -5
  128. pyobo/xrefdb/__init__.py +0 -2
  129. pyobo/xrefdb/canonicalizer.py +27 -18
  130. pyobo/xrefdb/priority.py +0 -2
  131. pyobo/xrefdb/sources/__init__.py +9 -7
  132. pyobo/xrefdb/sources/biomappings.py +0 -2
  133. pyobo/xrefdb/sources/cbms2019.py +0 -2
  134. pyobo/xrefdb/sources/chembl.py +5 -7
  135. pyobo/xrefdb/sources/compath.py +1 -3
  136. pyobo/xrefdb/sources/famplex.py +3 -5
  137. pyobo/xrefdb/sources/gilda.py +0 -2
  138. pyobo/xrefdb/sources/intact.py +5 -5
  139. pyobo/xrefdb/sources/ncit.py +1 -3
  140. pyobo/xrefdb/sources/pubchem.py +2 -4
  141. pyobo/xrefdb/sources/wikidata.py +10 -5
  142. pyobo/xrefdb/xrefs_pipeline.py +15 -16
  143. {pyobo-0.10.11.dist-info → pyobo-0.11.0.dist-info}/LICENSE +1 -1
  144. pyobo-0.11.0.dist-info/METADATA +723 -0
  145. pyobo-0.11.0.dist-info/RECORD +171 -0
  146. {pyobo-0.10.11.dist-info → pyobo-0.11.0.dist-info}/WHEEL +1 -1
  147. pyobo-0.11.0.dist-info/entry_points.txt +2 -0
  148. pyobo/xrefdb/bengo.py +0 -44
  149. pyobo-0.10.11.dist-info/METADATA +0 -499
  150. pyobo-0.10.11.dist-info/RECORD +0 -169
  151. pyobo-0.10.11.dist-info/entry_points.txt +0 -15
  152. {pyobo-0.10.11.dist-info → pyobo-0.11.0.dist-info}/top_level.txt +0 -0
@@ -1,499 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: pyobo
3
- Version: 0.10.11
4
- Summary: Handling and writing OBO
5
- Home-page: https://github.com/pyobo/pyobo
6
- Download-URL: https://github.com/pyobo/pyobo/releases
7
- Author: Charles Tapley Hoyt
8
- Author-email: cthoyt@gmail.com
9
- Maintainer: Charles Tapley Hoyt
10
- Maintainer-email: cthoyt@gmail.com
11
- License: MIT
12
- Project-URL: Bug Tracker, https://github.com/pyobo/pyobo/issues
13
- Project-URL: Source Code, https://github.com/pyobo/pyobo
14
- Keywords: Open Biomedical Ontologies,OBO
15
- Classifier: Development Status :: 4 - Beta
16
- Classifier: Environment :: Console
17
- Classifier: Intended Audience :: Developers
18
- Classifier: Intended Audience :: Science/Research
19
- Classifier: License :: OSI Approved :: MIT License
20
- Classifier: Operating System :: OS Independent
21
- Classifier: Programming Language :: Python
22
- Classifier: Programming Language :: Python :: 3.11
23
- Classifier: Programming Language :: Python :: 3.10
24
- Classifier: Programming Language :: Python :: 3.9
25
- Classifier: Programming Language :: Python :: 3.8
26
- Classifier: Programming Language :: Python :: 3 :: Only
27
- Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
28
- Classifier: Topic :: Scientific/Engineering :: Chemistry
29
- Requires-Python: >=3.8
30
- License-File: LICENSE
31
- Requires-Dist: obonet >=0.3.0
32
- Requires-Dist: click
33
- Requires-Dist: tqdm
34
- Requires-Dist: pyyaml
35
- Requires-Dist: pandas
36
- Requires-Dist: requests
37
- Requires-Dist: protmapper
38
- Requires-Dist: more-itertools
39
- Requires-Dist: more-click >=0.0.2
40
- Requires-Dist: humanize
41
- Requires-Dist: tabulate
42
- Requires-Dist: cachier
43
- Requires-Dist: pystow >=0.2.7
44
- Requires-Dist: bioversions >=0.5.202
45
- Requires-Dist: bioregistry >=0.10.20
46
- Requires-Dist: bioontologies >=0.4.0
47
- Requires-Dist: zenodo-client >=0.0.5
48
- Requires-Dist: class-resolver
49
- Requires-Dist: psycopg2-binary
50
- Requires-Dist: drugbank-downloader
51
- Requires-Dist: chembl-downloader
52
- Requires-Dist: umls-downloader >=0.1.3
53
- Requires-Dist: typing-extensions
54
- Provides-Extra: agrovoc
55
- Requires-Dist: rdflib ; extra == 'agrovoc'
56
- Provides-Extra: docs
57
- Requires-Dist: sphinx ; extra == 'docs'
58
- Requires-Dist: sphinx-rtd-theme ; extra == 'docs'
59
- Requires-Dist: sphinx-click ; extra == 'docs'
60
- Requires-Dist: sphinx-automodapi ; extra == 'docs'
61
- Provides-Extra: tests
62
- Requires-Dist: coverage ; extra == 'tests'
63
- Requires-Dist: pytest ; extra == 'tests'
64
- Provides-Extra: web
65
- Requires-Dist: flask ; extra == 'web'
66
- Requires-Dist: bootstrap-flask ; extra == 'web'
67
- Requires-Dist: flask-admin ; extra == 'web'
68
- Requires-Dist: flasgger ; extra == 'web'
69
- Requires-Dist: psutil ; extra == 'web'
70
-
71
- PyOBO
72
- =====
73
- |build| |pypi_version| |python_versions| |pypi_license| |zenodo| |black| |bioregistry|
74
-
75
- Tools for biological identifiers, names, synonyms, xrefs, hierarchies, relations, and properties through the
76
- perspective of OBO.
77
-
78
- Example Usage
79
- -------------
80
- Note! PyOBO is no-nonsense. This means that there's no repetitive
81
- prefixes in identifiers. It also means all identifiers are strings,
82
- no exceptions.
83
-
84
- Note! The first time you run these, they have to download and cache
85
- all resources. We're not in the business of redistributing data,
86
- so all scripts should be completely reproducible. There's some
87
- AWS tools for hosting/downloading pre-compiled versions in
88
- ``pyobo.aws`` if you don't have time for that.
89
-
90
- Note! PyOBO can perform grounding in a limited number of cases, but
91
- it is *not* a general solution for named entity recognition (NER) or grounding.
92
- It's suggested to check `Gilda <https://github.com/indralab/gilda>`_
93
- for a no-nonsense solution.
94
-
95
- Mapping Identifiers and CURIEs
96
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
97
- Get mapping of ChEBI identifiers to names:
98
-
99
- .. code-block:: python
100
-
101
- import pyobo
102
-
103
- chebi_id_to_name = pyobo.get_id_name_mapping('chebi')
104
-
105
- name = chebi_id_to_name['132964']
106
- assert name == 'fluazifop-P-butyl'
107
-
108
- Or, you don't have time for two lines:
109
-
110
- .. code-block:: python
111
-
112
- import pyobo
113
-
114
- name = pyobo.get_name('chebi', '132964')
115
- assert name == 'fluazifop-P-butyl'
116
-
117
- Get reverse mapping of ChEBI names to identifiers:
118
-
119
- .. code-block:: python
120
-
121
- import pyobo
122
-
123
- chebi_name_to_id = pyobo.get_name_id_mapping('chebi')
124
-
125
- identifier = chebi_name_to_id['fluazifop-P-butyl']
126
- assert identifier == '132964'
127
-
128
- Maybe you live in CURIE world and just want to normalize something like
129
- `CHEBI:132964`:
130
-
131
- .. code-block:: python
132
-
133
- import pyobo
134
-
135
- name = pyobo.get_name_by_curie('CHEBI:132964')
136
- assert name == 'fluazifop-P-butyl'
137
-
138
- Sometimes you accidentally got an old CURIE. It can be mapped to the more recent
139
- one using alternative identifiers listed in the underlying OBO with:
140
-
141
- .. code-block:: python
142
-
143
- import pyobo
144
-
145
- # Look up DNA-binding transcription factor activity (go:0003700)
146
- # based on an old id
147
- primary_curie = pyobo.get_primary_curie('go:0001071')
148
- assert primary_curie == 'go:0003700'
149
-
150
- # If it's already the primary, it just gets returned
151
- assert 'go:0003700' == pyobo.get_priority_curie('go:0003700')
152
-
153
- Mapping Species
154
- ~~~~~~~~~~~~~~~
155
- Some resources have species information for their term. Get a mapping of WikiPathway identifiers
156
- to species (as NCBI taxonomy identifiers):
157
-
158
- .. code-block:: python
159
-
160
- import pyobo
161
-
162
- wikipathways_id_to_species = pyobo.get_id_species_mapping('wikipathways')
163
-
164
- # Apoptosis (Homo sapiens)
165
- taxonomy_id = wikipathways_id_to_species['WP254']
166
- assert taxonomy_id == '9606'
167
-
168
- Or, you don't have time for two lines:
169
-
170
- .. code-block:: python
171
-
172
- import pyobo
173
-
174
- # Apoptosis (Homo sapiens)
175
- taxonomy_id = pyobo.get_species('wikipathways', 'WP254')
176
- assert taxonomy_id == '9606'
177
-
178
- Grounding
179
- ~~~~~~~~~
180
- Maybe you've got names/synonyms you want to try and map back to ChEBI synonyms.
181
- Given the brand name `Fusilade II` of `CHEBI:132964`, it should be able to look
182
- it up and its preferred label.
183
-
184
- .. code-block:: python
185
-
186
- import pyobo
187
-
188
- prefix, identifier, name = pyobo.ground('chebi', 'Fusilade II')
189
- assert prefix == 'chebi'
190
- assert identifier == '132964'
191
- assert name == 'fluazifop-P-butyl'
192
-
193
- # When failure happens...
194
- prefix, identifier, name = pyobo.ground('chebi', 'Definitely not a real name')
195
- assert prefix is None
196
- assert identifier is None
197
- assert name is None
198
-
199
- If you're not really sure which namespace a name might belong to, you
200
- can try a few in a row (prioritize by ones that cover the appropriate
201
- entity type to avoid false positives in case of conflicts):
202
-
203
- .. code-block:: python
204
-
205
- import pyobo
206
-
207
- # looking for phenotypes/pathways
208
- prefix, identifier, name = pyobo.ground(['efo', 'go'], 'ERAD')
209
- assert prefix == 'go'
210
- assert identifier == '0030433'
211
- assert name == 'ubiquitin-dependent ERAD pathway'
212
-
213
- Cross-referencing
214
- ~~~~~~~~~~~~~~~~~
215
- Get xrefs from ChEBI to PubChem:
216
-
217
- .. code-block:: python
218
-
219
- import pyobo
220
-
221
- chebi_id_to_pubchem_compound_id = pyobo.get_filtered_xrefs('chebi', 'pubchem.compound')
222
-
223
- pubchem_compound_id = chebi_id_to_pubchem_compound_id['132964']
224
- assert pubchem_compound_id == '3033674'
225
-
226
- If you don't have time for two lines:
227
-
228
- .. code-block:: python
229
-
230
- import pyobo
231
-
232
- pubchem_compound_id = pyobo.get_xref('chebi', '132964', 'pubchem.compound')
233
- assert pubchem_compound_id == '3033674'
234
-
235
- Get xrefs from Entrez to HGNC, but they're only available through HGNC
236
- so you need to flip them:
237
-
238
- .. code-block:: python
239
-
240
- import pyobo
241
-
242
- hgnc_id_to_ncbigene_id = pyobo.get_filtered_xrefs('hgnc', 'ncbigene')
243
- ncbigene_id_to_hgnc_id = {
244
- ncbigene_id: hgnc_id
245
- for hgnc_id, ncbigene_id in hgnc_id_to_ncbigene_id.items()
246
- }
247
- mapt_hgnc = ncbigene_id_to_hgnc_id['4137']
248
- assert mapt_hgnc == '6893'
249
-
250
- Since this is a common pattern, there's a keyword argument `flip`
251
- that does this for you:
252
-
253
- .. code-block:: python
254
-
255
- import pyobo
256
-
257
- ncbigene_id_to_hgnc_id = pyobo.get_filtered_xrefs('hgnc', 'ncbigene', flip=True)
258
- mapt_hgnc_id = ncbigene_id_to_hgnc_id['4137']
259
- assert mapt_hgnc_id == '6893'
260
-
261
- If you don't have time for two lines (I admit this one is a bit confusing) and
262
- need to flip it:
263
-
264
- .. code-block:: python
265
-
266
- import pyobo
267
-
268
- hgnc_id = pyobo.get_xref('hgnc', '4137', 'ncbigene', flip=True)
269
- assert hgnc_id == '6893'
270
-
271
- Remap a CURIE based on pre-defined priority list and `Inspector Javert's Xref
272
- Database <https://cthoyt.com/2020/04/19/inspector-javerts-xref-database.html>`_:
273
-
274
- .. code-block:: python
275
-
276
- import pyobo
277
-
278
- # Map to the best source possible
279
- mapt_ncbigene = pyobo.get_priority_curie('hgnc:6893')
280
- assert mapt_ncbigene == 'ncbigene:4137'
281
-
282
- # Sometimes you know you're the best. Own it.
283
- assert 'ncbigene:4137' == pyobo.get_priority_curie('ncbigene:4137')
284
-
285
- Find all CURIEs mapped to a given one using Inspector Javert's Xref Database:
286
-
287
- .. code-block:: python
288
-
289
- import pyobo
290
-
291
- # Get a set of all CURIEs mapped to MAPT
292
- mapt_curies = pyobo.get_equivalent('hgnc:6893')
293
- assert 'ncbigene:4137' in mapt_curies
294
- assert 'ensembl:ENSG00000186868' in mapt_curies
295
-
296
- If you don't want to wait to build the database locally for the ``pyobo.get_priority_curie`` and
297
- ``pyobo.get_equivalent``, you can use the following code to download a release from
298
- `Zenodo <https://zenodo.org/record/3757266>`_:
299
-
300
- .. code-block:: python
301
-
302
- import pyobo.resource_utils
303
-
304
- pyobo.resource_utils.ensure_inspector_javert()
305
-
306
- Properties
307
- ~~~~~~~~~~
308
- Get properties, like SMILES. The semantics of these are defined on an OBO-OBO basis.
309
-
310
- .. code-block:: python
311
-
312
- import pyobo
313
-
314
- # I don't make the rules. I wouldn't have chosen this as the key for this property. It could be any string
315
- chebi_smiles_property = 'http://purl.obolibrary.org/obo/chebi/smiles'
316
- chebi_id_to_smiles = pyobo.get_filtered_properties_mapping('chebi', chebi_smiles_property)
317
-
318
- smiles = chebi_id_to_smiles['132964']
319
- assert smiles == 'C1(=CC=C(N=C1)OC2=CC=C(C=C2)O[C@@H](C(OCCCC)=O)C)C(F)(F)F'
320
-
321
- If you don't have time for two lines:
322
-
323
- .. code-block:: python
324
-
325
- import pyobo
326
-
327
- smiles = pyobo.get_property('chebi', '132964', 'http://purl.obolibrary.org/obo/chebi/smiles')
328
- assert smiles == 'C1(=CC=C(N=C1)OC2=CC=C(C=C2)O[C@@H](C(OCCCC)=O)C)C(F)(F)F'
329
-
330
- Hierarchy
331
- ~~~~~~~~~
332
- Check if an entity is in the hierarchy:
333
-
334
- .. code-block:: python
335
-
336
- import networkx as nx
337
- import pyobo
338
-
339
- # check that go:0008219 ! cell death is an ancestor of go:0006915 ! apoptotic process
340
- assert 'go:0008219' in pyobo.get_ancestors('go', '0006915')
341
-
342
- # check that go:0070246 ! natural killer cell apoptotic process is a
343
- # descendant of go:0006915 ! apoptotic process
344
- apopototic_process_descendants = pyobo.get_descendants('go', '0006915')
345
- assert 'go:0070246' in apopototic_process_descendants
346
-
347
- Get the subhierarchy below a given node:
348
-
349
- .. code-block:: python
350
-
351
- # get the descendant graph of go:0006915 ! apoptotic process
352
- apopototic_process_subhierarchy = pyobo.get_subhierarchy('go', '0006915')
353
-
354
- # check that go:0070246 ! natural killer cell apoptotic process is a
355
- # descendant of go:0006915 ! apoptotic process through the subhierarchy
356
- assert 'go:0070246' in apopototic_process_subhierarchy
357
-
358
- Get a hierarchy with properties pre-loaded in the node data dictionaries:
359
-
360
- .. code-block:: python
361
-
362
- import pyobo
363
-
364
- prop = 'http://purl.obolibrary.org/obo/chebi/smiles'
365
- chebi_hierarchy = pyobo.get_hierarchy('chebi', properties=[prop])
366
-
367
- assert 'chebi:132964' in chebi_hierarchy
368
- assert prop in chebi_hierarchy.nodes['chebi:132964']
369
- assert chebi_hierarchy.nodes['chebi:132964'][prop] == 'C1(=CC=C(N=C1)OC2=CC=C(C=C2)O[C@@H](C(OCCCC)=O)C)C(F)(F)F'
370
-
371
- Relations
372
- ~~~~~~~~~
373
- Get all orthologies (``ro:HOM0000017``) between HGNC and MGI (note: this is one way)
374
-
375
- .. code-block:: python
376
-
377
- >>> import pyobo
378
- >>> human_mapt_hgnc_id = '6893'
379
- >>> mouse_mapt_mgi_id = '97180'
380
- >>> hgnc_mgi_orthology_mapping = pyobo.get_relation_mapping('hgnc', 'ro:HOM0000017', 'mgi')
381
- >>> assert mouse_mapt_mgi_id == hgnc_mgi_orthology_mapping[human_mapt_hgnc_id]
382
-
383
- If you want to do it in one line, use:
384
-
385
- .. code-block:: python
386
-
387
- >>> import pyobo
388
- >>> human_mapt_hgnc_id = '6893'
389
- >>> mouse_mapt_mgi_id = '97180'
390
- >>> assert mouse_mapt_mgi_id == pyobo.get_relation('hgnc', 'ro:HOM0000017', 'mgi', human_mapt_hgnc_id)
391
-
392
- Writings Tests that Use PyOBO
393
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
394
- If you're writing your own code that relies on PyOBO, and unit
395
- testing it (as you should) in a continuous integration setting,
396
- you've probably realized that loading all of the resources on each
397
- build is not so fast. In those scenarios, you can use some of the
398
- pre-build patches like in the following:
399
-
400
- .. code-block:: python
401
-
402
- import unittest
403
- import pyobo
404
- from pyobo.mocks import get_mock_id_name_mapping
405
-
406
- mock_id_name_mapping = get_mock_id_name_mapping({
407
- 'chebi': {
408
- '132964': 'fluazifop-P-butyl',
409
- },
410
- })
411
-
412
- class MyTestCase(unittest.TestCase):
413
- def my_test(self):
414
- with mock_id_name_mapping:
415
- # use functions directly, or use your functions that wrap them
416
- pyobo.get_name('chebi', '1234')
417
-
418
-
419
- Installation
420
- ------------
421
- PyOBO can be installed from `PyPI <https://pypi.org/project/pyobo/>`_ with:
422
-
423
- .. code-block:: sh
424
-
425
- $ pip install pyobo
426
-
427
- It can be installed in development mode from `GitHub <https://github.com/pyobo/pyobo>`_
428
- with:
429
-
430
- .. code-block:: sh
431
-
432
- $ git clone https://github.com/pyobo/pyobo.git
433
- $ cd pyobo
434
- $ pip install -e .
435
-
436
- Curation of the Bioregistry
437
- ---------------------------
438
- In order to normalize references and identify resources, PyOBO uses the
439
- `Bioregistry <https://github.com/bioregistry/bioregistry>`_. It used to be a part of PyOBO, but has since
440
- been externalized for more general reuse.
441
-
442
- At `src/pyobo/registries/metaregistry.json <https://github.com/pyobo/pyobo/blob/master/src/pyobo/registries/metaregistry.json>`_
443
- is the curated "metaregistry". This is a source of information that contains
444
- all sorts of fixes for missing/wrong information in MIRIAM, OLS, and OBO Foundry; entries that don't appear in
445
- any of them; additional synonym information for each namespace/prefix; rules for normalizing xrefs and CURIEs, etc.
446
-
447
- Other entries in the metaregistry:
448
-
449
- - The ``"remappings"->"full"`` entry is a dictionary from strings that might follow ``xref:``
450
- in a given OBO file that need to be completely replaced, due to incorrect formatting
451
- - The ``"remappings"->"prefix"`` entry contains a dictionary of prefixes for xrefs that need
452
- to be remapped. Several rules, for example, remove superfluous spaces that occur inside
453
- CURIEs or and others address instances of the GOGO issue.
454
- - The ``"blacklists"`` entry contains rules for throwing out malformed xrefs based on
455
- full string, just prefix, or just suffix.
456
-
457
- Troubleshooting
458
- ---------------
459
- The OBO Foundry seems to be pretty unstable with respect to the URLs to OBO resources. If you get an error like:
460
-
461
- .. code-block::
462
-
463
- pyobo.getters.MissingOboBuild: OBO Foundry is missing a build for: mondo
464
-
465
- Then you should check the corresponding page on the OBO Foundry (in this case, http://www.obofoundry.org/ontology/mondo.html)
466
- and make update to the ``url`` entry for that namespace in the Bioregistry.
467
-
468
- .. |build| image:: https://github.com/pyobo/pyobo/workflows/Tests/badge.svg
469
- :target: https://github.com/pyobo/pyobo/actions?query=workflow%3ATests
470
- :alt: Build Status
471
-
472
- .. |coverage| image:: https://codecov.io/gh/pyobo/pyobo/coverage.svg?branch=master
473
- :target: https://codecov.io/gh/pyobo/pyobo?branch=master
474
- :alt: Coverage Status
475
-
476
- .. |docs| image:: http://readthedocs.org/projects/pyobo/badge/?version=latest
477
- :target: http://pyobo.readthedocs.io/en/latest/?badge=latest
478
- :alt: Documentation Status
479
-
480
- .. |python_versions| image:: https://img.shields.io/pypi/pyversions/pyobo.svg
481
- :alt: Stable Supported Python Versions
482
-
483
- .. |pypi_version| image:: https://img.shields.io/pypi/v/pyobo.svg
484
- :alt: Current version on PyPI
485
-
486
- .. |pypi_license| image:: https://img.shields.io/pypi/l/pyobo.svg
487
- :alt: MIT License
488
-
489
- .. |zenodo| image:: https://zenodo.org/badge/203449095.svg
490
- :target: https://zenodo.org/badge/latestdoi/203449095
491
- :alt: Zenodo
492
-
493
- .. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
494
- :target: https://github.com/psf/black
495
- :alt: Black Code Style
496
-
497
- .. |bioregistry| image:: https://img.shields.io/static/v1?label=Powered%20by&message=Bioregistry&color=BA274A&style=flat&logo=image/png;base64,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
498
- :target: https://github.com/biopragmatics/bioregistry
499
- :alt: Powered by the Bioregistry
@@ -1,169 +0,0 @@
1
- pyobo/__init__.py,sha256=mZ96iZ-5ucxe2eLBi0xuSKaa2ZfeInaSR5Ajc_NkvUo,1862
2
- pyobo/__main__.py,sha256=cQjBabQ2wlFKcv54PFdt0SgPXNeb3oWneuOHaBgHx1Q,108
3
- pyobo/aws.py,sha256=oSy4qqHlCpuSyGhDeslrPtc_N0JDhRoGKWjw8RBmyNE,5976
4
- pyobo/constants.py,sha256=JULsofZ3GfSlpnPjJdvCxRfmt07E1niavoyM0bHOvlw,1937
5
- pyobo/getters.py,sha256=37e7pcTqU-uVjx_XctT9pJMn7zaazsNfcyWoe7KMHi0,15565
6
- pyobo/gilda_utils.py,sha256=9rzlOkmq2MFac2sJ7b-XHS6UTSTiOM_rRk_xzt-uJiI,7582
7
- pyobo/identifier_utils.py,sha256=y4eFbJJQGoGe0HKRqQoUc_3tani22W_K4z7OZFL6Z0E,3659
8
- pyobo/mocks.py,sha256=R-4W3Rm5NarIHfNjxurbvBYsLHXt6jmDb6THMUt6K1w,2432
9
- pyobo/normalizer.py,sha256=OHME2CDQSZYSbqmP-L_-4nxete9W9mtAjUzXVs1hnjU,8293
10
- pyobo/obographs.py,sha256=JKE0a7e-gmxqdJoeX2zb_xQ6Tv5PAe60YhnIpAvrrYg,3758
11
- pyobo/plugins.py,sha256=dXWGoFuQktNeQUWSJlPz2a7FeLysggc9ry6auEZdw98,1227
12
- pyobo/reader.py,sha256=3VTWQMmA-AHi3RdA2jb48d2deXO-lYKqXbcMa9Qhi_4,21271
13
- pyobo/resource_utils.py,sha256=JBcJRihZhNwp78-qWZPrzSCGoYfyOjzBwMkfmOkO_no,4289
14
- pyobo/version.py,sha256=OKbCUY54AAMe_6iaT4e3cdZTp9yasFFcVcJUg7pWxIg,978
15
- pyobo/api/__init__.py,sha256=Hq8p5uPW8fFYG2KfLqUsHhtLkTPqE4TqItGkedZzvXM,1326
16
- pyobo/api/alts.py,sha256=fa516S9uWVgMIXR5KbYu70KFpvfOD7Not2iEYFB8C_4,2844
17
- pyobo/api/hierarchy.py,sha256=o69jARrh9UXbzLsnXjW8Rs0kfQahvc22BlwcE7nAnFI,9527
18
- pyobo/api/metadata.py,sha256=py8Pv_Mmy31itziRaucWibGvWF6vOhF4Ofj1kFMk_vQ,1148
19
- pyobo/api/names.py,sha256=wXb677El7RRPVtpthrdKw-zUQJnbrBLgsgKGvPG6KVI,7789
20
- pyobo/api/properties.py,sha256=BKqUgN8nTpYrc0fROdaGGkptELgjbGT6TC_N2X8FIQM,7813
21
- pyobo/api/relations.py,sha256=oAjslceGPLPUDT4keOJQCFBt_BXOqhCgSYZ2d-IjO34,6217
22
- pyobo/api/species.py,sha256=RvTrC39yskueQyAplbcmqjHnL-t3QqggjBJcs5swgVU,2249
23
- pyobo/api/typedefs.py,sha256=Vb1wvWDWLZu-FchYFs03wMEzS3RUPUsLxvyPNlHBcYE,1157
24
- pyobo/api/utils.py,sha256=jxisiISIUtoW_SfNa3eOVTkEYP5ygYHaFTDibmMO7UE,1059
25
- pyobo/api/xrefs.py,sha256=oy5ZSoeEpcJfjDfSCBwUx3LJEykqbpBwNrMhfhiyYlY,6020
26
- pyobo/apps/__init__.py,sha256=iACi86TkTiGxwneGmfaudZOIEqZ45YjPXng7XjPE38Y,72
27
- pyobo/apps/cli.py,sha256=gnXBAaESw1T1BvgMpTv-0P26hM2vKCAXPy0SOskgUwU,335
28
- pyobo/apps/gilda/__init__.py,sha256=jpLIHJOmR_66tdXXUWFP9NiZnpQKvjv5YpCJWoAKnUI,54
29
- pyobo/apps/gilda/__main__.py,sha256=9EEwzUlwcFHrfAEzveIvmqHiPu52wLt8o4Xe_vFcWf0,124
30
- pyobo/apps/gilda/app.py,sha256=rHqGR52fnbhqRPWktbIZc8ZZcFEIKp6rq7ledFuN_Lg,1315
31
- pyobo/apps/gilda/cli.py,sha256=OteTZy060Elmg38sl091kHfaHjjLTJaAtLdUpWgr6ug,702
32
- pyobo/apps/gilda/templates/base.html,sha256=MxFNPgWW4wYzXXS3RwXMcMJAc1_lUhguQvVYQYjSjLY,888
33
- pyobo/apps/gilda/templates/home.html,sha256=ZAqegzBGgVct9UzmfC0dfGJ6_jbDSCpbwqe2WB-00AA,273
34
- pyobo/apps/gilda/templates/matches.html,sha256=x3mvMCevr8IoXSXmm_aOQlKNBycvMpBedLLCt2znNXQ,934
35
- pyobo/apps/mapper/__init__.py,sha256=9PK1LtsCTVcQQzSPtpa6f1dgjsoeygq9cAP7AXqEiJY,56
36
- pyobo/apps/mapper/__main__.py,sha256=XScQCj6oK2OslWyZ8yzcaietLJm_XxDLA22CMoyy6dM,169
37
- pyobo/apps/mapper/cli.py,sha256=AHPPXqSd3LTMhHIsmhErMB_gpfDeDs6IGlPdHQKMIq0,682
38
- pyobo/apps/mapper/mapper.py,sha256=yVIHGlTwFNtKEF07K-oqsqy8ggIalN6SfmyzB4E--2I,5787
39
- pyobo/apps/mapper/templates/base.html,sha256=w9d8e8qKnVy_h7RT5hWV9EwghgPqn0y3xJ-tZw0v9TQ,982
40
- pyobo/apps/mapper/templates/mapper_home.html,sha256=XugUb76C6B1JGQTCb2tDhZ-XyY-636qeZJODUTrpjdw,2785
41
- pyobo/cli/__init__.py,sha256=ReL2NlPx_GEljszzkjIKKAK6BC3KAuHli9pFU1YmgXQ,96
42
- pyobo/cli/aws.py,sha256=ySuCV9JkOjelXLhcIgeHWReFSLh2n5zvGddNsfM1B8o,989
43
- pyobo/cli/cli.py,sha256=0Vibj_1LnkI8pfkK8U7r5eSRspR9VkH2OH4DwcHzA2M,3616
44
- pyobo/cli/database.py,sha256=5MCAbMClxYpPxZ83GilcsjjNs3zPjM7rHjqsBPfDGRM,10106
45
- pyobo/cli/lookup.py,sha256=AEGRg8cEqeXb7VENh9MfCFTNgb53Mz-k5uH-nW-mv9I,10126
46
- pyobo/cli/utils.py,sha256=n8HVfJMEai0_4hDntbQPDZpqqZIPMNX_-kZ2cCyakss,1370
47
- pyobo/registries/__init__.py,sha256=P4UmjPFFYkQ_YrXcM5NMT9VF45pHLBqavcmZ7jPwpNQ,417
48
- pyobo/registries/metaregistry.json,sha256=ssjWlc3fqQBw0V4wwVZBeW-4Y_B_RkIEc0ooOFeiKJQ,12865
49
- pyobo/registries/metaregistry.py,sha256=9_1O6jDnDYzGjplCi3Uqr9W3Z5PkwFbbLB3VTI7AfNY,4267
50
- pyobo/resources/__init__.py,sha256=cO7MeAYeaIIqzts1ZOpoGGzEqYYF9evHbkVQhoihYwY,63
51
- pyobo/resources/ncbitaxon.py,sha256=kyJDMGm8qIpIpckN6NSGovCBDacG1qGYTIpvJ--HXhM,2024
52
- pyobo/resources/ncbitaxon.tsv.gz,sha256=43zHjnVt62TA4_lV58X-FCPdMDfLg1B1PvZSr_Xy9hY,22981954
53
- pyobo/resources/ro.py,sha256=_CYD90vftMZvu8Rj6H9kOiw6wRBbs1LWmCl-HToxMIg,1484
54
- pyobo/resources/ro.tsv,sha256=YvlBLPAKy2w4IheYzO9ox1Yg6WkHdMVzMQTikIlECog,26586
55
- pyobo/sources/__init__.py,sha256=uG7If-_xo4GfuvQ43yVQFBDUjYMGwmm5o3vyAm0Qqow,3783
56
- pyobo/sources/agrovoc.py,sha256=J425AyyOVAeqeyN5MhmAR9OtJom41GDvKArfyz1iIU8,795
57
- pyobo/sources/antibodyregistry.py,sha256=x4GlWjqg8bMqYrKzAkWHLM7UfaOrYnaVhh3i06QZMEA,3323
58
- pyobo/sources/biogrid.py,sha256=0nHZXeJEDWuAlxsAY7fvAeccKQZ5lL-xwbhbL_dStO8,3328
59
- pyobo/sources/ccle.py,sha256=RwsrFTVOUAySvS2helFbSNAsmiCX3Zs8PiZUeRoGA0I,3023
60
- pyobo/sources/cgnc.py,sha256=hCjFv05_aS2_Mn5Qb9VGLKGcOY87rEXZ6jH7r6WgUeg,2336
61
- pyobo/sources/chebi.py,sha256=7t5CaykOWXMQ9JRW8x1g_gsZhygCdjR2MGRYTFLEiTs,1230
62
- pyobo/sources/chembl.py,sha256=MG_bTilUwhhkeuTA3owLn1gro1QicMyGGfcd-48NGgE,2296
63
- pyobo/sources/civic_gene.py,sha256=SUwlb1PXwVVB-XQanyI7tRbPMGaDNiB-CXNry_idAZY,1691
64
- pyobo/sources/complexportal.py,sha256=nhEaUzw4riuN31OLiwpGffj66YMCeLigekblTWGk3nk,6022
65
- pyobo/sources/conso.py,sha256=ZLQ_T5EgrcuX9q6kCBKCwfGzAEVxgN6xADl-LKzJtbk,2460
66
- pyobo/sources/cpt.py,sha256=x8P15D9UX5Fwf6bmeVsU1DAFJvZ22rxVPy5ur-GUk_Q,1482
67
- pyobo/sources/cvx.py,sha256=FZAghQxkefWsxT1nTTUb56NgteRbAmawpOo3IdAfPAQ,2836
68
- pyobo/sources/depmap.py,sha256=VuZduDgCduiAHPLwPDXgWpxhMSOZCC4UsxFdj7hNkYQ,3656
69
- pyobo/sources/dictybase_gene.py,sha256=EgWBwUZ83ev7x5Lp_nUkgSq2zumkDjJ7_13m3f6kJz0,2564
70
- pyobo/sources/drugbank.py,sha256=pb2IdVQF4FqDvefwRdqlDV5j6pR9R1b3rGxHC-GSWb4,11028
71
- pyobo/sources/drugbank_salt.py,sha256=hx16G41mP2KXT4fsAQRCRkJMGn-z5cafs-bwm4wMtwo,1783
72
- pyobo/sources/drugcentral.py,sha256=05mGolBIyKCxAYzpH9LY_ZQrTVnizup2JUiWi2wW9OI,3587
73
- pyobo/sources/expasy.py,sha256=Ul6DFtHKw3fU1ec93c9f29kXxod2Rn-jPWOYl1xrRa8,10051
74
- pyobo/sources/famplex.py,sha256=bn3WaJdrDf9BxsG9vnnnnGOwCrnrJ-vTMxOnxgrtUb4,5816
75
- pyobo/sources/flybase.py,sha256=0-BCNsp-L-CgGPN9VdJec6-8e4-fJuzaZAZiNra3ZUQ,5768
76
- pyobo/sources/geonames.py,sha256=XpSc-_6653MrjunVJhqbHHLtkT8kmbJZzfRuF6DoWU8,7929
77
- pyobo/sources/gmt_utils.py,sha256=NAWyUZ1p1HcO8RPL9mEEcL9KoaBDPuU-tbyG2QLb98k,1401
78
- pyobo/sources/go.py,sha256=IJul9eAXxKifZiWKJL1Dl9PFDFdoPMQ0ZVydzhnRtX0,1275
79
- pyobo/sources/gwascentral_phenotype.py,sha256=dCzyw_jbmhol69Li0g2ocMQJRqjoV2fZM_pno6i7xyA,1889
80
- pyobo/sources/gwascentral_study.py,sha256=_YH9TRWsCOHjOrJ2pAqQ7fi_HmF1WbMmTUj5iqWDUwY,2812
81
- pyobo/sources/hgnc.py,sha256=kVxVIv4LIy_H_rvVQbwvj3Jn6KmLwpk-XRn5jkpnjN4,15951
82
- pyobo/sources/hgncgenefamily.py,sha256=o7gCI5raXkCMr8ONfAZpRW7PtsZ8lkRC4T1kEjTxBn4,3645
83
- pyobo/sources/icd10.py,sha256=KhenR1U8LvZQF97mRZIoSEE_daKcJ2hTJ41BQU7SNuM,2286
84
- pyobo/sources/icd11.py,sha256=04nLt-Lr64hAroOLH4OP-iNbuIjBk-mYcg-Ib34zgMM,2834
85
- pyobo/sources/icd_utils.py,sha256=c1Xkk9YAyKQ-vvnPud5GKq5ygZVbd1j0NFSml3RjQZ0,3155
86
- pyobo/sources/interpro.py,sha256=sWla5FDOkzA8elzeNHXOMD0nEVIbNK7jg4UZ0Zp7BfI,4934
87
- pyobo/sources/itis.py,sha256=LXS4MTL7OMmdfo-ypoF75UJkePw7VnHDrgq10RF_VUk,2967
88
- pyobo/sources/mesh.py,sha256=5Nr96acPBWmBhWnB-j3xMQFK3cyBIjRXdvpvMOOH4P4,12128
89
- pyobo/sources/mgi.py,sha256=c0CiiH_LolAFdHPNu1lpLeAzHq20wVLyOrLRTkLYxhY,5766
90
- pyobo/sources/mirbase.py,sha256=NMqZfT7CbbetqCV-KdGjHJmz2uM5QvdF_M1BxKi1ZCw,6349
91
- pyobo/sources/mirbase_constants.py,sha256=X7KhJDp1saGrdBwUR9fQSWwebzns5f-mEF4qWSETs2k,2023
92
- pyobo/sources/mirbase_family.py,sha256=Yj3oXaeBWDxcmBKnvOl0q_7nzlye5EXhSJPWlV3YpT8,2167
93
- pyobo/sources/mirbase_mature.py,sha256=nvWcQVDMBucPu6v5DLFb_W_9fz_J_Id7HZrilkUhaFI,1504
94
- pyobo/sources/msigdb.py,sha256=YKgFyPgYKdYQtu22P69IVyLeBsLfgNyaNOl7q0Sy8IU,5019
95
- pyobo/sources/ncbigene.py,sha256=qipZEaaXop289vRro_NS8BB0_t-c738lJItWSjzD7PI,5055
96
- pyobo/sources/npass.py,sha256=t8TDdxpfvvXYo8VczT4ngoSspPAdPJuLKigvHZ9OHrE,2805
97
- pyobo/sources/omim_ps.py,sha256=uULW_1gmYIE66O85GdLCGbdmsi9qxcS7tZziOny0wc0,1020
98
- pyobo/sources/pathbank.py,sha256=yhdS4BCbGxQf0o3HCGzL2cYRY7zyvHvDzzSBkkezoog,4989
99
- pyobo/sources/pfam.py,sha256=aHXdXmoG6xyNkScHft_xYe4J2DzRr22EinyfjpmwEj4,1846
100
- pyobo/sources/pfam_clan.py,sha256=hjJ0UUEcrNoaQVWbXZ_EaTWFo4iB9VG9Sp6pcO90gxY,1340
101
- pyobo/sources/pid.py,sha256=ZEbiYpbZL9_aOCEJWw0I3H5f7Q2RhQuNy5PUZfs0orU,4570
102
- pyobo/sources/pombase.py,sha256=nRMxk2FuQZv6KnL8LBxqZbVtvynvneLe39i5V3dYAtw,3601
103
- pyobo/sources/pubchem.py,sha256=arIX53mvCWRghLJkeh9iTPUU_lQJ8SSTm-pOK8KBqbE,5289
104
- pyobo/sources/reactome.py,sha256=H-hMMrbf2mElOLDu_hYZgurYLYTZvrQ7E1dyvaWKvSM,5084
105
- pyobo/sources/rgd.py,sha256=CbtDDIrBQ7ZA0GK6BcorxYBeaJazo3D1gMot588cA0E,5397
106
- pyobo/sources/rhea.py,sha256=vfmDFo11LdxuIfo3LZ7n5X942IjO-U9iX4l-CGTMjb0,7772
107
- pyobo/sources/ror.py,sha256=g4UxcEYJ4RW_imqna3T6GnAxRp058L7MJFDmZjstYdo,6123
108
- pyobo/sources/sgd.py,sha256=DOcRxEJGrHEOsaIiWat2x9ER2HnfnU3l8lqr3IktblA,2150
109
- pyobo/sources/slm.py,sha256=ai_Zp0tqBIanMZ7q7b5x6w9KdTTCEqA4PhX0ToaF594,3804
110
- pyobo/sources/utils.py,sha256=tmCGXGxHVrYkS5E1-k2SZqL8H4Tv8dFrkoIEJ0xzVmQ,1119
111
- pyobo/sources/wikipathways.py,sha256=ZNi3lGQ4HbJIBpIq3IMvjiYuvWPuqPysjs8TB6kMxu4,2726
112
- pyobo/sources/zfin.py,sha256=qB251aocDsZeHCE4i9wIZuWTfpv3lYuzEz5zK1zvgGE,4996
113
- pyobo/sources/kegg/__init__.py,sha256=g0Ui2giVNV_y8LYWJEz-1TIcp_NY8YWDuwHORw4RmKk,244
114
- pyobo/sources/kegg/api.py,sha256=CBTO72PIfLh6ZczDrPBDtnxEkuXN9_DCgXqQo6CNwQQ,4721
115
- pyobo/sources/kegg/genes.py,sha256=i0OOtso4bU1bz9UVckvsMGQ8DvJnQDhOSoHqv1wmqPc,3705
116
- pyobo/sources/kegg/genome.py,sha256=F0ymTvwAS55lWCuvUcn67uUwGad7_z-9JOeavRDjB1c,3984
117
- pyobo/sources/kegg/pathway.py,sha256=QXypKRrG2dcX9nFhGzSi0YgJeflNhfZd4MHHpUBGy1M,6187
118
- pyobo/sources/selventa/__init__.py,sha256=RHKjcBvyovcyJVRhfSU7oCyNY9j79Qos7GCfdmh_riM,279
119
- pyobo/sources/selventa/schem.py,sha256=XvTMhX4QLPAAOfN9mGwM_aEdVfemv2lqO-PqbI4_YUo,1329
120
- pyobo/sources/selventa/scomp.py,sha256=N30DQ3ElGLODcbHhRvRnq6t8b4Yl7lAqNJFM3Nrqc1E,1704
121
- pyobo/sources/selventa/sdis.py,sha256=5LRPNHJonDZ2aojg6juTsBNbGKv55k8dtFex9LHYDdA,1454
122
- pyobo/sources/selventa/sfam.py,sha256=F9HzH_OZucofsAkOkvinyoiUmnw3_0pBMB7pgU9fSZg,1620
123
- pyobo/sources/umls/__init__.py,sha256=L49nPxoXFtFHwzP327cEOTr1oJrKAz7_nS2tahajpnY,104
124
- pyobo/sources/umls/__main__.py,sha256=mz2UqO02rnA68XM3420Nev4yocBn20QFSqU3E0oqNx8,133
125
- pyobo/sources/umls/get_synonym_types.py,sha256=5u1ZEl8gp_StuQxrasvHK4S0DyVWdgp_rLzo3aFOALI,1111
126
- pyobo/sources/umls/synonym_types.tsv,sha256=z--ngeAqA_Kk8ft2YD8qOU_XUxhnTxF0OhL8jRd5xqo,8551
127
- pyobo/sources/umls/umls.py,sha256=C3UXVd1iSlj5TC6Ib1T1oDIyJ4pIveNeGPK8ORkRtG4,4318
128
- pyobo/sources/uniprot/__init__.py,sha256=dsL0BvfMn3O_swtNhzQpjJUlP56NUBCcjSYdFvRlwmI,225
129
- pyobo/sources/uniprot/uniprot.py,sha256=WVSxy6cDPYu5S69_V5_dzRdsU6aSVm-rFXvmEcuk8eI,6105
130
- pyobo/sources/uniprot/uniprot_ptm.py,sha256=ze1cf0_kkqslhS-lXa7EdfasV4reUDp6niJat6yymT8,3551
131
- pyobo/ssg/__init__.py,sha256=Q5vYmk1LZwriShmA3TcYZ1Z1yiyjTWItcGxep5Fi2pw,5390
132
- pyobo/ssg/base.html,sha256=_vldUCa-gL2YTNY6GgAuxNT3TgaED585vF_q7TrrjYs,2844
133
- pyobo/ssg/index.html,sha256=zDGkwIQBtbpnhCYALXQ0vr7qsVmAqDtbwOyPqU3hZ8s,3993
134
- pyobo/ssg/term.html,sha256=QU6piGOq4dq8zlNhJvLFxqFjhVQyWlkiG31I0Sg5frg,3559
135
- pyobo/ssg/typedef.html,sha256=KrdqzB6xjt689bG33D26AL-11JrvNuEkoxNNI-EG-Tg,2038
136
- pyobo/struct/__init__.py,sha256=F5iav-0rnkLrldDxDPVeDt4zd1tXYBKICoKODJBk_kQ,671
137
- pyobo/struct/reference.py,sha256=U2qHIANj_0XhSxh7UBaXUiOXWtVjtyIBeDQ03heWuxA,5712
138
- pyobo/struct/struct.py,sha256=bkZv5H_sZFaWQr3cXA5F6JQbqg_OtVfMBV4mS10aHKk,54398
139
- pyobo/struct/typedef.py,sha256=spRRFWV-lV7yOU6HHnxAAFA-4ap6bm3l27KV-bmdLlc,13498
140
- pyobo/struct/utils.py,sha256=-XHuCETp7jPNhjHCW72gikaKoaiTPTNhDK5BZYyJsVw,815
141
- pyobo/utils/__init__.py,sha256=wXtcjcasWRBtJdTSMCC3jT8yFG8ZkQC-Xdh9lLiQDAo,42
142
- pyobo/utils/cache.py,sha256=bmuEE0DyppY6szNEzkS1tLLKfsLIrHQFhp0P-q94KFs,2677
143
- pyobo/utils/io.py,sha256=GiOittPhSJKc-acmj6h3DGSvLnPDntRIiUhjuCEUwj8,4756
144
- pyobo/utils/iter.py,sha256=VyISqr04Pg2xLSLJhypUuZnh7WzxVmpp3MsASCuL8Tk,1475
145
- pyobo/utils/misc.py,sha256=WfvJ_AGge8plp9IIlAGiahPxoCiWAow4t_-ncr7AjwY,2857
146
- pyobo/utils/ndex_utils.py,sha256=gxmGfR_O-ZMOsBil_YFSn99x_Fvatg7O8s9iZp4Iy10,2351
147
- pyobo/utils/path.py,sha256=-IVv_0H4Q790-ymmLdOlFgFSDuDubh9jZpPtDQzf-hI,3931
148
- pyobo/xrefdb/__init__.py,sha256=0W6AuvghFHQ1zY-Dq26z8V_MRC9xL39aWqLb-JbU8T8,74
149
- pyobo/xrefdb/bengo.py,sha256=DUhvdWvjNg2rfa99x3pfkonKERmylbt06u5GLlTZ10Q,1312
150
- pyobo/xrefdb/canonicalizer.py,sha256=gtwOoOMmBSCnXrlGfAyuryhT16F87I9HAOd2wi0O7I0,7421
151
- pyobo/xrefdb/priority.py,sha256=QfaKJ4U_6d1JlVZX_vM1s6T35bdc1-PiQH3--WTLAK0,1203
152
- pyobo/xrefdb/xrefs_pipeline.py,sha256=I0zsukpuOBIBIM2vh4K3A0UuaI6l56qt3is8NAzYTaU,6219
153
- pyobo/xrefdb/sources/__init__.py,sha256=2eRNhpQJsPN4vTwFrk2j8RK34P6GSh7_tWIRoPJrpGI,1587
154
- pyobo/xrefdb/sources/biomappings.py,sha256=110puNUl0CbIBXFovEpMeW25QsnIetteWPmCCQ00s3Q,919
155
- pyobo/xrefdb/sources/cbms2019.py,sha256=neUfZsmLEi0kNKaOHtMCpnCyvcc4VD1KX88ldhLjYoo,2843
156
- pyobo/xrefdb/sources/chembl.py,sha256=cYjZwwS8NXsunjeHxGziUvZomMw9qdwUkCjxX0GvQKc,2662
157
- pyobo/xrefdb/sources/compath.py,sha256=IS6kgkVTYQHgy3gm6GhrHkfUStfjd0z5W_w8KrWb5Rs,2334
158
- pyobo/xrefdb/sources/famplex.py,sha256=pAbfFjRs_tPuxTJWJqvPT5p3ZKIqtgT0xqn2GizJ3-4,1833
159
- pyobo/xrefdb/sources/gilda.py,sha256=aYMFXMbDKB-_HqPMzEIUhvz6YahJiuyAcNgo2KfFalk,1070
160
- pyobo/xrefdb/sources/intact.py,sha256=F0z6WrOwI79aZSuM5MsvQwzqoyzh9J0UuB4Mseoj9X8,2966
161
- pyobo/xrefdb/sources/ncit.py,sha256=unoIKJqdcfitTc6pU9P1SxJ1w8ax0iDjvEOlqe64nCY,3745
162
- pyobo/xrefdb/sources/pubchem.py,sha256=GaqgqtSV-T_P-900nL3alPx_ZB36MlmnEepOnZMONA4,780
163
- pyobo/xrefdb/sources/wikidata.py,sha256=bOI2zUkkLbmXvOMJZmVWq1xKlMCuL_3l1NVsaoJr1x4,3387
164
- pyobo-0.10.11.dist-info/LICENSE,sha256=GRbxxtZEWtZiFGDENk1gntCQK4HEJYYbylEJEwpSLao,1076
165
- pyobo-0.10.11.dist-info/METADATA,sha256=rSYHdngGuda1C3fkDGxwpYfljYY_kFx4VZV0eZoQbF8,20046
166
- pyobo-0.10.11.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
167
- pyobo-0.10.11.dist-info/entry_points.txt,sha256=Du5V6qw_T917Z5ZoMhLTTJoolK7kkVuUWkdE7aJWea0,669
168
- pyobo-0.10.11.dist-info/top_level.txt,sha256=oVdkT-pbiGoSdGSQplXFuP1KQGJNf4GdRC65jn6y9t0,6
169
- pyobo-0.10.11.dist-info/RECORD,,