diff --git a/LCU/Maintenance/DBInterface/monitoringdb/models/rtsm.py b/LCU/Maintenance/DBInterface/monitoringdb/models/rtsm.py index f684b81c2d4a87828d7a09db47f245e9f65cd576..16c28c62ad3ec6fae15d014798f80bbc696ab050 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/models/rtsm.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/models/rtsm.py @@ -7,7 +7,7 @@ from .station import Station from .fixed_types import STATION_TYPES -MODE_TO_COMPONENT = { +MODE_TO_COMPONENT = { 1: 'LBL', 2: 'LBL', 3: 'LBH', @@ -17,6 +17,12 @@ MODE_TO_COMPONENT = { 7: 'HBA' } +COMPONENT_TO_MODE = { + 'LBL': [1, 2], + 'LBH': [3, 4], + 'HBA': [5, 6, 7] +} + class RTSMObservation(models.Model): observation_id = models.PositiveIntegerField(default=0) diff --git a/LCU/Maintenance/DBInterface/monitoringdb/tasks.py b/LCU/Maintenance/DBInterface/monitoringdb/tasks.py index fdb75db4f65ac2a000d8c115824a4636f3c3d0ff..b89b200c7145766bb1c59b9676c3540c35dc2346 100644 --- a/LCU/Maintenance/DBInterface/monitoringdb/tasks.py +++ b/LCU/Maintenance/DBInterface/monitoringdb/tasks.py @@ -1,28 +1,33 @@ import logging import os +import matplotlib + +matplotlib.use('agg') import matplotlib.pyplot as plt import numpy from celery import shared_task from django.conf import settings -from celery.signals import task_prerun -from lofar.maintenance.django_postgresql import backend_tasks -from .models.rtsm import RTSMObservation, MODE_TO_COMPONENT, RTSMErrorSummary, RTSMSummaryPlot +from .models.rtsm import MODE_TO_COMPONENT, RTSMErrorSummary, RTSMSummaryPlot logger = logging.getLogger(__name__) -@shared_task -def greetings(name): - logger.info('greetings from celerity mr/ms %s', name) - - class Metadata: def __init__(self, **kwargs): for key, value in kwargs.items(): self.__setattr__(key, value) +MODE_STR = {1: 'LBA Low 10..90 MHz', + 2: 'LBA Low 30..90', + 3: 'LBA High 10..90', + 4: 'LBA High 30..90', + 5: 'HBA 110..190', + 6: 'HBA 170..230', + 7: 'HBA 210..250'} + + class ObservationMetadata(Metadata): station_name = 'CSXXXC' @@ -31,14 +36,15 @@ class ObservationMetadata(Metadata): observation_id = 'XXXXXX' samples = 120 + @staticmethod + def __format_datetime(datetime): + return datetime.strftime("%Y-%m-%d %H:%M:%S") + + def set_start_time(self, start_time): + self.start_datetime = ObservationMetadata.__format_datetime(start_time) -class ErrorMetadata(Metadata): - error_type = '' - rcu_id = '' - mode = 0 - count = '' - start_frequency = 0 - stop_frequency = 0 + def set_end_time(self, end_time): + self.end_datetime = ObservationMetadata.__format_datetime(end_time) def set_style(): @@ -95,7 +101,8 @@ def render_summary_text(error_metadata, observation_metadata): rendered_text += 'Samples : {count:d}/{samples:d}\n'.format(count=error_metadata.count, samples=observation_metadata.samples) - rendered_text += 'Mode : {:<25d}'.format(error_metadata.mode) + rendered_text += 'Mode : {:<1d} {:<23s}'.format(error_metadata.mode, + MODE_STR[error_metadata.mode]) rendered_text += 'Badness : {:.2f} %\n'.format( (100. * error_metadata.count) / observation_metadata.samples) return rendered_text @@ -114,8 +121,6 @@ def produce_plot(observation_metadata, :param list_good_specta: the average spectrum of the rest of the array :param path: the path where to store the file """ - plt.switch_backend('agg') - plt.figure(figsize=(12, 9)) set_style() @@ -188,6 +193,9 @@ def generate_summary_plot_for_error(error_summary_id): observation = error_summary.observation observation_metadata.observation_id = observation.observation_id observation_metadata.station_name = observation.station.name + observation_metadata.set_start_time(observation.start_datetime) + observation_metadata.set_end_time(observation.end_datetime) + observation_metadata.samples = observation.samples errors = observation.errors.filter(mode=error_summary.mode, rcu=error_summary.rcu, @@ -242,5 +250,6 @@ def check_error_summary_plot(error_summary_id): elif os.path.isdir(full_path): raise Exception('%s is a directory' % full_path) else: - logger.debug('summary error %s is complete no need to generate additional plot', summary_plot.pk) + logger.debug('summary error %s is complete no need to generate additional plot', + summary_plot.pk) return summary_plot.pk