Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
67 changes: 67 additions & 0 deletions Analysis/script_loop_through_data_folders.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
% script to calculate scalograms for all of Jen's rats; store in files in
% the processed data folders

parent_directory = 'X:\Neuro-Leventhal\data\ChoiceTask';
summary_xls = 'ProbeSite_Mapping_MATLAB.xlsx';
summary_xls_dir = 'X:\Neuro-Leventhal\data\ChoiceTask\Probe Histology Summary';
summary_xls = fullfile(summary_xls_dir, summary_xls);

% change the line below to allow looping through multiple trial types,
% extract left vs right, etc.
trials_to_analyze = 'correct';
lfp_types = {'monopolar', 'bipolar'};
lfp_type = 'monopolar';
% trials_to_analyze = 'all';

t_window = [-2.5, 2.5];
event_list = {'cueOn', 'centerIn', 'tone', 'centerOut' 'sideIn', 'sideOut', 'foodClick', 'foodRetrieval'};

probe_type_sheet = 'probe_type';
probe_types = read_Jen_xls_summary(summary_xls, probe_type_sheet);
% NOTE - UPDATE FUNCTION read_Jen_xls_summary WHEN WE NEED OTHER
% INFORMATION OUT OF THAT SPREADSHEET

[rat_nums, ratIDs, ratIDs_goodhisto] = get_rat_list();

num_rats = length(ratIDs);

for i_rat = 1 : num_rats
ratID = ratIDs{i_rat};
rat_folder = fullfile(parent_directory, ratID);

if ~isfolder(rat_folder)
continue;
end

probe_type = probe_types{probe_types.RatID == ratID, 2};
processed_folder = find_data_folder(ratID, 'processed', parent_directory);
session_dirs = dir(fullfile(processed_folder, strcat(ratID, '*')));
num_sessions = length(session_dirs);

probe_lfp_type = sprintf('%s_%s', probe_type, lfp_type);

for i_session = 1 : num_sessions

session_name = session_dirs(i_session).name;
cur_dir = fullfile(session_dirs(i_session).folder, session_name);
cd(cur_dir)

for i_lfptype = 1 : length(lfp_types)

lfp_type = lfp_types{i_lfptype};

for i_event = 1 : length(event_list)
event_name = event_list{i_event};
sprintf('working on session %s, event %s', session_name, event_name)

scalo_folder = create_scalo_folder(session_name, event_name, parent_directory);

for i_channel = 1 : num_channels


end
end
end
end

end
80 changes: 80 additions & 0 deletions Analysis/script_rename_scalos_to_monopolar.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
% script to calculate scalograms for all of Jen's rats; store in files in
% the processed data folders

parent_directory = 'X:\Neuro-Leventhal\data\ChoiceTask';
summary_xls = 'ProbeSite_Mapping_MATLAB.xlsx';
summary_xls_dir = 'X:\Neuro-Leventhal\data\ChoiceTask\Probe Histology Summary';
summary_xls = fullfile(summary_xls_dir, summary_xls);

% change the line below to allow looping through multiple trial types,
% extract left vs right, etc.
trials_to_analyze = 'correct';
lfp_types = {'monopolar', 'bipolar'};
lfp_type = 'monopolar';
% trials_to_analyze = 'all';

t_window = [-2.5, 2.5];
event_list = {'cueOn', 'centerIn', 'tone', 'centerOut' 'sideIn', 'sideOut', 'foodClick', 'foodRetrieval'};

probe_type_sheet = 'probe_type';
probe_types = read_Jen_xls_summary(summary_xls, probe_type_sheet);
% NOTE - UPDATE FUNCTION read_Jen_xls_summary WHEN WE NEED OTHER
% INFORMATION OUT OF THAT SPREADSHEET

[rat_nums, ratIDs, ratIDs_goodhisto] = get_rat_list();

num_rats = length(ratIDs);

for i_rat = 1 : num_rats
ratID = ratIDs{i_rat};
rat_folder = fullfile(parent_directory, ratID);

if ~isfolder(rat_folder)
continue;
end

probe_type = probe_types{probe_types.ratID == ratID, 2};
processed_folder = find_data_folder(ratID, 'processed', parent_directory);
session_dirs = dir(fullfile(processed_folder, strcat(ratID, '*')));
num_sessions = length(session_dirs);

probe_lfp_type = sprintf('%s_%s', probe_type, lfp_type);

for i_session = 1 : num_sessions

session_name = session_dirs(i_session).name;
cur_dir = fullfile(session_dirs(i_session).folder, session_name);
cd(cur_dir)

for i_lfptype = 1 : length(lfp_types)

lfp_type = lfp_types{i_lfptype};

for i_event = 1 : length(event_list)
event_name = event_list{i_event};
sprintf('working on session %s, event %s', session_name, event_name)

scalo_folder = create_scalo_folder(session_name, event_name, parent_directory);
if ~exist(scalo_folder, 'dir')
continue
end

for i_channel = 1 : num_channels
[shank_num, site_num] = get_shank_and_site_num(probe_lfp_type, i_channel);

old_scalo_name = sprintf('%s_scalos_%s_shank%02d_site%02d.mat',session_name, event_name, shank_num, site_num);
old_scalo_name = fullfile(scalo_folder, old_scalo_name);

if exist(old_scalo_name, 'file')
new_scalo_name = sprintf('%s_scalos_%s_%s_shank%02d_site%02d.mat',session_name, lfp_type, event_name, shank_num, site_num);
new_scalo_name = fullfile(scalo_folder, new_scalo_name);

movefile(old_scalo_name, new_scalo_name)
end

end
end
end
end

end
7 changes: 7 additions & 0 deletions Analysis/sum_session_correct_trials.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
AllTrials = vertcat(trials.correct);
tone = vertcat(trials.tone);
C = [AllTrials tone];
indices = find(C(:,1)==0);
C(indices,:) = [];
tone2 = sum( C(:,2)==2 );
tone1 = sum( C(:,2)==1 );
20 changes: 20 additions & 0 deletions Analysis/trial_scalograms.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
function [event_related_scalos, f, coi] = trial_scalograms(event_triggered_lfps, fb)
%UNTITLED2 Summary of this function goes here
% INPUTS
% event_triggered_lfps - num_trials x samples_per_event array
% Detailed explanation goes here

num_trials = size(event_triggered_lfps, 1);
samples_per_event = size(event_triggered_lfps, 2);

f = centerFrequencies(fb);
num_freqs = length(f);

real_event_related_scalos = zeros(num_trials, num_freqs, samples_per_event);
event_related_scalos = complex(real_event_related_scalos, 0);

for i_trial = 1 : num_trials
[event_related_scalos(i_trial, :, :), ~, coi] = wt(fb, squeeze(event_triggered_lfps(i_trial, :)));
end

end
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
% script create_and_save_trials_struct_Intan

% loop through all rats with valid choice task data, create trials
% structure for each session, save in the processed data folder to save
% time

parent_directory = 'Z:\data\ChoiceTask\';

[rat_nums, ratIDs, ratIDs_goodhisto] = get_rat_list();

num_rats = length(ratIDs);

for i_rat = 1 : num_rats
ratID = ratIDs{i_rat};
rat_folder = fullfile(parent_directory, ratID);

if ~isfolder(rat_folder)
continue;
end

processed_folder = find_data_folder(ratID, 'processed', parent_directory);
session_dirs = dir(fullfile(processed_folder, strcat(ratID, '*')));
num_sessions = length(session_dirs);

rawdata_folder = find_data_folder(ratID, 'rawdata', parent_directory);

for i_session = 1 : num_sessions

session_name = session_dirs(i_session).name;
cur_processed_dir = fullfile(session_dirs(i_session).folder, session_name);
cur_rawdata_dir = fullfile(rawdata_folder, session_name);
cd(cur_processed_dir)

lfp_fname = strcat(session_name, '_lfp.mat');
if ~isfile(lfp_fname)
sprintf('%s not found, skipping', lfp_file)
continue
end

trials_name = sprintf('%s_trials.mat', session_name);
trials_name = fullfile(cur_processed_dir, trials_name);
if exist(trial_name, 'file')

continue
end

rawdata_ephys_folder = get_rawdata_ephys_folder(rawdata_folder,session_name);
nexData = extractEventsFromIntanSystem(rawdata_ephys_folder);

log_file = find_log_file(session_name, parent_directory);
logData = readLogData(log_file);

sprintf('loaded logData and nexData for %s', session_name)

trials = createTrialsStruct_simpleChoice_Intan( logData, nexData );



end

end
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
% script create_and_save_trials_struct_Intan

% loop through all rats with valid choice task data, create trials
% structure for each session, save in the processed data folder to save
% time

parent_directory = 'Z:\data\ChoiceTask\';

[rat_nums, ratIDs, ratIDs_goodhisto] = get_rat_list();

num_rats = length(ratIDs);

for i_rat = 1 : num_rats
ratID = ratIDs{i_rat};
rat_folder = fullfile(parent_directory, ratID);

if ~isfolder(rat_folder)
continue;
end

processed_folder = find_data_folder(ratID, 'processed', parent_directory);
session_dirs = dir(fullfile(processed_folder, strcat(ratID, '*')));
num_sessions = length(session_dirs);

rawdata_folder = find_data_folder(ratID, 'rawdata', parent_directory);

for i_session = 1 : num_sessions

session_name = session_dirs(i_session).name;
cur_processed_dir = fullfile(session_dirs(i_session).folder, session_name);
cur_rawdata_dir = fullfile(rawdata_folder, session_name);
cd(cur_processed_dir)

lfp_fname = strcat(session_name, '_lfp.mat');
if ~isfile(lfp_fname)
sprintf('%s not found, skipping', lfp_file)
continue
end

trials_name = sprintf('%s_trials.mat', session_name);
trials_name = fullfile(cur_processed_dir, trials_name);
if exist(trials_name, 'file')
% skip if already calculated
sprintf('trials structure already calculated for %s', session_name)
continue
end

rawdata_ephys_folder = get_rawdata_ephys_folder(rawdata_folder,session_name);
% check that the digitalIn file exists - was missing from some
% early sessions
digitalin_fname = fullfile(rawdata_ephys_folder, 'digitalin.dat');
if ~exist(digitalin_fname, 'file')
sprintf('no digital input file found for %s', session_name)
continue
end

nexData = extractEventsFromIntanSystem(rawdata_ephys_folder);
if isempty(nexData)
% something was wrong with the analog/digital input files from
% the intan system
sprintf('nexData could not be generated for %s', session_name)
continue
end

log_file = find_log_file(session_name, parent_directory);
logData = readLogData(log_file);

sprintf('loaded logData and nexData for %s', session_name)

try
trials = createTrialsStruct_simpleChoice_Intan( logData, nexData );
catch ME
if strcmp(ME.identifier, 'lognexmerge:lognexmismatch')
sprintf('mismatch between log and nex files for %s', session_name)
continue
end
end

save(trials_name, 'trials');

end

end
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@
digital_word = readIntanDigitalFile(dig_in_file);
toc
tic
if ~isfield(intan_info, 'board_adc_channels')
nexData = [];
return
end
ADC_signals = readIntanAnalogFile(analog_in_file,intan_info.board_adc_channels);
toc

Expand Down
Loading