Skip to content

Commit 516c103

Browse files
committed
fix: mypy
1 parent 65fbf7c commit 516c103

File tree

15 files changed

+110
-39
lines changed

15 files changed

+110
-39
lines changed

.github/workflows/check.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,19 @@ jobs:
1919
python-version: ${{ matrix.python-version }}
2020

2121
- name: Install poetry
22-
run: |
23-
pipx install poetry
22+
run: pipx install poetry
2423

2524
- name: Install dependencies
26-
run: |
27-
poetry install --with dev
25+
run: poetry install --with dev
2826

2927
- name: Ruff
3028
run: poetry run ruff check
3129

30+
- name: Install stubs
31+
run: poetry run pip install types-PyYAML types-tqdm
32+
3233
- name: Mypy
33-
run: poetry run mypy .
34+
run: poetry run mypy
3435

3536
- name: Pytest
3637
run: poetry run python -m pytest tests

experimental_env/analysis/analyze_summarizers/error_summarizer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def calculate(self, results: list[ExperimentDescription]) -> tuple:
3939
errors.append(error)
4040

4141
mean = np.sum(errors) / len(errors)
42-
standart_deviation = np.sqrt(np.sum((x - mean) ** 2 for x in errors) / len(errors))
42+
standart_deviation = np.sqrt(np.sum([(x - mean) ** 2 for x in errors]) / len(errors))
4343

4444
errors.sort()
4545
median = errors[len(errors) // 2]

experimental_env/analysis/analyze_summarizers/time_summarizer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ def calculate(self, results: list[ExperimentDescription]) -> tuple:
2323
"""
2424
times = []
2525
for result in results:
26-
time = np.sum(step.time for step in result.steps)
26+
time = np.sum([step.time for step in result.steps])
2727
times.append(time)
2828

2929
mean = np.sum(times) / len(times)
30-
deviation = np.sqrt(np.sum((x - mean) ** 2 for x in times) / len(times))
30+
deviation = np.sqrt(np.sum([(x - mean) ** 2 for x in times]) / len(times))
3131
return float(mean), float(deviation)
3232

3333
def analyze_method(self, results: list[ExperimentDescription], method: str):

experimental_env/experiment/estimators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from mpest.optimizers import ALL_OPTIMIZERS
1717
from mpest.utils import ANamed, Factory, ResultWithLog
1818

19-
METHODS = {
19+
METHODS: dict = {
2020
"Likelihood": [[Factory(BayesEStep), Factory(LikelihoodMStep, optimizer)] for optimizer in ALL_OPTIMIZERS],
2121
"L-moments": [Factory(IndicatorEStep), Factory(LMomentsMStep)],
2222
}

experimental_env/mixture_generators/abstract_generator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def __init__(self, seed: int = 42):
1616
random.seed(seed)
1717

1818
@abstractmethod
19-
def generate_priors(self, models: list[type[AModel]]) -> list[float]:
19+
def generate_priors(self, models: list[type[AModel]]) -> list[float | None]:
2020
"""
2121
A method for choosing how a prior probabilities will be generated.
2222
The function is needed so that, with a uniform distribution, degenerate distributions are not generated.

experimental_env/preparation/dataset_description.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Module which describes dataset"""
22

33
import copy
4+
from typing import Any
45

56
from mpest.annotations import Samples
67
from mpest.core.mixture_distribution import MixtureDistribution
@@ -61,9 +62,9 @@ def to_yaml_format(self) -> dict:
6162
"""
6263
Convert info about mixture to yaml format
6364
"""
64-
# pylint: disable=duplicate-code
6565

66-
output = {}
66+
output: dict[str, Any] = {}
67+
6768
# Add name
6869
output["name"] = self.get_dataset_name()
6970
output["samples_size"] = self._samples_size

experimental_env/preparation/dataset_generator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ class ConcreteDatasetGenerator:
6060

6161
def __init__(self, seed: int = 42):
6262
np.random.seed(seed)
63-
self._dists = []
64-
self._priors = []
63+
self._dists: list[Distribution] = []
64+
self._priors: list[float | None] = []
6565

6666
def add_distribution(self, model: type[AModel], params: list[float], prior: float) -> None:
6767
"""

mm.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
"""The script implements the first step of the experiment"""
2+
3+
from pathlib import Path
4+
5+
import numpy as np
6+
7+
from experimental_env.preparation.dataset_generator import (
8+
ConcreteDatasetGenerator,
9+
RandomDatasetGenerator,
10+
)
11+
from mpest.models import ExponentialModel, GaussianModel, WeibullModelExp
12+
13+
WORKING_DIR = Path("/home/iraedeus/Projects/stage_1")
14+
SAMPLES_SIZE = 1000
15+
16+
np.random.seed(42)
17+
18+
r_generator = RandomDatasetGenerator()
19+
mixtures = [
20+
[ExponentialModel],
21+
[GaussianModel],
22+
[WeibullModelExp],
23+
[WeibullModelExp, GaussianModel],
24+
[ExponentialModel, GaussianModel],
25+
[WeibullModelExp, WeibullModelExp],
26+
[ExponentialModel, ExponentialModel],
27+
]
28+
for models in mixtures:
29+
r_generator.generate(SAMPLES_SIZE, models, Path(WORKING_DIR), exp_count=100)
30+
31+
c_generator2 = ConcreteDatasetGenerator()
32+
models = [ExponentialModel]
33+
c_generator2.add_distribution(models[0], [1.0], 1.0)
34+
c_generator2.generate(SAMPLES_SIZE, Path(WORKING_DIR), 5)
35+
36+
c_generator3 = ConcreteDatasetGenerator()
37+
models = [GaussianModel]
38+
c_generator3.add_distribution(models[0], [0, 1.0], 1.0)
39+
c_generator3.generate(SAMPLES_SIZE, Path(WORKING_DIR), 5)
40+
41+
c_generator4 = ConcreteDatasetGenerator()
42+
models = [WeibullModelExp]
43+
c_generator4.add_distribution(models[0], [1.0, 1.0], 1.0)
44+
c_generator4.generate(SAMPLES_SIZE, Path(WORKING_DIR), 5)
45+
46+
c_generator5 = ConcreteDatasetGenerator()
47+
models = [WeibullModelExp]
48+
c_generator5.add_distribution(models[0], [1.0, 1.0], 1.0)
49+
c_generator5.generate(SAMPLES_SIZE, Path(WORKING_DIR), 5)
50+
51+
c_generator6 = ConcreteDatasetGenerator()
52+
models = [WeibullModelExp]
53+
c_generator6.add_distribution(models[0], [1.0, 0.5], 1.0)
54+
c_generator6.generate(SAMPLES_SIZE, Path(WORKING_DIR), 5)
55+
56+
c_generator7 = ConcreteDatasetGenerator()
57+
models = [GaussianModel, GaussianModel]
58+
c_generator7.add_distribution(models[0], [-1.0, 2.5], 0.3)
59+
c_generator7.add_distribution(models[1], [1.0, 0.5], 0.7)
60+
c_generator7.generate(SAMPLES_SIZE, Path(WORKING_DIR), 10)
61+
62+
c_generator8 = ConcreteDatasetGenerator()
63+
models = [GaussianModel, GaussianModel]
64+
c_generator8.add_distribution(models[0], [0.0, 1.5], 0.6)
65+
c_generator8.add_distribution(models[1], [1.0, 1.0], 0.4)
66+
c_generator8.generate(SAMPLES_SIZE, Path(WORKING_DIR), 10)

mpest/core/mixture_distribution.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,11 @@ def generate(self, size=1) -> Params:
122122
)
123123
)
124124

125-
x = []
125+
temp = []
126126
for i, model in enumerate(models):
127-
x += list(model[0].generate(x_models.count(i)))
127+
temp += list(model[0].generate(x_models.count(i)))
128128

129-
x = np.array(x)
129+
x = np.array(temp)
130130
np.random.shuffle(x)
131131

132132
return x

mpest/em/em.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ def postprocess_result(result: ResultWithError) -> ResultWithError:
246246

247247
return ResultWithError(new_mixture, result.error)
248248

249-
history = []
249+
history: list = []
250250

251251
def log_map(distributions: ResultWithError[EM._DistributionMixtureAlive]):
252252
return ResultWithError(

0 commit comments

Comments
 (0)