From 282a6ada125cde9d56d52449c65928402e67324b Mon Sep 17 00:00:00 2001 From: Lewin Probst <info@emirror.de> Date: Sat, 27 Jun 2020 12:09:04 +0200 Subject: [PATCH] Adjusted reloadRfb function so that it only overwrites the metadata. The offsets get recalculated. --- VERSION | 2 +- lib/+artoa/+controller/+file/reloadRfb.m | 76 ++++++++++++++------- lib/+artoa/+controller/copyRfbToWorkspace.m | 41 +++++++---- lib/+artoa/+gui/main.m | 2 +- 4 files changed, 79 insertions(+), 42 deletions(-) diff --git a/VERSION b/VERSION index dd4a900..b8e817d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -254 \ No newline at end of file +255 \ No newline at end of file diff --git a/lib/+artoa/+controller/+file/reloadRfb.m b/lib/+artoa/+controller/+file/reloadRfb.m index d62b08f..6db3c98 100644 --- a/lib/+artoa/+controller/+file/reloadRfb.m +++ b/lib/+artoa/+controller/+file/reloadRfb.m @@ -1,47 +1,73 @@ function [] = reloadRfb(~, ~) %LOADRFB Creates a file selection dialog and reads the file into memory. -global artoaDataInput; +global artoaDataInput artoaWorkspace; %% Check if path is available if ~isfield(artoaDataInput, 'path_rfb') - error([mfilename ': No rfb file available, please load it manually.']); -end + waitfor( ... + msgbox( ... + [ ... + 'You cannot reload the rfb file, because the reference is missing. ' ... + 'Please specify the path to the file in the next dialog.' ... + ] ... + , 'RFB Path missing' ... + , 'error' ... + ) ... + ); + [filename, pathname] = uigetfile('*.rfb', 'Specify rfb filename'); + if filename == 0 + return; + end -%% Initialize variables -artoaDataInput.rfb = false; + artoaDataInput.path_rfb = fullfile(pathname, filename); +end %% Check if file exists if ~isfile(artoaDataInput.path_rfb) - error([mfilename ': Selected file ' filepath ' is not a file! Please try again!']); + waitfor(msgbox(['The file ' artoaDataInput.path_rfb ' does not exist!'], 'Error', 'error')); + artoaDataInput = rmfield(artoaDataInput, 'path_rfb'); + return; end -%% Close all windows -artoa.controller.edit.pressure.close(); -artoa.controller.edit.temperature.close(); -artoa.controller.edit.timeOfArrival.close(); -artoa.controller.track.trajectoryOutput.close(); +%% Ask for confirmation +answer = questdlg( ... + [ ... + 'Reload RFB file "'... + artoaDataInput.path_rfb ... + '"?' ... + ], ... + 'Reload rfb file?', ... + 'Yes', ... + 'No', ... + struct('Default', 'Yes', 'Interpreter', 'none') ... + ); + +if strcmp(answer, 'No') + return; +end -%% Load file into memory -artoaDataInput.rfb = artoa.load.rfb(artoaDataInput.path_rfb); +%% Load rfb file +rfb = artoa.load.rfb(artoaDataInput.path_rfb); + +%% Update artoaDataInput variable +artoaDataInput.rfb.FLOAT = rfb.FLOAT; +artoaDataInput.rfb.SAT_FORMAT = rfb.SAT_FORMAT; +artoaDataInput.rfb.SAT_DATA = rfb.SAT_DATA; +artoaDataInput.rfb.VARIABLE_LIST = rfb.VARIABLE_LIST; %% Update workspace -artoa.controller.initializeArtoa4(); -artoa.controller.copyRfbToWorkspace(); +artoa.controller.copyRfbToWorkspace(true); +%% Update offset table +artoaWorkspace.editOffsets.offsets = artoa.offsets.generateOffsetTable( ... + artoaWorkspace.float, ... + artoa.controller.getSoundsourcesWithAppliedToa() ... + ); -%% Initialize tracking parameter -artoa.controller.track.parameter.initialize(true); +%% Update GUI artoa.controller.track.parameter.updateGui(); -%% Initialize offsets -artoa.controller.edit.offsets.initialize(true); artoa.controller.edit.offsets.updateGui(); -%% Calculate soundspeed -artoa.controller.edit.offsets.updateMeasuredSoundspeed(); - -%% Update menu buttons -artoa.controller.updateMenuButtons(); - %% Update status text in main window artoa.controller.main.updateLoadedFloatInformation(); diff --git a/lib/+artoa/+controller/copyRfbToWorkspace.m b/lib/+artoa/+controller/copyRfbToWorkspace.m index 437bc91..1cc671e 100644 --- a/lib/+artoa/+controller/copyRfbToWorkspace.m +++ b/lib/+artoa/+controller/copyRfbToWorkspace.m @@ -1,4 +1,4 @@ -function [] = copyRfbToWorkspace() +function [] = copyRfbToWorkspace(pIgnoreDataSection) %COPYRFBTOWORKSPACE Copies rfb input data to the workspace. % Gets all required data from the artoaDataInput variable, prepares it % for calculations and operations and stores them in the artoaWorkspace @@ -6,9 +6,32 @@ function [] = copyRfbToWorkspace() global artoaDataInput artoaConfig artoaWorkspace; -%% Generate workspace +%% Parameter check +if ~exist('pIgnoreDataSection', 'var') + pIgnoreDataSection = false; +end + +%% FLOAT DETAILS +artoaWorkspace.float = artoaDataInput.rfb.FLOAT; + +%% SAT DATA +fnames = fieldnames(artoaDataInput.rfb.SAT_FORMAT); +artoaWorkspace.satData = struct(); +for i = 1:length(fnames) + artoaWorkspace.satData.(fnames{i}) = artoaDataInput.rfb.SAT_DATA( ... + :, ... + artoaDataInput.rfb.SAT_FORMAT.(fnames{i}) ... + ); +end + +%% STOP IF DATA SHOULD BE IGNORED +if pIgnoreDataSection + return; +end + %% RAFOS DATE + artoaWorkspace.rafosDate = artoa.convert.dmy2rd( ... artoaDataInput.rfb.DATA(:, artoaDataInput.rfb.VARIABLE_LIST.start_listen_day), ... artoaDataInput.rfb.DATA(:, artoaDataInput.rfb.VARIABLE_LIST.start_listen_mon), ... @@ -21,6 +44,7 @@ artoa.convert.hms2rd( ... artoaDataInput.rfb.DATA(:, artoaDataInput.rfb.VARIABLE_LIST.start_listen_sec) ... ); + %% TOA artoaWorkspace.toaData = struct(); artoaWorkspace.toaData.status = zeros( ... @@ -85,19 +109,6 @@ artoa.data.replaceValuesWithNaN( ... artoaWorkspace.pressure, artoaConfig.defaults.pressure ... ); -%% FLOAT DETAILS -artoaWorkspace.float = artoaDataInput.rfb.FLOAT; - -%% SAT DATA -fnames = fieldnames(artoaDataInput.rfb.SAT_FORMAT); -artoaWorkspace.satData = struct(); -for i = 1:length(fnames) - artoaWorkspace.satData.(fnames{i}) = artoaDataInput.rfb.SAT_DATA( ... - :, ... - artoaDataInput.rfb.SAT_FORMAT.(fnames{i}) ... - ); -end - %% GET SOUNDSOURCES THAT ARE ALIVE DURING THE FLOAT MISSION artoaWorkspace.filteredSoundsources = artoa.soundsources.filter( ... artoaDataInput.soundsources, min(artoaWorkspace.rafosDate), max(artoaWorkspace.rafosDate) ... diff --git a/lib/+artoa/+gui/main.m b/lib/+artoa/+gui/main.m index 17a5831..d302809 100644 --- a/lib/+artoa/+gui/main.m +++ b/lib/+artoa/+gui/main.m @@ -181,7 +181,7 @@ artoaGui.main.menus.fileReloadSoundsourceFile = uimenu( ... % RFB FILE artoaGui.main.menus.fileReloadRfbeFile = uimenu( ... artoaGui.main.menus.fileReload, ... - 'Label', 'RFB file', ... + 'Label', 'RFB metadata', ... 'Callback', pCallbacks.reloadRfbFile ... ); -- GitLab