Method: input.csv holds one merged energy axis (1.196-1.606 eV, 1024 points) with 15 spectra (5-100 uW). Each spectrum was fitted with a Lorentzian plus constant offset, y0 + A/(1+((x-xc)/w)^2), over the dominant peak window 1.22-1.45 eV (scipy curve_fit). The spectra contain other features (a broad band near 1.55 eV and a rise at the 1.6 eV edge) that are excluded by the window. Plots were not rendered because matplotlib is not installed on the server; the fitted values are below.

Lorentzian fit results (power uW: intensity A, xc eV):
5: 114.5, 1.3193 | 10: 216.4, 1.3245 | 15: 305.7, 1.3265 | 20: 395.7, 1.3279 | 25: 486.5, 1.3291
30: 579.4, 1.3301 | 35: 654.7, 1.3305 | 40: 778.2, 1.3316 | 45: 838.6, 1.3319 | 50: 932.0, 1.3329
60: 1116.3, 1.3333 | 70: 1308.2, 1.3344 | 80: 1489.2, 1.3345 | 90: 1712.0, 1.3351 | 100: 1980.2, 1.3357
(linewidth w about 0.031 eV throughout)

Allometric fit, y = a * P^b (nonlinear least squares):
- Intensity vs power: a = 18.4, b = 1.009 ± 0.019 (unweighted; a fit weighted by the Lorentzian-fit errors gives b = 0.966 ± 0.002, but its uncertainty ignores scatter around the power law). Fits with other windows (1.20-1.50, 1.25-1.42 eV) give b between 1.017 and 1.018, so the intensity is linear in power within about 2%.
- Peak position vs power: a = 1.312, b = 0.0039 ± 0.0001 (the peak blue-shifts by about 17 meV from 5 to 100 uW).

RESULT: b = 1.009 ± 0.019
