From bcf285c51ee81f001e9696d48c6f713d8163fa70 Mon Sep 17 00:00:00 2001 From: cryo Date: Wed, 23 Oct 2019 10:28:41 -0700 Subject: [PATCH 1/2] Fixing filter order -1 and filter_a/filter_b dimension issues. --- pysmurf/util/smurf_util.py | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/pysmurf/util/smurf_util.py b/pysmurf/util/smurf_util.py index 4811f7fc3..f7f35563a 100644 --- a/pysmurf/util/smurf_util.py +++ b/pysmurf/util/smurf_util.py @@ -2594,7 +2594,8 @@ def make_smurf_to_gcp_config(self, num_averages=None, filename=None, def get_smurf_to_mce_file(self): """ Reads in the most recent smurf_to_mce file and returns - everything in it as a dict. + everything in it as a dict. The file location is defined + in self.smurf_to_mce_file. Ret: ---- @@ -2612,13 +2613,18 @@ def get_smurf_to_mce_file(self): return ret + def get_filter_params(self): """ Get the downsample filter parameters: filter order, filter gain, num averages, and the actual filter parameters. This reads the most recent smurf_to_mce_file - to get the parameters. + to get the parameters. This is defined in + self.smurf_to_mce_file. + If filter order is -1, uses rectangular integrator. This + will set filter_a, filter_b to None. + Ret: ---- filter_params (dict) : A dictionary with the filter @@ -2631,13 +2637,17 @@ def get_filter_params(self): filter_order = int(cfg['filter_order']) filter_gain = float(cfg['filter_gain']) num_averages = int(cfg['num_averages']) - - # Get filter parameters - a = np.zeros(filter_order, dtype=float) - b = np.zeros(filter_order, dtype=float) - for i in range(filter_order): - a[i] = cfg[f'filter_a{i}'] - b[i] = cfg[f'filter_b{i}'] + + if filter_order < 0: + a = None + b = None + else: + # Get filter parameters + a = np.zeros(filter_order+1, dtype=float) + b = np.zeros(filter_order+1, dtype=float) + for i in range(filter_order+1): + a[i] = cfg[f'filter_a{i}'] + b[i] = cfg[f'filter_b{i}'] ret = { 'filter_order' : filter_order, From 84ccabebea55923842485d49a5dbd101f00d7bb9 Mon Sep 17 00:00:00 2001 From: cryo Date: Wed, 23 Oct 2019 10:31:53 -0700 Subject: [PATCH 2/2] Cleaning up documentation --- pysmurf/util/smurf_util.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pysmurf/util/smurf_util.py b/pysmurf/util/smurf_util.py index f7f35563a..c8870406c 100644 --- a/pysmurf/util/smurf_util.py +++ b/pysmurf/util/smurf_util.py @@ -2622,8 +2622,9 @@ def get_filter_params(self): to get the parameters. This is defined in self.smurf_to_mce_file. - If filter order is -1, uses rectangular integrator. This - will set filter_a, filter_b to None. + If filter order is -1, the downsampler is using a + rectangula integrator. This will set filter_a, filter_b + to None. Ret: ---- @@ -2633,7 +2634,7 @@ def get_filter_params(self): # Load cfg file cfg = self.get_smurf_to_mce_file() - # Get filter order + # Get filter order, gain, and averages filter_order = int(cfg['filter_order']) filter_gain = float(cfg['filter_gain']) num_averages = int(cfg['num_averages']) @@ -2642,13 +2643,14 @@ def get_filter_params(self): a = None b = None else: - # Get filter parameters + # Get filter parameters - (filter_order+1) elements a = np.zeros(filter_order+1, dtype=float) b = np.zeros(filter_order+1, dtype=float) for i in range(filter_order+1): a[i] = cfg[f'filter_a{i}'] b[i] = cfg[f'filter_b{i}'] + # Cast into dictionary ret = { 'filter_order' : filter_order, 'filter_gain': filter_gain,