PyHPO vs hpo3

hpo3 is designed as a drop-in replacement of PyHPO. It is written in Rust and thus much faster, which enables large scale data analysis. It is almost 100% feature identical, but some obscure features might be missing. If that’s the case, please open a Github Issue.

In addition to feature parity, hpo3 also offers some additional functionality for batchwise operations that are 100s of times faster than similar implementations in PyHPO. The Rust backend also offers additional safety guarantees, such as immutability, reducing potential nasty RuntimeErrors. This immutability might come as a disadvantage though, if you actually want to modify the Ontology or terms. In cases where you need mutability, you must continue using PyHPO.

All that being said, I strongly recommend to using hpo3, as it is vastly superior.

Additional functionality:

Missing or different functionality:

  • Association of Orpha diseases to HPOTerms

  • Association of Decipher diseases to HPOTerms

  • custom InformationContent calculations

  • Ontology.search does not include synonyms

  • HPOSet.combinations

  • HPOSet.combinations_one_way

  • HPOSet.variance

  • HPOTerm.synonym, HPOTerm.xref, HPOTerm.definition and HPOTerm.comment are not present

  • HPOTerm.path_to_other (minor implementation detail difference)

  • Ontology.path (minor implementation detail difference)