Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
13 changes: 9 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
rev: v4.5.0
hooks:
- id: check-docstring-first
- id: end-of-file-fixer
- id: trailing-whitespace
exclude: ^\.napari-hub/.*
- id: check-yaml # checks for correct yaml syntax for github actions ex.
exclude: ^docs/04_FAQ/settings_reconstruction_(bulk|surface).yaml$
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.3.7
rev: v0.3.4
hooks:
- id: ruff
- repo: https://github.com/psf/black
rev: 24.4.0
rev: 24.3.0
hooks:
- id: black
- repo: https://github.com/tlambert03/napari-plugin-checks
rev: v0.3.0
hooks:
- id: napari-plugin-checks
# https://mypy.readthedocs.io/en/stable/
# you may wish to add this as well!
# - repo: https://github.com/pre-commit/mirrors-mypy
# rev: v1.9.0
# hooks:
# - id: mypy
7 changes: 3 additions & 4 deletions docs/01_code_usage/reconstruction_settings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ sampling_distance: 2.0
smoothing_sigma: 2.0
target_voxelsize: 0.23
trace_length: 80.0
voxelsize: !!ndarray
- 0.37
- 0.0901
- 0.0901
voxelsize_z: 0.37
voxelsize_y: 0.0901
voxelsize_x: 0.0901
7 changes: 3 additions & 4 deletions docs/04_FAQ/settings_reconstruction_bulk.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ smoothing_sigma: 1.0
target_voxelsize: 0.2868
trace_length: 30.0
return_intermediate_results: true
voxelsize: !!ndarray
- 0.47
- 0.1036
- 0.1036
voxelsize_z: 0.47
voxelsize_y: 0.1036
voxelsize_x: 0.1036
7 changes: 3 additions & 4 deletions docs/04_FAQ/settings_reconstruction_surface.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ smoothing_sigma: 1.0
target_voxelsize: 0.2868
trace_length: 30.0
return_intermediate_results: true
voxelsize: !!ndarray
- 0.47
- 0.1036
- 0.1036
voxelsize_z: 0.47
voxelsize_y: 0.1036
voxelsize_x: 0.1036
4 changes: 4 additions & 0 deletions src/napari_stress/_approximation/expansion.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import numpy as np
from typing import TYPE_CHECKING

if TYPE_CHECKING:
import napari

from .expansion_base import Expander

Expand Down
3 changes: 3 additions & 0 deletions src/napari_stress/_approximation/expansion_base.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import napari


class Expander(ABC):
Expand Down
3 changes: 3 additions & 0 deletions src/napari_stress/_approximation/expansion_napari.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
from napari_tools_menu import register_function
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import napari

from .._utils import frame_by_frame
from .expansion import EllipsoidExpander, SphericalHarmonicsExpander
Expand Down
3 changes: 3 additions & 0 deletions src/napari_stress/_approximation/fit_ellipsoid.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
import numpy as np
from napari.types import PointsData, VectorsData
from napari_tools_menu import register_function
from typing import TYPE_CHECKING
if TYPE_CHECKING:
import napari

from .. import __version__
from .._utils.frame_by_frame import frame_by_frame
Expand Down
4 changes: 4 additions & 0 deletions src/napari_stress/_measurements/curvature.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
manifold,
)

from typing import TYPE_CHECKING
if TYPE_CHECKING:
import napari


@register_function(
menu="Measurement > Measure mean curvature on ellipsoid (n-STRESS)"
Expand Down
4 changes: 4 additions & 0 deletions src/napari_stress/_measurements/geodesics.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@

from .._utils.frame_by_frame import frame_by_frame

from typing import TYPE_CHECKING
if TYPE_CHECKING:
import napari


def geodesic_distance_matrix(surface: SurfaceData) -> np.ndarray:
"""
Expand Down
4 changes: 3 additions & 1 deletion src/napari_stress/_measurements/intensity.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
from napari_tools_menu import register_function

from .._utils.frame_by_frame import frame_by_frame

from typing import TYPE_CHECKING
if TYPE_CHECKING:
import napari

@register_function(
menu="Measurement > Measure intensities on surface (n-STRESS)"
Expand Down
4 changes: 3 additions & 1 deletion src/napari_stress/_measurements/stresses.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from typing import Tuple
from typing import Tuple, TYPE_CHECKING
if TYPE_CHECKING:
import napari

import numpy as np
import pandas as pd
Expand Down
13 changes: 8 additions & 5 deletions src/napari_stress/_measurements/toolbox.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import os
from pathlib import Path
from typing import List
from typing import List, TYPE_CHECKING

if TYPE_CHECKING:
import napari

import numpy as np
from magicgui.widgets import create_widget
Expand Down Expand Up @@ -41,7 +44,7 @@ def __init__(self, napari_viewer):
# populate quadrature dropdown: Only specific n_quadrature points
# are allowed
points_lookup = lebedev_info_SPB.quad_deg_lookUp
for n_points in points_lookup.keys():
for n_points in points_lookup:
self.comboBox_quadpoints.addItem(str(n_points), n_points)

# select default value corresponding to current max_degree
Expand Down Expand Up @@ -128,7 +131,7 @@ def _check_minimal_point_number(self) -> None:
max_degree = self.spinBox_max_degree.value()
lookup = lebedev_info_SPB.pts_of_lbdv_lookup
for degree in range(max_degree, list(lookup.keys())[-1] + 1):
if degree in lookup.keys():
if degree in lookup:
minimal_point_number = lookup.get(degree)
break

Expand Down Expand Up @@ -249,15 +252,15 @@ def _export(self, results_stress_analysis):
n_frames=self.n_frames,
)

for fig in figures_dict.keys():
for fig in figures_dict:
figure = figures_dict[fig]
figure["figure"].tight_layout()
figure["figure"].savefig(
os.path.join(figure_directory, figure["path"])
)

# Export pointclouds
for i, layer in enumerate(results_stress_analysis):
for layer in results_stress_analysis:
if layer[2] == "points":
export_layer = napari.layers.Layer.create(*layer)
napari.save_layers(
Expand Down
6 changes: 4 additions & 2 deletions src/napari_stress/_reconstruction/fit_utils.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import inspect
from enum import Enum
from typing import List
from typing import List, TYPE_CHECKING
if TYPE_CHECKING:
import napari

import numpy as np
import pandas as pd
Expand Down Expand Up @@ -221,7 +223,7 @@ def _fancy_edge_fit(
parameter_error = np.sqrt(np.diag(_covariance))

# If fit fails, replace bad values with NaN
except Exception:
except (RuntimeError, ValueError):
optimal_fit_parameters = np.repeat(np.nan, len(params))
parameter_error = np.repeat(np.nan, len(params))

Expand Down
6 changes: 4 additions & 2 deletions src/napari_stress/_reconstruction/patches.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from typing import Tuple
from typing import Tuple, TYPE_CHECKING
if TYPE_CHECKING:
import napari

import numpy as np

Expand Down Expand Up @@ -472,7 +474,7 @@ def iterative_curvature_adaptive_patch_fitting(
point_cloud, minimum_permitted_range=minimum_search_radius
)

for it in range(n_iterations):
for _ in range(n_iterations):
neighbor_indices = _find_neighbor_indices(point_cloud, search_radii)
mean_curvatures = [np.nan] * len(point_cloud)
principal_curvatures = [np.nan] * len(point_cloud)
Expand Down
5 changes: 5 additions & 0 deletions src/napari_stress/_reconstruction/reconstruct_surface.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@

from .._utils.frame_by_frame import frame_by_frame

from typing import TYPE_CHECKING
if TYPE_CHECKING:
import napari



@register_function(
menu="Surfaces > Create surface from lebedev points (n-STRESS)"
Expand Down
4 changes: 3 additions & 1 deletion src/napari_stress/_reconstruction/refine_surfaces.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import warnings
from typing import List
from typing import List, TYPE_CHECKING
if TYPE_CHECKING:
import napari

import numpy as np
import pandas as pd
Expand Down
24 changes: 11 additions & 13 deletions src/napari_stress/_reconstruction/toolbox.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import os
from pathlib import Path
from typing import List
from typing import List, TYPE_CHECKING
if TYPE_CHECKING:
import napari

import numpy as np
from magicgui.widgets import create_widget
Expand Down Expand Up @@ -68,7 +70,7 @@ def _set_scales(self):
# set target voxel size to mean of scales as default
mean_scale = np.mean([scales[0], scales[2]])
self.doubleSpinBox_target_voxelsize.setValue(mean_scale)
except Exception:
except Exception as e:
pass

def _export_settings(self, file_name: str = None):
Expand All @@ -78,13 +80,9 @@ def _export_settings(self, file_name: str = None):
from .._utils.import_export_settings import export_settings

reconstruction_parameters = {
"voxelsize": np.asarray(
[
self.doubleSpinBox_voxelsize_z.value(),
self.doubleSpinBox_voxelsize_y.value(),
self.doubleSpinBox_voxelsize_x.value(),
]
),
"voxelsize_z": self.doubleSpinBox_voxelsize_z.value(),
"voxelsize_y": self.doubleSpinBox_voxelsize_y.value(),
"voxelsize_x": self.doubleSpinBox_voxelsize_x.value(),
"target_voxelsize": self.doubleSpinBox_target_voxelsize.value(),
"smoothing_sigma": self.doubleSpinBox_gaussian_blur.value(),
"n_smoothing_iterations": self.spinBox_n_smoothing.value(),
Expand All @@ -111,13 +109,13 @@ def _import_settings(self, file_name: str = None):
reconstruction_parameters = import_settings(self, file_name=file_name)

self.doubleSpinBox_voxelsize_z.setValue(
reconstruction_parameters["voxelsize"][0]
reconstruction_parameters["voxelsize_z"]
)
self.doubleSpinBox_voxelsize_y.setValue(
reconstruction_parameters["voxelsize"][1]
reconstruction_parameters["voxelsize_y"]
)
self.doubleSpinBox_voxelsize_x.setValue(
reconstruction_parameters["voxelsize"][2]
reconstruction_parameters["voxelsize_x"]
)
self.doubleSpinBox_target_voxelsize.setValue(
reconstruction_parameters["target_voxelsize"]
Expand Down Expand Up @@ -324,7 +322,7 @@ def reconstruct_droplet(
points = copy.deepcopy(points_first_guess)

# repeat tracing `n_tracing_iterations` times
for i in range(n_tracing_iterations):
for _ in range(n_tracing_iterations):
resampled_points = resample_pointcloud(
points, sampling_length=resampling_length
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,10 @@ def perform_lebedev_quadrature(
"""
metadata = points.metadata

if "spherical_harmonics_coefficients" not in metadata.keys():
if "spherical_harmonics_coefficients" not in metadata:
raise ValueError(
"Missing spherical harmonics coefficients. "
+ "Use spherical harmonics expansion first"
"Use spherical harmonics expansion first"
)

max_degree = metadata["spherical_harmonics_coefficients"].shape[-1] - 1
Expand Down
6 changes: 2 additions & 4 deletions src/napari_stress/_stress/euclidian_k_form_SPB.py
Original file line number Diff line number Diff line change
Expand Up @@ -2042,14 +2042,12 @@ def Divergence_1_Form(self, lbdv, debug_mode=False):

if debug_mode is True:
print(
"\n"
+ "All_A_inv_successful = "
"\nAll_A_inv_successful = "
+ str(All_A_inv_successful)
)
print(
"All_B_inv_successful = "
+ str(All_B_inv_successful)
+ "\n"
+ str(All_B_inv_successful) + "\n"
)
return Debug_Dict
else:
Expand Down
22 changes: 10 additions & 12 deletions src/napari_stress/_stress/lebedev_info_SPB.py
Original file line number Diff line number Diff line change
Expand Up @@ -638,18 +638,16 @@ def __init__(
-1 * np.cos(theta_bar_pt_rot) * np.sin(phi_bar_pt_rot)
)

if abs(x_pt - x_pt_rot) < 1e-7:
if abs(y_pt - y_pt_rot) < 1e-7:
if abs(z_pt - z_pt_rot) < 1e-7:
if rot_pt_found is False:
rot_pt_found = True

self.Rot_Lbdv_Quad_vals[quad_pt] = (
quad_pt_rot
)
self.Inv_Rot_Lbdv_Quad_vals[
quad_pt_rot
] = quad_pt
if all(abs(pt - pt_rot) < 1e-7 for pt, pt_rot in zip((x_pt, y_pt, z_pt), (x_pt_rot, y_pt_rot, z_pt_rot))):
if rot_pt_found is False:
rot_pt_found = True

self.Rot_Lbdv_Quad_vals[quad_pt] = (
quad_pt_rot
)
self.Inv_Rot_Lbdv_Quad_vals[
quad_pt_rot
] = quad_pt

if rot_pt_found is False:
print("!!ROTATED QUAD PT NOT FOUND!!")
Expand Down
Loading