[FieldTrip] No mtmconvol on data with partial nans

Schoffelen, J.M. (Jan Mathijs) jan.schoffelen at donders.ru.nl
Wed May 25 15:48:18 CEST 2016


Hi Stephen, 

This is how you could ‘glue’ together the fragments of your trials:

freq.powspctrm(~isfinite(freq.powspctrm)) = 0; % converting the nans to 0 allows for summation

nrpt = numel(unique(freq.trialinfo(:,1))); % assume that the first column of trialinfo is the counter of the original trials

siz  = size(freq.powspctrm);
newpowspctrm = zeros([nrpt siz(2:end)]);

for k = 1:nrpt
  for m = find(freq.trialinfo(:,1)==k)’
    newpowspctrm(k,:,:,:) = newpowspctrm(k,:,:,:)+freq.powspctrm(m,:,:,:);
  end
end
newpowspctrm(newpowspctrm==0) = nan;

% now you can create your new freq structure with the additional metadata (possibly corrected for the new number of ‘rpt’s.

Best,
JM





> On 25 May 2016, at 15:26, Stephen Whitmarsh <stephen.whitmarsh at gmail.com> wrote:
> 
> Hi FieldTrippers,
> 
> I hope someone can help me with the following.
> 
> My problem is that I like to maintain my original rpt/chan/time/freq size after artefact rejection based on the time series data, i.e. to have the same dimensions of the TFR as if I did not reject data. This is for reasons of bookkeeping between different types of channels that are processed differently throughout my analysis.
> 
> What works well is to detect artifacts in the data and replace those intervals with nans using ft_rejectartifact, with cfg.reject = 'nan'. So far this is perfect for the approach I had in mind.
> 
> However, ft_freqanalysis (method = 'mtmconvol') outputs whole trials as nans whenever a (small) period has nans. What I would need - and in fact expect - is that only those time/frequency windows that have (one or more) nan values will output nan, while the rest should merrily go round giving power values. After all, the data is there.
> 
> It is unclear to me whether this is expected behaviour or not. I might be making a mistake but some simple tests replicated this behaviour. 
> 
> Is there a solution that still allows me to end up with a rpt/chan/time/freq representation of the same size as when i would not have rejected artifacts?
> 
> The only other FieldTrip-like option I can think of is to use ft_rejectartifact with method = 'partial', do the freqanalysis on trial parts, and somehow glue the separate trial parts together again afterwards. But I really don't want to go in that direction.
> 
> In the end I'm afraid I don't understand the core of ft_specest_mtmconvol enough to see where I could hack it. I hope some of you might be able to help.
> 
> Best wishes,
> Stephen
> 
> 
> _______________________________________________
> fieldtrip mailing list
> fieldtrip at donders.ru.nl
> http://mailman.science.ru.nl/mailman/listinfo/fieldtrip





More information about the fieldtrip mailing list