<div dir="ltr">Andreas,<div><br></div><div>thanks for your continuing support.</div><div><br></div><div>your first suggestion does not work:</div><div><br></div><div><span style="font-size:12.8000001907349px">EEG = pop_chanedit(EEG,  'append‘, 60, 'changefield‘, {61 'labels‘ 'ref.abel'});</span></div><div>EEG=pop_reref(EEG,[59 60],<span>'keepref'</span>,<span>'on'</span>,<span>'refloc'</span>,ref);</div><div><br></div><div><div><i>Reference to non-existent field 'ref'.</i></div><div><i><br></i></div><div><i>Error in getfield (line 36)</i></div><div><i>    f = s.(deblank(strField)); % deblank field name</i></div><div><i><br></i></div><div><i>Error in reref (line 155)</i></div><div><i>                    g.elocs(end) = setfield(g.elocs(end), fieldloc{ind}, getfield(g.refloc(iLocs), fieldloc{ind}));</i></div><div><i><br></i></div><div><i>Error in pop_reref (line 189)</i></div><div><i>[EEG.data EEG.chanlocs refchan ] = reref(EEG.data, ref, optionscall{:});</i></div></div><div><i><br></i></div><div>line 155 of reref is expecting a "ref" field that doesn't exist.</div><div><br></div><div>so I went for your alternative:</div><div><br></div><div>EEG.data(EEG.nbchan + 1, :) = zeros(1, EEG.pnts); % Append implicit reference<br>EEG.nbchan = EEG.nbchan + 1;<br>EEG.data = EEG.data - repmat(mean(EEG.data(59:60, :), 1), [EEG.nbchan 1]); % Re-reference</div><div>EEG.chanlocs=allchanlocs; %61 channel location struct;</div><div><p class="">but if I then call:</p><p class="">EEG=eeg_checkset(EEG);</p><p class="">I still get:</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="">looks like EEG.chaninfo and EEG.chanlocs must match on certain aspects to get everything going.</p><p class="">almost there? :)</p><p class="">Roy</p></div><div><i><br></i></div><div><i><br></i></div><div><i><br></i></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, May 9, 2015 at 2:36 AM, Andreas Widmann <span dir="ltr"><<a href="mailto:widmann@uni-leipzig.de" target="_blank">widmann@uni-leipzig.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span>> (I might submit a bug report later on, but I'm hoping for a faster solution.)<br>
</span>Ok, fastest solution is to manually re-reference on the command line:<br>
<br>
EEG.data(EEG.nbchan + 1, :) = zeros(1, EEG.pnts); % Append implicit reference<br>
EEG.nbchan = EEG.nbchan + 1;<br>
EEG.data = EEG.data - repmat(mean(EEG.data(59:60, :), 1), [EEG.nbchan 1]); % Re-reference<br>
<br>
And adjust the EEG.chanlocs structure.<br>
Please file a bug report anyway as also others might tap into that problem.<br>
<span>Andreas<br>
<br>
> Am 08.05.2015 um 19:23 schrieb Roy Cox <<a href="mailto:roycox.roycox@gmail.com" target="_blank">roycox.roycox@gmail.com</a>>:<br>
><br>
</span><div><div>> Thanks for the clear explanation Andreas.<br>
><br>
> Unfortunately, pop_chanedit only gets me into deeper trouble.<br>
><br>
> %split into active and ref locs<br>
><br>
> chanlocs_active=allchanlocs(1:60);<br>
><br>
> ref=allchanlocs(61);<br>
><br>
><br>
><br>
> %read in 63 channel EDF and remove eyes and emg<br>
><br>
> EEG=pop_biosig(fullfile(subjectFolder,dataFile),'importevent','off');<br>
><br>
> EEG=pop_select(EEG,'nochannel',[1 2 63]);  #60 chans now<br>
><br>
><br>
><br>
><br>
> EEG.chanlocs=chanlocs_active;<br>
><br>
><br>
><br>
> I crash when I now call:<br>
><br>
> EEG=pop_chanedit(EEG,'append',{60,ref.labels,ref.theta,ref.radius,ref.X,ref.Y,ref.Z,ref.sph_theta,ref.sph_phi,ref.sph_radius});<br>
><br>
><br>
><br>
> Error using pop_chanedit (line 601)<br>
><br>
> pop_chanedit: not enough arguments to change all field values<br>
><br>
><br>
><br>
> 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 'datachan', 'ref', and 'urchan'. But I never set these other fields for the other channels.<br>
><br>
><br>
><br>
> I also tried:<br>
><br>
> EEG=pop_chanedit(EEG,'append',60,'changefield',{61,'labels', ref.labels,'theta', ref.theta, 'radius',ref.radius,...<br>
><br>
><br>
>     'X',ref.X,'Y',ref.Y,'Z',ref.Z,'sph_theta',ref.sph_theta,'sph_phi',ref.sph_phi,'sph_radius',ref.sph_radius});<br>
><br>
><br>
><br>
> but: Wrong channel structure size, changes ignored<br>
><br>
><br>
><br>
> Finally, I also tried:<br>
><br>
> EEG.chaninfo.nodatchans=ref;<br>
><br>
><br>
> EEG=pop_reref(EEG,[59 60],'keepref','on','refloc',ref);<br>
><br>
><br>
><br>
> which actually results in a 61 channel EEG struct, but I get a warning:<br>
><br>
> Warning: the size of the channel location structure does not match with<br>
><br>
>          number of channels. Channel information have been removed.<br>
><br>
><br>
><br>
> Now, EEG.chanlocs is empty so I don'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.<br>
><br>
><br>
><br>
> (I might submit a bug report later on, but I'm hoping for a faster solution.)<br>
><br>
><br>
><br>
> Thanks<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
> On Fri, May 8, 2015 at 6:37 AM, Andreas Widmann <<a href="mailto:widmann@uni-leipzig.de" target="_blank">widmann@uni-leipzig.de</a>> wrote:<br>
> 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 'refloc'-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,  'append‘, 60, 'changefield‘, {61 'labels‘ 'YourLabel'});<br>
><br>
> Hope this helps,<br>
> Andreas<br>
><br>
> > Am 07.05.2015 um 20:32 schrieb Roy Cox <<a href="mailto:roycox.roycox@gmail.com" target="_blank">roycox.roycox@gmail.com</a>>:<br>
> ><br>
> > hi all,<br>
> ><br>
> > (apologies for possibly sending this twice)<br>
> ><br>
> > saw this discussion and I'm trying to do something similar from the command line, but no luck.<br>
> ><br>
> > 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>
> ><br>
> > I've created a 61 channel electrode location file, that I read in and separate into the first 60 "active" 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've tried a couple of things, calling both pop_reref and reref. I'm sure there's a simple solution but can't get it to work. the code to my latest attempt:<br>
> ><br>
> > %read in electrode locations<br>
> > allchanlocs=readlocs(electrodeFile,'filetype','custom','format',{'labels' 'X' 'Y' 'Z'});<br>
> ><br>
> ><br>
> > %split into active and ref locs<br>
> ><br>
> > chanlocs_active=allchanlocs(1:60);<br>
> ><br>
> > chanlocs_ref=allchanlocs(61);<br>
> ><br>
> ><br>
> > %read in 63 channel EDF and remove eyes and emg<br>
> ><br>
> > EEG=pop_biosig(fullfile(subjectFolder,dataFile),'importevent','off');<br>
> ><br>
> > EEG=pop_select(EEG,'nochannel',[1 2 63]);<br>
> ><br>
> > EEG.chanlocs=chanlocs_active;<br>
> ><br>
> > EEG=eeg_checkset(EEG)  ##STILL OK<br>
> ><br>
> ><br>
> > %rereference to average mastoids<br>
> ><br>
> > EEG=pop_reref(EEG,[59 60],'keepref','on','refloc',chanlocs_ref);<br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > this now crashes like this:<br>
> ><br>
> ><br>
> ><br>
> > Attempt to reference field of non-structure array.<br>
> ><br>
> ><br>
> ><br>
> > Error in pop_reref (line 215)<br>
> ><br>
> >          allinds = [allinds strmatch( g.refloc(iElec).labels, { tmpchaninfo.nodatchans.labels }) ];<br>
> ><br>
> ><br>
> ><br>
> > thanks for any input,<br>
> ><br>
> ><br>
> ><br>
> > Roy<br>
> ><br>
> ><br>
> > On Thu, May 7, 2015 at 2:30 PM, Roy Cox <<a href="mailto:r.cox@uva.nl" target="_blank">r.cox@uva.nl</a>> wrote:<br>
> > hi all,<br>
> ><br>
> > saw this discussion and I'm trying to do something similar from the command line, but no luck.<br>
> ><br>
> > 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>
> ><br>
> > I've created a 61 channel electrode location file, that I read in and separate into the first 60 "active" 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've tried a couple of things, calling both pop_reref and reref. I'm sure there's a simple solution but can't get it to work. the code to my latest attempt:<br>
> ><br>
> > %read in electrode locations<br>
> > allchanlocs=readlocs(electrodeFile,'filetype','custom','format',{'labels' 'X' 'Y' 'Z'});<br>
> ><br>
> ><br>
> > %split into active and ref locs<br>
> ><br>
> > chanlocs_active=allchanlocs(1:60);<br>
> ><br>
> > chanlocs_ref=allchanlocs(61);<br>
> ><br>
> ><br>
> > %read in 63 channel EDF and remove eyes and emg<br>
> ><br>
> > EEG=pop_biosig(fullfile(subjectFolder,dataFile),'importevent','off');<br>
> ><br>
> > EEG=pop_select(EEG,'nochannel',[1 2 63]);<br>
> ><br>
> > EEG.chanlocs=chanlocs_active;<br>
> ><br>
> > EEG=eeg_checkset(EEG)  ##STILL OK<br>
> ><br>
> ><br>
> > %rereference to average mastoids<br>
> ><br>
> > EEG=pop_reref(EEG,[59 60],'keepref','on','refloc',chanlocs_ref);<br>
> ><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > this now crashes like this:<br>
> ><br>
> ><br>
> ><br>
> > Attempt to reference field of non-structure array.<br>
> ><br>
> ><br>
> ><br>
> > Error in pop_reref (line 215)<br>
> ><br>
> >          allinds = [allinds strmatch( g.refloc(iElec).labels, { tmpchaninfo.nodatchans.labels }) ];<br>
> ><br>
> ><br>
> > On Tue, Apr 28, 2015 at 5:36 AM, Dezhong Yao <<a href="mailto:dyao@uestc.edu.cn" target="_blank">dyao@uestc.edu.cn</a>> wrote:<br>
> >  Hi, all reference-issue followers;<br>
> >   Physically,  "add current reference channel back to data" actually adds a channel with zero potential to current configuration,<br>
> > then you may re-reference to any other configuration, such average, linked ears reference.<br>
> > The best re-reference is  the  "zero reference" realized  by "REST" (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>
> > and it may interpolate bad channel the same time.<br>
> >     Best wishes<br>
> > ------------------<br>
> > Dezhong Yao  PhD<br>
> > Cheung Kong Professor of Neuroengineering, Neuroimaging<br>
> > E-mail: <a href="mailto:dyao@uestc.edu.cn" target="_blank">dyao@uestc.edu.cn</a><br>
> > Fax: 86-28-83208238; Tel: 86-28-83201018<br>
> > Director, Key Laboratory for NeuroInformation,  Ministry of Education, China<br>
> >               International Joint Research Center for NeuroInformation, Ministry of Science and Technology, China<br>
> > Dean,      School of Life Science and Technology, University of Electronic Science and Technology of China, Sichuan,Chengdu 610054, China<br>
> > Director,  Center for Information in BioMedicine, University of Electronic Science and Technology of China, China<br>
> > <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>
> > 2015-04-28<br>
> > -------------------------------------------------------------<br>
> > 发件人:Brittany Alperin<br>
> > 发送日期:2015-04-28 14:04:07<br>
> > 收件人:Andreas Widmann<br>
> > 抄送:EEGLAB List<br>
> > 主题:Re: [Eeglablist] online reference<br>
> ><br>
> > Hi Andreas<br>
> ><br>
> > You're right. I forgot that compute average reference is automatically<br>
> > checked, so I was looking at the data with the average reference instead of<br>
> > a Cz reference.<br>
> ><br>
> > I think I have this all cleared up now. Thanks for the help!<br>
> ><br>
> > Brittany<br>
> ><br>
> > On Sat, Apr 25, 2015 at 9:17 AM, Andreas Widmann <<a href="mailto:widmann@uni-leipzig.de" target="_blank">widmann@uni-leipzig.de</a>><br>
> > wrote:<br>
> ><br>
> > > > To clarify, I have 31 channels + ref (Cz) + ground. So 33 in total.<br>
> > > Good!<br>
> > ><br>
> > > > I added Cz to my channel locations and selected "add current reference<br>
> > > channel back to data" without re-referencing to anything else.<br>
> > > Sorry, could you please clarify how you use the "add current reference<br>
> > > channel back to data“-option *without* actually re-referencing? To my<br>
> > > understanding this should be impossible. Either the „Compute average<br>
> > > reference“ or the „Re-reference data to channel(s)“-option is always<br>
> > > selected in the pop_reref GUI. In case „Compute average reference“ was<br>
> > > selected, the data were re-referenced to the mean of all channels.<br>
> > ><br>
> > > > I can now see Cz, but it isn't a flat line. Am I incorrect in thinking<br>
> > > that it should be totally flat?<br>
> > > Without re-referencing the implicit reference should indeed be a flat<br>
> > > line/zero.<br>
> > ><br>
> > > Hope this helps!<br>
> > > Andreas<br>
> > ><br>
> > > > Thanks,<br>
> > > > Brittany<br>
> > > ><br>
> > > > On Thu, Apr 23, 2015 at 5:29 AM, Andreas Widmann <<a href="mailto:widmann@uni-leipzig.de" target="_blank">widmann@uni-leipzig.de</a>><br>
> > > wrote:<br>
> > > > Hi Brittany,<br>
> > > ><br>
> > > > this sounds like two different problems:<br>
> > > > If you record from 32 channels + Ref + Ground the imported file should<br>
> > > have 32 channels (but not your Cz Ref channel). Please reconfirm that your<br>
> > > Pycorder setup really records from 32 data channels (34 electrodes). In<br>
> > > case there is really a channel missing, please, submit a bug report to the<br>
> > > bugtracker including a short sample file.<br>
> > > ><br>
> > > > If you want to keep the implicit online reference (Cz) as a new channel<br>
> > > after re-referencing the data to another channel you have to use the „Add<br>
> > > current reference channel back to the data“-option (GUI; 'refloc‘ on<br>
> > > command line). To use this option you have to first append a (Cz-) channel<br>
> > > in the GUI channel editor (appearing in EEG.chaninfo.nodatchans) which you<br>
> > > can subsequently select during re-referencing. The „new“ Cz-channel is the<br>
> > > inverse of the channel the data were re-referenced to (now missing in the<br>
> > > data or being flat if "Retain old reference channels in data“ was selected).<br>
> > > ><br>
> > > > Please note that the „Add current reference channel back to the<br>
> > > data“-option should not be used for systems where common mode rejection is<br>
> > > applied offline (e.g. Biosemi).<br>
> > > ><br>
> > > > Hope this helps,<br>
> > > > Andreas<br>
> > > ><br>
> > > > > Am 22.04.2015 um 21:59 schrieb Brittany Alperin <<a href="mailto:balperin07@gmail.com" target="_blank">balperin07@gmail.com</a><br>
> > > >:<br>
> > > > ><br>
> > > > > Hello<br>
> > > > ><br>
> > > > > I'm using a 32 channel brain vision system and am recording with<br>
> > > PyCorder. When I import my data using the brain vision recorder plugin,<br>
> > > only 31 channels are present. I'm recording with Cz as an online reference<br>
> > > and Cz is the channel that is missing. I can re-reference, but Cz is still<br>
> > > absent.<br>
> > > > ><br>
> > > > > Has anyone had an issue with recording with an online reference and<br>
> > > not having that data import into EEGlab? Or does anyone have a different<br>
> > > way to import brain vision data?<br>
> > > > ><br>
> > > > > Thanks,<br>
> > > > > Brittany<br>
> > > > ><br>
> > > > ><br>
> > > > > _______________________________________________<br>
> > > > > Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" target="_blank">http://sccn.ucsd.edu/eeglab/eeglabmail.html</a><br>
> > > > > To unsubscribe, send an empty email to<br>
> > > <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<br>
> > > <a href="mailto:eeglablist-request@sccn.ucsd.edu" target="_blank">eeglablist-request@sccn.ucsd.edu</a><br>
> > > ><br>
> > > ><br>
> > ><br>
> > ><br>
> ><br>
> > _______________________________________________<br>
> > Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" 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><br>
> > _______________________________________________<br>
> > Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" 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><br>
> ><br>
> ><br>
><br>
><br>
> _______________________________________________<br>
> Eeglablist page: <a href="http://sccn.ucsd.edu/eeglab/eeglabmail.html" 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><br>
<br>
</div></div></blockquote></div><br></div></div></div></div>