using MSI_src
using Statistics, Images, Interpolations

# 1. Configuration
data_path = "Leaf.imzML"
mask_path = "region_of_interest.png"
output_folder = "datos_para_ai"
img_size = (224, 224) # Standard size for CNN
mkpath(output_folder)

# 2. Data loading
data = OpenMSIData(data_path)

# 3. Get important peaks (you can use your previous logic)
mzs, avg_ints = MSI_src.get_average_spectrum(data, mask_path=mask_path)
threshold = maximum(avg_ints) * 0.02
peak_indices = findall(x -> x > threshold, avg_ints)

println("Exporting $(length(peak_indices)) ions...")

for idx in peak_indices
    mz_val = mzs[idx]
    if mz_val < 50.0 || mz_val > 700.0 continue end

    # A. Extract slice (raw, no plots)
    raw_slice = MSI_src.get_mz_slice(data, mz_val, 0.05, mask_path=mask_path)
    
    # B. TrIQ Normalization (as in your script)
    vals = filter(x -> x > 0 && isfinite(x), raw_slice)
    if isempty(vals) continue end
    q = quantile(vals, 0.98)
    q = q == 0 ? maximum(vals) : q
    enhanced = clamp.(raw_slice ./ q, 0.0, 1.0)

    # C. Rescale to 224x224 (Crucial for CNN)
    # We use imresize from Images.jl
    img_resized = imresize(enhanced, img_size)

    # D. Save as raw PNG (Grayscale, no axes)
    filename = "ion_$(round(mz_val, digits=2)).png"
    save(joinpath(output_folder, filename), Gray.(img_resized))
end
