diff --git a/CHANGELOG.md b/CHANGELOG.md index e05e5b4e4bd99a4f208fa36f1d1eaa8616b950e2..7891452e25c1d1aed47d5e8410d7d0a2f7679667 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - Internally the luminosity distance was erroneously stored in Mpc rather than in m for non-zero redshifts. This has now been standardised to m. (Médéric Boquien) - As the best-fit properties are computed at the exact observed redshift, correct the scaling factor as it is computed at the grid redshift. This corrects for slight offsets on the best-fit properties when the input redshift has more decimals than the grid redshift. (Médéric Boquien) - Fix the pip install by making pcigale.managers discoverable. (Yannick Roehlly) +- When using a parameters file, Boolean values were not correctly interpreted. (Médéric Boquien, reported by Eric Martínez, INAOE) ### Optimised - Slight speedup of the computation of the likelihood from the χ² (Médéric Boquien) diff --git a/pcigale/sed_modules/mbb.py b/pcigale/sed_modules/mbb.py index 08467acc06b11eb08bf719b2ff627769ed36bc86..9cf1e7d1095fb561a077aff67ad22fa350161b41 100644 --- a/pcigale/sed_modules/mbb.py +++ b/pcigale/sed_modules/mbb.py @@ -64,7 +64,10 @@ class MBB(SedModule): self.epsilon = float(self.parameters["epsilon_mbb"]) self.T = float(self.parameters["t_mbb"]) self.beta = float(self.parameters["beta_mbb"]) - self.energy_balance = bool(self.parameters["energy_balance"]) + if type(self.parameters["energy_balance"]) is str: + self.energy_balance = self.parameters["energy_balance"].lower() == 'true' + else: + self.energy_balance = bool(self.parameters["energy_balance"]) if self.epsilon < 0.: raise Exception("Error, epsilon_mbb must be ≥ 0.") diff --git a/pcigale/sed_modules/nebular.py b/pcigale/sed_modules/nebular.py index d01cf1f72a4a085b61f5a71468852dc01f4d19b7..a3456ce2010a2d736b1fa2fb6e91ecf7049e5452 100644 --- a/pcigale/sed_modules/nebular.py +++ b/pcigale/sed_modules/nebular.py @@ -95,7 +95,10 @@ class NebularEmission(SedModule): self.fesc = float(self.parameters['f_esc']) self.fdust = float(self.parameters['f_dust']) self.lines_width = float(self.parameters['lines_width']) - self.emission = bool(self.parameters["emission"]) + if type(self.parameters["emission"]) is str: + self.emission = self.parameters["emission"].lower() == 'true' + else: + self.emission = bool(self.parameters["emission"]) if self.fesc < 0. or self.fesc > 1: raise Exception("Escape fraction must be between 0 and 1") diff --git a/pcigale/sed_modules/sfh2exp.py b/pcigale/sed_modules/sfh2exp.py index 66dda263f9718837a5892a81a5f50a8a41b1046d..9785d9244a66498802d25b8b16afaa65a330fb03 100644 --- a/pcigale/sed_modules/sfh2exp.py +++ b/pcigale/sed_modules/sfh2exp.py @@ -73,7 +73,10 @@ class Sfh2Exp(SedModule): self.burst_age = int(self.parameters["burst_age"]) age = int(self.parameters["age"]) sfr_0 = float(self.parameters["sfr_0"]) - normalise = bool(self.parameters["normalise"]) + if type(self.parameters["normalise"]) is str: + normalise = self.parameters["normalise"].lower() == 'true' + else: + normalise = bool(self.parameters["normalise"]) # Time grid and age. If needed, the age is rounded to the inferior Myr time_grid = np.arange(age) diff --git a/pcigale/sed_modules/sfh_buat08.py b/pcigale/sed_modules/sfh_buat08.py index 725da244a9622dd6f40bbd4ab496b9c14f559df3..5d57332d5ed2162bd2481c17747405c7042a6aeb 100644 --- a/pcigale/sed_modules/sfh_buat08.py +++ b/pcigale/sed_modules/sfh_buat08.py @@ -63,7 +63,10 @@ class SfhBuat08(SedModule): def _init_code(self): self.velocity = float(self.parameters["velocity"]) self.age = int(self.parameters["age"]) - normalise = bool(self.parameters["normalise"]) + if type(self.parameters["normalise"]) is str: + normalise = self.parameters["normalise"].lower() == 'true' + else: + normalise = bool(self.parameters["normalise"]) # Time grid and age. If needed, the age is rounded to the inferior Myr time_grid = np.arange(self.age) diff --git a/pcigale/sed_modules/sfh_quenching_smooth.py b/pcigale/sed_modules/sfh_quenching_smooth.py index ec05c5d03a30cd4bd7c53d66dd4a1e77cf953057..64bb459ad21a619d49b17bb31d07c0cacda3f63e 100644 --- a/pcigale/sed_modules/sfh_quenching_smooth.py +++ b/pcigale/sed_modules/sfh_quenching_smooth.py @@ -52,7 +52,10 @@ class SfhQuenchSmooth(SedModule): def _init_code(self): self.quenching_age = int(self.parameters["quenching_time"]) self.quenching_factor = float(self.parameters["quenching_factor"]) - self.normalise = bool(self.parameters["normalise"]) + if type(self.parameters["normalise"]) is str: + normalise = self.parameters["normalise"].lower() == 'true' + else: + normalise = bool(self.parameters["normalise"]) def process(self, sed): """ diff --git a/pcigale/sed_modules/sfh_quenching_trunk.py b/pcigale/sed_modules/sfh_quenching_trunk.py index 2126d57fbdd7cfb4fe03ddb7d88957a6d982a5fb..69b542585cec8c0d219ac6468f9f775c68e00fdc 100644 --- a/pcigale/sed_modules/sfh_quenching_trunk.py +++ b/pcigale/sed_modules/sfh_quenching_trunk.py @@ -52,7 +52,10 @@ class SfhQuenchTrunk(SedModule): def _init_code(self): self.quenching_age = int(self.parameters["quenching_age"]) self.quenching_factor = float(self.parameters["quenching_factor"]) - self.normalise = bool(self.parameters["normalise"]) + if type(self.parameters["normalise"]) is str: + normalise = self.parameters["normalise"].lower() == 'true' + else: + normalise = bool(self.parameters["normalise"]) def process(self, sed): """ diff --git a/pcigale/sed_modules/sfhdelayed.py b/pcigale/sed_modules/sfhdelayed.py index 3607175c90ba1c6b2abe120f03cd4cbcbe6bca9d..24aff881ee893999c489b6b266a2141f1bc2c3e9 100644 --- a/pcigale/sed_modules/sfhdelayed.py +++ b/pcigale/sed_modules/sfhdelayed.py @@ -81,7 +81,10 @@ class SFHDelayed(SedModule): self.age_burst = int(self.parameters["age_burst"]) self.f_burst = float(self.parameters["f_burst"]) sfr_A = float(self.parameters["sfr_A"]) - normalise = bool(self.parameters["normalise"]) + if type(self.parameters["normalise"]) is str: + normalise = self.parameters["normalise"].lower() == 'true' + else: + normalise = bool(self.parameters["normalise"]) # Time grid for each component t = np.arange(self.age_main) diff --git a/pcigale/sed_modules/sfhdelayedbq.py b/pcigale/sed_modules/sfhdelayedbq.py index 0b41d6a5a96e123d9b8f138686d5e2c7d4121067..bdccc2f8843edd663088e8eee75f90e3b55bf561 100644 --- a/pcigale/sed_modules/sfhdelayedbq.py +++ b/pcigale/sed_modules/sfhdelayedbq.py @@ -76,7 +76,10 @@ class SFHDelayedBQ(SedModule): self.age_bq = int(self.parameters["age_bq"]) self.r_sfr = float(self.parameters["r_sfr"]) sfr_A = float(self.parameters["sfr_A"]) - normalise = bool(self.parameters["normalise"]) + if type(self.parameters["normalise"]) is str: + normalise = self.parameters["normalise"].lower() == 'true' + else: + normalise = bool(self.parameters["normalise"]) # Delayed SFH t = np.arange(self.age_main) diff --git a/pcigale/sed_modules/sfhfromfile.py b/pcigale/sed_modules/sfhfromfile.py index c1ec95f3cf841477191137ea71356fadfdf80cf5..818e369885e5b4c07688f452d6f792f8bbe95059 100644 --- a/pcigale/sed_modules/sfhfromfile.py +++ b/pcigale/sed_modules/sfhfromfile.py @@ -59,9 +59,12 @@ class SfhFromFile(SedModule): def _init_code(self): filename = self.parameters['filename'] - normalise = bool(self.parameters["normalise"]) age = int(self.parameters['age']) self.sfr_column_number = int(self.parameters['sfr_column']) + if type(self.parameters["normalise"]) is str: + normalise = self.parameters["normalise"].lower() == 'true' + else: + normalise = bool(self.parameters["normalise"]) table = read_table(filename) self.sfr = table.columns[self.sfr_column_number].data.astype(np.float) diff --git a/pcigale/sed_modules/sfhperiodic.py b/pcigale/sed_modules/sfhperiodic.py index 8e5746bded7116532013dc3ec225ec82289a0098..ae041364e9132beb36c20692332ae86ef9dc834c 100644 --- a/pcigale/sed_modules/sfhperiodic.py +++ b/pcigale/sed_modules/sfhperiodic.py @@ -73,7 +73,10 @@ class SfhPeriodic(SedModule): self.tau_bursts = float(self.parameters["tau_bursts"]) age = int(self.parameters["age"]) sfr_A = float(self.parameters["sfr_A"]) - normalise = bool(self.parameters["normalise"]) + if type(self.parameters["normalise"]) is str: + normalise = self.parameters["normalise"].lower() == 'true' + else: + normalise = bool(self.parameters["normalise"]) time_grid = np.arange(0, age) self.sfr = np.zeros_like(time_grid, dtype=np.float)