pyobo 0.12.0__tar.gz → 0.12.0.dev0__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.
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/PKG-INFO +19 -16
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/README.md +13 -10
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/pyproject.toml +20 -7
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/.DS_Store +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/__init__.py +3 -1
- pyobo-0.12.0.dev0/src/pyobo/_reference_tmp.py +35 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/alts.py +1 -2
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/combine.py +1 -2
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/edges.py +1 -1
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/hierarchy.py +15 -109
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/names.py +9 -10
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/properties.py +1 -1
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/utils.py +4 -5
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/xrefs.py +17 -24
- pyobo-0.12.0.dev0/src/pyobo/aws.py +163 -0
- pyobo-0.12.0.dev0/src/pyobo/cli/aws.py +47 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/cli/cli.py +5 -36
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/cli/database_utils.py +2 -2
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/constants.py +1 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/getters.py +1 -8
- pyobo-0.12.0/src/pyobo/identifier_utils/api.py → pyobo-0.12.0.dev0/src/pyobo/identifier_utils.py +31 -24
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/ner/__init__.py +0 -2
- pyobo-0.12.0.dev0/src/pyobo/ner/normalizer.py +226 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/obographs.py +21 -16
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/reader.py +2 -3
- pyobo-0.12.0.dev0/src/pyobo/registries/__init__.py +16 -0
- pyobo-0.12.0.dev0/src/pyobo/registries/metaregistry.json +626 -0
- pyobo-0.12.0.dev0/src/pyobo/registries/metaregistry.py +169 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/__init__.py +2 -6
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/bigg/bigg_metabolite.py +19 -74
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/bigg/bigg_reaction.py +1 -7
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/chembl/chembl_target.py +8 -16
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/clinicaltrials.py +2 -4
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/drugcentral.py +4 -13
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/msigdb.py +1 -10
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/nlm/utils.py +2 -13
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pharmgkb/pharmgkb_chemical.py +1 -5
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/ror.py +3 -10
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/signor/signor_complexes.py +0 -2
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/slm.py +4 -5
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/reference.py +4 -4
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/struct.py +29 -18
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/version.py +1 -1
- pyobo-0.12.0/src/pyobo/identifier_utils/__init__.py +0 -41
- pyobo-0.12.0/src/pyobo/identifier_utils/model.py +0 -130
- pyobo-0.12.0/src/pyobo/identifier_utils/preprocessing.json +0 -812
- pyobo-0.12.0/src/pyobo/identifier_utils/preprocessing.py +0 -61
- pyobo-0.12.0/src/pyobo/identifier_utils/relations/__init__.py +0 -8
- pyobo-0.12.0/src/pyobo/identifier_utils/relations/api.py +0 -162
- pyobo-0.12.0/src/pyobo/identifier_utils/relations/data.json +0 -5824
- pyobo-0.12.0/src/pyobo/identifier_utils/relations/data_owl.json +0 -57
- pyobo-0.12.0/src/pyobo/identifier_utils/relations/data_rdf.json +0 -1
- pyobo-0.12.0/src/pyobo/identifier_utils/relations/data_rdfs.json +0 -7
- pyobo-0.12.0/src/pyobo/ner/normalizer.py +0 -33
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/LICENSE +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/__main__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/metadata.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/relations.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/species.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/api/typedefs.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/cli/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/cli/database.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/cli/lookup.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/cli/utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/gilda_utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/mocks.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/ner/api.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/plugins.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/py.typed +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/reader_utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/resource_utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/resources/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/resources/goc.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/resources/goc.tsv +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/resources/ncbitaxon.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/resources/ncbitaxon.tsv.gz +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/resources/ro.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/resources/ro.tsv +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/resources/so.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/resources/so.tsv +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/README.md +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/agrovoc.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/antibodyregistry.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/bigg/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/bigg/bigg_compartment.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/bigg/bigg_model.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/biogrid.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/ccle.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/cgnc.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/chebi.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/chembl/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/chembl/chembl_compound.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/civic_gene.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/complexportal.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/conso.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/cpt.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/credit.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/cvx.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/depmap.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/dictybase_gene.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/drugbank/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/drugbank/drugbank.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/drugbank/drugbank_salt.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/expasy.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/famplex.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/flybase.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/gard.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/geonames/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/geonames/features.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/geonames/geonames.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/geonames/utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/gmt_utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/go.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/gtdb.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/gwascentral/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/gwascentral/gwascentral_phenotype.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/gwascentral/gwascentral_study.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/hgnc/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/hgnc/hgnc.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/hgnc/hgncgenefamily.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/icd/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/icd/icd10.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/icd/icd11.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/icd/icd_utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/interpro.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/itis.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/kegg/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/kegg/api.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/kegg/genes.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/kegg/genome.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/kegg/pathway.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/mesh.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/mgi.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/mirbase/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/mirbase/mirbase.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/mirbase/mirbase_constants.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/mirbase/mirbase_family.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/mirbase/mirbase_mature.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/ncbi/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/ncbi/ncbi_gc.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/ncbi/ncbigene.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/nih_reporter.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/nlm/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/nlm/nlm_catalog.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/nlm/nlm_publisher.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/npass.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/omim_ps.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pathbank.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pfam/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pfam/pfam.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pfam/pfam_clan.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pharmgkb/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pharmgkb/pharmgkb_disease.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pharmgkb/pharmgkb_gene.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pharmgkb/pharmgkb_pathway.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pharmgkb/pharmgkb_variant.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pharmgkb/utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pid.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pombase.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/pubchem.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/reactome.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/rgd.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/rhea.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/selventa/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/selventa/schem.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/selventa/scomp.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/selventa/sdis.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/selventa/sfam.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/sgd.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/signor/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/signor/download.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/umls/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/umls/__main__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/umls/get_synonym_types.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/umls/sty.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/umls/synonym_types.tsv +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/umls/umls.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/unimod.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/uniprot/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/uniprot/uniprot.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/uniprot/uniprot_ptm.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/wikipathways.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/sources/zfin.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/ssg/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/ssg/base.html +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/ssg/index.html +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/ssg/term.html +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/ssg/typedef.html +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/functional/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/functional/dsl.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/functional/macros.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/functional/obo_to_functional.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/functional/ontology.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/functional/utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/struct_utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/typedef.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/struct/vocabulary.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/utils/__init__.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/utils/cache.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/utils/io.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/utils/iter.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/utils/misc.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/utils/ndex_utils.py +0 -0
- {pyobo-0.12.0 → pyobo-0.12.0.dev0}/src/pyobo/utils/path.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyobo
|
|
3
|
-
Version: 0.12.0
|
|
3
|
+
Version: 0.12.0.dev0
|
|
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
|
|
@@ -38,14 +38,14 @@ Requires-Dist: tabulate
|
|
|
38
38
|
Requires-Dist: cachier
|
|
39
39
|
Requires-Dist: pystow>=0.7.0
|
|
40
40
|
Requires-Dist: bioversions>=0.7.0
|
|
41
|
-
Requires-Dist: bioregistry>=0.12.
|
|
42
|
-
Requires-Dist: bioontologies>=0.
|
|
43
|
-
Requires-Dist: ssslm>=0.0.
|
|
41
|
+
Requires-Dist: bioregistry>=0.12.0
|
|
42
|
+
Requires-Dist: bioontologies>=0.5.2
|
|
43
|
+
Requires-Dist: ssslm>=0.0.9
|
|
44
44
|
Requires-Dist: zenodo-client>=0.3.6
|
|
45
|
-
Requires-Dist: class-resolver
|
|
45
|
+
Requires-Dist: class-resolver
|
|
46
46
|
Requires-Dist: psycopg2-binary
|
|
47
47
|
Requires-Dist: pydantic>=2.0
|
|
48
|
-
Requires-Dist: curies>=0.10.
|
|
48
|
+
Requires-Dist: curies>=0.10.6
|
|
49
49
|
Requires-Dist: python-dateutil
|
|
50
50
|
Requires-Dist: networkx>=3.4
|
|
51
51
|
Requires-Dist: drugbank-downloader
|
|
@@ -222,14 +222,16 @@ it up and its preferred label.
|
|
|
222
222
|
```python
|
|
223
223
|
import pyobo
|
|
224
224
|
|
|
225
|
-
|
|
226
|
-
assert
|
|
227
|
-
assert
|
|
228
|
-
assert
|
|
225
|
+
prefix, identifier, name = pyobo.ground('chebi', 'Fusilade II')
|
|
226
|
+
assert prefix == 'chebi'
|
|
227
|
+
assert identifier == '132964'
|
|
228
|
+
assert name == 'fluazifop-P-butyl'
|
|
229
229
|
|
|
230
230
|
# When failure happens...
|
|
231
|
-
|
|
232
|
-
assert
|
|
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
|
|
233
235
|
```
|
|
234
236
|
|
|
235
237
|
If you're not really sure which namespace a name might belong to, you can try a
|
|
@@ -240,10 +242,10 @@ false positives in case of conflicts):
|
|
|
240
242
|
import pyobo
|
|
241
243
|
|
|
242
244
|
# looking for phenotypes/pathways
|
|
243
|
-
|
|
244
|
-
assert
|
|
245
|
-
assert
|
|
246
|
-
assert
|
|
245
|
+
prefix, identifier, name = pyobo.ground(['efo', 'go'], 'ERAD')
|
|
246
|
+
assert prefix == 'go'
|
|
247
|
+
assert identifier == '0030433'
|
|
248
|
+
assert name == 'ubiquitin-dependent ERAD pathway'
|
|
247
249
|
```
|
|
248
250
|
|
|
249
251
|
### Cross-referencing
|
|
@@ -466,6 +468,7 @@ The most recent release can be installed from
|
|
|
466
468
|
[PyPI](https://pypi.org/project/pyobo/) with uv:
|
|
467
469
|
|
|
468
470
|
```console
|
|
471
|
+
python3 -m pip install pyobo
|
|
469
472
|
$ uv pip install pyobo
|
|
470
473
|
```
|
|
471
474
|
|
|
@@ -143,14 +143,16 @@ it up and its preferred label.
|
|
|
143
143
|
```python
|
|
144
144
|
import pyobo
|
|
145
145
|
|
|
146
|
-
|
|
147
|
-
assert
|
|
148
|
-
assert
|
|
149
|
-
assert
|
|
146
|
+
prefix, identifier, name = pyobo.ground('chebi', 'Fusilade II')
|
|
147
|
+
assert prefix == 'chebi'
|
|
148
|
+
assert identifier == '132964'
|
|
149
|
+
assert name == 'fluazifop-P-butyl'
|
|
150
150
|
|
|
151
151
|
# When failure happens...
|
|
152
|
-
|
|
153
|
-
assert
|
|
152
|
+
prefix, identifier, name = pyobo.ground('chebi', 'Definitely not a real name')
|
|
153
|
+
assert prefix is None
|
|
154
|
+
assert identifier is None
|
|
155
|
+
assert name is None
|
|
154
156
|
```
|
|
155
157
|
|
|
156
158
|
If you're not really sure which namespace a name might belong to, you can try a
|
|
@@ -161,10 +163,10 @@ false positives in case of conflicts):
|
|
|
161
163
|
import pyobo
|
|
162
164
|
|
|
163
165
|
# looking for phenotypes/pathways
|
|
164
|
-
|
|
165
|
-
assert
|
|
166
|
-
assert
|
|
167
|
-
assert
|
|
166
|
+
prefix, identifier, name = pyobo.ground(['efo', 'go'], 'ERAD')
|
|
167
|
+
assert prefix == 'go'
|
|
168
|
+
assert identifier == '0030433'
|
|
169
|
+
assert name == 'ubiquitin-dependent ERAD pathway'
|
|
168
170
|
```
|
|
169
171
|
|
|
170
172
|
### Cross-referencing
|
|
@@ -387,6 +389,7 @@ The most recent release can be installed from
|
|
|
387
389
|
[PyPI](https://pypi.org/project/pyobo/) with uv:
|
|
388
390
|
|
|
389
391
|
```console
|
|
392
|
+
python3 -m pip install pyobo
|
|
390
393
|
$ uv pip install pyobo
|
|
391
394
|
```
|
|
392
395
|
|
|
@@ -4,7 +4,7 @@ build-backend = "uv_build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyobo"
|
|
7
|
-
version = "0.12.0"
|
|
7
|
+
version = "0.12.0-dev"
|
|
8
8
|
description = "A python package for handling and generating OBO"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [
|
|
@@ -71,14 +71,14 @@ dependencies = [
|
|
|
71
71
|
"cachier",
|
|
72
72
|
"pystow>=0.7.0",
|
|
73
73
|
"bioversions>=0.7.0",
|
|
74
|
-
"bioregistry>=0.12.
|
|
75
|
-
"bioontologies>=0.
|
|
76
|
-
"ssslm>=0.0.
|
|
74
|
+
"bioregistry>=0.12.0",
|
|
75
|
+
"bioontologies>=0.5.2",
|
|
76
|
+
"ssslm>=0.0.9",
|
|
77
77
|
"zenodo-client>=0.3.6",
|
|
78
|
-
"class_resolver
|
|
78
|
+
"class_resolver",
|
|
79
79
|
"psycopg2-binary",
|
|
80
80
|
"pydantic>=2.0",
|
|
81
|
-
"curies>=0.10.
|
|
81
|
+
"curies>=0.10.6",
|
|
82
82
|
"python-dateutil",
|
|
83
83
|
"networkx>=3.4",
|
|
84
84
|
# Resource Downloaders
|
|
@@ -121,6 +121,19 @@ Funding = "https://github.com/sponsors/cthoyt"
|
|
|
121
121
|
[project.scripts]
|
|
122
122
|
pyobo = "pyobo.cli:main"
|
|
123
123
|
|
|
124
|
+
# TODO add entrypoints
|
|
125
|
+
# pyobo.xrefs =
|
|
126
|
+
# cbms2019 = pyobo.xrefdb.sources.cbms2019:get_cbms2019_xrefs_df
|
|
127
|
+
# chembl = pyobo.xrefdb.sources.chembl:get_chembl_xrefs_df
|
|
128
|
+
# compath = pyobo.xrefdb.sources.compath:get_compath_xrefs_df
|
|
129
|
+
# famplex = pyobo.xrefdb.sources.famplex:get_famplex_xrefs_df
|
|
130
|
+
# gilda = pyobo.xrefdb.sources.gilda:get_gilda_xrefs_df
|
|
131
|
+
# intact = pyobo.xrefdb.sources.intact:get_xrefs_df
|
|
132
|
+
# ncit = pyobo.xrefdb.sources.ncit:get_ncit_xrefs_df
|
|
133
|
+
# pubchem = pyobo.xrefdb.sources.pubchem:get_pubchem_mesh_df
|
|
134
|
+
# wikidata = pyobo.xrefdb.sources.wikidata:get_wikidata_xrefs_df
|
|
135
|
+
# biomappings = pyobo.xrefdb.sources.biomappings:get_biomappings_df
|
|
136
|
+
|
|
124
137
|
[tool.cruft]
|
|
125
138
|
skip = [
|
|
126
139
|
"**/__init__.py",
|
|
@@ -240,7 +253,7 @@ known-first-party = [
|
|
|
240
253
|
docstring-code-format = true
|
|
241
254
|
|
|
242
255
|
[tool.bumpversion]
|
|
243
|
-
current_version = "0.12.0"
|
|
256
|
+
current_version = "0.12.0-dev"
|
|
244
257
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)(?:-(?P<release>[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?(?:\\+(?P<build>[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?"
|
|
245
258
|
serialize = [
|
|
246
259
|
"{major}.{minor}.{patch}-{release}+{build}",
|
|
Binary file
|
|
@@ -56,7 +56,8 @@ from .api import (
|
|
|
56
56
|
is_descendent,
|
|
57
57
|
)
|
|
58
58
|
from .getters import get_ontology
|
|
59
|
-
from .ner import get_grounder
|
|
59
|
+
from .ner import get_grounder
|
|
60
|
+
from .ner.normalizer import OboNormalizer, ground
|
|
60
61
|
from .obographs import parse_results_from_obo
|
|
61
62
|
from .plugins import (
|
|
62
63
|
has_nomenclature_plugin,
|
|
@@ -70,6 +71,7 @@ from .version import get_version
|
|
|
70
71
|
|
|
71
72
|
__all__ = [
|
|
72
73
|
"Obo",
|
|
74
|
+
"OboNormalizer",
|
|
73
75
|
"Reference",
|
|
74
76
|
"Synonym",
|
|
75
77
|
"SynonymTypeDef",
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"""A temporary place for the Reference class until it's upstreamed."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import bioregistry
|
|
6
|
+
import curies
|
|
7
|
+
from curies.api import ExpansionError
|
|
8
|
+
from pydantic import model_validator
|
|
9
|
+
|
|
10
|
+
from .constants import GLOBAL_CHECK_IDS
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"Reference",
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Reference(curies.NamableReference):
|
|
18
|
+
"""A namespace, identifier, and label."""
|
|
19
|
+
|
|
20
|
+
@model_validator(mode="before")
|
|
21
|
+
def validate_identifier(cls, values): # noqa
|
|
22
|
+
"""Validate the identifier."""
|
|
23
|
+
prefix, identifier = values.get("prefix"), values.get("identifier")
|
|
24
|
+
if not prefix or not identifier:
|
|
25
|
+
return values
|
|
26
|
+
resource = bioregistry.get_resource(prefix)
|
|
27
|
+
if resource is None:
|
|
28
|
+
raise ExpansionError(f"Unknown prefix: {prefix}")
|
|
29
|
+
values["prefix"] = resource.prefix
|
|
30
|
+
if " " in identifier:
|
|
31
|
+
raise ValueError(f"[{prefix}] space in identifier: {identifier}")
|
|
32
|
+
values["identifier"] = resource.standardize_identifier(identifier)
|
|
33
|
+
if GLOBAL_CHECK_IDS and not resource.is_valid_identifier(values["identifier"]):
|
|
34
|
+
raise ValueError(f"non-standard identifier: {resource.prefix}:{values['identifier']}")
|
|
35
|
+
return values
|
|
@@ -5,7 +5,6 @@ from collections.abc import Mapping
|
|
|
5
5
|
from functools import lru_cache
|
|
6
6
|
|
|
7
7
|
import curies
|
|
8
|
-
from pydantic import ValidationError
|
|
9
8
|
from typing_extensions import Unpack
|
|
10
9
|
|
|
11
10
|
from .utils import _get_pi, get_version_from_kwargs
|
|
@@ -71,7 +70,7 @@ def get_primary_curie(
|
|
|
71
70
|
reference = _get_pi(prefix, identifier)
|
|
72
71
|
try:
|
|
73
72
|
primary_identifier = get_primary_identifier(reference, **kwargs)
|
|
74
|
-
except
|
|
73
|
+
except ValueError:
|
|
75
74
|
if kwargs.get("strict"):
|
|
76
75
|
raise
|
|
77
76
|
# this happens on invalid prefix. maybe revise?
|
|
@@ -9,7 +9,6 @@ from typing_extensions import Unpack
|
|
|
9
9
|
from pyobo.api.hierarchy import get_descendants
|
|
10
10
|
from pyobo.api.names import get_literal_mappings
|
|
11
11
|
from pyobo.constants import GetOntologyKwargs
|
|
12
|
-
from pyobo.struct import Reference
|
|
13
12
|
|
|
14
13
|
__all__ = [
|
|
15
14
|
"get_literal_mappings_subset",
|
|
@@ -27,7 +26,7 @@ def get_literal_mappings_subset(
|
|
|
27
26
|
if isinstance(ancestors, curies.Reference):
|
|
28
27
|
ancestors = [ancestors]
|
|
29
28
|
|
|
30
|
-
subset: set[Reference] = {
|
|
29
|
+
subset: set[curies.Reference] = {
|
|
31
30
|
descendant
|
|
32
31
|
for ancestor in ancestors
|
|
33
32
|
for descendant in get_descendants(ancestor, **kwargs) or []
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import networkx as nx
|
|
4
4
|
import pandas as pd
|
|
5
|
+
from curies import Reference
|
|
5
6
|
from tqdm import tqdm
|
|
6
7
|
from typing_extensions import Unpack
|
|
7
8
|
|
|
@@ -15,7 +16,6 @@ from pyobo.constants import (
|
|
|
15
16
|
)
|
|
16
17
|
from pyobo.getters import get_ontology
|
|
17
18
|
|
|
18
|
-
from ..struct import Reference
|
|
19
19
|
from ..utils.cache import cached_df
|
|
20
20
|
from ..utils.path import CacheArtifact, get_cache_path
|
|
21
21
|
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"""High-level API for hierarchies."""
|
|
2
2
|
|
|
3
3
|
import logging
|
|
4
|
-
import warnings
|
|
5
4
|
from collections.abc import Iterable
|
|
6
5
|
from functools import lru_cache
|
|
7
|
-
from typing import overload
|
|
8
6
|
|
|
9
7
|
import networkx as nx
|
|
10
8
|
from curies import ReferenceTuple
|
|
11
|
-
from typing_extensions import
|
|
9
|
+
from typing_extensions import Unpack
|
|
12
10
|
|
|
13
11
|
from .edges import get_edges
|
|
14
12
|
from .names import get_name, get_references
|
|
@@ -35,8 +33,8 @@ logger = logging.getLogger(__name__)
|
|
|
35
33
|
class HierarchyKwargs(GetOntologyKwargs):
|
|
36
34
|
"""Keyword argument hints for hierarchy getter functions."""
|
|
37
35
|
|
|
38
|
-
include_part_of:
|
|
39
|
-
include_has_member:
|
|
36
|
+
include_part_of: bool
|
|
37
|
+
include_has_member: bool
|
|
40
38
|
|
|
41
39
|
|
|
42
40
|
def get_hierarchy(
|
|
@@ -124,63 +122,22 @@ def _get_predicate_sets(
|
|
|
124
122
|
return predicates, reverse_predicates
|
|
125
123
|
|
|
126
124
|
|
|
127
|
-
# docstr-coverage:excused `overload`
|
|
128
|
-
@overload
|
|
129
125
|
def is_descendent(
|
|
130
126
|
prefix: str,
|
|
131
127
|
identifier: str,
|
|
132
|
-
ancestor_prefix: str
|
|
133
|
-
ancestor_identifier: str
|
|
134
|
-
/,
|
|
135
|
-
**kwargs: Unpack[HierarchyKwargs],
|
|
136
|
-
) -> bool: ...
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
# docstr-coverage:excused `overload`
|
|
140
|
-
@overload
|
|
141
|
-
def is_descendent(
|
|
142
|
-
descendant: Reference,
|
|
143
|
-
ancestor: Reference,
|
|
144
|
-
_1: None = ...,
|
|
145
|
-
_2: None = ...,
|
|
146
|
-
/,
|
|
147
|
-
**kwargs: Unpack[HierarchyKwargs],
|
|
148
|
-
) -> bool: ...
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
def is_descendent(
|
|
152
|
-
prefix: str | Reference,
|
|
153
|
-
identifier: str | Reference,
|
|
154
|
-
ancestor_prefix: str | None = None,
|
|
155
|
-
ancestor_identifier: str | None = None,
|
|
156
|
-
/,
|
|
128
|
+
ancestor_prefix: str,
|
|
129
|
+
ancestor_identifier: str,
|
|
157
130
|
**kwargs: Unpack[HierarchyKwargs],
|
|
158
131
|
) -> bool:
|
|
159
132
|
"""Check that the first identifier has the second as a descendent.
|
|
160
133
|
|
|
161
|
-
|
|
162
|
-
:
|
|
163
|
-
:param ancestor_prefix: The prefix for the ancestor
|
|
164
|
-
:param ancestor_identifier: The local unique identifier for the ancestor
|
|
165
|
-
:param kwargs: Keyword arguments for :func:`get_hierarchy`
|
|
166
|
-
:return: If the decendant has the given ancestor
|
|
167
|
-
|
|
168
|
-
Check that ``GO:0070246`` (natural killer cell apoptotic process) is a descendant of
|
|
169
|
-
``GO:0006915`` (apoptotic process)
|
|
170
|
-
|
|
171
|
-
>>> nk_apoptosis = Reference.from_curie(
|
|
172
|
-
... "GO:0070246", name="natural killer cell apoptotic process"
|
|
173
|
-
... )
|
|
174
|
-
>>> apoptosis = Reference.from_curie("GO:0006915", name="apoptotic process")
|
|
175
|
-
>>> assert is_descendent(nk_apoptosis, apoptosis)
|
|
176
|
-
|
|
177
|
-
Using deprecated old-style arguments:
|
|
134
|
+
Check that go:0070246 ! natural killer cell apoptotic process is a descendant of
|
|
135
|
+
go:0006915 ! apoptotic process
|
|
178
136
|
|
|
179
137
|
>>> assert is_descendent("go", "0070246", "go", "0006915")
|
|
180
138
|
"""
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
)
|
|
139
|
+
ancestor = Reference(prefix=ancestor_prefix, identifier=ancestor_identifier)
|
|
140
|
+
descendant = Reference(prefix=prefix, identifier=identifier)
|
|
184
141
|
descendants = get_descendants(ancestor, **kwargs)
|
|
185
142
|
return descendants is not None and descendant in descendants
|
|
186
143
|
|
|
@@ -215,77 +172,26 @@ def get_children(
|
|
|
215
172
|
return set(hierarchy.predecessors(t))
|
|
216
173
|
|
|
217
174
|
|
|
218
|
-
# docstr-coverage:excused `overload`
|
|
219
|
-
@overload
|
|
220
175
|
def has_ancestor(
|
|
221
176
|
prefix: str,
|
|
222
177
|
identifier: str,
|
|
223
|
-
ancestor_prefix: str
|
|
224
|
-
ancestor_identifier: str
|
|
225
|
-
/,
|
|
226
|
-
**kwargs: Unpack[HierarchyKwargs],
|
|
227
|
-
) -> bool: ...
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
# docstr-coverage:excused `overload`
|
|
231
|
-
@overload
|
|
232
|
-
def has_ancestor(
|
|
233
|
-
descendant: Reference,
|
|
234
|
-
ancestor: Reference,
|
|
235
|
-
_1: None = ...,
|
|
236
|
-
_2: None = ...,
|
|
237
|
-
/,
|
|
238
|
-
**kwargs: Unpack[HierarchyKwargs],
|
|
239
|
-
) -> bool: ...
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
def has_ancestor(
|
|
243
|
-
prefix: str | Reference,
|
|
244
|
-
identifier: str | Reference,
|
|
245
|
-
ancestor_prefix: str | None = None,
|
|
246
|
-
ancestor_identifier: str | None = None,
|
|
247
|
-
/,
|
|
178
|
+
ancestor_prefix: str,
|
|
179
|
+
ancestor_identifier: str,
|
|
248
180
|
**kwargs: Unpack[HierarchyKwargs],
|
|
249
181
|
) -> bool:
|
|
250
182
|
"""Check that the first identifier has the second as an ancestor.
|
|
251
183
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
:param ancestor_prefix: The prefix for the ancestor
|
|
255
|
-
:param ancestor_identifier: The local unique identifier for the ancestor
|
|
256
|
-
:param kwargs: Keyword arguments for :func:`get_hierarchy`
|
|
257
|
-
:return: If the decendant has the given ancestor
|
|
258
|
-
|
|
259
|
-
Check that ``GO:0008219`` (cell death) is an ancestor of ``GO:0006915``
|
|
260
|
-
(apoptotic process):
|
|
261
|
-
|
|
262
|
-
>>> apoptosis = Reference.from_curie("GO:0006915", name="apoptotic process")
|
|
263
|
-
>>> cell_death = Reference.from_curie("GO:0008219", name="cell death")
|
|
264
|
-
>>> assert has_ancestor(apoptosis, cell_death)
|
|
265
|
-
|
|
266
|
-
The same, using the deprecated argumentation style:
|
|
184
|
+
Check that go:0008219 ! cell death is an ancestor of go:0006915 ! apoptotic
|
|
185
|
+
process
|
|
267
186
|
|
|
268
187
|
>>> assert has_ancestor("go", "0006915", "go", "0008219")
|
|
269
188
|
"""
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
)
|
|
189
|
+
ancestor = Reference(prefix=ancestor_prefix, identifier=ancestor_identifier)
|
|
190
|
+
descendant = Reference(prefix=prefix, identifier=identifier)
|
|
273
191
|
ancestors = get_ancestors(descendant, **kwargs)
|
|
274
192
|
return ancestors is not None and ancestor in ancestors
|
|
275
193
|
|
|
276
194
|
|
|
277
|
-
def _get_double_reference(
|
|
278
|
-
a: str | Reference, b: str | Reference, c: str | None, d: str | None
|
|
279
|
-
) -> tuple[Reference, Reference]:
|
|
280
|
-
if isinstance(a, Reference) and isinstance(b, Reference):
|
|
281
|
-
return a, b
|
|
282
|
-
elif all(isinstance(x, str) for x in (a, b, c, d)):
|
|
283
|
-
warnings.warn("passing strings is deprecated", DeprecationWarning, stacklevel=2)
|
|
284
|
-
return Reference(prefix=a, identifier=b), Reference(prefix=c, identifier=d)
|
|
285
|
-
else:
|
|
286
|
-
raise TypeError
|
|
287
|
-
|
|
288
|
-
|
|
289
195
|
@lru_cache
|
|
290
196
|
def get_ancestors(
|
|
291
197
|
prefix: str | Reference | ReferenceTuple,
|
|
@@ -8,9 +8,9 @@ from collections.abc import Callable, Mapping
|
|
|
8
8
|
from functools import lru_cache
|
|
9
9
|
from typing import Any, TypeVar
|
|
10
10
|
|
|
11
|
-
import curies
|
|
12
11
|
import pandas as pd
|
|
13
12
|
import ssslm
|
|
13
|
+
from curies import Reference, ReferenceTuple
|
|
14
14
|
from pystow.cache import Cached
|
|
15
15
|
from ssslm import LiteralMapping
|
|
16
16
|
from typing_extensions import Unpack
|
|
@@ -24,7 +24,6 @@ from ..constants import (
|
|
|
24
24
|
)
|
|
25
25
|
from ..getters import NoBuildError, get_ontology
|
|
26
26
|
from ..identifier_utils import wrap_norm_prefix
|
|
27
|
-
from ..struct import Reference
|
|
28
27
|
from ..utils.cache import cached_collection, cached_df, cached_mapping
|
|
29
28
|
from ..utils.io import multidict
|
|
30
29
|
from ..utils.path import CacheArtifact, get_cache_path
|
|
@@ -62,7 +61,7 @@ NO_BUILD_LOGGED: set = set()
|
|
|
62
61
|
|
|
63
62
|
def _help_get(
|
|
64
63
|
f: Callable[[str, Unpack[GetOntologyKwargs]], Mapping[str, X]],
|
|
65
|
-
reference:
|
|
64
|
+
reference: ReferenceTuple,
|
|
66
65
|
**kwargs: Unpack[GetOntologyKwargs],
|
|
67
66
|
) -> X | None:
|
|
68
67
|
"""Get the result for an entity based on a mapping maker function ``f``."""
|
|
@@ -92,14 +91,14 @@ def _help_get(
|
|
|
92
91
|
|
|
93
92
|
|
|
94
93
|
def get_name(
|
|
95
|
-
prefix: str |
|
|
94
|
+
prefix: str | Reference | ReferenceTuple,
|
|
96
95
|
identifier: str | None = None,
|
|
97
96
|
/,
|
|
98
97
|
**kwargs: Unpack[GetOntologyKwargs],
|
|
99
98
|
) -> str | None:
|
|
100
99
|
"""Get the name for an entity."""
|
|
101
100
|
reference = _get_pi(prefix, identifier)
|
|
102
|
-
return _help_get(get_id_name_mapping, reference, **kwargs)
|
|
101
|
+
return _help_get(get_id_name_mapping, reference.pair, **kwargs)
|
|
103
102
|
|
|
104
103
|
|
|
105
104
|
@lru_cache
|
|
@@ -219,14 +218,14 @@ def get_name_id_mapping(
|
|
|
219
218
|
|
|
220
219
|
|
|
221
220
|
def get_definition(
|
|
222
|
-
prefix: str |
|
|
221
|
+
prefix: str | Reference | ReferenceTuple,
|
|
223
222
|
identifier: str | None = None,
|
|
224
223
|
/,
|
|
225
224
|
**kwargs: Unpack[GetOntologyKwargs],
|
|
226
225
|
) -> str | None:
|
|
227
226
|
"""Get the definition for an entity."""
|
|
228
227
|
reference = _get_pi(prefix, identifier)
|
|
229
|
-
return _help_get(get_id_definition_mapping, reference, **kwargs)
|
|
228
|
+
return _help_get(get_id_definition_mapping, reference.pair, **kwargs)
|
|
230
229
|
|
|
231
230
|
|
|
232
231
|
def get_id_definition_mapping(
|
|
@@ -281,14 +280,14 @@ def get_obsolete_references(prefix: str, **kwargs: Unpack[GetOntologyKwargs]) ->
|
|
|
281
280
|
|
|
282
281
|
|
|
283
282
|
def get_synonyms(
|
|
284
|
-
prefix: str |
|
|
283
|
+
prefix: str | Reference | ReferenceTuple,
|
|
285
284
|
identifier: str | None = None,
|
|
286
285
|
/,
|
|
287
286
|
**kwargs: Unpack[GetOntologyKwargs],
|
|
288
287
|
) -> list[str] | None:
|
|
289
288
|
"""Get the synonyms for an entity."""
|
|
290
289
|
reference = _get_pi(prefix, identifier)
|
|
291
|
-
return _help_get(get_id_synonyms_mapping, reference, **kwargs)
|
|
290
|
+
return _help_get(get_id_synonyms_mapping, reference.pair, **kwargs)
|
|
292
291
|
|
|
293
292
|
|
|
294
293
|
@wrap_norm_prefix
|
|
@@ -311,7 +310,7 @@ def get_literal_mappings(
|
|
|
311
310
|
) -> list[LiteralMapping]:
|
|
312
311
|
"""Get literal mappings."""
|
|
313
312
|
df = get_literal_mappings_df(prefix=prefix, **kwargs)
|
|
314
|
-
rv = ssslm.df_to_literal_mappings(df
|
|
313
|
+
rv = ssslm.df_to_literal_mappings(df)
|
|
315
314
|
if skip_obsolete:
|
|
316
315
|
obsoletes = get_obsolete_references(prefix, **kwargs)
|
|
317
316
|
rv = [lm for lm in rv if lm.reference not in obsoletes]
|
|
@@ -4,6 +4,7 @@ import logging
|
|
|
4
4
|
from collections.abc import Mapping
|
|
5
5
|
|
|
6
6
|
import pandas as pd
|
|
7
|
+
from curies import Reference
|
|
7
8
|
from tqdm import tqdm
|
|
8
9
|
from typing_extensions import Unpack
|
|
9
10
|
|
|
@@ -16,7 +17,6 @@ from ..constants import (
|
|
|
16
17
|
)
|
|
17
18
|
from ..getters import get_ontology
|
|
18
19
|
from ..identifier_utils import wrap_norm_prefix
|
|
19
|
-
from ..struct import Reference
|
|
20
20
|
from ..struct.struct_utils import OBOLiteral, ReferenceHint, _ensure_ref
|
|
21
21
|
from ..utils.cache import cached_df
|
|
22
22
|
from ..utils.io import multidict
|
|
@@ -9,7 +9,6 @@ from typing import Literal, overload
|
|
|
9
9
|
|
|
10
10
|
import bioversions
|
|
11
11
|
import curies
|
|
12
|
-
from bioregistry import NormalizedNamableReference as Reference
|
|
13
12
|
from curies import ReferenceTuple
|
|
14
13
|
|
|
15
14
|
from ..constants import GetOntologyKwargs
|
|
@@ -138,13 +137,13 @@ def get_version_pins() -> dict[str, str]:
|
|
|
138
137
|
|
|
139
138
|
def _get_pi(
|
|
140
139
|
prefix: str | curies.Reference | ReferenceTuple, identifier: str | None = None, /
|
|
141
|
-
) -> Reference:
|
|
140
|
+
) -> curies.Reference:
|
|
142
141
|
if isinstance(prefix, ReferenceTuple | curies.Reference):
|
|
143
142
|
if identifier is not None:
|
|
144
143
|
raise ValueError("unexpected non-none value passed as second positional argument")
|
|
145
|
-
return Reference(prefix=prefix.prefix, identifier=prefix.identifier)
|
|
144
|
+
return curies.Reference(prefix=prefix.prefix, identifier=prefix.identifier)
|
|
146
145
|
if isinstance(prefix, str) and identifier is None:
|
|
147
|
-
return Reference.from_curie(prefix)
|
|
146
|
+
return curies.Reference.from_curie(prefix)
|
|
148
147
|
if identifier is None:
|
|
149
148
|
raise ValueError(
|
|
150
149
|
"prefix was given as a string, so an identifier was expected to be passed as a string as well"
|
|
@@ -154,4 +153,4 @@ def _get_pi(
|
|
|
154
153
|
DeprecationWarning,
|
|
155
154
|
stacklevel=4, # this is 4 since this is (always?) called from inside a decorator
|
|
156
155
|
)
|
|
157
|
-
return Reference(prefix=prefix, identifier=identifier)
|
|
156
|
+
return curies.Reference(prefix=prefix, identifier=identifier)
|