def main(chan, doPlot=False): chan = int(chan) wf_idxs = np.arange(0, 2) directory = "{}pulsers_test_chan{}".format(len(wf_idxs), chan) wf_file = "pulser_data/chan{}_pulsers.npz".format(chan) wf_conf = { "wf_file_name": wf_file, "wf_idxs": wf_idxs, "align_idx": 5, "num_samples": 500, "align_percent": 5000 #ADC value rather than percentage for pulsers } model_conf = [ ("AntialiasingFilterModel", {}), # ("AntialiasingFilterModel", {"pmag_lims":[0.6, 0.7], "pphi_lims":[0.05, 0.15]}), ("OscillationFilterModel", { "pphi_lims": [0.1, 50] }), #preamp oscillation # ("OscillationFilterModel", {"pphi_lims":[15,50]}), #preamp oscillation # ("DigitalFilterModel", {"order":2, "include_zeros":True}), # ("DigitalFilterModel", {"order":2, "include_zeros":False}), ("OvershootFilterModel", { "zmag_lims": [1, 3] }) # ("DigitalFilterModel", {"order":1, "include_zeros":True, "pmag_lims":[-15, 0], "zmag_lims":[-15, 0], "pphi_lims":[-15,0], "zphi_lims":[-15,0], "exp":True}), ] conf = FitConfiguration("", directory=directory, wf_conf=wf_conf, model_conf=model_conf, joint_energy=True, joint_risetime=True, interpType="linear") if os.path.isdir(directory): pass # if len(os.listdir(directory)) >0: # raise OSError("Directory {} already exists: not gonna over-write it".format(directory)) else: os.makedirs(directory) fm = LocalFitManager(conf, num_threads=1, model_type="PulserTrainingModel") conf.save_config() fm.fit(numLevels=1000, directory=directory, new_level_interval=5000, numParticles=3)
def __init__(self, result_directory, num_samples, sample_dec=1, model_type="Model"): super().__init__(result_directory, num_samples, sample_dec) configuration = FitConfiguration(directory=result_directory, loadSavedConfig=True) if model_type == "Model": self.model = Model(configuration) elif model_type == "PulserTrainingModel": self.model = PulserTrainingModel(configuration) self.num_wf_params = self.model.num_wf_params
def __init__(self, result_directory, num_samples, sample_dec=1): self.parse_samples("sample.txt", result_directory, num_samples, sample_dec) self.configuration = FitConfiguration(directory=result_directory, loadSavedConfig=True) if model_type == "Model": self.model = Model(self.configuration) elif model_type == "PulserTrainingModel": self.model = PulserTrainingModel(self.configuration) self.num_wf_params = self.model.num_wf_params self.wf_conf = self.model.conf.wf_conf self.model_conf = self.model.conf.model_conf # For plots: self.width = 18
def __init__(self, result_directory, num_samples, sample_dec, wf_model): # super().__init__(result_directory=result_directory, num_samples=num_samples, model_type="Waveform") print("I'm pretty sure this class is broken") raise NotImplementedError self.wf_model = wf_model self.dnest_postprocess(result_directory) self.parse_samples("posterior_sample.txt", result_directory, num_samples, sample_dec) # self.parse_samples("sample.txt", result_directory, num_samples, sample_dec) self.configuration = FitConfiguration.from_file(result_directory) # self.num_wf_params = self.model.num_wf_params # self.wf_conf = self.model.conf.wf_conf # self.model_conf = self.model.conf.model_conf # For plots: self.width = 18
def __init__(self, result_directory, num_samples=None, sample_dec=1, model_type="Model"): #, posterior=False, waveform=False): """The base class used for all the postprocessing checks. result_directory: The directory containing the sample.txt etc num_samples: The number of samples to look at from the selected chain (will use the most recent N) sample_dec: The decimation factor, by which to only look at some fraction of the result model_type: Probably just want to use "Model" posterior: Sample the chain or the posterior. waveform: Was it a waveform fit (true) or a training fit (false)? """ self.parse_samples("sample.txt", result_directory, num_samples, sample_dec) self.configuration = FitConfiguration(directory=result_directory, loadSavedConfig=True) if model_type == "Model": self.model = Model(self.configuration) elif model_type == "PulserTrainingModel": self.model = PulserTrainingModel(self.configuration) # elif model_type == "Waveform": # self.model = self.num_samples = num_samples self.num_wf_params = self.model.num_wf_params self.wf_conf = self.model.conf.wf_conf self.model_conf = self.model.conf.model_conf self.id = result_directory.replace("/", "") # For plots: self.width = 18
def main(chan, doPlot=False): # directory = "4wf_648_zero" # wf_file = "training_data/chan648_8wfs.npz" # conf_name = "P42664A.conf" chan = int(chan) directory = "../../Data/Detector/8wf_zero_{}".format(chan) wf_file = "../../Data/Detector/chan{}_8wfs_DS1-1.npz".format(chan) conf_name = "{}.conf".format(chan_dict[chan]) wf_idxs = np.arange(0, 8) datadir = os.environ['DATADIR'] conf_file = datadir + "/siggen/config_files/" + conf_name #rc_ms = 72 rc_us = 70 rc_ms = 1E3 * 70 wf_conf = { "wf_file_name": wf_file, "wf_idxs": wf_idxs, "align_idx": 125, "align_percent": 0.95, "num_samples": 1000, "do_smooth": True, "smoothing_type": "gauss" } model_conf = [ ("VelocityModel", { "include_beta": False }), #Preamp effects ("HiPassFilterModel", { "order": 1, "pmag_lims": [0.8 * rc_us, 1.2 * rc_us] }), #rc decay filter (~70 us), second stage ("HiPassFilterModel", { "order": 1, "pmag_lims": [0.98 * rc_ms, 1.02 * rc_ms] }), ("FirstStageFilterModel", {}), # This is a LPF ("AntialiasingFilterModel", {}), # Digitizer front end ("OvershootFilterModel", {}), # ADC response ("OscillationFilterModel", {}), # match the observed oscillation ("ImpurityModelEnds", {}), ("TrappingModel", {}) ] conf = FitConfiguration(conf_file, directory=directory, wf_conf=wf_conf, model_conf=model_conf) if doPlot: import matplotlib.pyplot as plt # conf.plot_training_set() fm = LocalFitManager(conf, num_threads=1) for wf in fm.model.wfs: plt.plot(wf.windowed_wf) print(wf.window_length) plt.show() exit() if os.path.isdir(directory): if len(os.listdir(directory)) > 0: raise OSError( "Directory {} already exists: not gonna over-write it".format( directory)) else: os.makedirs(directory) fm = LocalFitManager(conf, num_threads=4) conf.save_config() fm.fit(numLevels=1000, directory=directory, new_level_interval=5000, numParticles=3)
def main(chan, doPlot=False): # directory = "4wf_648_zero" # wf_file = "training_data/chan648_8wfs.npz" # conf_name = "P42664A.conf" chan = int(chan) directory = "8wf_zero_{}".format(chan) wf_file = "training_data/chan{}_8wfs.npz".format(chan) conf_name = "{}.conf".format(chan_dict[chan]) wf_idxs = np.arange(0, 8) # wf_idxs = [1,3] # wf_file = "16wf_set_chan{}.npz".format(chan) # wf_idxs = np.arange(0,16,4) # wf_idxs = [1,4,8,12] datadir = os.environ['DATADIR'] conf_file = datadir + "siggen/config_files/" + conf_name wf_conf = { "wf_file_name": wf_file, "wf_idxs": wf_idxs, "align_idx": 125, "num_samples": 1000, "do_smooth": True, "smoothing_type": "gaussian" } model_conf = [("VelocityModel", { "include_beta": False }), ("LowPassFilterModel", { "order": 2 }), ("LowPassFilterModel", { "order": 2, "include_zeros": True }), ("HiPassFilterModel", { "order": 2 }), ("OvershootFilterModel", {}), ("ImpurityModelEnds", {}), ("TrappingModel", {})] conf = FitConfiguration(conf_file, directory=directory, wf_conf=wf_conf, model_conf=model_conf) if doPlot: import matplotlib.pyplot as plt # conf.plot_training_set() fm = LocalFitManager(conf, num_threads=1) for wf in fm.model.wfs: plt.plot(wf.windowed_wf) print(wf.window_length) plt.show() exit() if os.path.isdir(directory): if len(os.listdir(directory)) > 0: raise OSError( "Directory {} already exists: not gonna over-write it".format( directory)) else: os.makedirs(directory) fm = LocalFitManager(conf, num_threads=2) conf.save_config() fm.fit(numLevels=1000, directory=directory, new_level_interval=5000, numParticles=3)
def main(chan, doPlot=False): # directory = "4wf_648_zero" # wf_file = "training_data/chan648_8wfs.npz" # conf_name = "P42664A.conf" chan = int(chan) wf_idxs = np.arange(0, 8) # wf_idxs = [0,3] directory = "8wf_free_{}".format(chan) wf_file = "training_data/chan{}_8wfs.npz".format(chan) conf_name = "{}.conf".format(chan_dict[chan]) # wf_file = "16wf_set_chan{}.npz".format(chan) # wf_idxs = np.arange(0,16,4) # wf_idxs = [1,4,8,12] datadir = os.environ['DATADIR'] conf_file = datadir + "siggen/config_files/" + conf_name wf_conf = { "wf_file_name": wf_file, "wf_idxs": wf_idxs, "align_idx": 125, "num_samples": 1000, "do_smooth": False } #Load the PZ params from the fit proc = DataProcessor(None) df_pz = pd.read_hdf(proc.channel_info_file_name, key="pz") pz_chan = df_pz.loc[df_pz.channel == chan] rc_us = pz_chan.rc_us.values rc_ms = 1E3 * pz_chan.rc_ms.values #this is ch 594 from the pulser overshoot_pole_mag = -5.246669688365981 overshoot_zero_mag = 2.6703616866699833 model_conf = [ #Preamp effects ("LowPassFilterModel", { "order": 2, "pmag_lims": [0.95, 1], "pphi_lims": [0, 0.01] }), #preamp? ("HiPassFilterModel", { "order": 1, "pmag_lims": [0.9 * rc_us, 1.1 * rc_us] }), #rc decay filter (~70 us), second stage ("HiPassFilterModel", { "order": 1, "pmag_lims": [0.9 * rc_ms, 1.1 * rc_ms] }), # ("HiPassFilterModel", {"order":1, "pmag_lims": [0.99*rc_us,1.01*rc_us]}), #rc decay filter (~70 us), second stage # ("HiPassFilterModel", {"order":1, "pmag_lims": [0.99*rc_ms,1.01*rc_ms]}), #Gretina card effects ("AntialiasingFilterModel", {}), #antialiasing ("OvershootFilterModel", {}), #gretina overshoot # ("OvershootFilterModel",{"zmag_lims": [0.99*overshoot_zero_mag,1.01*overshoot_zero_mag], "pmag_lims": [1.01*overshoot_pole_mag, 0.99*overshoot_pole_mag]}), #gretina overshoot #Detector effects ("ImpurityModelEnds", {}), ("TrappingModel", {}), ("VelocityModel", { "include_beta": True }), ] conf = FitConfiguration(conf_file, directory=directory, wf_conf=wf_conf, model_conf=model_conf) if doPlot: import matplotlib.pyplot as plt # conf.plot_training_set() fm = LocalFitManager(conf, num_threads=1) for wf in fm.model.wfs: plt.plot(wf.windowed_wf) print(wf.window_length) plt.show() exit() if os.path.isdir(directory): if len(os.listdir(directory)) > 0: raise OSError( "Directory {} already exists: not gonna over-write it".format( directory)) else: os.makedirs(directory) fm = LocalFitManager(conf, num_threads=len(wf_idxs)) conf.save_config() fm.fit(numLevels=1000, directory=directory, new_level_interval=5000, numParticles=3)
def main(chan, doPlot=False): chan = int(chan) wf_idxs = np.arange(0,2) directory = "{}pulsers_test_chan{}".format(len(wf_idxs), chan) wf_file = "pulser_data/chan{}_pulsers.npz".format(chan) wf_conf = { "wf_file_name":wf_file, "wf_idxs":wf_idxs, "align_idx":50, "num_samples":1000, "align_percent":50 #ADC value rather than percentage for pulsers } rc_antialias = 2 * 49.9 * 33E-12 rc_antialias_hi = np.exp(-1./1E9/(2*rc_antialias)) rc_antialias_lo = np.exp(-1./1E9/(0.5*rc_antialias)) #Load the PZ params from the fit proc = DataProcessor(None) df_pz = pd.read_hdf(proc.channel_info_file_name, key="pz") pz_chan = df_pz.loc[df_pz.channel==chan] rc_us = pz_chan.rc_us.values rc_ms = 1E3*pz_chan.rc_ms.values model_conf = [ #Preamp effects ("LowPassFilterModel", {"order":2,"pmag_lims":[0.95,1], "pphi_lims":[0,0.01]}), #preamp? ("HiPassFilterModel", {"order":1, "pmag_lims": [0.8*rc_us,1.2*rc_us]}), #rc decay filter (~70 us), second stage ("HiPassFilterModel", {"order":1, "pmag_lims": [0.8*rc_ms,1.2*rc_ms]}), #Gretina card effects ("AntialiasingFilterModel", {}), #antialiasing ("OvershootFilterModel",{"zmag_lims":[1, 3]}), #gretina overshoot #Shitty ringing # ("OscillationFilterModel", {"include_zeros":True}), #preamp oscillation at 5 MHz ("OscillationFilterModel", {"include_zeros":True, "pphi_lims":[8, 15] }), #preamp oscillation at 10 Mhz ("OscillationFilterModel", {"include_zeros":True, "pphi_lims":[9, 11.0] }), #preamp oscillation at 10 Mhz ("OscillationFilterModel", {"include_zeros":True, "pphi_lims":[11, 15.0] }), #preamp oscillation at 10 Mhz ] conf = FitConfiguration( "", directory = directory, wf_conf=wf_conf, model_conf=model_conf, joint_energy=True, joint_risetime=True, interpType="linear" ) if os.path.isdir(directory): pass # if len(os.listdir(directory)) >0: # raise OSError("Directory {} already exists: not gonna over-write it".format(directory)) else: os.makedirs(directory) fm = LocalFitManager(conf, num_threads=1, model_type="PulserTrainingModel") conf.save_config() fm.fit(numLevels=1000, directory = directory,new_level_interval=5000, numParticles=3)
def main(chan, doPlot=False): # directory = "4wf_648_zero" # wf_file = "training_data/chan648_8wfs.npz" # conf_name = "P42664A.conf" chan = int(chan) wf_idxs = np.arange(0,8) # wf_idxs = [0,3] directory = "8wf_free_{}".format(chan) wf_file = "training_data/chan{}_8wfs.npz".format(chan) conf_name = "{}.conf".format( chan_dict[chan] ) # wf_file = "16wf_set_chan{}.npz".format(chan) # wf_idxs = np.arange(0,16,4) # wf_idxs = [1,4,8,12] datadir= os.environ['DATADIR'] conf_file = datadir +"siggen/config_files/" + conf_name wf_conf = { "wf_file_name":wf_file, "wf_idxs":wf_idxs, "align_idx":125, "num_samples":1000, "do_smooth":False } #Load the PZ params from the fit proc = DataProcessor(None) df_pz = pd.read_hdf(proc.channel_info_file_name, key="pz") pz_chan = df_pz.loc[df_pz.channel==chan] rc_us = pz_chan.rc_us.values rc_ms = 1E3*pz_chan.rc_ms.values #this is ch 594 from the pulser overshoot_pole_mag = -5.246669688365981 overshoot_zero_mag = 2.6703616866699833 model_conf = [ #Preamp effects ("LowPassFilterModel", {"order":2,"pmag_lims":[0.95,1], "pphi_lims":[0,0.01]}), #preamp? ("HiPassFilterModel", {"order":1, "pmag_lims": [0.9*rc_us,1.1*rc_us]}), #rc decay filter (~70 us), second stage ("HiPassFilterModel", {"order":1, "pmag_lims": [0.9*rc_ms,1.1*rc_ms]}), # ("HiPassFilterModel", {"order":1, "pmag_lims": [0.99*rc_us,1.01*rc_us]}), #rc decay filter (~70 us), second stage # ("HiPassFilterModel", {"order":1, "pmag_lims": [0.99*rc_ms,1.01*rc_ms]}), #Gretina card effects ("AntialiasingFilterModel", {}), #antialiasing ("OvershootFilterModel",{}), #gretina overshoot # ("OvershootFilterModel",{"zmag_lims": [0.99*overshoot_zero_mag,1.01*overshoot_zero_mag], "pmag_lims": [1.01*overshoot_pole_mag, 0.99*overshoot_pole_mag]}), #gretina overshoot #Detector effects ("ImpurityModelEnds", {}), ("TrappingModel", {}), ("VelocityModel", {"include_beta":True}), ] conf = FitConfiguration( conf_file, directory = directory, wf_conf=wf_conf, model_conf=model_conf ) if doPlot: import matplotlib.pyplot as plt # conf.plot_training_set() fm = LocalFitManager(conf, num_threads=1) for wf in fm.model.wfs: plt.plot(wf.windowed_wf) print (wf.window_length) plt.show() exit() if os.path.isdir(directory): if len(os.listdir(directory)) >0: raise OSError("Directory {} already exists: not gonna over-write it".format(directory)) else: os.makedirs(directory) fm = LocalFitManager(conf, num_threads=len(wf_idxs)) conf.save_config() fm.fit(numLevels=1000, directory = directory,new_level_interval=5000, numParticles=3)
def main(chan, doPlot=False): chan = int(chan) wf_idxs = np.arange(0, 2) directory = "{}pulsers_test_chan{}".format(len(wf_idxs), chan) wf_file = "pulser_data/chan{}_pulsers.npz".format(chan) wf_conf = { "wf_file_name": wf_file, "wf_idxs": wf_idxs, "align_idx": 50, "num_samples": 1000, "align_percent": 50 #ADC value rather than percentage for pulsers } rc_antialias = 2 * 49.9 * 33E-12 rc_antialias_hi = np.exp(-1. / 1E9 / (2 * rc_antialias)) rc_antialias_lo = np.exp(-1. / 1E9 / (0.5 * rc_antialias)) #Load the PZ params from the fit proc = DataProcessor(None) df_pz = pd.read_hdf(proc.channel_info_file_name, key="pz") pz_chan = df_pz.loc[df_pz.channel == chan] rc_us = pz_chan.rc_us.values rc_ms = 1E3 * pz_chan.rc_ms.values model_conf = [ #Preamp effects ("LowPassFilterModel", { "order": 2, "pmag_lims": [0.95, 1], "pphi_lims": [0, 0.01] }), #preamp? ("HiPassFilterModel", { "order": 1, "pmag_lims": [0.8 * rc_us, 1.2 * rc_us] }), #rc decay filter (~70 us), second stage ("HiPassFilterModel", { "order": 1, "pmag_lims": [0.8 * rc_ms, 1.2 * rc_ms] }), #Gretina card effects ("AntialiasingFilterModel", {}), #antialiasing ("OvershootFilterModel", { "zmag_lims": [1, 3] }), #gretina overshoot #Shitty ringing # ("OscillationFilterModel", {"include_zeros":True}), #preamp oscillation at 5 MHz ("OscillationFilterModel", { "include_zeros": True, "pphi_lims": [8, 15] }), #preamp oscillation at 10 Mhz ("OscillationFilterModel", { "include_zeros": True, "pphi_lims": [9, 11.0] }), #preamp oscillation at 10 Mhz ("OscillationFilterModel", { "include_zeros": True, "pphi_lims": [11, 15.0] }), #preamp oscillation at 10 Mhz ] conf = FitConfiguration("", directory=directory, wf_conf=wf_conf, model_conf=model_conf, joint_energy=True, joint_risetime=True, interpType="linear") if os.path.isdir(directory): pass # if len(os.listdir(directory)) >0: # raise OSError("Directory {} already exists: not gonna over-write it".format(directory)) else: os.makedirs(directory) fm = LocalFitManager(conf, num_threads=1, model_type="PulserTrainingModel") conf.save_config() fm.fit(numLevels=1000, directory=directory, new_level_interval=5000, numParticles=3)