Method: input.csv holds one spectrum per excitation power (5-100 uW, 15 columns) on a common energy axis (1.196-1.606 eV). Each spectrum was fit with a sum of two Lorentzians plus a constant offset over 1.20-1.575 eV (the rising edge above ~1.58 eV is cut off by the detector range and is excluded). L(x) = A / (1 + ((x - xc)/w)^2), with A the peak height and w the HWHM.

Peaks found: peak 1 at xc ~ 1.32-1.335 eV (main peak) and peak 2 at xc ~ 1.55 eV (broad, w ~ 0.055 eV).

Lorentzian fit results (peak 1: intensity A1 [counts], xc1 [eV]):
 5 uW: 123.1, 1.3177 | 10: 228.3, 1.3228 | 15: 321.7, 1.3249 | 20: 412.7, 1.3266 | 25: 503.7, 1.3279
 30: 596.9, 1.3289 | 35: 673.1, 1.3294 | 40: 796.2, 1.3306 | 45: 856.9, 1.3308 | 50: 951.3, 1.3318
 60: 1136.3, 1.3323 | 70: 1325.6, 1.3334 | 80: 1505.6, 1.3337 | 90: 1728.2, 1.3343 | 100: 1994.4, 1.3350
(peak 2 intensity rises from 102 to 975 counts; xc2 stays ~1.550-1.553 eV. Full parameters are in lorentz_params.csv.)

Plots (data for them: lorentz_params.csv; matplotlib is not installed on the server so no image file was written):
 1) peak intensity vs power, 2) peak position xc vs power.

Allometric fit y = a * P^b (nonlinear least squares, unweighted, P in uW):
 - Peak 1 intensity: a = 20.4 +/- 1.6, b = 0.988 +/- 0.019 (essentially linear)
 - Peak 1 position xc: a = 1.3098 +/- 0.0005 eV, b = 0.0042 +/- 0.0001 (small blue shift, ~1.318 -> 1.335 eV)
 - Peak 2 intensity: a = 31.5 +/- 0.7, b = 0.746 +/- 0.005 (sublinear)
 - Peak 2 position: b = -0.0003 +/- 0.0002 (no shift)
(A weighted fit using the per-point fit errors as absolute sigma gave a degenerate covariance and was not used.)

The reported b is for the main peak (peak 1) intensity vs power.

RESULT: b = 0.988 ± 0.019
