From 32de3a6f2357c14b21735fca2933e5a2409b6991 Mon Sep 17 00:00:00 2001
From: Aaron Viets <aaron.viets@ligo.org>
Date: Tue, 5 Feb 2019 08:46:53 -0800
Subject: [PATCH] gstlal-calibration:  Edits to plotting scripts to make file
 names more unique.

---
 .../tests/check_calibration/ASD_plots         | 74 +++++++++++++++++++
 .../check_calibration/pcal2darm_timeseries.py |  7 +-
 .../plot_transfer_function.py                 |  5 +-
 3 files changed, 81 insertions(+), 5 deletions(-)
 create mode 100755 gstlal-calibration/tests/check_calibration/ASD_plots

diff --git a/gstlal-calibration/tests/check_calibration/ASD_plots b/gstlal-calibration/tests/check_calibration/ASD_plots
new file mode 100755
index 0000000000..a9abc8497b
--- /dev/null
+++ b/gstlal-calibration/tests/check_calibration/ASD_plots
@@ -0,0 +1,74 @@
+#!/usr/bin/env python
+
+import matplotlib
+matplotlib.use('Agg')
+from gwpy.timeseries import TimeSeriesDict
+from gwpy.timeseries import TimeSeries
+import glob
+from math import pi
+from gwpy.plotter import BodePlot
+import numpy
+from optparse import OptionParser, Option
+from glue import datafind
+
+parser = OptionParser()
+
+parser.add_option("--ifo", metavar = "name", help = "Name of the IFO")
+parser.add_option("--gps-start-time", metavar = "seconds", help = "Set the GPS start time.")
+parser.add_option("--gps-end-time", metavar = "seconds", help = "Set the GPS end time.")
+parser.add_option("--raw-frame-cache", metavar = "name", help = "Raw frame cache file")
+parser.add_option("--hoft-frame-cache", metavar = "name", help = "h(t) frame cache file.")
+parser.add_option("--hoft-channel-name", metavar = "name", default = "GDS-CALIB_STRAIN", help = "Channel name for h(t) channel in frames. (Default = GDS-CALIB_STRAIN)")
+parser.add_option("--analyze-additional-hoft-channel", action="store_true", help = "Set this option to analyze an additional h(t) channel")
+parser.add_option("--additional-hoft-channel-name", metavar = "name", default = "DCS-CALIB_STRAIN", help = "Channel name for additional h(t) channel frames. (Default = DCS-CALIB_STRAIN)")
+parser.add_option("--additional-hoft-frame-cache", metavar = "name", help = "additional h(t) frame cache file.")
+parser.add_option("--calcs-channel-name", metavar = "name", default = "CAL-DELTAL_EXTERNAL_DQ", help = "Channel name for h(t) channel in raw frames. (Default = CAL-DELTAL_EXTERNAL_DQ)")
+parser.add_option("--filename-suffix", type = str, default = None, help = "Suffix to add to the end of filenames")
+
+options, filenames = parser.parse_args()
+
+start_time = int(options.gps_start_time)
+end_time = int(options.gps_end_time)
+
+# Grab CALCS data
+calcs_data=TimeSeries.read(options.raw_frame_cache, '%s:%s' % (options.ifo, options.calcs_channel_name), start = start_time, end = end_time)
+
+# grab h(t) data
+hoft_data = TimeSeries.read(options.hoft_frame_cache, "%s:%s" % (options.ifo, options.hoft_channel_name), start = start_time, end = end_time)
+if options.analyze_additional_hoft_channel:
+	additional_hoft_data = TimeSeries.read(options.additional_hoft_frame_cache, "%s:%s" % (options.ifo, options.additional_hoft_channel_name), start = start_time, end = end_time)
+
+# make asds
+calcs_asd = calcs_data.asd(4,2)
+hoft_asd = hoft_data.asd(4,2)
+if options.analyze_additional_hoft_channel:
+	additional_hoft_asd = additional_hoft_data.asd(4,2)
+
+#plot spectrum
+plot=calcs_asd.plot(label='CALCS h(t) ASD')
+plot.gca().plot(hoft_asd,label='GDS h(t) ASD')
+if options.analyze_additional_hoft_channel:
+	plot.gca().plot(additional_hoft_asd,label='DCS h(t) ASD')
+ax = plot.gca()
+ax.set_ylabel('Strain [Hz $^{-1/2}$]', fontname = 'Times', fontsize = 18)
+ax.set_xlabel('Frequency [Hz]', fontname = 'Times', fontsize = 18)
+ax.legend(['DCS-CALIB\_STRAIN', 'DCS-CALIB\_STRAIN\_CLEAN', r'DCS h(t) ASD'], loc='upper right', fontsize='small')
+ax.set_xlim(0.5,8192)
+ax.set_ylim(1e-24,1e-16)
+plot.save('%s_%s_%s_spectrum_comparison%s.png' % (options.ifo, start_time, end_time, options.filename_suffix))
+
+diff1 = calcs_asd / hoft_asd
+if options.analyze_additional_hoft_channel:
+	diff2 = calcs_asd / additional_hoft_asd
+	diff3 = hoft_asd / additional_hoft_asd
+plot = diff1.plot(label="ASD ratios")
+if options.analyze_additional_hoft_channel:
+	plot.gca().plot(diff2)
+	plot.gca().plot(diff3)
+ax = plot.gca()
+ax.set_ylabel('Strain [Hz $^{-1/2}$]', fontname = 'Times', fontsize = 18)
+ax.set_xlabel('Frequency [Hz]', fontname = 'Times', fontsize = 18)
+ax.legend([r'CALCS h(t) ASD / GDS h(t) ASD', r'CALCS h(t) ASD / DCS h(t) ASD', r'GDS h(t) ASD / DCS h(t) ASD'], loc='upper right', fontsize='small')
+ax.set_xlim(0.5,5000)
+ax.set_ylim(0.0, 10)
+plot.save('%s_%s_%s_ASD_residual%s.png' % (options.ifo, start_time, end_time, options.filename_suffix))
diff --git a/gstlal-calibration/tests/check_calibration/pcal2darm_timeseries.py b/gstlal-calibration/tests/check_calibration/pcal2darm_timeseries.py
index 141562a3f1..fd9c77ee42 100644
--- a/gstlal-calibration/tests/check_calibration/pcal2darm_timeseries.py
+++ b/gstlal-calibration/tests/check_calibration/pcal2darm_timeseries.py
@@ -82,7 +82,7 @@ parser.add_option("--demodulation-time", metavar = "seconds", type = int, defaul
 parser.add_option("--magnitude-ranges", metavar = "list", type = str, default = "0.9,1.1;0.9,1.1;0.9,1.1", help = "Ranges for magnitude plots. Semicolons separate ranges for different plots, and commas separate min and max values.")
 parser.add_option("--phase-ranges", metavar = "list", type = str, default = "-6.0,6.0;-6.0,6.0;-6.0,6.0", help = "Ranges for phase plots, in degrees. Semicolons separate ranges for different plots, and commas separate min and max values.")
 parser.add_option("--labels", metavar = "list", type = str, help = "Comma-separated List of labels for each calibrated channel being tested. This is put in the plot legends and in the txt file names to distinguish them.")
-parser.add_option("--file-name-prefix", metavar = "name", type = str, help = "Prefix for naming unique file.")
+parser.add_option("--file-name-suffix", metavar = "name", type = str, default = None, help = "Suffix for naming unique file.")
 
 options, filenames = parser.parse_args()
 
@@ -280,6 +280,7 @@ for i in range(0, len(frequencies)):
 	data = numpy.loadtxt("%s_%s_over_%s_at_%0.1fHz_%d.txt" % (ifo, labels[0].replace(' ', '_'), options.pcal_channel_name, frequencies[i], options.gps_start_time))
 	t_start = data[0][0]
 	dur = data[len(data) - 1][0] - t_start
+	dur_in_seconds = dur
 	t_unit = 'seconds'
 	sec_per_t_unit = 1.0
 	if dur > 60 * 60 * 100:
@@ -339,6 +340,6 @@ for i in range(0, len(frequencies)):
 		plt.plot(times, phases[j], colors[j % 6], markersize = markersize, label = r'%s [$\mu$ = %0.3f$^{\circ}$, $\sigma$ = %0.3f$^{\circ}$]' % (labels[j], numpy.mean(phases[j]), numpy.std(phases[j])))
 		leg = plt.legend(fancybox = True, markerscale = 4.0 / markersize, numpoints = 3)
 		leg.get_frame().set_alpha(0.5)
-plt.savefig("%s_%s_deltal_over_pcal_%d.png" % (options.file_name_prefix, ifo, options.gps_start_time))
-plt.savefig("%s_%s_deltal_over_pcal_%d.pdf" % (options.file_name_prefix, ifo, options.gps_start_time))
+plt.savefig("%s_deltal_over_pcal%s_%d-%d.png" % (ifo, options.file_name_suffix, int(t_start), int(dur_in_seconds)))
+plt.savefig("%s_deltal_over_pcal%s_%d-%d.pdf" % (ifo, options.file_name_suffix, int(t_start), int(dur_in_seconds)))
 
diff --git a/gstlal-calibration/tests/check_calibration/plot_transfer_function.py b/gstlal-calibration/tests/check_calibration/plot_transfer_function.py
index b954060f44..707f9ae07a 100644
--- a/gstlal-calibration/tests/check_calibration/plot_transfer_function.py
+++ b/gstlal-calibration/tests/check_calibration/plot_transfer_function.py
@@ -95,6 +95,7 @@ parser.add_option("--magnitude-max", type = float, default = 1.1, help = "Maximu
 parser.add_option("--phase-min", metavar = "degrees", type = float, default = -6, help = "Minimum for phase plot, in degrees")
 parser.add_option("--phase-max", metavar = "degrees", type = float, default = 6, help = "Maximum for phase plot, in degrees")
 parser.add_option("--labels", metavar = "list", type = str, default = None, help = "Comma-separated list of labels corresponding to each transfer function, to be added to plot legend and txt file names.")
+parser.add_option("--filename-suffix", type = str, default = None, help = "Suffix for filename to make it unique.")
 
 options, filenames = parser.parse_args()
 
@@ -354,6 +355,6 @@ for i in range(0, len(labels)):
 	plt.xlim(options.frequency_min, options.frequency_max)
 	plt.ylim(options.phase_min, options.phase_max)
 	plt.grid(True)
-plt.savefig('%s_transfer_functions_%s_%s_%d-%d.png' % (ifo, options.numerator_name, options.denominator_name, options.gps_start_time, data_duration))
-plt.savefig('%s_transfer_functions_%s_%s_%d-%d.pdf' % (ifo, options.numerator_name, options.denominator_name, options.gps_start_time, data_duration))
+plt.savefig('%s_transfer_functions_%s_%s%s_%d-%d.png' % (ifo, options.numerator_name, options.denominator_name, options.filename_suffix, options.gps_start_time, data_duration))
+plt.savefig('%s_transfer_functions_%s_%s%s_%d-%d.pdf' % (ifo, options.numerator_name, options.denominator_name, options.filename_suffix, options.gps_start_time, data_duration))
 
-- 
GitLab