Skip to content
Snippets Groups Projects

Reenable combined sky maps now using multi-ordering

Compare and
6 files
+ 45
15
Compare changes
  • Side-by-side
  • Inline
Files
6
@@ -6,10 +6,10 @@ from celery import group
# import astropy.utils.data
import numpy as np
from ligo.skymap.io import fits
from ligo.skymap.tool import ligo_skymap_combine
import gcn
import healpy as hp
import lxml.etree
from mhealpy import HealpixMap
import re
import ssl
import urllib
@@ -30,28 +30,29 @@ def create_combined_skymap(se_id, ext_id):
"""
se_skymap_filename = get_skymap_filename(se_id)
ext_skymap_filename = get_skymap_filename(ext_id)
new_skymap_filename = re.findall(r'(.*).fits.gz', se_skymap_filename)[0]
# FIXME: put download functions in canvas
se_skymap = gracedb.download(se_skymap_filename, se_id)
ext_skymap = gracedb.download(ext_skymap_filename, ext_id)
message = 'Combined LVC-external sky map using {0} and {1}'.format(
se_skymap_filename, ext_skymap_filename)
message_png = (
'Mollweide projection of <a href="/api/events/{graceid}/files/'
'{filename}">{filename}</a>').format(
graceid=se_id, filename=new_skymap_filename + '-ext.fits.gz')
graceid=se_id,
filename='combined-ext.multiorder.fits')
(
combine_skymaps.si(se_skymap, ext_skymap)
_download_skymaps.si(
se_skymap_filename, ext_skymap_filename, se_id, ext_id
)
|
combine_skymaps.s()
|
group(
gracedb.upload.s(new_skymap_filename + '-ext.fits.gz', se_id,
gracedb.upload.s('combined-ext.multiorder.fits', se_id,
message, ['sky_loc', 'public']),
skymaps.plot_allsky.s()
|
gracedb.upload.s(new_skymap_filename + '-ext.png', se_id,
gracedb.upload.s('combined-ext.png', se_id,
message_png, ['sky_loc', 'ext_coinc', 'public'])
)
).delay()
@@ -69,7 +70,7 @@ def get_skymap_filename(graceid):
if 'S' in graceid:
for message in reversed(gracedb_log):
filename = message['filename']
if filename.endswith('.fits.gz'):
if filename.endswith('.multiorder.fits'):
return filename
else:
for message in reversed(gracedb_log):
@@ -81,17 +82,28 @@ def get_skymap_filename(graceid):
@app.task(shared=False)
def combine_skymaps(skymap1filebytes, skymap2filebytes):
def _download_skymaps(se_filename, ext_filename, se_id, ext_id):
"""Download both superevent and external sky map to be combined."""
se_skymap = gracedb.download(se_filename, se_id)
ext_skymap = gracedb.download(ext_filename, ext_id)
return se_skymap, ext_skymap
@app.task(shared=False)
def combine_skymaps(skymapfilesbytes):
"""This task combines the two input skymaps, in this case the external
trigger skymap and the LVC skymap and writes to a temporary output file. It
then returns the contents of the file as a byte array.
"""
skymap1filebytes, skymap2filebytes = skymapfilebytes
with NamedTemporaryFile(mode='rb', suffix='.fits.gz') as combinedskymap, \
NamedTemporaryFile(content=skymap1filebytes) as skymap1file, \
NamedTemporaryFile(content=skymap2filebytes) as skymap2file, \
handling_system_exit():
ligo_skymap_combine.main([skymap1file.name,
skymap2file.name, combinedskymap.name])
sky1 = HealpixMap.read_map(skymap1file.name, density=True)
sky2 = HealpixMap.read_map(skymap2file.name, density=False)
comb_sky = sky1 * sky2
comb_sky.write_map(combinedskymap.name)
return combinedskymap.read()
Loading