From 1b898854476ff33e0145104430cc68905d6fd594 Mon Sep 17 00:00:00 2001 From: ThorBarRa Date: Fri, 5 Dec 2025 10:28:16 +0100 Subject: [PATCH] Added documentation to readme file. Re-arranged folder content slightly --- beamtime/Napp_RH_p.m | 3 +- beamtime/Napp_p_RH.m | 4 +- beamtime/Napp_p_ice.m | 5 +- beamtime/addPhotonEnergy.m | 2 +- beamtime/addSampleNotes.m | 2 +- beamtime/nappAlignImages.m | 4 +- beamtime/nappAnnotateSurvey.m | 16 +- beamtime/nappBackground.m | 118 +++- beamtime/nappBackgroundXps.m | 114 ---- beamtime/nappBindingEnergyXps.m | 5 +- beamtime/nappCombineSpectra.m | 167 +++--- beamtime/nappCombineSpectra~m.slmx | Bin 7191 -> 0 bytes beamtime/nappCopyShift.m | 169 +++++- beamtime/nappDetermineShiftXps.m | 252 +++++++-- {import => beamtime}/nappFileList.m | 290 ++++++++-- beamtime/nappFitGaussXps.m | 13 +- beamtime/nappFitGaussXpsDevelopment.m | 4 +- beamtime/nappGenerateSpectra.m | 109 +++- beamtime/nappPlot.m | 180 ++++--- beamtime/nappScale.m | 154 +++++- beamtime/readme.md | 505 ++++++++++++++++++ import/QuickAndDirtyNexafsImport.m | 2 + .../.gitignore | 36 ++ utils/distFig_Error.mat | Bin 112451 -> 164094 bytes {beamtime => utils}/nappImage.m | 6 +- 25 files changed, 1728 insertions(+), 432 deletions(-) delete mode 100644 beamtime/nappBackgroundXps.m delete mode 100644 beamtime/nappCombineSpectra~m.slmx rename {import => beamtime}/nappFileList.m (86%) create mode 100644 beamtime/readme.md create mode 100644 import/sarastokes-h5tools-matlab-8d4d610/.gitignore rename {beamtime => utils}/nappImage.m (91%) diff --git a/beamtime/Napp_RH_p.m b/beamtime/Napp_RH_p.m index 540b65a..e768069 100644 --- a/beamtime/Napp_RH_p.m +++ b/beamtime/Napp_RH_p.m @@ -1,6 +1,5 @@ function relHum = Napp_RH_p(T_current,partial_pressure_water) -%Napp_RH_p calculates the relative humidity for a given -% temperature and water pressure. +%Napp_RH_p helper function that calculates the relative humidity for a given temperature and water pressure. % % With the relative humidity referenced % to liquid water (RH_w) as opposed to ice (RH_i), the activity of water diff --git a/beamtime/Napp_p_RH.m b/beamtime/Napp_p_RH.m index d9e3378..7b2d196 100644 --- a/beamtime/Napp_p_RH.m +++ b/beamtime/Napp_p_RH.m @@ -1,6 +1,6 @@ function Napp_p_RH(T_current,RH) -%Napp_p_RH calculates the partial pressure of water for a given -% temperature and relative humidity. With the relative humidity referenced +%Napp_p_RH helper function that calculates the partial pressure of water for a given temperature and relative humidity. +% With the relative humidity referenced % to liquid water (RH_w) as opposed to ice (RH_i), the activity of water % is: activity_w = RH_{water}/100 % diff --git a/beamtime/Napp_p_ice.m b/beamtime/Napp_p_ice.m index b1cb7b5..0b420c8 100644 --- a/beamtime/Napp_p_ice.m +++ b/beamtime/Napp_p_ice.m @@ -1,7 +1,6 @@ function p = Napp_p_ice(T_current) -%Napp_p_ice(T_current) plots the vapour pressure of ice between 200-270 K -% and marks the vapour pressure of ice at a given temperature. It also -% displays the vapour pressure at a temperature of choice in the command +%Napp_p_ice marks the vapor pressure at a given temperature in a plot of the vapor pressure of ice between 200-270 K +% It also displays the vapor pressure at a temperature of choice in the command % window. % % * Napp_p_ice(T_current) diff --git a/beamtime/addPhotonEnergy.m b/beamtime/addPhotonEnergy.m index 6cf282a..d3524d2 100644 --- a/beamtime/addPhotonEnergy.m +++ b/beamtime/addPhotonEnergy.m @@ -1,5 +1,5 @@ function FileList = addPhotonEnergy(FileList,fileNumber,notesToAdd,dataMonth,dataYear) -%addPhotonEnergy adds the beam lines photon energy to the data table +%addPhotonEnergy adds the Xray photon energy for selected measurements to the data table % % FileList = addPhotonEnergy(FileList,[1,8:12,26],1000,2,2022); % diff --git a/beamtime/addSampleNotes.m b/beamtime/addSampleNotes.m index 3f8c601..af55ca9 100644 --- a/beamtime/addSampleNotes.m +++ b/beamtime/addSampleNotes.m @@ -8,7 +8,7 @@ function DataTable = addSampleNotes(DataTable,fileNumber,notesToAdd,dataMonth,da % * the name of the data table, % * the file numbers of the SES scans to which the info should be added % * a text string describing the sample, -% * the month and the year that the data was aquired +% * the month and the year that the data was acquired % * optional: 'XPS' or 'NEXAFS' as last input argument to limit to either XPS data or NEXAFS % data diff --git a/beamtime/nappAlignImages.m b/beamtime/nappAlignImages.m index 4af7cc6..7160240 100644 --- a/beamtime/nappAlignImages.m +++ b/beamtime/nappAlignImages.m @@ -1,6 +1,6 @@ function DataTable = nappAlignImages(DataTable,varargin) -%nappAlignImages shifts each sequence iteration to align images with a -%drifting kinetic energy of the PE features. +%nappAlignImages shifts each sequence iteration to align images with a drifting kinetic energy of the PE features. +% The kinetic energy must be determined first, before running this function. % % FileList = nappAlignImages(FileList,'tableSelection',tmpDataSelection,... % 'tableVariable','image'); diff --git a/beamtime/nappAnnotateSurvey.m b/beamtime/nappAnnotateSurvey.m index 18dca06..13bbe8c 100644 --- a/beamtime/nappAnnotateSurvey.m +++ b/beamtime/nappAnnotateSurvey.m @@ -1,5 +1,19 @@ function nappAnnotateSurvey(X,Y,dataObjs,labeltext) -% nappAnnotateSurvey adds region labels to a survey in the topmost figure. +%nappAnnotateSurvey is a small helper function that adds region labels to a survey in the topmost figure. +% +% +% nappAnnotateSurvey(tmpxRayEnergy-84-tmpxShift,tmpyPosition,dataObjs(1),'Au4f7/2'); +% +% The input is: +% +% y position of label: dataObjs = findobj(gcf,'-property','YData'); +% x position of label: tmpxRayEnergy-84-tmpxShift: X-ray energy - binding +% energy - shift (including beamline offset) +% tmpxShift = 7; +% tmpxRayEnergy = 850; +% tmpyPosition = 0.5E5; % shift of label above data. +% tmpyPositionTwo = 0.8E5; +% ha = annotation('arrow'); % store the arrow information in ha ha.Parent = gca; % associate the arrow the the current axes ha.X = [X X]; % the location in data units diff --git a/beamtime/nappBackground.m b/beamtime/nappBackground.m index 3dfb487..20246e8 100644 --- a/beamtime/nappBackground.m +++ b/beamtime/nappBackground.m @@ -1,37 +1,103 @@ function DataTable = nappBackground(DataTable,varargin) -%nappBackground determines and subtracts the background from PE or XAS spectra +%NAPPBACKGROUND Removes background from photoelectron or XAS spectra. +% This function determines and removes the background from PE or XAS +% spectra using mean subtraction or curve fitting (linear or exponential). +% Background correction can be performed on kinetic energy, binding energy, +% or X-ray photon energy scales. Results are optionally normalized by +% dividing instead of subtracting. % -% FileList = nappBackground(FileList,energyStart,energyEnd); +% SYNTAX +% ------ +% DataTable = NAPPBACKGROUND(DataTable, energyStart, energyEnd) % -% FileList = nappBackground(FileList,368,370,'tableSelection',tmpDataSelection,'energyScale','kinetic',... -% 'mode','mean','showFigures','off'); +% DataTable = NAPPBACKGROUND(DataTable, energyStart, energyEnd, 'Name', Value) % +% EXAMPLES +% -------- +% % Simple mean subtraction with kinetic energy scale +% DataTable = nappBackground(DataTable, 368, 370); % -% *input* -% FileList: data table -% energyStart: smallest value of energy range to use for background calculation -% (can also be binding energy) -% energyEnd: largest value of energy energy range to use for background calculation -% (can also be binding energy) -% tableSelection (optional): logical array to filter data table -% tableVariable: choose to process either -% 'spectrum_counts','spectrum_countsPerSecond' (default), or -% 'spectrum_countsNorm'. -% mode: mean(default) subtract the mean of the energy range from -% spectrum; linfit subtract a linear regression through the energy range -% from spectrum -% showFigures, on(default): show fit in figure, off do not show fit in -% figure -% energyScale: kinetic(default): work with kinetic energy scale; binding -% works with binding energy scale. +% % Linear fit on selected rows with binding energy scale +% DataTable = nappBackground(DataTable, 368, 370, ... +% 'tableSelection', tmpDataSelection, ... +% 'energyScale', 'binding', ... +% 'mode', 'linfit', ... +% 'showFigures', 'off'); % +% INPUT ARGUMENTS +% --------------- +% DataTable table +% Data table containing spectra and energy scales. Must contain +% one of the following variables: 'spectrum_counts', +% 'spectrum_countsPerSecond', or 'spectrum_countsNorm'. % -% *output* -% The table variable passed to the function as tableVariable -% parameter will be overwritten with the background subtracted spectrum. +% energyStart numeric scalar or vector +% Lower bound(s) of energy range for background calculation. +% Scalar: single energy range. +% Vector [E1, E2]: two disjoint ranges [E1, E2] to [end] and [E2, E1]. +% Note: For binding energy scale, comparison direction reverses. % -% The function parameters (mode, energyStart, energyEnd) are written -% to the table as log. +% energyEnd numeric scalar or vector +% Upper bound(s) of energy range for background calculation. +% See energyStart for vector behavior. +% +% NAME-VALUE PAIR ARGUMENTS (optional) +% ------------------------------------ +% 'tableSelection' logical array (default: all rows) +% Logical index to filter rows in DataTable. +% Example: tableSelection = DataTable.quality > 0.8 +% +% 'tableVariable' char vector (default: 'spectrum_countsPerSecond') +% Spectral variable to process. Must be one of: +% - 'spectrum_counts' +% - 'spectrum_countsPerSecond' +% - 'spectrum_countsNorm' +% +% 'mode' char vector (default: 'mean') +% Background subtraction method: +% - 'mean': subtract mean intensity in energy range +% - 'linfit': subtract linear regression (poly1 fit) +% - 'exponential': subtract exponential fit (exp2) +% - 'mean, divide': divide by mean (normalization) +% - 'linfit, divide': divide by linear fit +% - 'exponential, divide': divide by exponential fit +% +% 'energyScale' char vector (default: 'kinetic') +% Energy axis to use for background calculation: +% - 'kinetic': uses scientaEkin_eV column +% - 'binding': uses bindingEnergy_eV column +% - 'xRay': uses xRayEkin_eV column (for NEXAFS data) +% +% 'showFigures' char vector (default: 'on') +% Display fit visualization: +% - 'on': show fit plot with data and excluded points +% - 'off': suppress figure output +% +% OUTPUT ARGUMENTS +% ---------------- +% DataTable table +% Updated data table with background-corrected spectra. The table +% variable specified by 'tableVariable' is overwritten with +% corrected data. If mode contains 'divide', results are written +% to 'spectrum_countsNorm' instead. +% +% Three log columns are added/updated: +% - logBackgroundMode: fitting method used +% - logBackgroundRange: [energyStart, energyEnd] for each row +% - logBackgroundDate: timestamp of processing +% +% NOTES +% ----- +% - Empty or missing spectra in tableVariable will trigger an error. +% - For 'mean' mode with binding energy, energy comparisons use <= operator +% (reversed compared to kinetic energy mode). +% - Exponential fits ('exp2' type) are computed via nonlinear least squares +% excluding points outside the specified energy range. +% - Generated log entries are identical for all rows in tableSelection. +% +% SEE ALSO +% -------- +% inputParser, fit, fittype, prepareCurveData, excludedata diff --git a/beamtime/nappBackgroundXps.m b/beamtime/nappBackgroundXps.m deleted file mode 100644 index 72d5d46..0000000 --- a/beamtime/nappBackgroundXps.m +++ /dev/null @@ -1,114 +0,0 @@ -function DataTable = nappBackground(DataTable,varargin) -%nappBackground determines and subtracts the background from PE or XAS spectra -% -% FileList = nappBackground(FileList,energyStart,energyEnd); -% -% FileList = nappBackground(FileList,368,370,'tableSelection',tmpDataSelection,'energyScale','kinetic',... -% 'mode','mean','showFigures','off'); -% -% -% *input* -% FileList: data table -% energyStart: smallest value of energy range to use for background calculation -% (can also be binding energy) -% energyEnd: largest value of energy energy range to use for background calculation -% (can also be binding energy) -% tableSelection (optional): logical array to filter data table -% tableVariable: choose to process either -% 'spectrum_counts','spectrum_countsPerSecond' (default), or -% 'spectrum_countsNorm'. -% mode: mean(default) subtract the mean of the energy range from -% spectrum; linfit subtract a linear regression through the energy range -% from spectrum -% showFigures, on(default): show fit in figure, off do not show fit in -% figure -% energyScale: kinetic(default): work with kinetic energy scale; binding -% works with binding energy scale. -% -% -% *output* -% The table variable passed to the function as tableVariable -% parameter will be overwritten with the background subtracted spectrum. -% -% The function parameters (mode, energyStart, energyEnd) are written -% to the table as log. - - - -% Define conditions and defaults of input -defaultTableVariable = 'spectrum_countsPerSecond'; -expectedTableVariable = {'spectrum_counts','spectrum_countsPerSecond','spectrum_countsNorm'}; -defaultMode = 'mean'; -expectedMode = {'mean','linfit'}; -defaultTableSelection = true(size(DataTable,1),1); -defaultShowFigures = 'on'; -expectedShowFigures = {'on','off'}; -defaultEnergyScale = 'kinetic'; -expectedEnergyScale = {'kinetic','binding'}; - -% Parse input -p = inputParser; - addRequired(p,'DataTable',@istable); - addRequired(p,'energyStart',@isnumeric) - addRequired(p,'energyEnd',@isnumeric) - addOptional(p,'tableSelection',defaultTableSelection,@islogical); - addParameter(p,'tableVariable',defaultTableVariable,... - @(x) any(validatestring(x,expectedTableVariable))); - addParameter(p,'mode',defaultMode,... - @(x) any(validatestring(x,expectedMode))); - addParameter(p,'showFigures',defaultShowFigures,... - @(x) any(validatestring(x,expectedShowFigures))); -addParameter(p,'energyScale',defaultEnergyScale,... - @(x) any(validatestring(x,expectedEnergyScale))); -parse(p,DataTable,varargin{:}); - - % check input (all elements of input variable need to have non-zero size) -if ~all(cell2mat(cellfun(@size,p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable),'UniformOutput',false)),'all') - disp('The table variable appears to be empty. I quit now') - error('The table variable appears to be empty.') -end - - % repeat this for all columns in input. -for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1) - if contains(p.Results.energyScale,'kinetic') - % LINEAR FIT - if contains(p.Results.mode,'linfit') - disp('linfit not yet supported') - % MEAN - else - b_1 = find(p.Results.DataTable(p.Results.tableSelection,:).scientaEkin_eV{ii} >= p.Results.energyStart,1); - b_2 = find(p.Results.DataTable(p.Results.tableSelection,:).scientaEkin_eV{ii} >= p.Results.energyEnd,1); - - if b_2 == 1 - b_2=10; - end - - b_mean = mean(p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable){ii}(b_1:b_2),'omitnan'); - tmp(ii,1) = cellfun(@(x) x-b_mean,p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable)(ii),'UniformOutput',false); - - - end - - elseif contains(p.Results.energyScale,'binding') - if contains(p.Results.mode,'linfit') - disp('linfit not yet supported') - % MEAN - else - b_1 = find(p.Results.DataTable(p.Results.tableSelection,:).bindingEnergy_eV{ii} <= p.Results.energyStart,1); - b_2 = find(p.Results.DataTable(p.Results.tableSelection,:).bindingEnergy_eV{ii} <= p.Results.energyEnd,1); - - if b_2 == 1 - b_2=10; - end - - b_mean = mean(p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable){ii}(b_2:b_1),'omitnan'); - tmp(ii,1) = cellfun(@(x) x-b_mean,p.Results.DataTable(p.Results.tableSelection,:).(p.Results.tableVariable)(ii),'UniformOutput',false); - - - end - end -end -% fill selected rows -DataTable(p.Results.tableSelection,:).(p.Results.tableVariable) = tmp; - -end \ No newline at end of file diff --git a/beamtime/nappBindingEnergyXps.m b/beamtime/nappBindingEnergyXps.m index de26fe1..7210a33 100644 --- a/beamtime/nappBindingEnergyXps.m +++ b/beamtime/nappBindingEnergyXps.m @@ -1,10 +1,9 @@ function DataTable = nappBindingEnergyXps(DataTable,varargin) -%nappBindingEnergyXps calculates the binding energy scale for spectra based -%on the binding energy shift. +%nappBindingEnergyXps calculates the binding energy scale for spectra based on the kinetic energy shift. % % *Requirement* % Needs table variable bindingEnergyShift as input. Run -% nappDetermineShiftXps.m or nappCopyShift.m first +% nappDetermineShiftXps.m and nappCopyShift.m first % % FileList = nappBindingEnergyXps(FileList,'tableSelection',... % tmpDataSelection); diff --git a/beamtime/nappCombineSpectra.m b/beamtime/nappCombineSpectra.m index acae5c8..9e93d59 100644 --- a/beamtime/nappCombineSpectra.m +++ b/beamtime/nappCombineSpectra.m @@ -1,67 +1,28 @@ function combinedSpectrum = nappCombineSpectra(DataTable,varargin) -%nappCombineSpectra Combine multiple PE or NEXAFS spectra through averaging or summation +%NAPPCOMBINESPECTRA Combine multiple PE or NEXAFS spectra through averaging or summation. +% This function combines selected photoelectron (PE) or X-ray absorption +% spectroscopy (NEXAFS) spectra into a single spectrum by averaging or +% summing. Data are automatically interpolated onto a common energy axis +% to handle slight variations in energy sampling between acquisitions. % -% combinedSpectrum = nappCombineSpectra(DataTable) -% combinedSpectrum = nappCombineSpectra(DataTable, Name, Value) +% The output format is controlled by the 'output' parameter: +% - 'simple' (default): Returns a numeric matrix [energy, intensity, (std)] +% suitable for quick plotting and analysis. Requires custom code for +% plotting and further processing. +% - 'complete': Returns a MATLAB table (same format as input DataTable) with +% energy axis and combined spectrum plus metadata. Critically, this allows +% all existing nappXXX functions to operate directly on the combined result +% without conversion. Output table is named '_combined.h5' +% where originalName is from the first selected row's name field. % -% Combines selected photoelectron or NEXAFS spectra into a single spectrum. -% Data are interpolated onto a common energy axis to handle slight variations -% in energy sampling between different acquisitions. +% SYNTAX +% ------ +% combinedSpectrum = NAPPCOMBINESPECTRA(DataTable) % -% INPUTS: -% DataTable - Table containing spectroscopy data with spectrum variables and -% energy scales -% -% NAME-VALUE PAIR ARGUMENTS: -% -% 'tableSelection' - Logical array to filter which rows of DataTable to combine -% Default: all rows (true(size(DataTable,1),1)) -% Example: contains(DataTable.name, 'C1s') to select C1s spectra -% -% 'tableVariable' - Select which spectrum type to combine: -% PE spectra: -% 'spectrum_counts' - Raw spectrum counts -% 'spectrum_countsPerSecond' - Count rate normalized spectrum -% 'spectrum_countsNorm' - Normalized spectrum (arbitrary units) -% -% NEXAFS spectra: -% 'nexafsSpectrum' - Processed NEXAFS spectrum -% 'nexafsSpectrumPreBackground' - Before background subtraction -% 'nexafsSpectrumPreNorm' - Before normalization -% 'nexafsSpectrumPreGasPhase' - Before gas phase correction -% 'nexafsSpectrumPreI0' - Before I0 normalization -% 'nexafsSpectrumPreAdvCarb' - Before adventitious carbon correction -% -% 'tableRow' - Index of the spectrum whose energy axis will be used as the -% interpolation reference (within the filtered table) -% Default: 1 (first spectrum in filtered selection) -% The common energy range will span the overlap of all spectra -% -% 'mode' - Method for combining spectra: -% 'sum' (default) - Add all spectra together (increases signal) -% 'average' - Calculate mean and standard deviation across spectra -% 'subtract' - Subtract spectra (not yet implemented) -% -% 'energyScale' - Energy axis for PE spectra (ignored for NEXAFS): -% 'kinetic' (default) - Kinetic energy scale (eV) -% 'binding' - Binding energy scale (eV) -% 'xRay' - Photon energy scale (eV) -% -% OUTPUT: -% combinedSpectrum - Matrix containing the combined spectrum: -% Column 1: Energy values (eV) on common interpolated axis -% Column 2: Combined intensity (sum or mean depending on mode) -% Column 3: Standard deviation (only when mode = 'average') -% -% NOTES: -% - The function automatically determines the overlapping energy range across -% all selected spectra and interpolates onto a common grid -% - The reference energy grid comes from the spectrum specified by 'tableRow' -% - Missing or NaN values are excluded from calculations -% - For 'average' mode, standard deviation quantifies variability between spectra -% -% EXAMPLES: +% combinedSpectrum = NAPPCOMBINESPECTRA(DataTable, 'Name', Value) % +% EXAMPLES +% -------- % % Average normalized C1s spectra with binding energy scale % selection = contains(DataTable.name, 'C1s'); % avgSpectrum = nappCombineSpectra(DataTable, ... @@ -93,7 +54,93 @@ function combinedSpectrum = nappCombineSpectra(DataTable,varargin) % 'tableVariable', 'nexafsSpectrumPreNorm', ... % 'mode', 'average'); % -% See also: nappPlot, interp1 +% INPUT ARGUMENTS +% --------------- +% DataTable table +% Data table containing spectroscopy spectra and corresponding energy +% scales. Must contain at least one spectrum variable and matching +% energy axis variable. +% +% NAME-VALUE PAIR ARGUMENTS (optional) +% ------------------------------------ +% 'tableSelection' logical array (default: all rows) +% Logical index to filter which rows of DataTable to combine. +% Example: contains(DataTable.name, 'C1s') to select C1s spectra +% Example: DataTable.quality > 0.8 to select high-quality measurements +% +% 'tableVariable' char vector (default: 'spectrum_counts') +% Select which spectrum type to combine. Must be one of: +% +% PE spectra: +% - 'spectrum_counts' +% - 'spectrum_countsPerSecond' +% - 'spectrum_countsNorm' +% +% NEXAFS spectra: +% - 'nexafsSpectrum' +% - 'nexafsSpectrumPreBackground' +% - 'nexafsSpectrumPreNorm' +% - 'nexafsSpectrumPreGasPhase' +% - 'nexafsSpectrumPreI0' +% - 'nexafsSpectrumPreAdvCarb' +% +% 'tableRow' numeric scalar (default: 1) +% Index of the spectrum whose energy axis is used as reference for +% interpolation (index within the filtered table defined by +% 'tableSelection'). The combined spectrum's common energy grid +% is extracted from this row. Range: 1 to number of selected rows. +% +% 'mode' char vector (default: 'sum') +% Method for combining spectra: +% - 'sum': add all spectra together (increases signal) +% - 'average': calculate mean and standard deviation across spectra +% - 'subtract': subtract spectra (not yet implemented) +% +% 'energyScale' char vector (default: 'kinetic') +% Energy axis to use for PE spectra (ignored for NEXAFS): +% - 'kinetic': kinetic energy scale (eV) - uses scientaEkin_eV +% - 'binding': binding energy scale (eV) - uses bindingEnergy_eV +% - 'xRay': photon energy scale (eV) - uses xRayEkin_eV +% +% 'output' char vector (default: 'simple') +% Output format: +% - 'simple': return matrix with energy and combined intensity +% - 'complete': return table with full metadata and sorting info +% +% OUTPUT ARGUMENTS +% ---------------- +% combinedSpectrum numeric matrix or table +% Combined spectroscopy data. Format depends on 'output' parameter: +% +% For 'simple' output (default): +% - Column 1: Energy values (eV) on common interpolated axis +% - Column 2: Combined intensity (sum or mean depending on mode) +% - Column 3: Standard deviation (only when mode = 'average') +% +% For 'complete' output: +% - Returns table with energy axis and spectrum(s) plus metadata columns +% (name, folder, creationDate, analysisDir, lastModifiedDatestr, +% lastModifiedDatenum) and is sorted by modification date +% +% NOTES +% ----- +% - The function automatically determines the overlapping energy range across +% all selected spectra and interpolates to a common grid defined by the +% reference spectrum ('tableRow' parameter). +% - For binding energy scale, the overlap is computed using <= comparisons +% (reversed from kinetic energy behavior). +% - Missing or NaN values are excluded from calculations using 'omitnan' flag. +% - For 'average' mode, standard deviation quantifies variability between +% acquisitions and indicates measurement uncertainty. +% - Energy axes must be monotonic (strictly increasing or decreasing) for +% interpolation to work correctly. +% - All selected spectra must have compatible energy ranges with sufficient +% overlap (at least one common point). +% +% SEE ALSO +% -------- +% interp1, nappPlot, nappBackground, mean, std, outerjoinRowToTable + expectedTableVariable = {'nexafsSpectrum','spectrum_counts','spectrum_countsPerSecond',... diff --git a/beamtime/nappCombineSpectra~m.slmx b/beamtime/nappCombineSpectra~m.slmx deleted file mode 100644 index 28963f34342944ee515ccc1daad62a6cd6107958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7191 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 diff --git a/beamtime/nappCopyShift.m b/beamtime/nappCopyShift.m index 6e586e0..cd429e4 100644 --- a/beamtime/nappCopyShift.m +++ b/beamtime/nappCopyShift.m @@ -1,31 +1,145 @@ function DataTable = nappCopyShift(DataTable,varargin) -%nappBindingEnergyXps calculates the binding energy scale for spectra based -%on the binding energy shift. +%NAPPCOPYSHIFT Copy energy shift from one XPS region to spectra of the same sequence but other regions. +% This function transfers energy shift calibration data (kinetic or binding +% energy) from a reference region to spectra of the same sequence iteration in a different +% region. It matches spectra based on filename and acquisition timestamp, +% enabling consistent energy axis calibration across XPS +% measurements of the same sequence (e.g., copying O1s shift to C1s spectra acquired simultaneously). % -% For each spectrum with a given file number, the function copies the shift from data of a specified -% region to another region of choice. +% This approach ensures that energy calibrations determined from a +% reference region (typically C1s or O1s) are consistently applied to +% other regions in the same sequence. Works with both spectral data in +% binding and in kinetic energy scale and with images - that is can be +% used to align all sweeps in one image. Multiple destination rows can +% receive the same shift value if acquired simultaneously (one-to-many +% copying). % -% *Requirement* -% Needs table variable bindingEnergyShift as input. Run -% nappDetermineShiftXps.m first on selected region. +% SYNTAX +% ------ +% DataTable = NAPPCOPYSHIFT(DataTable) % -% FileList = nappCopyShift(FileList,tmpDataSelection,'energyScale','binding'); +% DataTable = NAPPCOPYSHIFT(DataTable, tableSelection, 'Name', Value) % -% *input* -% FileList: data table -% tableSelection (optional): logical array to filter data table -% regionOld: O1s (default) or C1s - source of shift data -% regionNew: C1s (default), N1s or O1s - shift data will be copied to this -% region -% energyScale: kinetic (default) or binding: process either the kinetic -% (for images) or the binding energy shift data (for spectra) +% EXAMPLES +% -------- +% % Copy O1s kinetic energy shift to C1s spectra +% DataTable = nappCopyShift(DataTable, ... +% 'regionOld', 'O1s', ... +% 'regionNew', 'C1s', ... +% 'energyScale', 'kinetic'); % -% *output* -% Table variable bindingEnergy_eV holding the binding energy for -% the data. +% % Copy binding energy shift from N1s to Cl2p on selected rows +% selection = contains(DataTable.name, 'polymer_sample'); +% DataTable = nappCopyShift(DataTable, selection, ... +% 'regionOld', 'N1s', ... +% 'regionNew', 'Cl2p', ... +% 'energyScale', 'binding'); % -% See also nappnappAlignImages.m nappBindingEnergyXps nappFitGaussXps.m -% nappCopyShift.m nappDetermineShiftXps.m +% % Copy C1s calibration (binding energy) to all matching O1s spectra +% DataTable = nappCopyShift(DataTable, ... +% 'regionOld', 'C1s', ... +% 'regionNew', 'O1s'); +% +% INPUT ARGUMENTS +% --------------- +% DataTable table +% Data table containing XPS spectra with energy shift calibration data +% and time stamps. Ideally the napp standard format, but must at least contain: +% - name field: spectrum identifiers with region designation (e.g., +% 'sample_C1s', 'sample_O1s') +% - lastModifiedDatenum field: acquisition timestamps (MATLAB datenum format) +% - kineticEnergyShift or bindingEnergyShift field: calibration shift values +% (created by nappDetermineShiftXps) +% +% NAME-VALUE PAIR ARGUMENTS (optional) +% ------------------------------------ +% 'tableSelection' logical array (default: all rows) +% Logical index to filter which rows in DataTable contain the source +% shift data (regionOld spectra). Only spectra in this selection will +% be processed as source regions. Their shifts will be copied to matching +% spectra in regionNew (which may or may not be in tableSelection). +% Example: contains(DataTable.name, 'C1s') to use only C1s as source +% +% 'regionOld' char vector (default: 'O1s') +% Source region containing the energy shift calibration data. +% Must be one of: +% - 'O1s' +% - 'C1s' +% - 'N1s' +% +% 'regionNew' char vector (default: 'C1s') +% Destination region to which shift data will be copied. +% Must be one of: +% - 'O1s' +% - 'C1s' +% - 'N1s' +% - 'Cl2p' +% +% 'energyScale' char vector (default: 'kinetic') +% Energy scale type for shift calibration: +% - 'kinetic': copies kineticEnergyShift column (used for image analysis) +% - 'binding': copies bindingEnergyShift column (used for spectral analysis) +% +% OUTPUT ARGUMENTS +% ---------------- +% DataTable table +% Updated data table with energy shift values copied to destination region +% spectra. The appropriate column is populated: +% - kineticEnergyShift (if energyScale = 'kinetic') +% - bindingEnergyShift (if energyScale = 'binding') +% +% Shift values are matched and copied for all spectra in the destination +% region (regionNew) that share the same acquisition timestamp as spectra +% in the source region (regionOld, filtered by tableSelection). +% +% MATCHING ALGORITHM +% ------------------ +% The function matches source spectra (regionOld) to destination spectra +% (regionNew) using: +% 1. Filename: region name is replaced (O1s → C1s, etc.) +% 2. Acquisition timestamp: year, month, day, hour, and minute must all match +% +% This ensures that shift calibrations from simultaneously acquired reference +% regions are correctly applied to their complementary spectra. An error is +% displayed if a matching spectrum cannot be found. +% +% NOTES +% ----- +% - PREREQUISITE: Run nappDetermineShiftXps on the source region (regionOld) +% BEFORE running this function. This populates the shift column in DataTable. +% - Timestamp matching is strict: year, month, day, hour, and minute must all +% match exactly. Second-level precision is not used. +% - If regionOld and regionNew are the same, no copy operation is performed. +% - Timestamps with mismatches indicate possible data organization issues and +% trigger a diagnostic message. +% - The function operates on selected rows only when tableSelection is provided. +% Rows outside the selection are not processed as source regions. +% +% WORKFLOW EXAMPLE +% ---------------- +% % Typical usage sequence for multi-region XPS dataset: +% % 1. Determine shift for reference region (C1s) +% DataTable = nappDetermineShiftXps(DataTable, ... +% contains(DataTable.name, 'C1s'), ... +% 'energyScale', 'binding'); +% +% % 2. Copy C1s shift to complementary regions +% DataTable = nappCopyShift(DataTable, ... +% contains(DataTable.name, 'C1s'), ... +% 'regionOld', 'C1s', ... +% 'regionNew', 'O1s', ... +% 'energyScale', 'binding'); +% +% DataTable = nappCopyShift(DataTable, ... +% contains(DataTable.name, 'C1s'), ... +% 'regionOld', 'C1s', ... +% 'regionNew', 'N1s', ... +% 'energyScale', 'binding'); +% +% SEE ALSO +% -------- +% nappDetermineShiftXps, nappBindingEnergyXps, nappAlignImages, +% nappFitGaussXps, datenum % Define conditions and defaults of input % Old region must be also selected in tableSelection! it is kind like @@ -51,6 +165,19 @@ addParameter(p,'energyScale',defaultEnergyScale,... @(x) any(validatestring(x,expectedEnergyScale))); parse(p,DataTable,varargin{:}); + + +% The function operates as follows: +% 1. For each source spectrum/image (regionOld) in tableSelection: +% - Extract the energy shift value (kinetic or binding scale) +% - Extract the acquisition timestamp +% 2. Generate search criteria by replacing the region name in the source +% filename (e.g., "sample_O1s" becomes "sample_C1s") +% 3. Search entire DataTable for destination spectra/images (regionNew) that: +% - Have the transformed filename +% - Match the acquisition timestamp exactly (year, month, day, hour, minute) +% 4. Copy the source energy shift value to all matching destination rows + if contains(p.Results.energyScale,'kinetic') % repeat this for all columns in input. for ii = 1:size(p.Results.DataTable(p.Results.tableSelection,:),1) diff --git a/beamtime/nappDetermineShiftXps.m b/beamtime/nappDetermineShiftXps.m index 99ed729..69d3197 100644 --- a/beamtime/nappDetermineShiftXps.m +++ b/beamtime/nappDetermineShiftXps.m @@ -1,44 +1,228 @@ function DataTable = nappDetermineShiftXps(DataTable, varargin) -%nappDetermineShiftXps determines the relative shift of each sequence -%iteration in images or the absolute shift of spectra to a binding energy reference +%NAPPDETERMINESHIFTXPS Determine energy shift calibration from XPS images or spectra. +% This function calculates the energy shift needed to calibrate XPS +% spectra to a binding energy reference or align all sequence iterations +% of the same file to a common kinetic energy. For spectra data, it +% computes absolute binding energy shifts relative to a reference binding +% energy value. For images, it computes relative kinetic energy shifts +% between sequence iterations. Shifts are determined by fitting Gaussian +% peaks or finding maxima in the spectra (simpler option using Matlab's +% findpeaks function). % -% FileList = nappDetermineShiftXps(FileList,eKinStart,eKinEnd,'tableSelection',tmpDataSelection,... -% 'showFigures','off','tableVariable','spectrum_countsPerSecond','binEnReference',535); -% -% FileList = nappDetermineShiftXps(FileList,'tableSelection',tmpDataSelection,... -% 'showFigures','on','tableVariable','image'); -% -% *input* -% FileList: data table -% eKinStart (optional): smallest value of energy range to use for -% peak fitting. Peak fitting is used to get position of peak -% eKinEnd (optional): largest value of energy energy range to use for -% peak fitting. Peak fitting is used to get position of peak -% tableSelection (optional): logical array to filter data table -% tableVariable: choose to process either -% 'spectrum_counts','spectrum_countsPerSecond' (default), => absolute binding energy shift will be determined or -% ,'image','imageRoh'=> relative kinetic energy shift will be determined. -% binEnReference: Reference BE in eV for spectra energy scale -% kinEnReference: Sequence iteration to which the image should be -% aligned, default is 1. -% refPeak: Peak number the position of which will be used to compute the -% BE shift. Only for Gauss fit. Default 1. -% minPeakWidth: findpeak parameter, default 0.1 -% minPeakHeight: findpeak parameter, default 0.1 -% movMeanWindow: findpeak parameter, default 1 -% showFigures, on(default): show fit in figure, off do not show fit in figure +% Needs X-ray energy in data table. Run addPhotonEnergy.m first. % % -% *output* -% new table variable kineticEnergyShift for images -% new table variable bindingEnergyShift for spectra +% SYNTAX +% ------ +% DataTable = NAPPDETERMINESHIFTXPS(DataTable) % +% DataTable = NAPPDETERMINESHIFTXPS(DataTable, eKinStart, eKinEnd, 'Name', Value) % -% *ToDo* -% November 2023: Use nappFitGaussXps.m function to find peak position +% EXAMPLES +% -------- +% % Determine binding energy shift for C1s spectra using peak finding +% DataTable = nappDetermineShiftXps(DataTable, ... +% 'tableVariable', 'spectrum_countsPerSecond', ... +% 'binEnReference', 285.0, ... +% 'mode', 'findPeak'); % -% See also nappnappAlignImages.m nappBindingEnergyXps nappFitGaussXps.m nappCopyShift.m - +% % Determine kinetic energy shift for imaging data using the first +% iteration as reference +% DataTable = nappDetermineShiftXps(DataTable, 100, 200, ... +% 'tableVariable', 'image', ... +% 'kinEnReference', 1, ... +% 'showFigures', 'on'); +% +% % Determine binding energy shift using Gaussian fitting with custom +% parameters specified in tmpFitParameters +% FitPar.fitMode = 'position'; +% FitPar.refPeak = 1; +% DataTable = nappDetermineShiftXps(DataTable, 280, 290, ... +% 'tableVariable', 'spectrum_countsPerSecond', ... +% 'binEnReference', 284.8, ... +% 'mode', 'gaussFit', ... +% 'FitParameter', tmpFitParameters); +% +% tmpFitParameters.peakArea = [1e5 0.5 0.1 0.1 0.1] ; +% tmpFitParameters.peakWidth = 1.2; +% tmpFitParameters.peakPos = [198 1.6 10 10 10]; +% +% tmpFitParameters.peakAreaUpperBond = [Inf 0.5 0.1 0.1 0.1]; +% tmpFitParameters.peakWidthUpperBond = [3 NaN NaN NaN NaN]; +% tmpFitParameters.peakPosUpperBond = [200 1.6 10 10 10]; +% +% tmpFitParameters.peakAreaLowerBond = [100 10 0.5 0.1 0.1 0.1]; +% tmpFitParameters.peakWidthLowerBond = [1.2 NaN NaN NaN NaN]; +% tmpFitParameters.peakPosLowerBxxond = [195 1.3 0.1 0.1 0.1]; +% +% tmpFitParameters.backgroundRange = [6 5]; +% tmpFitParameters.weight = [198 200 0.1]; +% tmpFitParameters.fitMode = 'widthPosition'; +% +% PROCESSING OVERVIEW +% ------------------- +% The function operates differently depending on data type: +% +% FOR IMAGES (tableVariable = 'image' or 'imageRoh'): +% 1. For each image in tableSelection: +% - Extract kinetic energy axis (scientaEkin_eV or scientaEkinRoh_eV) +% - Fit 2-peak Gaussian model to each sequence iteration (WIP: change +% this to use nappFitGaussXPS.m) +% - Extract peak position from fitting results +% - Normalize shifts relative to reference iteration (kinEnReference) +% 2. Result: kineticEnergyShift column contains shifts relative to reference iteration +% (reference iteration has shift = 0) +% +% FOR SPECTRA (tableVariable = 'spectrum_counts', 'spectrum_countsPerSecond', or 'spectrum_countsNorm'): +% 1. For each spectrum in tableSelection: +% - Optional: restrict energy range using eKinStart/eKinEnd +% - Find peak position using either: +% * findPeak method: standard matlab peak detection +% * gaussFit method: Gaussian fitting with global optimization +% - Compute binding energy shift as: xRayPhotonEnergy - peakPosition - binEnReference +% 2. Result: bindingEnergyShift column contains absolute shifts relative to reference BE +% (positive shift means peak is at lower kinetic energy than expected) +% +% PEAK DETECTION METHODS +% ---------------------- +% Two methods are available for finding peak positions in spectral +% +% 1. 'findPeak' (default): Fast automated detection using MATLAB's findpeaks +% function with moving mean smoothing. Uses minPeakWidth, minPeakHeight, +% and movMeanWindow parameters to control sensitivity. Best for well-defined +% peaks with good signal-to-noise ratio. Accuracy: ±0.1-0.2 eV typical. +% +% 2. 'gaussFit': Slower but more accurate Gaussian fitting with global +% optimization using GlobalSearch. Fits background, Gaussian peaks, +% and extracts precise peak positions. Requires FitParameter structure. +% Best for noisy data or when high precision is required. Accuracy: ±0.05 eV typical. +% +% IMPORTANT LIMITATION: This function requires distinct photoelectron peaks +% to determine energy shifts. It will NOT work for background-only spectra +% or featureless data. The fitting algorithms assume at least one measurable +% peak is present in the specified energy range. +% +% INPUT ARGUMENTS +% --------------- +% DataTable table +% Data table containing XPS image or spectral data. Must contain: +% - scientaEkin_eV or scientaEkinRoh_eV: kinetic energy axis +% - tableVariable data: images or spectra +% - xRayEkin_eV: X-ray photon energy (eV) for each row +% +% eKinStart numeric scalar (optional) +% Lower kinetic energy bound for peak fitting (eV). If omitted, uses +% first energy point. Restricts the fitting region to improve accuracy. +% +% eKinEnd numeric scalar (optional) +% Upper kinetic energy bound for peak fitting (eV). If omitted, uses +% last energy point. Restricts the fitting region to improve accuracy. +% +% NAME-VALUE PAIR ARGUMENTS (optional) +% ------------------------------------ +% 'tableSelection' logical array (default: all rows) +% Logical index to filter which rows in DataTable to process. +% Example: contains(DataTable.name, 'C1s') to process only C1s spectra +% +% 'tableVariable' char vector (default: 'spectrum_countsPerSecond') +% Data type to process. Must be one of: +% +% Spectral data (compute binding energy shifts): +% - 'spectrum_counts' +% - 'spectrum_countsPerSecond' +% - 'spectrum_countsNorm' +% +% Imaging data (compute kinetic energy shifts): +% - 'image' +% - 'imageRoh' +% +% 'mode' char vector (default: 'findPeak') +% Peak detection method (spectral data only): +% - 'findPeak': automated peak detection using moving mean smoothing +% - 'gaussFit': 2-peak Gaussian fitting with global optimization +% +% 'binEnReference' numeric scalar (required for spectra) +% Reference binding energy value (eV) for spectral calibration. +% Typically the known BE of the primary peak (e.g., 285.0 eV for C1s C-H). +% Example: 'binEnReference', 285.0 +% +% 'kinEnReference' numeric scalar (default: 1) +% Reference iteration index for imaging data. All kinetic energy shifts +% are computed relative to this iteration. Reference iteration gets shift = 0. +% Range: 1 to number of image columns. +% +% 'mode' char vector (default: 'findPeak') +% Peak finding method for spectra: +% - 'findPeak': uses findpeaks with smoothing and height/width constraints +% - 'gaussFit': uses nappFitGaussXps with global optimization (slower, more accurate) +% +% 'minPeakWidth' numeric scalar (default: 0.1) +% Minimum peak width (eV) for findPeak method. Peaks narrower than this +% are rejected. Typical range: 0.05-0.5 eV depending on spectrometer resolution. +% +% 'minPeakHeight' numeric scalar (default: 0.1) +% Minimum peak height (intensity) for findPeak method. Peaks below this +% are rejected. Units match tableVariable data. +% +% 'movMeanWindow' numeric scalar (default: 1) +% Moving mean window width (number of points) for smoothing before peak +% detection in findPeak method. Reduces noise; typical range: 1-5 points. +% +% 'FitParameter' struct +% Structure containing Gaussian fitting parameters for gaussFit mode. +% Required fields: +% - fitMode: 'position', 'width', 'unconstrained', etc. +% - refPeak: peak number (1 or 2) whose position is used for shift calculation +% Example: FitPar.fitMode = 'position'; FitPar.refPeak = 1; +% +% 'refPeak' numeric scalar (default: 1) +% Peak number (1 or 2) whose position is used for binding energy shift +% calculation in gaussFit mode. Peak 1 is typically the main photoelectron peak. +% +% 'showFigures' char vector (default: 'off') +% Display fitting results: +% - 'on': show Gaussian fit plot, peak table, and peak finding results +% - 'off': suppress all figure output +% +% OUTPUT ARGUMENTS +% ---------------- +% DataTable table +% Updated data table with new columns: +% +% For imaging data (tableVariable = 'image' or 'imageRoh'): +% - kineticEnergyShift: column vector of relative kinetic energy shifts (eV) +% relative to kinEnReference iteration. Reference = 0. +% +% For spectral data (tableVariable = 'spectrum_*'): +% - bindingEnergyShift: column vector of absolute binding energy shifts (eV) +% relative to binEnReference. Typically small values (±0.5 eV range). +% +% For gaussFit mode on spectra, additional columns are added: +% - peakPosition: [peak1, peak2] positions (eV) for each spectrum +% - peakArea: [peak1, peak2] areas (eV·counts) for each spectrum +% - peakFWHM: [peak1, peak2] full-width half-maximum (eV) for each spectrum +% - peakBackground: linear background parameters [slope, intercept] +% +% NOTES +% ----- +% - PREREQUISITE: X-ray photon energy (xRayEkin_eV) must be present in DataTable. +% If empty, function returns with warning. +% - For imaging: Gaussian fitting assumes 2 peaks in each iteration. Adjust +% eKinStart/eKinEnd to isolate peak region if data is complex. +% - For spectra: findPeak method is fast but less accurate (±0.1-0.2 eV typical). +% gaussFit method is slower but more accurate (±0.05 eV typical). +% - Peak detection may fail if signal-to-noise is poor. Check showFigures output +% to diagnose fitting quality. +% - For imageRoh variant: uses scientaEkinRoh_eV if available; falls back to +% scientaEkin_eV if not populated. +% - Binding energy shifts can be negative (peak at higher BE than reference) or +% positive (peak at lower BE than reference). +% - Figure windows are automatically closed after processing to prevent clutter. +% +% SEE ALSO +% -------- +% nappCopyShift, nappBindingEnergyXps, nappFitGaussXps, nappAlignImages, +% findpeaks, GaussFitOnePeak defaultKinEnReference = 1; defaultTableVariable = 'spectrum_countsPerSecond'; expectedTableVariable = {'spectrum_counts','spectrum_countsPerSecond','spectrum_countsNorm','image','imageRoh'}; diff --git a/import/nappFileList.m b/beamtime/nappFileList.m similarity index 86% rename from import/nappFileList.m rename to beamtime/nappFileList.m index d4a8408..52244df 100755 --- a/import/nappFileList.m +++ b/beamtime/nappFileList.m @@ -1,74 +1,250 @@ function ListFiles = nappFileList(dataPath,varargin) -% nappFileList lists all XAS, PE, and picture data of a specific beam -% time. Analyser and sample settings such as pass energy, lens mode, -% temperature, position, and pressure are added. +%NAPPFILELIST Import spectroscopy data (XPS, NEXAFS) from a beam time folder into data table. +% Photos, analyser and sample settings such as pass energy, lens mode, temperature, +% position, and pressure are automatically extracted and added to the table. % +% SYNTAX +% ------ +% ListFiles = NAPPFILELIST(dataPath) +% ListFiles = NAPPFILELIST(dataPath, DataTable) +% ListFiles = NAPPFILELIST(dataPath, DataTable, 'Name', Value) % -% * listFiles = nappFileList('2019\April_NanoXAS') imports data from beam -% time folder on local computer, generates a new matlab table 'listFiles' -% in the current workspace, and a csv file from data in the -% 'SC_Data/2019/April_NanoXAS' . +% DESCRIPTION +% ----------- +% NAPPFILELIST scans a beam time folder and imports all experimental data +% files (XPS, NEXAFS, and photos) with their associated +% metadata into a MATLAB table. The function automatically: +% - Reads XPS data and metadata from SES (.ibw) or Specs (.xy) files +% - Reads NEXAFS data and metadata from HDF5 (.h5) files +% - Splits multi-scan HDF5 files into individual single-scan files +% - Extracts instrument settings (pass energy, dwell time, lens mode, etc.) +% - Normalizes count rates (per dwell time) to counts per second (cps) +% - Averages region iterations during import +% - Creates a semicolon-separated CSV file for Excel import % -% * listFiles = nappFileList('2019\April_NanoXAS',listFiles) imports data from beam -% time folder on local computer, adds data to the existing matlab table -% 'listFiles' in the current workspace, and a csv file from data in the -% 'SC_Data/2019/April_NanoXAS' . +% REQUIRED INPUT ARGUMENTS +% ------------------------ +% dataPath +% Beam time folder path (string or char vector). +% Format: 'YYYY/BeamtimeName'(Mac,Linux,Unix) or 'YYYY\BeamtimeName' (Windows) +% Examples: '2025/November_NappIss', '2024/March_PolLux' % -% Input Arguments +% Note: The folder structure must follow the strict naming convention +% described in the "Folder Structure" section below. % -% * dataPath, mandatory: year and name of folder that holds the beam time data. -% Text string with format year/name of folder: '2019/April_NanoXAS' -% * DataTable, optional: DataTable to which imported data is added. -% * 'mode','local'; default: imports from local server address -% * 'mode','nappDrive'; imports from napp drive. Needs to be mounted. -% * 'mode','localNew'; imports only new files that have not yet been -% imported. Needs existing data table as input. -% * 'mode','nappDrivePick'; lets user select files in file browser window. Default address is Napp beam time folder. -% * 'mode','localPick'; lets user select files in file browser window. Default address is local beam time folder. +% OPTIONAL POSITIONAL INPUT +% ------------------------- +% DataTable +% Existing data table to append imported data to (table object). +% If provided, new files are merged with existing table. +% If not provided, a new table is created from scratch. % -% Dependencies +% NAME-VALUE PAIR ARGUMENTS +% ------------------------- +% 'mode' +% Import mode (char or string, default: 'local'). +% Supported values: +% 'local' - Import from local computer (default) +% 'nappDrive' - Import from mounted NAPP network drive +% 'dataDrive' - Import from mounted group drive (5505) +% 'localNew' - Import only new files not in existing DataTable +% 'nappDrivePick' - Browse and select files from NAPP drive +% 'localPick' - Browse and select files from local folder +% 'dataPick' - Browse and select files from mounted group drive % -% * beam time folder must be located at server/NAPP/SC Data/dataPath. -% dataPath is user input. server needs to be defined at line ~100 of this -% function. -% * XPS data in igor *.ibw format need to be in SES subfolder -% * Photos in *.bmp format need to be in Photos folder -% * NEXAFS data in *.h5 format need to be in NEXAFS subfolder -% * Labview pressure and temperature log need to be in Pressure subfolder. -% * Uses the IgorPro importer for Matlab: -% https://ch.mathworks.com/matlabcentral/fileexchange/42679-igor-pro-file-format-ibw-to-matlab-variable -% * needs at least 1 .*ibw file in the SES subfolder +% 'importLabView' +% Import LabView pressure/temperature logs (char or string). +% Default: 'on' +% Supported values: +% 'on' - Import LabView logs from Pressure subfolder +% 'off' - Skip LabView log import (this is much,much faster) % +% OUTPUT ARGUMENTS +% ---------------- +% ListFiles +% MATLAB table with the following columns (variables): +% - name: file name (string) +% - folder: full path to file (string) +% - date: file modification date (datetime) +% - bytes: file size in bytes (numeric) +% - isdir: directory flag (logical) +% - datenum: date as serial number (numeric) +% - creationDate: acquisition timestamp (datevec format) +% - image: 2D spectral map or image (cell array) +% - imageRoh: raw 2D spectral map (cell array) +% - spectrum_counts: integrated spectrum (numeric or cell array) +% - spectrum_countsPerSecond: mean spectrum normalized to cps +% - scientaEkin_eV: kinetic energy axis (cell array, eV) +% - scientaEkinRange_eV: [min max] kinetic energy range +% - scientaPassEnergy_eV: analyzer pass energy (numeric, eV) +% - scientaDwellTime_ms: dwell time per channel (numeric, ms) +% - regionName: region label (e.g., 'C1s', 'O K-edge NEXAFS') +% - scientaAcquisitionMode: 'Swept' or 'Fixed' mode +% - scientaLensMode: lens transmission mode (string) +% - scientaRegionIterations: number of region scans (numeric) +% - scientaSequenceIterations: number of sequence repeats (numeric) +% - xRayEkin_eV: X-ray photon energy for XPS (numeric or cell array, eV) +% - xRayEkinRange_eV: [min max] photon energy range +% - beamlineInt: beamline intensity (I_0 for NEXAFS) +% - importDate: timestamp of table generation (char) +% - analysisDir: working directory at import time (string) % -% Output +% Also creates: YYYYMmm_DataList.csv +% Semicolon-separated ASCII file in beam time folder for Excel import. % -% * ListFiles: Matlab table listing XPS, NEXAFS, and photo files with settings -% * YYYYmmm_DataList.csv (2019Apr_DataList.csv): Semicolon separated ASCII -% file for import to Excel in beamtime folder +% FOLDER STRUCTURE & NAMING CONVENTIONS +% ===================================== % +% REQUIRED DIRECTORY STRUCTURE +% ---------------------------- +% The beam time folder must contain the following sub-directories: % -% Further info +% SES/ - XPS data in Igor (.ibw) or Specs (.xy) format +% NEXAFS/ - NEXAFS maps in HDF5 (.h5) format +% Photos/ - Sample photographs in BMP (.bmp) format +% Pressure/ - LabView pressure and temperature logs % -% * Do not run while SES or NEXAFS data are being recorded. Data will be -% lost by SES software. -% * Region iterations are averaged during import -% * counts are normalised to 1s dwell time during import. That is, the -% counts are in cps after import. +% Full path convention: +% LOCAL: ~/Forschung_Einsam/PSI_SLS/NAPP/SC Data/YYYY/BeamtimeName +% NAPP DRIVE: /Volumes/NAPP/SC Data/YYYY/BeamtimeName (Mac) +% \\fs03\NAPP\SC Data\YYYY\BeamtimeName (Windows) +% DATA DRIVE: /Volumes/5505/Data/YYYY/BeamtimeName (Mac) +% \\fs101\5505\Data\YYYY\BeamtimeName (Windows) % +% EXAMPLE FOLDER LAYOUT +% --------------------- +% 2025/November_NappIss/ +%  SES/ [XPS data] +%   0001_C1s_525eV.ibw +%   0002_O1s_850eV.ibw +%   0003_Survey_850eV.ibw +%   ... +%  NEXAFS/ [NEXAFS maps] +%   0010_O_Kedge.h5 +%   0011_N_Kedge.h5 +%   ... +%  Photos/ [Sample photos] +%   A0001-20251123_102407.bmp +%   A0002-20251123_102408.bmp +%   ... +%  Pressure/ [Environmental logs] +%  LabView_T_RH_20251119.txt +%  logfile-23-11-2025-12h46min.txt % -% Matlab Version +% FILE NAMING CONVENTIONS +% ----------------------- % -% * Matlab 2018a or higher +% XPS FILES (.ibw, .xy) +% Format: NNNN_RegionName_PhotonEnergy.ext +% Example: 0191_C1s_525eV.ibw +% 0192_O1s_850eV.ibw +% 0045_Survey_1000eV.ibw % +% NNNN = Four-digit SES file number (from instrument) +% RegionName = XPS region: C1s, O1s, N1s, Si2p, Cl2p, Survey, etc. +% PhotonEnergy = X-ray photon energy in eV +% .ibw = Igor file format (Scienta SES analyzer) +% .xy = Specs SpecsLab file format % -% See also TABLE IBWread h5read DIR LabView_importData +% NEXAFS FILES (.h5) +% Format: NNNN_ElementName_EdgeType.h5 +% Example: 0200_O_Kedge.h5 +% 0201_N_Kedge.h5 +% 0202_C_Kedge.h5 % -%% +% NNNN = Four-digit file number +% ElementName = Element symbol: O, N, C, etc. +% EdgeType = K-edge, L-edge, etc. % -% TODO +% Note: Files starting with "N" are recognized. Files starting with +% other characters (e.g., from old naming schemes) will be ignored. % -% * FIXME: Add videos and jpg +% PHOTO FILES (.bmp) +% Format: descriptive_name.bmp +% Example: sample_overview.bmp +% before_dosing.bmp +% after_annealing.bmp % +% DATA FILE REQUIREMENTS & LIMITATIONS +% ==================================== +% +% - At least ONE .ibw or .xy file must exist in SES/ subfolder +% - Do NOT run while SES or NEXAFS data are being actively recorded +% - Multi-scan HDF5 files are automatically split (one scan per file) +% - Region iterations are averaged during import (not preserved individually) +% - Counts are normalized to 1 second dwell time (results in cps) +% - System files starting with '.' or '~' are automatically excluded +% +% HDF5 MULTI-SCAN HANDLING +% ------------------------- +% If an HDF5 file contains multiple scans (>3 groups detected): +% 1. Function calls splitH5Scans(filename) +% 2. Each scan is extracted into a separate file +% 3. New files: original_name_scan_1.h5, original_name_scan_2.h5, etc. +% 4. Original multi-scan file is deleted after splitting +% +% EXAMPLES +% ======== +% +% % Example 1: Import all data from local folder +% FileList = nappFileList('2025/November_NappIss', 'mode', 'local'); +% +% % Example 2: Add new data to existing table +% FileList = nappFileList('2025/November_NappIss', FileList, 'mode', 'local'); +% +% % Example 3: Import only new files not yet in table +% FileList = nappFileList('2025/November_NappIss', FileList, ... +% 'mode', 'localNew'); +% +% % Example 4: Import from network drive with file browser +% FileList = nappFileList('2025/November_NappIss', ... +% 'mode', 'nappDrivePick'); +% +% % Example 5: Skip LabView pressure/temperature logs +% FileList = nappFileList('2025/November_NappIss', ... +% 'mode', 'local', 'importLabView', 'off'); +% +% DEPENDENCIES +% ============ +% - IBWread function (Igor Pro format reader for MATLAB) +% https://ch.mathworks.com/matlabcentral/fileexchange/42679-igor-pro-file-format-ibw-to-matlab-variable +% - h5info, h5read (HDF5 file support, built-in MATLAB) +% - splitH5Scans function (custom, included in toolkit) +% - LabView_importData function (custom, included in toolkit) +% +% TROUBLESHOOTING +% ======================= +% +% - If "path wrong" warning appears: check folder spelling and that +% network drives are mounted +% - If Igor files fail to read: verify files are complete and not corrupted +% (partially recorded files should be renamed with "ignore_" prefix) +% - For older data (pre-2020): HDF5 file structure may differ; function +% attempts multiple path conventions automatically +% - Mac: Creation date for NEXAFS files obtained via 'stat' command +% - Windows: Creation date for NEXAFS files set to NaN +% +% MATLAB VERSION REQUIREMENTS +% =========================== +% - MATLAB 2018a or higher (for '**' notation in dir patterns) +% +% HISTORY & UPDATES +% ================= +% - January 2020: Added new h5 file structure and naming convention +% - March 2021: Added local file structure support (not just network) +% - March 2021: Added Lens Mode column support +% - April 2021: X-ray kinetic energy and images now made unique +% - March 2022: Refactored to use varargin instead of positional arguments +% - March 2022: Strict data structure required for local and remote sources +% - November 2025: Added support for PShell h5 file structure (NEXAFS) +% - November 2025: Added creation date extraction for Mac (NEXAFS) +% +% See also: TABLE, IBWread, h5read, h5info, DIR, inputParser +% +% Copyright: Laboratory of Atmospheric Chemistry, Paul Scherrer Institut (PSI) +% thorsten.bartels-rausch@psi.ch +% +% ========================================================================= %% Updated % % * January 2020, added new h5 file structure and naming convention. @@ -78,8 +254,12 @@ function ListFiles = nappFileList(dataPath,varargin) % * April 2021, X-ray kinetic energy and images are now made unique % * March 2022, input now using varargin % * March 2022, strict data structure required for local and remote sources -% * November 2025, PShell h5 files for NEXAFS have a new structure; added -% creation date to mac for NEXAFS. +% * November 2025, PShell h5 files for NEXAFS have a new structure; +% % November 2025, added creation date to mac for NEXAFS. +%% ToDo +% +% * Check if jpg are imported. Before Nov25 standard format was bitmap +% * replace the hard coded table consistency with function. %% Input % Define conditions and defaults of input @@ -153,9 +333,7 @@ end % * Variable: mixed case words starting with lower case: credibleThreat, qualityOfLife % * Variables with a large scope should have meaningful names. Variables % with a small scope can have short names. -% * A convention on pluralisation should be followed consistently. -% * Named constants (including globals) should be all uppercase using -% underscore to separate words. MAX_ITERATIONS, COLOR_RED +% * A convention on pluralization should be followed consistently. % * Structure names should begin with a capital letter: SegmentData.length % * The prefix n should be used for variables representing the number of % objects. A MATLAB-specific addition is the use of m for number of rows @@ -164,9 +342,6 @@ end % 1:nPositions, ii, ij, ik.... % * Functions should have meaningful names written in lower case. % computetotalwidth(), Avoid compwid(); -% - - %% Query beam time folder content % @@ -245,7 +420,7 @@ else % The second line of code filters all files that start with Numbers or % letters. All system files starting with a . or ~ are discarded. - % ========================================================================= +% ========================================================================= % SPLIT HDF5 FILES WITH MULTIPLE DATASETS INTO INDIVIDUAL FILES % ========================================================================= % @@ -272,7 +447,6 @@ else % Example: 0002_..._O_Kedge.h5  0002_..._O_Kedge_scan_1.h5 % 0002_..._O_Kedge_scan_2.h5 % ========================================================================= - % Loop through each file in the NEXAFS file list % TmpFileList{2} contains the full paths to all NEXAFS HDF5 files % ii is the loop counter (1, 2, 3, ... up to the total number of files) diff --git a/beamtime/nappFitGaussXps.m b/beamtime/nappFitGaussXps.m index efd1214..b28757a 100644 --- a/beamtime/nappFitGaussXps.m +++ b/beamtime/nappFitGaussXps.m @@ -715,7 +715,7 @@ for ii = 1:size(DataTable(p.Results.tableSelection,:),1) Gauss = @(energyValues, A, Pos, Wdt) A./(Wdt.*sqrt(pi/2))*exp(-2.*((energyValues - Pos).^2/Wdt.^2)); linear = @(energyValues,slp,intrcpt) slp*energyValues+intrcpt; figure( 'Name', DataTable(p.Results.tableSelection,:).name{ii}) - tiledlayout(3,1) + t = tiledlayout(3,1); ax(1) = nexttile(2,[2,1]); % define high-resolution energyValues for plotting @@ -786,8 +786,17 @@ ax(2) = nexttile(1,[1,1]); residuals = fitIntensityValues - (yData_pk1+yData_pk2+yData_pk3+yData_pk4+yData_pk5+bkgrd); % Calculate residuals plot(fitEnergyValues, residuals, 'b.'); ylabel('Residuals (Data - Fit)'); -title('Residuals Plot'); +% title('Residuals Plot'); grid on; + +if fitEnergyValues(1)<= fitEnergyValues(end) + % xlabel('Kinetic Energy [eV]'); +else + set(ax(2),'Xdir','reverse'); + % xlabel('Binding Energy [eV]'); +end + +title(t,DataTable(p.Results.tableSelection,:).name{ii}, 'Interpreter', 'none'); end catch diff --git a/beamtime/nappFitGaussXpsDevelopment.m b/beamtime/nappFitGaussXpsDevelopment.m index db9b4f5..24e5777 100644 --- a/beamtime/nappFitGaussXpsDevelopment.m +++ b/beamtime/nappFitGaussXpsDevelopment.m @@ -1,5 +1,5 @@ -function DataTable = nappFitGaussXps(DataTable,varargin) -% nappFitGaussXps fits photoelectron (PE) spectra with up to 4 or 5 Gaussian peaks. +function DataTable = nappFitGaussXpsDevelopment(DataTable,varargin) +% nappFitGaussXpsDevelopment Playground to add Shirley background :-). % It allows different sets of constraints for the fitting process. % % INPUT: diff --git a/beamtime/nappGenerateSpectra.m b/beamtime/nappGenerateSpectra.m index 64634ab..1d4984d 100644 --- a/beamtime/nappGenerateSpectra.m +++ b/beamtime/nappGenerateSpectra.m @@ -1,19 +1,106 @@ function DataTable = nappGenerateSpectra(DataTable,varargin) -%nappGenerateSpectra reduces the dimension of images to generate spectra +%NAPPGENERATESPECTRA Generate 1D spectra from image spectra. +% DataTable = NAPPGENERATESPECTRA(DataTable) processes all data in the +% input table and generates spectra for the data files in each row. The +% spectra are written back into the table into new columns (table +% variables). % -% nappGenerateSpectra(FileList,tmpDataSelection) +% DataTable = NAPPGENERATESPECTRA(DataTable, tableSelection) restricts +% processing to the rows where tableSelection is true. The length of +% tableSelection must match the number of rows in DataTable. % -% *input* -% FileList: data table -% tableSelection (optional): logical array to filter data table -% tableVariable (optional): select source: image(default),'imageRoh' -% mode: mean (default) averages the sequence iterations; sum adds them +% DataTable = NAPPGENERATESPECTRA(DataTable, tableSelection, Name, Value) +% additionally customizes the source variable, reduction mode, and energy +% or iteration ranges via Name-Value arguments. % -% *output* -% with mode mean the spectrum will be saved in the table variable spectrum_countsPerSecond -% with mode sum the spectrum will be saved in the table variable spectrum_counts +% Required input +% -------------- +% DataTable +% Table that contains at least the variables: +% - name : file name as character vector or string +% - image or imageRoh : 2D image or image stack stored in a cell +% - scientaEkin_eV : kinetic energy axis % -% FIXME: spectrum_counts is not implemented yet. +% Optional positional input +% ------------------------- +% tableSelection +% Logical vector selecting rows to process. +% Size: [height(DataTable) 1] or [1 height(DataTable)] +% Default: all rows true +% +% Name-Value arguments +% -------------------- +% 'tableVariable' +% Name of the variable in DataTable that contains the image data. +% Type : char or string +% Values : 'image' (default) | 'imageRoh' +% +% 'mode' +% Reduction mode used to generate the spectra. +% Type : char or string +% Values : 'mean' (default) | 'sum' | 'trapz' | 'AugerMeitnerMean' +% Behaviour: +% - For '.h5' entries: +% 'sum' or 'mean' : sum over the selected kinetic energy range +% (currently identical behaviour; no +% normalization by time implemented). +% 'trapz' : trapezoidal integration over kinetic +% energy for each column. +% - For '.ibw' entries: +% 'mean' or 'trapz': mean over the selected iteration range +% (2nd dimension) and store as a column +% vector. +% 'sum' : sum over the selected iteration range. +% +% 'iterationRange' +% Iteration indices for '.ibw' image stacks (2nd dimension). +% Type : numeric 1x2 vector [startIdx endIdx] +% Default: [0 0] -> use full range 1 : size(image,2) +% +% 'eKinStart' +% Lower kinetic energy limit for '.h5' data. +% Type : numeric scalar +% Default: 0 -> use first element of scientaEkin_eV +% +% 'eKinEnd' +% Upper kinetic energy limit for '.h5' data. +% Type : numeric scalar +% Default: 0 -> use last element of scientaEkin_eV +% +% Output +% ------ +% DataTable +% Same table as input, with the following variables ensured and +% updated for the selected rows: +% +% spectrum_counts +% Cell array. Each cell contains a spectrum generated from the +% selected image data, depending on file type and mode +% ('sum', 'mean', or 'trapz'). +% +% spectrum_countsPerSecond +% Cell array. For '.ibw' entries and modes 'mean' or 'trapz', +% this stores the spectrum obtained by averaging over the chosen +% iteration range. +% +% logGenerateMode +% Cell array of character vectors specifying the mode used for +% each processed row. +% +% logGenerateRange +% Numeric matrix with two columns. For '.h5' entries this stores +% [eKinStart eKinEnd]. For '.ibw' entries this stores +% [iterationStart iterationEnd]. +% +% logGenerateDate +% Cell array of character vectors containing the date and time +% when the spectra were generated. +% +% Notes +% ----- +% - The function distinguishes between '.h5' and '.ibw' files based on +% the file name stored in the variable 'name'. + % Define conditions and defaults of input defaultTableVariable = 'image'; diff --git a/beamtime/nappPlot.m b/beamtime/nappPlot.m index ffcdd5e..7b0468e 100644 --- a/beamtime/nappPlot.m +++ b/beamtime/nappPlot.m @@ -1,84 +1,130 @@ function hdl = nappPlot(DataTable,varargin) -%nappPlot Plot photoelectron spectra and NEXAFS images with flexible visualization options +%NAPPLOT Plot photoelectron spectra and NEXAFS images from a data table. +% hdl = NAPPLOT(DataTable) creates figures for all rows in DataTable +% using the default visualization options and returns the handle(s) to +% the generated figure(s). % -% hdl = nappPlot(DataTable) -% hdl = nappPlot(DataTable, tableSelection) -% hdl = nappPlot(DataTable, tableSelection, Name, Value) +% hdl = NAPPLOT(DataTable, tableSelection) restricts plotting to rows for +% which tableSelection is true. The length of tableSelection must +% match the height of DataTable. % -% nappPlot is a one-and-only function for visualizing photoelectron spectroscopy -% data including XPS spectra, NEXAFS images, and Auger-Meitner electron yield. +% hdl = NAPPLOT(DataTable, tableSelection, Name, Value) additionally +% customizes the data source, energy axis, layout mode, and figure +% formatting using Name-Value arguments. % -% INPUTS: -% DataTable - Table containing spectroscopy data with variables for spectra, -% images, energy scales, and metadata +% NAPPLOT is a general-purpose visualization routine for spectroscopy +% experiments that can display: +% - NEXAFS images (h5) +% - time-resolved XPS/Auger maps (ibw) +% - 1D spectra from previously generated table variables +% - interactive NEXAFS + Auger-Meitner views % -% tableSelection - (Optional) Logical array to filter rows of DataTable -% Default: all rows (true(size(DataTable,1),1)) +% Required input +% -------------- +% DataTable +% Table that contains spectroscopy data and metadata. +% Depending on the chosen tableVariable and energyScale, the +% following variables are typically used: +% - name : file name (string/char), used to +% distinguish '.h5', '.ibw', '.xy' +% - image : processed 2D image (cell of numeric) +% - imageRoh : raw 2D image (cell of numeric) +% - spectrum_counts : 1D spectrum (in arbitrary counts +% - spectrum_countsPerSecond +% : 1D spectrum (normalized to counts per second) +% - spectrum_countsNorm : 1D normalized spectrum +% - scientaEkin_eV : kinetic energy axis (cell of numeric) +% - bindingEnergy_eV : binding energy axis (cell of numeric) +% - xRayEkin_eV : photon energy axis (cell of numeric) +% - scientaEkinRange_eV : [emin emax] for plotting +% - xRayEkinRange_eV : [emin emax] for plotting +% - lastModifiedDatestr : acquisition or file time stamp +% - sample : (optional) sample name for titles % -% NAME-VALUE PAIR ARGUMENTS: +% Optional positional input +% ------------------------- +% tableSelection +% Logical vector selecting rows of DataTable to plot. +% Default: all rows true % -% 'tableVariable' - Select data type to plot: -% 'image' (default) - Processed 2D image data -% 'imageRoh' - Raw 2D image data -% 'spectrum_countsPerSecond' - Spectrum normalized to count rate -% 'spectrum_counts' - Raw spectrum counts -% 'spectrum_countsNorm' - Normalized spectrum (arbitrary units) +% Name-Value arguments +% -------------------- +% 'tableVariable' +% Name of the variable in DataTable to plot. +% Type : char or string +% Values : 'image' (default) +% 'imageRoh' +% 'spectrum_countsPerSecond' +% 'spectrum_counts' +% 'spectrum_countsNorm' % -% 'energyScale' - Choose energy axis for plotting: -% 'kinetic' (default) - Kinetic energy scale (eV) -% 'binding' - Binding energy scale (eV) -% 'xRay' - Photon energy scale (eV, for NEXAFS) -% 'sweeps' - Plot by sweep/column number (no energy scale) +% 'energyScale' +% Energy axis used for plotting +% Type : char or string +% Values : 'kinetic' (default) - use scientaEkin_eV +% 'binding' - use bindingEnergy_eV +% 'xRay' - use xRayEkin_eV +% 'sweeps' - use column/iteration index % -% 'mode' - Control plot layout and grouping: -% 'AllInOne' (default) - All spectra overlaid in single figure; -% images plotted separately -% 'OneEach' - Each spectrum/image in separate figure -% 'iterations' - Show iteration-by-iteration evolution for -% time-series acquisitions -% 'AugerMeitner' - Plot Auger-Meitner spectra at specified energies -% 'interactive' - Interactive NEXAFS image browser with linked -% Auger-Meitner and NEXAFS line plots +% 'mode' +% Layout and plotting mode +% Type : char or string +% Values : 'AllInOne' (default) +% - Plot all selected 1D spectra in a single axes +% (overlaid). +% 'OneEach' +% - One figure per single spectrum or image. +% 'iterations' +% - Plot multiple iterations from a 2D stack in different +% colors to show time/sequence evolution. +% 'AugerMeitner' +% - Extract and plot Auger-Meitner spectra at specified +% photon energies for NEXAFS maps ('.h5'). +% 'interactive' +% - Interactive layout for NEXAFS images with linked +% Auger-Meitner and NEXAFS line cuts controlled by +% mouse / data cursor callbacks. % -% 'figureMode' - Optimize figure formatting for output: -% 'screen' (default) - Standard screen display (800×500 px) -% 'powerpoint' - Presentation format (1280×720 px, larger fonts) -% 'word' - Document format (8×10 cm, compact layout) +% 'figureMode' +% Overall figure formatting, size, and font presets. +% Type : char or string +% Values : 'screen' (default) +% - Standard display window in pixels, moderate fonts. +% 'powerpoint' +% - Larger window and fonts optimized for slides. +% 'word' +% - Compact figure in centimeters for documents. % -% 'plotStep' - (For 'iterations' mode) Plot every N-th iteration -% Default: 1 (plot all iterations) +% 'plotStep' +% Step size in iteration index for 'iterations' mode. +% Type : positive numeric scalar +% Default: 1 (plot every iteration) % -% 'AugerMeitnerEnergies' - (For 'AugerMeitner' mode) Numeric array of -% photon energies (eV) at which to extract and -% plot Auger-Meitner electron spectra +% 'AugerMeitnerEnergies' +% Photon energies (in eV) for 'AugerMeitner' mode +% At each value, the function extracts one column from the image and +% plots the corresponding Auger-Meitner electron spectrum. +% Type : numeric vector % -% OUTPUT: -% hdl - Handle to generated figure(s) +% Output +% ------ +% hdl +% Handle or array of handles to the generated figure(s) +% For 'AllInOne' this is a single figure. For 'OneEach', +% 'iterations', 'AugerMeitner', and 'interactive', hdl may contain +% one handle per processed row. % -% EXAMPLES: -% -% % Plot all spectra with binding energy scale -% nappPlot(myDataTable, 'energyScale', 'binding') -% -% % Plot selected images only -% selection = contains(myDataTable.name, 'C1s'); -% nappPlot(myDataTable, selection, 'tableVariable', 'image') -% -% % Interactive NEXAFS browser -% nappPlot(myDataTable, 'mode', 'interactive') -% -% % Plot Auger-Meitner spectra at specific photon energies -% nappPlot(myDataTable, 'mode', 'AugerMeitner', ... -% 'AugerMeitnerEnergies', [280, 285, 290, 295]) -% -% % Format for PowerPoint presentation -% nappPlot(myDataTable, 'mode', 'AllInOne', 'figureMode', 'powerpoint') -% -% % Show every 5th iteration with normalized counts -% nappPlot(myDataTable, 'mode', 'iterations', 'plotStep', 5, ... -% 'tableVariable', 'spectrum_countsNorm') -% -% See also: image, plot, inputParser +% Notes +% ----- +% - The function checks that the chosen tableVariable is non-empty for +% all selected rows and throws an error otherwise. +% - File type is inferred from the 'name' variable to distinguish h5, +% ibw, and xy-type data +% - Axis labels, limits, and titles are adapted automatically based on +% energyScale, tableVariable, and available metadata (sample name, +% time stamp) +% - In 'interactive' mode, datacursor and mouse motion callbacks update +% linked line plots for Auger-Meitner and NEXAFS traces. %% TODO % % TODO: Add averaging in image and in iteration plot diff --git a/beamtime/nappScale.m b/beamtime/nappScale.m index fc81083..b96dc2b 100644 --- a/beamtime/nappScale.m +++ b/beamtime/nappScale.m @@ -1,26 +1,146 @@ function DataTable = nappScale(DataTable,varargin) -%nappScale can be used to normalise XPS spectra to the peak area. The peak -%of the same region or of a different region with identical SES file -%number can be used for XPS data. NEXAFS spectra can be normed to their -%area or to the intensity at an energy range of choice. +%NAPPSCALE Normalize XPS and NEXAFS spectra. +% The peak of the same region or of a different region with identical +% SES file number (same sequence iteration) can be used for XPS data. +% NEXAFS spectra can be normed to their area or to the intensity +% at an energy range of choice. % -% FileList = nappScale(FileList,tmpDataSelection,'regionOld','C1s','regionNew','O1s'); +% For XPS ('.ibw') data, NAPPSCALE divides spectra of one region +% (regionOld, default is C1s) by the fitted peak area taken from a +% spectrum of the same sequence but different region (regionNew, default +% is O1s). The same sequence iteration is identified by the SES file +% number and acquisition time. For NEXAFS ('.h5') data, NAPPSCALE +% normalizes spectra to the mean intensity or to the integrated area over +% a chosen photon-energy interval. % -% *input* -% FileList: data table -% tableSelection (optional): logical array to filter data table. These -% spectra will be normalised. -% regionOld: C1s (default) or O1s, N1s - region spectra that will be -% normalised. Needs to be identical to the table selection (filter). -% regionNew: O1s (default) or C1s, N1s - peak area that will be used to normalise -% peakNumber: Number of the feature that should be used for fitting -% (nappFitGaussXps gives results for 4 features, default is 1) +% DataTable = NAPPSCALE(DataTable) normalizes spectra in the input table +% using default options and returns the updated table with +% normalized spectra in the variable spectrum_countsNorm. % -% The region in tableSelection and regionOld MUST be identical. +% DataTable = NAPPSCALE(DataTable, tableSelection) restricts +% normalization to rows where tableSelection is true. The length +% of tableSelection must match the height of DataTable. % +% DataTable = NAPPSCALE(DataTable, tableSelection, energyStart, energyEnd) +% additionally specifies an energy interval used to normalize NEXAFS +% spectra ('.h5' data) % -% *output* -% table variable spectrum_countsNorm +% DataTable = NAPPSCALE(..., Name, Value) customizes the source variable, +% normalization mode, line region mapping, and peak selection via +% Name-Value arguments (see below): +% + +% +% Required input +% -------------- +% DataTable +% Table containing spectroscopy data and metadata.[web:2] +% Depending on file type and options, the function uses: +% - name : file name, used to distinguish 'ibw' +% and 'h5' and to construct regionNew +% file names (XPS) +% - spectrum_counts : 1D spectrum (cell of numeric) +% - spectrum_countsPerSecond +% : 1D spectrum normalized to rate +% - spectrum_countsNorm : (created/overwritten) normalized +% spectrum +% - peakArea : numeric vector of fitted peak areas +% (XPS, one row per region) +% - lastModifiedDatenum : datenum time stamp used to find the +% matching regionNew spectrum +% - xRayEkin_eV : photon energy axis (NEXAFS) +% +% Optional positional input +% ------------------------- +% tableSelection +% Logical vector selecting rows in DataTable to normalize. +% Default: all rows true +% +% energyStart, energyEnd +% Photon-energy limits (in eV) that define the normalization +% interval for NEXAFS spectra ('.h5'). +% Type : numeric scalars +% Use : required for 'intensity' or 'area' mode on '.h5' data. +% +% Name-Value arguments +% -------------------- +% 'tableVariable' +% Name of the spectral variable to be normalized.[web:10] +% Type : char or string +% Values : 'spectrum_countsPerSecond' (default) +% 'spectrum_counts' +% 'spectrum_countsNorm' +% +% 'regionOld' +% XPS region name of the spectra to be normalized ('.ibw'). +% Used for file-name replacement when searching the reference +% region +% Type : char or string +% Values : 'C1s' (default) | 'O1s' | 'N1s' | 'Cl2p' +% +% 'regionNew' +% XPS region name that provides the reference peak area used for +% normalization. +% Type : char or string +% Values : 'O1s' (default) | 'C1s' | 'N1s' +% +% 'peakNumber' +% Index of the peak in the peakArea vector used as normalization +% reference for XPS data. +% Type : positive integer scalar +% Default: 1 +% +% 'mode' +% Normalization mode. +% Type : char or string +% Values : 'area' (default) +% 'intensity' +% +% Behaviour: +% - For '.ibw' (XPS) +% 'area' : divide selected spectra by the chosen peakArea +% of the corresponding regionNew spectrum. +% 'intensity' : currently not implemented (warning printed). +% - For '.h5' (NEXAFS) +% 'intensity' : divide spectra by the mean intensity over +% [energyStart, energyEnd]. +% 'area' : divide spectra by the integrated area under +% the curve over [energyStart, energyEnd] +% (trapz). +% +% Output +% ------ +% DataTable +% Updated input table with normalized spectra and log variables. +% The function ensures the following variables: +% +% spectrum_countsNorm +% Cell array containing the normalized spectrum for each +% processed row. Existing values are overwritten. +% +% logScaleRange +% Numeric matrix with two columns. For '.h5' rows, stores the +% [energyStart energyEnd] interval used for normalization. +% +% logScaleMode +% Cell array of character vectors with the mode ('area' or +% 'intensity') used for each normalized row. +% +% logScaleDate +% Cell array of character vectors containing the time stamp of +% the normalization (datestr(now)). +% +% Notes +% ----- +% - All selected entries in the chosen tableVariable must contain +% non-empty spectra; otherwise, the function throws an error. +% - For XPS data, regionOld and the tableSelection filter must refer to +% the same region; regionNew is found by name replacement and by +% matching date and time to locate the correct reference spectrum. +% - For NEXAFS data, the function supports both increasing and decreasing +% photon-energy axes when locating the normalization interval. + + % Define conditions and defaults of input defaultTableVariable = 'spectrum_countsPerSecond'; diff --git a/beamtime/readme.md b/beamtime/readme.md new file mode 100644 index 0000000..f256a47 --- /dev/null +++ b/beamtime/readme.md @@ -0,0 +1,505 @@ +# nappMATLAB toolbox 🧪📈 + +> One data table to rule them all: +> XPS & NEXAFS analysis in MATLAB, with a bit of structure and a lot of spectra. 😎 + +This repo contains shared MATLAB tools and example scripts to analyse XPS +and NEXAFS data from PSI beamlines using a **common table‑based data structure**. +Everyone is encouraged to use it, break it (gently), fix it, and extend it. 😄🚀 + +*** + +## Table of contents + +- [What this is](#what-this-is) +- [Core ideas](#core-ideas) +- [Prerequisites](#prerequisites) +- [Installation](#installation) +- [Add to the MATLAB path](#add-to-the-matlab-path) +- [Data folders and naming](#data-folders-and-naming) +- [The shared data table](#the-shared-data-table) +- [MATLAB help & docs](#matlab-help--docs) +- [Python / pandas side quests](#python--pandas-side-quests) +- [Contributing](#contributing) +- [License / usage](#license--usage) + +*** + +## What this is + +This toolbox provides XPS & NEXAFS functions to +import, bookkeeping, spectra generation, background handling, peak fitting, +plotting, and data export. + +All nappMATLAB functions operate on a **single MATLAB table**, +where each row is one data file (SES or PShell measurement) and columns +store image data, spectra, meta‑data, fit results, etc. + +*** + +## Core ideas + +- **One table to rule them all** + Data from various beamtimes and instruments get imported into the same type of MATLAB table. + +- **Scripts call functions, functions operate on tables** + Scripts are your personal playground for "what do I want to see today?", + while shared napp* functions offer the tools for your analysis. 🧰 + +- **Input → script → output** + To keep the overview, it is suggested to split your analysis topics into individual script files: + Each of your scripts takes an existing table as input, applies a series of operations, + and saves an updated table with the **same name as the script file**. + +- **Raw data stays raw** + Data columns (`image`, `spectrum_countsPerSecond`, etc.) are overwritten + by processing, so that there is only one recent and up‑to‑date version. + The advantage is that the processing function can be called in (almost) + any order or sequence. But each has a corresponding `*_Roh` column to go + back to the original state. + +- **Collaborative by design** + Everyone in the group is more than welcome to contribute new functions and + examples so that the next beamtime is easier for everyone. 🤝 + + +## 🧭 Keep an Overview — FAIR and open research + +### 💡 The Big Idea + +Use **scripts** (or live scripts) that call **nappMATLAB** functions to process data step by step. +Each script documents what was done, why it was done, and what the outcome looks like (including plots). +This turns everyday analysis into a lightweight data‑management practice that +supports open and FAIR research from day one. 🙂 It helps you quickly find and share data in typical situations: + +- A team member might ask: Can you send me the figure from your last presentation so that I can edit it? +- You might ask: Can I compare this NEXAFS spectrum to one from my first beamtime 2 years ago? +- A referee for your publication might ask: Have you used all data, or were some discarded? + +Concretely, concepts like the **ACTRIS data levels** (Level 0 raw, Level 1 calibrated, Level 2 processed, Level 3 publication‑ready) +can be mirrored in how scripts and data tables are named and stored, and aligned with the [SNSF Open Research Data policy](https://www.snf.ch/en/dMILj9t4LNk8NwyR/topic/open-research-data) +and the [ACTRIS Data Policy](https://data.actris.eu/data-policy). + +--- + +### 📊 Data Levels + +| Level | Description | +|:------|:-------------| +| **0 – Raw data** | Native resolution with acquisition metadata (instrumental, beamline, sample info). | +| **1 – Calibrated** | Basic QC — excludes faulty or aborted spectra. | +| **2 – Processed** | Fully QC-checked, calibrated, normalized, and outlier-filtered (for scientific, not technical, reasons). | +| **3 – Final** | Publication-ready results for figures, tables, and discussions. 🎯 | + +--- + +### 🧪 Processing Workflow + +Beamtime data are processed in *two main phases*: + +- **Levels 0–1:** during the beamtime 🕰️ — ensures data quality and guides ongoing experiments. Scripts live in the **beamtime folder** and are usually shared. +- **Levels 2–3:** after the beamtime 🧠 — selects and combines results from multiple sources (e.g. lab experiments, simulations) and beamtimes. + Scripts live in your **personal analysis folder** on the shared drive. + +--- + +### ⚙️ Script Overview + +#### `importData.m` +- Level 1 data +- Shared script in **beamtime folder** +- Imports all data from one beamtime + - Load data into MATLAB tables + - Add X-ray energy and sample descriptions + - Identify and document faulty data +- Saves output as **FileList.mat** *(name has legacy reasons)* 🧓 + +#### `generateSpectra.m` +- Level 1 data +- Shared script in **beamtime folder** +- Processes all spectra + - Generate spectra (dimensional reduction) + - Plot & QC XPS/NEXAFS spectra + - Compare key edges/regions + - Identify outliers + - Calculate binding energies & peak widths +- Saves output as **SpectrumList.mat** *(tradition beats convention, again!)* 😄 + +#### `specificScienceQuestion.m` +- Level 2 or level 3 data +- Your personal data-analysis script 👩‍🔬 +- Combines selected datasets to answer one question + Examples: + - `AnalysisStep3DepthProfiles.m` + - `AnalysisStep4SurfaceConcentration.m` + - `BeamTimeNov2025isItChlorineFits.m` + - `GaussFitHClOnIce.m` + - `FigureHexylamineN1sLjIce.m` +- Saves output as a `.mat` file with the same name 🧾 + +--- + +### 🔁 Typical Processing Chain + ````` +beamtime raw files
 +↓
importData.m → FileList.mat
 +↓
generateSpectra.m → SpectrumList.mat
 +↓
AnalysisStep4SurfaceConcentration.m → AnalysisStep4SurfaceConcentration.mat
 +↓
GaussFitHClOnIce.m → GaussFitHClOnIce.mat
 + +SpectrumList.mat +↓
FigureHexylamineN1sLjIce.m → FigureHexylamineN1sLjIce.mat +`````` + +Reuse `.mat` outputs to skip re-running previous steps 🧠💤 + +*** + +## Prerequisites + +- MATLAB (reasonably recent; minimum R2018; R2025b+ recommended). + + To get it, create a MathWorks account using your PSI email. Your PSI license will then automatically be assigned to your account (assuming you have an older version installed via the software kiosk), and you can go ahead and download the latest version from the MathWorks homepage, even if it is not yet available through the software kiosk. + +- Access to the Napp data folders (Windows network share). +- Git (if you want to clone and contribute instead of downloading zips). + +Optional but handy: + +- A Python environment if you want to poke at the tables with pandas later. 🐼 + +*** + +### 1. Get the code + +**Option A – clone via git (recommended)** + +WIP: No idea yet what it takes to set up gitea git on a PSI computer. Can one of the Windows users update this section here, so that the others know? 🙂 + +**Option B – download zip (for non‑git days)** + +1. Open the repository in your browser. +2. Click **Download ZIP**. +3. Unzip to your favorite folder to store shared functions such as `D:\MATLAB\napp-matlab` or `/Users/you/Code/napp-matlab`. + +*** + +### Add to the MATLAB path + +You need the repository (and its subfolders) on the MATLAB path. + +In MATLAB: + +```matlab +% Adapt this to where you cloned/unzipped the repo +toolboxPath = 'C:\Users\you\Code\napp-matlab'; +addpath(genpath(toolboxPath)); +% Optionally make it persistent +savepath; +``` + +*** + +### Data folders and naming + +The functions require a specific file organisation and folder naming for the beamtime data to locate and importe SES, NEXAFS, photo, and pressure data consistently across beamtimes. A single beamtime is organised in a top‑level "beamtime folder" that contains four data subfolders and no further nesting inside them: + +```text +202202_Feb_IssIceNapp/ +├─ SES/ # SES XPS/PE images in IgorPro .ibw or .xy files +├─ NEXAFS/ # NEXAFS (XAS) data in .h5 files +├─ Photos/ # Experimental photographs in .bmp format +└─ Pressure/ # LabView pressure logs in ASCII .dat or .txt files +``` + + Additional folders might be added to the beamtime folder to hold the scripts, reports, lab notes. +You usually start by scanning such a folder into a table (see MATLAB example files): + +```matlab +FileList = nappFileList('2025/20251119_NappIss', ... + 'mode','local', ... + 'importLabView','off'); +save('FileList.mat',"FileList"); +``` + +- The first argument is a **relative path under your data root**. +- `mode` selects where to look for data (local / network), i.e. it defines the data root. +- The result is a MATLAB table (by convention often called `FileList` because it lists all the files acquired during a beamtime). + +**Naming conventions** + +- Folders: `YYYYMMDD_BeamlineName` (e.g. `20251119_NappIss`). +- Scripts: descriptive names like `generateSpectra.m`, `PlottingForAnand.m`. +- Output: typically script‑matching names, saved into `.mat` files. + +*** + +## The shared data table + +All nappMATLAB functions operate on a MATLAB table with one row per file and a set of standard variables (columns). Using the same column (variable) names across users and across software helps to share data and is a prerequisite for programming. + +### Table Variables: Identification & meta + +- `name` + Filename and ID as given by the instrument software during acquisition. Typically includes run number, edge, and photon energy. + +- `sample` + Free‑text description of the sample or experiment. Often used to mark data quality, e.g. including `(bad data)` for files that should be excluded from analysis. + +- `lastModifiedDatenum` + Timestamp (numeric datenum) from the data file metadata indicating when the acquisition was finished. + +- `lastModifiedDatestr` + Human‑readable string version of the `lastModifiedDatenum`. + +- `creationDate` + File creation date as reported by the operating system (this logs when the measurement was started). + +- `importDate` + Date/time when the file was imported into the MATLAB table (can differ from acquisition/creation time, useful for tracking when data entered the workflow). + +- `analysisDir` + Path to the analysis directory where the current table and related scripts live. + +*** + +### Table Variables: Raw and processed data + +- `image` + Primary result from SES software; multidimensional data (typically counts per second vs kinetic energy vs sequence iteration). This is the original measurement data. + +- `imageRoh` + Snapshot of `image` at import time. Remains unchanged so you can always go back to the original image regardless of later processing steps. + +- `spectrum_countsPerSecond` + Spectrum derived from `image` (counts per second vs energy), usually by averaging or summing over sequence iterations and normalising to 1 s. + +- `spectrum_counts` + Same as above but in raw counts (not normalised per second), depending on context and instrument output. + +- `spectrumRoh_countsPerSecond` + Snapshot of `spectrum_countsPerSecond` at generation time. Used to restore or compare against the original spectrum. + +- `spectrumRoh_counts` + Snapshot of `spectrum_counts` at generation time. Preserves the initial integrated spectrum even if later processing modifies the live columns. + +*** + +### Table Variables: Analyzer and X‑ray settings + +- `scientaEkin_eV` + Array of kinetic energies (in eV) corresponding to the analyser energy axis for the spectrum or image. + +- `scientaEkinRange_eV` + Two‑element range of the kinetic energy window in a human‑readable form. + +- `scientaPassEnergy_eV` + Pass energy (in eV) used by the Scienta analyser; controls resolution vs line shapes. + +- `scientaDwellTime_ms` + Dwell time per channel/step (in ms); influences counting statistics and total acquisition time. + +- `regionName` + Name of the acquisition region as defined in the SES software (e.g. "C1s", "Survey", "O_Kedge_Resonant"). + +- `scientaAcquisitionMode` + Acquisition mode selected in the analyser, sweep or fixed (snapshot). + +- `beamlineInt` + X‑ray flux, typically the output from a diode. + +- `scientaLensMode` + Lens mode of the analyser such as HiPPHAXPES. + +- `scientaRegionIterations` + Number of region iterations. + +- `scientaSequenceIterations` + Number of sequence iterations. + +- `xRayEkin_eV` + X‑ray photon energy (in eV); essential for converting to binding energy in XPS and for obvious reasons for NEXAFS. It is automatically recorded for NEXAFS and needs to be added manually for XPS. + +- `xRayEkinRange_eV` + Human‑readable X‑ray energy range in eV. + +- *(SLITS – WIP)* + Slit settings (horizontal/vertical or monochromator slits). Once implemented, these should store the X‑ray beamline slit openings used during acquisition. + +*** + +### Table Variables: Sample settings + +- `temperature_dC` + Sample temperature during the measurement (units °C). + +- `pressure_mbar` + Pressure of the sample environment. + +- `x-y-z position_mm` + Sample position coordinates (stage x/y/z). + +- `gas flows` + Gas flow rates (e.g. in sccm) for reactants or carrier gases in the experimental cell. + +*** + +### Table Variables: Processing outcome + +These variables are typically created or updated by fitting/analysis functions. + +- `peakPosition` + Fitted peak position(s). + +*** + +### Live vs Roh columns + +- Columns without `Roh` (`image`, `spectrum_countsPerSecond`, …) are **live** and will be overwritten by processing functions. +- Columns ending in `Roh` store the state at **import / generation** time and are never touched again by the common functions. + +This allows: + +- iterative processing during beamtime, and +- going back to clean starting points without reimporting everything. 🔁 + +*** + +## MATLAB help & function call conventions + +Most functions in this toolbox operate on the shared MATLAB data table and follow a few simple calling patterns. + +*** + +### Basic in‑place call + +Many functions take a table as input and return the **same** table with additional variables or modified content: + +```matlab +InputTable = nappFunctionAbc(InputTable); +``` + +- `InputTable` is a MATLAB table containing your data. +- The function reads from `InputTable`, writes its results into new or existing columns, and returns the updated table. +- Plotting functions are an exception: they often **do not** modify the table and only create figures. + +*** + +#### Copy‑on‑write call (not recommended) + +If you want to keep the input table unchanged and work on a copy, use different variable names: + +```matlab +CopyOfTable = nappFunctionAbc(InputTable); +``` + +- `InputTable` remains untouched. +- `CopyOfTable` is a full copy of `InputTable` plus the additional results created by `nappFunctionAbc`. + +*** + +#### Mandatory vs optional inputs + +Function calls typically look like this: + +```matlab +OutputTable = nappFunctionAbc(InputTable, x, y, ... + 'tableSelection', tmpDataSelection, ... + 'tableVariable', 'TableVariableName', ... + 'energyScale', 'kinetic', ... + 'mode', 'mean', ... + 'showFigures', true); +``` + +- **Mandatory inputs** (e.g. `InputTable`, `x`, `y`) come first and are positional. +- **Optional inputs** are given as name–value pairs, just like in standard MATLAB functions. + +Common options: + +- `'tableSelection': tmpDataSelection` + Logical array that selects the rows to operate on. Only rows where `tmpDataSelection` is `true` are processed. + +- `'tableVariable': 'TableVariableName'` + Name of the column in the table that the function should use as its primary data (e.g. `'image'`, `'spectrum_countsPerSecond'`). + +- `'energyScale': 'kinetic'` (or `'binding'`, `'xRay'`, depending on the function) + Specifies which energy scale to use for plotting or calculations. + +- `'mode': 'mean'` + Selects a specific processing mode, for example whether to compute a mean or sum over iterations, or which plotting style to use. The available modes depend on the function. + +- `'showFigures': true` (or `false`) + Controls whether figures and other graphical output are displayed. + +Each function may define additional options; always check the help text for the full list. + +*** + +### Getting help from within MATLAB + +Each function should ship with a short header and usage examples. You can get a list of all functions and a short description by navigating to the function folder `beamtime` in MATLAB and running: + +- `help beamtime` + +You can access a more detailed description of each function via standard MATLAB commands: + +- `help nappFunctionAbc` +- `doc nappFunctionAbc` + +The separate MATLAB documents **" WIP will be added soon "** give examples: + +- concept and function call patterns, +- data structure and table variables, +- import workflows, +- processing steps from raw data to publication plots. 📚 + +*** + +## Python / pandas side quests 🐍 + +If you or a future group member want to explore data in Python: + +- The MATLAB table maps naturally to a `pandas.DataFrame`: one row per experiment, columns identical to MATLAB variable names. +- Image and spectrum columns can be stored as arrays (NumPy) in "object" columns. +- Keep the **same column naming scheme** (`image`, `imageRoh`, `spectrum_countsPerSecond`, …) and document any mapping if you deviate. + +A simple workflow is: + +1. Save the MATLAB table (`FileList`) as `.mat` or HDF5. +2. Load it in Python and convert to a `DataFrame`, preserving column names. +3. Use pandas for tabular manipulations and matplotlib for plotting and processing. + +*** + +## Contributing + +This is a **group toolbox**. Contributions are welcome. 🎯 + +Guidelines: + +- Reuse the **shared table structure** and column naming (especially data vs Roh columns). +- Keep functions focused and composable; put experiment‑specific logic in scripts. +- Prefer updating existing functions over creating new (personal) versions. +- Document new functions with: + - a clear help header, + - input / output description, + - at least one minimal example. +- Add or update example scripts (`examples/` or `scripts/`) showing how to use your new features. +- If you introduce new table variables, add a short description in the data‑structure docs. + +Git hygiene (short version): + +- Use feature branches for non‑trivial changes. +- Write clear commit messages and push changes for every major update or change. +- Do **not** commit raw beamline data; keep those on shared drives and refer to them from scripts. + +*** + +## License / usage + +This code is intended for internal use within the research group (and close collaborators). If you plan to use or release it outside the group, please check first. + +*** + +Happy NAPPing! 🎉🧊 +If you are lost, confused, or plotting the wrong edge – reach out. \ No newline at end of file diff --git a/import/QuickAndDirtyNexafsImport.m b/import/QuickAndDirtyNexafsImport.m index 0d85932..7d1988e 100644 --- a/import/QuickAndDirtyNexafsImport.m +++ b/import/QuickAndDirtyNexafsImport.m @@ -1,5 +1,7 @@ function ListFiles = QuickAndDirtyNexafsImport(DataTable) + + %% QuickAndDirtyNexafsImport % [filePick,pathPick] = uigetfile({'*.h5'},... diff --git a/import/sarastokes-h5tools-matlab-8d4d610/.gitignore b/import/sarastokes-h5tools-matlab-8d4d610/.gitignore new file mode 100644 index 0000000..8c736a0 --- /dev/null +++ b/import/sarastokes-h5tools-matlab-8d4d610/.gitignore @@ -0,0 +1,36 @@ +## MATLAB +*.asv +*.m~ +*.mldatx + +## LaTeX +*.aux +*.fls +*.toc +*.synctex.gz +*.fdb_latexmk +*.log +*.out + +## Development folder +dev/ + +## Testing folders and files +test/coverage/ +test/File.h5 +test/AttributeTest.h5 +test/AttributesTest.h5 +test/CopyTest1.h5 +test/CopyTest2.h5 +test/Dataset.h5 +test/Collection.h5 +test/EnumClassTest.h5 +test/GroupTest.h5 +test/LinkTest.h5 +test/MoveTest.h5 +test/ValidatorTest.h5 +test/Test.h5 + +## Misc +*.DS_Store +*.vscode \ No newline at end of file diff --git a/utils/distFig_Error.mat b/utils/distFig_Error.mat index 9273a7b608a2c25f2ca2bd4576e9ea20cfa4bffc..1f39a8a5b895d3188addcb0f68f3415cccf426bf 100644 GIT binary patch literal 164094 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 a)cm+2|D*fnsaTHTXgbsTNV@=yH>YZD@%mH% delta 108595 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%0Dd9c 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 diff --git a/beamtime/nappImage.m b/utils/nappImage.m similarity index 91% rename from beamtime/nappImage.m rename to utils/nappImage.m index 6f35383..a661998 100644 --- a/beamtime/nappImage.m +++ b/utils/nappImage.m @@ -1,10 +1,6 @@ function nappImage(DataTable,varargin) % - % h_img = Napp_plotImage(StructArrayData) plots an image of the - % NEXAFS data set in the NEXAFS data structure. - % - % Output: an image figure, with a handle. The handle is important to - % select these images for XPS removal + % no longer used. % Define conditions and defaults of input defaultTableVariable = {'image'};