core-lens 0.1.dev153__tar.gz → 0.1.dev154__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.dev153 → core_lens-0.1.dev154}/PKG-INFO +1 -1
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/_version.py +2 -2
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/base/namespaces/stats.py +41 -8
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.github/ISSUE_TEMPLATE/blank-proposal.yaml +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.github/ISSUE_TEMPLATE/bug-report.yaml +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.github/ISSUE_TEMPLATE/feature-request.yaml +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.github/pull_request_template.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.github/workflows/ci.yml +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.github/workflows/gh-pages.yml +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.github/workflows/pre-release.yml +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.github/workflows/release.yml +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.gitignore +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.gitmessage +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.pre-commit-config.yaml +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/.python-version +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/CONTRIBUTING.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/LICENSE +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/README.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/SKILLS.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/benchmarks/README.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/benchmarks/bench_aoi.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/benchmarks/bench_export.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/benchmarks/bench_polars_utils.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/benchmarks/bench_result.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/benchmarks/bench_schema.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/benchmarks/bench_season.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/benchmarks/bench_spatial.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/benchmarks/bench_view.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/benchmarks/run_all.sh +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/Makefile +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/make.bat +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/source/concepts.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/source/conf.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/source/export.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/source/index.rst +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/source/intro.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/source/logging.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/source/plots.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/source/plugins.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/source/queries.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/source/quickstart.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/docs/source/stats.md +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/examples/demo_mws.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/examples/demo_tehsil.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/hooks/mypy.sh +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/hooks/no-parquet-outside-fixtures.sh +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/hooks/pytest.sh +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/pyproject.toml +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/__init__.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/__main__.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/aoi.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/base/__init__.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/base/entity.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/base/namespaces/__init__.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/base/namespaces/plot.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/base/result.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/base/view.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/entities/__init__.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/entities/mws.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/entities/tehsil.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/entities/waterbody.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/export/__init__.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/export/formats.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/py.typed +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/schema/__init__.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/schema/detection.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/schema/profile.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/utils/__init__.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/utils/paths.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/utils/polars_utils.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/utils/season.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/src/core_lens/utils/spatial.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/fixtures/generate_fixtures.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/conftest.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_aoi.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_entities.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_entity.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_export.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_main.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_plot.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_polars_utils.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_profile.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_result.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_schema_detection.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_schema_profile.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_season.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_season_config.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_spatial.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_stats.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/tests/unit/test_view.py +0 -0
- {core_lens-0.1.dev153 → core_lens-0.1.dev154}/uv.lock +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.dev154
|
|
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.dev154'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 'dev154')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -859,9 +859,12 @@ class StatsNamespace:
|
|
|
859
859
|
df = self._r.df()
|
|
860
860
|
key = self._r.key_cols[0]
|
|
861
861
|
|
|
862
|
+
min_year: int | None = None
|
|
863
|
+
max_year: int | None = None
|
|
864
|
+
|
|
862
865
|
# --- Build feature DataFrame ------------------------------------------
|
|
863
866
|
# Universe of entity keys from result.data.
|
|
864
|
-
feat = df.select([key])
|
|
867
|
+
feat = df.select([key]).unique()
|
|
865
868
|
|
|
866
869
|
for col_name, spec in columns.items():
|
|
867
870
|
if spec is None:
|
|
@@ -881,6 +884,23 @@ class StatsNamespace:
|
|
|
881
884
|
resolution_str, filter_dict = spec
|
|
882
885
|
filter_dict = dict(filter_dict) if filter_dict else {}
|
|
883
886
|
|
|
887
|
+
if "year" in filter_dict:
|
|
888
|
+
yr = filter_dict["year"]
|
|
889
|
+
y0: int | None = None
|
|
890
|
+
y1: int | None = None
|
|
891
|
+
|
|
892
|
+
if isinstance(yr, (list, tuple)) and len(yr) >= 2:
|
|
893
|
+
y0, y1 = int(yr[0]), int(yr[1])
|
|
894
|
+
elif isinstance(yr, int):
|
|
895
|
+
y0, y1 = yr, yr
|
|
896
|
+
|
|
897
|
+
if y0 is not None:
|
|
898
|
+
if min_year is None or y0 < min_year:
|
|
899
|
+
min_year = y0
|
|
900
|
+
if y1 is not None:
|
|
901
|
+
if max_year is None or y1 > max_year:
|
|
902
|
+
max_year = y1
|
|
903
|
+
|
|
884
904
|
entity = self._r.entity
|
|
885
905
|
path: str | None
|
|
886
906
|
if resolution_str == "static":
|
|
@@ -1006,13 +1026,26 @@ class StatsNamespace:
|
|
|
1006
1026
|
dists[tidx] = float("inf") # exclude target itself
|
|
1007
1027
|
top_idx = np.argsort(dists)[:top_n]
|
|
1008
1028
|
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1029
|
+
if min_year is None and max_year is None:
|
|
1030
|
+
year_col = self._year_col()
|
|
1031
|
+
if year_col and year_col in df.columns:
|
|
1032
|
+
yr_min = df[year_col].min()
|
|
1033
|
+
yr_max = df[year_col].max()
|
|
1034
|
+
if yr_min is not None and yr_max is not None:
|
|
1035
|
+
min_year = int(cast(int, yr_min))
|
|
1036
|
+
max_year = int(cast(int, yr_max))
|
|
1037
|
+
|
|
1038
|
+
output_dict: dict[str, Any] = {
|
|
1039
|
+
key: [ids[i] for i in top_idx],
|
|
1040
|
+
"similarity_score": [float(1.0 / (1.0 + dists[i])) for i in top_idx],
|
|
1041
|
+
"rank": list(range(1, len(top_idx) + 1)),
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
if min_year is not None and max_year is not None:
|
|
1045
|
+
output_dict["year_from"] = [min_year] * len(top_idx)
|
|
1046
|
+
output_dict["year_to"] = [max_year] * len(top_idx)
|
|
1047
|
+
|
|
1048
|
+
data = pl.DataFrame(output_dict)
|
|
1016
1049
|
metadata: dict[str, Any] = {
|
|
1017
1050
|
"method": method.value if method is not None else None,
|
|
1018
1051
|
"target": target,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|