Skip to content

Runner

Runners Module

DefaultPhEvalRunner dataclass

Bases: PhEvalRunner

DefaultPhEvalRunner

Parameters:

Name Type Description Default
PhEvalRunner PhEvalRunner

Abstract PhEvalRunnerClass

required
Source code in src/pheval/runners/runner.py
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
class DefaultPhEvalRunner(PhEvalRunner):
    """DefaultPhEvalRunner

    Args:
        PhEvalRunner (PhEvalRunner): Abstract PhEvalRunnerClass
    """

    input_dir: Path
    testdata_dir: Path
    tmp_dir: Path
    output_dir: Path
    config_file: Path
    version: str

    def prepare(self):
        print("preparing")

    def run(self):
        print("running")

    def post_process(self):
        print("post processing")

PhEvalRunner dataclass

Bases: ABC

PhEvalRunner Class

Source code in src/pheval/runners/runner.py
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
@dataclass
class PhEvalRunner(ABC):
    """PhEvalRunner Class"""

    input_dir: Path
    testdata_dir: Path
    tmp_dir: Path
    output_dir: Path
    config_file: Path
    version: str
    directory_path = None
    input_dir_config = None
    _meta_data = None
    __raw_results_dir = "raw_results/"
    __pheval_gene_results_dir = "pheval_gene_results/"
    __pheval_variant_results_dir = "pheval_variant_results/"
    __pheval_disease_results_dir = "pheval_disease_results/"
    __tool_input_commands_dir = "tool_input_commands/"
    __run_meta_data_file = "results.yml"

    def __post_init__(self):
        self.input_dir_config = parse_input_dir_config(self.input_dir)

    def _get_tool(self):
        return self.input_dir_config.tool

    def _get_variant_analysis(self):
        return self.input_dir_config.variant_analysis

    def _get_gene_analysis(self):
        return self.input_dir_config.gene_analysis

    def _get_disease_analysis(self):
        return self.input_dir_config.disease_analysis

    @property
    def tool_input_commands_dir(self):
        return Path(self.output_dir).joinpath(self.__tool_input_commands_dir)

    @tool_input_commands_dir.setter
    def tool_input_commands_dir(self, directory_path):
        self.directory_path = Path(directory_path)

    @property
    def raw_results_dir(self):
        return Path(self.output_dir).joinpath(self.__raw_results_dir)

    @raw_results_dir.setter
    def raw_results_dir(self, directory_path):
        self.directory_path = Path(directory_path)

    @property
    def pheval_gene_results_dir(self):
        return Path(self.output_dir).joinpath(self.__pheval_gene_results_dir)

    @pheval_gene_results_dir.setter
    def pheval_gene_results_dir(self, directory_path):
        self.directory_path = Path(directory_path)

    @property
    def pheval_variant_results_dir(self):
        return Path(self.output_dir).joinpath(self.__pheval_variant_results_dir)

    @pheval_variant_results_dir.setter
    def pheval_variant_results_dir(self, directory_path):
        self.directory_path = Path(directory_path)

    @property
    def pheval_disease_results_dir(self):
        return Path(self.output_dir).joinpath(self.__pheval_disease_results_dir)

    @pheval_disease_results_dir.setter
    def pheval_disease_results_dir(self, directory_path):
        self.directory_path = Path(directory_path)

    def build_output_directory_structure(self):
        """build output directory structure"""
        logger.info(
            f"Building output directory structure for {self.input_dir_config.tool} "
            f"version {self.input_dir_config.tool_version}"
        )
        self.tool_input_commands_dir.mkdir(exist_ok=True)
        self.raw_results_dir.mkdir(exist_ok=True)
        if self._get_variant_analysis():
            self.pheval_variant_results_dir.mkdir(exist_ok=True)
        if self._get_gene_analysis():
            self.pheval_gene_results_dir.mkdir(exist_ok=True)
        if self._get_disease_analysis():
            self.pheval_disease_results_dir.mkdir(exist_ok=True)

    @property
    def meta_data(self):
        self._meta_data = BasicOutputRunMetaData(
            tool=self.input_dir_config.tool,
            tool_version=self.version,
            config=f"{Path(self.input_dir).parent.name}/{Path(self.input_dir).name}",
            run_timestamp=datetime.now().timestamp(),
            corpus=f"{Path(self.testdata_dir).parent.name}/{Path(self.testdata_dir).name}",
            mondo_download_date=get_resource_timestamp("mondo.sssom.tsv"),
            hgnc_download_date=get_resource_timestamp("hgnc_complete_set.txt"),
        )
        return self._meta_data

    @meta_data.setter
    def meta_data(self, meta_data):
        self._meta_data = meta_data

    @abstractmethod
    def prepare(self) -> str:
        """prepare"""

    @abstractmethod
    def run(self):
        """run"""

    @abstractmethod
    def post_process(self):
        """post_process"""

    def construct_meta_data(self):
        """Construct run output meta data"""
        return self.meta_data

build_output_directory_structure()

build output directory structure

Source code in src/pheval/runners/runner.py
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
def build_output_directory_structure(self):
    """build output directory structure"""
    logger.info(
        f"Building output directory structure for {self.input_dir_config.tool} "
        f"version {self.input_dir_config.tool_version}"
    )
    self.tool_input_commands_dir.mkdir(exist_ok=True)
    self.raw_results_dir.mkdir(exist_ok=True)
    if self._get_variant_analysis():
        self.pheval_variant_results_dir.mkdir(exist_ok=True)
    if self._get_gene_analysis():
        self.pheval_gene_results_dir.mkdir(exist_ok=True)
    if self._get_disease_analysis():
        self.pheval_disease_results_dir.mkdir(exist_ok=True)

construct_meta_data()

Construct run output meta data

Source code in src/pheval/runners/runner.py
135
136
137
def construct_meta_data(self):
    """Construct run output meta data"""
    return self.meta_data

post_process() abstractmethod

post_process

Source code in src/pheval/runners/runner.py
131
132
133
@abstractmethod
def post_process(self):
    """post_process"""

prepare() abstractmethod

prepare

Source code in src/pheval/runners/runner.py
123
124
125
@abstractmethod
def prepare(self) -> str:
    """prepare"""

run() abstractmethod

run

Source code in src/pheval/runners/runner.py
127
128
129
@abstractmethod
def run(self):
    """run"""