Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
f1d6b1c
feat(entropy): add shannon, bubble, permutation, renyi, tsallis, KLD,…
Wenderlog Jun 16, 2025
ff0c3b1
fix(entropy): fix non-strict typing issues
Wenderlog Jun 17, 2025
2ff1b8f
fix(kld): fix type errors in KLDivergence_entropy.py
Wenderlog Jun 17, 2025
e1528cd
chore(dev): save work in progress before syncing fork
Wenderlog Sep 4, 2025
cbadeb2
ci: add GitHub Actions workflows
Wenderlog Sep 4, 2025
ac8e561
fix(tests): move pytest import to top-level in tsallis entropy tests
Wenderlog Sep 4, 2025
ab6588d
docs(entropy): add module headers and docstrings
Wenderlog Sep 4, 2025
7f5c87d
test(classification): sync test with upstream main
Wenderlog Sep 4, 2025
197f7c9
test(classification): sync test with upstream main
Wenderlog Sep 4, 2025
0df037e
docs(entropy): add docstrings for Dispersion, Approximate, KL-Div, Re…
Wenderlog Sep 9, 2025
2c372c7
chore: remove unnecessary files
Wenderlog Sep 9, 2025
1744560
docs(entropies): convert all entropy module docstrings to reST format
Wenderlog Oct 7, 2025
f324924
refactor(apen): vectorize calculations and fix bugs
Wenderlog Feb 19, 2026
b749e62
refactor(bubble_entropy): vectorize calculations and add state manage…
Wenderlog Feb 19, 2026
06ebcc0
perf(conditional_entropy): optimize and fix linting issues
Wenderlog Feb 19, 2026
23dd628
refactor(dispersion_entropy): vectorize pattern matching and fix linting
Wenderlog Feb 19, 2026
46c7041
perf(kld_entropy): vectorize histogram and optimize KDE calculation
Wenderlog Feb 19, 2026
8efff98
refactor(sample_entropy): vectorize pattern matching and fix linting
Wenderlog Feb 19, 2026
9e537a5
test(shannon_entropy): update test suite with new threshold parameters
Wenderlog Feb 19, 2026
745bf2d
refactor(shannon_entropy): optimize anomaly checks and resolve lintin…
Wenderlog Feb 19, 2026
f1f8e7a
refactor(slope_entropy): vectorize symbolization and resolve linting …
Wenderlog Feb 19, 2026
80592fe
fix(types): resolve mypy errors and apply automated ruff formatting
Wenderlog Feb 19, 2026
3db74db
fix(types): replace invalid runtime generic checks with isinstance
Wenderlog Feb 19, 2026
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
6 changes: 4 additions & 2 deletions .github/workflows/check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@ jobs:
python-version: [ "3.10", "3.11", "3.12", "3.13" ]
steps:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
python-version: ${{ matrix.python-version }}

- name: Install Poetry
run: |
pipx install poetry==2.1.0
Expand All @@ -32,4 +34,4 @@ jobs:

- name: Run tests
run: |
poetry run pytest --cov=pysatl_cpd
poetry run pytest --cov=pysatl_cpd
7 changes: 3 additions & 4 deletions .github/workflows/linux_installation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,14 @@ on: [push, pull_request]

jobs:
linux-installation:

runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}

- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"
python-version: "3.11"

- name: Install dependencies
run: |
Expand Down
7 changes: 3 additions & 4 deletions .github/workflows/windows_installation.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,14 @@ on: [push, pull_request]

jobs:
windows-installation:

runs-on: windows-latest

steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}

- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"
python-version: "3.11"

- name: Install dependencies
run: |
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -165,3 +165,5 @@ cython_debug/
/benchmarking/execution_logs
/benchmarking/results
/experiment_storages
.DS_Store
*/.DS_Store
4 changes: 2 additions & 2 deletions pysatl_cpd/core/algorithms/bayesian_linear_heuristic.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def detect(self, observation: np.float64 | npt.NDArray[np.float64]) -> bool:
:param observation: a new observation from a time series. Note: only univariate data is supported for now.
:return: whether a change point was detected by a main algorithm.
"""
if observation is npt.NDArray[np.float64]:
if isinstance(observation, np.ndarray):
raise TypeError("Multivariate observations are not supported")
assert self.__main_algorithm is not None, "Main algorithm must be initialized"

Expand All @@ -111,7 +111,7 @@ def localize(self, observation: np.float64 | npt.NDArray[np.float64]) -> Optiona
:param observation: a new observation from a time series. Note: only univariate data is supported for now.
:return: a change point, if it was localized, None otherwise.
"""
if observation is npt.NDArray[np.float64]:
if isinstance(observation, np.ndarray):
raise TypeError("Multivariate observations are not supported")
assert self.__main_algorithm is not None, "Main algorithm must be initialized"

Expand Down
4 changes: 2 additions & 2 deletions pysatl_cpd/core/algorithms/bayesian_online_algorithm.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,7 @@ def detect(self, observation: np.float64 | npt.NDArray[np.float64]) -> bool:
:param observation: new observation of a time series. Note: multivariate time series aren't supported for now.
:return: whether a change point was detected after processing the new observation.
"""
if observation is npt.NDArray[np.float64]:
if isinstance(observation, np.ndarray):
raise TypeError("Multivariate observations are not supported")

self.__process_point(np.float64(observation), False)
Expand All @@ -203,7 +203,7 @@ def localize(self, observation: np.float64 | npt.NDArray[np.float64]) -> Optiona
:return: absolute location of a change point, acquired after processing the new observation,
or None if there wasn't any.
"""
if observation is npt.NDArray[np.float64]:
if isinstance(observation, np.ndarray):
raise TypeError("Multivariate observations are not supported")

self.__process_point(np.float64(observation), True)
Expand Down
Binary file not shown.
Loading