Skip to content
Snippets Groups Projects
SaveTranscriptions.m 2.25 KiB
Newer Older
clearvars -except ls lss remainingFiles

%% For testing
% load('C:\Users\chris\Box\Nelson Lab Data\Other Data\NTAud Transcription\Transcript_OrigAudio_AudSentStim.mat', 'lss');
% test = load('C:\Users\chris\Box\Nelson Lab Data\Other Data\NTAud Transcription\Transcript_Version2_AudSent.mat');
% ls = test.lss;

% testpos = 6;
% resetLabelValues(lss, testpos)
% setLabelValue(lss, testpos, 'Words', ls.Labels.Words{testpos}.ROILimits, ls.Labels.Words{testpos}.Value)
%% Main code
% Search the workspace for ls and lss and check for the tracker
if ~ValidateWorkspace(ls, lss); return; end
% Update progress
if ~exist('remainingFiles', 'var'); remainingFiles = []; end
remainingFiles = FindRemainingFiles(ls, lss, remainingFiles);
% Transfer labels
lss = TransferLabels(ls, lss);

% Save latest transcription and progress
uisave({'lss', 'remainingFiles'}, 'lss.mat')
function extStatus = ValidateWorkspace(ls, lss)

if ~exist("ls", "var")
    fprintf(2, 'No exported transcript found. Please export your transciription to the work space as ''ls''\n')
    extStatus = false;
    return
if ~exist("lss", 'var')
    fprintf(2, 'The original transcription file is missing, please ensure the work you have done is saved to ''ls'' and load in the original transcription\n');
    extStatus = false;
    return
end

extStatus = true;

end
function remainingFiles = FindRemainingFiles(ls, lss, remainingFiles)

% Find identical labels
nFiles = lss.NumMembers;
isUntouched = false(nFiles, 1);
for i = 1:nFiles
    isUntouched(i) = isequal(ls.Labels.Words{i}, lss.Labels.Words{i});
end

% Account for previosuly edited files
if ~isempty(remainingFiles)
    wasPreviouslyUntouched = ~ismember(1:nFiles, remainingFiles.File_Pos);
    isUntouched(wasPreviouslyUntouched) = false;
end

% Prepare output
File_Pos = find(isUntouched);
memberNames = ls.getMemberNames;
File_Name = memberNames(isUntouched);
remainingFiles = table(File_Pos, File_Name);

% could always print out a nice little status msg to encourage the user
end

function lss = TransferLabels(ls, lss)
% Clear lss labels
resetLabelValues(lss)

% Move ls labels to lss
nTrials = height(ls.Labels);
for iTrial = 1:nTrials
    setLabelValue(lss, iTrial, 'Words', ls.Labels.Words{iTrial}.ROILimits, ls.Labels.Words{iTrial}.Value)
end