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:ο
pyhpo.HPOTerm.similarity_scores(): Calculate similarity to many otherHPOTermin parallel.pyhpo.HPOSet.similarity_scores(): Calculate similarity to many otherHPOSetin parallel.pyhpo.stats.linkage(): Cluster and linkage matrix analysis ofHPOSets for dendograms.pyhpo.helper.batch_similarity(): Calculate similarity scores ofHPOTerms in parallel.pyhpo.helper.batch_set_similarity(): Calculate similarity scores ofHPOSets in parallel.pyhpo.helper.batch_disease_enrichment(): Calculate enrichment of diseases in manyHPOSets in parallel.pyhpo.helper.batch_gene_enrichment(): Calculate enrichment of genes in manyHPOSets in parallel.
Missing or different functionality:ο
Association of Decipher diseases to
HPOTermscustom
InformationContentcalculationsOntology.searchdoes not include synonymsHPOSet.combinationsHPOSet.combinations_one_wayHPOSet.varianceHPOTerm.synonym,HPOTerm.xref,HPOTerm.definitionandHPOTerm.commentare not presentHPOTerm.path_to_other(minor implementation detail difference)Ontology.path(minor implementation detail difference)