Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
2f03a0f
Fix indentation
ehennestad Jun 7, 2024
411d1fc
Add functions for listing DAQ system component classes
ehennestad Jun 17, 2024
ef07d4e
Add dependencies as utility functions and use correct function calls
ehennestad Jun 17, 2024
07b15a4
Update DaqSystemConfiguration.m
ehennestad Jun 17, 2024
0de251b
Add DAQSystemConfigurator app and dependencies
ehennestad Jun 17, 2024
8c10bcf
Merge branch 'main' into ndi2beta-daq-system-config
ehennestad Jun 19, 2024
c8cbf49
Add code for NDI Dataset Wizard (work in progress)
ehennestad Jul 3, 2024
ca06056
Merge branch 'main' into ndi2beta-daq-system-config
ehennestad Jul 3, 2024
3da12b2
Fix: Bugs in dataset wizard / folder organization page
ehennestad Jul 3, 2024
99b43ae
Merge branch 'main' into ndi2beta-daq-system-config
ehennestad Jul 3, 2024
bc43732
Fix: Wrong file extension for mltbx downloads
ehennestad Sep 30, 2024
5696782
Merge branch 'main_v1.1.0' into ndi2beta-daq-system-config
ehennestad Feb 13, 2025
7bd9811
Remove ndi.globals dependency
ehennestad Feb 13, 2025
47a6a11
Add launcher for NDI DAQ System Configuration App
ehennestad Feb 13, 2025
844540f
Ensure global path constants are updated
ehennestad Apr 15, 2025
fbbef1b
Update WizardApp.mlapp
ehennestad Apr 15, 2025
d7c4f62
Update NDIDaqSystemConfig.m
ehennestad Apr 15, 2025
38ed2ed
Update NDIDaqSystemConfig.m
ehennestad Apr 15, 2025
978e522
Merge branch 'main' into ndi2beta-daq-system-config
ehennestad Apr 24, 2025
143d990
Update ndi-matlab-dependencies.json
ehennestad Apr 24, 2025
c6d5ce8
Update NDIDatasetWizard.m
ehennestad Apr 24, 2025
7893137
Create emblem_pulse.html
ehennestad Apr 24, 2025
a0b0d08
Update DatasetPage.m
ehennestad Apr 24, 2025
e39b045
Add/refactor metadata utility functions needed for a subject table
ehennestad Apr 24, 2025
dee8d99
Minor adjustment in folder organization components
ehennestad Apr 24, 2025
5eec6ee
Update DatasetViewer.mlapp
ehennestad Apr 24, 2025
5ce0f60
Minor gui appearance fixes
ehennestad Apr 24, 2025
a49cb1e
Add subject page to dataset wizard
ehennestad Apr 24, 2025
d47649d
Update DatasetWizardApp.m
ehennestad Apr 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion +ndi/+daq/+system/mfdaq.m
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,6 @@
channeltype, channel, ndi_daqsystem_mfdaq_obj.session());
end;
end;

end; % methods

methods (Static), % functions that don't need the object
Expand Down
5 changes: 5 additions & 0 deletions +ndi/+daq/templates/daq_reader.mtemplate
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
classdef {{ReaderClassName}} < {{ReaderSuperClass}}



end
4 changes: 4 additions & 0 deletions +ndi/+daq/templates/daq_reader_variables.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"ReaderClassName": "",
"ReaderSuperClass": ""
}
Binary file modified +ndi/+database/+app/+dataset_viewer/DatasetViewer.mlapp
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
function openMindsInstance = createInstance(dataStruct, openMindsType)

arguments
dataStruct (1,1) struct
openMindsType (1,1) string
end

try
conversionFunctionMap = getConcreteConversionMap(openMindsType);
catch
conversionFunctionMap = struct;
end

openMindsInstance = feval( openMindsType );
dataFields = fieldnames(dataStruct);

for i = 1:numel(dataFields)
[fieldName, propName] = deal( dataFields{i} );
propName(1) = lower(propName(1));

value = dataStruct.(fieldName);
if isempty(value); continue; end % Skip conversion for empty values

if isa(value, 'char'); value = string(value); end

if isfield( conversionFunctionMap, propName )

conversionFcn = conversionFunctionMap.(propName);

if iscell(value)
value = cellfun(@(s) conversionFcn(s), value);

elseif numel(value) > 1 % array conversion
value = arrayfun(@(s) conversionFcn(s), value);

else
value = conversionFcn(value);
end
else
% Insert value directly
end

try
openMindsInstance.(propName) = value;
catch ME
% warning(ME.message)
end
end
end
28 changes: 28 additions & 0 deletions +ndi/+database/+metadata_ds_core/+conversion/convertStrains.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
function [strainInstanceMap] = convertStrains(items)

import ndi.database.metadata_ds_core.conversion.internal.createInstance

strainInstanceMap = containers.Map();

% Convert items without background strains
for i = 1:numel(items)
thisItem = items(i);
thisItem = rmfield(thisItem, 'backgroundStrain');

thisInstance = createInstance(thisItem, 'openminds.core.Strain');

strainInstanceMap(thisItem.name) = thisInstance;
end

% "Recursively" link together background strains
for i = 1:numel(items)
thisItem = items(i);
thisInstance = strainInstanceMap(thisItem.name);

for j = 1:numel(thisItem.backgroundStrain)
bgStrainName = thisItem.backgroundStrain(j);
bgInstance = strainInstanceMap(bgStrainName);
thisInstance.backgroundStrain(j) = bgInstance;
end
end
end
10 changes: 10 additions & 0 deletions +ndi/+database/+metadata_ds_core/+conversion/getAllStrains.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
function strainInstanceMap = getAllStrains()

import ndi.database.metadata_app.fun.loadUserInstanceCatalog
import ndi.database.metadata_ds_core.conversion.convertStrains

strainCatalog = loadUserInstanceCatalog('Strain');

% Todo: Adapt conversion to also convert custom species.
strainInstanceMap = convertStrains(strainCatalog.getAll() );
end
28 changes: 28 additions & 0 deletions +ndi/+dataset/+gui/+enum/FolderLevelType.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
classdef FolderLevelType

enumeration
Undefined('Undefined')
Subject('Subject')
Session('Session')
Trial('Trial')
Date('Date')
Epoch('Epoch')
end

properties
Name
DefaultFolderPrefix
end

methods
function obj = FolderLevelType(name)
obj.Name = name;
switch obj.Name
case 'Subject'
obj.DefaultFolderPrefix = 'subject';
case 'Session'
obj.DefaultFolderPrefix = 'session';
end
end
end
end
11 changes: 11 additions & 0 deletions +ndi/+dataset/+gui/+event/UserActionEventData.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
classdef UserActionEventData < event.EventData
properties
UserAction
end

methods
function obj = UserActionEventData(userAction)
obj.UserAction = userAction;
end
end
end
Binary file not shown.
Empty file.
Loading