pyobo 0.10.12__py3-none-any.whl → 0.11.1__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 (153) 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 +31 -32
  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 +61 -5
  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 +0 -2
  20. pyobo/cli/utils.py +0 -2
  21. pyobo/constants.py +1 -33
  22. pyobo/getters.py +19 -26
  23. pyobo/gilda_utils.py +19 -17
  24. pyobo/identifier_utils.py +10 -10
  25. pyobo/mocks.py +5 -6
  26. pyobo/normalizer.py +24 -24
  27. pyobo/obographs.py +8 -5
  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/resources/so.py +55 -0
  38. pyobo/resources/so.tsv +2604 -0
  39. pyobo/sources/README.md +15 -0
  40. pyobo/sources/__init__.py +0 -2
  41. pyobo/sources/agrovoc.py +3 -3
  42. pyobo/sources/antibodyregistry.py +2 -3
  43. pyobo/sources/biogrid.py +4 -4
  44. pyobo/sources/ccle.py +3 -4
  45. pyobo/sources/cgnc.py +1 -3
  46. pyobo/sources/chebi.py +2 -4
  47. pyobo/sources/chembl.py +1 -3
  48. pyobo/sources/civic_gene.py +2 -3
  49. pyobo/sources/complexportal.py +57 -20
  50. pyobo/sources/conso.py +2 -4
  51. pyobo/sources/cpt.py +1 -3
  52. pyobo/sources/credit.py +1 -1
  53. pyobo/sources/cvx.py +1 -3
  54. pyobo/sources/depmap.py +3 -4
  55. pyobo/sources/dictybase_gene.py +15 -12
  56. pyobo/sources/drugbank.py +6 -7
  57. pyobo/sources/drugbank_salt.py +3 -4
  58. pyobo/sources/drugcentral.py +9 -8
  59. pyobo/sources/expasy.py +33 -16
  60. pyobo/sources/famplex.py +3 -5
  61. pyobo/sources/flybase.py +5 -6
  62. pyobo/sources/geonames.py +1 -1
  63. pyobo/sources/gmt_utils.py +5 -6
  64. pyobo/sources/go.py +4 -6
  65. pyobo/sources/gwascentral_phenotype.py +1 -3
  66. pyobo/sources/gwascentral_study.py +2 -3
  67. pyobo/sources/hgnc.py +30 -26
  68. pyobo/sources/hgncgenefamily.py +9 -11
  69. pyobo/sources/icd10.py +3 -4
  70. pyobo/sources/icd11.py +3 -4
  71. pyobo/sources/icd_utils.py +6 -7
  72. pyobo/sources/interpro.py +3 -5
  73. pyobo/sources/itis.py +1 -3
  74. pyobo/sources/kegg/__init__.py +0 -2
  75. pyobo/sources/kegg/api.py +3 -4
  76. pyobo/sources/kegg/genes.py +3 -4
  77. pyobo/sources/kegg/genome.py +19 -9
  78. pyobo/sources/kegg/pathway.py +5 -6
  79. pyobo/sources/mesh.py +19 -21
  80. pyobo/sources/mgi.py +1 -3
  81. pyobo/sources/mirbase.py +13 -9
  82. pyobo/sources/mirbase_constants.py +0 -2
  83. pyobo/sources/mirbase_family.py +1 -3
  84. pyobo/sources/mirbase_mature.py +1 -3
  85. pyobo/sources/msigdb.py +4 -5
  86. pyobo/sources/ncbigene.py +3 -5
  87. pyobo/sources/npass.py +2 -4
  88. pyobo/sources/omim_ps.py +1 -3
  89. pyobo/sources/pathbank.py +35 -28
  90. pyobo/sources/pfam.py +1 -3
  91. pyobo/sources/pfam_clan.py +1 -3
  92. pyobo/sources/pid.py +3 -5
  93. pyobo/sources/pombase.py +7 -6
  94. pyobo/sources/pubchem.py +2 -3
  95. pyobo/sources/reactome.py +30 -11
  96. pyobo/sources/rgd.py +3 -4
  97. pyobo/sources/rhea.py +7 -8
  98. pyobo/sources/ror.py +3 -2
  99. pyobo/sources/selventa/__init__.py +0 -2
  100. pyobo/sources/selventa/schem.py +1 -3
  101. pyobo/sources/selventa/scomp.py +1 -3
  102. pyobo/sources/selventa/sdis.py +1 -3
  103. pyobo/sources/selventa/sfam.py +1 -3
  104. pyobo/sources/sgd.py +1 -3
  105. pyobo/sources/slm.py +29 -17
  106. pyobo/sources/umls/__init__.py +0 -2
  107. pyobo/sources/umls/__main__.py +0 -2
  108. pyobo/sources/umls/get_synonym_types.py +1 -1
  109. pyobo/sources/umls/umls.py +2 -4
  110. pyobo/sources/uniprot/__init__.py +0 -2
  111. pyobo/sources/uniprot/uniprot.py +11 -10
  112. pyobo/sources/uniprot/uniprot_ptm.py +6 -5
  113. pyobo/sources/utils.py +3 -5
  114. pyobo/sources/wikipathways.py +1 -3
  115. pyobo/sources/zfin.py +20 -9
  116. pyobo/ssg/__init__.py +3 -2
  117. pyobo/struct/__init__.py +0 -2
  118. pyobo/struct/reference.py +22 -23
  119. pyobo/struct/struct.py +132 -116
  120. pyobo/struct/typedef.py +14 -10
  121. pyobo/struct/utils.py +0 -2
  122. pyobo/utils/__init__.py +0 -2
  123. pyobo/utils/cache.py +14 -6
  124. pyobo/utils/io.py +9 -10
  125. pyobo/utils/iter.py +5 -6
  126. pyobo/utils/misc.py +1 -3
  127. pyobo/utils/ndex_utils.py +6 -7
  128. pyobo/utils/path.py +4 -5
  129. pyobo/version.py +3 -5
  130. pyobo/xrefdb/__init__.py +0 -2
  131. pyobo/xrefdb/canonicalizer.py +27 -18
  132. pyobo/xrefdb/priority.py +0 -2
  133. pyobo/xrefdb/sources/__init__.py +3 -4
  134. pyobo/xrefdb/sources/biomappings.py +0 -2
  135. pyobo/xrefdb/sources/cbms2019.py +0 -2
  136. pyobo/xrefdb/sources/chembl.py +0 -2
  137. pyobo/xrefdb/sources/compath.py +1 -3
  138. pyobo/xrefdb/sources/famplex.py +3 -5
  139. pyobo/xrefdb/sources/gilda.py +0 -2
  140. pyobo/xrefdb/sources/intact.py +5 -5
  141. pyobo/xrefdb/sources/ncit.py +1 -3
  142. pyobo/xrefdb/sources/pubchem.py +2 -5
  143. pyobo/xrefdb/sources/wikidata.py +2 -4
  144. pyobo/xrefdb/xrefs_pipeline.py +15 -16
  145. {pyobo-0.10.12.dist-info → pyobo-0.11.1.dist-info}/LICENSE +1 -1
  146. pyobo-0.11.1.dist-info/METADATA +711 -0
  147. pyobo-0.11.1.dist-info/RECORD +173 -0
  148. {pyobo-0.10.12.dist-info → pyobo-0.11.1.dist-info}/WHEEL +1 -1
  149. pyobo-0.11.1.dist-info/entry_points.txt +2 -0
  150. pyobo-0.10.12.dist-info/METADATA +0 -499
  151. pyobo-0.10.12.dist-info/RECORD +0 -169
  152. pyobo-0.10.12.dist-info/entry_points.txt +0 -15
  153. {pyobo-0.10.12.dist-info → pyobo-0.11.1.dist-info}/top_level.txt +0 -0
@@ -1,499 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: pyobo
3
- Version: 0.10.12
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.12
23
- Classifier: Programming Language :: Python :: 3.11
24
- Classifier: Programming Language :: Python :: 3.10
25
- Classifier: Programming Language :: Python :: 3.9
26
- Classifier: Programming Language :: Python :: 3 :: Only
27
- Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
28
- Classifier: Topic :: Scientific/Engineering :: Chemistry
29
- Requires-Python: >=3.9
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<8.0; 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=khE82G0qbKjyBSSSKnJSQFZDmn1Rhn06quKg9XbZzZ4,3047
5
- pyobo/getters.py,sha256=37e7pcTqU-uVjx_XctT9pJMn7zaazsNfcyWoe7KMHi0,15565
6
- pyobo/gilda_utils.py,sha256=cUv1WaZtzvu6Eb33ua4XShXXYcoD5StoEhNn3WcXN9c,8180
7
- pyobo/identifier_utils.py,sha256=Ivjai_uBk2Qodo1y6RTej4FjqT6lSGnZxgwRNnt-zPk,4484
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=sCC8RCUysmyVQRy8g_YJHLswr0BzQhxUJMMhe350l9A,21272
13
- pyobo/resource_utils.py,sha256=JBcJRihZhNwp78-qWZPrzSCGoYfyOjzBwMkfmOkO_no,4289
14
- pyobo/version.py,sha256=-M7dCNE1QohvaQ27gU5nWrB8AJHFKX5mla7gvx3HugI,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=qf_YjV631lyXezSyd3vW43kxP_Z1rSdU_VH3S2BZ8ZA,8405
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=cpYzdGiFmgWJB5PeelyIfFyDdUflmmAS2h_M65SGztc,1245
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=1tjSaEaMxntGNxoe4tm8Gs2dQjFDTAH3oyrC_1xIrco,10160
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=Fxsxq4ahr5wJbqR6-v9W-Rp1bjbcsr81q6RMq6eCMq0,3836
56
- pyobo/sources/agrovoc.py,sha256=J425AyyOVAeqeyN5MhmAR9OtJom41GDvKArfyz1iIU8,795
57
- pyobo/sources/antibodyregistry.py,sha256=bA84wQBInOqAKGA7YZI3pq4vIqSx2rWuIOUuTwrpdmQ,3332
58
- pyobo/sources/biogrid.py,sha256=fqKE6oRC_dgHuKLPZf6cnadg-cCOejaexDjGdoVQmrs,3325
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/credit.py,sha256=UD_QYfSBvWOejsLaN28WpN2ci_aozPHI7mf1Wbk0uwE,2008
68
- pyobo/sources/cvx.py,sha256=FZAghQxkefWsxT1nTTUb56NgteRbAmawpOo3IdAfPAQ,2836
69
- pyobo/sources/depmap.py,sha256=VuZduDgCduiAHPLwPDXgWpxhMSOZCC4UsxFdj7hNkYQ,3656
70
- pyobo/sources/dictybase_gene.py,sha256=EgWBwUZ83ev7x5Lp_nUkgSq2zumkDjJ7_13m3f6kJz0,2564
71
- pyobo/sources/drugbank.py,sha256=pb2IdVQF4FqDvefwRdqlDV5j6pR9R1b3rGxHC-GSWb4,11028
72
- pyobo/sources/drugbank_salt.py,sha256=hx16G41mP2KXT4fsAQRCRkJMGn-z5cafs-bwm4wMtwo,1783
73
- pyobo/sources/drugcentral.py,sha256=05mGolBIyKCxAYzpH9LY_ZQrTVnizup2JUiWi2wW9OI,3587
74
- pyobo/sources/expasy.py,sha256=Ul6DFtHKw3fU1ec93c9f29kXxod2Rn-jPWOYl1xrRa8,10051
75
- pyobo/sources/famplex.py,sha256=bn3WaJdrDf9BxsG9vnnnnGOwCrnrJ-vTMxOnxgrtUb4,5816
76
- pyobo/sources/flybase.py,sha256=0-BCNsp-L-CgGPN9VdJec6-8e4-fJuzaZAZiNra3ZUQ,5768
77
- pyobo/sources/geonames.py,sha256=SU5i1_UWjnCKLz4yWKZThSJp5dqJdNXj9VL-wWUeiNg,8554
78
- pyobo/sources/gmt_utils.py,sha256=NAWyUZ1p1HcO8RPL9mEEcL9KoaBDPuU-tbyG2QLb98k,1401
79
- pyobo/sources/go.py,sha256=IJul9eAXxKifZiWKJL1Dl9PFDFdoPMQ0ZVydzhnRtX0,1275
80
- pyobo/sources/gwascentral_phenotype.py,sha256=dCzyw_jbmhol69Li0g2ocMQJRqjoV2fZM_pno6i7xyA,1889
81
- pyobo/sources/gwascentral_study.py,sha256=_YH9TRWsCOHjOrJ2pAqQ7fi_HmF1WbMmTUj5iqWDUwY,2812
82
- pyobo/sources/hgnc.py,sha256=VDiHNbGms3xUyAPjRvkFxGfzR7Jdi2CG5HEtKzM1EGA,15960
83
- pyobo/sources/hgncgenefamily.py,sha256=o7gCI5raXkCMr8ONfAZpRW7PtsZ8lkRC4T1kEjTxBn4,3645
84
- pyobo/sources/icd10.py,sha256=KhenR1U8LvZQF97mRZIoSEE_daKcJ2hTJ41BQU7SNuM,2286
85
- pyobo/sources/icd11.py,sha256=04nLt-Lr64hAroOLH4OP-iNbuIjBk-mYcg-Ib34zgMM,2834
86
- pyobo/sources/icd_utils.py,sha256=c1Xkk9YAyKQ-vvnPud5GKq5ygZVbd1j0NFSml3RjQZ0,3155
87
- pyobo/sources/interpro.py,sha256=sWla5FDOkzA8elzeNHXOMD0nEVIbNK7jg4UZ0Zp7BfI,4934
88
- pyobo/sources/itis.py,sha256=LXS4MTL7OMmdfo-ypoF75UJkePw7VnHDrgq10RF_VUk,2967
89
- pyobo/sources/mesh.py,sha256=bERu2apELBxM4DVA-ViuJZzNfaL0dvrNZfPRQFWyPAA,12163
90
- pyobo/sources/mgi.py,sha256=c0CiiH_LolAFdHPNu1lpLeAzHq20wVLyOrLRTkLYxhY,5766
91
- pyobo/sources/mirbase.py,sha256=NMqZfT7CbbetqCV-KdGjHJmz2uM5QvdF_M1BxKi1ZCw,6349
92
- pyobo/sources/mirbase_constants.py,sha256=X7KhJDp1saGrdBwUR9fQSWwebzns5f-mEF4qWSETs2k,2023
93
- pyobo/sources/mirbase_family.py,sha256=Yj3oXaeBWDxcmBKnvOl0q_7nzlye5EXhSJPWlV3YpT8,2167
94
- pyobo/sources/mirbase_mature.py,sha256=nvWcQVDMBucPu6v5DLFb_W_9fz_J_Id7HZrilkUhaFI,1504
95
- pyobo/sources/msigdb.py,sha256=o5thqA4-4GzUE3PUIEad-iznYh6NNLKqkSXCbea_rZM,5021
96
- pyobo/sources/ncbigene.py,sha256=qipZEaaXop289vRro_NS8BB0_t-c738lJItWSjzD7PI,5055
97
- pyobo/sources/npass.py,sha256=AnZTNCsV4JD5tPCenoU4RyBxnEmVk_tA_4rbni99KcY,2814
98
- pyobo/sources/omim_ps.py,sha256=uULW_1gmYIE66O85GdLCGbdmsi9qxcS7tZziOny0wc0,1020
99
- pyobo/sources/pathbank.py,sha256=yhdS4BCbGxQf0o3HCGzL2cYRY7zyvHvDzzSBkkezoog,4989
100
- pyobo/sources/pfam.py,sha256=aHXdXmoG6xyNkScHft_xYe4J2DzRr22EinyfjpmwEj4,1846
101
- pyobo/sources/pfam_clan.py,sha256=hjJ0UUEcrNoaQVWbXZ_EaTWFo4iB9VG9Sp6pcO90gxY,1340
102
- pyobo/sources/pid.py,sha256=ZEbiYpbZL9_aOCEJWw0I3H5f7Q2RhQuNy5PUZfs0orU,4570
103
- pyobo/sources/pombase.py,sha256=nRMxk2FuQZv6KnL8LBxqZbVtvynvneLe39i5V3dYAtw,3601
104
- pyobo/sources/pubchem.py,sha256=ZnbRh1hCSAVawfVCNSy43kvIBXslq4lX8OlArnbo5sE,5282
105
- pyobo/sources/reactome.py,sha256=H-hMMrbf2mElOLDu_hYZgurYLYTZvrQ7E1dyvaWKvSM,5084
106
- pyobo/sources/rgd.py,sha256=v-4xH5w2C58J_hRI5V8Eof7EiTPofVlIwFA-3c2jyhg,5397
107
- pyobo/sources/rhea.py,sha256=nt2j7LMiuKM7zaVflSUoWNj7J8EnsRVfigFK9XXuNRg,7781
108
- pyobo/sources/ror.py,sha256=Omu5DYStYoUyenEfNOwsQZbmZTZQZ0DvToXrT3pLFYc,7364
109
- pyobo/sources/sgd.py,sha256=DOcRxEJGrHEOsaIiWat2x9ER2HnfnU3l8lqr3IktblA,2150
110
- pyobo/sources/slm.py,sha256=ai_Zp0tqBIanMZ7q7b5x6w9KdTTCEqA4PhX0ToaF594,3804
111
- pyobo/sources/utils.py,sha256=tmCGXGxHVrYkS5E1-k2SZqL8H4Tv8dFrkoIEJ0xzVmQ,1119
112
- pyobo/sources/wikipathways.py,sha256=ZNi3lGQ4HbJIBpIq3IMvjiYuvWPuqPysjs8TB6kMxu4,2726
113
- pyobo/sources/zfin.py,sha256=qB251aocDsZeHCE4i9wIZuWTfpv3lYuzEz5zK1zvgGE,4996
114
- pyobo/sources/kegg/__init__.py,sha256=g0Ui2giVNV_y8LYWJEz-1TIcp_NY8YWDuwHORw4RmKk,244
115
- pyobo/sources/kegg/api.py,sha256=CBTO72PIfLh6ZczDrPBDtnxEkuXN9_DCgXqQo6CNwQQ,4721
116
- pyobo/sources/kegg/genes.py,sha256=i0OOtso4bU1bz9UVckvsMGQ8DvJnQDhOSoHqv1wmqPc,3705
117
- pyobo/sources/kegg/genome.py,sha256=F0ymTvwAS55lWCuvUcn67uUwGad7_z-9JOeavRDjB1c,3984
118
- pyobo/sources/kegg/pathway.py,sha256=QXypKRrG2dcX9nFhGzSi0YgJeflNhfZd4MHHpUBGy1M,6187
119
- pyobo/sources/selventa/__init__.py,sha256=RHKjcBvyovcyJVRhfSU7oCyNY9j79Qos7GCfdmh_riM,279
120
- pyobo/sources/selventa/schem.py,sha256=XvTMhX4QLPAAOfN9mGwM_aEdVfemv2lqO-PqbI4_YUo,1329
121
- pyobo/sources/selventa/scomp.py,sha256=N30DQ3ElGLODcbHhRvRnq6t8b4Yl7lAqNJFM3Nrqc1E,1704
122
- pyobo/sources/selventa/sdis.py,sha256=5LRPNHJonDZ2aojg6juTsBNbGKv55k8dtFex9LHYDdA,1454
123
- pyobo/sources/selventa/sfam.py,sha256=F9HzH_OZucofsAkOkvinyoiUmnw3_0pBMB7pgU9fSZg,1620
124
- pyobo/sources/umls/__init__.py,sha256=L49nPxoXFtFHwzP327cEOTr1oJrKAz7_nS2tahajpnY,104
125
- pyobo/sources/umls/__main__.py,sha256=mz2UqO02rnA68XM3420Nev4yocBn20QFSqU3E0oqNx8,133
126
- pyobo/sources/umls/get_synonym_types.py,sha256=5u1ZEl8gp_StuQxrasvHK4S0DyVWdgp_rLzo3aFOALI,1111
127
- pyobo/sources/umls/synonym_types.tsv,sha256=z--ngeAqA_Kk8ft2YD8qOU_XUxhnTxF0OhL8jRd5xqo,8551
128
- pyobo/sources/umls/umls.py,sha256=C3UXVd1iSlj5TC6Ib1T1oDIyJ4pIveNeGPK8ORkRtG4,4318
129
- pyobo/sources/uniprot/__init__.py,sha256=dsL0BvfMn3O_swtNhzQpjJUlP56NUBCcjSYdFvRlwmI,225
130
- pyobo/sources/uniprot/uniprot.py,sha256=FNfLttMPFnYL8DECoa1I6j4qAxg6nRo_VzLqFYkDOYM,6114
131
- pyobo/sources/uniprot/uniprot_ptm.py,sha256=ze1cf0_kkqslhS-lXa7EdfasV4reUDp6niJat6yymT8,3551
132
- pyobo/ssg/__init__.py,sha256=Q5vYmk1LZwriShmA3TcYZ1Z1yiyjTWItcGxep5Fi2pw,5390
133
- pyobo/ssg/base.html,sha256=_vldUCa-gL2YTNY6GgAuxNT3TgaED585vF_q7TrrjYs,2844
134
- pyobo/ssg/index.html,sha256=zDGkwIQBtbpnhCYALXQ0vr7qsVmAqDtbwOyPqU3hZ8s,3993
135
- pyobo/ssg/term.html,sha256=QU6piGOq4dq8zlNhJvLFxqFjhVQyWlkiG31I0Sg5frg,3559
136
- pyobo/ssg/typedef.html,sha256=KrdqzB6xjt689bG33D26AL-11JrvNuEkoxNNI-EG-Tg,2038
137
- pyobo/struct/__init__.py,sha256=F5iav-0rnkLrldDxDPVeDt4zd1tXYBKICoKODJBk_kQ,671
138
- pyobo/struct/reference.py,sha256=U2qHIANj_0XhSxh7UBaXUiOXWtVjtyIBeDQ03heWuxA,5712
139
- pyobo/struct/struct.py,sha256=oSEocxLlb4o51-qPhYu8Mi74S4w1FfaEDR8332wW124,54425
140
- pyobo/struct/typedef.py,sha256=IbYBL_FpTQqlZBsC8tq-DqD_mfGvfUaJz02gMIjtPO0,13900
141
- pyobo/struct/utils.py,sha256=-XHuCETp7jPNhjHCW72gikaKoaiTPTNhDK5BZYyJsVw,815
142
- pyobo/utils/__init__.py,sha256=wXtcjcasWRBtJdTSMCC3jT8yFG8ZkQC-Xdh9lLiQDAo,42
143
- pyobo/utils/cache.py,sha256=bmuEE0DyppY6szNEzkS1tLLKfsLIrHQFhp0P-q94KFs,2677
144
- pyobo/utils/io.py,sha256=GiOittPhSJKc-acmj6h3DGSvLnPDntRIiUhjuCEUwj8,4756
145
- pyobo/utils/iter.py,sha256=VyISqr04Pg2xLSLJhypUuZnh7WzxVmpp3MsASCuL8Tk,1475
146
- pyobo/utils/misc.py,sha256=WfvJ_AGge8plp9IIlAGiahPxoCiWAow4t_-ncr7AjwY,2857
147
- pyobo/utils/ndex_utils.py,sha256=gxmGfR_O-ZMOsBil_YFSn99x_Fvatg7O8s9iZp4Iy10,2351
148
- pyobo/utils/path.py,sha256=ZNJ3aOZT9xqyk8NSQ1jZLtTB5goFPlquVYAwvuGEkVQ,3972
149
- pyobo/xrefdb/__init__.py,sha256=0W6AuvghFHQ1zY-Dq26z8V_MRC9xL39aWqLb-JbU8T8,74
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=uM3g-OyOCsz7dINGcBkcqBs4lYwogTQhX3BZj1Bz5zo,1647
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=NyxfELxPE2uB0UPBzs27DcRFun7Wu9ZWy1bNsIX2bS0,2635
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=m6I_zYUGDe27EKhyNvjMSy1hpRcUURc7fuTxiTy8xlg,821
163
- pyobo/xrefdb/sources/wikidata.py,sha256=vrrbOBIIQimrghzishZ6yyE1L_ARgJDCoAogqfuUYDY,3585
164
- pyobo-0.10.12.dist-info/LICENSE,sha256=GRbxxtZEWtZiFGDENk1gntCQK4HEJYYbylEJEwpSLao,1076
165
- pyobo-0.10.12.dist-info/METADATA,sha256=WNna9-0XS_htOC_zl7-jLF05KGsjmau8rwTnUoLqQ-8,20031
166
- pyobo-0.10.12.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
167
- pyobo-0.10.12.dist-info/entry_points.txt,sha256=Du5V6qw_T917Z5ZoMhLTTJoolK7kkVuUWkdE7aJWea0,669
168
- pyobo-0.10.12.dist-info/top_level.txt,sha256=oVdkT-pbiGoSdGSQplXFuP1KQGJNf4GdRC65jn6y9t0,6
169
- pyobo-0.10.12.dist-info/RECORD,,