core-lens 0.1.dev83__tar.gz → 0.1.dev86__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.
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/PKG-INFO +1 -1
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/_version.py +2 -2
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/base/namespaces/plot.py +12 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/base/namespaces/stats.py +58 -3
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/uv.lock +325 -311
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/.github/pull_request_template.md +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/.github/workflows/ci.yml +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/.github/workflows/gh-pages.yml +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/.github/workflows/pre-release.yml +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/.github/workflows/release.yml +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/.gitignore +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/.gitmessage +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/.pre-commit-config.yaml +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/.python-version +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/CONTRIBUTING.md +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/LICENSE +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/README.md +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/SKILLS.md +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/docs/Makefile +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/docs/make.bat +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/docs/source/concepts.md +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/docs/source/conf.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/docs/source/index.rst +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/docs/source/intro.md +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/docs/source/plots.md +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/docs/source/plugins.md +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/docs/source/queries.md +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/docs/source/quickstart.md +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/docs/source/stats.md +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/examples/demo_mws.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/examples/demo_tehsil.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/hooks/mypy.sh +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/hooks/no-parquet-outside-fixtures.sh +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/hooks/pytest.sh +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/pyproject.toml +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/__init__.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/__main__.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/aoi.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/base/__init__.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/base/entity.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/base/namespaces/__init__.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/base/result.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/base/view.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/entities/__init__.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/entities/mws.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/entities/tehsil.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/export/__init__.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/export/formats.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/py.typed +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/schema/__init__.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/schema/detection.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/schema/profile.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/utils/__init__.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/utils/polars_utils.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/utils/season.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/src/core_lens/utils/spatial.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/fixtures/generate_fixtures.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/conftest.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_aoi.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_entities.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_entity.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_export.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_main.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_plot.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_polars_utils.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_profile.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_result.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_schema_detection.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_schema_profile.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_season.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_season_config.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_spatial.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_stats.py +0 -0
- {core_lens-0.1.dev83 → core_lens-0.1.dev86}/tests/unit/test_view.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: core-lens
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.dev86
|
|
4
4
|
Summary: Query, analyse, and visualise CoreStack's microwatershed and Earth science data through a clean, composable Python API.
|
|
5
5
|
Project-URL: Homepage, https://github.com/ApoorvaKashyap/core-lens
|
|
6
6
|
Project-URL: Issues, https://github.com/ApoorvaKashyap/core-lens/issues
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.1.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 1, '
|
|
21
|
+
__version__ = version = '0.1.dev86'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 'dev86')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -7,6 +7,18 @@ from typing import TYPE_CHECKING, Any
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class SubplotOn(Enum):
|
|
10
|
+
"""Temporal dimensions to split plot data across.
|
|
11
|
+
|
|
12
|
+
Used to specify how data should be partitioned into subplots or map layers
|
|
13
|
+
based on temporal columns added during materialisation.
|
|
14
|
+
|
|
15
|
+
Attributes:
|
|
16
|
+
YEAR: Split data by year.
|
|
17
|
+
MONTH: Split data by month.
|
|
18
|
+
SEASON: Split data by meteorological season.
|
|
19
|
+
SEASON_YEAR: Split data by season and year.
|
|
20
|
+
"""
|
|
21
|
+
|
|
10
22
|
YEAR = "year"
|
|
11
23
|
MONTH = "month"
|
|
12
24
|
SEASON = "season"
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import warnings
|
|
5
6
|
from enum import Enum
|
|
6
7
|
from itertools import combinations
|
|
7
8
|
from typing import TYPE_CHECKING, Any, cast
|
|
@@ -14,12 +15,30 @@ if TYPE_CHECKING:
|
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
class CorrelateMethod(Enum):
|
|
18
|
+
"""Correlation methods.
|
|
19
|
+
|
|
20
|
+
Attributes:
|
|
21
|
+
PEARSON: Pearson correlation coefficient.
|
|
22
|
+
SPEARMAN: Spearman rank correlation.
|
|
23
|
+
KENDALL: Kendall Tau correlation.
|
|
24
|
+
"""
|
|
25
|
+
|
|
17
26
|
PEARSON = "pearson"
|
|
18
27
|
SPEARMAN = "spearman"
|
|
19
28
|
KENDALL = "kendall"
|
|
20
29
|
|
|
21
30
|
|
|
22
31
|
class TestMethod(Enum):
|
|
32
|
+
"""Statistical hypothesis testing methods.
|
|
33
|
+
|
|
34
|
+
Attributes:
|
|
35
|
+
T_TEST: Student's t-test.
|
|
36
|
+
MANN_WHITNEY: Mann-Whitney U test.
|
|
37
|
+
WILCOXON: Wilcoxon signed-rank test.
|
|
38
|
+
KS: Kolmogorov-Smirnov test.
|
|
39
|
+
CHI_SQUARE: Chi-square test.
|
|
40
|
+
"""
|
|
41
|
+
|
|
23
42
|
__test__ = False
|
|
24
43
|
T_TEST = "t-test"
|
|
25
44
|
MANN_WHITNEY = "mann-whitney"
|
|
@@ -29,12 +48,29 @@ class TestMethod(Enum):
|
|
|
29
48
|
|
|
30
49
|
|
|
31
50
|
class ChangeMethod(Enum):
|
|
51
|
+
"""Methods for calculating change over time.
|
|
52
|
+
|
|
53
|
+
Attributes:
|
|
54
|
+
ABSOLUTE: Absolute difference between periods.
|
|
55
|
+
PERCENTAGE: Percentage change between periods.
|
|
56
|
+
TREND: Linear trend over time.
|
|
57
|
+
"""
|
|
58
|
+
|
|
32
59
|
ABSOLUTE = "absolute"
|
|
33
60
|
PERCENTAGE = "percentage"
|
|
34
61
|
TREND = "trend"
|
|
35
62
|
|
|
36
63
|
|
|
37
64
|
class AnomalyCrossMethod(Enum):
|
|
65
|
+
"""Methods for detecting cross-sectional anomalies.
|
|
66
|
+
|
|
67
|
+
Attributes:
|
|
68
|
+
ZSCORE: Z-score method.
|
|
69
|
+
IQR: Interquartile range method.
|
|
70
|
+
PERCENTILE: Percentile-based method.
|
|
71
|
+
THRESHOLD: Fixed threshold method.
|
|
72
|
+
"""
|
|
73
|
+
|
|
38
74
|
ZSCORE = "zscore"
|
|
39
75
|
IQR = "iqr"
|
|
40
76
|
PERCENTILE = "percentile"
|
|
@@ -42,12 +78,29 @@ class AnomalyCrossMethod(Enum):
|
|
|
42
78
|
|
|
43
79
|
|
|
44
80
|
class AnomalyTsMethod(Enum):
|
|
81
|
+
"""Methods for detecting time-series anomalies.
|
|
82
|
+
|
|
83
|
+
Attributes:
|
|
84
|
+
STL: Seasonal-Trend decomposition using LOESS.
|
|
85
|
+
CUSUM: Cumulative sum control chart.
|
|
86
|
+
MAD: Median Absolute Deviation.
|
|
87
|
+
"""
|
|
88
|
+
|
|
45
89
|
STL = "stl"
|
|
46
90
|
CUSUM = "cusum"
|
|
47
91
|
MAD = "mad"
|
|
48
92
|
|
|
49
93
|
|
|
50
94
|
class SimilarityMethod(Enum):
|
|
95
|
+
"""Methods for calculating similarity or distance.
|
|
96
|
+
|
|
97
|
+
Attributes:
|
|
98
|
+
EUCLIDEAN: Euclidean distance.
|
|
99
|
+
COSINE: Cosine similarity.
|
|
100
|
+
MAHALANOBIS: Mahalanobis distance.
|
|
101
|
+
MANHATTAN: Manhattan distance.
|
|
102
|
+
"""
|
|
103
|
+
|
|
51
104
|
EUCLIDEAN = "euclidean"
|
|
52
105
|
COSINE = "cosine"
|
|
53
106
|
MAHALANOBIS = "mahalanobis"
|
|
@@ -871,9 +924,11 @@ class StatsNamespace:
|
|
|
871
924
|
tidx = ids.index(target)
|
|
872
925
|
|
|
873
926
|
# z-score normalise before computing distances.
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
927
|
+
with warnings.catch_warnings():
|
|
928
|
+
warnings.simplefilter("ignore", category=RuntimeWarning)
|
|
929
|
+
means = np.nanmean(mat, axis=0)
|
|
930
|
+
stds = np.nanstd(mat, axis=0, ddof=1)
|
|
931
|
+
stds[np.isnan(stds) | (stds == 0)] = 1.0
|
|
877
932
|
norm = (mat - means) / stds
|
|
878
933
|
tvec = norm[tidx]
|
|
879
934
|
|