From 137a739ddd9e2448e15501277324dc6980920c71 Mon Sep 17 00:00:00 2001
From: Colm Talbot <colm.talbot@ligo.org>
Date: Sat, 12 May 2018 15:04:37 +1000
Subject: [PATCH] switch if/else lists to dictionaries

---
 tupak/prior.py | 128 +++++++++++++++++++++++--------------------------
 1 file changed, 59 insertions(+), 69 deletions(-)

diff --git a/tupak/prior.py b/tupak/prior.py
index 09039c4b5..d0fd5a7f8 100644
--- a/tupak/prior.py
+++ b/tupak/prior.py
@@ -60,44 +60,31 @@ class Prior(object):
 
     @property
     def __default_latex_label(self):
-        if self.name == 'mass_1':
-            return '$m_1$'
-        elif self.name == 'mass_2':
-            return '$m_2$'
-        elif self.name == 'mchirp':
-            return '$\mathcal{M}$'
-        elif self.name == 'q':
-            return '$q$'
-        elif self.name == 'a_1':
-            return '$a_1$'
-        elif self.name == 'a_2':
-            return '$a_2$'
-        elif self.name == 'tilt_1':
-            return '$\\theta_1$'
-        elif self.name == 'tilt_2':
-            return '$\\theta_2$'
-        elif self.name == 'phi_12':
-            return '$\Delta\phi$'
-        elif self.name == 'phi_jl':
-            return '$\phi_{JL}$'
-        elif self.name == 'luminosity_distance':
-            return '$d_L$'
-        elif self.name == 'dec':
-            return '$\mathrm{DEC}$'
-        elif self.name == 'ra':
-            return '$\mathrm{RA}$'
-        elif self.name == 'iota':
-            return '$\iota$'
-        elif self.name == 'psi':
-            return '$\psi$'
-        elif self.name == 'phase':
-            return '$\phi$'
-        elif self.name == 'tc':
-            return '$t_c$'
-        elif self.name == 'geocent_time':
-            return '$t_c$'
+        default_labels = {
+            'mass_1': '$m_1$',
+            'mass_2': '$m_2$',
+            'mchirp': '$\mathcal{M}$',
+            'q': '$q$',
+            'a_1': '$a_1$',
+            'a_2': '$a_2$',
+            'tilt_1': '$\\theta_1$',
+            'tilt_2': '$\\theta_2$',
+            'phi_12': '$\Delta\phi$',
+            'phi_jl': '$\phi_{JL}$',
+            'luminosity_distance': '$d_L$',
+            'dec': '$\mathrm{DEC}$',
+            'ra': '$\mathrm{RA}$',
+            'iota': '$\iota$',
+            'psi': '$\psi$',
+            'phase': '$\phi$',
+            'tc': '$t_c$',
+            'geocent_time': '$t_c$'
+        }
+        if self.name in default_labels.keys():
+            label = default_labels[self.name]
         else:
-            return self.name
+            label = self.name
+        return label
 
 
 class Uniform(Prior):
@@ -364,38 +351,41 @@ def fix(prior, value=None):
 
 
 def create_default_prior(name):
-    if name == 'mass_1':
-        prior = PowerLaw(name=name, alpha=0, minimum=5, maximum=100)
-    elif name == 'mass_2':
-        prior = PowerLaw(name=name, alpha=0, minimum=5, maximum=100)
-    elif name == 'mchirp':
-        prior = Uniform(name=name, minimum=5, maximum=100)
-    elif name == 'q':
-        prior = Uniform(name=name, minimum=0, maximum=1)
-    elif name == 'a_1':
-        prior = Uniform(name=name, minimum=0, maximum=0.8)
-    elif name == 'a_2':
-        prior = Uniform(name=name, minimum=0, maximum=0.8)
-    elif name == 'tilt_1':
-        prior = Sine(name=name)
-    elif name == 'tilt_2':
-        prior = Sine(name=name)
-    elif name == 'phi_12':
-        prior = Uniform(name=name, minimum=0, maximum=2 * np.pi)
-    elif name == 'phi_jl':
-        prior = Uniform(name=name, minimum=0, maximum=2 * np.pi)
-    elif name == 'luminosity_distance':
-        prior = UniformComovingVolume(name=name, minimum=1e2, maximum=5e3)
-    elif name == 'dec':
-        prior = Cosine(name=name)
-    elif name == 'ra':
-        prior = Uniform(name=name, minimum=0, maximum=2 * np.pi)
-    elif name == 'iota':
-        prior = Sine(name=name)
-    elif name == 'psi':
-        prior = Uniform(name=name, minimum=0, maximum=2 * np.pi)
-    elif name == 'phase':
-        prior = Uniform(name=name, minimum=0, maximum=2 * np.pi)
+    """
+    Make a default prior for a parameter with a known name.
+
+    This is currently set up for binary black holes.
+
+    Parameters
+    ----------
+    name: str
+        Parameter name
+
+    Return
+    ------
+    prior: Prior
+        Default prior distribution for that parameter, if unknown None is returned.
+    """
+    default_priors = {
+        'mass_1': PowerLaw(name=name, alpha=0, minimum=5, maximum=100),
+        'mass_2': PowerLaw(name=name, alpha=0, minimum=5, maximum=100),
+        'mchirp': Uniform(name=name, minimum=5, maximum=100),
+        'q': Uniform(name=name, minimum=0, maximum=1),
+        'a_1': Uniform(name=name, minimum=0, maximum=0.8),
+        'a_2': Uniform(name=name, minimum=0, maximum=0.8),
+        'tilt_1': Sine(name=name),
+        'tilt_2': Sine(name=name),
+        'phi_12': Uniform(name=name, minimum=0, maximum=2 * np.pi),
+        'phi_jl': Uniform(name=name, minimum=0, maximum=2 * np.pi),
+        'luminosity_distance': UniformComovingVolume(name=name, minimum=1e2, maximum=5e3),
+        'dec': Cosine(name=name),
+        'ra': Uniform(name=name, minimum=0, maximum=2 * np.pi),
+        'iota': Sine(name=name),
+        'psi': Uniform(name=name, minimum=0, maximum=2 * np.pi),
+        'phase': Uniform(name=name, minimum=0, maximum=2 * np.pi)
+    }
+    if name in default_priors.keys():
+        prior = default_priors[name]
     else:
         prior = None
     return prior
-- 
GitLab