|
1 | 1 | function [latency_neuro, latency_bhv, latcorr, f, fneuro] = getTgtLatencyCorr(PSTH_f, t_r, onsets_cat, ...
|
2 |
| - catEvTimes, tWin_t, Thresh, param, dd ) |
| 2 | + catEvTimes, tWin_t, param, dd, validEvents ) |
3 | 3 | % [latency_neuro, latency_bhv, r, f, fneuro] = getTgtLatencyCorr(PSTH_f, t_r, onsets_cat, ...
|
4 | 4 | % catEvTimes, tWin_t, Thresh, param, dd)
|
5 | 5 | % computes neural and behavioural latencies with or without cue
|
6 | 6 |
|
7 |
| -%validEvents = intersect(find(~isnan(onset)), find(dd.cueOn==icue-1)); |
8 |
| -%< this condition only includes all trials irrespective of the trial outcome |
9 |
| -validEvents = find(~isnan(catEvTimes.tOnset) .* ~isnan(catEvTimes.fOnset)); %with or without cue |
| 7 | +corrOption = 'Spearman'; %'Pearson' |
10 | 8 |
|
11 | 9 | %% neural latency
|
12 | 10 | [latency_neuro, ~,~,fneuro] = getTgtNeuroLatency(PSTH_f, t_r, onsets_cat, ...
|
13 |
| - catEvTimes, tWin_t, Thresh, param, dd, validEvents); |
| 11 | + catEvTimes, tWin_t, param.threshParam, param, dd, validEvents); |
14 | 12 |
|
15 | 13 | %% behavioural latency
|
16 | 14 | option = 1;
|
|
26 | 24 | fail = choiceOutcome(validEvents) >= 2;
|
27 | 25 |
|
28 | 26 |
|
29 |
| -%% select trials with preferred direction (showTonsetResp) |
30 | 27 | theseEvents = validEvents;%(success);%better to use all conditions??
|
31 | 28 | onsetTimes = catEvTimes.tOnset;
|
32 | 29 | onsetTimes = onsetTimes(theseEvents);
|
33 | 30 | tgtDir = getTgtDir(dd.targetloc, param.cardinalDir);
|
34 | 31 | tgtDir = tgtDir(theseEvents);
|
| 32 | + |
| 33 | +%% select trials with preferred direction (showTonsetResp) |
35 | 34 | [prefDir, prefDirTrials] = getPrefDir(PSTH_f, t_r, onsetTimes, tgtDir, param);
|
36 |
| -tgt_in = zeros(numel(validEvents),1); |
37 |
| -tgt_in(prefDirTrials) = 1; |
| 35 | +tgt_pref = zeros(numel(validEvents),1); |
| 36 | +tgt_pref(prefDirTrials) = 1; |
38 | 37 |
|
| 38 | +%% select trials with most frequent direction |
| 39 | +[prevDir, prevDirTrials] = getPrevDir(tgtDir, param); |
| 40 | +tgt_prev = zeros(numel(validEvents),1); |
| 41 | +tgt_prev(prevDirTrials) = 1; |
39 | 42 |
|
40 | 43 | validLatency = ~isnan(latency_neuro);
|
41 | 44 |
|
42 | 45 | %correlation beteween behaviour and neuro using only successful trials
|
43 |
| -latcorr.r = corr(latency_bhv(logical(validLatency.*~isnan(latency_bhv))), latency_neuro(logical(validLatency.*~isnan(latency_bhv)))); |
44 |
| -latcorr.r_success = corr(latency_bhv(logical(success.*validLatency)), latency_neuro(logical(success.*validLatency))); |
45 |
| -latcorr.r_pref = corr(latency_bhv(logical(validLatency.*~isnan(latency_bhv).*tgt_in)), latency_neuro(logical(validLatency.*~isnan(latency_bhv).*tgt_in))); |
46 |
| -latcorr.r_success_pref = corr(latency_bhv(logical(success.*validLatency.*tgt_in)), latency_neuro(logical(success.*validLatency.*tgt_in))); |
| 46 | +try |
| 47 | + [latcorr.r, latcorr.p] = corr(latency_bhv(logical(validLatency.*~isnan(latency_bhv))), ... |
| 48 | + latency_neuro(logical(validLatency.*~isnan(latency_bhv))), 'type', corrOption); |
| 49 | +catch err |
| 50 | + latcorr.r = nan; |
| 51 | + latcorr.p = nan; |
| 52 | +end |
| 53 | +try |
| 54 | + [latcorr.r_success, latcorr.p_success] = corr(latency_bhv(logical(success.*validLatency)), ... |
| 55 | + latency_neuro(logical(success.*validLatency)), 'type', corrOption); |
| 56 | +catch err |
| 57 | + latcorr.r_success = nan; |
| 58 | + latcorr.p_success = nan; |
| 59 | +end |
| 60 | +try |
| 61 | + [latcorr.r_pref, latcorr.p_pref] = corr(latency_bhv(logical(validLatency.*~isnan(latency_bhv).*tgt_pref)), ... |
| 62 | + latency_neuro(logical(validLatency.*~isnan(latency_bhv).*tgt_pref)), 'type', corrOption); |
| 63 | +catch err |
| 64 | + latcorr.r_pref = nan; |
| 65 | + latcorr.p_pref = nan; |
| 66 | +end |
| 67 | +try |
| 68 | + [latcorr.r_success_pref, latcorr.p_success_pref] = corr(latency_bhv(logical(success.*validLatency.*tgt_pref)), ... |
| 69 | + latency_neuro(logical(success.*validLatency.*tgt_pref)), 'type', corrOption); |
| 70 | +catch err |
| 71 | + latcorr.r_success_pref = nan; |
| 72 | + latcorr.p_success_pref = nan; |
| 73 | +end |
| 74 | +try |
| 75 | + [latcorr.r_success_prev, latcorr.p_success_prev] = corr(latency_bhv(logical(success.*validLatency.*tgt_prev)), ... |
| 76 | + latency_neuro(logical(success.*validLatency.*tgt_prev)), 'type', corrOption); |
| 77 | +catch err |
| 78 | + latcorr.r_success_prev = nan; |
| 79 | + latcorr.p_success_prev = nan; |
| 80 | +end |
47 | 81 |
|
48 | 82 | if nargout > 3
|
49 | 83 | f = figure;
|
50 | 84 | plot(latency_bhv(logical(wCue.*success)), latency_neuro(logical(wCue.*success)),'ro','DisplayName','success w cue'); hold on;
|
51 | 85 | plot(latency_bhv(logical(woCue.*success)), latency_neuro(logical(woCue.*success)),'bo','DisplayName','succes wo cue'); hold on;
|
52 |
| - plot(latency_bhv(logical(wCue.*success.*tgt_in)), latency_neuro(logical(wCue.*success.*tgt_in)),'o','MarkerFaceColor','r','DisplayName','success w cue prefDir'); hold on; |
53 |
| - plot(latency_bhv(logical(woCue.*success.*tgt_in)), latency_neuro(logical(woCue.*success.*tgt_in)),'o','MarkerFaceColor','b','DisplayName','succes wo cue prefDir'); hold on; |
| 86 | + plot(latency_bhv(logical(wCue.*success.*tgt_pref)), latency_neuro(logical(wCue.*success.*tgt_pref)),'o','MarkerFaceColor','r','DisplayName','success w cue prefDir'); hold on; |
| 87 | + plot(latency_bhv(logical(woCue.*success.*tgt_pref)), latency_neuro(logical(woCue.*success.*tgt_pref)),'o','MarkerFaceColor','b','DisplayName','succes wo cue prefDir'); hold on; |
54 | 88 | plot(latency_bhv(logical(wCue.*fail)), latency_neuro(logical(wCue.*fail)),'rx','DisplayName','failure w cue'); hold on;
|
55 | 89 | plot(latency_bhv(logical(woCue.*fail)), latency_neuro(logical(woCue.*fail)),'bx','DisplayName','failure wo cue'); hold on;
|
56 | 90 | xlabel('behavioural latency');
|
57 | 91 | ylabel('neural latency');
|
58 | 92 | legend('location','eastoutside');
|
59 |
| - tname = sprintf('all dir: %.2f, success all dir: %.2f \n success pref dir: %.2f', latcorr.r, latcorr.r_success, latcorr.r_success_pref); |
| 93 | + tname = sprintf(['all dir: %.2f (p=%.2f), \n' ... |
| 94 | + 'success all dir: %.2f (p=%.2f) \n' ... |
| 95 | + 'success pref dir: %.2f (p=%.2f)\n' ... |
| 96 | + 'success prev dir: %.2f (p=%.2f)'], ... |
| 97 | + latcorr.r, latcorr.p, ... |
| 98 | + latcorr.r_success, latcorr.p_success, ... |
| 99 | + latcorr.r_success_pref, latcorr.p_success_pref,... |
| 100 | + latcorr.r_success_prev, latcorr.p_success_prev); |
60 | 101 | title(tname); %title(['r=' num2str(r) ', r(success)=' num2str(r_success)]);
|
61 | 102 | squareplot;
|
62 | 103 | axis padded; set(gca,'TickDir','out');
|
|
0 commit comments