Skip to content

Commit

Permalink
fix: refactoring of parse_subarray_map_step and test
Browse files Browse the repository at this point in the history
  • Loading branch information
astrobc1 committed Jul 8, 2024
1 parent 390bafb commit 3ca065b
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 272 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

SUBARRAY_DQ_BIT = 4


# NOTE: xstart/ystart use 1-based indexing
def parse_subarray_map(subarray_map):
subarray_metadata = []
for subarray_id in range(1, 10 + 1):
Expand Down Expand Up @@ -46,9 +46,11 @@ def process(self, input):

result = input_model.copy()

# Create metadata from image ID map
for each in parse_subarray_map(result["subarr_map"]):
result.meta.subarray_map.append(each)

# Indicate subarrays in dq flags
result.dq[result["subarr_map"] != 0] = np.bitwise_or(
result.dq[result["subarr_map"] != 0],
2 ** SUBARRAY_DQ_BIT
Expand Down
259 changes: 0 additions & 259 deletions liger_iris_pipeline/tests/test_parse_subarray_map.ipynb

This file was deleted.

25 changes: 13 additions & 12 deletions liger_iris_pipeline/tests/test_parse_subarray_map.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,31 @@
from liger_iris_pipeline import ParseSubarrayMapStep
import numpy as np


def set_subarray_mask(mask_array, subarray_index, xstart, ystart, xsize, ysize):
xstart = xstart - 1
ystart = ystart - 1
mask_array[ystart:ystart + ysize, xstart:xstart + xsize] = subarray_index


def test_parse_subarray_map():


# Define simple subarray metadata and image ID map
# ID is just the 1-based index in this list (1, 2, ...)
subarray_maps_metadata = [
{"xstart" : 80, "ystart" : 70, "xsize" : 10, "ysize" : 10},
{"xstart" : 10, "ystart" : 20, "xsize" : 20, "ysize" : 20}
]

subarr_map = np.zeros((100,100), dtype=np.int16)
for i, shape in enumerate(subarray_maps_metadata):
set_subarray_mask(subarr_map, subarray_index=i+1, **shape)

# Test parse_subarray_map function
parse_subarray_map_output = parse_subarray_map(subarr_map)

# Test parse_subarray_map
assert subarray_maps_metadata == parse_subarray_map_output

# Create toy data
# Create toy Image object with these subarrays
image = liger_iris_pipeline.datamodels.LigerIrisImageModel(data=np.zeros((100, 100)))
image.dq[25, 25] = 16
image.dq[26, 26] = 1
Expand All @@ -35,8 +39,8 @@ def test_parse_subarray_map():
step = ParseSubarrayMapStep()
output = step.run(image)

# Test
for each_parsed, each_input in zip(output.subarr_map, subarray_maps_metadata):
# Test each parsed subarray map is equal to what we defined above.
for each_parsed, each_input in zip(output.meta.subarray_map, subarray_maps_metadata):
assert each_parsed.instance == each_input

# If a pixel is already flagged as subarray, don't mess it up
Expand All @@ -45,11 +49,8 @@ def test_parse_subarray_map():
# conserve existing flags
assert output.dq[26, 26] == 17

# Test
# Test DQ flags
np.testing.assert_array_equal(
np.bitwise_and(output.dq, int(2**4)) > 0,
subarray_map != 0
)


test_parse_subarray_map()
subarr_map != 0
)

0 comments on commit 3ca065b

Please sign in to comment.