Data: input.csv has one energy column (eV) and 15 spectra (5-100 uW). The dominant, isolated peak is at ~1.33 eV. Higher-energy features (~1.54 eV and a rising edge at the 1.6 eV edge of the range) are not fully contained in the window, so they were excluded.

Method: for each power, a Lorentzian plus linear background, A*(w/2)^2/((E-xc)^2+(w/2)^2)+c0+c1*(E-1.33), was fitted over 1.22-1.45 eV (scipy curve_fit; script fit.py). Results are stable when the window is changed (1.20-1.42, 1.25-1.42).

Fit results (5 -> 100 uW): peak intensity A rises from 118 to 1970 counts; xc shifts from 1.3172 to 1.3349 eV; FWHM ~0.065 -> 0.060 eV.

Allometric fit y = a * P^b on the two plots (intensity vs power, position vs power). Note: matplotlib is not installed on the server, so no image files were produced; the fitted data and fits are in this text and fit.py.
- Intensity vs power: a = 18.8 ± 1.5, b = 1.003 ± 0.019 (unweighted least squares; the fit-error-weighted version gives b = 0.959 ± 0.002 with reduced chi2 ~62, so the unweighted uncertainty is the more honest one). The intensity is linear in power.
- Peak position vs power: a = 1.309 eV, b = 0.0043 ± 0.0001 (unweighted: 0.00434 ± 0.00009). This is a very weak blue shift.

RESULT: b = 1.003 ± 0.019
