Method: input.csv holds 15 merged PL spectra (Energy in eV, 5-100 uW, 1024 points). Each spectrum was fitted with a Lorentzian plus constant offset, I*(w/2)^2/((x-xc)^2+(w/2)^2)+c, over 1.20-1.52 eV, which isolates the dominant peak near 1.33 eV. There are further features at higher energy (about 1.5-1.6 eV) that I did not fit. Per-power results are in fit_results.csv (P, I, I_err, xc, xc_err, FWHM).

Fit results (power uW: peak intensity counts, xc eV):
5: 103.8, 1.3190 | 10: 196.6, 1.3243 | 15: 279.5, 1.3263 | 20: 365.8, 1.3278 | 25: 449.9, 1.3291 | 30: 536.2, 1.3300 | 35: 607.2, 1.3305 | 40: 726.0, 1.3316 | 45: 780.3, 1.3319 | 50: 866.3, 1.3329 | 60: 1041.3, 1.3333 | 70: 1223.9, 1.3344 | 80: 1398.0, 1.3346 | 90: 1612.3, 1.3352 | 100: 1872.8, 1.3357

Plot 1 data: peak intensity vs power. Plot 2 data: xc vs power (both in fit_results.csv; matplotlib is not installed on the server, so no image was rendered).

Allometric fit y = a * P^b, unweighted least squares:
- Intensity vs power: b = 1.03 +/- 0.02. This is essentially linear. A weighted fit using the Lorentzian fit errors gives b = 0.974 +/- 0.006, and b ranges 0.96-1.05 depending on the fit window. The fit-window systematics are therefore about 0.04, larger than the formal error.
- Peak position vs power: b = 0.0040 +/- 0.0001, a small blue-shift of about 16 meV between 5 and 100 uW.

RESULT: b = 1.03 ± 0.02
