From a763d572782abbd7bdc3979445566416568aca6d Mon Sep 17 00:00:00 2001
From: David Keitel <david.keitel@ligo.org>
Date: Mon, 30 Apr 2018 16:02:28 +0100
Subject: [PATCH] internal timing of transient F-stat map function

---
 pyfstat/core.py                | 2 +-
 pyfstat/grid_based_searches.py | 4 ++++
 pyfstat/tcw_fstat_map_funcs.py | 5 ++++-
 3 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/pyfstat/core.py b/pyfstat/core.py
index 4bf5ae1..a3b6b31 100755
--- a/pyfstat/core.py
+++ b/pyfstat/core.py
@@ -714,7 +714,7 @@ class ComputeFstat(BaseSearchClass):
             # actual (t0,tau) window was set with tstart, tend before
             self.windowRange.tau = int(tend - tstart)  # TYPE UINT4
 
-        self.FstatMap = tcw.call_compute_transient_fstat_map(
+        self.FstatMap, self.timingFstatMap = tcw.call_compute_transient_fstat_map(
             self.tCWFstatMapVersion, self.tCWFstatMapFeatures,
             self.FstatResults.multiFatoms[0], self.windowRange)
         if self.tCWFstatMapVersion == 'lal':
diff --git a/pyfstat/grid_based_searches.py b/pyfstat/grid_based_searches.py
index 3a2a4cd..df4c9d5 100644
--- a/pyfstat/grid_based_searches.py
+++ b/pyfstat/grid_based_searches.py
@@ -459,10 +459,12 @@ class TransientGridSearch(GridSearch):
             tCWfilebase = os.path.splitext(self.out_file)[0] + '_tCW_'
             logging.info('Will save per-Doppler Fstatmap' \
                          ' results to {}*.dat'.format(tCWfilebase))
+        self.timingFstatMap = 0.
         for vals in tqdm(self.input_data):
             detstat = self.search.get_det_stat(*vals)
             windowRange = getattr(self.search, 'windowRange', None)
             FstatMap = getattr(self.search, 'FstatMap', None)
+            self.timingFstatMap += getattr(self.search, 'timingFstatMap', None)
             thisCand = list(vals) + [detstat]
             if getattr(self, 'transientWindowType', None):
                 if self.tCWFstatMapVersion == 'lal':
@@ -491,6 +493,8 @@ class TransientGridSearch(GridSearch):
             if self.outputAtoms:
                 self.search.write_atoms_to_file(os.path.splitext(self.out_file)[0])
 
+        logging.info('Total time spent computing transient F-stat maps: {:.2f}s'.format(self.timingFstatMap))
+
         data = np.array(data, dtype=np.float)
         if return_data:
             return data
diff --git a/pyfstat/tcw_fstat_map_funcs.py b/pyfstat/tcw_fstat_map_funcs.py
index 7d7728a..5a05cba 100644
--- a/pyfstat/tcw_fstat_map_funcs.py
+++ b/pyfstat/tcw_fstat_map_funcs.py
@@ -3,6 +3,7 @@
 import numpy as np
 import os
 import logging
+from time import time
 
 # optional imports
 import importlib as imp
@@ -185,14 +186,16 @@ def call_compute_transient_fstat_map ( version,
 
     if version in fstatmap_versions:
         if features[version]:
+            time0 = time()
             FstatMap = fstatmap_versions[version](multiFstatAtoms, windowRange)
+            timingFstatMap = time()-time0
         else:
             raise Exception('Required module(s) for transient F-stat map' \
                             ' method "{}" not available!'.format(version))
     else:
         raise Exception('Transient F-stat map method "{}"' \
                         ' not implemented!'.format(version))
-    return FstatMap
+    return FstatMap, timingFstatMap
 
 
 def reshape_FstatAtomsVector ( atomsVector ):
-- 
GitLab