From 6953cd7f085d32a30ac83ec8d9453c6236fe2cbf Mon Sep 17 00:00:00 2001
From: Kevin Kuns <kevin.kuns@ligo.org>
Date: Mon, 22 Nov 2021 18:16:20 -0500
Subject: [PATCH] add more load_budget tests

---
 test/inherit/new_ifo.yaml                    | 297 +++++++++++++++++
 test/inherit/subdir/CustomBudget/__init__.py |  38 +++
 test/inherit/subdir/CustomBudget/ifo.yaml    | 315 +++++++++++++++++++
 test/inherit/subdir/CustomBudget_mod.yaml    |   6 +
 test/inherit/test_inherit.py                 |  44 +++
 5 files changed, 700 insertions(+)
 create mode 100644 test/inherit/new_ifo.yaml
 create mode 100644 test/inherit/subdir/CustomBudget/__init__.py
 create mode 100644 test/inherit/subdir/CustomBudget/ifo.yaml
 create mode 100644 test/inherit/subdir/CustomBudget_mod.yaml

diff --git a/test/inherit/new_ifo.yaml b/test/inherit/new_ifo.yaml
new file mode 100644
index 0000000..6301bc6
--- /dev/null
+++ b/test/inherit/new_ifo.yaml
@@ -0,0 +1,297 @@
+# GWINC aLIGO interferometer parameters
+#
+# parameters for quad pendulum suspension updated 3rd May 2006, NAR
+# References:
+# LIGO-T000012-00-D
+# 	* Differentiate between silica and sapphire substrate absorption
+# 	* Change ribbon suspension aspect ratio
+# 	* Change pendulum frequency
+# References:
+# 1. Electro-Optic Handbook, Waynant & Ediger (McGraw-Hill: 1993)
+# 2. LIGO/GEO data/experience
+# 3. Suspension reference design, LIGO-T000012-00
+# 4. Quartz Glass for Optics Data and Properties, Heraeus data sheet,
+#    numbers for suprasil
+# 5. Y.S. Touloukian (ed), Thermophysical Properties of Matter
+#    (IFI/Plenum,1970)
+# 6. Marvin J. Weber (ed) CRC Handbook of laser science and technology,
+#    Vol 4, Pt 2
+# 7. R.S. Krishnan et al.,Thermal Expansion of Crystals, Pergamon Press
+# 8. P. Klocek, Handbook of infrared and optical materials, Marcel Decker,
+#    1991
+# 9. Rai Weiss, electronic log from 5/10/2006
+# 10. Wikipedia online encyclopedia, 2006
+# 11. D.K. Davies, The Generation and Dissipation of Static Charge on
+# dielectrics in a Vacuum, page 29
+# 12. Gretarsson & Harry, Gretarsson thesis
+# 13. Fejer
+# 14. Braginsky
+#
+# Updated numbers March 2018: LIGO-T1800044
+
+Infrastructure:
+  Length: 3995                    # m
+  Temp: 290                       # K
+  ResidualGas:
+    H2:
+      BeamtubePressure: 2.7e-7      # Pa
+      ChamberPressure: 2.7e-7       # Pa
+      mass: 3.35e-27                # kg; Mass of H_2 (ref. 10)
+      polarizability: 7.8e-31       # m^3
+
+    N2:
+      BeamtubePressure: 1.33e-8
+      ChamberPressure: 1.33e-8
+      mass: 4.65e-26
+      polarizability: 1.71e-30
+
+    H2O:
+      BeamtubePressure: 1.33e-8
+      ChamberPressure: 1.33e-8
+      mass: 2.99e-26
+      polarizability: 1.50e-30
+
+    O2:
+      BeamtubePressure: 1e-9
+      ChamberPressure: 1e-9
+      mass: 5.31e-26
+      polarizability: 1.56e-30
+
+
+TCS:
+  # The presumably dominant effect of a thermal lens in the ITMs is an increased
+  # mode mismatch into the SRC, and thus an increased effective loss of the SRC.
+  # The increase is estimated by calculating the round-trip loss S in the SRC as
+  # 1-S = |<Psi|exp(i*phi)|Psi>|^2, where
+  # |Psi> is the beam hitting the ITM and
+  # phi = P_coat*phi_coat + P_subs*phi_subs
+  # with phi_coat & phi_subs the specific lensing profiles
+  # and P_coat & P_subst the power absorbed in coating and substrate
+  #
+  # This expression can be expanded to 2nd order and is given by
+  # S= s_cc P_coat^2 + 2*s_cs*P_coat*P_subst + s_ss*P_subst^2
+  # s_cc, s_cs and s_ss were calculated analytically by Phil Willems (4/2007)
+  s_cc: 7.024                     # Watt^-2
+  s_cs: 7.321                     # Watt^-2
+  s_ss: 7.631                     # Watt^-2
+  # The hardest part to model is how efficient the TCS system is in
+  # compensating this loss. Thus as a simple Ansatz we define the
+  # TCS efficiency TCSeff as the reduction in effective power that produces
+  # a phase distortion. E.g. TCSeff=0.99 means that the compensated distortion
+  # of 1 Watt absorbed is equivalent to the uncompensated distortion of 10mWatt.
+  # The above formula thus becomes:
+  # S= s_cc P_coat^2 + 2*s_cs*P_coat*P_subst + s_ss*P_subst^2 * (1-TCSeff)^2
+  #
+  # To avoid iterative calculation we define TCS.SCRloss = S as an input
+  # and calculate TCSeff as an output.
+  # TCS.SRCloss is incorporated as an additional loss in the SRC
+  SRCloss: 0.00
+
+Seismic:
+  Site: 'LHO'                     # LHO or LLO (only used for Newtonian noise)
+  # darmSeiSusFile: 'seismic.mat'   # .mat file containing predictions for darm displacement
+  KneeFrequency: 10               # Hz; freq where 'flat' noise rolls off
+  LowFrequencyLevel: 1e-9         # m/rtHz; seismic noise level below f_knee
+  Gamma: 0.8                      # abruptness of change at f_knee
+  Rho: 1.8e3                      # kg/m^3; density of the ground nearby
+  Beta: 0.8                       # quiet times beta: 0.35-0.60
+                                  # noisy times beta: 0.15-1.4
+  Omicron: 1                      # Feedforward cancellation factor
+  TestMassHeight: 1.5             # m
+  RayleighWaveSpeed: 250          # m/s
+
+Suspension:
+  Type: 'Quad'
+  FiberType: 'Tapered'
+  BreakStress: 750e6              # Pa; ref. K. Strain
+  Temp: 290
+  # VHCoupling:
+  #   theta: 1e-3                   # vertical-horizontal x-coupling (computed in precompIFO)
+
+  Silica:
+    Rho   : 2.2e3                 # Kg/m^3;
+    C     : 772                   # J/Kg/K;
+    K     : 1.38                  # W/m/kg;
+    Alpha : 3.9e-7                # 1/K;
+    dlnEdT: 1.52e-4               # (1/K), dlnE/dT
+    Phi   : 4.1e-10               # from G Harry e-mail to NAR 27April06 dimensionless units
+    Y     : 7.2e10                # Pa; Youngs Modulus
+    Dissdepth: 1.5e-2             # from G Harry e-mail to NAR 27April06
+
+  C70Steel:
+    Rho: 7800
+    C: 486
+    K: 49
+    Alpha: 12e-6
+    dlnEdT: -2.5e-4
+    Phi: 2e-4
+    Y: 212e9                      # measured by MB for one set of wires
+
+  MaragingSteel:
+    Rho: 7800
+    C: 460
+    K: 20
+    Alpha: 11e-6
+    dlnEdT: 0
+    Phi: 1e-4
+    Y: 187e9
+
+  # ref http://www.ioffe.ru/SVA/NSM/Semicond/Si/index.html
+  # all properties should be for T ~ 120 K
+  Silicon:
+    Rho: 2329                     # Kg/m^3;  density
+    C: 300                        # J/kg/K   heat capacity
+    K: 700                        # W/m/K    thermal conductivity
+    Alpha: 1e-10                  # 1/K      thermal expansion coeff
+    # from Gysin, et. al. PRB (2004)  E(T): E0 - B*T*exp(-T0/T)
+    # E0: 167.5e9 Pa   T0: 317 K   B: 15.8e6 Pa/K
+    dlnEdT: -2e-5                 # (1/K)    dlnE/dT  T=120K
+    Phi: 2e-9                     # Nawrodt (2010)      loss angle  1/Q
+    Y: 155.8e9                    # Pa       Youngs Modulus
+    Dissdepth: 1.5e-3             # 10x smaller surface loss depth (Nawrodt (2010))
+
+  # Note stage numbering: mirror is at beginning of stack, not end
+  #
+  # last stage length adjusted for d: 10mm and and d_bend = 4mm
+  # (since 602mm is the CoM separation, and d_bend is accounted for
+  # in suspQuad, so including it here would double count)
+  Stage:
+    # Stage1
+    - Mass: 39.6                  # kg; current numbers May 2006 NAR
+      # length adjusted for d = 10mm and d_bend = 4mm
+      # (since 602mm is the CoM separation, and d_bend is accounted for
+      # in suspQuad, so including it here would double count)
+      Length: 0.59                # m
+      Dilution: .nan              #
+      K: .nan                     # N/m; vertical spring constant
+      WireRadius: .nan            # m
+      Blade: .nan                 # blade thickness
+      NWires: 4
+
+    # Stage2
+    - Mass: 39.6
+      Length: 0.341
+      Dilution: 106
+      K: 5200
+      WireRadius: 310e-6
+      Blade: 4200e-6
+      NWires: 4
+
+    # Stage3
+    - Mass: 21.8
+      Length: 0.277
+      Dilution: 80
+      K: 3900
+      WireRadius: 350e-6
+      Blade: 4600e-6
+      NWires: 4
+
+    # Stage4
+    - Mass: 22.1
+      Length: 0.416
+      Dilution: 87
+      K: 3400
+      WireRadius: 520e-6
+      Blade: 4300e-6
+      NWires: 2
+
+  Ribbon:
+    Thickness: 115e-6             # m
+    Width: 1150e-6                # m
+
+  Fiber:
+    Radius: 205e-6                # m
+    # for tapered fibers
+    # EndRadius is tuned to cancel thermo-elastic noise (delta_h in suspQuad)
+    # EndLength is tuned to match bounce mode frequency
+    EndRadius: 400e-6             # m; nominal 400um
+    EndLength: 45e-3              # m; nominal 20mm
+
+## Optic Material -------------------------------------------------------
+Materials:
+  MassRadius: 0.17                # m;
+  MassThickness: 0.200            # m; Peter F 8/11/2005
+
+  ## Dielectric coating material parameters----------------------------------
+  Coating:
+    ## high index material: tantala
+    Yhighn: 120e9                 # Ta2O5-TiO2 from 2020 LMA https://iopscience.iop.org/article/10.1088/1361-6382/ab77e9
+    Sigmahighn: 0.29              # 2020 LMA
+    CVhighn: 2.1e6                # Crooks et al, Fejer et al
+    Alphahighn: 3.6e-6            # 3.6e-6 Fejer et al, 5e-6 from Braginsky
+    Betahighn: 1.4e-5             # dn/dT, value Gretarrson (G070161)
+    ThermalDiffusivityhighn: 33   # Fejer et al
+    Indexhighn: 2.09              # 2020 LMA
+    Phihighn: 3.89e-4             # loss angle at 100Hz (Gras 2020)
+    Phihighn_slope: 0.1
+
+    ## low index material: silica
+    Ylown: 70e9                   # 2020 LMA
+    Sigmalown: 0.19               # 2020 LMA
+    CVlown: 1.6412e6              # Crooks et al, Fejer et al
+    Alphalown: 5.1e-7             # Fejer et al
+    Betalown: 8e-6                # dn/dT,  (ref. 14)
+    ThermalDiffusivitylown: 1.38  # Fejer et al
+    Indexlown: 1.45
+    Philown: 2.3e-5               # loss angle at 100Hz 2020 LMA
+    Philown_slope: 0              # G1600641 and arXiv:1712.05701 suggest
+                                  # slopes between 0 and 0.3, depending on
+                                  # deposition method. Slawek's analysis in
+                                  # 10.1103/PhysRevD.98.122001 assumes zero slope.
+
+  ## Substrate Material parameters--------------------------------------------
+  Substrate:
+    Temp: 295
+    c2 : 7.6e-12                  # Coeff of freq depend. term for bulk mechanical loss, 7.15e-12 for Sup2
+    MechanicalLossExponent: 0.77  # Exponent for freq dependence of silica loss, 0.822 for Sup2
+    Alphas: 5.2e-12               # Surface loss limit (ref. 12)
+    MirrorY: 7.27e10              # N/m^2; Youngs modulus (ref. 4)
+    MirrorSigma: 0.167            # Kg/m^3; Poisson ratio (ref. 4)
+    MassDensity: 2.2e3            # Kg/m^3; (ref. 4)
+    MassAlpha: 3.9e-7             # 1/K; thermal expansion coeff. (ref. 4)
+    MassCM: 739                   # J/Kg/K; specific heat (ref. 4)
+    MassKappa: 1.38               # J/m/s/K; thermal conductivity (ref. 4)
+    RefractiveIndex: 1.45         # mevans 25 Apr 2008
+
+## Laser-------------------------------------------------------------------
+Laser:
+  Wavelength: 1.064e-6            # m
+  Power: 125                      # W
+
+## Optics------------------------------------------------------------------
+Optics:
+  Type: 'SignalRecycled'
+  PhotoDetectorEfficiency: 0.9    # photo-detector quantum efficiency
+  Loss: 37.5e-6                     # average per mirror power loss
+  BSLoss: 0.5e-3                  # power loss near beamsplitter
+  coupling: 1.0                   # mismatch btwn arms & SRC modes; used to
+                                  # calculate an effective r_srm
+  SubstrateAbsorption: 0.5e-4     # 1/m; bulk absorption coef (ref. 2)
+  pcrit: 10                       # W; tolerable heating power (factor 1 ATC)
+  Quadrature:
+    dc: 1.5707963                 # pi/2 # demod/detection/homodyne phase
+
+  ITM:
+    Transmittance: 0.014
+    CoatingThicknessLown: 0.308
+    CoatingThicknessCap: 0.5
+    CoatingAbsorption: 0.5e-6
+  ETM:
+    Transmittance: 5e-6
+    CoatingThicknessLown: 0.27
+    CoatingThicknessCap: 0.5
+  PRM:
+    Transmittance: 0.03
+  SRM:
+    Transmittance: 0.325
+    CavityLength: 55              # m, ITM to SRM distance
+    Tunephase: 0.0                # SEC tuning
+
+  Curvature:                      # RoCs per E080511, E080512
+    ITM: 1934
+    ETM: 2245
+
+Squeezer:
+  AmplitudedB: 12
+  FilterCavity:
+    L: 300
diff --git a/test/inherit/subdir/CustomBudget/__init__.py b/test/inherit/subdir/CustomBudget/__init__.py
new file mode 100644
index 0000000..327d318
--- /dev/null
+++ b/test/inherit/subdir/CustomBudget/__init__.py
@@ -0,0 +1,38 @@
+from gwinc.ifo.noises import *
+from gwinc.ifo import PLOT_STYLE
+
+
+class QuantumVacuum(nb.Budget):
+    """Quantum Vacuum
+
+    """
+    style = dict(
+        label='Quantum Vacuum',
+        color='#ad03de',
+    )
+
+    noises = [
+        QuantumVacuumAS,
+        QuantumVacuumArm,
+        QuantumVacuumSEC,
+        QuantumVacuumFilterCavity,
+        QuantumVacuumInjection,
+        QuantumVacuumReadout,
+        QuantumVacuumQuadraturePhase,
+    ]
+
+
+class CustomBudget(nb.Budget):
+
+    name = 'A custom budget'
+
+    noises = [
+        QuantumVacuum,
+        Seismic,
+    ]
+
+    calibrations = [
+        Strain,
+    ]
+
+    plot_style = PLOT_STYLE
diff --git a/test/inherit/subdir/CustomBudget/ifo.yaml b/test/inherit/subdir/CustomBudget/ifo.yaml
new file mode 100644
index 0000000..66aa82b
--- /dev/null
+++ b/test/inherit/subdir/CustomBudget/ifo.yaml
@@ -0,0 +1,315 @@
+# GWINC aLIGO interferometer parameters
+#
+# parameters for quad pendulum suspension updated 3rd May 2006, NAR
+# References:
+# LIGO-T000012-00-D
+# 	* Differentiate between silica and sapphire substrate absorption
+# 	* Change ribbon suspension aspect ratio
+# 	* Change pendulum frequency
+# References:
+# 1. Electro-Optic Handbook, Waynant & Ediger (McGraw-Hill: 1993)
+# 2. LIGO/GEO data/experience
+# 3. Suspension reference design, LIGO-T000012-00
+# 4. Quartz Glass for Optics Data and Properties, Heraeus data sheet,
+#    numbers for suprasil
+# 5. Y.S. Touloukian (ed), Thermophysical Properties of Matter
+#    (IFI/Plenum,1970)
+# 6. Marvin J. Weber (ed) CRC Handbook of laser science and technology,
+#    Vol 4, Pt 2
+# 7. R.S. Krishnan et al.,Thermal Expansion of Crystals, Pergamon Press
+# 8. P. Klocek, Handbook of infrared and optical materials, Marcel Decker,
+#    1991
+# 9. Rai Weiss, electronic log from 5/10/2006
+# 10. Wikipedia online encyclopedia, 2006
+# 11. D.K. Davies, The Generation and Dissipation of Static Charge on
+# dielectrics in a Vacuum, page 29
+# 12. Gretarsson & Harry, Gretarsson thesis
+# 13. Fejer
+# 14. Braginsky
+#
+# Updated numbers March 2018: LIGO-T1800044
+
+Infrastructure:
+  Length: 3995                    # m
+  Temp: 290                       # K
+  ResidualGas:
+    H2:
+      BeamtubePressure: 2.7e-7      # Pa
+      ChamberPressure: 2.7e-7       # Pa
+      mass: 3.35e-27                # kg; Mass of H_2 (ref. 10)
+      polarizability: 7.8e-31       # m^3
+
+    N2:
+      BeamtubePressure: 1.33e-8
+      ChamberPressure: 1.33e-8
+      mass: 4.65e-26
+      polarizability: 1.71e-30
+
+    H2O:
+      BeamtubePressure: 1.33e-8
+      ChamberPressure: 1.33e-8
+      mass: 2.99e-26
+      polarizability: 1.50e-30
+
+    O2:
+      BeamtubePressure: 1e-9
+      ChamberPressure: 1e-9
+      mass: 5.31e-26
+      polarizability: 1.56e-30
+
+
+TCS:
+  # The presumably dominant effect of a thermal lens in the ITMs is an increased
+  # mode mismatch into the SRC, and thus an increased effective loss of the SRC.
+  # The increase is estimated by calculating the round-trip loss S in the SRC as
+  # 1-S = |<Psi|exp(i*phi)|Psi>|^2, where
+  # |Psi> is the beam hitting the ITM and
+  # phi = P_coat*phi_coat + P_subs*phi_subs
+  # with phi_coat & phi_subs the specific lensing profiles
+  # and P_coat & P_subst the power absorbed in coating and substrate
+  #
+  # This expression can be expanded to 2nd order and is given by
+  # S= s_cc P_coat^2 + 2*s_cs*P_coat*P_subst + s_ss*P_subst^2
+  # s_cc, s_cs and s_ss were calculated analytically by Phil Willems (4/2007)
+  s_cc: 7.024                     # Watt^-2
+  s_cs: 7.321                     # Watt^-2
+  s_ss: 7.631                     # Watt^-2
+  # The hardest part to model is how efficient the TCS system is in
+  # compensating this loss. Thus as a simple Ansatz we define the
+  # TCS efficiency TCSeff as the reduction in effective power that produces
+  # a phase distortion. E.g. TCSeff=0.99 means that the compensated distortion
+  # of 1 Watt absorbed is equivalent to the uncompensated distortion of 10mWatt.
+  # The above formula thus becomes:
+  # S= s_cc P_coat^2 + 2*s_cs*P_coat*P_subst + s_ss*P_subst^2 * (1-TCSeff)^2
+  #
+  # To avoid iterative calculation we define TCS.SCRloss = S as an input
+  # and calculate TCSeff as an output.
+  # TCS.SRCloss is incorporated as an additional loss in the SRC
+  SRCloss: 0.00
+
+Seismic:
+  Site: 'LHO'                     # LHO or LLO (only used for Newtonian noise)
+  KneeFrequency: 10               # Hz; freq where 'flat' noise rolls off
+  LowFrequencyLevel: 1e-9         # m/rtHz; seismic noise level below f_knee
+  Gamma: 0.8                      # abruptness of change at f_knee
+  Rho: 1.8e3                      # kg/m^3; density of the ground nearby
+  Beta: 0.8                       # quiet times beta: 0.35-0.60
+                                  # noisy times beta: 0.15-1.4
+  Omicron: 1                      # Feedforward cancellation factor
+  TestMassHeight: 1.5             # m
+  RayleighWaveSpeed: 250          # m/s
+
+Suspension:
+  Type: 'Quad'
+  FiberType: 'Tapered'
+  BreakStress: 750e6              # Pa; ref. K. Strain
+  Temp: 290
+  # VHCoupling:
+  #   theta: 1e-3                   # vertical-horizontal x-coupling (computed in precompIFO)
+
+  Silica:
+    Rho   : 2.2e3                 # Kg/m^3;
+    C     : 772                   # J/Kg/K;
+    K     : 1.38                  # W/m/kg;
+    Alpha : 3.9e-7                # 1/K;
+    dlnEdT: 1.52e-4               # (1/K), dlnE/dT
+    Phi   : 4.1e-10               # from G Harry e-mail to NAR 27April06 dimensionless units
+    Y     : 7.2e10                # Pa; Youngs Modulus
+    Dissdepth: 1.5e-2             # from G Harry e-mail to NAR 27April06
+
+  C70Steel:
+    Rho: 7800
+    C: 486
+    K: 49
+    Alpha: 12e-6
+    dlnEdT: -2.5e-4
+    Phi: 2e-4
+    Y: 212e9                      # measured by MB for one set of wires
+
+  MaragingSteel:
+    Rho: 7800
+    C: 460
+    K: 20
+    Alpha: 11e-6
+    dlnEdT: 0
+    Phi: 1e-4
+    Y: 187e9
+
+  # ref http://www.ioffe.ru/SVA/NSM/Semicond/Si/index.html
+  # all properties should be for T ~ 120 K
+  Silicon:
+    Rho: 2329                     # Kg/m^3;  density
+    C: 300                        # J/kg/K   heat capacity
+    K: 700                        # W/m/K    thermal conductivity
+    Alpha: 1e-10                  # 1/K      thermal expansion coeff
+    # from Gysin, et. al. PRB (2004)  E(T): E0 - B*T*exp(-T0/T)
+    # E0: 167.5e9 Pa   T0: 317 K   B: 15.8e6 Pa/K
+    dlnEdT: -2e-5                 # (1/K)    dlnE/dT  T=120K
+    Phi: 2e-9                     # Nawrodt (2010)      loss angle  1/Q
+    Y: 155.8e9                    # Pa       Youngs Modulus
+    Dissdepth: 1.5e-3             # 10x smaller surface loss depth (Nawrodt (2010))
+
+  # Note stage numbering: mirror is at beginning of stack, not end
+  #
+  # last stage length adjusted for d: 10mm and and d_bend = 4mm
+  # (since 602mm is the CoM separation, and d_bend is accounted for
+  # in suspQuad, so including it here would double count)
+  Stage:
+    # Stage1
+    - Mass: 39.6                  # kg; current numbers May 2006 NAR
+      # length adjusted for d = 10mm and d_bend = 4mm
+      # (since 602mm is the CoM separation, and d_bend is accounted for
+      # in suspQuad, so including it here would double count)
+      Length: 0.59                # m
+      Dilution: .nan              #
+      K: .nan                     # N/m; vertical spring constant
+      WireRadius: .nan            # m
+      Blade: .nan                 # blade thickness
+      NWires: 4
+
+    # Stage2
+    - Mass: 39.6
+      Length: 0.341
+      Dilution: 106
+      K: 5200
+      WireRadius: 310e-6
+      Blade: 4200e-6
+      NWires: 4
+
+    # Stage3
+    - Mass: 21.8
+      Length: 0.277
+      Dilution: 80
+      K: 3900
+      WireRadius: 350e-6
+      Blade: 4600e-6
+      NWires: 4
+
+    # Stage4
+    - Mass: 22.1
+      Length: 0.416
+      Dilution: 87
+      K: 3400
+      WireRadius: 520e-6
+      Blade: 4300e-6
+      NWires: 2
+
+  Ribbon:
+    Thickness: 115e-6             # m
+    Width: 1150e-6                # m
+
+  Fiber:
+    Radius: 205e-6                # m
+    # for tapered fibers
+    # EndRadius is tuned to cancel thermo-elastic noise (delta_h in suspQuad)
+    # EndLength is tuned to match bounce mode frequency
+    EndRadius: 400e-6             # m; nominal 400um
+    EndLength: 45e-3              # m; nominal 20mm
+
+## Optic Material -------------------------------------------------------
+Materials:
+  MassRadius: 0.17                # m; 
+  MassThickness: 0.200            # m; Peter F 8/11/2005
+
+  ## Dielectric coating material parameters----------------------------------
+  Coating:
+    ## high index material: tantala
+    Yhighn: 120e9                 # Ta2O5-TiO2 from 2020 LMA https://iopscience.iop.org/article/10.1088/1361-6382/ab77e9
+    Sigmahighn: 0.29              # 2020 LMA
+    CVhighn: 2.1e6                # Crooks et al, Fejer et al
+    Alphahighn: 3.6e-6            # 3.6e-6 Fejer et al, 5e-6 from Braginsky
+    Betahighn: 1.4e-5             # dn/dT, value Gretarrson (G070161)
+    ThermalDiffusivityhighn: 33   # Fejer et al
+    Indexhighn: 2.09              # 2020 LMA
+    Phihighn: 9.0e-5              # tantala mechanical loss
+    Phihighn_slope: 0.1
+
+    ## low index material: silica
+    Ylown: 70e9                   # 2020 LMA
+    Sigmalown: 0.19               # 2020 LMA
+    CVlown: 1.6412e6              # Crooks et al, Fejer et al
+    Alphalown: 5.1e-7             # Fejer et al
+    Betalown: 8e-6                # dn/dT,  (ref. 14)
+    ThermalDiffusivitylown: 1.38  # Fejer et al
+    Indexlown: 1.45
+    Philown: 1.25e-5              # silica mechanical loss
+    Philown_slope: 0              # G1600641 and arXiv:1712.05701 suggest
+                                  # slopes between 0 and 0.3, depending on
+                                  # deposition method. Slawek's analysis in
+                                  # 10.1103/PhysRevD.98.122001 assumes zero slope.
+
+
+  ## Substrate Material parameters--------------------------------------------
+  Substrate:
+    Temp: 295
+    c2: 7.6e-12                   # Coeff of freq depend. term for bulk mechanical loss, 7.15e-12 for Sup2
+    MechanicalLossExponent: 0.77  # Exponent for freq dependence of silica loss, 0.822 for Sup2
+    Alphas: 5.2e-12               # Surface loss limit (ref. 12)
+    MirrorY: 7.27e10              # N/m^2; Youngs modulus (ref. 4)
+    MirrorSigma: 0.167            # Kg/m^3; Poisson ratio (ref. 4)
+    MassDensity: 2.2e3            # Kg/m^3; (ref. 4)
+    MassAlpha: 3.9e-7             # 1/K; thermal expansion coeff. (ref. 4)
+    MassCM: 739                   # J/Kg/K; specific heat (ref. 4)
+    MassKappa: 1.38               # J/m/s/K; thermal conductivity (ref. 4)
+    RefractiveIndex: 1.45         # mevans 25 Apr 2008
+
+## Laser-------------------------------------------------------------------
+Laser:
+  Wavelength: 1.064e-6            # m
+  Power: 125                      # W
+
+## Optics------------------------------------------------------------------
+Optics:
+  Type: 'SignalRecycled'
+  PhotoDetectorEfficiency: 0.9    # photo-detector quantum efficiency
+  Loss: 37.5e-6                   # average per mirror power loss
+  BSLoss: 0.5e-3                  # power loss near beamsplitter
+  coupling: 1.0                   # mismatch btwn arms & SRC modes; used to
+                                  # calculate an effective r_srm
+  SubstrateAbsorption: 0.5e-4     # 1/m; bulk absorption coef (ref. 2)
+  pcrit: 10                       # W; tolerable heating power (factor 1 ATC)
+  Quadrature:
+    dc: 1.5707963                 # pi/2 # demod/detection/homodyne phase
+
+  ITM:
+    Transmittance: 0.014
+    CoatingThicknessLown: 0.308
+    CoatingThicknessCap: 0.5
+    CoatingAbsorption: 0.5e-6
+  ETM:
+    Transmittance: 5e-6
+    CoatingThicknessLown: 0.27
+    CoatingThicknessCap: 0.5
+  PRM:
+    Transmittance: 0.03
+  SRM:
+    Transmittance: 0.325
+    CavityLength: 55              # m, ITM to SRM distance
+    Tunephase: 0.0                # SEC tuning
+
+  Curvature:                      # ROC
+    ITM: 1970
+    ETM: 2192
+
+## Squeezer Parameters------------------------------------------------------
+# Define the squeezing you want:
+#   None: ignore the squeezer settings
+#   Freq Independent: nothing special (no filter cavities)
+#   Freq Dependent = applies the specified filter cavities
+#   Optimal = find the best squeeze angle, assuming no output filtering
+#   OptimalOptimal = optimal squeeze angle, assuming optimal readout phase
+Squeezer:
+  Type: 'Freq Dependent'
+  AmplitudedB: 12                 # SQZ amplitude [dB]
+  InjectionLoss: 0.05             # power loss to sqz
+  SQZAngle: 0                     # SQZ phase [radians]
+  LOAngleRMS: 30e-3               # quadrature noise [radians]
+
+  # Parameters for frequency dependent squeezing
+  FilterCavity:
+    L: 300                        # cavity length
+    Te: 1e-6                      # end mirror transmission
+    Lrt: 60e-6                    # round-trip loss in the cavity
+    Rot: 0                        # phase rotation after cavity
+    fdetune: -45.78               # detuning [Hz]
+    Ti: 1.2e-3                    # input mirror transmission [Power]
diff --git a/test/inherit/subdir/CustomBudget_mod.yaml b/test/inherit/subdir/CustomBudget_mod.yaml
new file mode 100644
index 0000000..259e301
--- /dev/null
+++ b/test/inherit/subdir/CustomBudget_mod.yaml
@@ -0,0 +1,6 @@
++inherit: 'CustomBudget'
+
+Squeezer:
+  AmplitudedB: 14
+  FilterCavity:
+    Lrt: 40e-6
\ No newline at end of file
diff --git a/test/inherit/test_inherit.py b/test/inherit/test_inherit.py
index b93e52a..5203edb 100644
--- a/test/inherit/test_inherit.py
+++ b/test/inherit/test_inherit.py
@@ -37,6 +37,50 @@ def test_inherit_load(pprint, tpath_join, fpath_join):
     )
 
 
+@pytest.mark.fast
+@pytest.mark.logic
+def test_inherit_custom_budget(fpath_join):
+    """
+    Test that inheritance works when the final budget is a custom budget in
+    an arbitrary directory instead of one of the canonical budgets
+    """
+    B_inherit = load_budget(fpath_join('subdir/CustomBudget_mod.yaml'))
+    B_orig = load_budget(fpath_join('subdir/CustomBudget'))
+
+    noises = [noise.__name__ for noise in B_inherit.noises]
+
+    assert B_inherit.name == 'A custom budget'
+    assert sorted(noises) == ['QuantumVacuum', 'Seismic']
+    assert(
+        sorted(B_inherit.ifo.diff(B_orig.ifo))
+        == sorted([
+            ('Squeezer.AmplitudedB', 14, 12),
+            ('Squeezer.FilterCavity.Lrt', 40e-6, 60e-6),
+        ])
+    )
+
+
+@pytest.mark.fast
+@pytest.mark.logic
+def test_load_uninherited_yaml(fpath_join):
+    """
+    Test that a yaml file not specifying an inherited budget is loaded into
+    the aLIGO budget
+    """
+    B_new = load_budget(fpath_join('new_ifo.yaml'))
+    B_aLIGO = load_budget('aLIGO')
+
+    assert B_new.name == 'Advanced LIGO'
+    assert(
+        sorted(B_new.ifo.diff(B_aLIGO.ifo))
+        == sorted([
+            ('Optics.Loss', 3.75e-05, 4e-05),
+            ('Squeezer.AmplitudedB', 12, None),
+            ('Squeezer.FilterCavity.L', 300, None),
+        ])
+    )
+
+
 @pytest.mark.fast
 @pytest.mark.logic
 def test_inherit_fail(pprint, tpath_join, fpath_join):
-- 
GitLab