pyobo 0.12.0.dev0__tar.gz → 0.12.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/PKG-INFO +71 -125
  2. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/README.md +63 -110
  3. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/pyproject.toml +58 -22
  4. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/.DS_Store +0 -0
  5. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/__init__.py +1 -3
  6. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/alts.py +2 -1
  7. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/combine.py +2 -1
  8. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/edges.py +1 -1
  9. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/hierarchy.py +109 -15
  10. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/names.py +10 -9
  11. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/properties.py +9 -13
  12. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/utils.py +5 -4
  13. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/xrefs.py +23 -17
  14. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/cli/cli.py +36 -5
  15. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/cli/database.py +30 -2
  16. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/cli/database_utils.py +7 -13
  17. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/constants.py +0 -1
  18. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/getters.py +28 -80
  19. pyobo-0.12.2/src/pyobo/gilda_utils.py +74 -0
  20. pyobo-0.12.2/src/pyobo/identifier_utils/__init__.py +34 -0
  21. pyobo-0.12.0.dev0/src/pyobo/identifier_utils.py → pyobo-0.12.2/src/pyobo/identifier_utils/api.py +40 -38
  22. pyobo-0.12.2/src/pyobo/identifier_utils/relations/__init__.py +8 -0
  23. pyobo-0.12.2/src/pyobo/identifier_utils/relations/api.py +162 -0
  24. pyobo-0.12.2/src/pyobo/identifier_utils/relations/data.json +5824 -0
  25. pyobo-0.12.2/src/pyobo/identifier_utils/relations/data_owl.json +57 -0
  26. pyobo-0.12.2/src/pyobo/identifier_utils/relations/data_rdf.json +1 -0
  27. pyobo-0.12.2/src/pyobo/identifier_utils/relations/data_rdfs.json +7 -0
  28. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/ner/__init__.py +2 -0
  29. pyobo-0.12.2/src/pyobo/ner/normalizer.py +33 -0
  30. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/obographs.py +27 -23
  31. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/reader.py +13 -16
  32. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/__init__.py +6 -2
  33. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/bigg/bigg_metabolite.py +74 -19
  34. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/bigg/bigg_reaction.py +7 -1
  35. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/cgnc.py +9 -1
  36. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/chembl/chembl_target.py +16 -8
  37. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/clinicaltrials.py +4 -2
  38. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/credit.py +17 -6
  39. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/drugcentral.py +13 -4
  40. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/flybase.py +5 -5
  41. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/msigdb.py +10 -1
  42. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/nlm/utils.py +13 -2
  43. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/omim_ps.py +4 -4
  44. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pharmgkb/pharmgkb_chemical.py +5 -1
  45. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pharmgkb/pharmgkb_gene.py +1 -1
  46. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/ror.py +10 -3
  47. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/signor/signor_complexes.py +2 -0
  48. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/slm.py +5 -4
  49. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/functional/ontology.py +3 -1
  50. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/reference.py +8 -8
  51. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/struct.py +128 -82
  52. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/utils/cache.py +3 -4
  53. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/utils/io.py +38 -14
  54. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/utils/path.py +16 -19
  55. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/version.py +1 -1
  56. pyobo-0.12.0.dev0/src/pyobo/_reference_tmp.py +0 -35
  57. pyobo-0.12.0.dev0/src/pyobo/aws.py +0 -163
  58. pyobo-0.12.0.dev0/src/pyobo/cli/aws.py +0 -47
  59. pyobo-0.12.0.dev0/src/pyobo/gilda_utils.py +0 -151
  60. pyobo-0.12.0.dev0/src/pyobo/ner/normalizer.py +0 -226
  61. pyobo-0.12.0.dev0/src/pyobo/registries/__init__.py +0 -16
  62. pyobo-0.12.0.dev0/src/pyobo/registries/metaregistry.json +0 -626
  63. pyobo-0.12.0.dev0/src/pyobo/registries/metaregistry.py +0 -169
  64. pyobo-0.12.0.dev0/src/pyobo/resources/goc.py +0 -75
  65. pyobo-0.12.0.dev0/src/pyobo/resources/goc.tsv +0 -188
  66. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/LICENSE +0 -0
  67. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/__main__.py +0 -0
  68. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/__init__.py +0 -0
  69. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/metadata.py +0 -0
  70. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/relations.py +0 -0
  71. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/species.py +0 -0
  72. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/api/typedefs.py +0 -0
  73. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/cli/__init__.py +0 -0
  74. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/cli/lookup.py +0 -0
  75. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/cli/utils.py +0 -0
  76. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/mocks.py +0 -0
  77. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/ner/api.py +0 -0
  78. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/plugins.py +0 -0
  79. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/py.typed +0 -0
  80. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/reader_utils.py +0 -0
  81. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/resource_utils.py +0 -0
  82. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/resources/__init__.py +0 -0
  83. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/resources/ncbitaxon.py +0 -0
  84. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/resources/ncbitaxon.tsv.gz +0 -0
  85. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/resources/ro.py +0 -0
  86. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/resources/ro.tsv +0 -0
  87. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/resources/so.py +0 -0
  88. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/resources/so.tsv +0 -0
  89. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/README.md +0 -0
  90. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/agrovoc.py +0 -0
  91. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/antibodyregistry.py +0 -0
  92. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/bigg/__init__.py +0 -0
  93. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/bigg/bigg_compartment.py +0 -0
  94. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/bigg/bigg_model.py +0 -0
  95. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/biogrid.py +0 -0
  96. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/ccle.py +0 -0
  97. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/chebi.py +0 -0
  98. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/chembl/__init__.py +0 -0
  99. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/chembl/chembl_compound.py +0 -0
  100. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/civic_gene.py +0 -0
  101. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/complexportal.py +0 -0
  102. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/conso.py +0 -0
  103. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/cpt.py +0 -0
  104. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/cvx.py +0 -0
  105. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/depmap.py +0 -0
  106. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/dictybase_gene.py +0 -0
  107. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/drugbank/__init__.py +0 -0
  108. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/drugbank/drugbank.py +0 -0
  109. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/drugbank/drugbank_salt.py +0 -0
  110. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/expasy.py +0 -0
  111. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/famplex.py +0 -0
  112. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/gard.py +0 -0
  113. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/geonames/__init__.py +0 -0
  114. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/geonames/features.py +0 -0
  115. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/geonames/geonames.py +0 -0
  116. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/geonames/utils.py +0 -0
  117. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/gmt_utils.py +0 -0
  118. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/go.py +0 -0
  119. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/gtdb.py +0 -0
  120. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/gwascentral/__init__.py +0 -0
  121. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/gwascentral/gwascentral_phenotype.py +0 -0
  122. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/gwascentral/gwascentral_study.py +0 -0
  123. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/hgnc/__init__.py +0 -0
  124. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/hgnc/hgnc.py +0 -0
  125. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/hgnc/hgncgenefamily.py +0 -0
  126. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/icd/__init__.py +0 -0
  127. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/icd/icd10.py +0 -0
  128. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/icd/icd11.py +0 -0
  129. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/icd/icd_utils.py +0 -0
  130. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/interpro.py +0 -0
  131. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/itis.py +0 -0
  132. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/kegg/__init__.py +0 -0
  133. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/kegg/api.py +0 -0
  134. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/kegg/genes.py +0 -0
  135. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/kegg/genome.py +0 -0
  136. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/kegg/pathway.py +0 -0
  137. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/mesh.py +0 -0
  138. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/mgi.py +0 -0
  139. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/mirbase/__init__.py +0 -0
  140. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/mirbase/mirbase.py +0 -0
  141. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/mirbase/mirbase_constants.py +0 -0
  142. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/mirbase/mirbase_family.py +0 -0
  143. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/mirbase/mirbase_mature.py +0 -0
  144. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/ncbi/__init__.py +0 -0
  145. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/ncbi/ncbi_gc.py +0 -0
  146. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/ncbi/ncbigene.py +0 -0
  147. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/nih_reporter.py +0 -0
  148. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/nlm/__init__.py +0 -0
  149. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/nlm/nlm_catalog.py +0 -0
  150. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/nlm/nlm_publisher.py +0 -0
  151. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/npass.py +0 -0
  152. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pathbank.py +0 -0
  153. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pfam/__init__.py +0 -0
  154. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pfam/pfam.py +0 -0
  155. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pfam/pfam_clan.py +0 -0
  156. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pharmgkb/__init__.py +0 -0
  157. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pharmgkb/pharmgkb_disease.py +0 -0
  158. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pharmgkb/pharmgkb_pathway.py +0 -0
  159. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pharmgkb/pharmgkb_variant.py +0 -0
  160. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pharmgkb/utils.py +0 -0
  161. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pid.py +0 -0
  162. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pombase.py +0 -0
  163. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/pubchem.py +0 -0
  164. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/reactome.py +0 -0
  165. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/rgd.py +0 -0
  166. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/rhea.py +0 -0
  167. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/selventa/__init__.py +0 -0
  168. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/selventa/schem.py +0 -0
  169. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/selventa/scomp.py +0 -0
  170. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/selventa/sdis.py +0 -0
  171. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/selventa/sfam.py +0 -0
  172. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/sgd.py +0 -0
  173. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/signor/__init__.py +0 -0
  174. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/signor/download.py +0 -0
  175. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/umls/__init__.py +0 -0
  176. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/umls/__main__.py +0 -0
  177. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/umls/get_synonym_types.py +0 -0
  178. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/umls/sty.py +0 -0
  179. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/umls/synonym_types.tsv +0 -0
  180. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/umls/umls.py +0 -0
  181. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/unimod.py +0 -0
  182. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/uniprot/__init__.py +0 -0
  183. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/uniprot/uniprot.py +0 -0
  184. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/uniprot/uniprot_ptm.py +0 -0
  185. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/utils.py +0 -0
  186. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/wikipathways.py +0 -0
  187. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/sources/zfin.py +0 -0
  188. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/ssg/__init__.py +0 -0
  189. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/ssg/base.html +0 -0
  190. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/ssg/index.html +0 -0
  191. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/ssg/term.html +0 -0
  192. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/ssg/typedef.html +0 -0
  193. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/__init__.py +0 -0
  194. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/functional/__init__.py +0 -0
  195. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/functional/dsl.py +0 -0
  196. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/functional/macros.py +0 -0
  197. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/functional/obo_to_functional.py +0 -0
  198. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/functional/utils.py +0 -0
  199. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/struct_utils.py +0 -0
  200. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/typedef.py +0 -0
  201. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/utils.py +0 -0
  202. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/struct/vocabulary.py +0 -0
  203. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/utils/__init__.py +0 -0
  204. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/utils/iter.py +0 -0
  205. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/utils/misc.py +0 -0
  206. {pyobo-0.12.0.dev0 → pyobo-0.12.2}/src/pyobo/utils/ndex_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyobo
3
- Version: 0.12.0.dev0
3
+ Version: 0.12.2
4
4
  Summary: A python package for handling and generating OBO
5
5
  Keywords: snekpack,cookiecutter,ontologies,biomedical ontologies,life sciences,natural sciences,bioinformatics,cheminformatics,Open Biomedical Ontologies,OBO
6
6
  Author: Charles Tapley Hoyt
@@ -37,15 +37,16 @@ Requires-Dist: humanize
37
37
  Requires-Dist: tabulate
38
38
  Requires-Dist: cachier
39
39
  Requires-Dist: pystow>=0.7.0
40
- Requires-Dist: bioversions>=0.7.0
41
- Requires-Dist: bioregistry>=0.12.0
42
- Requires-Dist: bioontologies>=0.5.2
43
- Requires-Dist: ssslm>=0.0.9
40
+ Requires-Dist: bioversions>=0.8.0
41
+ Requires-Dist: bioregistry>=0.12.7
42
+ Requires-Dist: bioontologies>=0.7.2
43
+ Requires-Dist: ssslm>=0.0.13
44
44
  Requires-Dist: zenodo-client>=0.3.6
45
- Requires-Dist: class-resolver
45
+ Requires-Dist: class-resolver>=0.6.0
46
46
  Requires-Dist: psycopg2-binary
47
47
  Requires-Dist: pydantic>=2.0
48
- Requires-Dist: curies>=0.10.6
48
+ Requires-Dist: curies>=0.10.13
49
+ Requires-Dist: curies-processing>=0.1.0
49
50
  Requires-Dist: python-dateutil
50
51
  Requires-Dist: networkx>=3.4
51
52
  Requires-Dist: drugbank-downloader
@@ -55,14 +56,8 @@ Requires-Dist: clinicaltrials-downloader>=0.0.2
55
56
  Requires-Dist: nih-reporter-downloader>=0.0.1
56
57
  Requires-Dist: typing-extensions
57
58
  Requires-Dist: rdflib
58
- Requires-Dist: sphinx>=8 ; extra == 'docs'
59
- Requires-Dist: sphinx-rtd-theme>=3.0 ; extra == 'docs'
60
- Requires-Dist: sphinx-click ; extra == 'docs'
61
- Requires-Dist: sphinx-automodapi ; extra == 'docs'
62
59
  Requires-Dist: ssslm[gilda] ; extra == 'gilda'
63
60
  Requires-Dist: ssslm[gilda-slim] ; extra == 'gilda-slim'
64
- Requires-Dist: pytest ; extra == 'tests'
65
- Requires-Dist: coverage[toml] ; extra == 'tests'
66
61
  Maintainer: Charles Tapley Hoyt
67
62
  Maintainer-email: Charles Tapley Hoyt <cthoyt@gmail.com>
68
63
  Requires-Python: >=3.10
@@ -71,10 +66,8 @@ Project-URL: Documentation, https://pyobo.readthedocs.io
71
66
  Project-URL: Funding, https://github.com/sponsors/cthoyt
72
67
  Project-URL: Homepage, https://github.com/biopragmatics/pyobo
73
68
  Project-URL: Repository, https://github.com/biopragmatics/pyobo.git
74
- Provides-Extra: docs
75
69
  Provides-Extra: gilda
76
70
  Provides-Extra: gilda-slim
77
- Provides-Extra: tests
78
71
  Description-Content-Type: text/markdown
79
72
 
80
73
  <!--
@@ -120,14 +113,7 @@ identifiers. It also means all identifiers are strings, no exceptions.
120
113
 
121
114
  Note! The first time you run these, they have to download and cache all
122
115
  resources. We're not in the business of redistributing data, so all scripts
123
- should be completely reproducible. There's some AWS tools for
124
- hosting/downloading pre-compiled versions in `pyobo.aws` if you don't have time
125
- for that.
126
-
127
- Note! PyOBO can perform grounding in a limited number of cases, but it is _not_
128
- a general solution for named entity recognition (NER) or grounding. It's
129
- suggested to check `Gilda <https://github.com/indralab/gilda>`\_ for a
130
- no-nonsense solution.
116
+ should be completely reproducible.
131
117
 
132
118
  ### Mapping Identifiers and CURIEs
133
119
 
@@ -136,19 +122,11 @@ Get mapping of ChEBI identifiers to names:
136
122
  ```python
137
123
  import pyobo
138
124
 
139
- chebi_id_to_name = pyobo.get_id_name_mapping('chebi')
140
-
141
- name = chebi_id_to_name['132964']
142
- assert name == 'fluazifop-P-butyl'
143
- ```
144
-
145
- Or, you don't have time for two lines:
146
-
147
- ```python
148
- import pyobo
125
+ chebi_id_to_name = pyobo.get_id_name_mapping("chebi")
126
+ assert "fluazifop-P-butyl" == chebi_id_to_name["132964"]
149
127
 
150
- name = pyobo.get_name('chebi', '132964')
151
- assert name == 'fluazifop-P-butyl'
128
+ # or more directly
129
+ assert "fluazifop-P-butyl" == pyobo.get_name("chebi", "132964")
152
130
  ```
153
131
 
154
132
  Get reverse mapping of ChEBI names to identifiers:
@@ -156,10 +134,8 @@ Get reverse mapping of ChEBI names to identifiers:
156
134
  ```python
157
135
  import pyobo
158
136
 
159
- chebi_name_to_id = pyobo.get_name_id_mapping('chebi')
160
-
161
- identifier = chebi_name_to_id['fluazifop-P-butyl']
162
- assert identifier == '132964'
137
+ chebi_name_to_id = pyobo.get_name_id_mapping("chebi")
138
+ assert "132964" == chebi_name_to_id["fluazifop-P-butyl"]
163
139
  ```
164
140
 
165
141
  Maybe you live in CURIE world and just want to normalize something like
@@ -168,8 +144,7 @@ Maybe you live in CURIE world and just want to normalize something like
168
144
  ```python
169
145
  import pyobo
170
146
 
171
- name = pyobo.get_name_by_curie('CHEBI:132964')
172
- assert name == 'fluazifop-P-butyl'
147
+ assert "fluazifop-P-butyl" == pyobo.get_name_by_curie("CHEBI:132964")
173
148
  ```
174
149
 
175
150
  Sometimes you accidentally got an old CURIE. It can be mapped to the more recent
@@ -181,11 +156,11 @@ from pyobo import Reference
181
156
 
182
157
  # Look up DNA-binding transcription factor activity (go:0003700)
183
158
  # based on an old id
184
- primary_curie = pyobo.get_primary_curie('go:0001071')
185
- assert primary_curie == 'go:0003700'
159
+ primary_curie = pyobo.get_primary_curie("go:0001071")
160
+ assert primary_curie == "go:0003700"
186
161
 
187
162
  # If it's already the primary, it just gets returned
188
- assert Reference.from_curie('go:0003700') == pyobo.get_primary_curie('go:0003700')
163
+ assert Reference.from_curie("go:0003700") == pyobo.get_primary_curie("go:0003700")
189
164
  ```
190
165
 
191
166
  ### Mapping Species
@@ -196,11 +171,10 @@ WikiPathway identifiers to species (as NCBI taxonomy identifiers):
196
171
  ```python
197
172
  import pyobo
198
173
 
199
- wikipathways_id_to_species = pyobo.get_id_species_mapping('wikipathways')
174
+ wikipathways_id_to_species = pyobo.get_id_species_mapping("wikipathways")
200
175
 
201
176
  # Apoptosis (Homo sapiens)
202
- taxonomy_id = wikipathways_id_to_species['WP254']
203
- assert taxonomy_id == '9606'
177
+ assert "9606" == wikipathways_id_to_species["WP254"]
204
178
  ```
205
179
 
206
180
  Or, you don't have time for two lines:
@@ -209,8 +183,8 @@ Or, you don't have time for two lines:
209
183
  import pyobo
210
184
 
211
185
  # Apoptosis (Homo sapiens)
212
- taxonomy_id = pyobo.get_species('wikipathways', 'WP254')
213
- assert taxonomy_id == '9606'
186
+ taxonomy_id = pyobo.get_species("wikipathways", "WP254")
187
+ assert taxonomy_id == "9606"
214
188
  ```
215
189
 
216
190
  ### Grounding
@@ -222,16 +196,14 @@ it up and its preferred label.
222
196
  ```python
223
197
  import pyobo
224
198
 
225
- prefix, identifier, name = pyobo.ground('chebi', 'Fusilade II')
226
- assert prefix == 'chebi'
227
- assert identifier == '132964'
228
- assert name == 'fluazifop-P-butyl'
199
+ reference = pyobo.ground("chebi", "Fusilade II")
200
+ assert reference.prefix == "chebi"
201
+ assert reference.identifier == "132964"
202
+ assert reference.name == "fluazifop-P-butyl"
229
203
 
230
204
  # When failure happens...
231
- prefix, identifier, name = pyobo.ground('chebi', 'Definitely not a real name')
232
- assert prefix is None
233
- assert identifier is None
234
- assert name is None
205
+ reference = pyobo.ground("chebi", "Definitely not a real name")
206
+ assert reference is None
235
207
  ```
236
208
 
237
209
  If you're not really sure which namespace a name might belong to, you can try a
@@ -242,10 +214,10 @@ false positives in case of conflicts):
242
214
  import pyobo
243
215
 
244
216
  # looking for phenotypes/pathways
245
- prefix, identifier, name = pyobo.ground(['efo', 'go'], 'ERAD')
246
- assert prefix == 'go'
247
- assert identifier == '0030433'
248
- assert name == 'ubiquitin-dependent ERAD pathway'
217
+ reference = pyobo.ground(["efo", "go"], "ERAD")
218
+ assert reference.prefix == "go"
219
+ assert reference.identifier == "0030433"
220
+ assert reference.name == "ubiquitin-dependent ERAD pathway"
249
221
  ```
250
222
 
251
223
  ### Cross-referencing
@@ -255,10 +227,10 @@ Get xrefs from ChEBI to PubChem:
255
227
  ```python
256
228
  import pyobo
257
229
 
258
- chebi_id_to_pubchem_compound_id = pyobo.get_filtered_xrefs('chebi', 'pubchem.compound')
230
+ chebi_id_to_pubchem_compound_id = pyobo.get_filtered_xrefs("chebi", "pubchem.compound")
259
231
 
260
- pubchem_compound_id = chebi_id_to_pubchem_compound_id['132964']
261
- assert pubchem_compound_id == '3033674'
232
+ pubchem_compound_id = chebi_id_to_pubchem_compound_id["132964"]
233
+ assert pubchem_compound_id == "3033674"
262
234
  ```
263
235
 
264
236
  If you don't have time for two lines:
@@ -266,8 +238,8 @@ If you don't have time for two lines:
266
238
  ```python
267
239
  import pyobo
268
240
 
269
- pubchem_compound_id = pyobo.get_xref('chebi', '132964', 'pubchem.compound')
270
- assert pubchem_compound_id == '3033674'
241
+ pubchem_compound_id = pyobo.get_xref("chebi", "132964", "pubchem.compound")
242
+ assert pubchem_compound_id == "3033674"
271
243
  ```
272
244
 
273
245
  Get xrefs from Entrez to HGNC, but they're only available through HGNC, so you
@@ -276,13 +248,13 @@ need to flip them:
276
248
  ```python
277
249
  import pyobo
278
250
 
279
- hgnc_id_to_ncbigene_id = pyobo.get_filtered_xrefs('hgnc', 'ncbigene')
251
+ hgnc_id_to_ncbigene_id = pyobo.get_filtered_xrefs("hgnc", "ncbigene")
280
252
  ncbigene_id_to_hgnc_id = {
281
253
  ncbigene_id: hgnc_id
282
254
  for hgnc_id, ncbigene_id in hgnc_id_to_ncbigene_id.items()
283
255
  }
284
- mapt_hgnc = ncbigene_id_to_hgnc_id['4137']
285
- assert mapt_hgnc == '6893'
256
+ mapt_hgnc = ncbigene_id_to_hgnc_id["4137"]
257
+ assert mapt_hgnc == "6893"
286
258
  ```
287
259
 
288
260
  Since this is a common pattern, there's a keyword argument `flip` that does this
@@ -291,9 +263,9 @@ for you:
291
263
  ```python
292
264
  import pyobo
293
265
 
294
- ncbigene_id_to_hgnc_id = pyobo.get_filtered_xrefs('hgnc', 'ncbigene', flip=True)
295
- mapt_hgnc_id = ncbigene_id_to_hgnc_id['4137']
296
- assert mapt_hgnc_id == '6893'
266
+ ncbigene_id_to_hgnc_id = pyobo.get_filtered_xrefs("hgnc", "ncbigene", flip=True)
267
+ mapt_hgnc_id = ncbigene_id_to_hgnc_id["4137"]
268
+ assert mapt_hgnc_id == "6893"
297
269
  ```
298
270
 
299
271
  If you don't have time for two lines (I admit this one is a bit confusing) and
@@ -302,8 +274,8 @@ need to flip it:
302
274
  ```python
303
275
  import pyobo
304
276
 
305
- hgnc_id = pyobo.get_xref('hgnc', '4137', 'ncbigene', flip=True)
306
- assert hgnc_id == '6893'
277
+ hgnc_id = pyobo.get_xref("hgnc", "4137", "ncbigene", flip=True)
278
+ assert hgnc_id == "6893"
307
279
  ```
308
280
 
309
281
  ### Properties
@@ -315,11 +287,11 @@ basis.
315
287
  import pyobo
316
288
 
317
289
  # I don't make the rules. I wouldn't have chosen this as the key for this property. It could be any string
318
- chebi_smiles_property = 'http://purl.obolibrary.org/obo/chebi/smiles'
319
- chebi_id_to_smiles = pyobo.get_filtered_properties_mapping('chebi', chebi_smiles_property)
290
+ chebi_smiles_property = "http://purl.obolibrary.org/obo/chebi/smiles"
291
+ chebi_id_to_smiles = pyobo.get_filtered_properties_mapping("chebi", chebi_smiles_property)
320
292
 
321
- smiles = chebi_id_to_smiles['132964']
322
- assert smiles == 'C1(=CC=C(N=C1)OC2=CC=C(C=C2)O[C@@H](C(OCCCC)=O)C)C(F)(F)F'
293
+ smiles = chebi_id_to_smiles["132964"]
294
+ assert smiles == "C1(=CC=C(N=C1)OC2=CC=C(C=C2)O[C@@H](C(OCCCC)=O)C)C(F)(F)F"
323
295
  ```
324
296
 
325
297
  If you don't have time for two lines:
@@ -327,8 +299,8 @@ If you don't have time for two lines:
327
299
  ```python
328
300
  import pyobo
329
301
 
330
- smiles = pyobo.get_property('chebi', '132964', 'http://purl.obolibrary.org/obo/chebi/smiles')
331
- assert smiles == 'C1(=CC=C(N=C1)OC2=CC=C(C=C2)O[C@@H](C(OCCCC)=O)C)C(F)(F)F'
302
+ smiles = pyobo.get_property("chebi", "132964", "http://purl.obolibrary.org/obo/chebi/smiles")
303
+ assert smiles == "C1(=CC=C(N=C1)OC2=CC=C(C=C2)O[C@@H](C(OCCCC)=O)C)C(F)(F)F"
332
304
  ```
333
305
 
334
306
  ### Hierarchy
@@ -340,12 +312,12 @@ import pyobo
340
312
  from pyobo import Reference
341
313
 
342
314
  # check that go:0008219 ! cell death is an ancestor of go:0006915 ! apoptotic process
343
- assert Reference.from_curie('go:0008219') in pyobo.get_ancestors('go', '0006915')
315
+ assert Reference.from_curie("go:0008219") in pyobo.get_ancestors("go", "0006915")
344
316
 
345
317
  # check that go:0070246 ! natural killer cell apoptotic process is a
346
318
  # descendant of go:0006915 ! apoptotic process
347
- apopototic_process_descendants = pyobo.get_descendants('go', '0006915')
348
- assert Reference.from_curie('go:0070246') in apopototic_process_descendants
319
+ apopototic_process_descendants = pyobo.get_descendants("go", "0006915")
320
+ assert Reference.from_curie("go:0070246") in apopototic_process_descendants
349
321
  ```
350
322
 
351
323
  Get the sub-hierarchy below a given node:
@@ -355,11 +327,11 @@ import pyobo
355
327
  from pyobo import Reference
356
328
 
357
329
  # get the descendant graph of go:0006915 ! apoptotic process
358
- apopototic_process_subhierarchy = pyobo.get_subhierarchy('go', '0006915')
330
+ apopototic_process_subhierarchy = pyobo.get_subhierarchy("go", "0006915")
359
331
 
360
332
  # check that go:0070246 ! natural killer cell apoptotic process is a
361
333
  # descendant of go:0006915 ! apoptotic process through the subhierarchy
362
- assert Reference.from_curie('go:0070246') in apopototic_process_subhierarchy
334
+ assert Reference.from_curie("go:0070246") in apopototic_process_subhierarchy
363
335
  ```
364
336
 
365
337
  Get a hierarchy with properties preloaded in the node data dictionaries:
@@ -368,12 +340,12 @@ Get a hierarchy with properties preloaded in the node data dictionaries:
368
340
  import pyobo
369
341
  from pyobo import Reference
370
342
 
371
- prop = 'http://purl.obolibrary.org/obo/chebi/smiles'
372
- chebi_hierarchy = pyobo.get_hierarchy('chebi', properties=[prop])
343
+ prop = "http://purl.obolibrary.org/obo/chebi/smiles"
344
+ chebi_hierarchy = pyobo.get_hierarchy("chebi", properties=[prop])
373
345
 
374
- assert Reference.from_curie('chebi:132964') in chebi_hierarchy
375
- assert prop in chebi_hierarchy.nodes['chebi:132964']
376
- 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'
346
+ assert Reference.from_curie("chebi:132964") in chebi_hierarchy
347
+ assert prop in chebi_hierarchy.nodes["chebi:132964"]
348
+ 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"
377
349
  ```
378
350
 
379
351
  ### Relations
@@ -383,9 +355,9 @@ way)
383
355
 
384
356
  ```python
385
357
  >>> import pyobo
386
- >>> human_mapt_hgnc_id = '6893'
387
- >>> mouse_mapt_mgi_id = '97180'
388
- >>> hgnc_mgi_orthology_mapping = pyobo.get_relation_mapping('hgnc', 'ro:HOM0000017', 'mgi')
358
+ >>> human_mapt_hgnc_id = "6893"
359
+ >>> mouse_mapt_mgi_id = "97180"
360
+ >>> hgnc_mgi_orthology_mapping = pyobo.get_relation_mapping("hgnc", "ro:HOM0000017", "mgi")
389
361
  >>> assert mouse_mapt_mgi_id == hgnc_mgi_orthology_mapping[human_mapt_hgnc_id]
390
362
  ```
391
363
 
@@ -394,9 +366,9 @@ If you want to do it in one line, use:
394
366
  ```python
395
367
 
396
368
  >>> import pyobo
397
- >>> human_mapt_hgnc_id = '6893'
398
- >>> mouse_mapt_mgi_id = '97180'
399
- >>> assert mouse_mapt_mgi_id == pyobo.get_relation('hgnc', 'ro:HOM0000017', 'mgi', human_mapt_hgnc_id)
369
+ >>> human_mapt_hgnc_id = "6893"
370
+ >>> mouse_mapt_mgi_id = "97180"
371
+ >>> assert mouse_mapt_mgi_id == pyobo.get_relation("hgnc", "ro:HOM0000017", "mgi", human_mapt_hgnc_id)
400
372
  ```
401
373
 
402
374
  ### Writings Tests that Use PyOBO
@@ -412,8 +384,8 @@ import pyobo
412
384
  from pyobo.mocks import get_mock_id_name_mapping
413
385
 
414
386
  mock_id_name_mapping = get_mock_id_name_mapping({
415
- 'chebi': {
416
- '132964': 'fluazifop-P-butyl',
387
+ "chebi": {
388
+ "132964": "fluazifop-P-butyl",
417
389
  },
418
390
  })
419
391
 
@@ -421,34 +393,9 @@ class MyTestCase(unittest.TestCase):
421
393
  def my_test(self):
422
394
  with mock_id_name_mapping:
423
395
  # use functions directly, or use your functions that wrap them
424
- pyobo.get_name('chebi', '1234')
396
+ pyobo.get_name("chebi", "1234")
425
397
  ```
426
398
 
427
- ## Curation of the Bioregistry
428
-
429
- In order to normalize references and identify resources, PyOBO uses the
430
- [Bioregistry](https://github.com/bioregistry/bioregistry). It used to be a part
431
- of PyOBO, but has since been externalized for more general reuse.
432
-
433
- At
434
- [src/pyobo/registries/metaregistry.json](https://github.com/pyobo/pyobo/blob/master/src/pyobo/registries/metaregistry.json)
435
- is the curated "metaregistry". This is a source of information that contains all
436
- sorts of fixes for missing/wrong information in MIRIAM, OLS, and OBO Foundry;
437
- entries that don't appear in any of them; additional synonym information for
438
- each namespace/prefix; rules for normalizing xrefs and CURIEs, etc.
439
-
440
- Other entries in the metaregistry:
441
-
442
- - The `"remappings"->"full"` entry is a dictionary from strings that might
443
- follow `xref:` in a given OBO file that need to be completely replaced, due to
444
- incorrect formatting
445
- - The `"remappings"->"prefix"` entry contains a dictionary of prefixes for xrefs
446
- that need to be remapped. Several rules, for example, remove superfluous
447
- spaces that occur inside CURIEs or and others address instances of the GOGO
448
- issue.
449
- - The `"blacklists"` entry contains rules for throwing out malformed xrefs based
450
- on full string, just prefix, or just suffix.
451
-
452
399
  ## Troubleshooting
453
400
 
454
401
  The OBO Foundry seems to be pretty unstable with respect to the URLs to OBO
@@ -468,7 +415,6 @@ The most recent release can be installed from
468
415
  [PyPI](https://pypi.org/project/pyobo/) with uv:
469
416
 
470
417
  ```console
471
- python3 -m pip install pyobo
472
418
  $ uv pip install pyobo
473
419
  ```
474
420