This repository has been archived on 2025-04-15. You can view files and clone it, but cannot push or open issues or pull requests.
2023-06-02 16:52:14 +02:00

64 lines
1.6 KiB
Python

import json
from pathlib import Path
from . import RawFileReader
class RawFile:
"""
Generic Raw File reader. Picks up settings from .json master file
Currently supports: Moench03 =)
"""
def __init__(self, fname):
self.findex = 0
self.fname = fname
fname = Path(fname)
if fname.suffix != '.json':
raise ValueError("Need a master file in json format")
with open(fname) as f:
self.master = json.load(f)
#Figure out which file to open
if self.master['Detector Type'] == 'Moench' and self.master['Analog Samples'] == 5000:
#TODO! pass settings to reader
self._parse_fname()
self.reader = RawFileReader(self.data_fname(0,0))
else:
raise ValueError('unsupported file')
def _parse_fname(self):
try:
base, _, run_id = self.fname.stem.rsplit("_", 2)
self.base = self.fname.parent / base
self.run_id = int(run_id)
except:
raise ValueError(f"Could not parse master file name: {self.fname}")
def data_fname(self, i, findex=0):
return Path(f"{self.base}_d{i}_f{findex}_{self.run_id}.raw")
def read(self):
return self.reader.read()
# Support iteration
def __iter__(self):
return self
def __next__(self):
frame = self.reader.read()
if frame.shape[0] == 0:
raise StopIteration
# Support with statement
def __enter__(self):
return self
def __exit__(self, exception_type, exception_value, traceback):
pass