109 lines
3.0 KiB
Julia
109 lines
3.0 KiB
Julia
# MSI_src.jl
|
|
|
|
module MSI_src
|
|
|
|
# Export the public MSI API
|
|
export OpenMSIData,
|
|
GetSpectrum,
|
|
IterateSpectra,
|
|
ImportMzmlFile,
|
|
plot_slice,
|
|
get_total_spectrum,
|
|
get_average_spectrum,
|
|
precompute_analytics,
|
|
process_spectrum,
|
|
generate_colorbar_image,
|
|
process_image_pipeline,
|
|
load_and_prepare_mask,
|
|
set_global_mz_range!,
|
|
get_global_mz_range,
|
|
MSIData,
|
|
_iterate_spectra_fast,
|
|
validate_spectrum
|
|
|
|
# Export the public preprocessing & precalculations API
|
|
export run_preprocessing_analysis,
|
|
main_precalculation,
|
|
FeatureMatrix,
|
|
Calibration,
|
|
Smoothing,
|
|
BaselineCorrection,
|
|
Normalization,
|
|
PeakPicking,
|
|
PeakBinning,
|
|
get_masked_spectrum_indices,
|
|
detect_peaks_profile_core,
|
|
detect_peaks_centroid_core,
|
|
smooth_spectrum_core,
|
|
apply_baseline_correction_core,
|
|
apply_normalization_core,
|
|
bin_peaks_core,
|
|
PeakSelection,
|
|
PeakAlignment,
|
|
find_calibration_peaks_core,
|
|
align_peaks_lowess_core,
|
|
MutableSpectrum,
|
|
transform_intensity_core,
|
|
calibrate_spectra_core
|
|
|
|
export apply_baseline_correction,
|
|
apply_smoothing,
|
|
apply_peak_picking,
|
|
apply_calibration,
|
|
apply_peak_alignment,
|
|
apply_normalization,
|
|
apply_peak_binning,
|
|
apply_intensity_transformation,
|
|
save_feature_matrix
|
|
|
|
# Include all source files directly into the main module
|
|
include("BloomFilters.jl")
|
|
include("Common.jl")
|
|
include("MSIData.jl")
|
|
include("ParserHelpers.jl")
|
|
include("mzML.jl")
|
|
include("imzML.jl")
|
|
include("MzmlConverter.jl")
|
|
include("Preprocessing.jl")
|
|
include("ImageProcessing.jl")
|
|
include("Precalculations.jl")
|
|
include("PreprocessingPipeline.jl")
|
|
|
|
using Setfield # For immutable struct updates
|
|
|
|
|
|
# --- Main Entry Point --- #
|
|
|
|
"""
|
|
OpenMSIData(filepath::String; cache_size=100)
|
|
|
|
Opens a .mzML or .imzML file and prepares it for data access.
|
|
|
|
This is the main entry point for the new data access API.
|
|
"""
|
|
function OpenMSIData(filepath::String; cache_size=300, spectrum_type_map::Union{Dict{Int, Symbol}, Nothing}=nothing)
|
|
local msi_data
|
|
if endswith(lowercase(filepath), ".mzml")
|
|
msi_data = load_mzml_lazy(filepath, cache_size=cache_size)
|
|
elseif endswith(lowercase(filepath), ".imzml")
|
|
msi_data = load_imzml_lazy(filepath, cache_size=cache_size)
|
|
else
|
|
error("Unsupported file type: $filepath. Please provide a .mzML or .imzML file.")
|
|
end
|
|
|
|
# Apply spectrum type map if provided
|
|
if spectrum_type_map !== nothing
|
|
for (idx, type_symbol) in spectrum_type_map
|
|
if 1 <= idx <= length(msi_data.spectra_metadata)
|
|
msi_data.spectra_metadata[idx] = @set msi_data.spectra_metadata[idx].type = type_symbol
|
|
else
|
|
@warn "Spectrum index $idx out of bounds for spectrum_type_map. Skipping."
|
|
end
|
|
end
|
|
end
|
|
|
|
return msi_data
|
|
end
|
|
|
|
end # module MSI_src
|