Bugfix in reading carpets

This commit is contained in:
Wim Pomp
2022-12-09 16:50:05 +01:00
parent 5e068e7374
commit 3d072993cc
2 changed files with 8 additions and 10 deletions

View File

@@ -68,6 +68,7 @@ class IssFile:
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.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)
for line in self.metadata.find('AlbaSystemSettings')
.find('withComments').text.splitlines()]))
@@ -114,23 +115,20 @@ class IssFile:
data.append(unpack('<I', self.data.read(4)))
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], \
f'carpet {c = }, {t = } not in shape {self.shape[2]}, {self.shape[4]}'
frame = int(c) + (2 * int(t) + 1) * self.shape[2]
frame_bytes = self.shape[0] * self.shape[1] * self.delta
data, metadata = [], []
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)]
if np.any(line) or i < min_n_lines:
data.append(line)
if self.version >= 388:
metadata.append(unpack('<ffff', self.data.read(16)))
else:
metadata.append([i * self.cycle_time, 0, 0, 0])
data.append(line)
if self.version >= 388:
metadata.append(unpack('<ffff', self.data.read(16)))
else:
break
metadata.append([i * self.cycle_time, 0, 0, 0])
data, metadata = np.vstack(data), np.vstack(metadata)
index = np.zeros(int(round(max(metadata[:, 0]) / self.cycle_time)) + 1, int)

View File

@@ -1,7 +1,7 @@
import os
import setuptools
version = '2022.12.0'
version = '2022.12.1'
with open('README.md', 'r') as fh:
long_description = fh.read()