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