Skip to content

Conversation

@smribet
Copy link
Collaborator

@smribet smribet commented Jan 26, 2026

No description provided.

Copy link

@CSSFrancis CSSFrancis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some small comments.

**kwargs: dict
Additional keyword arguments to pass to the Dataset4dstem constructor.
Additional keyword arguments to pass to the file reader.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd add sampling, Orgin and Units as Other Parameters:

Suggested change
Other Parameters
----------------
name : str | None, optional
A descriptive name for the dataset. If None, defaults to "4D-STEM dataset"
origin : NDArray | tuple | list | float | int | None, optional
The origin coordinates for each dimension. If None, defaults to zeros
sampling : NDArray | tuple | list | float | int | None, optional
The sampling rate/spacing for each dimension. If None, defaults to ones
units : list[str] | tuple | list | None, optional
Units for each dimension. If None, defaults to ["pixels"] * 4
signal_units : str, optional
Units for the array values, by default "arb. units"

sampling_override = kwargs.pop("sampling", None)
origin_override = kwargs.pop("origin", None)
units_override = kwargs.pop("units", None)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
name_override = kwargs.pop("name", None)

sampling = (
sampling_override
if sampling_override is not None
else [ax["scale"] for ax in imported_axes]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not all axes have offsets and scales. For example sometimes there will be axes with non-linear scales. Then you can acess the non-linear axis via ax["axis"]

Suggested change
else [ax["scale"] for ax in imported_axes]
else [ax.get("scale", 1) for ax in imported_axes]

"origin",
[ax["offset"] for ax in imported_axes],
origin = (
origin_override if origin_override is not None else [ax["offset"] for ax in imported_axes]

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above:

Not sure the policy on logging but you could output a warning that the scale is non-linear.

Suggested change
origin_override if origin_override is not None else [ax["offset"] for ax in imported_axes]
origin_override if origin_override is not None else [ax.get("offset", 0) for ax in imported_axes]

units = kwargs.pop(
"units",
["pixels" if ax["units"] == "1" else ax["units"] for ax in imported_axes],
units = (

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All axes will have units :) and a name. That is the minimal definition.

array=imported_data["data"],
sampling=sampling,
origin=origin,
units=units,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
units=units,
units=units,
name = name,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants