[med-svn] [python-mne] 01/02: Imported Upstream version 0.7.2
Yaroslav Halchenko
debian at onerussian.com
Tue Jan 14 01:08:18 UTC 2014
This is an automated email from the git hooks/post-receive script.
yoh pushed a commit to branch master
in repository python-mne.
commit 90594284f3fb247695d2935f2b3f5c936444b7c4
Author: Yaroslav Halchenko <debian at onerussian.com>
Date: Mon Jan 13 19:43:57 2014 -0500
Imported Upstream version 0.7.2
---
doc/Makefile | 13 +++++-
doc/source/_templates/layout.html | 9 ++--
doc/source/_templates/sidebar.html | 5 +++
doc/source/conf.py | 7 +++-
doc/sphinxext/gen_rst.py | 24 ++++++-----
doc/upload_html.sh | 4 +-
mne/fiff/brainvision/brainvision.py | 29 +++++++++----
mne/fiff/tag.py | 9 ++--
mne/forward/forward.py | 4 +-
mne/gui/_file_traits.py | 2 +-
mne/gui/tests/test_coreg_gui.py | 81 ++++++++++++++++++------------------
mne/tests/test_epochs.py | 2 +-
mne/time_frequency/tests/test_csd.py | 16 +++----
mne/utils.py | 12 ++++--
14 files changed, 130 insertions(+), 87 deletions(-)
diff --git a/doc/Makefile b/doc/Makefile
index 96a8dbc..0911f13 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -15,7 +15,8 @@ ALLSPHINXOPTS = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
help:
@echo "Please use \`make <target>' where <target> is one of"
- @echo " html to make standalone HTML files"
+ @echo " html to make standalone HTML files (stable version)"
+ @echo " dev_html to make standalone HTML files (dev version)"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@@ -39,11 +40,21 @@ html:
@echo
@echo "Build finished. The HTML pages are in build/html."
+html_dev:
+ BUILD_DEV_HTML=1 $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html
+ @echo
+ @echo "Build finished. The HTML pages are in build/html."
+
html-noplot:
$(SPHINXBUILD) -D plot_gallery=False -b html $(ALLSPHINXOPTS) build/html
@echo
@echo "Build finished. The HTML pages are in build/html/stable."
+html_dev-noplot:
+ BUILD_DEV_HTML=1 $(SPHINXBUILD) -D plot_gallery=False -b html $(ALLSPHINXOPTS) build/html
+ @echo
+ @echo "Build finished. The HTML pages are in build/html/stable."
+
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) build/dirhtml
@echo
diff --git a/doc/source/_templates/layout.html b/doc/source/_templates/layout.html
index 6a5bd02..c71a450 100755
--- a/doc/source/_templates/layout.html
+++ b/doc/source/_templates/layout.html
@@ -45,8 +45,12 @@
<!-- <li><a href="{{ pathto('search') }}">Search</a></li> -->
{% endblock %}
-
{% block relbar1 %}
+{% if build_dev_html|tobool %}
+<div style="background-color: red; color: white; font-weight:bold; text-align: center; padding: 10px; min-width: 910px">
+This documentation is for the development version ({{ release }}) - <a href="http://martinos.org/mne/stable">Stable version</a>
+</div>
+{% endif %}
<div style="background-color: white; text-align: left; padding: 10px 7px 15px 15px; min-width: 910px">
<div style="float: left">
<a href="{{ pathto('index') }}"><img src="{{
@@ -64,5 +68,4 @@ pathto("_static/institutions.png", 1) }}" border="0" alt="py4sci"/></a>
{# put the sidebar before the body #}
{% block sidebar1 %}{{ sidebar() }}{% endblock %}
-{% block sidebar2 %}{% endblock %}
-
+{% block sidebar2 %}{% endblock %}
\ No newline at end of file
diff --git a/doc/source/_templates/sidebar.html b/doc/source/_templates/sidebar.html
new file mode 100644
index 0000000..85d65f8
--- /dev/null
+++ b/doc/source/_templates/sidebar.html
@@ -0,0 +1,5 @@
+<h3>Versions</h3>
+<ul class="current">
+ <li class="toctree-l1"><a href=http://martinos.org/mne/stable>Stable</a></li>
+ <li class="toctree-l1"><a href=http://martinos.org/mne/dev>Development</a></li>
+</ul>
\ No newline at end of file
diff --git a/doc/source/conf.py b/doc/source/conf.py
index b5c406b..3050a81 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -160,7 +160,8 @@ html_last_updated_fmt = '%b %d, %Y'
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
+html_sidebars = {'**': ['globaltoc.html', 'sourcelink.html', 'searchbox.html',
+ 'sidebar.html']}
# Additional templates that should be rendered to pages, maps page names to
# template names.
@@ -179,8 +180,10 @@ html_use_index = False
html_show_sourcelink = False
# variables to pass to HTML templating engine
+build_dev_html = bool(int(os.environ.get('BUILD_DEV_HTML', False)))
+
html_context = {'use_google_analytics':True, 'use_twitter':True,
- 'use_media_buttons':True}
+ 'use_media_buttons':True, 'build_dev_html':build_dev_html}
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
diff --git a/doc/sphinxext/gen_rst.py b/doc/sphinxext/gen_rst.py
index 7d27f84..03d5f4b 100644
--- a/doc/sphinxext/gen_rst.py
+++ b/doc/sphinxext/gen_rst.py
@@ -61,16 +61,20 @@ class Tee(object):
def get_data(url):
"""Helper function to get data over http or from a local file"""
if url.startswith('http://'):
- resp = urllib2.urlopen(url)
- encoding = resp.headers.dict.get('content-encoding', 'plain')
- data = resp.read()
- if encoding == 'plain':
- pass
- elif encoding == 'gzip':
- data = StringIO(data)
- data = gzip.GzipFile(fileobj=data).read()
- else:
- raise RuntimeError('unknown encoding')
+ try:
+ resp = urllib2.urlopen(url)
+ encoding = resp.headers.dict.get('content-encoding', 'plain')
+ data = resp.read()
+ if encoding == 'plain':
+ pass
+ elif encoding == 'gzip':
+ data = StringIO(data)
+ data = gzip.GzipFile(fileobj=data).read()
+ else:
+ raise RuntimeError('unknown encoding')
+ except urllib2.HTTPError as err:
+ print 'Error downloading %s: %s' % (url, str(err))
+ return ''
else:
with open(url, 'r') as fid:
data = fid.read()
diff --git a/doc/upload_html.sh b/doc/upload_html.sh
index e9ff7e4..ed75d88 100755
--- a/doc/upload_html.sh
+++ b/doc/upload_html.sh
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
#scp -r build/html/* martinos-data:/web/html/mne/
-rsync -rltvz --delete --perms --chmod=g+w build/html/ martinos-data:/web/html/ext/mne/ -essh
-ssh martinos-data "chgrp -R megweb /web/html/ext/mne"
+rsync -rltvz --delete --perms --chmod=g+w build/html/ martinos-data:/web/html/ext/mne/stable -essh
+ssh martinos-data "chgrp -R megweb /web/html/ext/mne/stable"
diff --git a/mne/fiff/brainvision/brainvision.py b/mne/fiff/brainvision/brainvision.py
index afbe9f7..aa78d0c 100644
--- a/mne/fiff/brainvision/brainvision.py
+++ b/mne/fiff/brainvision/brainvision.py
@@ -205,16 +205,27 @@ def _read_vmrk(vmrk_fname):
stim_channel : array
An array containing the whole recording's event marking
"""
-
- with open(vmrk_fname) as f:
- # setup config reader
- assert (f.readline().strip() ==
- 'Brain Vision Data Exchange Marker File, Version 1.0')
-
- cfg = SafeConfigParser()
- cfg.readfp(f)
+ # read vmrk file
+ with open(vmrk_fname) as fid:
+ txt = fid.read()
+
+ start_tag = 'Brain Vision Data Exchange Marker File, Version 1.0'
+ if not txt.startswith(start_tag):
+ raise ValueError("vmrk file should start with %r" % start_tag)
+
+ # extract Marker Infos block
+ m = re.search("\[Marker Infos\]", txt)
+ if not m:
+ return np.zeros(0)
+ mk_txt = txt[m.end():]
+ m = re.search("\[.*\]", mk_txt)
+ if m:
+ mk_txt = mk_txt[:m.start()]
+
+ # extract event information
+ items = re.findall("^Mk\d+=(.*)", mk_txt, re.MULTILINE)
events = []
- for _, info in cfg.items('Marker Infos'):
+ for info in items:
mtype, mdesc, offset, duration = info.split(',')[:4]
if mtype == 'Stimulus':
trigger = int(re.findall('S\s?(\d+)', mdesc)[0])
diff --git a/mne/fiff/tag.py b/mne/fiff/tag.py
index fb9f4a2..c814fb1 100644
--- a/mne/fiff/tag.py
+++ b/mne/fiff/tag.py
@@ -94,11 +94,14 @@ def read_big(fid, size=None):
>>> with open(fname, 'wb') as fid: x.tofile(fid)
>>> with open(fname, 'rb') as fid: y = np.fromstring(read_big(fid))
>>> assert np.all(x == y)
- >>> with gzip.open(fname_gz, 'wb') as fid: fid.write(x.tostring())
- 24000000
- >>> with gzip.open(fname_gz, 'rb') as fid: y = np.fromstring(read_big(fid))
+ >>> fid_gz = gzip.open(fname_gz, 'wb')
+ >>> _ = fid_gz.write(x.tostring())
+ >>> fid_gz.close()
+ >>> fid_gz = gzip.open(fname_gz, 'rb')
+ >>> y = np.fromstring(read_big(fid_gz))
>>> assert np.all(x == y)
>>> shutil.rmtree(os.path.dirname(fname))
+ >>> fid_gz.close()
"""
# buf_size is chosen as a largest working power of 2 (16 MB):
diff --git a/mne/forward/forward.py b/mne/forward/forward.py
index 8ebf7f3..fd66990 100644
--- a/mne/forward/forward.py
+++ b/mne/forward/forward.py
@@ -1500,8 +1500,8 @@ def do_forward_solution(subject, meas, fname=None, src=None, spacing=None,
logger.info('Running forward solution generation command with '
'subjects_dir %s' % subjects_dir)
run_subprocess(cmd, env=env)
- except Exception as exception:
- raise exception
+ except:
+ raise
else:
fwd = read_forward_solution(op.join(path, fname), verbose=False)
finally:
diff --git a/mne/gui/_file_traits.py b/mne/gui/_file_traits.py
index 758d346..a0e9bdb 100644
--- a/mne/gui/_file_traits.py
+++ b/mne/gui/_file_traits.py
@@ -297,7 +297,7 @@ class RawSource(HasPrivateTraits):
def _get_fid_points(self):
if not self.raw:
return {}
- digs = {d['ident']: d for d in self.fid_dig}
+ digs = dict((d['ident'], d) for d in self.fid_dig)
return digs
@cached_property
diff --git a/mne/gui/tests/test_coreg_gui.py b/mne/gui/tests/test_coreg_gui.py
index 8b41ff5..2e80af1 100644
--- a/mne/gui/tests/test_coreg_gui.py
+++ b/mne/gui/tests/test_coreg_gui.py
@@ -4,11 +4,10 @@
import os
-import numpy as np
+import numpy as np
from numpy.testing import assert_allclose
from nose.tools import (assert_equal, assert_almost_equal, assert_false,
- assert_is_instance, assert_less, assert_raises,
- assert_true)
+ assert_raises, assert_true)
import mne
from mne.datasets import sample
@@ -22,8 +21,8 @@ kit_raw_path = os.path.join(kit_data_dir, 'test_bin.fif')
subjects_dir = os.path.join(data_path, 'subjects')
tempdir = _TempDir()
-
-trans_dst = os.path.join(tempdir, 'test-trans.fif')
+
+trans_dst = os.path.join(tempdir, 'test-trans.fif')
@sample.requires_sample_data
@@ -37,40 +36,40 @@ def test_coreg_model():
model.mri.subjects_dir = subjects_dir
model.mri.subject = 'sample'
-
- assert_false(model.mri.fid_ok)
- model.mri.lpa = [[-0.06, 0, 0]]
- model.mri.nasion = [[0, 0.05, 0]]
- model.mri.rpa = [[0.08, 0, 0]]
- assert_true(model.mri.fid_ok)
-
- model.hsp.file = raw_path
- assert_allclose(model.hsp.lpa, [[-7.137e-2, 0, 5.122e-9]], 1e-4)
- assert_allclose(model.hsp.rpa, [[ 7.527e-2, 0, 5.588e-9]], 1e-4)
- assert_allclose(model.hsp.nasion, [[ 3.725e-9, 1.026e-1, 4.191e-9]], 1e-4)
- assert_true(model.has_fid_data)
+
+ assert_false(model.mri.fid_ok)
+ model.mri.lpa = [[-0.06, 0, 0]]
+ model.mri.nasion = [[0, 0.05, 0]]
+ model.mri.rpa = [[0.08, 0, 0]]
+ assert_true(model.mri.fid_ok)
+
+ model.hsp.file = raw_path
+ assert_allclose(model.hsp.lpa, [[-7.137e-2, 0, 5.122e-9]], 1e-4)
+ assert_allclose(model.hsp.rpa, [[+7.527e-2, 0, 5.588e-9]], 1e-4)
+ assert_allclose(model.hsp.nasion, [[+3.725e-9, 1.026e-1, 4.191e-9]], 1e-4)
+ assert_true(model.has_fid_data)
lpa_distance = model.lpa_distance
nasion_distance = model.nasion_distance
rpa_distance = model.rpa_distance
avg_point_distance = np.mean(model.point_distance)
- model.fit_auricular_points()
- old_x = lpa_distance ** 2 + rpa_distance ** 2
+ model.fit_auricular_points()
+ old_x = lpa_distance ** 2 + rpa_distance ** 2
new_x = model.lpa_distance ** 2 + model.rpa_distance ** 2
- assert_less(new_x, old_x)
-
- model.fit_fiducials()
- old_x = lpa_distance ** 2 + rpa_distance ** 2 + nasion_distance ** 2
+ assert_true(new_x < old_x)
+
+ model.fit_fiducials()
+ old_x = lpa_distance ** 2 + rpa_distance ** 2 + nasion_distance ** 2
new_x = (model.lpa_distance ** 2 + model.rpa_distance ** 2
- + model.nasion_distance ** 2)
- assert_less(new_x, old_x)
-
- model.fit_hsp_points()
- assert_less(np.mean(model.point_distance), avg_point_distance)
-
- model.save_trans(trans_dst)
- trans = mne.read_trans(trans_dst)
+ + model.nasion_distance ** 2)
+ assert_true(new_x < old_x)
+
+ model.fit_hsp_points()
+ assert_true(np.mean(model.point_distance) < avg_point_distance)
+
+ model.save_trans(trans_dst)
+ trans = mne.read_trans(trans_dst)
assert_allclose(trans['trans'], model.head_mri_trans)
# test restoring trans
@@ -94,9 +93,9 @@ def test_coreg_model():
assert_almost_equal(model.rot_z, rot_z)
# info
- assert_is_instance(model.fid_eval_str, basestring)
- assert_is_instance(model.points_eval_str, basestring)
-
+ assert_true(isinstance(model.fid_eval_str, basestring))
+ assert_true(isinstance(model.points_eval_str, basestring))
+
@sample.requires_sample_data
@requires_traits
@@ -129,22 +128,22 @@ def test_coreg_model_with_fsaverage():
assert_equal(model.hsp.n_omitted, 1)
# scale with 1 parameter
- model.n_scale_params = 1
-
- model.fit_scale_auricular_points()
+ model.n_scale_params = 1
+
+ model.fit_scale_auricular_points()
old_x = lpa_distance ** 2 + rpa_distance ** 2
new_x = model.lpa_distance ** 2 + model.rpa_distance ** 2
- assert_less(new_x, old_x)
+ assert_true(new_x < old_x)
model.fit_scale_fiducials()
old_x = lpa_distance ** 2 + rpa_distance ** 2 + nasion_distance ** 2
new_x = (model.lpa_distance ** 2 + model.rpa_distance ** 2
+ model.nasion_distance ** 2)
- assert_less(new_x, old_x)
+ assert_true(new_x < old_x)
model.fit_scale_hsp_points()
avg_point_distance_1param = np.mean(model.point_distance)
- assert_less(avg_point_distance_1param, avg_point_distance)
+ assert_true(avg_point_distance_1param < avg_point_distance)
desc, func, args, kwargs = model.get_scaling_job('test')
assert_true(isinstance(desc, basestring))
@@ -156,7 +155,7 @@ def test_coreg_model_with_fsaverage():
# scale with 3 parameters
model.n_scale_params = 3
model.fit_scale_hsp_points()
- assert_less(np.mean(model.point_distance), avg_point_distance_1param)
+ assert_true(np.mean(model.point_distance) < avg_point_distance_1param)
# test switching raw disables point omission
assert_equal(model.hsp.n_omitted, 1)
diff --git a/mne/tests/test_epochs.py b/mne/tests/test_epochs.py
index ca7b03c..a294871 100644
--- a/mne/tests/test_epochs.py
+++ b/mne/tests/test_epochs.py
@@ -664,7 +664,7 @@ def test_epoch_eq():
epochs[key]
except KeyError:
caught += 1
- assert_raises(caught == 2)
+ assert_raises(Exception, caught == 2)
assert_true(not np.any(epochs.events[:, 2] == 1))
assert_true(not np.any(epochs.events[:, 2] == 2))
epochs = combine_event_ids(epochs, ['c', 'd'], {'cd': 34})
diff --git a/mne/time_frequency/tests/test_csd.py b/mne/time_frequency/tests/test_csd.py
index 45ae9ec..ba5c574 100644
--- a/mne/time_frequency/tests/test_csd.py
+++ b/mne/time_frequency/tests/test_csd.py
@@ -1,5 +1,6 @@
import numpy as np
-from nose.tools import assert_raises, assert_equal, assert_almost_equal
+from nose.tools import (assert_raises, assert_equal, assert_almost_equal,
+ assert_true)
from numpy.testing import assert_array_equal
from os import path as op
@@ -124,8 +125,8 @@ def test_compute_epochs_csd_on_artificial_data():
data_csd_mt = compute_epochs_csd(epochs_sin, mode='multitaper')
fourier_power = np.abs(data_csd_fourier.data[0, 0]) * sfreq
mt_power = np.abs(data_csd_mt.data[0, 0]) * sfreq
- assert_almost_equal(fourier_power, signal_power, delta=0.5)
- assert_almost_equal(mt_power, signal_power, delta=1)
+ assert_true(abs(fourier_power - signal_power) <= 0.5)
+ assert_true(abs(mt_power - signal_power) <= 1)
# Power per sample should not depend on time window length
for tmax in [0.2, 0.4, 0.6, 0.8]:
@@ -139,9 +140,8 @@ def test_compute_epochs_csd_on_artificial_data():
fmax=np.inf, n_fft=n_fft)
fourier_power_per_sample = np.abs(data_csd_fourier.data[0, 0]) *\
sfreq / data_csd_fourier.n_fft
- assert_almost_equal(signal_power_per_sample,
- fourier_power_per_sample, delta=0.003)
-
+ assert_true(abs(signal_power_per_sample -
+ fourier_power_per_sample) < 0.003)
# Power per sample should not depend on number of tapers
for n_tapers in [1, 2, 3, 5]:
for add_n_fft in [30, 0, 30]:
@@ -159,5 +159,5 @@ def test_compute_epochs_csd_on_artificial_data():
delta = 0.05
else:
delta = 0.004
- assert_almost_equal(signal_power_per_sample,
- mt_power_per_sample, delta=delta)
+ assert_true(abs(signal_power_per_sample - mt_power_per_sample)
+ < delta)
diff --git a/mne/utils.py b/mne/utils.py
index b54e19d..7c1b97f 100644
--- a/mne/utils.py
+++ b/mne/utils.py
@@ -215,8 +215,12 @@ def run_subprocess(command, *args, **kwargs):
output = (stdout_, stderr)
if p.returncode:
- print output
- raise subprocess.CalledProcessError(p.returncode, command, output)
+ print(output)
+ err_fun = subprocess.CalledProcessError.__init__
+ if 'output' in inspect.getargspec(err_fun).args:
+ raise subprocess.CalledProcessError(p.returncode, command, output)
+ else:
+ raise subprocess.CalledProcessError(p.returncode, command)
return output
@@ -921,7 +925,7 @@ class ProgressBar(object):
"""
spinner_symbols = ['|', '/', '-', '\\']
- template = '\r[{}{}] {:.05f} {} {} '
+ template = '\r[{0}{1}] {2:.05f} {3} {4} '
def __init__(self, max_value, initial_value=0, mesg='', max_chars=40,
progress_character='.', spinner=False):
@@ -1162,7 +1166,7 @@ def sizeof_fmt(num):
exponent = min(int(log(num, 1024)), len(unit_list) - 1)
quotient = float(num) / 1024 ** exponent
unit, num_decimals = unit_list[exponent]
- format_string = '{:.%sf} {}' % (num_decimals)
+ format_string = '{0:.%sf} {1}' % (num_decimals)
return format_string.format(quotient, unit)
if num == 0:
return '0 bytes'
--
Alioth's /git/debian-med/git-commit-notice on /srv/git.debian.org/git/debian-med/python-mne.git
More information about the debian-med-commit
mailing list