This is an automated email from the git hooks/post-receive script. yoh pushed a commit to annotated tag v0.1 in repository python-mne.
commit 83c9b0806e0408879b873b900eaad51c8b74b53e Author: Alexandre Gramfort <[email protected]> Date: Mon Aug 15 22:06:03 2011 -0400 FIX : fix writing of meas info for maxfilter --- mne/fiff/meas_info.py | 64 ++++++++++++++++++++++++++++++++++++--------------- mne/fiff/raw.py | 33 ++++---------------------- 2 files changed, 50 insertions(+), 47 deletions(-) diff --git a/mne/fiff/meas_info.py b/mne/fiff/meas_info.py index 0d1c51b..a85de95 100644 --- a/mne/fiff/meas_info.py +++ b/mne/fiff/meas_info.py @@ -15,9 +15,9 @@ from .proj import read_proj, write_proj from .ctf import read_ctf_comp, write_ctf_comp from .channels import _read_bad_channels -from .write import start_block, end_block, \ +from .write import start_block, end_block, write_string, write_dig_point, \ write_float, write_int, write_coord_trans, write_ch_info, \ - write_dig_point, write_name_list + write_name_list def read_meas_info(fid, tree): @@ -233,7 +233,21 @@ def read_meas_info(fid, tree): def write_meas_info(fid, info, data_type=None): - """Write measurement info in fif file.""" + """Write measurement info in fif file. + + Parameters + ---------- + fid: file + Open file descriptor + info: dict + The measurement info structure + data_type: int + The data_type is case it is necessary. Should be 4 for raw data. + + Note + ---- + Tags are written in a particular order for compatibility with maxfilter + """ # Measurement info start_block(fid, FIFF.FIFFB_MEAS_INFO) @@ -258,15 +272,18 @@ def write_meas_info(fid, info, data_type=None): have_isotrak = True fid2.close() - # General - write_float(fid, FIFF.FIFF_SFREQ, info['sfreq']) - write_float(fid, FIFF.FIFF_HIGHPASS, info['highpass']) - write_float(fid, FIFF.FIFF_LOWPASS, info['lowpass']) - write_int(fid, FIFF.FIFF_NCHAN, info['nchan']) - if data_type is not None: - write_int(fid, FIFF.FIFF_DATA_PACK, data_type) - if info['meas_date'] is not None: - write_int(fid, FIFF.FIFF_MEAS_DATE, info['meas_date']) + # + # megacq parameters + # + if info['acq_pars'] is not None or info['acq_stim'] is not None: + start_block(fid, FIFF.FIFFB_DACQ_PARS) + if info['acq_pars'] is not None: + write_string(fid, FIFF.FIFF_DACQ_PARS, info['acq_pars']) + + if info['acq_stim'] is not None: + write_string(fid, FIFF.FIFF_DACQ_STIM, info['acq_stim']) + + end_block(fid, FIFF.FIFFB_DACQ_PARS) # Coordinate transformations if the HPI result block was not there if not have_hpi_result: @@ -276,12 +293,6 @@ def write_meas_info(fid, info, data_type=None): if info['ctf_head_t'] is not None: write_coord_trans(fid, info['ctf_head_t']) - # Channel information - for k in range(info['nchan']): - # Scan numbers may have been messed up - info['chs'][k]['scanno'] = k + 1 - write_ch_info(fid, info['chs'][k]) - # Polhemus data if info['dig'] is not None and not have_isotrak: start_block(fid, FIFF.FIFFB_ISOTRAK) @@ -302,4 +313,21 @@ def write_meas_info(fid, info, data_type=None): write_name_list(fid, FIFF.FIFF_MNE_CH_NAME_LIST, info['bads']) end_block(fid, FIFF.FIFFB_MNE_BAD_CHANNELS) + # General + write_float(fid, FIFF.FIFF_SFREQ, info['sfreq']) + write_float(fid, FIFF.FIFF_HIGHPASS, info['highpass']) + write_float(fid, FIFF.FIFF_LOWPASS, info['lowpass']) + write_int(fid, FIFF.FIFF_NCHAN, info['nchan']) + if data_type is not None: + write_int(fid, FIFF.FIFF_DATA_PACK, data_type) + if info['meas_date'] is not None: + write_int(fid, FIFF.FIFF_MEAS_DATE, info['meas_date']) + + # Channel information + for k, c in enumerate(info['chs']): + # Scan numbers may have been messed up + c['scanno'] = k + 1 + c['range'] = 1.0 + write_ch_info(fid, c) + end_block(fid, FIFF.FIFFB_MEAS_INFO) diff --git a/mne/fiff/raw.py b/mne/fiff/raw.py index 410ab5a..0e0ac0b 100644 --- a/mne/fiff/raw.py +++ b/mne/fiff/raw.py @@ -464,18 +464,15 @@ def read_raw_segment_times(raw, start, stop, sel=None): ############################################################################### # Writing -from .write import start_file, start_block, write_id, write_string, \ - write_ch_info, end_block, write_coord_trans, \ - write_float, write_int, write_dig_point, \ - write_name_list, end_file -from .ctf import write_ctf_comp -from .proj import write_proj -from .tree import copy_tree +from .write import start_file, end_file, start_block, end_block, \ + write_float, write_int, write_id def start_writing_raw(name, info, sel=None): """Start write raw data in file + Data will be written in float + Parameters ---------- name : string @@ -496,16 +493,6 @@ def start_writing_raw(name, info, sel=None): calibration factors """ # - # We will always write floats - # - # if sel is None: - # chs = info['chs'] - # nchan = len(chs) - # else: - # chs = [info['chs'][k] for k in sel] - # nchan = len(sel) - # data_type = 4 - # # Create the file and save the essentials # fid = start_file(name) @@ -545,18 +532,6 @@ def start_writing_raw(name, info, sel=None): write_meas_info(fid, info, data_type=4) - # # - # # megacq parameters - # # - # if info['acq_pars'] is not None or info['acq_stim'] is not None: - # start_block(fid, FIFF.FIFFB_DACQ_PARS) - # if info['acq_pars'] is not None: - # write_string(fid, FIFF.FIFF_DACQ_PARS, info['acq_pars']) - # - # if info['acq_stim'] is not None: - # write_string(fid, FIFF.FIFF_DACQ_STIM, info['acq_stim']) - # - # end_block(fid, FIFF.FIFFB_DACQ_PARS) # # Start the raw data # -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/python-mne.git _______________________________________________ debian-med-commit mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit
