From b538795d917b345dcb3a47684bbb146046fb8224 Mon Sep 17 00:00:00 2001 From: Tanner Prestegard <tanner.prestegard@ligo.org> Date: Wed, 5 Sep 2018 12:43:01 -0500 Subject: [PATCH] Adding handling for nan values in eff_distance gstlal wants to set eff_distance to nan when they don't have a meaningful value for it. Unfortunately, we can't save that in the database because MySQL numeric types can't deal with nans. So we check for nans in this field and set it to NULL if it is nan, before saving it in the database. --- gracedb/events/models.py | 9 ++++++++- gracedb/templates/gracedb/event_detail_coinc.html | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gracedb/events/models.py b/gracedb/events/models.py index c0b12f6cf..1c7a9c260 100644 --- a/gracedb/events/models.py +++ b/gracedb/events/models.py @@ -1,3 +1,5 @@ +from math import isnan + from django.db import models, IntegrityError from django.urls import reverse @@ -986,12 +988,17 @@ class SingleInspiral(models.Model): #log.debug("Single/creating event") for f in [cls._meta.get_field(f) for f in cls.field_names()]: value = getattr(row, f.attname, f.default) + + # Handle nan for eff_distance + if f.attname == 'eff_distance' and isnan(value): + value = None + # Only set value of class instance member if # value is not None or if field is nullable. # Otherwise we could overwrite non-nullable fields # which have default values with None. if value is not None or f.null: - #log.debug("Setting column '%s' with value '%s'" % (column, value)) + #log.debug("Setting column '%s' with value '%s'" % (f.attname, value)) setattr(e, f.attname, value) e.save() created_events.append(e) diff --git a/gracedb/templates/gracedb/event_detail_coinc.html b/gracedb/templates/gracedb/event_detail_coinc.html index ea053c6eb..ac8c5e426 100644 --- a/gracedb/templates/gracedb/event_detail_coinc.html +++ b/gracedb/templates/gracedb/event_detail_coinc.html @@ -93,7 +93,11 @@ <tr> <th>Effective Distance</th> {% for e in single_inspiral_events %} - <td>{{ e.eff_distance }} Mpc</td> + <td> + {% if e.eff_distance %} + {{ e.eff_distance }} Mpc + {% endif %} + </td> {% endfor %} </tr> <tr> -- GitLab