Method: input.csv holds one merged energy axis (1.196-1.606 eV, 1024 points) and 15 spectra (5-100 uW). The dominant peak is near 1.33 eV. Two weaker features sit near 1.54 and 1.60+ eV; a 3-peak check (see below) did not change the main peak. Each spectrum was fitted with offset + Lorentzian, y = y0 + A/(1+((x-xc)/g)^2), over 1.20-1.46 eV (scipy curve_fit). A is the peak intensity.

Fitted peak intensity A (counts) and position xc (eV) per power:
5 uW: 115.2, 1.3195
10 uW: 217.0, 1.3246
15 uW: 306.8, 1.3266
20 uW: 396.7, 1.3280
25 uW: 486.5, 1.3292
30 uW: 578.2, 1.3302
35 uW: 653.1, 1.3306
40 uW: 776.0, 1.3317
45 uW: 835.4, 1.3319
50 uW: 928.2, 1.3329
60 uW: 1110.6, 1.3333
70 uW: 1300.8, 1.3344
80 uW: 1479.6, 1.3346
90 uW: 1700.6, 1.3352
100 uW: 1966.4, 1.3357
(Fitted width g is about 0.030-0.033 eV throughout.)

Plot 1 (intensity vs power) and plot 2 (xc vs power): the plotting library (matplotlib) is not available on the server, so no image was rendered. The plotted data are the table above, each fitted with the allometric law y = a * P^b.

Allometric fits y = a * P^b (unweighted least squares):
- Intensity vs power: a = 18.7 +/- 1.5, b = 1.004 +/- 0.019. The intensity is linear in power.
- Position vs power: a = 1.3123 +/- 0.0005, b = 0.0039 +/- 0.0001. The peak blue-shifts only about 16 meV over the range; the exponent is near zero.

Robustness: a 3-Lorentzian global fit gives intensity b = 0.990 +/- 0.019 (unweighted) and position b = 0.0041 +/- 0.0001. Weighting by the fit errors gives intensity b = 0.960 +/- 0.002, but this error is only statistical and the weighted fit is dominated by the low-power points.

RESULT: b = 1.004 ± 0.019
