[Mne_analysis] Empty room BTI-to-FIF error
Denis-Alexander Engemann
denis.engemann at gmail.com
Fri Sep 28 14:19:16 EDT 2018
External Email - Use Caution
Hi Josh,
take a look at this PR: https://github.com/mne-tools/mne-python/pull/5566
It fixes the reading of your files for me.
Best,
Denis
On Thu, Sep 27, 2018 at 7:28 PM Denis-Alexander Engemann <
denis.engemann at gmail.com> wrote:
> Ok that‘s what I predicted. Good to have it confirmed. For other BTI data
> that we have dealt with it was not an issue as those must have been
> recorded with some patient id or so as we do not see nans there. I guess we
> can just look for nans and replace them.
>
> Denis
> On Thu 27 Sep 2018 at 19:23, Bear, Joshua <JOSHUA.BEAR at ucdenver.edu>
> wrote:
>
>> Hi Eric and Alex,
>>
>> I heard back from Eugene Kronberg, our MEG physicist, who confirmed that
>> this transformation matrix will contain nans with any empty room recordings
>> (unless you chose to record with the head frame system in place despite the
>> absence of a head, I suppose). I’ve attached his response below.
>>
>> Regards,
>> Josh
>>
>>
>>
>>
>> Hi Josh,
>>
>> Well, the empty room is an empty room, there is no patient and there is
>> no head frame system of coordinates. Transformation matrix in the config
>> file is for rotation and translation between sensor frame and head frame
>> system of coordinates. That's why there are nan(s) in the transformation.
>>
>> The right thing would be not to use transformation matrix for the empty
>> room recordings. Otherwise, you could try to replace nan(s) with something
>> else.
>>
>> Good luck,
>> Eugene
>>
>>
>>
>>
>>
>>
>>
>> Joshua Bear, MD, MA | Assistant Professor, Pediatric Neurology and
>> Epilepsy
>> 13123 East 16th Avenue, Box B-155 | Aurora, CO 80045 | Phone:
>> 720-777-6138 | Fax: 720-777-7285
>>
>>
>>
>> On Sep 27, 2018, at 9:23 AM, Eric Larson <larson.eric.d at gmail.com> wrote:
>>
>> External Email - Use Caution
>>
>> If this is a standard output of the BTi system (for example if all your
>> empty-room recordis are thsi way) and we can figure out the correct way to
>> deal with it, then yes it shouldn't be too difficult to fix the reader to
>> deal with this case.
>>
>> Eric
>>
>>
>> On Thu, Sep 27, 2018 at 11:21 AM Bear, Joshua <JOSHUA.BEAR at ucdenver.edu>
>> wrote:
>>
>>> Hi Alex,
>>>
>>> Thank you for looking into this!
>>>
>>> I also don’t know why BTI does that but could ask our MEG physicist. I
>>> wonder if it is linked to the head shape information and, since this had no
>>> subject, it uses nans to show that.
>>>
>>> Would it be relatively trivial to hack the reader? My FieldTrip
>>> workaround is effective but a bit clunky and cumbersome, and it would be
>>> great to keep everything in python.
>>>
>>> Thanks,
>>> Josh
>>>
>>>
>>>
>>>
>>> Joshua Bear, MD, MA | Assistant Professor, Pediatric Neurology and
>>> Epilepsy
>>> 13123 East 16th Avenue, Box B-155 | Aurora, CO 80045 | Phone:
>>> 720-777-6138 | Fax: 720-777-7285
>>>
>>>
>>>
>>> On Sep 27, 2018, at 6:53 AM, Alexandre Gramfort <
>>> alexandre.gramfort at inria.fr> wrote:
>>>
>>> External Email - Use Caution
>>>
>>> hi Josh,
>>>
>>> we can replicate the problem with Denis. For some reason your config file
>>> has a transform matrix (dev_ctf_t) that contains NaN:
>>>
>>> bti_info['bti_transform'][0]
>>> array([[ 1. , 0. , 0. , nan],
>>> [-0. , 0.70710678 <07071%200678>, 0.70710678
>>> <07071%200678>, nan],
>>> [ 0. , -0.70710678 <07071%200678>, 0.70710678
>>> <07071%200678>, nan],
>>> [ 1. , 1. , 1. , 1. ]])
>>>
>>> this pops up when reading the bytes from your config file. You can
>>> also use the follow
>>> lines to debug:
>>>
>>> ------
>>> from mne.io.bti.read import read_char, read_uint32, read_transform,
>>> read_float
>>> from mne.io.bti.read import read_int16, read_str, read_int32
>>>
>>>
>>> with open('config', 'rb') as fid:
>>>
>>> cfg = dict()
>>> cfg['hdr'] = {'version': read_int16(fid),
>>> 'site_name': read_str(fid, 32),
>>> 'dap_hostname': read_str(fid, 16),
>>> 'sys_type': read_int16(fid),
>>> 'sys_options': read_int32(fid),
>>> 'supply_freq': read_int16(fid),
>>> 'total_chans': read_int16(fid),
>>> 'system_fixed_gain': read_float(fid),
>>> 'volts_per_bit': read_float(fid),
>>> 'total_sensors': read_int16(fid),
>>> 'total_user_blocks': read_int16(fid),
>>> 'next_der_chan_no': read_int16(fid)}
>>>
>>> fid.seek(2, 1)
>>> cfg['checksum'] = read_uint32(fid)
>>> cfg['reserved'] = read_char(fid, 32)
>>> cfg['transforms'] = [read_transform(fid) for t in
>>> range(cfg['hdr']['total_sensors'])]
>>> print(cfg['transforms'])
>>> ------
>>>
>>> I don't know enough about BTi system to have a clue of how to fix this
>>> besides hacking the reader to replace NaNs by zeros.
>>>
>>> Alex
>>> On Wed, Sep 26, 2018 at 9:31 PM Bear, Joshua <JOSHUA.BEAR at ucdenver.edu>
>>> wrote:
>>>
>>>
>>> Alex, thank you for the response. I’ve sent another email with files.
>>>
>>> Denis, yes, I just checked the empty room recordings for the other
>>> subjects in this study as well as a recording I obtained some months ago. I
>>> am able to open them in Brainstorm but get the same error across all files
>>> in MNE-python. I thought I had previously pulled the older empty room
>>> recording into a prior version of MNE-Python, but I can’t remember with
>>> certainty.
>>>
>>> Cheers,
>>> Josh
>>>
>>>
>>>
>>>
>>> Joshua Bear, MD, MA | Assistant Professor, Pediatric Neurology and
>>> Epilepsy
>>> 13123 East 16th Avenue, Box B-155 | Aurora, CO 80045 | Phone:
>>> 720-777-6138 | Fax: 720-777-7285
>>>
>>>
>>>
>>> On Sep 26, 2018, at 1:25 PM, Denis-Alexander Engemann <
>>> denis.engemann at gmail.com> wrote:
>>>
>>> External Email - Use Caution
>>>
>>>
>>> Keep me in the loop. I may be able to help. Can you btw. exclude that it
>>> is an issue for that particular file?
>>> On Wed 26 Sep 2018 at 21:02, Alexandre Gramfort <
>>> alexandre.gramfort at inria.fr> wrote:
>>>
>>>
>>> External Email - Use Caution
>>>
>>> hi Josh,
>>>
>>> can you share the empty room data with a script crashes?
>>>
>>> thanks
>>> Alex
>>>
>>>
>>> On Wed, Sep 26, 2018 at 7:57 PM Bear, Joshua <JOSHUA.BEAR at ucdenver.edu>
>>> wrote:
>>>
>>>
>>> Hello everyone,
>>>
>>> I’m working with some BTI data and would like to include empty room
>>> recordings done prior to the patient recordings for my noise covariance.
>>> When importing the data using mne.io.read_raw_bti() I have to set
>>> convert=False or I get an error. Then, when trying to save the data to the
>>> FIF format, I will get the same error, presumably because it is now trying
>>> to perform the conversion function that I had previously avoided.
>>>
>>> I do not have any problems with the actual subject recordings, only the
>>> empty room one.
>>>
>>> I’ve included the error message below. Has anyone seen this before
>>> and/or have suggestions on how to get my empty room data converted to FIF?
>>>
>>> Thank you for your help,
>>> Josh
>>>
>>>
>>>
>>>
>>> This is the error that appears to occur during BTI to FIF conversion:
>>>
>>> Reading 4D PDF file /mystudy/06%29%18 at 13:28/1/c,rfhp0.1Hz...
>>> Creating Neuromag info structure ...
>>> ... Setting channel info structure.
>>> ... putting coil transforms in Neuromag coordinates
>>> Traceback (most recent call last):
>>> File "<stdin>", line 1, in <module>
>>> File "<string>", line 2, in read_raw_bti
>>> File
>>> "/Users/joshbear/bin/anaconda3/envs/mne/lib/python3.6/site-packages/mne/utils.py",
>>> line 729, in verbose
>>> return function(*args, **kwargs)
>>> File
>>> "/Users/joshbear/bin/anaconda3/envs/mne/lib/python3.6/site-packages/mne/io/bti/bti.py",
>>> line 1398, in read_raw_bti
>>> eog_ch=eog_ch, preload=preload, verbose=verbose)
>>> File "<string>", line 2, in __init__
>>> File
>>> "/Users/joshbear/bin/anaconda3/envs/mne/lib/python3.6/site-packages/mne/utils.py",
>>> line 729, in verbose
>>> return function(*args, **kwargs)
>>> File
>>> "/Users/joshbear/bin/anaconda3/envs/mne/lib/python3.6/site-packages/mne/io/bti/bti.py",
>>> line 1031, in __init__
>>> sort_by_ch_name=sort_by_ch_name, eog_ch=eog_ch)
>>> File
>>> "/Users/joshbear/bin/anaconda3/envs/mne/lib/python3.6/site-packages/mne/io/bti/bti.py",
>>> line 1209, in _get_bti_info
>>> t = _convert_coil_trans(t, dev_ctf_t, bti_dev_t)
>>> File
>>> "/Users/joshbear/bin/anaconda3/envs/mne/lib/python3.6/site-packages/mne/io/bti/bti.py",
>>> line 250, in _convert_coil_trans
>>> t = combine_transforms(invert_transform(dev_ctf_t), bti_dev_t,
>>> File
>>> "/Users/joshbear/bin/anaconda3/envs/mne/lib/python3.6/site-packages/mne/transforms.py",
>>> line 576, in invert_transform
>>> return Transform(trans['to'], trans['from'],
>>> linalg.inv(trans['trans']))
>>> File
>>> "/Users/joshbear/bin/anaconda3/envs/mne/lib/python3.6/site-packages/scipy/linalg/basic.py",
>>> line 946, in inv
>>> a1 = _asarray_validated(a, check_finite=check_finite)
>>> File
>>> "/Users/joshbear/bin/anaconda3/envs/mne/lib/python3.6/site-packages/scipy/_lib/_util.py",
>>> line 238, in _asarray_validated
>>> a = toarray(a)
>>> File
>>> "/Users/joshbear/bin/anaconda3/envs/mne/lib/python3.6/site-packages/numpy/lib/function_base.py",
>>> line 1233, in asarray_chkfinite
>>> "array must not contain infs or NaNs")
>>> ValueError: array must not contain infs or NaNs
>>>
>>>
>>>
>>>
>>>
>>> Joshua Bear, MD, MA | Assistant Professor, Pediatric Neurology and
>>> Epilepsy
>>> 13123 East 16th Avenue, Box B-155 | Aurora, CO 80045 | Phone:
>>> 720-777-6138 | Fax: 720-777-7285
>>>
>>> External Email - Use Caution
>>>
>>> _______________________________________________
>>> Mne_analysis mailing list
>>> Mne_analysis at nmr.mgh.harvard.edu
>>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>>>
>>>
>>> _______________________________________________
>>> Mne_analysis mailing list
>>> Mne_analysis at nmr.mgh.harvard.edu
>>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>>>
>>>
>>> _______________________________________________
>>> Mne_analysis mailing list
>>> Mne_analysis at nmr.mgh.harvard.edu
>>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>>>
>>>
>>> External Email - Use Caution
>>>
>>> _______________________________________________
>>> Mne_analysis mailing list
>>> Mne_analysis at nmr.mgh.harvard.edu
>>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>>>
>>>
>>> _______________________________________________
>>> Mne_analysis mailing list
>>> Mne_analysis at nmr.mgh.harvard.edu
>>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>>>
>>>
>>> External Email - Use Caution
>>>
>>> _______________________________________________
>>> Mne_analysis mailing list
>>> Mne_analysis at nmr.mgh.harvard.edu
>>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>>
>> _______________________________________________
>> Mne_analysis mailing list
>> Mne_analysis at nmr.mgh.harvard.edu
>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>>
>>
>> External Email - Use Caution
>>
>> _______________________________________________
>> Mne_analysis mailing list
>> Mne_analysis at nmr.mgh.harvard.edu
>> https://mail.nmr.mgh.harvard.edu/mailman/listinfo/mne_analysis
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.nmr.mgh.harvard.edu/pipermail/mne_analysis/attachments/20180928/e6e91ef0/attachment-0001.html
More information about the Mne_analysis
mailing list