pyobo 0.8.11__tar.gz → 0.8.13__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 (251) hide show
  1. {pyobo-0.8.11/src/pyobo.egg-info → pyobo-0.8.13}/PKG-INFO +1 -1
  2. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/conf.py +1 -1
  3. {pyobo-0.8.11 → pyobo-0.8.13}/setup.cfg +2 -2
  4. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/api/relations.py +3 -1
  5. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/gilda_utils.py +7 -3
  6. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/reader.py +2 -2
  7. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/expasy.py +14 -0
  8. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/hgnc.py +32 -10
  9. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/kegg/pathway.py +1 -3
  10. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/mgi.py +1 -1
  11. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/mirbase_mature.py +7 -2
  12. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/msigdb.py +1 -1
  13. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/npass.py +23 -28
  14. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/pombase.py +8 -4
  15. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/struct/struct.py +4 -1
  16. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/utils/misc.py +1 -1
  17. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/version.py +1 -1
  18. {pyobo-0.8.11 → pyobo-0.8.13/src/pyobo.egg-info}/PKG-INFO +1 -1
  19. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo.egg-info/requires.txt +1 -1
  20. {pyobo-0.8.11 → pyobo-0.8.13}/.readthedocs.yml +0 -0
  21. {pyobo-0.8.11 → pyobo-0.8.13}/LICENSE +0 -0
  22. {pyobo-0.8.11 → pyobo-0.8.13}/MANIFEST.in +0 -0
  23. {pyobo-0.8.11 → pyobo-0.8.13}/README.rst +0 -0
  24. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.Canonicalizer.rst +0 -0
  25. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.Obo.rst +0 -0
  26. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.OboNormalizer.rst +0 -0
  27. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.Reference.rst +0 -0
  28. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.Synonym.rst +0 -0
  29. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.SynonymTypeDef.rst +0 -0
  30. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.Term.rst +0 -0
  31. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.TypeDef.rst +0 -0
  32. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.ensure_path.rst +0 -0
  33. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.from_obo_path.rst +0 -0
  34. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.from_obonet.rst +0 -0
  35. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_alts_to_id.rst +0 -0
  36. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_ancestors.rst +0 -0
  37. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_definition.rst +0 -0
  38. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_descendants.rst +0 -0
  39. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_equivalent.rst +0 -0
  40. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_filtered_properties_df.rst +0 -0
  41. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_filtered_properties_mapping.rst +0 -0
  42. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_filtered_properties_multimapping.rst +0 -0
  43. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_filtered_relations_df.rst +0 -0
  44. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_filtered_xrefs.rst +0 -0
  45. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_hierarchy.rst +0 -0
  46. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_id_definition_mapping.rst +0 -0
  47. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_id_multirelations_mapping.rst +0 -0
  48. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_id_name_mapping.rst +0 -0
  49. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_id_species_mapping.rst +0 -0
  50. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_id_synonyms_mapping.rst +0 -0
  51. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_id_to_alts.rst +0 -0
  52. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_ids.rst +0 -0
  53. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_name.rst +0 -0
  54. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_name_by_curie.rst +0 -0
  55. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_name_id_mapping.rst +0 -0
  56. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_ontology.rst +0 -0
  57. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_primary_curie.rst +0 -0
  58. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_primary_identifier.rst +0 -0
  59. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_priority_curie.rst +0 -0
  60. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_properties.rst +0 -0
  61. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_properties_df.rst +0 -0
  62. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_property.rst +0 -0
  63. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_relation.rst +0 -0
  64. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_relation_mapping.rst +0 -0
  65. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_relations_df.rst +0 -0
  66. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_species.rst +0 -0
  67. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_subhierarchy.rst +0 -0
  68. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_synonyms.rst +0 -0
  69. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_typedef_df.rst +0 -0
  70. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_version.rst +0 -0
  71. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_xref.rst +0 -0
  72. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_xrefs.rst +0 -0
  73. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.get_xrefs_df.rst +0 -0
  74. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.ground.rst +0 -0
  75. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.has_ancestor.rst +0 -0
  76. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.has_nomenclature_plugin.rst +0 -0
  77. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.has_xref_plugin.rst +0 -0
  78. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.is_descendent.rst +0 -0
  79. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.iter_nomenclature_plugins.rst +0 -0
  80. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.iter_xref_plugins.rst +0 -0
  81. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.normalize_curie.rst +0 -0
  82. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.run_nomenclature_plugin.rst +0 -0
  83. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/api/pyobo.run_xref_plugin.rst +0 -0
  84. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/index.rst +0 -0
  85. {pyobo-0.8.11 → pyobo-0.8.13}/docs/source/logo.png +0 -0
  86. {pyobo-0.8.11 → pyobo-0.8.13}/pyproject.toml +0 -0
  87. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/__init__.py +0 -0
  88. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/__main__.py +0 -0
  89. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/api/__init__.py +0 -0
  90. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/api/alts.py +0 -0
  91. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/api/hierarchy.py +0 -0
  92. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/api/metadata.py +0 -0
  93. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/api/names.py +0 -0
  94. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/api/properties.py +0 -0
  95. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/api/species.py +0 -0
  96. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/api/typedefs.py +0 -0
  97. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/api/utils.py +0 -0
  98. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/api/xrefs.py +0 -0
  99. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/__init__.py +0 -0
  100. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/cli.py +0 -0
  101. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/gilda/__init__.py +0 -0
  102. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/gilda/__main__.py +0 -0
  103. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/gilda/app.py +0 -0
  104. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/gilda/cli.py +0 -0
  105. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/gilda/templates/base.html +0 -0
  106. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/gilda/templates/home.html +0 -0
  107. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/gilda/templates/matches.html +0 -0
  108. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/mapper/__init__.py +0 -0
  109. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/mapper/__main__.py +0 -0
  110. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/mapper/cli.py +0 -0
  111. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/mapper/mapper.py +0 -0
  112. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/mapper/templates/base.html +0 -0
  113. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/apps/mapper/templates/mapper_home.html +0 -0
  114. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/aws.py +0 -0
  115. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/cli/__init__.py +0 -0
  116. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/cli/aws.py +0 -0
  117. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/cli/cli.py +0 -0
  118. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/cli/database.py +0 -0
  119. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/cli/lookup.py +0 -0
  120. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/cli/utils.py +0 -0
  121. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/constants.py +0 -0
  122. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/getters.py +0 -0
  123. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/identifier_utils.py +0 -0
  124. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/mocks.py +0 -0
  125. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/normalizer.py +0 -0
  126. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/plugins.py +0 -0
  127. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/registries/__init__.py +0 -0
  128. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/registries/metaregistry.json +0 -0
  129. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/registries/metaregistry.py +0 -0
  130. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/resource_utils.py +0 -0
  131. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/resources/__init__.py +0 -0
  132. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/resources/ncbitaxon.py +0 -0
  133. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/resources/ncbitaxon.tsv.gz +0 -0
  134. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/resources/ro.py +0 -0
  135. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/resources/ro.tsv +0 -0
  136. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/__init__.py +0 -0
  137. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/agrovoc.py +0 -0
  138. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/antibodyregistry.py +0 -0
  139. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/biogrid.py +0 -0
  140. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/ccle.py +0 -0
  141. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/cgnc.py +0 -0
  142. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/chebi.py +0 -0
  143. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/chembl.py +0 -0
  144. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/complexportal.py +0 -0
  145. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/conso.py +0 -0
  146. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/depmap.py +0 -0
  147. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/dictybase_gene.py +0 -0
  148. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/drugbank.py +0 -0
  149. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/drugbank_salt.py +0 -0
  150. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/drugcentral.py +0 -0
  151. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/famplex.py +0 -0
  152. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/flybase.py +0 -0
  153. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/gmt_utils.py +0 -0
  154. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/go.py +0 -0
  155. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/gwascentral_phenotype.py +0 -0
  156. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/gwascentral_study.py +0 -0
  157. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/hgncgenefamily.py +0 -0
  158. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/icd10.py +0 -0
  159. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/icd11.py +0 -0
  160. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/icd_utils.py +0 -0
  161. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/interpro.py +0 -0
  162. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/itis.py +0 -0
  163. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/kegg/__init__.py +0 -0
  164. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/kegg/api.py +0 -0
  165. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/kegg/genes.py +0 -0
  166. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/kegg/genome.py +0 -0
  167. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/mesh.py +0 -0
  168. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/mirbase.py +0 -0
  169. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/mirbase_constants.py +0 -0
  170. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/mirbase_family.py +0 -0
  171. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/ncbigene.py +0 -0
  172. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/pathbank.py +0 -0
  173. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/pfam.py +0 -0
  174. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/pfam_clan.py +0 -0
  175. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/pid.py +0 -0
  176. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/pubchem.py +0 -0
  177. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/reactome.py +0 -0
  178. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/rgd.py +0 -0
  179. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/rhea.py +0 -0
  180. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/selventa/__init__.py +0 -0
  181. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/selventa/schem.py +0 -0
  182. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/selventa/scomp.py +0 -0
  183. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/selventa/sdis.py +0 -0
  184. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/selventa/sfam.py +0 -0
  185. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/sgd.py +0 -0
  186. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/slm.py +0 -0
  187. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/umls/__init__.py +0 -0
  188. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/umls/__main__.py +0 -0
  189. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/umls/synonym_types.tsv +0 -0
  190. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/umls/umls.py +0 -0
  191. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/uniprot/__init__.py +0 -0
  192. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/uniprot/uniprot.py +0 -0
  193. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/uniprot/uniprot_ptm.py +0 -0
  194. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/utils.py +0 -0
  195. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/wikipathways.py +0 -0
  196. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/sources/zfin.py +0 -0
  197. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/ssg/__init__.py +0 -0
  198. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/ssg/base.html +0 -0
  199. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/ssg/index.html +0 -0
  200. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/ssg/term.html +0 -0
  201. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/ssg/typedef.html +0 -0
  202. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/struct/__init__.py +0 -0
  203. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/struct/reference.py +0 -0
  204. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/struct/typedef.py +0 -0
  205. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/struct/utils.py +0 -0
  206. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/utils/__init__.py +0 -0
  207. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/utils/cache.py +0 -0
  208. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/utils/io.py +0 -0
  209. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/utils/iter.py +0 -0
  210. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/utils/ndex_utils.py +0 -0
  211. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/utils/path.py +0 -0
  212. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/__init__.py +0 -0
  213. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/bengo.py +0 -0
  214. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/canonicalizer.py +0 -0
  215. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/priority.py +0 -0
  216. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/sources/__init__.py +0 -0
  217. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/sources/biomappings.py +0 -0
  218. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/sources/cbms2019.py +0 -0
  219. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/sources/chembl.py +0 -0
  220. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/sources/compath.py +0 -0
  221. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/sources/famplex.py +0 -0
  222. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/sources/gilda.py +0 -0
  223. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/sources/intact.py +0 -0
  224. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/sources/ncit.py +0 -0
  225. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/sources/pubchem.py +0 -0
  226. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/sources/wikidata.py +0 -0
  227. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo/xrefdb/xrefs_pipeline.py +0 -0
  228. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo.egg-info/SOURCES.txt +0 -0
  229. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo.egg-info/dependency_links.txt +0 -0
  230. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo.egg-info/entry_points.txt +0 -0
  231. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo.egg-info/not-zip-safe +0 -0
  232. {pyobo-0.8.11 → pyobo-0.8.13}/src/pyobo.egg-info/top_level.txt +0 -0
  233. {pyobo-0.8.11 → pyobo-0.8.13}/tests/__init__.py +0 -0
  234. {pyobo-0.8.11 → pyobo-0.8.13}/tests/constants.py +0 -0
  235. {pyobo-0.8.11 → pyobo-0.8.13}/tests/resources/citations.txt +0 -0
  236. {pyobo-0.8.11 → pyobo-0.8.13}/tests/resources/test_chebi.obo +0 -0
  237. {pyobo-0.8.11 → pyobo-0.8.13}/tests/resources/test_msigdb.gmt +0 -0
  238. {pyobo-0.8.11 → pyobo-0.8.13}/tests/resources/test_wikipathways.gmt +0 -0
  239. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_alt_ids.py +0 -0
  240. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_caches.py +0 -0
  241. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_extract.py +0 -0
  242. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_get.py +0 -0
  243. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_get_miriam_url.py +0 -0
  244. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_gmt.py +0 -0
  245. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_ground.py +0 -0
  246. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_mapper.py +0 -0
  247. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_sources/__init__.py +0 -0
  248. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_sources/test_famplex.py +0 -0
  249. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_struct.py +0 -0
  250. {pyobo-0.8.11 → pyobo-0.8.13}/tests/test_utils.py +0 -0
  251. {pyobo-0.8.11 → pyobo-0.8.13}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyobo
3
- Version: 0.8.11
3
+ Version: 0.8.13
4
4
  Summary: Handling and writing OBO
5
5
  Home-page: https://github.com/pyobo/pyobo
6
6
  Download-URL: https://github.com/pyobo/pyobo/releases
@@ -60,7 +60,7 @@ author = "Charles Tapley Hoyt"
60
60
  #
61
61
 
62
62
  # The full version, including alpha/beta/rc tags.
63
- release = "0.8.11"
63
+ release = "0.8.13"
64
64
 
65
65
  # The short X.Y version.
66
66
  parsed_version = re.match(
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = pyobo
3
- version = 0.8.11
3
+ version = 0.8.13
4
4
  description = Handling and writing OBO
5
5
  long_description = file: README.rst
6
6
  url = https://github.com/pyobo/pyobo
@@ -48,7 +48,7 @@ install_requires =
48
48
  tabulate
49
49
  cachier
50
50
  pystow>=0.2.7
51
- bioversions>=0.5.82
51
+ bioversions>=0.5.83
52
52
  bioregistry>=0.4.29
53
53
  zenodo-client>=0.0.5
54
54
  class_resolver
@@ -69,10 +69,12 @@ def get_filtered_relations_df(
69
69
  *,
70
70
  use_tqdm: bool = False,
71
71
  force: bool = False,
72
+ version: Optional[str] = None,
72
73
  ) -> pd.DataFrame:
73
74
  """Get all of the given relation."""
74
75
  relation_prefix, relation_identifier = relation = get_reference_tuple(relation)
75
- version = get_version(prefix)
76
+ if version is None:
77
+ version = get_version(prefix)
76
78
  path = prefix_cache_join(
77
79
  prefix,
78
80
  "relations",
@@ -118,6 +118,7 @@ def get_grounder(
118
118
  unnamed: Optional[Iterable[str]] = None,
119
119
  grounder_cls: Optional[Type[Grounder]] = None,
120
120
  versions: Union[None, str, Iterable[Union[str, None]]] = None,
121
+ strict: bool = True,
121
122
  ) -> Grounder:
122
123
  """Get a Gilda grounder for the given prefix(es)."""
123
124
  unnamed = set() if unnamed is None else set(unnamed)
@@ -138,7 +139,9 @@ def get_grounder(
138
139
  for prefix, version in zip(prefixes, versions):
139
140
  try:
140
141
  p_terms = list(
141
- get_gilda_terms(prefix, identifiers_are_names=prefix in unnamed, version=version)
142
+ get_gilda_terms(
143
+ prefix, identifiers_are_names=prefix in unnamed, version=version, strict=strict
144
+ )
142
145
  )
143
146
  except NoBuild:
144
147
  continue
@@ -156,10 +159,11 @@ def get_gilda_terms(
156
159
  prefix: str,
157
160
  identifiers_are_names: bool = False,
158
161
  version: Optional[str] = None,
162
+ strict: bool = True,
159
163
  ) -> Iterable[gilda.term.Term]:
160
164
  """Get gilda terms for the given namespace."""
161
- id_to_name = get_id_name_mapping(prefix, version=version)
162
- id_to_species = get_id_species_mapping(prefix, version=version)
165
+ id_to_name = get_id_name_mapping(prefix, version=version, strict=strict)
166
+ id_to_species = get_id_species_mapping(prefix, version=version, strict=strict)
163
167
 
164
168
  it = tqdm(id_to_name.items(), desc=f"[{prefix}] mapping", unit_scale=True, unit="name")
165
169
  for identifier, name in it:
@@ -123,7 +123,7 @@ def from_obonet(graph: nx.MultiDiGraph, *, strict: bool = True) -> "Obo": # noq
123
123
  # if name isn't available, it means its external to this ontology
124
124
  name=data.get("name"),
125
125
  )
126
- for prefix, identifier, data in _iter_obo_graph(graph=graph)
126
+ for prefix, identifier, data in _iter_obo_graph(graph=graph, strict=strict)
127
127
  }
128
128
 
129
129
  #: CURIEs to typedefs
@@ -140,7 +140,7 @@ def from_obonet(graph: nx.MultiDiGraph, *, strict: bool = True) -> "Obo": # noq
140
140
  missing_typedefs = set()
141
141
  terms = []
142
142
  n_alt_ids, n_parents, n_synonyms, n_relations, n_properties, n_xrefs = 0, 0, 0, 0, 0, 0
143
- for prefix, identifier, data in _iter_obo_graph(graph=graph):
143
+ for prefix, identifier, data in _iter_obo_graph(graph=graph, strict=strict):
144
144
  if prefix != ontology or not data:
145
145
  continue
146
146
 
@@ -44,6 +44,20 @@ class ExpasyGetter(Obo):
44
44
 
45
45
  bioversions_key = ontology = PREFIX
46
46
  typedefs = [has_member, enables]
47
+ root_terms = [
48
+ Reference("eccode", "1"),
49
+ Reference("eccode", "2"),
50
+ Reference("eccode", "3"),
51
+ Reference("eccode", "4"),
52
+ Reference("eccode", "5"),
53
+ Reference("eccode", "6"),
54
+ Reference("eccode", "7"),
55
+ ]
56
+ idspaces = {
57
+ "uniprot": "https://bioregistry.io/uniprot:",
58
+ "eccode": "https://bioregistry.io/eccode:",
59
+ "go": "http://purl.obolibrary.org/obo/GO_",
60
+ }
47
61
 
48
62
  def iter_terms(self, force: bool = False) -> Iterable[Term]:
49
63
  """Iterate over terms in the ontology."""
@@ -2,6 +2,7 @@
2
2
 
3
3
  """Converter for HGNC."""
4
4
 
5
+ import itertools as itt
5
6
  import json
6
7
  import logging
7
8
  import typing
@@ -145,7 +146,7 @@ LOCUS_TYPE_TO_SO = {
145
146
 
146
147
  IDSPACES = {
147
148
  prefix: f"https://bioregistry.io/{prefix}:"
148
- for prefix in [
149
+ for prefix in {
149
150
  "rgd",
150
151
  "mgi",
151
152
  "eccode",
@@ -154,17 +155,34 @@ IDSPACES = {
154
155
  "uniprot",
155
156
  "mirbase",
156
157
  "snornabase",
158
+ "hgnc",
157
159
  "hgnc.genegroup",
158
- ]
160
+ "debio",
161
+ "ensembl",
162
+ "NCBIGene",
163
+ "vega",
164
+ "ucsc",
165
+ "ena",
166
+ "ccds",
167
+ "omim",
168
+ "cosmic",
169
+ "merops",
170
+ "orphanet",
171
+ "pseudogene",
172
+ "lncipedia",
173
+ "refseq",
174
+ }
159
175
  }
160
- IDSPACES["NCBITaxon"] = "http://purl.obolibrary.org/obo/NCBITaxon_"
176
+ IDSPACES.update(
177
+ NCBITaxon="http://purl.obolibrary.org/obo/NCBITaxon_",
178
+ SO="http://purl.obolibrary.org/obo/SO_",
179
+ )
161
180
 
162
181
 
163
182
  class HGNCGetter(Obo):
164
183
  """An ontology representation of HGNC's gene nomenclature."""
165
184
 
166
185
  bioversions_key = ontology = PREFIX
167
- dynamic_version = True
168
186
  typedefs = [
169
187
  from_species,
170
188
  has_gene_product,
@@ -180,6 +198,7 @@ class HGNCGetter(Obo):
180
198
  alias_name_type,
181
199
  alias_symbol_type,
182
200
  ]
201
+ root_terms = [Reference("SO", so_id) for so_id in sorted(set(LOCUS_TYPE_TO_SO.values()))]
183
202
 
184
203
  def iter_terms(self, force: bool = False) -> Iterable[Term]:
185
204
  """Iterate over terms in the ontology."""
@@ -207,6 +226,7 @@ def get_terms(version: Optional[str] = None, force: bool = False) -> Iterable[Te
207
226
  with open(path) as file:
208
227
  entries = json.load(file)["response"]["docs"]
209
228
 
229
+ yield Term.from_triple("NCBITaxon", "9606", "Homo sapiens")
210
230
  yield from sorted(
211
231
  {
212
232
  Term(reference=Reference.auto("SO", so_id))
@@ -242,14 +262,14 @@ def get_terms(version: Optional[str] = None, force: bool = False) -> Iterable[Te
242
262
  for uniprot_id in entry.pop("uniprot_ids", []):
243
263
  term.append_relationship(
244
264
  has_gene_product,
245
- Reference.auto("uniprot", uniprot_id),
265
+ Reference("uniprot", uniprot_id),
246
266
  )
247
267
  for ec_code in entry.pop("enzyme_id", []):
248
268
  if "-" in ec_code:
249
269
  continue # only add concrete annotations
250
270
  term.append_relationship(
251
271
  gene_product_member_of,
252
- Reference.auto("eccode", ec_code),
272
+ Reference("eccode", ec_code),
253
273
  )
254
274
  for rna_central_ids in entry.pop("rna_central_id", []):
255
275
  for rna_central_id in rna_central_ids.split(","):
@@ -261,7 +281,7 @@ def get_terms(version: Optional[str] = None, force: bool = False) -> Iterable[Te
261
281
  if mirbase_id:
262
282
  term.append_relationship(
263
283
  transcribes_to,
264
- Reference.auto(
284
+ Reference(
265
285
  "mirbase",
266
286
  mirbase_id,
267
287
  ),
@@ -279,7 +299,7 @@ def get_terms(version: Optional[str] = None, force: bool = False) -> Iterable[Te
279
299
  rgd_id = rgd_curie[len("RGD:") :]
280
300
  term.append_relationship(
281
301
  orthologous,
282
- Reference.auto(prefix="rgd", identifier=rgd_id),
302
+ Reference(prefix="rgd", identifier=rgd_id),
283
303
  )
284
304
  for mgi_curie in entry.pop("mgd_id", []):
285
305
  if not mgi_curie.startswith("MGI:"):
@@ -290,7 +310,7 @@ def get_terms(version: Optional[str] = None, force: bool = False) -> Iterable[Te
290
310
  continue
291
311
  term.append_relationship(
292
312
  orthologous,
293
- Reference.auto(prefix="mgi", identifier=mgi_id),
313
+ Reference(prefix="mgi", identifier=mgi_id),
294
314
  )
295
315
 
296
316
  for xref_prefix, key in gene_xrefs:
@@ -321,7 +341,9 @@ def get_terms(version: Optional[str] = None, force: bool = False) -> Iterable[Te
321
341
  term.append_synonym(Synonym(name=alias_symbol, type=alias_symbol_type))
322
342
  for alias_name in entry.pop("alias_name", []):
323
343
  term.append_synonym(Synonym(name=alias_name, type=alias_name_type))
324
- for previous_symbol in entry.pop("previous_symbol", []):
344
+ for previous_symbol in itt.chain(
345
+ entry.pop("previous_symbol", []), entry.pop("prev_symbol", [])
346
+ ):
325
347
  term.append_synonym(Synonym(name=previous_symbol, type=previous_symbol_type))
326
348
  for previous_name in entry.pop("prev_name", []):
327
349
  term.append_synonym(Synonym(name=previous_name, type=previous_name_type))
@@ -63,9 +63,7 @@ def iter_terms(version: str, skip_missing: bool = True) -> Iterable[Term]:
63
63
  # since old kegg versions go away forever, do NOT add a force option
64
64
  yield from _iter_map_terms(version=version)
65
65
  it = iter_kegg_pathway_paths(version=version, skip_missing=skip_missing)
66
- for row in tqdm(
67
- it, unit_scale=True, unit="genome", desc="Parsing genomes"
68
- ):
66
+ for row in tqdm(it, unit_scale=True, unit="genome", desc="Parsing genomes"):
69
67
  if not row:
70
68
  continue
71
69
  kegg_genome, list_pathway_path, link_pathway_path = row
@@ -150,7 +150,7 @@ def get_terms(force: bool = False) -> Iterable[Term]:
150
150
  mgi_to_ensemble_protein_ids[mgi_id].append(ensemble_protein_id)
151
151
 
152
152
  for mgi_curie, name, definition in tqdm(
153
- df[COLUMNS].values, total=len(df.index), desc=f"Mapping {PREFIX}"
153
+ df[COLUMNS].values, total=len(df.index), desc=f"Mapping {PREFIX}", unit_scale=True
154
154
  ):
155
155
  identifier = mgi_curie[len("MGI:") :]
156
156
  term = Term(
@@ -4,6 +4,7 @@
4
4
 
5
5
  from typing import Iterable
6
6
 
7
+ import pandas as pd
7
8
  from tqdm.auto import tqdm
8
9
 
9
10
  from .mirbase_constants import get_mature_df
@@ -35,9 +36,13 @@ def get_obo(force: bool = False) -> Obo:
35
36
  def iter_terms(version: str, force: bool = False) -> Iterable[Term]:
36
37
  """Get miRBase mature terms."""
37
38
  df = get_mature_df(version, force=force)
38
- for _, name, previous_name, mirbase_mature_id in tqdm(df.values, total=len(df.index)):
39
+ for _, name, previous_name, mirbase_mature_id in tqdm(
40
+ df.values, total=len(df.index), unit_scale=True
41
+ ):
39
42
  yield Term(
40
- reference=Reference(prefix=PREFIX, identifier=mirbase_mature_id, name=name),
43
+ reference=Reference(
44
+ prefix=PREFIX, identifier=mirbase_mature_id, name=name if pd.notna(name) else None
45
+ ),
41
46
  synonyms=[
42
47
  Synonym(name=previous_name),
43
48
  ],
@@ -52,7 +52,7 @@ KEGG_URL_PREFIX = "http://www.genome.jp/kegg/pathway/hsa/"
52
52
 
53
53
  def iter_terms(version: str, force: bool = False) -> Iterable[Term]:
54
54
  """Get MSigDb terms."""
55
- xml_url = f"{BASE_URL}/{version}/msigdb_v{version}.xml"
55
+ xml_url = f"{BASE_URL}/{version}.Hs/msigdb_v{version}.Hs.xml"
56
56
  path = ensure_path(prefix=PREFIX, url=xml_url, version=version, force=force)
57
57
  tree = ElementTree.parse(path)
58
58
 
@@ -58,39 +58,34 @@ def iter_terms(version: str, force: bool = False) -> Iterable[Term]:
58
58
  """Iterate NPASS terms."""
59
59
  df = get_df(version=version, force=force)
60
60
  it = tqdm(df.values, total=len(df.index), desc=f"mapping {PREFIX}")
61
- for identifier, name, iupac, chembl_id, pubchem_compound_ids, zinc_id in it:
62
- xrefs = [
63
- Reference(prefix=xref_prefix, identifier=xref_id)
64
- for xref_prefix, xref_id in [
65
- ("chembl", chembl_id),
66
- ("zinc", zinc_id),
67
- ]
68
- if pd.notna(xref_id)
69
- ]
61
+ for identifier, name, iupac, chembl_id, pubchem_compound_ids, _, _, _, _ in it:
62
+ term = Term.from_triple(
63
+ PREFIX, identifier=identifier, name=name if pd.notna(name) else identifier
64
+ )
65
+
66
+ for xref_prefix, xref_id in [
67
+ ("chembl", chembl_id),
68
+ # ("zinc", zinc_id),
69
+ ]:
70
+ if pd.notna(xref_id):
71
+ term.append_xref(Reference(prefix=xref_prefix, identifier=xref_id))
70
72
 
71
73
  # TODO check that the first is always the parent compound?
72
74
  if pd.notna(pubchem_compound_ids):
73
75
  pubchem_compound_ids = pubchem_compound_ids.split(";")
74
76
  if len(pubchem_compound_ids) > 1:
75
- logger.warning("multiple cids for %s: %s", identifier, pubchem_compound_ids)
76
- pubchem_compound_id = pubchem_compound_ids[0]
77
- xrefs.append(Reference(prefix="pubchem.compound", identifier=pubchem_compound_id))
78
-
79
- yield Term(
80
- # TODO look up name from pubchem?
81
- reference=Reference(
82
- PREFIX, identifier=identifier, name=name if pd.notna(name) else identifier
83
- ),
84
- xrefs=xrefs,
85
- synonyms=[
86
- Synonym(name=name)
87
- for name in [
88
- iupac,
89
- ]
90
- if pd.notna(name)
91
- ],
92
- )
77
+ logger.debug("multiple cids for %s: %s", identifier, pubchem_compound_ids)
78
+ for pubchem_compound_id in pubchem_compound_ids:
79
+ term.append_xref(
80
+ Reference(prefix="pubchem.compound", identifier=pubchem_compound_id)
81
+ )
82
+
83
+ for synonym in [iupac]:
84
+ if pd.notna(synonym):
85
+ term.append_synonym(Synonym(name=synonym))
86
+
87
+ yield term
93
88
 
94
89
 
95
90
  if __name__ == "__main__":
96
- get_obo().write_default()
91
+ NPASSGetter.cli()
@@ -11,7 +11,7 @@ from tqdm.auto import tqdm
11
11
 
12
12
  import pyobo
13
13
  from pyobo import Reference
14
- from pyobo.struct import Obo, Synonym, Term, from_species, has_gene_product, orthologous
14
+ from pyobo.struct import Obo, Term, from_species, has_gene_product, orthologous
15
15
  from pyobo.utils.path import ensure_df
16
16
 
17
17
  __all__ = [
@@ -43,6 +43,8 @@ def get_obo(force: bool = False) -> Obo:
43
43
 
44
44
  #: A mapping from PomBase gene type to sequence ontology terms
45
45
  POMBASE_TO_SO = {
46
+ # None: "0000704", # gene,
47
+ "gene_type": "0000704", # unannotated
46
48
  "protein coding gene": "0001217",
47
49
  "pseudogene": "0000336",
48
50
  "tRNA gene": "0001272",
@@ -74,6 +76,8 @@ def get_terms(version: str, force: bool = False) -> Iterable[Term]:
74
76
  for _, reference in sorted(so.items()):
75
77
  yield Term(reference=reference)
76
78
  for identifier, _, symbol, chromosome, name, uniprot_id, gtype, synonyms in tqdm(df.values):
79
+ if pd.isna(identifier):
80
+ continue
77
81
  term = Term.from_triple(
78
82
  prefix=PREFIX,
79
83
  identifier=identifier,
@@ -84,12 +88,12 @@ def get_terms(version: str, force: bool = False) -> Iterable[Term]:
84
88
  term.append_parent(so[gtype])
85
89
  term.set_species(identifier="4896", name="Schizosaccharomyces pombe")
86
90
  for hgnc_id in identifier_to_hgnc_ids.get(identifier, []):
87
- term.append_relationship(orthologous, Reference.auto("hgnc", hgnc_id))
91
+ term.append_relationship(orthologous, Reference("hgnc", hgnc_id))
88
92
  if uniprot_id and pd.notna(uniprot_id):
89
- term.append_relationship(has_gene_product, Reference.auto("uniprot", uniprot_id))
93
+ term.append_relationship(has_gene_product, Reference("uniprot", uniprot_id))
90
94
  if synonyms and pd.notna(synonyms):
91
95
  for synonym in synonyms.split(","):
92
- term.append_synonym(Synonym(synonym))
96
+ term.append_synonym(synonym.strip())
93
97
  yield term
94
98
 
95
99
 
@@ -453,7 +453,7 @@ class Obo:
453
453
  #: For super-sized datasets that shouldn't be read into memory
454
454
  iter_only: ClassVar[bool] = False
455
455
 
456
- #: Set to true for resources that are unversioned/very dynamic, like HGNC
456
+ #: Set to true for resources that are unversioned/very dynamic, like MGI
457
457
  dynamic_version: ClassVar[bool] = False
458
458
 
459
459
  #: Set to a static version for the resource (i.e., the resource is not itself versioned)
@@ -461,6 +461,9 @@ class Obo:
461
461
 
462
462
  bioversions_key: ClassVar[Optional[str]] = None
463
463
 
464
+ #: Root terms to use for the ontology
465
+ root_terms: ClassVar[Optional[List[Reference]]] = None
466
+
464
467
  #: The date the ontology was generated
465
468
  date: Optional[datetime] = field(default_factory=datetime.today)
466
469
 
@@ -79,6 +79,6 @@ def cleanup_version(data_version: str, prefix: str) -> Optional[str]:
79
79
  else:
80
80
  return v
81
81
  if (prefix, data_version) not in BIZARRE_LOGGED:
82
- logger.warning("[%s] bizarre version: %s", prefix, data_version)
82
+ logger.debug("[%s] bizarre version: %s", prefix, data_version)
83
83
  BIZARRE_LOGGED.add((prefix, data_version))
84
84
  return data_version
@@ -14,7 +14,7 @@ __all__ = [
14
14
  "get_git_hash",
15
15
  ]
16
16
 
17
- VERSION = "0.8.11"
17
+ VERSION = "0.8.13"
18
18
 
19
19
 
20
20
  def get_git_hash() -> str:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyobo
3
- Version: 0.8.11
3
+ Version: 0.8.13
4
4
  Summary: Handling and writing OBO
5
5
  Home-page: https://github.com/pyobo/pyobo
6
6
  Download-URL: https://github.com/pyobo/pyobo/releases
@@ -11,7 +11,7 @@ humanize
11
11
  tabulate
12
12
  cachier
13
13
  pystow>=0.2.7
14
- bioversions>=0.5.82
14
+ bioversions>=0.5.83
15
15
  bioregistry>=0.4.29
16
16
  zenodo-client>=0.0.5
17
17
  class_resolver
File without changes
File without changes
File without changes
File without changes