Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
- name: Tests with Coveralls
if: matrix.python-version == '3.12'
run: |
poetry run pytest --random-order --cov=stattest --cov-config=.coveragerc
poetry run pytest --random-order --cov=pysatl_experiment --cov-config=.coveragerc

- name: Coveralls
if: matrix.python-version == '3.12'
Expand Down
15 changes: 0 additions & 15 deletions generators/gen.py

This file was deleted.

35 changes: 19 additions & 16 deletions graph_norm_experiment.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,32 @@
import multiprocessing

from numpy import random as rd
from pysatl.criterion import KolmogorovSmirnovNormalityGofStatistic
from pysatl.criterion.normal import (
GraphEdgesNumberNormalityGofStatistic,
GraphMaxDegreeNormalityGofStatistic,
)

from stattest.experiment import Experiment
from stattest.experiment.configuration.configuration import (
from pysatl_experiment.experiment.configuration import (
AlternativeConfiguration,
ExperimentConfiguration,
ReportConfiguration,
TestConfiguration,
)
from stattest.experiment.generator.generators import (
from pysatl_experiment.experiment.experiment import Experiment
from pysatl_experiment.experiment.generator import GammaGenerator
from pysatl_experiment.experiment.generator.generators import (
Chi2Generator,
ExponentialGenerator,
GammaGenerator,
LaplaceRVSGenerator,
WeibullGenerator,
)
from stattest.experiment.hypothesis import NormalHypothesis
from stattest.experiment.listener.listeners import TimeEstimationListener
from stattest.experiment.report.model import PdfPowerReportBuilder
from stattest.experiment.test.worker import PowerCalculationWorker
from stattest.persistence.db_store import CriticalValueDbStore, RvsDbStore
from stattest.persistence.db_store.result_store import ResultDbStore
from stattest.test import KSNormalityTest
from stattest.test.normal import GraphEdgesNumberNormTest, GraphMaxDegreeNormTest
from pysatl_experiment.experiment.hypothesis.hypothesis import NormalGofHypothesis
from pysatl_experiment.experiment.listener.listeners import TimeEstimationListener
from pysatl_experiment.experiment.report.model import PdfPowerReportBuilder
from pysatl_experiment.experiment.test.worker import PowerCalculationWorker
from pysatl_experiment.persistence.db_store import CriticalValueDbStore, RvsDbStore
from pysatl_experiment.persistence.db_store.result_store import ResultDbStore


if __name__ == "__main__":
Expand All @@ -35,7 +38,7 @@

db_url = "sqlite:///graph_norm_experiment_two_sided.sqlite"
listeners = [generate_data_tel]
hypothesis = NormalHypothesis(rd.random() * 10, rd.random() * 30)
hypothesis = NormalGofHypothesis(rd.random() * 10, rd.random() * 30)
test_threads = multiprocessing.cpu_count()
generation_threads = multiprocessing.cpu_count()
sizes = [10, 20, 30, 40, 50]
Expand All @@ -53,16 +56,16 @@
LaplaceRVSGenerator(t=0, s=1),
]

edges_two_tailed = GraphEdgesNumberNormTest()
edges_two_tailed = GraphEdgesNumberNormalityGofStatistic()
edges_two_tailed.two_tailed = True

max_degree_two_tailed = GraphMaxDegreeNormTest()
max_degree_two_tailed = GraphMaxDegreeNormalityGofStatistic()
max_degree_two_tailed.two_tailed = True

tests = [
edges_two_tailed,
max_degree_two_tailed,
KSNormalityTest(),
KolmogorovSmirnovNormalityGofStatistic(),
]

alternatives_configuration = AlternativeConfiguration(
Expand Down
29 changes: 24 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
[project]
name = "pysatl-experiment"
version = "0.1.0"
version = "0.0.1"
description = "package for PySATL math statistics experiments"
authors = [
{name = "Ivan Pokhabov", email = "vanek3372@gmail.com"},
{name = "PySATL Team", email = "pysatl@yahoo.com"},
]
license = {text = "MIT"}
readme = "README.md"
requires-python = ">=3.10,<3.13"
requires-python = ">=3.9,<3.13"
dependencies = [
"numpy>=1.25.1",
"scipy>=1.11.2",
Expand All @@ -18,15 +18,33 @@ dependencies = [
"sqlalchemy>=2.0.36",
"python-rapidjson==1.20",
"jsonschema==4.23.0",
"rich==13.9.4"
"rich==13.9.4",
"pysatl-criterion==0.0.1a0"
]

[project.urls]
Homepage = "https://github.com/PySATL/pysatl-experiment"
Issues = "https://github.com/PySATL/pysatl-experiment/issues"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.poetry]
package-mode = false
name = "pysatl_experiment"
packages = [
{ include = "pysatl_experiment" },
]
package-mode = true

[tool.mypy]
ignore_missing_imports = true
namespace_packages = false
warn_unused_ignores = true

[[tool.mypy.overrides]]
module = "tests.*"
ignore_errors = true

[tool.poetry.group.dev.dependencies]
markdown = "3.7"
Expand All @@ -44,6 +62,7 @@ pytest-random-order = "1.1.1"
ruff = "0.7.4"
pytest-mock = "3.14.0"
pre-commit = "4.0.1"
mypy = "1.15.0"

[tool.isort]
line_length = 100
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions pysatl_experiment/experiment/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__all__ = ["Experiment"]
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from stattest.experiment.configuration.configuration import (
from pysatl_experiment.experiment.configuration.configuration import (
AlternativeConfiguration,
ExperimentConfiguration,
ReportBuilder,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from jsonschema import Draft4Validator, validators
from jsonschema.exceptions import ValidationError, best_match

from stattest.experiment.configuration.config_schema import CONF_SCHEMA
from pysatl_experiment.experiment.configuration.config_schema import CONF_SCHEMA


logger = logging.getLogger(__name__)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
from collections.abc import Sequence

from stattest.experiment.generator import AbstractRVSGenerator
from stattest.persistence import IRvsStore
from stattest.persistence.models import IResultStore
from stattest.test import AbstractTestStatistic
from pysatl.criterion import AbstractStatistic

from pysatl_experiment.experiment.generator.model import AbstractRVSGenerator
from pysatl_experiment.persistence import IRvsStore
from pysatl_experiment.persistence.models import IResultStore


class TestWorkerResult:
Expand Down Expand Up @@ -31,13 +32,11 @@ def init(self):
pass

def execute(
self, test: AbstractTestStatistic, data: list[list[float]], code, size: int
self, test: AbstractStatistic, data: list[list[float]], code, size: int
) -> TestWorkerResult:
raise NotImplementedError("Method is not implemented")

def build_id(
self, test: AbstractTestStatistic, data: list[list[float]], code, size: int
) -> str:
def build_id(self, test: AbstractStatistic, data: list[list[float]], code, size: int) -> str:
raise NotImplementedError("Method is not implemented")


Expand Down Expand Up @@ -87,7 +86,7 @@ class TestConfiguration:

def __init__(
self,
tests: Sequence[AbstractTestStatistic],
tests: Sequence[AbstractStatistic],
worker: TestWorker,
threads=4,
listeners: Sequence[StepListener] | None = None,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,9 @@
from typing import Any

import rapidjson

from stattest.constants import Config
from stattest.exceptions import ConfigurationError, OperationalException
from stattest.misc import deep_merge_dicts
from pysatl.constants import Config
from pysatl.exceptions import ConfigurationError, OperationalException
from pysatl.misc import deep_merge_dicts


logger = logging.getLogger(__name__)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from stattest.experiment.configuration.configuration import ExperimentConfiguration
from stattest.experiment.generator.generator_step import data_generation_step
from stattest.experiment.report.report_step import execute_report_step
from stattest.experiment.test.test_step import execute_test_step
from pysatl_experiment.experiment.configuration import ExperimentConfiguration
from pysatl_experiment.experiment.generator.generator_step import data_generation_step
from pysatl_experiment.experiment.report.report_step import execute_report_step
from pysatl_experiment.experiment.test.test_step import execute_test_step


class Experiment:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from stattest.experiment.generator.generators import (
from pysatl_experiment.experiment.generator.generators import (
BetaRVSGenerator,
CauchyRVSGenerator,
Chi2Generator,
Expand All @@ -15,7 +15,6 @@
TukeyRVSGenerator,
WeibullGenerator,
)
from stattest.experiment.generator.model import AbstractRVSGenerator


symmetric_generators = [
Expand Down Expand Up @@ -96,5 +95,3 @@
MixConNormGenerator(p=0.4, a=3, b=4),
MixConNormGenerator(p=0.5, a=3, b=4),
]

__all__ = ["AbstractRVSGenerator"]
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
from multiprocessing import Queue
from multiprocessing.synchronize import Event as EventClass

from stattest.experiment.configuration.configuration import AlternativeConfiguration
from stattest.experiment.generator import AbstractRVSGenerator
from stattest.experiment.pipeline import start_pipeline
from stattest.persistence.models import IRvsStore
from pysatl_experiment.experiment.configuration import AlternativeConfiguration
from pysatl_experiment.experiment.generator.model import AbstractRVSGenerator
from pysatl_experiment.experiment.pipeline import start_pipeline
from pysatl_experiment.persistence.models import IRvsStore


logger = logging.getLogger(__name__)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
from typing_extensions import override

from stattest.core.distribution.beta import generate_beta
from stattest.core.distribution.cauchy import generate_cauchy
from stattest.core.distribution.chi2 import generate_chi2
from stattest.core.distribution.expon import generate_expon
from stattest.core.distribution.gamma import generate_gamma
from stattest.core.distribution.gompertz import generate_gompertz
from stattest.core.distribution.gumbel import generate_gumbel
from stattest.core.distribution.invgauss import generate_invgauss
from stattest.core.distribution.laplace import generate_laplace
from stattest.core.distribution.lo_con_norm import generate_lo_con_norm
from stattest.core.distribution.logistic import generate_logistic
from stattest.core.distribution.lognormal import generate_lognorm
from stattest.core.distribution.mix_con_norm import generate_mix_con_norm
from stattest.core.distribution.rice import generate_rice
from stattest.core.distribution.scale_con_norm import generate_scale_con_norm
from stattest.core.distribution.student import generate_t
from stattest.core.distribution.truncnormal import generate_truncnorm
from stattest.core.distribution.tukey import generate_tukey
from stattest.core.distribution.weibull import generate_weibull
from stattest.experiment.generator.model import AbstractRVSGenerator
from pysatl_experiment.core.distribution.beta import generate_beta
from pysatl_experiment.core.distribution.cauchy import generate_cauchy
from pysatl_experiment.core.distribution.chi2 import generate_chi2
from pysatl_experiment.core.distribution.expon import generate_expon
from pysatl_experiment.core.distribution.gamma import generate_gamma
from pysatl_experiment.core.distribution.gompertz import generate_gompertz
from pysatl_experiment.core.distribution.gumbel import generate_gumbel
from pysatl_experiment.core.distribution.invgauss import generate_invgauss
from pysatl_experiment.core.distribution.laplace import generate_laplace
from pysatl_experiment.core.distribution.lo_con_norm import generate_lo_con_norm
from pysatl_experiment.core.distribution.logistic import generate_logistic
from pysatl_experiment.core.distribution.lognormal import generate_lognorm
from pysatl_experiment.core.distribution.mix_con_norm import generate_mix_con_norm
from pysatl_experiment.core.distribution.rice import generate_rice
from pysatl_experiment.core.distribution.scale_con_norm import generate_scale_con_norm
from pysatl_experiment.core.distribution.student import generate_t
from pysatl_experiment.core.distribution.truncnormal import generate_truncnorm
from pysatl_experiment.core.distribution.tukey import generate_tukey
from pysatl_experiment.core.distribution.weibull import generate_weibull
from pysatl_experiment.experiment.generator.model import AbstractRVSGenerator


class BetaRVSGenerator(AbstractRVSGenerator):
Expand Down
4 changes: 4 additions & 0 deletions pysatl_experiment/experiment/hypothesis/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
from pysatl_experiment import AbstractHypothesis, NormalHypothesis, WeibullHypothesis


__all__ = ["NormalHypothesis", "WeibullHypothesis", "AbstractHypothesis"]
34 changes: 34 additions & 0 deletions pysatl_experiment/experiment/hypothesis/hypothesis.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from pysatl_experiment.core.distribution import norm, weibull
from pysatl_experiment.experiment.hypothesis.model import AbstractGofHypothesis, AbstractHypothesis


class NormalGofHypothesis(AbstractGofHypothesis):
@staticmethod
def code() -> str:
return "NORMAL_GOF_HYPOTHESIS"

def __init__(self, mean=0, var=1):
self.mean = mean
self.var = var

def generate(self, size, **kwargs):
return norm.generate_norm(size, self.mean, self.var)


class WeibullGofHypothesis(AbstractGofHypothesis):
@staticmethod
def code() -> str:
return "WEIBULL_GOF_HYPOTHESIS"

def __init__(self, a=1, k=5):
self.a = a
self.k = k

def generate(self, size, **kwargs):
return weibull.generate_weibull(size, self.a, self.k)


class UniformityHypothesis(AbstractHypothesis):
@staticmethod
def code() -> str:
return "UNIFORMITY_HYPOTHESIS"
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@


class AbstractHypothesis(ABC):
@staticmethod
@abstractmethod
def code() -> str:
"""
Hypothesis unique code.
"""
pass


class AbstractGofHypothesis(AbstractHypothesis):
@abstractmethod
def generate(self, size, **kwargs):
raise NotImplementedError("Method is not implemented")
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import timeit

from stattest.experiment.configuration.configuration import StepListener
from pysatl_experiment.experiment.configuration import StepListener


class TimeEstimationListener(StepListener):
Expand Down
Loading