core-lens 0.1.dev120__tar.gz → 0.1.dev121__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.dev120 → core_lens-0.1.dev121}/PKG-INFO +1 -1
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/examples/demo_mws.py +4 -3
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/examples/demo_tehsil.py +6 -5
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/_version.py +2 -2
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/base/namespaces/plot.py +12 -7
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/.github/pull_request_template.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/.github/workflows/ci.yml +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/.github/workflows/gh-pages.yml +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/.github/workflows/pre-release.yml +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/.github/workflows/release.yml +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/.gitignore +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/.gitmessage +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/.pre-commit-config.yaml +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/.python-version +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/CONTRIBUTING.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/LICENSE +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/README.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/SKILLS.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/Makefile +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/make.bat +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/source/concepts.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/source/conf.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/source/export.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/source/index.rst +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/source/intro.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/source/logging.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/source/plots.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/source/plugins.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/source/queries.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/source/quickstart.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/docs/source/stats.md +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/hooks/mypy.sh +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/hooks/no-parquet-outside-fixtures.sh +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/hooks/pytest.sh +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/pyproject.toml +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/__init__.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/__main__.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/aoi.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/base/__init__.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/base/entity.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/base/namespaces/__init__.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/base/namespaces/stats.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/base/result.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/base/view.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/entities/__init__.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/entities/mws.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/entities/tehsil.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/entities/waterbody.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/export/__init__.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/export/formats.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/py.typed +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/schema/__init__.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/schema/detection.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/schema/profile.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/utils/__init__.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/utils/polars_utils.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/utils/season.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/src/core_lens/utils/spatial.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/fixtures/generate_fixtures.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/conftest.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_aoi.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_entities.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_entity.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_export.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_main.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_plot.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_polars_utils.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_profile.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_result.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_schema_detection.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_schema_profile.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_season.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_season_config.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_spatial.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_stats.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/tests/unit/test_view.py +0 -0
- {core_lens-0.1.dev120 → core_lens-0.1.dev121}/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.dev121
|
|
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
|
|
@@ -7,7 +7,7 @@ geometry, derive, stats, plot, temporal queries, and export.
|
|
|
7
7
|
|
|
8
8
|
Prerequisites
|
|
9
9
|
-------------
|
|
10
|
-
pip install core-lens geopandas shapely polars scipy
|
|
10
|
+
pip install core-lens geopandas shapely polars scipy bokeh lonboard
|
|
11
11
|
|
|
12
12
|
Data layout expected
|
|
13
13
|
--------------------
|
|
@@ -30,6 +30,7 @@ from __future__ import annotations
|
|
|
30
30
|
|
|
31
31
|
import polars as pl
|
|
32
32
|
import shapely.geometry as sgeom
|
|
33
|
+
from bokeh.io import show, save
|
|
33
34
|
|
|
34
35
|
from core_lens import AoI, SeasonConfig
|
|
35
36
|
from core_lens.entities import MWSEntity
|
|
@@ -253,7 +254,7 @@ except Exception:
|
|
|
253
254
|
|
|
254
255
|
try:
|
|
255
256
|
line_fig = result_annual.plot.timeseries(x="year", y="dw_et")
|
|
256
|
-
line_fig
|
|
257
|
+
save(line_fig, filename="mws_et_trend.html")
|
|
257
258
|
print("Saved line plot to mws_et_trend.html")
|
|
258
259
|
except Exception:
|
|
259
260
|
pass
|
|
@@ -262,7 +263,7 @@ except Exception:
|
|
|
262
263
|
# ── 21. Plot — scatter ───────────────────────────────────────────────────────
|
|
263
264
|
try:
|
|
264
265
|
scatter_fig = result_static_derived.plot.scatter(x="area_km2", y="dryspell_score")
|
|
265
|
-
scatter_fig
|
|
266
|
+
save(scatter_fig, filename="mws_scatter.html")
|
|
266
267
|
except Exception:
|
|
267
268
|
pass
|
|
268
269
|
|
|
@@ -7,7 +7,7 @@ geometry, derive, stats, plot, and export.
|
|
|
7
7
|
|
|
8
8
|
Prerequisites
|
|
9
9
|
-------------
|
|
10
|
-
pip install core-lens geopandas shapely polars scipy
|
|
10
|
+
pip install core-lens geopandas shapely polars scipy bokeh lonboard
|
|
11
11
|
|
|
12
12
|
Data layout expected
|
|
13
13
|
--------------------
|
|
@@ -33,6 +33,7 @@ from core_lens.base.namespaces.stats import (
|
|
|
33
33
|
TestMethod,
|
|
34
34
|
)
|
|
35
35
|
import shapely.geometry as sgeom
|
|
36
|
+
from bokeh.io import show, save
|
|
36
37
|
|
|
37
38
|
|
|
38
39
|
DATA_ROOT = "data/"
|
|
@@ -288,19 +289,19 @@ result_plot = (
|
|
|
288
289
|
|
|
289
290
|
# ── 19. Plot — scatter ────────────────────────────────────────────────────────
|
|
290
291
|
scatter_fig = result_plot.plot.scatter(x="area_km2", y="Shape_Leng")
|
|
291
|
-
|
|
292
|
+
show(scatter_fig)
|
|
292
293
|
|
|
293
294
|
|
|
294
295
|
# ── 20. Plot — distribution ───────────────────────────────────────────────────
|
|
295
296
|
dist_fig = result_plot.plot.distribution(x="area_km2")
|
|
296
|
-
|
|
297
|
+
show(dist_fig)
|
|
297
298
|
|
|
298
299
|
|
|
299
300
|
# ── 21. Plot — correlation matrix ────────────────────────────────────────────
|
|
300
301
|
corr_fig = result_plot.plot.correlation(
|
|
301
302
|
columns=["area_km2", "Shape_Leng", "compactness"]
|
|
302
303
|
)
|
|
303
|
-
|
|
304
|
+
show(corr_fig)
|
|
304
305
|
|
|
305
306
|
|
|
306
307
|
# ── 22. Plot — heatmap ────────────────────────────────────────────────────────
|
|
@@ -312,7 +313,7 @@ heatmap_fig = result_plot.plot.heatmap(
|
|
|
312
313
|
y="STATE",
|
|
313
314
|
value="area_km2",
|
|
314
315
|
)
|
|
315
|
-
|
|
316
|
+
show(heatmap_fig)
|
|
316
317
|
|
|
317
318
|
|
|
318
319
|
# ── 23. AoI map ───────────────────────────────────────────────────────────────
|
|
@@ -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.dev121'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 'dev121')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -277,15 +277,20 @@ class PlotNamespace:
|
|
|
277
277
|
# --- Direct Polars → GeoArrow → Lonboard path (zero Shapely, zero GeoPandas) ---
|
|
278
278
|
arrow_table = _wkb_to_arrow_table(df, geom_col, extra_cols=extra)
|
|
279
279
|
|
|
280
|
+
import warnings
|
|
281
|
+
|
|
280
282
|
# Extract colormap values from the already-filtered arrow_table.
|
|
281
283
|
# arrow_table has the same row order as df post-filter, so indices align.
|
|
282
|
-
values = np.asarray(arrow_table.column(column).to_pylist())
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
(
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
)
|
|
284
|
+
values = np.asarray(arrow_table.column(column).to_pylist(), dtype=float)
|
|
285
|
+
|
|
286
|
+
with warnings.catch_warnings():
|
|
287
|
+
warnings.simplefilter("ignore", category=RuntimeWarning)
|
|
288
|
+
v_min, v_max = np.nanmin(values), np.nanmax(values)
|
|
289
|
+
|
|
290
|
+
if np.isnan(v_min) or np.isnan(v_max) or v_min >= v_max:
|
|
291
|
+
norm_values = np.where(np.isnan(values), np.nan, 0.0)
|
|
292
|
+
else:
|
|
293
|
+
norm_values = (values - v_min) / (v_max - v_min)
|
|
289
294
|
|
|
290
295
|
cmap = mpl.colormaps["plasma"]
|
|
291
296
|
|
|
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
|