jdammers / jumeg

MEG Data Analysis at FZJ
BSD 3-Clause "New" or "Revised" License
10 stars 26 forks source link

verbose bug in jumeg.decpompose.ica #213

Closed jdammers closed 4 years ago

jdammers commented 5 years ago

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)

jdammers commented 5 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)

pravsripad commented 4 years ago

@jdammers does this problem still exist?

pravsripad commented 4 years ago

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)
jdammers commented 4 years ago

Sure, the trouble maker is commented out. See decompose.ica line 591

info = "\r" if iter > 0 else ""

jdammers commented 4 years ago

Upps hash tag problem : should be "# info = "\r" if iter > 0 else """

pravsripad commented 4 years ago

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)
pravsripad commented 4 years ago

Changed iter to step, and also changed step+1 to step.

pravsripad commented 4 years ago

Please update jumeg to test, PR #237 should have resolve the issue.