Loading pysen/inout/writer.py +33 −29 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ def get_phase_index(scan_index, offset=0): class DiffractionWriter(DiffractionScan): "Convert EPICS/ADARA/NeXus file to diffrun .dat file" Loading @@ -50,8 +51,8 @@ class DiffractionWriter(DiffractionScan): diffrun = self.make_filename(self.info['base']) with open(os.path.join(outdir, diffrun), 'wt', encoding='ascii') as fd: # fd.write('"############################"\n') fd.write('"### Starting diffraction run" %s\n' % self.info['time']) fd.write( "\"############################\"\n") fd.write(f"\"### Starting diffraction run\" {self.info['time']}\n") self.log.info("%s: creating diffrun .dat file", diffrun) lmin = self.info.get('lmin', 5.0)*ANGSTROM Loading @@ -60,9 +61,11 @@ class DiffractionWriter(DiffractionScan): lambda_tab = (lambda_tab[1:]+lambda_tab[:-1])/2 attpow = get_attenuator_pos(self.info.get('moatt', 0.0)) upcnt = None for iq, res in self.data.items(): spin_up = not iq%2 fd.write('"############################"\n') spin_lbl = "Spin up" if spin_up else "Spin down" fd.write( "\"############################\"\n") fd.write( "-------------- physics parameters -----------------\n") fd.write(f"lambda = {lmax:g}\n") fd.write(f"lambdaMin = {lmin:g}\n") Loading @@ -76,43 +79,44 @@ class DiffractionWriter(DiffractionScan): qmin = res.get('qmin') pcharge = res['pcharge']*PROTON_CHARGE_UNIT # convert to echo units detsum = res['neutron'].shape[-1] detwin = detsum fd.write(f"\"Q\" {qmin:g} ") # detector data neutrons = res['neutron'] xbin = self.info['xbin'] ybin = self.info['ybin'] tbin = self.info['tbin'] h3,_ = np.histogramdd((neutrons[0], neutrons[1], neutrons[2]), bins=(tbin, ybin, xbin)) detsum = neutrons.shape[-1] tofdet = h3.sum(axis=(1,2)) detwin = int(np.sum(h3[:,10:22,10:22])) # FIXME: hardcoded detwin if spin_up: fd.write(f"\"Spin up\" ") else: fd.write(f"\"Spin down\" ") upcnt = detsum fd.write(f"\"Q\" {qmin:g} \"{spin_lbl}\" ") fd.write(f"\"Proton charge\" {pcharge:.0f} ") detsum = res['neutron'].shape[-1] detwin = detsum fd.write(f"\"Det sum\" {detsum} ") fd.write(f"\"Det win\" {detwin} ") # FIXME HERE fd.write(f"\"Det tc sum\"\n") for _ in range(42): fd.write(f"0\n") fd.write(f"\"Mon1 tc sum\"\n") for _ in range(42): fd.write(f"0\n") fd.write(f"\"Mon2 tc sum\"\n") for _ in range(42): fd.write(f"0\n") fd.write(f"\n") fd.write( "\"Det tc sum\"\n") fd.write("\n".join([f"{val:.0f}" for val in tofdet])) fd.write( "\n\"Mon1 tc sum\"\n") fd.write("\n".join(["0" for _ in tofdet])) fd.write( "\n\"Mon2 tc sum\"\n") fd.write("\n".join(["0" for _ in tofdet])) fd.write( "\n") # fd.write(f"\"Q\" {qmin:g} ") if spin_up: fd.write(f"\"Spin up\" ") else: fd.write(f"\"Spin down\" ") fd.write(f"\"Q\" {qmin:g} \"{spin_lbl}\" ") fd.write(f"\"Det sum/proton charge\" {detsum/pcharge:g} ") fd.write(f"\"Det win/proton charge\" {detwin/pcharge:g} ") fd.write( "\n") if not spin_up: if detsum>0: fr = upcnt/detsum else: fr = np.nan fd.write(f"\"Q\" {qmin:g} ") fd.write(f"\"flip ratio\" 1.0\n") fd.write(f"\"flip ratio\" {fr:g}\n") self.log.info("%s: done", diffrun) Loading Loading
pysen/inout/writer.py +33 −29 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ def get_phase_index(scan_index, offset=0): class DiffractionWriter(DiffractionScan): "Convert EPICS/ADARA/NeXus file to diffrun .dat file" Loading @@ -50,8 +51,8 @@ class DiffractionWriter(DiffractionScan): diffrun = self.make_filename(self.info['base']) with open(os.path.join(outdir, diffrun), 'wt', encoding='ascii') as fd: # fd.write('"############################"\n') fd.write('"### Starting diffraction run" %s\n' % self.info['time']) fd.write( "\"############################\"\n") fd.write(f"\"### Starting diffraction run\" {self.info['time']}\n") self.log.info("%s: creating diffrun .dat file", diffrun) lmin = self.info.get('lmin', 5.0)*ANGSTROM Loading @@ -60,9 +61,11 @@ class DiffractionWriter(DiffractionScan): lambda_tab = (lambda_tab[1:]+lambda_tab[:-1])/2 attpow = get_attenuator_pos(self.info.get('moatt', 0.0)) upcnt = None for iq, res in self.data.items(): spin_up = not iq%2 fd.write('"############################"\n') spin_lbl = "Spin up" if spin_up else "Spin down" fd.write( "\"############################\"\n") fd.write( "-------------- physics parameters -----------------\n") fd.write(f"lambda = {lmax:g}\n") fd.write(f"lambdaMin = {lmin:g}\n") Loading @@ -76,43 +79,44 @@ class DiffractionWriter(DiffractionScan): qmin = res.get('qmin') pcharge = res['pcharge']*PROTON_CHARGE_UNIT # convert to echo units detsum = res['neutron'].shape[-1] detwin = detsum fd.write(f"\"Q\" {qmin:g} ") # detector data neutrons = res['neutron'] xbin = self.info['xbin'] ybin = self.info['ybin'] tbin = self.info['tbin'] h3,_ = np.histogramdd((neutrons[0], neutrons[1], neutrons[2]), bins=(tbin, ybin, xbin)) detsum = neutrons.shape[-1] tofdet = h3.sum(axis=(1,2)) detwin = int(np.sum(h3[:,10:22,10:22])) # FIXME: hardcoded detwin if spin_up: fd.write(f"\"Spin up\" ") else: fd.write(f"\"Spin down\" ") upcnt = detsum fd.write(f"\"Q\" {qmin:g} \"{spin_lbl}\" ") fd.write(f"\"Proton charge\" {pcharge:.0f} ") detsum = res['neutron'].shape[-1] detwin = detsum fd.write(f"\"Det sum\" {detsum} ") fd.write(f"\"Det win\" {detwin} ") # FIXME HERE fd.write(f"\"Det tc sum\"\n") for _ in range(42): fd.write(f"0\n") fd.write(f"\"Mon1 tc sum\"\n") for _ in range(42): fd.write(f"0\n") fd.write(f"\"Mon2 tc sum\"\n") for _ in range(42): fd.write(f"0\n") fd.write(f"\n") fd.write( "\"Det tc sum\"\n") fd.write("\n".join([f"{val:.0f}" for val in tofdet])) fd.write( "\n\"Mon1 tc sum\"\n") fd.write("\n".join(["0" for _ in tofdet])) fd.write( "\n\"Mon2 tc sum\"\n") fd.write("\n".join(["0" for _ in tofdet])) fd.write( "\n") # fd.write(f"\"Q\" {qmin:g} ") if spin_up: fd.write(f"\"Spin up\" ") else: fd.write(f"\"Spin down\" ") fd.write(f"\"Q\" {qmin:g} \"{spin_lbl}\" ") fd.write(f"\"Det sum/proton charge\" {detsum/pcharge:g} ") fd.write(f"\"Det win/proton charge\" {detwin/pcharge:g} ") fd.write( "\n") if not spin_up: if detsum>0: fr = upcnt/detsum else: fr = np.nan fd.write(f"\"Q\" {qmin:g} ") fd.write(f"\"flip ratio\" 1.0\n") fd.write(f"\"flip ratio\" {fr:g}\n") self.log.info("%s: done", diffrun) Loading