65 lines
2.1 KiB
Julia
65 lines
2.1 KiB
Julia
using MSI_src
|
|
using Statistics, Plots, Images
|
|
|
|
# 1. Definir función de contraste (si no la tienes ya en la sesión)
|
|
function apply_triq(img_matrix)
|
|
vals = filter(x -> x > 0 && isfinite(x), img_matrix)
|
|
if isempty(vals) return img_matrix end
|
|
q = quantile(vals, 0.98)
|
|
if q == 0 q = maximum(vals) end
|
|
return clamp.(img_matrix ./ q, 0.0, 1.0)
|
|
end
|
|
|
|
# 2. Configuración de rutas
|
|
path_data = "Hoja.imzML"
|
|
path_mask = "region_interes.png"
|
|
output_folder = "resultados_expertos/batch_triq"
|
|
mkpath(output_folder)
|
|
|
|
# 3. Carga de datos
|
|
data = OpenMSIData(path_data)
|
|
|
|
# 4. Obtener espectro promedio SOLO de la zona de la máscara (ROI)
|
|
println("Calculando espectro promedio en la ROI...")
|
|
# Nota: Usamos la función de MSI_src para obtener el promedio filtrado
|
|
mzs, avg_ints = MSI_src.get_average_spectrum(data, mask_path=path_mask)
|
|
|
|
# 5. Identificar picos importantes (ej. > 2% del pico base)
|
|
max_int = maximum(avg_ints)
|
|
umbral = max_int * 0.02 # Ajusta este valor (0.01 para 1%, 0.05 para 5%)
|
|
indices_picos = findall(x -> x > umbral, avg_ints)
|
|
|
|
println("Se encontraron $(length(indices_picos)) iones que superan el umbral.")
|
|
|
|
# 6. Bucle para generar imágenes con TrIQ
|
|
for idx in indices_picos
|
|
mz_val = mzs[idx]
|
|
|
|
# Validar rango (ejemplo: m/z 50 a 700)
|
|
if mz_val < 50.0 || mz_val > 700.0
|
|
continue
|
|
end
|
|
|
|
println("Procesando m/z: $(round(mz_val, digits=2))")
|
|
|
|
# A. Extraer los datos crudos con la máscara aplicada
|
|
raw_slice = MSI_src.get_mz_slice(data, mz_val, 0.05, mask_path=path_mask)
|
|
|
|
# B. Aplicar contraste TrIQ
|
|
enhanced_slice = apply_triq(raw_slice)
|
|
|
|
# C. Crear el mapa de calor (Heatmap)
|
|
p = heatmap(enhanced_slice,
|
|
title="Ion m/z: $(round(mz_val, digits=2))",
|
|
color=:viridis,
|
|
aspect_ratio=:equal,
|
|
yflip=true,
|
|
xaxis=false, yaxis=false)
|
|
|
|
# D. Guardar
|
|
nombre_archivo = "ion_$(round(mz_val, digits=2))_triq.png"
|
|
savefig(p, joinpath(output_folder, nombre_archivo))
|
|
end
|
|
|
|
println("--- Proceso completado. Revisa la carpeta: $output_folder ---")
|