pheval 0.5.6__tar.gz → 0.5.8__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.
Potentially problematic release.
This version of pheval might be problematic. Click here for more details.
- {pheval-0.5.6 → pheval-0.5.8}/PKG-INFO +1 -1
- {pheval-0.5.6 → pheval-0.5.8}/pyproject.toml +6 -3
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/implementations/__init__.py +7 -3
- pheval-0.5.8/src/pheval/implementations/pheval_class_resolver.py +40 -0
- {pheval-0.5.6 → pheval-0.5.8}/LICENSE +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/README.md +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/__init__.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/analyse/__init__.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/analyse/benchmark.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/analyse/benchmark_db_manager.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/analyse/benchmark_output_type.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/analyse/binary_classification_curves.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/analyse/binary_classification_stats.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/analyse/generate_plots.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/analyse/generate_rank_comparisons.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/analyse/rank_stats.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/analyse/run_data_parser.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/cli.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/cli_pheval.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/cli_pheval_utils.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/config_parser.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/infra/__init__.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/infra/exomiserdb.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/post_processing/__init__.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/post_processing/phenopacket_truth_set.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/post_processing/post_processing.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/post_processing/validate_result_format.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/prepare/__init__.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/prepare/create_noisy_phenopackets.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/prepare/create_spiked_vcf.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/prepare/custom_exceptions.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/prepare/prepare_corpus.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/prepare/update_phenopacket.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/resources/alternate_ouputs/CADA_results.txt +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/resources/alternate_ouputs/DeepPVP_results.txt +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/resources/alternate_ouputs/OVA_results.txt +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/resources/alternate_ouputs/Phen2Gene_results.json +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/resources/alternate_ouputs/Phenolyzer_results.txt +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/resources/alternate_ouputs/lirical_results.tsv +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/resources/alternate_ouputs/svanna_results.tsv +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/resources/hgnc_complete_set.txt +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/run_metadata.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/runners/__init__.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/runners/runner.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/utils/__init__.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/utils/docs_gen.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/utils/docs_gen.sh +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/utils/exomiser.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/utils/file_utils.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/utils/logger.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/utils/phenopacket_utils.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/utils/semsim_utils.py +0 -0
- {pheval-0.5.6 → pheval-0.5.8}/src/pheval/utils/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "pheval"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.8"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["Yasemin Bridges <y.bridges@qmul.ac.uk>",
|
|
6
6
|
"Julius Jacobsen <j.jacobsen@qmul.ac.uk>",
|
|
@@ -40,15 +40,18 @@ pytest-workflow = "^2.0.1"
|
|
|
40
40
|
pheval = "pheval.cli:pheval"
|
|
41
41
|
pheval-utils = "pheval.cli:pheval_utils"
|
|
42
42
|
|
|
43
|
+
[tool.poetry.group.docs]
|
|
44
|
+
optional = true
|
|
45
|
+
|
|
43
46
|
[tool.poetry.group.docs.dependencies]
|
|
44
47
|
mkdocs = "^1.4.2"
|
|
45
48
|
mkdocs-material = "^8.5.11"
|
|
46
|
-
mkdocstrings = "^0.24.0"
|
|
47
|
-
mkdocstrings-python = "^1.8.0"
|
|
48
49
|
pymdown-extensions = "^9.9"
|
|
49
50
|
mkdocs-include-dir-to-nav = "^1.2.0"
|
|
50
51
|
mkdocs-click = "^0.8.0"
|
|
51
52
|
griffe = ">=1.3.2,<2.0.0"
|
|
53
|
+
mkdocstrings-python = "^1.16.11"
|
|
54
|
+
mkdocstrings = "^0.29.1"
|
|
52
55
|
|
|
53
56
|
[tool.poetry.group.dev.dependencies]
|
|
54
57
|
black = "^22.12.0"
|
|
@@ -4,6 +4,7 @@ from functools import cache
|
|
|
4
4
|
|
|
5
5
|
from class_resolver import ClassResolver
|
|
6
6
|
|
|
7
|
+
from pheval.implementations.pheval_class_resolver import PhevalClassResolver
|
|
7
8
|
from pheval.runners.runner import PhEvalRunner
|
|
8
9
|
|
|
9
10
|
|
|
@@ -14,9 +15,11 @@ def get_implementation_resolver() -> ClassResolver[PhEvalRunner]:
|
|
|
14
15
|
Returns:
|
|
15
16
|
ClassResolver[PhEvalRunner]: _description_
|
|
16
17
|
"""
|
|
17
|
-
implementation_resolver:
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
implementation_resolver: PhevalClassResolver[PhEvalRunner] = (
|
|
19
|
+
PhevalClassResolver.from_subclasses(
|
|
20
|
+
PhEvalRunner,
|
|
21
|
+
suffix="Implementation",
|
|
22
|
+
)
|
|
20
23
|
)
|
|
21
24
|
|
|
22
25
|
# implementation_resolver.synonyms.update(
|
|
@@ -34,5 +37,6 @@ def get_implementation_resolver() -> ClassResolver[PhEvalRunner]:
|
|
|
34
37
|
# See also:
|
|
35
38
|
# https://packaging.python.org/en/latest/specifications/entry-points/
|
|
36
39
|
# https://class-resolver.readthedocs.io/en/latest/api/class_resolver.ClassResolver.html#class_resolver.ClassResolver.register_entrypoint
|
|
40
|
+
|
|
37
41
|
implementation_resolver.register_entrypoint("pheval.plugins")
|
|
38
42
|
return implementation_resolver
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Dependencies taken from class_resolver:
|
|
2
|
+
# https://github.com/cthoyt/class-resolver/blob/5e51b41d08381e1754f3445c5ce4fcea4f6612d6/src/class_resolver/base.py#L276
|
|
3
|
+
from importlib.metadata import entry_points
|
|
4
|
+
|
|
5
|
+
# Dependency from importlib.metadata:
|
|
6
|
+
# https://github.com/cthoyt/class-resolver/blob/5e51b41d08381e1754f3445c5ce4fcea4f6612d6/src/class_resolver/utils.py#L45
|
|
7
|
+
from typing import TypeVar
|
|
8
|
+
|
|
9
|
+
from class_resolver import ClassResolver
|
|
10
|
+
|
|
11
|
+
from pheval.utils.logger import get_logger
|
|
12
|
+
|
|
13
|
+
X = TypeVar("X")
|
|
14
|
+
logger = get_logger()
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# Create a custom ClassResolver class to modify the _from_entrypoint method.
|
|
18
|
+
class PhevalClassResolver(ClassResolver):
|
|
19
|
+
def __init__(self, *args, **kwargs) -> None:
|
|
20
|
+
super().__init__(*args, **kwargs)
|
|
21
|
+
|
|
22
|
+
# Modified _from_entrypoint method to raise error instead of warning
|
|
23
|
+
@staticmethod
|
|
24
|
+
def _from_entrypoint_custom(group: str) -> set[X]:
|
|
25
|
+
elements: set[X] = set()
|
|
26
|
+
for entry in entry_points(group=group):
|
|
27
|
+
try:
|
|
28
|
+
element = entry.load()
|
|
29
|
+
logger.info(f"Loaded {entry.name} correctly")
|
|
30
|
+
except (ImportError, AttributeError):
|
|
31
|
+
logger.warn(f"could not load {entry.name}. See error message below.")
|
|
32
|
+
raise
|
|
33
|
+
else:
|
|
34
|
+
elements.add(element)
|
|
35
|
+
return elements
|
|
36
|
+
|
|
37
|
+
def register_entrypoint(self, group: str) -> None:
|
|
38
|
+
"""Register additional entries from an entrypoint."""
|
|
39
|
+
for element in self._from_entrypoint_custom(group).difference(self.lookup_dict.values()):
|
|
40
|
+
self.register(element)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|