<div dir="ltr"><div dir="ltr"><div dir="ltr">Dear Thomas,<div><ol><li>If you know how many channels are rejected, using that number to determine the rank is probably the safest (as my code you pasted takes the number from the result from clean_rawdata() log)<br></li><li>Average referencing WITHOUT the initial reference (which is just flat line at 0) will reduce the data rank by one. However, this way of average referencing is NOT the gold standard. In fact, when you perform average referencing, adding the original reference channel back is a correct solution. <a href="https://sccn.ucsd.edu/wiki/Makoto's_preprocessing_pipeline#Re-reference_the_data_to_average_.2806.2F11.2F2018_updated.29">https://sccn.ucsd.edu/wiki/Makoto's_preprocessing_pipeline#Re-reference_the_data_to_average_.2806.2F11.2F2018_updated.29</a></li><li>'Is this approach correct?' I would not say this is THE correct approach. Particularly, the reference issue is a longstanding problem in EEG research, and I know there is a good alternative (REST by Yao et al.)<br></li></ol><div>Makoto</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jan 16, 2019 at 5:30 PM Thomas mas <<a href="mailto:thomasmas@gmail.com">thomasmas@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Dear all,<div><br></div><div>I would like to avoid the issues associated with data rank when running AMICA.</div><div>I know that interpolating bad channels and average re-referencing are common operations that could make the data rank deficient. I also know that the Matlab 'rank' function is not always reliable. </div><div>I am asking whether the following approach is correct.</div><div><br></div><div>After interpolating bad channels and re-referencing to the average, I estimate data rank by using the following snippet of code:</div><div><br></div><div><div>% Estimating data rank</div><div>dataRank = EEG.nbchan;</div><div>if strcmp(EEG.ref,'averef')</div><div>    dataRank = dataRank - 1;</div><div>end</div><div>if isfield(EEG.etc,'clean_channel_mask') % using ASR to remove bad channels</div><div>    dataRank = dataRank - length(find(~EEG.etc.clean_channel_mask));</div><div>end</div><div>dataRank = min([rank(double(EEG.data')) dataRank]);</div></div><div><br></div><div>Next, I enter dataRank in the field named '# PCA Dims' of the pop_runamica() window. In this way, I get exactly dataRank independent components, keeping all the channels (remember that this step occurs after channel interpolation).</div><div><br></div><div>Is this approach correct?</div><div>Thank you in advance.</div><div><br></div><div>All the best,</div><div>Thomas</div></div></div>
_______________________________________________<br>
Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" rel="noreferrer" target="_blank">http://sccn.ucsd.edu/eeglab/eeglabmail.html</a><br>
To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu" target="_blank">eeglablist-unsubscribe@sccn.ucsd.edu</a><br>
For digest mode, send an email with the subject "set digest mime" to <a href="mailto:eeglablist-request@sccn.ucsd.edu" target="_blank">eeglablist-request@sccn.ucsd.edu</a></blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">Makoto Miyakoshi<br>Swartz Center for Computational Neuroscience<br>Institute for Neural Computation, University of California San Diego<br></div></div></div></div>