88 lines
2.5 KiB
Python
88 lines
2.5 KiB
Python
import numpy as np
|
|
import json, os, glob, yaml, time
|
|
import argparse, pickle, h5py
|
|
from pathlib import Path
|
|
from sfdata import SFDataFile, SFDataFiles
|
|
|
|
from alvra_tools.load_data import *
|
|
from alvra_tools.channels import *
|
|
from alvra_tools.utils import *
|
|
|
|
|
|
#EventChan = 'SAR-CVME-TIFALL4:EvtSet'
|
|
Detector = 'JF06T32V07'
|
|
chIzero110 = 'SAROP11-PBPS110:INTENSITY'
|
|
chIzero122 = 'SAROP11-PBPS122:INTENSITY'
|
|
chIzeroAPD = 'SARES11-GES1:PR1_CH1_VAL_GET'
|
|
|
|
#roi = [900, 1300, 850, 1250]
|
|
roi = [800, 1400, 750, 1350]
|
|
|
|
def get_acq_from_pth(path):
|
|
import re
|
|
return re.search(r"acq(\d+)", path).group(1).zfill(4)
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--input", "-i", required=True)
|
|
args = parser.parse_args()
|
|
|
|
filename = Path(args.input)
|
|
output_file = Path(str(filename).replace("/raw/", "/res/processed/").replace(".h5",".corr_PROCESSED.h5") )
|
|
output_file.parent.mkdir(parents=True, exist_ok=True, mode=0o775)
|
|
|
|
acq = get_acq_from_pth(args.input)
|
|
acq_meta_pth = Path(str(filename).replace("/data/ac", "/meta/ac")).parent
|
|
acq_info_pth = acq_meta_pth.joinpath(f"acq{acq}.json")
|
|
|
|
with open(acq_info_pth, "r") as f:
|
|
acq_parameters = json.load(f)
|
|
rbk_value = acq_parameters.get("scan_info", {}).get("scan_readbacks", 0)
|
|
#xlabel = acq_parameters.get("scan_info", {}).get("name", None)
|
|
#units = acq_parameters.get("scan_info", {}).get("units", None)
|
|
|
|
file2load = args.input.replace('BSDATA', "*")
|
|
#print ('sleeping 30 seconds, ROI = {}'.format(roi))
|
|
#time.sleep(30)
|
|
|
|
#file2load = args.input.replace('JF06T32V07', "*")
|
|
|
|
with SFDataFiles(file2load) as step:
|
|
subset = step[Detector, chIzero110, chIzero122, chIzeroAPD]
|
|
subset.drop_missing()
|
|
|
|
JF = crop_roi(subset[Detector].data, roi)
|
|
JF_flat = JF.reshape(JF.shape[0], -1)
|
|
Izero110 = subset[chIzero110].data
|
|
Izero122 = subset[chIzero122].data
|
|
IzeroAPD = subset[chIzeroAPD].data
|
|
|
|
before = len(Izero110)
|
|
|
|
q_low = np.percentile(Izero110, 5)
|
|
q_high = np.percentile(Izero110, 95)
|
|
outliers = (Izero110 < q_low) | (Izero110 > q_high)
|
|
|
|
JF_flat = JF_flat[~outliers]
|
|
Izero110 = Izero110[~outliers]
|
|
Izero122 = Izero122[~outliers]
|
|
IzeroAPD = IzeroAPD[~outliers]
|
|
|
|
print ("Survived {} out of {} shots".format(len(Izero110), before))
|
|
|
|
JF_int = np.sum(JF_flat, axis=1)
|
|
|
|
with h5py.File(output_file, 'w') as f:
|
|
gr1 = f.create_group("data")
|
|
gr1['Izero110'] = Izero110
|
|
gr1['Izero122'] = Izero122
|
|
gr1['IzeroAPD'] = IzeroAPD
|
|
gr1['Int_JF'] = JF_int
|
|
|
|
gr2 = f.create_group("meta")
|
|
gr2["roi"] = roi
|
|
|
|
|
|
|
|
|
|
|