Skip to content

Commit 0bf74e7

Browse files
authored
Merge pull request #8 from derollins/ready_for_v004
Tidy up ready for patch release v0.0.4
2 parents 34eaaab + 9c5edac commit 0bf74e7

File tree

6 files changed

+26
-14
lines changed

6 files changed

+26
-14
lines changed

.markdownlint.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,8 @@ MD013:
66
MD033:
77
allowed_elements:
88
- div
9+
10+
# Exclude files
11+
ignore:
12+
- LICENSE
13+
- LICENSE.md

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ repos:
3838
hooks:
3939
- id: black
4040
language_version: python3
41-
exclude: (^docs/|^notebooks/|^LICENSE$)
41+
exclude: (^docs/|^notebooks/|^LICENSE$|build/)
4242

4343
# --- Mypy (type checking) ---
4444
- repo: https://github.com/pre-commit/mirrors-mypy

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ name = "pnanolocz_lib"
77
description = "A Python library for AFM, HS-AFM, and Localization AFM data analysis. Based on NanoLocz"
88
authors = [
99
{ name = "George Heath", email = "G.R.Heath@leeds.ac.uk" },
10-
{ name = "D. E. Rollins", email = "d.e.rollins@leeds.ac.uk" }
10+
{ name = "Daniel E. Rollins", email = "d.e.rollins@leeds.ac.uk" }
1111
]
1212
dynamic = ["version"]
1313
readme = "README.md"

src/pnanolocz_lib/level.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@
8282
from typing import Any, Literal, Optional
8383

8484
import numpy as np
85-
from numpy.polynomial.polyutils import RankWarning # type: ignore[attr-defined]
8685
from scipy.optimize import curve_fit
8786

8887
# Constants
@@ -193,7 +192,8 @@ def level_plane(
193192
# ========== X DIRECTION ==========
194193
# Column-wise masked mean with NaN-outside semantics
195194
with warnings.catch_warnings():
196-
warnings.simplefilter("ignore", category=RuntimeWarning)
195+
warnings.simplefilter("ignore", RuntimeWarning)
196+
warnings.filterwarnings("ignore", message=".*[Rr]ank.*")
197197
column_means = np.nanmean(np.where(m, arr, np.nan), axis=0)
198198

199199
valid_columns = ~np.isnan(column_means)
@@ -213,7 +213,8 @@ def level_plane(
213213
standardized_columns = (column_indices - col_centroid) / col_scale
214214

215215
with warnings.catch_warnings():
216-
warnings.simplefilter("ignore", RankWarning)
216+
warnings.simplefilter("ignore", RuntimeWarning)
217+
warnings.filterwarnings("ignore", message=".*[Rr]ank.*")
217218
x_coeffs = np.polyfit(standardized_columns, column_means[valid_columns], polyx)
218219

219220
# Evaluate polynomial at every column (1..W) using the same mu
@@ -226,7 +227,8 @@ def level_plane(
226227
# ========== Y DIRECTION ==========
227228
# Row-wise masked mean after X subtraction (NaN-outside semantics)
228229
with warnings.catch_warnings():
229-
warnings.simplefilter("ignore", category=RuntimeWarning)
230+
warnings.simplefilter("ignore", RuntimeWarning)
231+
warnings.filterwarnings("ignore", message=".*[Rr]ank.*")
230232
row_means = np.nanmean(np.where(m, leveled, np.nan), axis=1)
231233

232234
valid_rows = ~np.isnan(row_means)
@@ -245,7 +247,8 @@ def level_plane(
245247
standardized_rows = (row_indices - row_centroid) / row_scale
246248

247249
with warnings.catch_warnings():
248-
warnings.simplefilter("ignore", RankWarning)
250+
warnings.simplefilter("ignore", RuntimeWarning)
251+
warnings.filterwarnings("ignore", message=".*[Rr]ank.*")
249252
y_coeffs = np.polyfit(standardized_rows, row_means[valid_rows], polyy)
250253

251254
# Evaluate polynomial at every row (1..H) with the same mu
@@ -333,7 +336,8 @@ def level_line(
333336
xs = (x_idx - mu) / sd # xs: standardized x indices used for fitting
334337

335338
with warnings.catch_warnings():
336-
warnings.simplefilter("ignore", RankWarning)
339+
warnings.simplefilter("ignore", RuntimeWarning)
340+
warnings.filterwarnings("ignore", message=".*[Rr]ank.*")
337341
p_coeff = np.polyfit(xs, y_vals, polyx)
338342

339343
all_cols = (np.arange(img_width) + 1).astype(np.float64)
@@ -378,7 +382,8 @@ def level_line(
378382
ys = (yl - mu) / sd # ys: standardized y indices used for fitting
379383

380384
with warnings.catch_warnings():
381-
warnings.simplefilter("ignore", RankWarning)
385+
warnings.simplefilter("ignore", RuntimeWarning)
386+
warnings.filterwarnings("ignore", message=".*[Rr]ank.*")
382387
p_coeff = np.polyfit(ys, y_vals, polyy)
383388

384389
all_rows = (np.arange(img_height) + 1).astype(np.float64)

src/pnanolocz_lib/level_weighted.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@
7070
from typing import Any, List, Optional, Tuple
7171

7272
import numpy as np
73-
from numpy.polynomial.polyutils import RankWarning # type: ignore[attr-defined]
7473
from scipy import ndimage
7574

7675
# ---------------------
@@ -151,7 +150,8 @@ def _polyfit_centered(
151150
std_x = (x - centroid) / scale
152151

153152
with warnings.catch_warnings():
154-
warnings.simplefilter("ignore", RankWarning)
153+
warnings.simplefilter("ignore", RuntimeWarning)
154+
warnings.filterwarnings("ignore", message=".*[Rr]ank.*")
155155
coeffs = np.polyfit(std_x, y, order)
156156

157157
return np.asarray(coeffs, dtype=np.float64), (centroid, scale)
@@ -314,7 +314,8 @@ def level_weighted_plane(
314314

315315
# X-direction: mean of each column within region
316316
with warnings.catch_warnings():
317-
warnings.simplefilter("ignore", category=RuntimeWarning)
317+
warnings.simplefilter("ignore", RuntimeWarning)
318+
warnings.filterwarnings("ignore", message=".*[Rr]ank.*")
318319
mean_by_col = np.nanmean(
319320
region_masked, axis=0
320321
) # Nanolocz-mean_by_col is xp
@@ -336,7 +337,8 @@ def level_weighted_plane(
336337

337338
# Y-direction: mean of each row within region
338339
with warnings.catch_warnings():
339-
warnings.simplefilter("ignore", category=RuntimeWarning)
340+
warnings.simplefilter("ignore", RuntimeWarning)
341+
warnings.filterwarnings("ignore", message=".*[Rr]ank.*")
340342
mean_by_row = np.nanmean(region_masked, axis=1)
341343
valid_rows = ~np.isnan(mean_by_row)
342344
row_values = mean_by_row[valid_rows]

src/pnanolocz_lib/thresholder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
Authors
7474
-------
7575
George Heath, University of Leeds (MATLAB reference implementation)
76-
D. E. Rollins, University of Leeds (Python implementation)
76+
Daniel E. Rollins, University of Leeds (Python implementation)
7777
7878
Part of the pNanoLocz-Lib Python library for AFM analysis.
7979
"""

0 commit comments

Comments
 (0)