Additional Default Plots
The following plots had not been implemented in the first 'plotting' merge !52 (merged) that modifies plot.py. They should be included in future updates. Most/All are suggestions by Jeff and listed in !52 (merged), specifically, they're pulled from comments buried within Issue 52, note_501298
Zeroth class of plots (quoting from Antonios's comment below, which stems from the review of Merge Request !52 (merged)): a "QuadPlot" method, where one shows a four-panel bode plot. These are typically used for comparing measurement to fit, measurement to measurement, or measurement to model, where we want to see "the full functional magnitude and phase" on the left column, and "the residual of meas/model" or "meas/fit" or "meas*compensation" or "a zoom in on the interesting regions of the function (like the UGF region in an open loop gain TF function, or the gain peaking region in a loop suppression function)
First class of plot that I see missing in terms of basic functionality are corner plots. @ethan.payne did a lot of good work in O3 to edit the usage of the "corner" package to create legible corner plots that look like the attached.
The code is needed for both sensing and actuation MCMC, and it lives in the O3 CalSVN's copy of sensing.py (rev 11317), starting on line 1091, and in actuation.py (rev 11324), starting on line 1100.
The key features are:
- Changing the shading of the posterior samples to be 1, 2, and 3 sigma CI contours,
- Adding cross-hairs on the MAP value
- Adding a legend, and a distinct call out of how many walkers were used.
- In the 1D projections, adding +/- 1 sigma dotted vertical lines to indicate the uncertainty
- Listing off the MAP value and +/- 1 sigma values on the title of each 1D projection
- Adding units (or a description thereof) of the 1D projection's probability numbers -- namely making them "percent per bin" -- or some other sensible probability unit, rather than label-less and "dimensionless" (aka meanlingless).
- Gridlines on everything, with sufficient density enough to be able to read off values, but not overdense enough that it obscures things.
Additions I would add on top of this "return to at least O3 quality"
- Add additional information on the 1D projections about the priors -- initial value and bounds, or bounds.
- Change variable names to match the latest conventions from the O3 systematic error paper (specifically "\tau_C" is actually "residual time delay" which we want consistent with 0.0 [us], rather than the actual delay, which is of order hundreds of [us]).
Another class of plots that are missing are long duration trends of the TDCFs.
These were not strictly a part of pyDARM in O3, but only because we didn't start making them until mid O3B.
The calibration group's DetChar summary pages have trends of the TDCFs on a 24 time scale, And the calibration group's review summary pages have trends on an "entire run" time scale, but we often need plots on the "weeks" kind of time scale, and neither have the also-useful information about the past history of MAP values from the MCMC from weekly measurements.
Hence plots like 2020-06-01_H1_sensing_GDS_TDCFs_O3B_Chunk1_Trend.pdf from LHO aLOG 56118.
The code that creates these plots lives in (again, O3 CalSVN) plot_H1_DCS_TDCF_MinuteTrends_O3BChunk2_Jan14-Mar27_20200803.py.
Key features:
- Trends of \kappa_C, f_CC, and "f_s^2"
- User input that contains a list of times and list of MCMC MAPs (or dictionary, or whatever) to plot when full IFO measurements were made, and the corresponding MAP value
- Inidication (from ISC_LOCK guardian state "n" index = 7 [for LHO]) when the initial alignments were during the period.
- User input for the start and end of the duration that one wishes to plot
- A "Summary" of the entire period on the first page, then a collection pages that show a per-week trend afterward
- Nicely dense-enough grid
- Human readable dates on the x-axis.