This is an automated email from the git hooks/post-receive script. yoh pushed a commit to tag 0.4 in repository python-mne.
commit 7d8f88ca38f5ac745ece20e3251df4e9b1f883dc Author: Martin Luessi <[email protected]> Date: Thu May 10 13:47:48 2012 -0400 Added mne_maxfilter.py, proj argument in proj_ecg script, setup.py --- bin/mne_compute_proj_ecg.py | 8 +++ bin/mne_compute_proj_eog.py | 8 +-- bin/mne_maxfilter.py | 143 +++++++++++++++++++++++++++++++++++++++++ mne/preprocessing/maxfilter.py | 6 +- setup.py | 6 +- 5 files changed, 163 insertions(+), 8 deletions(-) diff --git a/bin/mne_compute_proj_ecg.py b/bin/mne_compute_proj_ecg.py index 350b2d6..eb62cbd 100755 --- a/bin/mne_compute_proj_ecg.py +++ b/bin/mne_compute_proj_ecg.py @@ -48,6 +48,9 @@ if __name__ == '__main__': parser.add_option("-a", "--average", dest="average", action="store_true", help="Compute SSP after averaging", default=False) + parser.add_option("--proj", dest="proj", + help="Use SSP projections from a fif file.", + default=None) parser.add_option("--filtersize", dest="filter_length", help="Number of taps to use for filtering", default=2048) @@ -109,6 +112,7 @@ if __name__ == '__main__': no_proj = options.no_proj bad_fname = options.bad_fname event_id = options.event_id + proj_fname = options.proj if bad_fname is not None: bads = [w.rstrip().split()[0] for w in open(bad_fname).readlines()] @@ -137,6 +141,10 @@ if __name__ == '__main__': raw.close() + if proj_fname is not None: + print 'Including SSP projections from : %s' % proj_fname + projs = mne.read_proj(proj_fname) + projs + if isinstance(preload, basestring) and os.path.exists(preload): os.remove(preload) diff --git a/bin/mne_compute_proj_eog.py b/bin/mne_compute_proj_eog.py index 9fd2cfa..504a40f 100755 --- a/bin/mne_compute_proj_eog.py +++ b/bin/mne_compute_proj_eog.py @@ -136,10 +136,6 @@ if __name__ == '__main__': raw = mne.fiff.Raw(raw_in, preload=preload) - if proj_fname is not None: - print 'Including SSP projections from : %s' % proj_fname - raw.info['projs'] += mne.read_proj(proj_fname) - projs, events = mne.preprocessing.compute_proj_eog(raw, tmin, tmax, n_grad, n_mag, n_eeg, l_freq, h_freq, average, filter_length, n_jobs, reject, bads, @@ -147,6 +143,10 @@ if __name__ == '__main__': raw.close() + if proj_fname is not None: + print 'Including SSP projections from : %s' % proj_fname + projs = mne.read_proj(proj_fname) + projs + if isinstance(preload, basestring) and os.path.exists(preload): os.remove(preload) diff --git a/bin/mne_maxfilter.py b/bin/mne_maxfilter.py new file mode 100755 index 0000000..606dd70 --- /dev/null +++ b/bin/mne_maxfilter.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python +""" Apply MaxFilter + +Example usage: + +$mne_maxfilter.py -i sample_audvis_raw.fif --st + +This will apply MaxFilter with the MaxSt extension. The origin used +by MaxFilter is computed by mne-python by fitting a sphere to the +headshape points. +""" + +# Authors : Martin Luessi <[email protected]> + +import sys +import os +import mne + + +if __name__ == '__main__': + + from optparse import OptionParser + + parser = OptionParser() + parser.add_option("-i", "--in", dest="in_fname", + help="Input raw FIF file", metavar="FILE") + parser.add_option("-o", dest="out_fname", + help="Output FIF file (if not set, suffix '_sss' will be used)", + metavar="FILE", default=None) + parser.add_option("--origin", dest="origin", + help="Head origin in mm, or a filename to read the origin from. " + "If not set it will be estimated from headshape points", + default=None) + parser.add_option("--origin-out", dest="origin_out", + help="Filename to use for computed origin", default=None) + parser.add_option("--frame", dest="frame", type="string", + help="Coordinate frame for head center ('device' or 'head')", + default="device") + parser.add_option("--bad", dest="bad", type="string", + help="List of static bad channels", + default=None) + parser.add_option("--autobad", dest="autobad", type="string", + help="Set automated bad channel detection ('on', 'off', 'n')", + default="off") + parser.add_option("--skip", dest="skip", + help="Skips raw data sequences, time intervals pairs in sec, e.g.: 0 30 120 150", + default=None) + parser.add_option("--force", dest="force", action="store_true", + help="Ignore program warnings", + default=False) + parser.add_option("--st", dest="st", action="store_true", + help="Apply the time-domain MaxST extension", + default=False) + parser.add_option("--buflen", dest="st_buflen", type="float", + help="MaxSt buffer length in sec", + default=16.0) + parser.add_option("--corr", dest="st_corr", type="float", + help="MaxSt subspace correlation", + default=0.96) + parser.add_option("--trans", dest="mv_trans", + help="Transforms the data into the coil definitions of in_fname, or into the default frame", + default=None) + parser.add_option("--movecomp", dest="mv_comp", + help="Estimates and compensates head movements in continuous raw data", + default=False) + parser.add_option("--headpos", dest="mv_headpos", action="store_true", + help="Estimates and stores head position parameters, but does not compensate movements", + default=False) + parser.add_option("--hp", dest="mv_hp", type="string", + help="Stores head position data in an ascii file", + default=None) + parser.add_option("--hpistep", dest="mv_hpistep", type="float", + help="Sets head position update interval in ms", + default=None) + parser.add_option("--hpisubt", dest="mv_hpisubt", type="string", + help="Subtracts hpi signals: sine amplitudes, amp + baseline, or switch off", + default=None) + parser.add_option("--nohpicons", dest="mv_hpicons", action="store_false", + help="Do not check initial consistency isotrak vs hpifit", + default=True) + parser.add_option("--linefreq", dest="linefreq", type="float", + help="Sets the basic line interference frequency (50 or 60 Hz)", + default=None) + parser.add_option("--nooverwrite", dest="overwrite", action="store_false", + help="Do not overwrite output file if it already exists", + default=True) + parser.add_option("--args", dest="mx_args", type="string", + help="Additional command line arguments to pass to MaxFilter", + default="") + + options, args = parser.parse_args() + + in_fname = options.in_fname + + if in_fname is None: + parser.print_help() + sys.exit(-1) + + out_fname = options.out_fname + origin = options.origin + origin_out = options.origin_out + frame = options.frame + bad = options.bad + autobad = options.autobad + skip = options.skip + force = options.force + st = options.st + st_buflen = options.st_buflen + st_corr = options.st_corr + mv_trans = options.mv_trans + mv_comp = options.mv_comp + mv_headpos = options.mv_headpos + mv_hp = options.mv_hp + mv_hpistep = options.mv_hpistep + mv_hpisubt = options.mv_hpisubt + mv_hpicons = options.mv_hpicons + linefreq = options.linefreq + overwrite = options.overwrite + mx_args = options.mx_args + + if in_fname.endswith('_raw.fif') or in_fname.endswith('-raw.fif'): + prefix = in_fname[:-8] + else: + prefix = in_fname[:-4] + + if out_fname is None: + if st: + out_fname = prefix + '_tsss.fif' + else: + out_fname = prefix + '_sss.fif' + + if origin is not None and os.path.exists(origin): + origin = open(origin, 'r').readlines()[0].strip() + + origin = mne.preprocessing.apply_maxfilter(in_fname, out_fname, origin, frame, + bad, autobad, skip, force, st, st_buflen, st_corr, mv_trans, + mv_comp, mv_headpos, mv_hp, mv_hpistep, mv_hpisubt, mv_hpicons, + linefreq, mx_args, overwrite) + + if origin_out is not None: + fid = open(origin_out, 'w') + fid.write(origin + '\n') + fid.close() diff --git a/mne/preprocessing/maxfilter.py b/mne/preprocessing/maxfilter.py index 5c41233..e9bb121 100644 --- a/mne/preprocessing/maxfilter.py +++ b/mne/preprocessing/maxfilter.py @@ -171,8 +171,8 @@ def apply_maxfilter(in_fname, out_fname, origin=None, frame='device', Returns ------- - origin: ndarray - Head origin in selected coordinate frame (mm) + origin: string + Head origin in selected coordinate frame """ # check for possible maxfilter bugs @@ -266,3 +266,5 @@ def apply_maxfilter(in_fname, out_fname, origin=None, frame='device', if st != 0: raise RuntimeError('MaxFilter returned non-zero exit status %d' % st) print '[done]' + + return origin diff --git a/setup.py b/setup.py index b6bf6e4..d22bf16 100755 --- a/setup.py +++ b/setup.py @@ -58,6 +58,8 @@ if __name__ == "__main__": 'mne.artifacts', 'mne.artifacts.tests', 'mne.minimum_norm', 'mne.minimum_norm.tests', 'mne.layouts', - 'mne.time_frequency', 'mne.time_frequency.tests'], + 'mne.time_frequency', 'mne.time_frequency.tests', + 'mne.preprocessing', 'mne.preprocessing.tests'], scripts=['bin/mne_clean_eog_ecg.py', 'bin/mne_flash_bem_model.py', - 'bin/mne_surf2bem.py', 'bin/mne_compute_proj_ecg.py']) + 'bin/mne_surf2bem.py', 'bin/mne_compute_proj_ecg.py', + 'bin/mne_compute_proj_eog.py', 'bin/mne_maxfilter.py']) -- 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
