Closed jdammers closed 4 years ago
~/anaconda3/envs/jumeg_cuda/lib/python3.6/site-packages/jumeg_dev/jumeg/decompose/ica.py in infomax(data, weights, l_rate, block, w_change, anneal_deg, anneal_step, extended, n_subgauss, kurt_size, ext_blocks, max_iter, fixed_random_state, verbose) 564 565 if verbose: --> 566 info = "\r" if iter > 0 else "" 567 info = ">>> Step %4d of %4d; wchange: %1.4e" % (step+1, max_iter, change) 568 stdout.write(info)
@jdammers does this problem still exist?
Quick test with below code seems to work for me:
"""
Compute infomax ICA on raw data.
"""
import mne
from mne.datasets import sample
from jumeg.decompose.ica import infomax
data_path = sample.data_path()
fname_raw = data_path + '/MEG/sample/sample_audvis_filt-0-40_raw.fif'
raw = mne.io.Raw(fname_raw, preload=True)
# use 60s of data
raw.crop(0, 60)
picks = mne.pick_types(raw.info, meg=True, exclude='bads')
data = raw.get_data()[:10, :].transpose(1, 0)
print(data.shape)
umixing_matrix = infomax(data, weights=None, l_rate=None, block=None, w_change=1e-12,
anneal_deg=60., anneal_step=0.9, extended=False, n_subgauss=1,
kurt_size=6000, ext_blocks=1, max_iter=200,
fixed_random_state=37, verbose=True)
print(umixing_matrix.shape)
Sure, the trouble maker is commented out. See decompose.ica line 591
Upps hash tag problem : should be "# info = "\r" if iter > 0 else """
For me with the below changes, it works fine:
if verbose:
info = "\r" if step > 0 else ""
info = ">>> Step %4d of %4d; wchange: %1.4e\n" % (step, max_iter, change)
stdout.write(info)
stdout.flush()
Opening raw data file /Users/psripad/mne_data/MNE-sample-data/MEG/sample/sample_audvis_filt-0-40_raw.fif...
Read a total of 4 projection items:
PCA-v1 (1 x 102) idle
PCA-v2 (1 x 102) idle
PCA-v3 (1 x 102) idle
Average EEG reference (1 x 60) idle
Range : 6450 ... 48149 = 42.956 ... 320.665 secs
Ready.
Current compensation grade : 0
Reading 0 ... 41699 = 0.000 ... 277.709 secs...
(9010, 10)
>>> Step 1 of 20; wchange: 9.7084e+16
... lowering learning rate to 0.000977163
... re-starting...
>>> Step 1 of 20; wchange: 2.5948e+08
>>> Step 2 of 20; wchange: 1.4371e+12
>>> Step 3 of 20; wchange: 8.9950e+13
>>> Step 4 of 20; wchange: 4.4795e+14
>>> Step 5 of 20; wchange: 5.3705e+14
>>> Step 6 of 20; wchange: 2.9973e+14
>>> Step 7 of 20; wchange: 1.1251e+14
>>> Step 8 of 20; wchange: 3.4510e+13
>>> Step 9 of 20; wchange: 9.5590e+12
>>> Step 10 of 20; wchange: 2.5157e+12
>>> Step 11 of 20; wchange: 6.4529e+11
>>> Step 12 of 20; wchange: 1.6341e+11
>>> Step 13 of 20; wchange: 4.1116e+10
>>> Step 14 of 20; wchange: 1.0312e+10
>>> Step 15 of 20; wchange: 2.5821e+09
>>> Step 16 of 20; wchange: 6.4605e+08
>>> Step 17 of 20; wchange: 1.6158e+08
>>> Step 18 of 20; wchange: 4.0403e+07
>>> Step 19 of 20; wchange: 1.0102e+07
>>> Step 20 of 20; wchange: 2.5255e+06
(10, 10)
Changed iter to step, and also changed step+1 to step.
Please update jumeg to test, PR #237 should have resolve the issue.
I don't know what the problem is with the verbose message. Even if I remove the info, it still will complain
~/anaconda3/envs/jumeg_cuda/lib/python3.6/site-packages/jumeg_dev/jumeg/decompose/ica.py in infomax(data, weights, l_rate, block, w_change, anneal_deg, anneal_step, extended, n_subgauss, kurt_size, ext_blocks, max_iter, fixed_random_state, verbose) 564 565 if verbose: --> 566 info = "\r" if iter > 0 else "" 567 info = ">>> Step %4d of %4d; wchange: %1.4e" % (step+1, max_iter, change) 568 stdout.write(info)