pyobo 0.8.11__py3-none-any.whl → 0.8.13__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pyobo/api/relations.py CHANGED
@@ -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",
pyobo/gilda_utils.py CHANGED
@@ -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:
pyobo/reader.py CHANGED
@@ -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
 
pyobo/sources/expasy.py CHANGED
@@ -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."""
pyobo/sources/hgnc.py CHANGED
@@ -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
pyobo/sources/mgi.py CHANGED
@@ -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
  ],
pyobo/sources/msigdb.py CHANGED
@@ -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
 
pyobo/sources/npass.py CHANGED
@@ -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()
pyobo/sources/pombase.py CHANGED
@@ -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
 
pyobo/struct/struct.py CHANGED
@@ -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
 
pyobo/utils/misc.py CHANGED
@@ -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
pyobo/version.py CHANGED
@@ -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
@@ -41,7 +41,7 @@ Requires-Dist: humanize
41
41
  Requires-Dist: tabulate
42
42
  Requires-Dist: cachier
43
43
  Requires-Dist: pystow (>=0.2.7)
44
- Requires-Dist: bioversions (>=0.5.82)
44
+ Requires-Dist: bioversions (>=0.5.83)
45
45
  Requires-Dist: bioregistry (>=0.4.29)
46
46
  Requires-Dist: zenodo-client (>=0.0.5)
47
47
  Requires-Dist: class-resolver
@@ -10,7 +10,7 @@ pyobo/config.py,sha256=HSvXW75czWoS2D7grudn9fh3bWMrVooF8USkVE-qPAE,937
10
10
  pyobo/constants.py,sha256=gj8xSUmCO0rU-eGXHOW7Vix3SAHl50cLAM3HXuoAFt4,2200
11
11
  pyobo/extract.py,sha256=SvI9gy4E6BgAFa99RmLS6WkC1zdl-Uy1Dz_XkXrgb_0,22815
12
12
  pyobo/getters.py,sha256=5L0HhIo5dig-CraK7bJONplPugP7EK_sr4jG0IWJ6hg,14962
13
- pyobo/gilda_utils.py,sha256=mS9MwcTUEshGwXgEPOz8VbXJZ-AtVwOMfY08JbwxQLA,6847
13
+ pyobo/gilda_utils.py,sha256=s2_-jzsd0d7wyrfq5ut8P_jDC2cbSnnAqy4WAtNNNLY,6980
14
14
  pyobo/identifier_utils.py,sha256=gSqc35l9patTxk-H-lCjtPffk3ksXO7hJRE_yhSzFT4,3399
15
15
  pyobo/io_utils.py,sha256=XlGpfcosANwVW5awnRWwnyifnzncrnUCvh5IgIpP2D4,3518
16
16
  pyobo/iter_utils.py,sha256=w8zSiopOEapJsFG_ZBvaof60M3BOP_YkCM4DnRZeyuk,1420
@@ -19,9 +19,9 @@ pyobo/ndex_utils.py,sha256=l-fQ74tOW74oi29_r3DCs0RSh138uqweW_fPfjxESq4,2207
19
19
  pyobo/normalizer.py,sha256=OHME2CDQSZYSbqmP-L_-4nxete9W9mtAjUzXVs1hnjU,8293
20
20
  pyobo/path_utils.py,sha256=MzihlFwW2ia7DIppCxudQVdGsmn-CpneTtRzXVCCnzE,4386
21
21
  pyobo/plugins.py,sha256=dXWGoFuQktNeQUWSJlPz2a7FeLysggc9ry6auEZdw98,1227
22
- pyobo/reader.py,sha256=hDbgRqLDl5Sx9qlhwWO6Nd9y19PMlUVakEUQ4dFaM0s,19839
22
+ pyobo/reader.py,sha256=Cm3JLpRuCS8AE-pQzf71HirZtUrBY1ax1BHndKnfFsU,19869
23
23
  pyobo/resource_utils.py,sha256=JBcJRihZhNwp78-qWZPrzSCGoYfyOjzBwMkfmOkO_no,4289
24
- pyobo/version.py,sha256=-06YBpRTcBwmXA6i2aFSEEGX6asahx5V3zaxigWT7KQ,977
24
+ pyobo/version.py,sha256=V_9kVhK0qY8rydoswR_GsGePBi7MZU3qzIJiHBKMpC8,977
25
25
  pyobo/zenodo_client.py,sha256=Ei4L3OeqzMITI8AwhmzSWAFYbpD2zlesCihy8dqksLI,5170
26
26
  pyobo/api/__init__.py,sha256=PFgalyQ32ZvJmeHvapdngH10gSlaAkCdLY2E30tHHxc,1236
27
27
  pyobo/api/alts.py,sha256=xmAb-gGQCJ9MbaFvoNK6E-V0B3TV9hxulkfbkHIvOso,2617
@@ -29,7 +29,7 @@ pyobo/api/hierarchy.py,sha256=dZIR2mp1Zh1V9WzTwF6EoCQOEa1MRB7WY31nd2_wTbc,8336
29
29
  pyobo/api/metadata.py,sha256=62E7j0ZW3vYK2Rh-R7NCMKnChbYjZwPjVDoaE1AsCOc,1070
30
30
  pyobo/api/names.py,sha256=VSrFS2VQZGBRE2ixn016eRC7xRXQQFuJ6ldzbERg0nY,6178
31
31
  pyobo/api/properties.py,sha256=PTCYsYmma3cym-dYY44p2NVGD7Z1dKZdC1otcfUflqg,7342
32
- pyobo/api/relations.py,sha256=SeMaZoNRWJykR-K0zuSVU-MSna10GwJadx2LLmeJM2Y,5316
32
+ pyobo/api/relations.py,sha256=3O1iM-dWyxphrccUoIYaSRtKLKDzmmGIM4wXOC6voVc,5379
33
33
  pyobo/api/species.py,sha256=xRPRoD6n1wcDaqlC_tHLw3rKMWa4razWsSPNa228g_4,2181
34
34
  pyobo/api/typedefs.py,sha256=TqNZ8_5ntw6PXwvqIlHtMHqD7l2jWwHn48vccUPbJiI,1061
35
35
  pyobo/api/utils.py,sha256=QAROqQPzr51VJb2uS5R8gZqIe4vclfUL0MbmirnGgc0,937
@@ -110,14 +110,14 @@ pyobo/sources/dictybase_gene.py,sha256=EgWBwUZ83ev7x5Lp_nUkgSq2zumkDjJ7_13m3f6kJ
110
110
  pyobo/sources/drugbank.py,sha256=R-N5I52tCo8EjlJY61iUvFlyoiGZB_a3bALl6C8pI3s,10750
111
111
  pyobo/sources/drugbank_salt.py,sha256=hx16G41mP2KXT4fsAQRCRkJMGn-z5cafs-bwm4wMtwo,1783
112
112
  pyobo/sources/drugcentral.py,sha256=aiL51iN8xC6Jsq7PnSAhwCdRJin5cdkteuYQFCarynE,3317
113
- pyobo/sources/expasy.py,sha256=QUZWcBH-d2AQg7OYPE8aYBdYwx30hI4SxYRsWbk550o,8885
113
+ pyobo/sources/expasy.py,sha256=Vjq3QHqmrpH60I9Gb15s66vzTBx4GcBvfI3BpMMUZXc,9329
114
114
  pyobo/sources/famplex.py,sha256=SpxRaAROie5a4ig-Zza0vfgQbbO82arZ-d9sgjJsIKs,5643
115
115
  pyobo/sources/flybase.py,sha256=0-BCNsp-L-CgGPN9VdJec6-8e4-fJuzaZAZiNra3ZUQ,5768
116
116
  pyobo/sources/gmt_utils.py,sha256=3lHrN5zYJy9AECTMeeEjr8LqsI9GLlP2xo2ZWpCT0uw,1297
117
117
  pyobo/sources/go.py,sha256=IJul9eAXxKifZiWKJL1Dl9PFDFdoPMQ0ZVydzhnRtX0,1275
118
118
  pyobo/sources/gwascentral_phenotype.py,sha256=jNai819u9NWvfsUkafjcROIwc-oZ6z7ISKyq2S_SZus,1866
119
119
  pyobo/sources/gwascentral_study.py,sha256=h7dfOhS77yc09O9Lv4L6ZFPH50evIaov6LYhwGiHgdU,2782
120
- pyobo/sources/hgnc.py,sha256=YGyGGOZB2S2g7JONZiX4C_TxhdNYu7KyZjT6-7lOJsQ,13304
120
+ pyobo/sources/hgnc.py,sha256=9URsvvPTZWBN-UWmK10p41N8exuzbHwysnxLoLp3U2A,13820
121
121
  pyobo/sources/hgncgenefamily.py,sha256=F6ZJvOokfAHwXYJqireyyy43F8688nHYnrNrUzuGpGA,3722
122
122
  pyobo/sources/icd10.py,sha256=KhenR1U8LvZQF97mRZIoSEE_daKcJ2hTJ41BQU7SNuM,2286
123
123
  pyobo/sources/icd11.py,sha256=04nLt-Lr64hAroOLH4OP-iNbuIjBk-mYcg-Ib34zgMM,2834
@@ -125,20 +125,20 @@ pyobo/sources/icd_utils.py,sha256=i52zlxKU-QjGAgaPZcwKbqAdjYi091pYXmrTRv2Kt08,29
125
125
  pyobo/sources/interpro.py,sha256=IRI7IUDAlvdyYJHS6y_eppc32fXoZIqHlJXNP57inus,4941
126
126
  pyobo/sources/itis.py,sha256=LXS4MTL7OMmdfo-ypoF75UJkePw7VnHDrgq10RF_VUk,2967
127
127
  pyobo/sources/mesh.py,sha256=bpKVgzAULZ0biUEk4orRlmZsAEImt6rIgdsyq9wT-SA,9398
128
- pyobo/sources/mgi.py,sha256=f2kRe66wN6CRtaSOqbjWasCrUebR6riaJVcmAxYmpAY,5653
128
+ pyobo/sources/mgi.py,sha256=3L4qmnEO_MjFAt6YCu37-cRaB4a0SGclSDc91tzV_mg,5670
129
129
  pyobo/sources/mirbase.py,sha256=N6_GfJ76OxnXMBbdoxnvTBCIqiGYoZoG3EAlyn7LlCM,6072
130
130
  pyobo/sources/mirbase_constants.py,sha256=d23A5hCWjEW4CQMdLqxOmBaon95MiGEIEQnQaG1S8ds,1948
131
131
  pyobo/sources/mirbase_family.py,sha256=0hsbmSxLh9YOK7_W0cacw6cQAiVs7gBTwvsRQ5LXhP0,2038
132
- pyobo/sources/mirbase_mature.py,sha256=yOpyMMrXYG-FPZaPkD-tI-C8eXn01hpV5w-EBFOv3bU,1265
132
+ pyobo/sources/mirbase_mature.py,sha256=ND4OtAd8hxkDbszyFyFvfJbsUUozyeh-1xt15VbeFO0,1374
133
133
  pyobo/sources/msig.py,sha256=m46F7Q4zEqagiRaRI-5sq09MyQwxnA7u-aZ9mJ-A9qE,1727
134
- pyobo/sources/msigdb.py,sha256=gKqGLd13F9aVKjNpPUrxan0Pjfoe9tEccRqXjLq4juE,4882
134
+ pyobo/sources/msigdb.py,sha256=_7wI10CCaUisJhR56WsEpXGXhurs2ycwgl9UqVUwLC4,4888
135
135
  pyobo/sources/ncbigene.py,sha256=AFxaRHMmxvemTMWmN2zge1Ex2HjhpY3K-o1MsPN0Ao0,4507
136
- pyobo/sources/npass.py,sha256=rhFZo3xePCpaalyxtRbzvQKP1Euqi43UVRnmD3Krt80,2834
136
+ pyobo/sources/npass.py,sha256=7h5GYfSXPYQCdQ9ykEHPk8yHVvSvc_pT1pSl_snqeWg,2712
137
137
  pyobo/sources/pathbank.py,sha256=yhdS4BCbGxQf0o3HCGzL2cYRY7zyvHvDzzSBkkezoog,4989
138
138
  pyobo/sources/pfam.py,sha256=4GT-NN3fbCgS1bbfBdGI9iTpc1o3NxzLBsW4zvSeDxw,1898
139
139
  pyobo/sources/pfam_clan.py,sha256=YdjxdUn5155uj9KJcyTeMiZY4XrpIfi-Cf91z-QEc4I,1333
140
140
  pyobo/sources/pid.py,sha256=bICTkOaWl6iFS0mTUoPB3UrhiIsOvqGaXhXW_1j6d_s,4512
141
- pyobo/sources/pombase.py,sha256=OrVYPyA0h4mOTI34NG7q5YjoIi7ncfggcl3yzeUJEx0,3323
141
+ pyobo/sources/pombase.py,sha256=1w_YuVbZVL6r4t_xDkjNg8yP28_PaNqmr0HuQxSYdhY,3431
142
142
  pyobo/sources/pubchem.py,sha256=JcvrKTH3NklBvO25Ur5WWzxBk1f_SV-Uj2egP-1xZUQ,5218
143
143
  pyobo/sources/reactome.py,sha256=V9YahRefhTmV1CMNRSR80FnaqJw8ztOd6HO-INhtdpY,5004
144
144
  pyobo/sources/rgd.py,sha256=RzIhwtQNca6RWfOO0mOg4LC_LuNqtsq4BSA80Th8zGM,5421
@@ -152,7 +152,7 @@ pyobo/sources/kegg/__init__.py,sha256=g0Ui2giVNV_y8LYWJEz-1TIcp_NY8YWDuwHORw4RmK
152
152
  pyobo/sources/kegg/api.py,sha256=CBTO72PIfLh6ZczDrPBDtnxEkuXN9_DCgXqQo6CNwQQ,4721
153
153
  pyobo/sources/kegg/genes.py,sha256=CkhjAoShKJepmLilvW7ATbK5ru0sbCX3PonIjm96zo4,3687
154
154
  pyobo/sources/kegg/genome.py,sha256=F0ymTvwAS55lWCuvUcn67uUwGad7_z-9JOeavRDjB1c,3984
155
- pyobo/sources/kegg/pathway.py,sha256=HTiHubaXko2sVMPCKnFVAX7qN4uBOe46tbh8YUenRNM,6201
155
+ pyobo/sources/kegg/pathway.py,sha256=QXypKRrG2dcX9nFhGzSi0YgJeflNhfZd4MHHpUBGy1M,6187
156
156
  pyobo/sources/selventa/__init__.py,sha256=RHKjcBvyovcyJVRhfSU7oCyNY9j79Qos7GCfdmh_riM,279
157
157
  pyobo/sources/selventa/schem.py,sha256=XvTMhX4QLPAAOfN9mGwM_aEdVfemv2lqO-PqbI4_YUo,1329
158
158
  pyobo/sources/selventa/scomp.py,sha256=N30DQ3ElGLODcbHhRvRnq6t8b4Yl7lAqNJFM3Nrqc1E,1704
@@ -173,7 +173,7 @@ pyobo/ssg/typedef.html,sha256=KrdqzB6xjt689bG33D26AL-11JrvNuEkoxNNI-EG-Tg,2038
173
173
  pyobo/struct/__init__.py,sha256=imJ-ffEGBI8f_kSbmDC-VQMCZksLxoHh7OjwvF4chwM,653
174
174
  pyobo/struct/reference.py,sha256=ukUcTqVpdcEDyBfIjFn4wuZpqUtPunC-zPr8JgMx0t4,4746
175
175
  pyobo/struct/registry.py,sha256=oTip6K-dN12bwKaraCv2kfugGrOB9uV77yi3b8xxj7E,840
176
- pyobo/struct/struct.py,sha256=hU9D2_zTQoWddamSsS2FhOJHqphuTWzr7m87eHgxtqE,49149
176
+ pyobo/struct/struct.py,sha256=4lhoy_hCslMCcJ5FtRviO8RNH3VKKuAyXHntZ-fh9xo,49250
177
177
  pyobo/struct/typedef.py,sha256=pTij8QerL5mYqgMjQppa_f1CXytNZLRsljTYAZLjTyM,10817
178
178
  pyobo/struct/utils.py,sha256=-XHuCETp7jPNhjHCW72gikaKoaiTPTNhDK5BZYyJsVw,815
179
179
  pyobo/utils/__init__.py,sha256=wXtcjcasWRBtJdTSMCC3jT8yFG8ZkQC-Xdh9lLiQDAo,42
@@ -181,7 +181,7 @@ pyobo/utils/cache.py,sha256=bmuEE0DyppY6szNEzkS1tLLKfsLIrHQFhp0P-q94KFs,2677
181
181
  pyobo/utils/citation.py,sha256=R7PqtWoQh8lqedg542Q3anWev1B_iQeIHB3xSN-FMaw,904
182
182
  pyobo/utils/io.py,sha256=9kiqHVSjnlsiG6cjrQ67bPcXE6K0HWZMNdaU_22Xvqw,4716
183
183
  pyobo/utils/iter.py,sha256=VyISqr04Pg2xLSLJhypUuZnh7WzxVmpp3MsASCuL8Tk,1475
184
- pyobo/utils/misc.py,sha256=tRzerTmnAvC-xoGzhmQPbXI_48bBS4Nw31BUY4_R5QI,3237
184
+ pyobo/utils/misc.py,sha256=iJuog7Koluf_qF1Q5AMYdlzOQIiKnEebMxsD5ZcmqjE,3235
185
185
  pyobo/utils/ndex_utils.py,sha256=gxmGfR_O-ZMOsBil_YFSn99x_Fvatg7O8s9iZp4Iy10,2351
186
186
  pyobo/utils/path.py,sha256=B6hmWbrEXoIox6rBzHggfc6GmxzSmMHxcuiUGvRjZ9o,3319
187
187
  pyobo/xrefdb/__init__.py,sha256=0W6AuvghFHQ1zY-Dq26z8V_MRC9xL39aWqLb-JbU8T8,74
@@ -203,9 +203,9 @@ pyobo/xrefdb/sources/intact.py,sha256=F0z6WrOwI79aZSuM5MsvQwzqoyzh9J0UuB4Mseoj9X
203
203
  pyobo/xrefdb/sources/ncit.py,sha256=unoIKJqdcfitTc6pU9P1SxJ1w8ax0iDjvEOlqe64nCY,3745
204
204
  pyobo/xrefdb/sources/pubchem.py,sha256=GaqgqtSV-T_P-900nL3alPx_ZB36MlmnEepOnZMONA4,780
205
205
  pyobo/xrefdb/sources/wikidata.py,sha256=ODi87EMsE3pJKkZTmaOgjbxsHFgqROGsZ6r0w2gbHC8,3351
206
- pyobo-0.8.11.dist-info/LICENSE,sha256=GRbxxtZEWtZiFGDENk1gntCQK4HEJYYbylEJEwpSLao,1076
207
- pyobo-0.8.11.dist-info/METADATA,sha256=cxlgI-TRzPBr5rRTgvatITcEJOzS88eazqZZgAn25a0,19895
208
- pyobo-0.8.11.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
209
- pyobo-0.8.11.dist-info/entry_points.txt,sha256=Du5V6qw_T917Z5ZoMhLTTJoolK7kkVuUWkdE7aJWea0,669
210
- pyobo-0.8.11.dist-info/top_level.txt,sha256=oVdkT-pbiGoSdGSQplXFuP1KQGJNf4GdRC65jn6y9t0,6
211
- pyobo-0.8.11.dist-info/RECORD,,
206
+ pyobo-0.8.13.dist-info/LICENSE,sha256=GRbxxtZEWtZiFGDENk1gntCQK4HEJYYbylEJEwpSLao,1076
207
+ pyobo-0.8.13.dist-info/METADATA,sha256=WFrBL_Y_KmMYOuboeFPShJio1t9dU5b2Z4jGC8dVyQ4,19895
208
+ pyobo-0.8.13.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
209
+ pyobo-0.8.13.dist-info/entry_points.txt,sha256=Du5V6qw_T917Z5ZoMhLTTJoolK7kkVuUWkdE7aJWea0,669
210
+ pyobo-0.8.13.dist-info/top_level.txt,sha256=oVdkT-pbiGoSdGSQplXFuP1KQGJNf4GdRC65jn6y9t0,6
211
+ pyobo-0.8.13.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.37.1)
2
+ Generator: bdist_wheel (0.38.4)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5