Method: input.csv holds one merged energy axis (1.196-1.606 eV, 1024 points) and 15 spectra (5-100 uW). The dominant PL peak sits near 1.33 eV; a second rising feature near 1.55-1.6 eV is outside the fit window. Each spectrum was fitted in 1.25-1.43 eV with a Lorentzian plus constant offset, y = y0 + H/(1+4((E-xc)/w)^2), using scipy curve_fit.

Lorentzian results (power uW: peak intensity H, xc in eV):
5: 113.96, 1.31905 | 10: 215.28, 1.32420 | 15: 306.47, 1.32623 | 20: 395.10, 1.32770 | 25: 487.94, 1.32896
30: 584.25, 1.32993 | 35: 659.60, 1.33038 | 40: 786.09, 1.33148 | 45: 846.95, 1.33177 | 50: 945.70, 1.33277
60: 1133.86, 1.33316 | 70: 1332.60, 1.33426 | 80: 1518.13, 1.33444 | 90: 1746.89, 1.33507 | 100: 2022.06, 1.33562
(FWHM stays ~0.065 eV at all powers.) The fit table is saved in fit_results.csv; matplotlib is not installed on the server, so the two plots (intensity vs power, xc vs power) are provided as data only.

Allometric fits, y = a * P^b (scipy curve_fit, unweighted on the Lorentzian-fit values; fit uncertainty is the standard error of b):
- Intensity vs power: a = 17.70, b = 1.022 +/- 0.019 (weighted by the fit errors: b = 0.981 +/- 0.003). The intensity is essentially linear in power.
- Peak position vs power: a = 1.3116, b = 0.0040 +/- 0.0001 (weighted: 0.00376 +/- 0.00005), a small blue-shift with power.

The reported exponent is for peak intensity vs power.

RESULT: b = 1.022 ± 0.019
