From 24bcc44f30671670b67f7b197b3f3648116bc2b4 Mon Sep 17 00:00:00 2001
From: Gregory Ashton <gregory.ashton@ligo.org>
Date: Fri, 5 Jun 2020 09:23:53 -0500
Subject: [PATCH] Changes to the waveform generator

1) Default to the BBH conversion function
2) Print a summary of the various methods used by the WFG
3) Downgrade the warning message about the wfg time
4) Remove the default conversion (do nothing function)
---
 bilby/core/utils.py             |  7 +++++++
 bilby/gw/likelihood.py          |  2 +-
 bilby/gw/waveform_generator.py  | 18 ++++++++++++------
 test/waveform_generator_test.py |  4 ++--
 4 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/bilby/core/utils.py b/bilby/core/utils.py
index 6797fe82..d4704ae5 100644
--- a/bilby/core/utils.py
+++ b/bilby/core/utils.py
@@ -1236,6 +1236,13 @@ def kish_log_effective_sample_size(ln_weights):
     return log_n_eff
 
 
+def get_function_path(func):
+    if hasattr(func, "__module__") and hasattr(func, "__name__"):
+        return "{}.{}".format(func.__module__, func.__name__)
+    else:
+        return func
+
+
 class IllegalDurationAndSamplingFrequencyException(Exception):
     pass
 
diff --git a/bilby/gw/likelihood.py b/bilby/gw/likelihood.py
index 25d0c37e..f3291777 100644
--- a/bilby/gw/likelihood.py
+++ b/bilby/gw/likelihood.py
@@ -196,7 +196,7 @@ class GravitationalWaveTransient(Likelihood):
                     "The waveform_generator {} is None. Setting from the "
                     "provided interferometers.".format(attr))
             elif wfg_attr != ifo_attr:
-                logger.warning(
+                logger.debug(
                     "The waveform_generator {} is not equal to that of the "
                     "provided interferometers. Overwriting the "
                     "waveform_generator.".format(attr))
diff --git a/bilby/gw/waveform_generator.py b/bilby/gw/waveform_generator.py
index ace07035..89432314 100644
--- a/bilby/gw/waveform_generator.py
+++ b/bilby/gw/waveform_generator.py
@@ -3,6 +3,7 @@ import numpy as np
 from ..core import utils
 from ..core.series import CoupledTimeAndFrequencySeries
 from .utils import PropertyAccessor
+from .conversion import convert_to_lal_binary_black_hole_parameters
 
 
 class WaveformGenerator(object):
@@ -57,7 +58,7 @@ class WaveformGenerator(object):
         self.time_domain_source_model = time_domain_source_model
         self.source_parameter_keys = self.__parameters_from_source_model()
         if parameter_conversion is None:
-            self.parameter_conversion = _default_parameter_conversion
+            self.parameter_conversion = convert_to_lal_binary_black_hole_parameters
         else:
             self.parameter_conversion = parameter_conversion
         if waveform_arguments is not None:
@@ -67,6 +68,15 @@ class WaveformGenerator(object):
         if isinstance(parameters, dict):
             self.parameters = parameters
         self._cache = dict(parameters=None, waveform=None, model=None)
+        utils.logger.info(
+            "Waveform generator initiated with\n"
+            "  frequency_domain_source_model: {}\n"
+            "  frequency_domain_source_model: {}\n"
+            "  parameter_conversion: {}"
+            .format(utils.get_function_path(self.frequency_domain_source_model),
+                    utils.get_function_path(self.time_domain_source_model),
+                    utils.get_function_path(self.parameter_conversion))
+        )
 
     def __repr__(self):
         if self.frequency_domain_source_model is not None:
@@ -77,7 +87,7 @@ class WaveformGenerator(object):
             tdsm_name = self.time_domain_source_model.__name__
         else:
             tdsm_name = None
-        if self.parameter_conversion.__name__ == '_default_parameter_conversion':
+        if self.parameter_conversion is None:
             param_conv_name = None
         else:
             param_conv_name = self.parameter_conversion.__name__
@@ -237,7 +247,3 @@ class WaveformGenerator(object):
             raise AttributeError('Either time or frequency domain source '
                                  'model must be provided.')
         return set(utils.infer_parameters_from_function(model))
-
-
-def _default_parameter_conversion(parmeters):
-    return parmeters, list()
diff --git a/test/waveform_generator_test.py b/test/waveform_generator_test.py
index 69e3112c..d759c2f9 100644
--- a/test/waveform_generator_test.py
+++ b/test/waveform_generator_test.py
@@ -73,7 +73,7 @@ class TestWaveformGeneratorInstantiationWithoutOptionalParameters(unittest.TestC
                 self.waveform_generator.start_time,
                 self.waveform_generator.frequency_domain_source_model.__name__,
                 self.waveform_generator.time_domain_source_model,
-                None,
+                bilby.gw.conversion.convert_to_lal_binary_black_hole_parameters.__name__,
                 self.waveform_generator.waveform_arguments,
             )
         )
@@ -92,7 +92,7 @@ class TestWaveformGeneratorInstantiationWithoutOptionalParameters(unittest.TestC
                 self.waveform_generator.start_time,
                 self.waveform_generator.frequency_domain_source_model,
                 self.waveform_generator.time_domain_source_model.__name__,
-                None,
+                bilby.gw.conversion.convert_to_lal_binary_black_hole_parameters.__name__,
                 self.waveform_generator.waveform_arguments,
             )
         )
-- 
GitLab