Skip to content

Commit a2bb3d9

Browse files
authored
More update for numpy2.0 casting changes (#439)
1 parent 9ccd6b7 commit a2bb3d9

File tree

4 files changed

+23
-38
lines changed

4 files changed

+23
-38
lines changed

stixcore/products/common.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -242,21 +242,6 @@ def _get_energies_from_mask(date, mask=None):
242242
return low, high
243243

244244

245-
def get_min_uint(values):
246-
"""
247-
Find the smallest unsigned int that can represent max value.
248-
"""
249-
max_value = np.array(values).max()
250-
if max_value < 256: # 2**8
251-
return np.uint8
252-
elif max_value < 65536: # 2**16
253-
return np.uint16
254-
elif max_value < 4294967296: # 2**32
255-
return np.uint32
256-
elif max_value < 18446744073709551616: # 2**64
257-
return np.uint64
258-
259-
260245
def rebin_proportional(y1, x1, x2):
261246
x1 = np.asarray(x1)
262247
y1 = np.asarray(y1)

stixcore/products/level0/quicklookL0.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
_get_energy_bins,
1616
_get_pixel_mask,
1717
_get_sub_spectrum_mask,
18-
get_min_uint,
1918
rebin_proportional,
2019
unscale_triggers,
2120
)
@@ -203,12 +202,12 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
203202
data["time"] = time
204203
data["timedel"] = duration
205204
data.add_meta(name="timedel", nix="NIX00405", packets=packets)
206-
data["triggers"] = triggers.astype(get_min_uint(triggers))
205+
data["triggers"] = triggers.astype(np.min_scalar_type(triggers))
207206
data.add_meta(name="triggers", nix="NIX00274", packets=packets)
208207
data["triggers_comp_err"] = np.float32(np.sqrt(triggers_var))
209208
data["rcr"] = np.hstack(packets.get_value("NIX00276")).flatten().astype(np.ubyte)
210209
data.add_meta(name="rcr", nix="NIX00276", packets=packets)
211-
data["counts"] = (counts.T * u.ct).astype(get_min_uint(counts))
210+
data["counts"] = (counts.T * u.ct).astype(np.min_scalar_type(counts))
212211
data.add_meta(name="counts", nix="NIX00272", packets=packets)
213212
data["counts_comp_err"] = np.float32(np.sqrt(counts_var).T * u.ct)
214213

@@ -316,10 +315,10 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
316315
data["time"] = time
317316
data["timedel"] = duration
318317
data.add_meta(name="timedel", nix="NIX00405", packets=packets)
319-
data["triggers"] = triggers.astype(get_min_uint(triggers))
318+
data["triggers"] = triggers.astype(np.min_scalar_type(triggers))
320319
data.add_meta(name="triggers", nix="NIX00274", packets=packets)
321320
data["triggers_comp_err"] = np.float32(np.sqrt(triggers_var))
322-
data["counts"] = (counts.T * u.ct).astype(get_min_uint(counts))
321+
data["counts"] = (counts.T * u.ct).astype(np.min_scalar_type(counts))
323322
data.add_meta(name="counts", nix="NIX00278", packets=packets)
324323
data["counts_comp_err"] = np.float32(np.sqrt(counts_var).T * u.ct)
325324

@@ -438,10 +437,10 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
438437
data.add_meta(name="timedel", nix="NIX00405", packets=packets)
439438
data["detector_index"] = detector_index.reshape(-1, 32).astype(np.ubyte)
440439
data.add_meta(name="detector_index", nix="NIX00100", packets=packets)
441-
data["spectra"] = (counts.reshape(-1, 32, num_energies) * u.ct).astype(get_min_uint(counts))
440+
data["spectra"] = (counts.reshape(-1, 32, num_energies) * u.ct).astype(np.min_scalar_type(counts))
442441
data["spectra"].meta = {"NIXS": "NIX00452", "PCF_CURTX": packets.get("NIX00452")[0].idb_info.PCF_CURTX}
443442
data["spectra_comp_err"] = np.float32(np.sqrt(counts_var.reshape(-1, 32, num_energies)))
444-
data["triggers"] = triggers.reshape(-1, num_energies).astype(get_min_uint(triggers))
443+
data["triggers"] = triggers.reshape(-1, num_energies).astype(np.min_scalar_type(triggers))
445444
data.add_meta(name="triggers", nix="NIX00484", packets=packets)
446445
data["triggers_comp_err"] = np.float32(np.sqrt(triggers_var.reshape(-1, num_energies)))
447446
data["num_integrations"] = num_integrations.reshape(-1, num_energies).astype(np.ubyte)[:, 0]
@@ -556,7 +555,7 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
556555
data["timedel"] = duration
557556
data.add_meta(name="timedel", nix="NIX00405", packets=packets)
558557
data["control_index"] = control_indices
559-
data["variance"] = variance.astype(get_min_uint(variance))
558+
data["variance"] = variance.astype(np.min_scalar_type(variance))
560559
data.add_meta(name="variance", nix="NIX00281", packets=packets)
561560
data["variance_comp_err"] = np.float32(np.sqrt(variance_var))
562561

@@ -801,7 +800,7 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
801800
data["timedel"] = duration[unique_time_indices]
802801
data.add_meta(name="timedel", nix="NIX00122", packets=packets)
803802

804-
data["counts"] = (full_counts * u.ct).astype(get_min_uint(full_counts))
803+
data["counts"] = (full_counts * u.ct).astype(np.min_scalar_type(full_counts))
805804
data.add_meta(name="counts", nix="NIX00158", packets=packets)
806805
data["counts_comp_err"] = (np.sqrt(full_counts_var) * u.ct).astype(np.float32)
807806
data["control_index"] = np.arange(len(control)).astype(np.uint16)
@@ -849,7 +848,7 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
849848
control = Control()
850849
control["scet_coarse"] = packets.get("scet_coarse")
851850
control["scet_fine"] = packets.get("scet_fine")
852-
control["index"] = np.arange(len(control)).astype(get_min_uint(len(control)))
851+
control["index"] = np.arange(len(control)).astype(np.min_scalar_type(len(control)))
853852

854853
# When the packets are parsed empty packets are dropped but in LB we don't parse so this
855854
# is not known need to compare control and levelb.control and only use matching rows

stixcore/products/level0/scienceL0.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
_get_compression_scheme,
1212
_get_detector_mask,
1313
_get_pixel_mask,
14-
get_min_uint,
1514
unscale_triggers,
1615
)
1716
from stixcore.products.product import (
@@ -199,7 +198,7 @@ def from_levelb(cls, levelb, *, parent="", keep_parse_tree=True):
199198

200199
control["index"] = np.ubyte(0)
201200
packet_ids = levelb.control["packet"].reshape(1, -1)
202-
control["packet"] = packet_ids.astype(get_min_uint(packet_ids))
201+
control["packet"] = packet_ids.astype(np.min_scalar_type(packet_ids))
203202
control["raw_file"] = np.unique(levelb.control["raw_file"]).reshape(1, -1)
204203
control["parent"] = parent
205204

@@ -245,7 +244,7 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
245244
data.add_data("pixel_masks", _get_pixel_mask(packets, "NIXD0407"))
246245
data.add_data("detector_masks", _get_detector_mask(packets))
247246
triggers = np.array([packets.get_value(f"NIX00{i}") for i in range(408, 424)]).T
248-
data["triggers"] = triggers.astype(get_min_uint(triggers))
247+
data["triggers"] = triggers.astype(np.min_scalar_type(triggers))
249248
data["triggers"].meta = {"NIXS": [f"NIX00{i}" for i in range(408, 424)]}
250249
data.add_basic(name="num_samples", nix="NIX00406", packets=packets, dtype=np.uint16)
251250

@@ -302,7 +301,7 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
302301
data = data[sub_index]
303302
data["time"] = control["time_stamp"][0] + data["start_time"] + data["integration_time"] / 2
304303
data["timedel"] = SCETimeDelta(data["integration_time"])
305-
data["counts"] = (counts * u.ct).astype(get_min_uint(counts))
304+
data["counts"] = (counts * u.ct).astype(np.min_scalar_type(counts))
306305
# data.add_meta(name='counts', nix='NIX00065', packets=packets)
307306
data["control_index"] = control["index"][0]
308307

@@ -416,7 +415,7 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
416415
factor=factor,
417416
)
418417

419-
data["triggers"] = triggers.T.astype(get_min_uint(triggers))
418+
data["triggers"] = triggers.T.astype(np.min_scalar_type(triggers))
420419
data["triggers"].meta = {"NIXS": [f"NIX00{i}" for i in range(242, 258)]}
421420
data["triggers_comp_err"] = np.float32(np.sqrt(triggers_var).T)
422421
# data.add_basic(name='num_energy_groups', nix='NIX00258', packets=packets, dtype=np.ubyte)
@@ -565,7 +564,7 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
565564

566565
data["time"] = control["time_stamp"][0] + data["delta_time"] + data["integration_time"] / 2
567566
data["timedel"] = data["integration_time"]
568-
data["counts"] = (counts * u.ct).astype(get_min_uint(counts))
567+
data["counts"] = (counts * u.ct).astype(np.min_scalar_type(counts))
569568
data.add_meta(name="counts", nix="NIX00260", packets=packets)
570569
data["counts_comp_err"] = np.float32(counts_var * u.ct)
571570
data["control_index"] = control["index"][0]
@@ -875,7 +874,7 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
875874
data["timedel"] = deltas
876875
data["timedel"].meta = {"NIXS": ["NIX00441", "NIX00269"]}
877876

878-
data["triggers"] = triggers.astype(get_min_uint(triggers))
877+
data["triggers"] = triggers.astype(np.min_scalar_type(triggers))
879878
data.add_meta(name="triggers", nix="NIX00267", packets=packets)
880879
data["triggers_comp_err"] = np.float32(np.sqrt(triggers_var))
881880
data.add_meta(name="triggers_comp_err", nix="NIX00267", packets=packets)
@@ -885,7 +884,7 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
885884
data["pixel_masks"] = pixel_masks
886885
data.add_meta(name="pixel_masks", nix="NIXD0407", packets=packets)
887886

888-
data["counts"] = (counts * u.ct).astype(get_min_uint(counts))
887+
data["counts"] = (counts * u.ct).astype(np.min_scalar_type(counts))
889888
data.add_meta(name="counts", nix="NIX00268", packets=packets)
890889
data["counts_comp_err"] = np.float32(np.sqrt(counts_var) * u.ct)
891890
data["control_index"] = np.ubyte(0)
@@ -957,7 +956,7 @@ def from_levelb(cls, levelb, parent="", keep_parse_tree=True):
957956
control["packet"] = levelb.control["packet"].reshape(1, -1)
958957
control["parent"] = parent
959958

960-
control["index"] = np.arange(len(control)).astype(get_min_uint(len(control)))
959+
control["index"] = np.arange(len(control)).astype(np.min_scalar_type(len(control)))
961960

962961
delta_time = ((control["summing_value"] * control["averaging_value"]) / 1000.0) * u.s
963962
samples = packets.get_value("NIX00089")

stixcore/products/product.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
from collections import defaultdict
4040

41-
from stixcore.products.common import _get_energies_from_mask, get_min_uint
41+
from stixcore.products.common import _get_energies_from_mask
4242
from stixcore.util.logging import get_logger
4343

4444
logger = get_logger(__name__)
@@ -420,7 +420,7 @@ def from_packets(cls, packets, NIX00405_offset=0):
420420
control["integration_time"] = np.zeros_like(control["scet_coarse"], float) * u.s
421421

422422
# control = unique(control)
423-
control["index"] = np.arange(len(control)).astype(get_min_uint(len(control)))
423+
control["index"] = np.arange(len(control)).astype(np.min_scalar_type(len(control)))
424424

425425
return control
426426

@@ -669,6 +669,8 @@ def __add__(self, other):
669669
# update the control index in data to a new unique sequence
670670
newids = dict()
671671

672+
data["control_index"] = data["control_index"].astype(np.min_scalar_type(len(control)))
673+
672674
for row in data:
673675
oid = row["old_index"]
674676

@@ -1027,7 +1029,7 @@ def from_levelb(cls, levelb, parent, keep_parse_tree=True):
10271029
control["scet_coarse"] = packets.get("scet_coarse")
10281030
control["scet_fine"] = packets.get("scet_fine")
10291031
control["integration_time"] = 0
1030-
control["index"] = np.arange(len(control)).astype(get_min_uint(len(control)))
1032+
control["index"] = np.arange(len(control)).astype(np.min_scalar_type(len(control)))
10311033

10321034
control["raw_file"] = levelb.control["raw_file"]
10331035
control["packet"] = levelb.control["packet"]
@@ -1049,7 +1051,7 @@ def from_levelb(cls, levelb, parent, keep_parse_tree=True):
10491051
name = param.idb_info.get_product_attribute_name()
10501052
data.add_basic(name=name, nix=nix, attr="value", packets=packets, reshape=reshape)
10511053

1052-
data["control_index"] = np.arange(len(control)).astype(get_min_uint(len(control)))
1054+
data["control_index"] = np.arange(len(control)).astype(np.min_scalar_type(len(control)))
10531055

10541056
return cls(
10551057
service_type=packets.service_type,

0 commit comments

Comments
 (0)