<div dir="ltr">Thanks for the clear explanation Andreas.<div><br></div><div>Unfortunately, pop_chanedit only gets me into deeper trouble.</div><div><br></div><div>







<p><i>%split into active and ref locs</i></p>
<p><i>chanlocs_active=allchanlocs(1:60);</i></p>
<p><i>ref=allchanlocs(61);</i></p><p><br></p><p><i>%read in 63 channel EDF and remove eyes and emg</i></p><p><i>EEG=pop_biosig(fullfile(subjectFolder,dataFile),<span>&#39;importevent&#39;</span>,<span>&#39;off&#39;</span>);</i></p><p><i>EEG=pop_select(EEG,<span>&#39;nochannel&#39;</span>,[1 2 63]);  #60 chans now</i></p><p><i> </i></p><p>











</p><p><i>EEG.chanlocs=chanlocs_active;</i></p><p><br></p><p>I crash when I now call:</p><div>







<p><i>EEG=pop_chanedit(EEG,<span>&#39;append&#39;</span>,{60,ref.labels,ref.theta,ref.radius,ref.X,ref.Y,ref.Z,ref.sph_theta,ref.sph_phi,ref.sph_radius});</i></p><p><i><br></i></p><p><i>Error using pop_chanedit (line 601)</i></p><p><i>pop_chanedit: not enough arguments to change all field values</i></p><p><i><br></i></p><p>the reason seems to be that the ref structure (with 10 fields) ends up as a 10 element cell in pop_chanedit, where the allfields variable has 13 elements, including &#39;datachan&#39;, &#39;ref&#39;, and &#39;urchan&#39;. But I never set these other fields for the other channels.</p><p><br></p><p>I also tried:</p><p class=""><i>EEG=pop_chanedit(EEG,<span class="">&#39;append&#39;</span>,60,<span class="">&#39;changefield&#39;</span>,{61,<span class="">&#39;labels&#39;</span>, ref.labels,<span class="">&#39;theta&#39;</span>, ref.theta, <span class="">&#39;radius&#39;</span>,ref.radius,<span class="">...</span></i></p><p>








</p><p class=""><i>    <span class="">&#39;X&#39;</span>,ref.X,<span class="">&#39;Y&#39;</span>,ref.Y,<span class="">&#39;Z&#39;</span>,ref.Z,<span class="">&#39;sph_theta&#39;</span>,ref.sph_theta,<span class="">&#39;sph_phi&#39;</span>,ref.sph_phi,<span class="">&#39;sph_radius&#39;</span>,ref.sph_radius});</i></p><p><br></p>
<p>but: <i>Wrong channel structure size, changes ignored</i></p><p><i><br></i></p><p>Finally, I also tried:</p><p><i>EEG.chaninfo.nodatchans=ref;</i></p><p>







</p><p class=""><i>EEG=pop_reref(EEG,[59 60],<span class="">&#39;keepref&#39;</span>,<span class="">&#39;on&#39;</span>,<span class="">&#39;refloc&#39;</span>,ref);</i></p><p class=""><i><br></i></p><p class="">which actually results in a 61 channel EEG struct, but I get a warning:</p><p class=""><i>Warning: the size of the channel location structure does not match with</i></p><p class=""><i>         number of channels. Channel information have been removed.</i></p><p class=""><i><br></i></p><p class="">Now, EEG.chanlocs is empty so I don&#39;t want to assume everything went according to plan and I can just re-attach my 61-channel location struct. If someone knows what chaninfo.nodatachans is supposed to look like that might help.</p><p class=""><br></p><p class="">(I might submit a bug report later on, but I&#39;m hoping for a faster solution.)</p><p class=""><br></p><p class="">Thanks</p><p><i><br></i></p>








<p class=""><br></p><p><i><br></i></p></div><div> </div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 8, 2015 at 6:37 AM, Andreas Widmann <span dir="ltr">&lt;<a href="mailto:widmann@uni-leipzig.de" target="_blank">widmann@uni-leipzig.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Roy,<br>
<br>
this is presumably a bug. I suggest reporting to the bugtracker. From GUI perspective it might be considered as unintended use of the function but it should actually work.<br>
<br>
In the GUI you can only select a channel for the &#39;refloc&#39;-option if it was appended before in the channel editor and appears in the EEG.chaninfo.nodatchans structure. pop_reref tries to remove the channel from this structure after re-referencing (as it is a data channel now). In your case there is no such structure and pop_reref crashes.<br>
<br>
Temporary workaround is to append the channel first from the command line before re-referencing:<br>
EEG = pop_chanedit(EEG,  &#39;append‘, 60, &#39;changefield‘, {61 &#39;labels‘ &#39;YourLabel&#39;});<br>
<br>
Hope this helps,<br>
Andreas<br>
<div class="HOEnZb"><div class="h5"><br>
&gt; Am 07.05.2015 um 20:32 schrieb Roy Cox &lt;<a href="mailto:roycox.roycox@gmail.com">roycox.roycox@gmail.com</a>&gt;:<br>
&gt;<br>
&gt; hi all,<br>
&gt;<br>
&gt; (apologies for possibly sending this twice)<br>
&gt;<br>
&gt; saw this discussion and I&#39;m trying to do something similar from the command line, but no luck.<br>
&gt;<br>
&gt; I import 63 channel data that I know to be referenced to the forehead. then I remove 3 EOG and EMG channels (60 remaining).<br>
&gt;<br>
&gt; I&#39;ve created a 61 channel electrode location file, that I read in and separate into the first 60 &quot;active&quot; locations and the 61st ref/forehead location. I assign the 60 channel locations to my EEG, and then want to rereference to average mastoids, while keeping both mastoid channels and reconstructing the forehead channel. I&#39;ve tried a couple of things, calling both pop_reref and reref. I&#39;m sure there&#39;s a simple solution but can&#39;t get it to work. the code to my latest attempt:<br>
&gt;<br>
&gt; %read in electrode locations<br>
&gt; allchanlocs=readlocs(electrodeFile,&#39;filetype&#39;,&#39;custom&#39;,&#39;format&#39;,{&#39;labels&#39; &#39;X&#39; &#39;Y&#39; &#39;Z&#39;});<br>
&gt;<br>
&gt;<br>
&gt; %split into active and ref locs<br>
&gt;<br>
&gt; chanlocs_active=allchanlocs(1:60);<br>
&gt;<br>
&gt; chanlocs_ref=allchanlocs(61);<br>
&gt;<br>
&gt;<br>
&gt; %read in 63 channel EDF and remove eyes and emg<br>
&gt;<br>
&gt; EEG=pop_biosig(fullfile(subjectFolder,dataFile),&#39;importevent&#39;,&#39;off&#39;);<br>
&gt;<br>
&gt; EEG=pop_select(EEG,&#39;nochannel&#39;,[1 2 63]);<br>
&gt;<br>
&gt; EEG.chanlocs=chanlocs_active;<br>
&gt;<br>
&gt; EEG=eeg_checkset(EEG)  ##STILL OK<br>
&gt;<br>
&gt;<br>
&gt; %rereference to average mastoids<br>
&gt;<br>
&gt; EEG=pop_reref(EEG,[59 60],&#39;keepref&#39;,&#39;on&#39;,&#39;refloc&#39;,chanlocs_ref);<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; this now crashes like this:<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Attempt to reference field of non-structure array.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Error in pop_reref (line 215)<br>
&gt;<br>
&gt;          allinds = [allinds strmatch( g.refloc(iElec).labels, { tmpchaninfo.nodatchans.labels }) ];<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; thanks for any input,<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Roy<br>
&gt;<br>
&gt;<br>
&gt; On Thu, May 7, 2015 at 2:30 PM, Roy Cox &lt;<a href="mailto:r.cox@uva.nl">r.cox@uva.nl</a>&gt; wrote:<br>
&gt; hi all,<br>
&gt;<br>
&gt; saw this discussion and I&#39;m trying to do something similar from the command line, but no luck.<br>
&gt;<br>
&gt; I import 63 channel data that I know to be referenced to the forehead. then I remove 3 EOG and EMG channels (60 remaining).<br>
&gt;<br>
&gt; I&#39;ve created a 61 channel electrode location file, that I read in and separate into the first 60 &quot;active&quot; locations and the 61st ref/forehead location. I assign the 60 channel locations to my EEG, and then want to rereference to average mastoids, while keeping both mastoid channels and reconstructing the forehead channel. I&#39;ve tried a couple of things, calling both pop_reref and reref. I&#39;m sure there&#39;s a simple solution but can&#39;t get it to work. the code to my latest attempt:<br>
&gt;<br>
&gt; %read in electrode locations<br>
&gt; allchanlocs=readlocs(electrodeFile,&#39;filetype&#39;,&#39;custom&#39;,&#39;format&#39;,{&#39;labels&#39; &#39;X&#39; &#39;Y&#39; &#39;Z&#39;});<br>
&gt;<br>
&gt;<br>
&gt; %split into active and ref locs<br>
&gt;<br>
&gt; chanlocs_active=allchanlocs(1:60);<br>
&gt;<br>
&gt; chanlocs_ref=allchanlocs(61);<br>
&gt;<br>
&gt;<br>
&gt; %read in 63 channel EDF and remove eyes and emg<br>
&gt;<br>
&gt; EEG=pop_biosig(fullfile(subjectFolder,dataFile),&#39;importevent&#39;,&#39;off&#39;);<br>
&gt;<br>
&gt; EEG=pop_select(EEG,&#39;nochannel&#39;,[1 2 63]);<br>
&gt;<br>
&gt; EEG.chanlocs=chanlocs_active;<br>
&gt;<br>
&gt; EEG=eeg_checkset(EEG)  ##STILL OK<br>
&gt;<br>
&gt;<br>
&gt; %rereference to average mastoids<br>
&gt;<br>
&gt; EEG=pop_reref(EEG,[59 60],&#39;keepref&#39;,&#39;on&#39;,&#39;refloc&#39;,chanlocs_ref);<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; this now crashes like this:<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Attempt to reference field of non-structure array.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; Error in pop_reref (line 215)<br>
&gt;<br>
&gt;          allinds = [allinds strmatch( g.refloc(iElec).labels, { tmpchaninfo.nodatchans.labels }) ];<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Apr 28, 2015 at 5:36 AM, Dezhong Yao &lt;<a href="mailto:dyao@uestc.edu.cn">dyao@uestc.edu.cn</a>&gt; wrote:<br>
&gt;  Hi, all reference-issue followers;<br>
&gt;   Physically,  &quot;add current reference channel back to data&quot; actually adds a channel with zero potential to current configuration,<br>
&gt; then you may re-reference to any other configuration, such average, linked ears reference.<br>
&gt; The best re-reference is  the  &quot;zero reference&quot; realized  by &quot;REST&quot; (reference electrode standardization technique) at <a href="http://www.neuro.uestc.edu.cn/rest" target="_blank">www.neuro.uestc.edu.cn/rest</a> , where free-software is available,<br>
&gt; and it may interpolate bad channel the same time.<br>
&gt;     Best wishes<br>
&gt; ------------------<br>
&gt; Dezhong Yao  PhD<br>
&gt; Cheung Kong Professor of Neuroengineering, Neuroimaging<br>
&gt; E-mail: <a href="mailto:dyao@uestc.edu.cn">dyao@uestc.edu.cn</a><br>
&gt; Fax: 86-28-83208238; Tel: 86-28-83201018<br>
&gt; Director, Key Laboratory for NeuroInformation,  Ministry of Education, China<br>
&gt;               International Joint Research Center for NeuroInformation, Ministry of Science and Technology, China<br>
&gt; Dean,      School of Life Science and Technology, University of Electronic Science and Technology of China, Sichuan,Chengdu 610054, China<br>
&gt; Director,  Center for Information in BioMedicine, University of Electronic Science and Technology of China, China<br>
&gt; <a href="http://www.neuro.uestc.edu.cn/bci/member/yao/yao.html" target="_blank">http://www.neuro.uestc.edu.cn/bci/member/yao/yao.html</a><br>
&gt; 2015-04-28<br>
&gt; -------------------------------------------------------------<br>
&gt; 发件人:Brittany Alperin<br>
&gt; 发送日期:2015-04-28 14:04:07<br>
&gt; 收件人:Andreas Widmann<br>
&gt; 抄送:EEGLAB List<br>
&gt; 主题:Re: [Eeglablist] online reference<br>
&gt;<br>
&gt; Hi Andreas<br>
&gt;<br>
&gt; You&#39;re right. I forgot that compute average reference is automatically<br>
&gt; checked, so I was looking at the data with the average reference instead of<br>
&gt; a Cz reference.<br>
&gt;<br>
&gt; I think I have this all cleared up now. Thanks for the help!<br>
&gt;<br>
&gt; Brittany<br>
&gt;<br>
&gt; On Sat, Apr 25, 2015 at 9:17 AM, Andreas Widmann &lt;<a href="mailto:widmann@uni-leipzig.de">widmann@uni-leipzig.de</a>&gt;<br>
&gt; wrote:<br>
&gt;<br>
&gt; &gt; &gt; To clarify, I have 31 channels + ref (Cz) + ground. So 33 in total.<br>
&gt; &gt; Good!<br>
&gt; &gt;<br>
&gt; &gt; &gt; I added Cz to my channel locations and selected &quot;add current reference<br>
&gt; &gt; channel back to data&quot; without re-referencing to anything else.<br>
&gt; &gt; Sorry, could you please clarify how you use the &quot;add current reference<br>
&gt; &gt; channel back to data“-option *without* actually re-referencing? To my<br>
&gt; &gt; understanding this should be impossible. Either the „Compute average<br>
&gt; &gt; reference“ or the „Re-reference data to channel(s)“-option is always<br>
&gt; &gt; selected in the pop_reref GUI. In case „Compute average reference“ was<br>
&gt; &gt; selected, the data were re-referenced to the mean of all channels.<br>
&gt; &gt;<br>
&gt; &gt; &gt; I can now see Cz, but it isn&#39;t a flat line. Am I incorrect in thinking<br>
&gt; &gt; that it should be totally flat?<br>
&gt; &gt; Without re-referencing the implicit reference should indeed be a flat<br>
&gt; &gt; line/zero.<br>
&gt; &gt;<br>
&gt; &gt; Hope this helps!<br>
&gt; &gt; Andreas<br>
&gt; &gt;<br>
&gt; &gt; &gt; Thanks,<br>
&gt; &gt; &gt; Brittany<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; On Thu, Apr 23, 2015 at 5:29 AM, Andreas Widmann &lt;<a href="mailto:widmann@uni-leipzig.de">widmann@uni-leipzig.de</a>&gt;<br>
&gt; &gt; wrote:<br>
&gt; &gt; &gt; Hi Brittany,<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; this sounds like two different problems:<br>
&gt; &gt; &gt; If you record from 32 channels + Ref + Ground the imported file should<br>
&gt; &gt; have 32 channels (but not your Cz Ref channel). Please reconfirm that your<br>
&gt; &gt; Pycorder setup really records from 32 data channels (34 electrodes). In<br>
&gt; &gt; case there is really a channel missing, please, submit a bug report to the<br>
&gt; &gt; bugtracker including a short sample file.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; If you want to keep the implicit online reference (Cz) as a new channel<br>
&gt; &gt; after re-referencing the data to another channel you have to use the „Add<br>
&gt; &gt; current reference channel back to the data“-option (GUI; &#39;refloc‘ on<br>
&gt; &gt; command line). To use this option you have to first append a (Cz-) channel<br>
&gt; &gt; in the GUI channel editor (appearing in EEG.chaninfo.nodatchans) which you<br>
&gt; &gt; can subsequently select during re-referencing. The „new“ Cz-channel is the<br>
&gt; &gt; inverse of the channel the data were re-referenced to (now missing in the<br>
&gt; &gt; data or being flat if &quot;Retain old reference channels in data“ was selected).<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Please note that the „Add current reference channel back to the<br>
&gt; &gt; data“-option should not be used for systems where common mode rejection is<br>
&gt; &gt; applied offline (e.g. Biosemi).<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Hope this helps,<br>
&gt; &gt; &gt; Andreas<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Am 22.04.2015 um 21:59 schrieb Brittany Alperin &lt;<a href="mailto:balperin07@gmail.com">balperin07@gmail.com</a><br>
&gt; &gt; &gt;:<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Hello<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I&#39;m using a 32 channel brain vision system and am recording with<br>
&gt; &gt; PyCorder. When I import my data using the brain vision recorder plugin,<br>
&gt; &gt; only 31 channels are present. I&#39;m recording with Cz as an online reference<br>
&gt; &gt; and Cz is the channel that is missing. I can re-reference, but Cz is still<br>
&gt; &gt; absent.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Has anyone had an issue with recording with an online reference and<br>
&gt; &gt; not having that data import into EEGlab? Or does anyone have a different<br>
&gt; &gt; way to import brain vision data?<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Thanks,<br>
&gt; &gt; &gt; &gt; Brittany<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; _______________________________________________<br>
&gt; &gt; &gt; &gt; Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" target="_blank">http://sccn.ucsd.edu/eeglab/eeglabmail.html</a><br>
&gt; &gt; &gt; &gt; To unsubscribe, send an empty email to<br>
&gt; &gt; <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu">eeglablist-unsubscribe@sccn.ucsd.edu</a><br>
&gt; &gt; &gt; &gt; For digest mode, send an email with the subject &quot;set digest mime&quot; to<br>
&gt; &gt; <a href="mailto:eeglablist-request@sccn.ucsd.edu">eeglablist-request@sccn.ucsd.edu</a><br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" target="_blank">http://sccn.ucsd.edu/eeglab/eeglabmail.html</a><br>
&gt; To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu">eeglablist-unsubscribe@sccn.ucsd.edu</a><br>
&gt; For digest mode, send an email with the subject &quot;set digest mime&quot; to <a href="mailto:eeglablist-request@sccn.ucsd.edu">eeglablist-request@sccn.ucsd.edu</a><br>
&gt; _______________________________________________<br>
&gt; Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" target="_blank">http://sccn.ucsd.edu/eeglab/eeglabmail.html</a><br>
&gt; To unsubscribe, send an empty email to <a href="mailto:eeglablist-unsubscribe@sccn.ucsd.edu">eeglablist-unsubscribe@sccn.ucsd.edu</a><br>
&gt; For digest mode, send an email with the subject &quot;set digest mime&quot; to <a href="mailto:eeglablist-request@sccn.ucsd.edu">eeglablist-request@sccn.ucsd.edu</a><br>
&gt;<br>
&gt;<br>
<br>
</div></div></blockquote></div><br></div>