def _main(): args = _parse_cli_args() check_input(args.file) outfile = args.out if not outfile: outfile = os.path.splitext(args.file)[0] + ".h5fit" check_output(outfile, args.yes) histogram = Histogram.from_h5hist(args.file) histogram = histogram.cropped_to_adc_cuts() popts, pstds = bisection_fit(histogram.pcx, histogram.counts, n=2) copyfile(args.file, outfile) with h5py.File(outfile, "a") as f: fit = f.require_group("Fit") f.attrs["basefile"] = os.path.basename(args.file) fit.create_dataset("p", data=popts) fit.create_dataset("perr", data=pstds) sys.exit(0)
def _main(): args = _parse_cli_args() check_input(args.file) outfile = args.out if not outfile: outfile = os.path.splitext(args.file)[0] + ".h5hist" check_output(outfile, args.yes) if not args.ychannel: hist, ex = hist1d_from_mpa_data(args.file, args.xchannel, nxbins=args.nx) kind = "1D" else: hist, ex, ey = hist2d_from_mpa_data(args.file, args.xchannel, args.ychannel, nxbins=args.nx, nybins=args.ny) kind = "2D" with h5py.File(args.file, "r") as f: datafile = f.attrs.get("datafile", None) if not datafile: datafile = os.path.basename(args.file) with h5py.File(outfile, "w") as f: f.attrs["datafile"] = datafile f.attrs["basefile"] = os.path.basename(args.file) f.attrs["kind"] = kind f.attrs["xchannel"] = args.xchannel f.create_dataset("EX", data=ex) f.create_dataset("HIST", data=hist) if kind == "2D": f.attrs["orientation"] = "x = dim0/rows, y = dim1/cols" f.attrs["ychannel"] = args.ychannel f.create_dataset("EY", data=ey) sys.exit(0)
def _main(): parser = argparse.ArgumentParser( description="Convert an MPA-3 list file into HDF5 format.", parents=[default_argparser] ) args = parser.parse_args() fin = check_input(args.file) fout = args.out if not fout: fout = fin.replace(".lst", ".h5") fout = check_output(fout, args.yes) convert(fin, fout) sys.exit(0)
def _main(): args = _parse_cli_args() check_input(args.file) save_as = { ".pdf": args.pdf, ".pgf": args.pgf, ".png": args.png, ".eps": args.eps, } if args.out: out_name, ext = os.path.splitext(args.out) if ext: save_as[ext] = True else: out_name, _ = os.path.splitext(args.file) if not any(save_as.values()): save_as[".pdf"] = True for ext, do_save in save_as.items(): if do_save: check_output(out_name + ext, args.yes) with h5py.File(args.file, "r") as f: popts = f["Fit"]["p"][:] pstds = f["Fit"]["perr"][:] histogram = Histogram.from_h5hist(args.file) histogram = histogram.cropped_to_adc_cuts() synth_histogram = make_synth_histogram(histogram.pcx, histogram, popts, pstds) with plt.rc_context(rc={'lines.markersize': 1}): _ = fit_overview_plot(histogram, synth_histogram, popts, pstds) for ext, do_save in save_as.items(): if do_save: plt.savefig(out_name + ext) sys.exit(0)
def _main(): parser = argparse.ArgumentParser( parents=[default_argparser], description="Create a report sheet for a given measurement." ) args = parser.parse_args() stub = os.path.splitext(os.path.basename(args.file))[0] outfile = args.out if not outfile: outfile = stub + ".md" check_output(outfile, args.yes) plots = _PLOTS.substitute( fit_adc2_adc3_dr2=f"./{stub}_DR2_ADC2_ADC3_fit.png", hist_adc1=f"./{stub}_ADC1.png", hist_adc2=f"./{stub}_ADC2.png", hist_adc3=f"./{stub}_ADC3.png", hist_adc2_adc1=f"./{stub}_ADC2_ADC1.png", hist_adc2_adc3_dr1=f"./{stub}_DR1_ADC2_ADC3.png", hist_adc2_adc3_dr2=f"./{stub}_DR2_ADC2_ADC3.png", hist_adc2_adc1_dr2=f"./{stub}_DR2_ADC2_ADC1.png", ) if not args.meta: meta = "N/A" else: from pickle import load meta_data = load(open(args.meta, "rb")) stringify_meta(meta_data) meta = _META.substitute(**meta_data) content = _TEMPLATE.substitute( FILENAME=f"{stub}.lst", META=meta, PLOTS=plots ) with open(outfile, "w") as f: f.write(content)
def _main(): args = _parse_cli_args() check_input(args.file) save_as = { ".pdf": args.pdf, ".pgf": args.pgf, ".png": args.png, ".eps": args.eps, } if args.out: out_name, ext = os.path.splitext(args.out) if ext: save_as[ext] = True else: out_name, _ = os.path.splitext(args.file) if not any(save_as.values()): save_as[".pdf"] = True for ext, do_save in save_as.items(): if do_save: check_output(out_name + ext, args.yes) # with h5py.File(args.file, "r") as f: # kind = f.attrs["kind"] # if kind == "1D": # _fig = hist1d_from_h5hist(f, scaling=args.linear) # elif kind == "2D": # _fig = hist2d_from_h5hist(f, scaling=args.linear) hist = Histogram.from_h5hist(args.file, metafile=args.meta) fig = hist.plot() for ext, do_save in save_as.items(): if do_save: plt.savefig(out_name + ext) sys.exit(0)
from _common import (default_argparser, read_orchestration_csv, check_input, check_output) if __name__ == "__main__": parser = argparse.ArgumentParser( description= "Extract metadata from orchestration file and save as pickle object.", parents=[default_argparser], ) parser.add_argument("lst", type=str, help="Filename corresponding to lst file") args = parser.parse_args() if not args.out: out = args.lst[:-4] + ".meta" else: out = args.out check_input(args.file) check_output(out, yes=args.yes) df = read_orchestration_csv(args.file) df = df.set_index("FILE") with open(out, "wb") as f: pickle.dump(dict(df.loc[args.lst]), f) sys.exit(0)
def _main(): args = _parse_cli_args() check_input(args.file) outfile = args.out if not outfile: outfile = os.path.splitext(args.file)[0] + ".h5roi" check_output(outfile, args.yes) kind_of_roi = [args.strip, args.rect, args.poly] assert sum(bool(a) for a in kind_of_roi) == 1, "Choose exactly one type of ROI!" if args.poly: vx = np.array(args.poly[::2]) vy = np.array(args.poly[1::2]) _check_roi_2d_poly = _make_check_roi_2d_poly(vx, vy) with h5py.File(args.file, "r") as fin, h5py.File(outfile, "w") as fout: datafile = fin.attrs.get("datafile", None) if not datafile: datafile = os.path.basename(args.file) fout["datafile"] = datafile eve_in = fin["EVENTS"] xchan = eve_in[args.xchannel] ychan = eve_in[args.ychannel] if args.ychannel else None fin.copy("CFG", fout) eve_out = fout.create_group("EVENTS") roiinf = fout.create_group("ROI") for name, vec in eve_in.items(): stor = eve_out.create_dataset(name, (2,), maxshape=vec.shape, dtype=vec.dtype) n = eve_in["TIME"].len() chunk_size = TYPICAL_DASK_CHUNK stor_pos = 0 for k in tqdm(range(n//chunk_size+1), desc="Processing"): if (k+1)*chunk_size + 1 < n: slc = np.s_[k*chunk_size:(k+1)*chunk_size + 1] else: slc = np.s_[k*chunk_size:] xarr = xchan[slc] if ychan: yarr = ychan[slc] if args.strip: in_roi = _check_roi_1d(xarr, min(args.strip), max(args.strip)) kind = "1D" roiargs = str(args.strip) if args.rect: in_roi = _check_roi_2d_rect( xarr, args.rect[0], args.rect[1], yarr, args.rect[2], args.rect[3] ) kind = "2DRect" roiargs = str(args.rect) if args.poly: in_roi = _check_roi_2d_poly(xarr, yarr) kind = "2DPoly" roiargs = str(args.rect) for name, vec in eve_in.items(): stor = eve_out[name] filt = vec[slc][in_roi] stor.resize(stor_pos+filt.size, axis=0) stor[stor_pos:stor_pos+filt.size] = filt stor_pos += filt.size roiinf.attrs["kind"] = kind roiinf.attrs["roiargs"] = roiargs roiinf.attrs["xchannel"] = args.xchannel roiinf.attrs["basefile"] = os.path.basename(args.file) if args.ychannel: roiinf.attrs["ychannel"] = args.ychannel sys.exit(0)