From c7c8c5f89f753d4105cf87ec8c737e483cdaaa23 Mon Sep 17 00:00:00 2001
From: Gregory Ashton <gregory.ashton@ligo.org>
Date: Fri, 3 May 2019 22:14:59 +1000
Subject: [PATCH] Wrap imports in try/except

---
 bilby/gw/result.py | 31 ++++++++++++++-----------------
 1 file changed, 14 insertions(+), 17 deletions(-)

diff --git a/bilby/gw/result.py b/bilby/gw/result.py
index ef150019b..037ccfbb3 100644
--- a/bilby/gw/result.py
+++ b/bilby/gw/result.py
@@ -1,6 +1,7 @@
 from __future__ import division
 
 import json
+import pickle
 import os
 
 import matplotlib.pyplot as plt
@@ -191,7 +192,8 @@ class CompactBinaryCoalesenceResult(CoreResult):
         """ Generate a fits file and sky map from a result
 
         Code adapted from ligo.skymap.tool.ligo_skymap_from_samples and
-        ligo.skymap.tool.plot_skymap
+        ligo.skymap.tool.plot_skymap. Note, the use of this additionally
+        required the installation of ligo.skymap.
 
         Parameters
         ----------
@@ -223,18 +225,13 @@ class CompactBinaryCoalesenceResult(CoreResult):
             Name of the colormap to use
         """
 
-        from ligo.skymap import io
-        from ligo.skymap.bayestar import rasterize
-        from ligo.skymap import version
-        from astropy.time import Time
-        import numpy as np
-        import os
-        import pickle
-        from ligo.skymap.kde import Clustered2Plus1DSkyKDE, Clustered2DSkyKDE
-        import healpy as hp
-        from ligo.skymap.io import fits
-        from ligo.skymap import plot
-        from ligo.skymap import postprocess
+        try:
+            from astropy.time import Time
+            from ligo.skymap import io, version, plot, postprocess, bayestar, kde
+            import healpy as hp
+        except ImportError as e:
+            logger.info("Unable to generate skymap: error {}".format(e))
+            return
 
         check_directory_exists_and_if_not_mkdir(self.outdir)
 
@@ -247,12 +244,12 @@ class CompactBinaryCoalesenceResult(CoreResult):
 
         try:
             pts = data[['ra', 'dec', 'luminosity_distance']].values
-            cls = Clustered2Plus1DSkyKDE
+            cls = kde.Clustered2Plus1DSkyKDE
             distance = True
         except KeyError:
             logger.warning("The results file does not contain luminosity_distance")
             pts = data[['ra', 'dec']].values
-            cls = Clustered2DSkyKDE
+            cls = kde.Clustered2DSkyKDE
             distance = False
 
         logger.info('Initialising skymap class')
@@ -266,7 +263,7 @@ class CompactBinaryCoalesenceResult(CoreResult):
         logger.info('Making skymap')
         hpmap = skypost.as_healpix()
         if not enable_multiresolution:
-            hpmap = rasterize(hpmap)
+            hpmap = bayestar.rasterize(hpmap)
 
         hpmap.meta.update(io.fits.metadata_for_version_module(version))
         hpmap.meta['creator'] = "bilby"
@@ -291,7 +288,7 @@ class CompactBinaryCoalesenceResult(CoreResult):
         logger.info('Saving skymap fits-file to {}'.format(fits_filename))
         io.write_sky_map(fits_filename, hpmap, nest=True)
 
-        skymap, metadata = fits.read_sky_map(fits_filename, nest=None)
+        skymap, metadata = io.fits.read_sky_map(fits_filename, nest=None)
         nside = hp.npix2nside(len(skymap))
 
         # Convert sky map from probability to probability per square degree.
-- 
GitLab