コード例 #1
0
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)
コード例 #2
0
ファイル: plots.py プロジェクト: zachh12/waffle
    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
コード例 #3
0
    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
コード例 #4
0
ファイル: waveform.py プロジェクト: sjmeijer/waffle
    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
コード例 #5
0
ファイル: base.py プロジェクト: sjmeijer/waffle
    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
コード例 #6
0
ファイル: do_fit.py プロジェクト: zachh12/GeFT
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)
コード例 #7
0
ファイル: do_fit.py プロジェクト: zachh12/waffle
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)
コード例 #8
0
ファイル: do_fit.py プロジェクト: benshanks/mjd-analysis
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)
コード例 #9
0
ファイル: fit_pulser.py プロジェクト: benshanks/mjd-analysis
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)
コード例 #10
0
ファイル: do_fit.py プロジェクト: benshanks/mjd-analysis
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)
コード例 #11
0
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)