Data: input.csv = one merged table, energy (1.196-1.606 eV, 1024 points) plus 15 PL spectra at 5-100 uW. The dominant peak is near 1.33 eV. Weaker features sit near ~1.54 eV and at the upper edge of the range (>1.6 eV); these are outside the fit window.

Method: each of the 15 spectra was fitted with a Lorentzian plus linear background, y = A/(1+((x-xc)/w)^2) + c0 + c1*(x-1.34), in the window 1.27-1.42 eV (scipy curve_fit). Peak intensity A and position xc were extracted for every power. Both were then plotted against power, and an allometric fit y = a*P^b was applied to each plot.

Lorentzian fit results (power uW: A counts, xc eV):
5: 135.5, 1.3158 | 10: 235.6, 1.3215 | 15: 334.7, 1.3237 | 20: 424.9, 1.3255 | 25: 521.9, 1.3269
30: 625.2, 1.3278 | 35: 699.3, 1.3285 | 40: 826.0, 1.3299 | 45: 890.7, 1.3301 | 50: 990.4, 1.3312
60: 1190.4, 1.3317 | 70: 1388.0, 1.3330 | 80: 1583.5, 1.3332 | 90: 1817.9, 1.3339 | 100: 2096.5, 1.3346

Allometric fits (y = a*P^b):
- Intensity vs power: b = 0.998 ± 0.019 (unweighted least squares, standard error of the fit), so the intensity is essentially linear in power. A fit weighted by the Lorentzian-fit errors gives b = 0.980 ± 0.004.
- Peak position vs power: b = 0.0046 ± 0.0001. The peak blue-shifts only slightly (about 1.316 to 1.335 eV), so xc is almost independent of power in the allometric sense.

Robustness check: other windows and a global multi-Lorentzian fit of the whole spectrum give intensity b between about 0.91 and 1.04. The result therefore depends on the peak model, which is why it is reported with the fit error only.

RESULT: b = 0.998 ± 0.019
