Bugfix in reading carpets
This commit is contained in:
@@ -68,6 +68,7 @@ class IssFile:
|
|||||||
self.shape = size_x, size_y, size_c, size_t // 2 + size_t % 2, size_t // 2
|
self.shape = size_x, size_y, size_c, size_t // 2 + size_t % 2, size_t // 2
|
||||||
self.exposure_time = float(self.metadata.find('FrameIntervalTime').text)
|
self.exposure_time = float(self.metadata.find('FrameIntervalTime').text)
|
||||||
self.pxsize = float(self.metadata.find('Boundary').find('FrameWidth').text) / self.shape[0]
|
self.pxsize = float(self.metadata.find('Boundary').find('FrameWidth').text) / self.shape[0]
|
||||||
|
self.time_interval = float(self.metadata.find('TimeSeries').find('TimeSeriesIntervalTime').text)
|
||||||
self.alba_metadata = safe_load('\n'.join([IssFile.parse_line(line)
|
self.alba_metadata = safe_load('\n'.join([IssFile.parse_line(line)
|
||||||
for line in self.metadata.find('AlbaSystemSettings')
|
for line in self.metadata.find('AlbaSystemSettings')
|
||||||
.find('withComments').text.splitlines()]))
|
.find('withComments').text.splitlines()]))
|
||||||
@@ -114,23 +115,20 @@ class IssFile:
|
|||||||
data.append(unpack('<I', self.data.read(4)))
|
data.append(unpack('<I', self.data.read(4)))
|
||||||
return np.reshape(data, self.shape[:2])
|
return np.reshape(data, self.shape[:2])
|
||||||
|
|
||||||
def get_carpet(self, c, t, min_n_lines=1):
|
def get_carpet(self, c, t):
|
||||||
assert c < self.shape[2] and t < self.shape[4], \
|
assert c < self.shape[2] and t < self.shape[4], \
|
||||||
f'carpet {c = }, {t = } not in shape {self.shape[2]}, {self.shape[4]}'
|
f'carpet {c = }, {t = } not in shape {self.shape[2]}, {self.shape[4]}'
|
||||||
frame = int(c) + (2 * int(t) + 1) * self.shape[2]
|
frame = int(c) + (2 * int(t) + 1) * self.shape[2]
|
||||||
frame_bytes = self.shape[0] * self.shape[1] * self.delta
|
frame_bytes = self.shape[0] * self.shape[1] * self.delta
|
||||||
data, metadata = [], []
|
data, metadata = [], []
|
||||||
self.data.seek(frame * frame_bytes)
|
self.data.seek(frame * frame_bytes)
|
||||||
for i in range(frame_bytes // (2 * self.points_per_orbit * self.orbits_per_cycle)):
|
for i in range(int(1000 * self.time_interval / self.cycle_time)):
|
||||||
line = [unpack('<H', self.data.read(2))[0] for _ in range(self.points_per_orbit * self.orbits_per_cycle)]
|
line = [unpack('<H', self.data.read(2))[0] for _ in range(self.points_per_orbit * self.orbits_per_cycle)]
|
||||||
if np.any(line) or i < min_n_lines:
|
data.append(line)
|
||||||
data.append(line)
|
if self.version >= 388:
|
||||||
if self.version >= 388:
|
metadata.append(unpack('<ffff', self.data.read(16)))
|
||||||
metadata.append(unpack('<ffff', self.data.read(16)))
|
|
||||||
else:
|
|
||||||
metadata.append([i * self.cycle_time, 0, 0, 0])
|
|
||||||
else:
|
else:
|
||||||
break
|
metadata.append([i * self.cycle_time, 0, 0, 0])
|
||||||
|
|
||||||
data, metadata = np.vstack(data), np.vstack(metadata)
|
data, metadata = np.vstack(data), np.vstack(metadata)
|
||||||
index = np.zeros(int(round(max(metadata[:, 0]) / self.cycle_time)) + 1, int)
|
index = np.zeros(int(round(max(metadata[:, 0]) / self.cycle_time)) + 1, int)
|
||||||
|
|||||||
Reference in New Issue
Block a user