From bcd55b435c55bfd113e4d37c1252b6e8a13c7b16 Mon Sep 17 00:00:00 2001 From: Bradley Sappington <101193271+BradleySappington@users.noreply.github.com> Date: Wed, 17 Apr 2024 16:16:17 -0400 Subject: [PATCH] 1.2.7 prep (#1543) * Update CHANGES.rst for 1.2.6 * Update CHANGES.rst format * name fix * remove 1.2.6 * Adding change log for next release * Import monitor models in model_pages __init__.py (#1542) * import in __init__.py * Add migration 0022 with EDB monitor model definitions * Update CHANGES.rst 1.2.7 prep --------- Co-authored-by: Mees Fix Co-authored-by: Bryan Hilbert --- CHANGES.rst | 11 + ...ts_nirspecedbtimeintervalstats_and_more.py | 1099 +++++++++++++++++ .../apps/jwql/monitor_pages/__init__.py | 33 + 3 files changed, 1143 insertions(+) create mode 100644 jwql/website/apps/jwql/migrations/0022_nirspecedbtimestats_nirspecedbtimeintervalstats_and_more.py diff --git a/CHANGES.rst b/CHANGES.rst index d62e0110e..e5f3bed31 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,5 +1,16 @@ ## What's Changed +1.2.7 (2024-04-18) +================== + +Web Application +~~~~~~~~~~~~~~~ + +Project & API Documentation +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +- Import monitor models by @bhilbert4 + + 1.2.6 (2024-04-15) ================== diff --git a/jwql/website/apps/jwql/migrations/0022_nirspecedbtimestats_nirspecedbtimeintervalstats_and_more.py b/jwql/website/apps/jwql/migrations/0022_nirspecedbtimestats_nirspecedbtimeintervalstats_and_more.py new file mode 100644 index 000000000..19b4dd955 --- /dev/null +++ b/jwql/website/apps/jwql/migrations/0022_nirspecedbtimestats_nirspecedbtimeintervalstats_and_more.py @@ -0,0 +1,1099 @@ +# Generated by Django 4.2.5 on 2024-04-17 17:44 + +import django.contrib.postgres.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('jwql', '0021_alter_rootfileinfo_read_patt_num'), + ] + + operations = [ + migrations.CreateModel( + name='NIRSpecEdbTimeStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'nirspec_edb_time_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRSpecEdbTimeIntervalStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'nirspec_edb_time_interval_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRSpecEdbEveryChangeStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('time', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('mnemonic_value', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', models.FloatField(blank=True, null=True)), + ('stdev', models.FloatField(blank=True, null=True)), + ('dependency_mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('dependency_value', models.CharField(blank=True, max_length=40, null=True)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'nirspec_edb_every_change_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRSpecEdbDailyStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'nirspec_edb_daily_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRSpecEdbBlocksStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'nirspec_edb_blocks_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRSpecDarkQueryHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('instrument', models.CharField(blank=True, max_length=7, null=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('readpattern', models.CharField(blank=True, max_length=40, null=True)), + ('start_time_mjd', models.FloatField(blank=True, null=True)), + ('end_time_mjd', models.FloatField(blank=True, null=True)), + ('files_found', models.IntegerField(blank=True, null=True)), + ('run_monitor', models.BooleanField(blank=True, null=True)), + ], + options={ + 'db_table': 'nirspec_dark_query_history', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRSpecDarkPixelStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('detector', models.CharField(blank=True, max_length=40, null=True)), + ('x_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('y_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('type', models.CharField(blank=True, max_length=40, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('mean_dark_image_file', models.CharField(max_length=1000, null=True)), + ('baseline_file', models.CharField(max_length=1000, null=True)), + ], + options={ + 'db_table': 'nirspec_dark_pixel_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRSpecDarkDarkCurrent', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('amplifier', models.CharField(blank=True, max_length=40, null=True)), + ('readpattern', models.CharField(blank=True, max_length=40, null=True)), + ('mean', models.FloatField(blank=True, null=True)), + ('stdev', models.FloatField(blank=True, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('gauss_amplitude', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_peak', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_width', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_chisq', models.FloatField(blank=True, null=True)), + ('double_gauss_amplitude1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_peak1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_width1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_amplitude2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_peak2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_width2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_chisq', models.FloatField(blank=True, null=True)), + ('mean_dark_image_file', models.CharField(max_length=1000, null=True)), + ('hist_dark_values', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('hist_amplitudes', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ], + options={ + 'db_table': 'nirspec_dark_dark_current', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRSpecBadPixelStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('detector', models.CharField(blank=True, max_length=40, null=True)), + ('x_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('y_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('type', models.CharField(blank=True, max_length=40, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('baseline_file', models.CharField(max_length=1000, null=True)), + ], + options={ + 'db_table': 'nirspec_bad_pixel_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRSpecBadPixelQueryHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('instrument', models.CharField(blank=True, max_length=7, null=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('dark_start_time_mjd', models.FloatField(blank=True, null=True)), + ('dark_end_time_mjd', models.FloatField(blank=True, null=True)), + ('flat_start_time_mjd', models.FloatField(blank=True, null=True)), + ('flat_end_time_mjd', models.FloatField(blank=True, null=True)), + ('dark_files_found', models.IntegerField(blank=True, null=True)), + ('flat_files_found', models.IntegerField(blank=True, null=True)), + ('run_bpix_from_darks', models.BooleanField(blank=True, null=True)), + ('run_bpix_from_flats', models.BooleanField(blank=True, null=True)), + ('run_monitor', models.BooleanField(blank=True, null=True)), + ], + options={ + 'db_table': 'nirspec_bad_pixel_query_history', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRISSEdbTimeStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'niriss_edb_time_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRISSEdbTimeIntervalStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'niriss_edb_time_interval_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRISSEdbEveryChangeStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('time', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('mnemonic_value', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', models.FloatField(blank=True, null=True)), + ('stdev', models.FloatField(blank=True, null=True)), + ('dependency_mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('dependency_value', models.CharField(blank=True, max_length=40, null=True)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'niriss_edb_every_change_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRISSEdbDailyStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'niriss_edb_daily_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRISSEdbBlocksStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'niriss_edb_blocks_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRISSDarkQueryHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('instrument', models.CharField(blank=True, max_length=7, null=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('readpattern', models.CharField(blank=True, max_length=40, null=True)), + ('start_time_mjd', models.FloatField(blank=True, null=True)), + ('end_time_mjd', models.FloatField(blank=True, null=True)), + ('files_found', models.IntegerField(blank=True, null=True)), + ('run_monitor', models.BooleanField(blank=True, null=True)), + ], + options={ + 'db_table': 'niriss_dark_query_history', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRISSDarkPixelStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('detector', models.CharField(blank=True, max_length=40, null=True)), + ('x_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('y_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('type', models.CharField(blank=True, max_length=40, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('mean_dark_image_file', models.CharField(max_length=1000, null=True)), + ('baseline_file', models.CharField(max_length=1000, null=True)), + ], + options={ + 'db_table': 'niriss_dark_pixel_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRISSDarkDarkCurrent', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('amplifier', models.CharField(blank=True, max_length=40, null=True)), + ('readpattern', models.CharField(blank=True, max_length=40, null=True)), + ('mean', models.FloatField(blank=True, null=True)), + ('stdev', models.FloatField(blank=True, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('gauss_amplitude', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_peak', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_width', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_chisq', models.FloatField(blank=True, null=True)), + ('double_gauss_amplitude1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_peak1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_width1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_amplitude2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_peak2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_width2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_chisq', models.FloatField(blank=True, null=True)), + ('mean_dark_image_file', models.CharField(max_length=1000, null=True)), + ('hist_dark_values', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('hist_amplitudes', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ], + options={ + 'db_table': 'niriss_dark_dark_current', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRISSBadPixelStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('detector', models.CharField(blank=True, max_length=40, null=True)), + ('x_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('y_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('type', models.CharField(blank=True, max_length=40, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('baseline_file', models.CharField(max_length=1000, null=True)), + ], + options={ + 'db_table': 'niriss_bad_pixel_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRISSBadPixelQueryHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('instrument', models.CharField(blank=True, max_length=7, null=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('dark_start_time_mjd', models.FloatField(blank=True, null=True)), + ('dark_end_time_mjd', models.FloatField(blank=True, null=True)), + ('flat_start_time_mjd', models.FloatField(blank=True, null=True)), + ('flat_end_time_mjd', models.FloatField(blank=True, null=True)), + ('dark_files_found', models.IntegerField(blank=True, null=True)), + ('flat_files_found', models.IntegerField(blank=True, null=True)), + ('run_bpix_from_darks', models.BooleanField(blank=True, null=True)), + ('run_bpix_from_flats', models.BooleanField(blank=True, null=True)), + ('run_monitor', models.BooleanField(blank=True, null=True)), + ], + options={ + 'db_table': 'niriss_bad_pixel_query_history', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRCamEdbTimeStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'nircam_edb_time_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRCamEdbTimeIntervalStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'nircam_edb_time_interval_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRCamEdbEveryChangeStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('time', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('mnemonic_value', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', models.FloatField(blank=True, null=True)), + ('stdev', models.FloatField(blank=True, null=True)), + ('dependency_mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('dependency_value', models.CharField(blank=True, max_length=40, null=True)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'nircam_edb_every_change_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRCamEdbDailyStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'nircam_edb_daily_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRCamEdbBlocksStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'nircam_edb_blocks_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRCamDarkQueryHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('instrument', models.CharField(blank=True, max_length=7, null=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('readpattern', models.CharField(blank=True, max_length=40, null=True)), + ('start_time_mjd', models.FloatField(blank=True, null=True)), + ('end_time_mjd', models.FloatField(blank=True, null=True)), + ('files_found', models.IntegerField(blank=True, null=True)), + ('run_monitor', models.BooleanField(blank=True, null=True)), + ], + options={ + 'db_table': 'nircam_dark_query_history', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRCamDarkPixelStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('detector', models.CharField(blank=True, max_length=40, null=True)), + ('x_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('y_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('type', models.CharField(blank=True, max_length=40, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('mean_dark_image_file', models.CharField(max_length=1000, null=True)), + ('baseline_file', models.CharField(max_length=1000, null=True)), + ], + options={ + 'db_table': 'nircam_dark_pixel_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRCamDarkDarkCurrent', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('amplifier', models.CharField(blank=True, max_length=40, null=True)), + ('readpattern', models.CharField(blank=True, max_length=40, null=True)), + ('mean', models.FloatField(blank=True, null=True)), + ('stdev', models.FloatField(blank=True, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('gauss_amplitude', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_peak', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_width', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_chisq', models.FloatField(blank=True, null=True)), + ('double_gauss_amplitude1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_peak1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_width1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_amplitude2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_peak2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_width2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_chisq', models.FloatField(blank=True, null=True)), + ('mean_dark_image_file', models.CharField(max_length=1000, null=True)), + ('hist_dark_values', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('hist_amplitudes', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ], + options={ + 'db_table': 'nircam_dark_dark_current', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRCamBadPixelStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('detector', models.CharField(blank=True, max_length=40, null=True)), + ('x_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('y_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('type', models.CharField(blank=True, max_length=40, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('baseline_file', models.CharField(max_length=1000, null=True)), + ], + options={ + 'db_table': 'nircam_bad_pixel_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='NIRCamBadPixelQueryHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('instrument', models.CharField(blank=True, max_length=7, null=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('dark_start_time_mjd', models.FloatField(blank=True, null=True)), + ('dark_end_time_mjd', models.FloatField(blank=True, null=True)), + ('flat_start_time_mjd', models.FloatField(blank=True, null=True)), + ('flat_end_time_mjd', models.FloatField(blank=True, null=True)), + ('dark_files_found', models.IntegerField(blank=True, null=True)), + ('flat_files_found', models.IntegerField(blank=True, null=True)), + ('run_bpix_from_darks', models.BooleanField(blank=True, null=True)), + ('run_bpix_from_flats', models.BooleanField(blank=True, null=True)), + ('run_monitor', models.BooleanField(blank=True, null=True)), + ], + options={ + 'db_table': 'nircam_bad_pixel_query_history', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='MIRIEdbTimeStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'miri_edb_time_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='MIRIEdbTimeIntervalStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'miri_edb_time_interval_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='MIRIEdbEveryChangeStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('time', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('mnemonic_value', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', models.FloatField(blank=True, null=True)), + ('stdev', models.FloatField(blank=True, null=True)), + ('dependency_mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('dependency_value', models.CharField(blank=True, max_length=40, null=True)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'miri_edb_every_change_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='MIRIEdbDailyStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'miri_edb_daily_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='MIRIEdbBlocksStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'miri_edb_blocks_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='MIRIDarkQueryHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('instrument', models.CharField(blank=True, max_length=7, null=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('readpattern', models.CharField(blank=True, max_length=40, null=True)), + ('start_time_mjd', models.FloatField(blank=True, null=True)), + ('end_time_mjd', models.FloatField(blank=True, null=True)), + ('files_found', models.IntegerField(blank=True, null=True)), + ('run_monitor', models.BooleanField(blank=True, null=True)), + ], + options={ + 'db_table': 'miri_dark_query_history', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='MIRIDarkPixelStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('detector', models.CharField(blank=True, max_length=40, null=True)), + ('x_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('y_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('type', models.CharField(blank=True, max_length=40, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('mean_dark_image_file', models.CharField(max_length=1000, null=True)), + ('baseline_file', models.CharField(max_length=1000, null=True)), + ], + options={ + 'db_table': 'miri_dark_pixel_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='MIRIDarkDarkCurrent', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('amplifier', models.CharField(blank=True, max_length=40, null=True)), + ('readpattern', models.CharField(blank=True, max_length=40, null=True)), + ('mean', models.FloatField(blank=True, null=True)), + ('stdev', models.FloatField(blank=True, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('gauss_amplitude', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_peak', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_width', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_chisq', models.FloatField(blank=True, null=True)), + ('double_gauss_amplitude1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_peak1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_width1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_amplitude2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_peak2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_width2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_chisq', models.FloatField(blank=True, null=True)), + ('mean_dark_image_file', models.CharField(max_length=1000, null=True)), + ('hist_dark_values', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('hist_amplitudes', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ], + options={ + 'db_table': 'miri_dark_dark_current', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='MIRIBadPixelStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('detector', models.CharField(blank=True, max_length=40, null=True)), + ('x_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('y_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('type', models.CharField(blank=True, max_length=40, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('baseline_file', models.CharField(max_length=1000, null=True)), + ], + options={ + 'db_table': 'miri_bad_pixel_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='MIRIBadPixelQueryHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('instrument', models.CharField(blank=True, max_length=7, null=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('dark_start_time_mjd', models.FloatField(blank=True, null=True)), + ('dark_end_time_mjd', models.FloatField(blank=True, null=True)), + ('flat_start_time_mjd', models.FloatField(blank=True, null=True)), + ('flat_end_time_mjd', models.FloatField(blank=True, null=True)), + ('dark_files_found', models.IntegerField(blank=True, null=True)), + ('flat_files_found', models.IntegerField(blank=True, null=True)), + ('run_bpix_from_darks', models.BooleanField(blank=True, null=True)), + ('run_bpix_from_flats', models.BooleanField(blank=True, null=True)), + ('run_monitor', models.BooleanField(blank=True, null=True)), + ], + options={ + 'db_table': 'miri_bad_pixel_query_history', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='FGSEdbTimeStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'fgs_edb_time_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='FGSEdbTimeIntervalStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'fgs_edb_time_interval_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='FGSEdbEveryChangeStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('time', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('mnemonic_value', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', models.FloatField(blank=True, null=True)), + ('stdev', models.FloatField(blank=True, null=True)), + ('dependency_mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('dependency_value', models.CharField(blank=True, max_length=40, null=True)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'fgs_edb_every_change_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='FGSEdbDailyStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'fgs_edb_daily_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='FGSEdbBlocksStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('mnemonic', models.CharField(blank=True, max_length=40, null=True)), + ('latest_query', models.DateTimeField(blank=True, null=True)), + ('times', django.contrib.postgres.fields.ArrayField(base_field=models.DateTimeField(), size=None)), + ('data', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('stdev', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('median', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('max', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('min', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('entry_date', models.DateTimeField(blank=True, null=True)), + ], + options={ + 'db_table': 'fgs_edb_blocks_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='FGSDarkQueryHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('instrument', models.CharField(blank=True, max_length=7, null=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('readpattern', models.CharField(blank=True, max_length=40, null=True)), + ('start_time_mjd', models.FloatField(blank=True, null=True)), + ('end_time_mjd', models.FloatField(blank=True, null=True)), + ('files_found', models.IntegerField(blank=True, null=True)), + ('run_monitor', models.BooleanField(blank=True, null=True)), + ], + options={ + 'db_table': 'fgs_dark_query_history', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='FGSDarkPixelStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('detector', models.CharField(blank=True, max_length=40, null=True)), + ('x_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('y_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('type', models.CharField(blank=True, max_length=40, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('mean_dark_image_file', models.CharField(max_length=1000, null=True)), + ('baseline_file', models.CharField(max_length=1000, null=True)), + ], + options={ + 'db_table': 'fgs_dark_pixel_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='FGSDarkDarkCurrent', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('amplifier', models.CharField(blank=True, max_length=40, null=True)), + ('readpattern', models.CharField(blank=True, max_length=40, null=True)), + ('mean', models.FloatField(blank=True, null=True)), + ('stdev', models.FloatField(blank=True, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('gauss_amplitude', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_peak', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_width', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('gauss_chisq', models.FloatField(blank=True, null=True)), + ('double_gauss_amplitude1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_peak1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_width1', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_amplitude2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_peak2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_width2', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('double_gauss_chisq', models.FloatField(blank=True, null=True)), + ('mean_dark_image_file', models.CharField(max_length=1000, null=True)), + ('hist_dark_values', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ('hist_amplitudes', django.contrib.postgres.fields.ArrayField(base_field=models.FloatField(), size=None)), + ], + options={ + 'db_table': 'fgs_dark_dark_current', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='FGSBadPixelStats', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('detector', models.CharField(blank=True, max_length=40, null=True)), + ('x_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('y_coord', django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), size=None)), + ('type', models.CharField(blank=True, max_length=40, null=True)), + ('source_files', models.TextField(blank=True, null=True)), + ('obs_start_time', models.DateTimeField(blank=True, null=True)), + ('obs_mid_time', models.DateTimeField(blank=True, null=True)), + ('obs_end_time', models.DateTimeField(blank=True, null=True)), + ('baseline_file', models.CharField(blank=True, max_length=1000, null=True)), + ], + options={ + 'db_table': 'fgs_bad_pixel_stats', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + migrations.CreateModel( + name='FGSBadPixelQueryHistory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('entry_date', models.DateTimeField(unique=True)), + ('instrument', models.CharField(blank=True, max_length=7, null=True)), + ('aperture', models.CharField(blank=True, max_length=40, null=True)), + ('dark_start_time_mjd', models.FloatField(blank=True, null=True)), + ('dark_end_time_mjd', models.FloatField(blank=True, null=True)), + ('flat_start_time_mjd', models.FloatField(blank=True, null=True)), + ('flat_end_time_mjd', models.FloatField(blank=True, null=True)), + ('dark_files_found', models.IntegerField(blank=True, null=True)), + ('flat_files_found', models.IntegerField(blank=True, null=True)), + ('run_bpix_from_darks', models.BooleanField(blank=True, null=True)), + ('run_bpix_from_flats', models.BooleanField(blank=True, null=True)), + ('run_monitor', models.BooleanField(blank=True, null=True)), + ], + options={ + 'db_table': 'fgs_bad_pixel_query_history', + 'managed': True, + 'unique_together': {('id', 'entry_date')}, + }, + ), + ] diff --git a/jwql/website/apps/jwql/monitor_pages/__init__.py b/jwql/website/apps/jwql/monitor_pages/__init__.py index ed184d7ff..0ba32e541 100644 --- a/jwql/website/apps/jwql/monitor_pages/__init__.py +++ b/jwql/website/apps/jwql/monitor_pages/__init__.py @@ -1 +1,34 @@ +import os + from .monitor_cosmic_rays_bokeh import CosmicRayMonitor + +from jwql.utils.constants import ON_GITHUB_ACTIONS, ON_READTHEDOCS + +if not ON_GITHUB_ACTIONS and not ON_READTHEDOCS: + # Need to set up django apps before we can access the models + import django # noqa: E402 (module level import not at top of file) + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "jwql.website.jwql_proj.settings") + django.setup() + from jwql.website.apps.jwql.monitor_models.bad_pixel import FGSBadPixelQueryHistory, FGSBadPixelStats, MIRIBadPixelQueryHistory, MIRIBadPixelStats + from jwql.website.apps.jwql.monitor_models.bad_pixel import NIRCamBadPixelQueryHistory, NIRCamBadPixelStats, NIRISSBadPixelQueryHistory, NIRISSBadPixelStats + from jwql.website.apps.jwql.monitor_models.bad_pixel import NIRSpecBadPixelQueryHistory, NIRSpecBadPixelStats + + from jwql.website.apps.jwql.monitor_models.claw import NIRCamClawQueryHistory, NIRCamClawStats + + from jwql.website.apps.jwql.monitor_models.dark_current import FGSDarkDarkCurrent, FGSDarkPixelStats, FGSDarkQueryHistory + from jwql.website.apps.jwql.monitor_models.dark_current import MIRIDarkDarkCurrent, MIRIDarkPixelStats, MIRIDarkQueryHistory + from jwql.website.apps.jwql.monitor_models.dark_current import NIRCamDarkDarkCurrent, NIRCamDarkPixelStats, NIRCamDarkQueryHistory + from jwql.website.apps.jwql.monitor_models.dark_current import NIRISSDarkDarkCurrent, NIRISSDarkPixelStats, NIRISSDarkQueryHistory + from jwql.website.apps.jwql.monitor_models.dark_current import NIRSpecDarkDarkCurrent, NIRSpecDarkPixelStats, NIRSpecDarkQueryHistory + + from jwql.website.apps.jwql.monitor_models.edb import FGSEdbBlocksStats, FGSEdbDailyStats, FGSEdbEveryChangeStats, FGSEdbTimeIntervalStats, FGSEdbTimeStats + from jwql.website.apps.jwql.monitor_models.edb import MIRIEdbBlocksStats, MIRIEdbDailyStats, MIRIEdbEveryChangeStats, MIRIEdbTimeIntervalStats, MIRIEdbTimeStats + from jwql.website.apps.jwql.monitor_models.edb import NIRCamEdbBlocksStats, NIRCamEdbDailyStats, NIRCamEdbEveryChangeStats, NIRCamEdbTimeIntervalStats, NIRCamEdbTimeStats + from jwql.website.apps.jwql.monitor_models.edb import NIRISSEdbBlocksStats, NIRISSEdbDailyStats, NIRISSEdbEveryChangeStats, NIRISSEdbTimeIntervalStats, NIRISSEdbTimeStats + from jwql.website.apps.jwql.monitor_models.edb import NIRSpecEdbBlocksStats, NIRSpecEdbDailyStats, NIRSpecEdbEveryChangeStats, NIRSpecEdbTimeIntervalStats, NIRSpecEdbTimeStats + + from jwql.website.apps.jwql.monitor_models.readnoise import FGSReadnoiseQueryHistory, FGSReadnoiseStats + from jwql.website.apps.jwql.monitor_models.readnoise import MIRIReadnoiseQueryHistory, MIRIReadnoiseStats + from jwql.website.apps.jwql.monitor_models.readnoise import NIRCamReadnoiseQueryHistory, NIRCamReadnoiseStats + from jwql.website.apps.jwql.monitor_models.readnoise import NIRISSReadnoiseQueryHistory, NIRISSReadnoiseStats + from jwql.website.apps.jwql.monitor_models.readnoise import NIRSpecReadnoiseQueryHistory, NIRSpecReadnoiseStats