I'm using ndscope-dev and this is still happening. @thomas-shaffer
ndscope H1:CDS-SENSMON_CLEAN_SNSC_EFFECTIVE_RANGE_MPC -t "June 1 2023 00:00:00 UTC" -t "Jan 18 2024 0:00:00 UTC"
gives me this screenshot (y axis is roughly +/-4000Mpc):
The second screenshot is when I changed the y axis scale auto to 99%.
I find this to be a very useful feature for looking at long trends where there are usually outliers (even if it's not doing a percentile of the data, it's doing something helpful). If there's a way to set this in a template that would be very useful.
When I changed it from 100% to 99% though it changed the range by almost 25% though. From your description it sounds like it would only be changing it by 1%?
sorry for the random screenshots of the chat
I think that the padding is a different thing than what I'm talking about. (you mean that if you auto scale with 2% padding your y axis is 2% larger than the max of the data, I think). The autoscale 98% means that the yaxis max and min are at the 98th percentile of your data. This is very handy because so many of our channels have outliers that are many orders of mangnitude larger than the normal range of the data. I'm not aware of how to set this autoscale percentile in a template or from the command line, but I find myself doing this repetitively with the gui a lot.
OK, let us double check what we were seeing.
Actually, this was not giving us the data we thought it was! For the transfer function this gave us wrong data. (Not sure if it was right or wrong for coherence, I thought it was OK).
The autoscale feature where you can set the limit to 99% is really useful. Could that be the default scaling? I am finding myself clicking through every plot and changing it to that now.
Alternatively, is there a way to request that from the command line?
From looking at the page, I can't tell what the saturation threshold is in use for a certain channel (they were all the same at the time the code was written, but now we have a mix of 18 + 20 bit DACs). It would be useful to indicate what the threshold is for the user, and to go through and double check that the threshold in use is the correct one.
It is possible to get references (at least for coherence), but the problem is figuring out how to ask for the channel names. I am able to get a coherence from a reference, by asking for the reference in the A channel but not the B channel:
import dttxml
import numpy as np
diag_PUM = dttxml.DiagAccess("/ligo/home/sheila.dwyer/LSC/DARM/crossovers/PUM_crossover_Nov2023.xml")
coh_struct = diag_PUM.coherence("H1:SUS-ETMX_L2_LOCK_L_EXC(REF14)", "H1:SUS-ETMX_L2_LOCK_L_IN1")
I figured this out by looking at objects in the DiagCoherenceHolder, so the bug may be there.
Edit: To clarfity, the thing I assumed would be the right way to call this (which I think most other people will as well) would be:
coh_struct = diag_PUM.coherence("H1:SUS-ETMX_L2_LOCK_L_EXC(REF14)", "H1:SUS-ETMX_L2_LOCK_L_IN1(REF14)")
but this gives a key error.
Edit: This also works for transfer functions, to ask for the reference in the A channel and the live channel as the B channel gives the data for the reference.
It would be helpful to display the value of a channel in the legend, as was done in StripTool (I'd suggest not displaying the scaled value, but the actual value of the channel). This way people can read the value even if the channel is scaled. This also helped address the concern Jamie raised in issue #201
As it is, with the data scaled by the channel, users are often unaware of the actual value of a channel.
This was done in stirpTool, it didn't seem to cause too many problems.