[Jon, Jamie, Chris, Craig]
We've developed and installed a new Python tool for budgeting IFO noise: aligoNB. At its core, this package contains Python translations of the Matlab scripts used to generate H1 noise budgets. However, it also significantly extends our noise-budgeting abilities:
Several examples illustrating the different ways this tool can be used are shown below.
In general, the code is executed from the command line with a budget argument (either "H1" or "L1") and one or more option flags configuring properties of the budget. The full usage can be printed to the terminal by executing the help command: $ aligonb -h
$ aligonb H1 --onlinelaunches a window displaying the online (current) noise budget. By default, the traces auto-update every 3 seconds. The update interval can be changed by providing a numerical argument in seconds immediately after the --online flag.

$ aligonb H1 --time 1235813418 --span 60similarly generates a static budget for data in the GPS time range 1235813418 to 1235813418+60 seconds. If no time arguments are provided, the time range defaults to that of the last H1 noise budget.
$ aligonb H1 DARMMeasured Quantum ASCgenerates a budget consisting of only the Quantum and ASC noise terms. The noise terms are separated by spaces and can be arbitrarily many.

$ aligonb H1 -lprints the full list of available H1 noises to the terminal:
H1H1.ClosedLoopSensingH1.DarkH1.QuantumH1.Quantum.ClosedLoopSensingH1.Quantum.ShotH1.Quantum.RadiationPressureH1.OMCLengthH1.DACH1.OSEMH1.ASCH1.ASC.CHARDPitH1.ASC.CHARDYawH1.ASC.DHARDPitH1.ASC.DHARDYawH1.ASC.MICHPitH1.ASC.MICHYawH1.ASC.PRC2PitH1.ASC.PRC2YawH1.ASC.CSOFTPitH1.ASC.DSOFTPitH1.ASC.SRC2PitH1.ASC.SRC2YawH1.IntensityH1.MICHH1.SRCLH1.InputJitterH1.InputJitter.InputJitterPitH1.InputJitter.InputJitterYawH1.ResidualGasH1.ThermalH1.Thermal.SuspensionThermalH1.Thermal.CoatingBrownianH1.SeismicH1.NewtonianH1.OMCASCH1.OMCASC.OMCPosXH1.OMCASC.OMCPosYH1.OMCASC.OMCAngXH1.OMCASC.OMCAngYH1.FrequencyH1.CalLinesH1.CalLines.PCALYH1.CalLines.PCALX*H1.DARMMeasuredRef0*H1.DARMMeasured
Noise terms beginning with an asterisk are reference traces, and are not included in the calculated noise total. Noise terms containing sub-components (e.g., H1.InputJitter.InputJitterPit and H1.InputJitter.InputJitterYaw) can be sub-budgeted as described below.
$ aligonb H1.ASCgenerates the budget of sub-terms which make up the ASC noise. In this case, the sub-terms are the contributions from each angular degree of freedom. Sub-budgets can be generated for any noise term which has sub-components defined (these can be identified using the $ aligonb H1 -l command described above).

Anyone working with the noise budget is welcome to edit the code as necessary. The code base is located at /ligo/gitcommon/Noisebudget/aligonb.
Relative to this directory, the file ./aligoNB/H1/budget.py contains the noise and budget class definitions. New noise terms can be defined here following the convention of the existing terms, and the new class name should be added to the list of noises inside the H1 class. Existing noise terms can also be modified as needed.
When a budget is generated, each noise class has three methods that are executed sequentially:
The most common workflow is to load a measured coupling from file using load(), pull NDS witness-channel data using update(), and finally apply the coupling to the data using calc(). The methods are broken up this way to prevent static data from having to be reloaded every time a live budget updates. The load() method is called only once initially, while update() and calc() are called at every update.
The code is under git version control (https://git.ligo.org/NoiseBudget/aligoNB). We ask that any changes be pushed back to this central repository so that a master copy can be maintained. The issue tracker can be used to report bugs and to request new functionality.
Jamie is continuing to develop an improved user interface which will enhance the appearance of the plotting. He is also adding binary NS inspiral range information to the plots. Craig is working with Gabriele to implement an estimator of the total scatter noise, which will be a new addition to the H1 budget. Jon will work on producing an analogous Python translation of the LLO budget.
That is an unbelievably cool tool. Just beautiful.
Couple of additional notes:
Be sure to git commit and push the updated couplings after synching.
self.nds_data attribute.The --online plotting option has been disabled until further notice.
The prototype online plotting method was implemented in a crude and inefficient way, and seemed to be triggering instability in the NDS1 server. I've disabled it until I can implement a more efficient method.