Example #1
0
def test1():
    #--- init/update logger
    jumeg_logger.setup_script_logging(logger=logger)

    stage = "$JUMEG_PATH_LOCAL_DATA/exp/MEG94T/mne"
    fcfg = os.path.join(stage, "meg94t_config01.yaml")
    fpath = "206720/MEG94T0T2/130820_1335/2/"

    path = os.path.join(stage, fpath)
    raw_fname = "206720_MEG94T0T2_130820_1335_2_c,rfDC,meeg,nr,bcc,int-raw.fif"

    stage = "$JUMEG_PATH_LOCAL_DATA/exp/QUATERS/mne"
    fcfg = os.path.join(stage, "jumeg_config.yaml")  #""quaters_config01.yaml")
    fpath = "210857/QUATERS01/191210_1325/1"
    path = os.path.join(stage, fpath)
    raw_fname = "210857_QUATERS01_191210_1325_1_c,rfDC,meeg,nr,bcc,int-raw.fif"

    #stage = "${JUMEG_TEST_DATA}/mne"
    #fcfg = "intext_config01.yaml"

    raw = None
    #fpath = "211855/INTEXT01/190329_1004/6"
    #path = os.path.join(stage,fpath)
    # raw_fname = "211855_INTEXT01_190329_1004_6_c,rfDC,meeg,nr,bcc-raw.fif"
    #raw_fname = "211855_INTEXT01_190329_1004_6_c,rfDC,meeg,nr,bcc,int-raw.fif"

    logger.info("JuMEG Apply ICA mne-version: {}".format(mne.__version__))
    #--
    jICA = JuMEG_PIPELINES_ICA()
    raw_unfiltered_clean, raw_filtered_clean = jICA.run(path=path,
                                                        raw_fname=raw_fname,
                                                        config=fcfg,
                                                        key="ica")
Example #2
0
def test():
   #--- init/update logger
    from jumeg.base import jumeg_logger
    jumeg_logger.setup_script_logging(logger=logger,level="DEBUG")
    jplt = JuMEG_PLOT_PSD(n_plots=2,fmax=300.0,name="denoising",verbose=True)
    
  #--- logfile  prefix
    p = "$JUMEG_LOCAL_DATA/exp/JUMEGTest/FV/211747"
    
    fraw1 = "211747_FREEVIEW01_180109_1049_1_c,rfDC,meeg-raw.fif"
    fraw2 = "211747_FREEVIEW01_180109_1049_1_c,rfDC,meeg,nr-raw.fif"

    bads=['MEG 007', 'MEG 010', 'MEG 142', 'MEG 156', 'RFM 011']
    
    raw,fnraw1 = jb.get_raw_obj( os.path.join(p,fraw1) )
    
    jb.verbose = True
    jb.update_bad_channels(fnraw1,raw=raw,bads=bads,save=True)
    
    jplt.plot(raw,title=fraw1)
    
    raw,fnraw2 = jb.get_raw_obj( os.path.join(p,fraw2) )
    jb.update_bad_channels(fnraw2,raw=raw,bads=bads,save=True)
    jplt.plot(raw,title=fraw2)
    jplt.show()
    
    plot_name = fraw2.rsplit('-raw.fif')[0] + '-plot'
    jplt.save(fname=os.path.join(p,plot_name))
Example #3
0
def apply(name=None, opt=None, defaults=None, logprefix="preproc"):
    #--- init/update logger
    if opt.debug:
        level = "DEBUG"
    else:
        level = "INFO"

    jumeg_logger.setup_script_logging(name=name,
                                      opt=opt,
                                      logger=logger,
                                      level=level)

    if opt.meg:
        JDS_MEG = JuMEG_DSMArchive(config=opt.config,
                                   verbose=opt.verbose,
                                   debug=opt.debug,
                                   archive=opt.archive,
                                   overwrite=opt.overwrite)
        JDS_MEG.archive(ids=opt.ids, scans=opt.scans, data_type="MEG")

    if opt.eeg:
        JDS_EEG = JuMEG_DSMArchiveEEG(data_type="EEG",
                                      ids=opt.ids,
                                      scans=opt.scans,
                                      experiments=opt.experiments,
                                      archive=opt.archive,
                                      config=opt.config,
                                      verbose=opt.verbose,
                                      debug=opt.debug)
        JDS_EEG.archive(ids=opt.ids, scans=opt.scans, data_type="EEG")
Example #4
0
def apply(name=None, opt=None, defaults=None, logprefix="preproc"):
    """
     jumeg preprocessing step 1
      noise reducer
      interpolate bads (bad channels & suggested_bads)
      filter
      resample
     
    :param opt: arparser option obj
    :param defaults: default dict
    :param logprefix: prefix for logfile e.g. name of script
    :return:
    """
    #---
    raw = None

    #--- init/update logger
    jumeg_logger.setup_script_logging(name=name, opt=opt, logger=logger)

    jpl = JuMEG_PipelineLooper(options=opt, defaults=defaults)
    jpl.ExitOnError = True

    for fname, subject_id, raw_dir in jpl.file_list():

        if not opt.run: continue

        raw = None  # !!! important  !!!
        #--- call noise reduction
        raw_fname, raw = utils.apply_noise_reducer(
            raw_fname=fname, raw=None, config=jpl.config.get("noise_reducer"))

        #--- call suggest_bads
        raw_fname, raw = utils.apply_suggest_bads(
            raw_fname=raw_fname,
            raw=raw,
            config=jpl.config.get("suggest_bads"))

        #--- call interploate_bads
        raw_fname, raw = utils.apply_interpolate_bads(
            raw_fname=raw_fname,
            raw=raw,
            config=jpl.config.get("interpolate_bads"))

        #--- call filter
        # raw_fname,raw = utils.apply_filter(raw_fname,raw=raw,config=jpl.config.get("filtering") )

        #--- call resample
        # raw_fname,raw = utils.apply_resample(raw_fname,raw=raw,config=jpl.config.get("resampling"))

        #--- call interploate_bads
        raw_fname, raw = utils.apply_ica(raw_fname=raw_fname,
                                         raw=raw,
                                         config=jpl.config.get("ica"))

        logger.info(" --> DONE preproc subject id: {}\n".format(subject_id) +
                    "  -> input  file: {}\n".format(fname) +
                    "  -> output file: {}\n".format(raw_fname))
Example #5
0
def main(argv):
    opt, parser = get_args(argv)

    if (len(argv) < 2):
        parser.print_help()
        sys.exit()

    jumeg_logger.setup_script_logging(name=argv[0], opt=opt, logger=logger)

    if opt.run:
        apply_jumeg_merge_meeg(opt)
def main(argv):

    opt, parser = get_args(argv)
    if len(argv) < 2:
        parser.print_help()
        sys.exit(-1)

#--- init/update logger
    jumeg_logger.setup_script_logging(name=argv[0], opt=opt, logger=logger)

    if opt.run: apply_import_to_fif(opt)
Example #7
0
def test1():
    #--- init/update logger
    jumeg_logger.setup_script_logging(logger=logger)

    raw = None
    stage = "$JUMEG_PATH_LOCAL_DATA/exp/MEG94T/mne"
    fcfg = os.path.join(stage, "meg94t_config01.yaml")
    fpath = "206720/MEG94T0T2/130820_1335/1/"

    path = os.path.join(stage, fpath)
    raw_fname = "206720_MEG94T0T2_130820_1335_1_c,rfDC,meeg,nr,bcc,int-raw.fif"

    logger.info("JuMEG Pipeline ICA Performance ICA mne-version: {}".format(
        mne.__version__))

    f = os.path.join(path, raw_fname)
    raw, raw_fname = jb.get_raw_obj(f, raw=None)

    raw_path = os.path.dirname(raw_fname)
    #--- get picks from raw
    picks = jb.picks.meg_nobads(raw)

    #---
    CFG = jCFG()
    CFG.update(config=fcfg)
    config = CFG.GetDataDict("ica")
    #--
    ICAPerformance = JuMEG_ICA_PERFORMANCE(
        raw=raw,
        path=path,
        fname=raw_fname,
    )

    #--- find ECG
    ICAPerformance.ECG.find_events(raw=raw, **config.get("ecg"))
    ICAPerformance.ECG.GetInfo(debug=True)
    #--- find EOG
    ICAPerformance.EOG.find_events(raw=raw, **config.get("eog"))
    ICAPerformance.EOG.GetInfo(debug=True)
Example #8
0
def test2():
    #--- init/update logger
    jumeg_logger.setup_script_logging(logger=logger)

    raw = None
    stage = "$JUMEG_PATH_LOCAL_DATA/exp/MEG94T/mne"
    fcfg = os.path.join(stage, "meg94t_config01.yaml")
    fpath = "206720/MEG94T0T2/130820_1335/1/"
    path = os.path.join(stage, fpath)

    #fraw   =  "206720_MEG94T0T2_130820_1335_1_c,rfDC,meeg,nr,bcc,int,000516-000645-raw.fif"
    #fraw_ar = "206720_MEG94T0T2_130820_1335_1_c,rfDC,meeg,nr,bcc,int,000516-000645,ar-raw.fif"

    fraw = "206720_MEG94T0T2_130820_1335_1_c,rfDC,meeg,nr,bcc,int,fibp0.10-45.0-raw.fif"
    fraw_ar = "206720_MEG94T0T2_130820_1335_1_c,rfDC,meeg,nr,bcc,int,fibp0.10-45.0,ar-raw.fif"

    logger.info("JuMEG Pipeline ICA Performance ICA mne-version: {}".format(
        mne.__version__))
    #---
    f = os.path.join(path, fraw)
    raw, raw_fname = jb.get_raw_obj(f, raw=None)
    raw_path = os.path.dirname(raw_fname)
    picks = jb.picks.meg_nobads(raw)
    #---
    f = os.path.join(path, fraw_ar)
    raw_ar, raw_ar_fname = jb.get_raw_obj(f, raw=None)

    #--- read config
    CFG = jCFG()
    CFG.update(config=fcfg)
    config = CFG.GetDataDict("ica")

    #
    jIP = JuMEG_ICA_PERFORMANCE(raw=raw, raw_clean=raw_ar, picks=picks)
    #jIP.report()

    fout = raw_fname.rsplit("-", 1)[0] + "-ar"
    jIP.plot(verbose=True, fout=fout)
Example #9
0
def run(opt):
    jumeg_logger.setup_script_logging(logger=logger)
    logger.info("JuMEG SVM ICA mne-version: {}".format(mne.__version__))
    
    from jumeg.base.pipelines.jumeg_pipelines_ica_perfromance import JuMEG_ICA_PERFORMANCE
    jIP = JuMEG_ICA_PERFORMANCE()

  #--- init raw
    raw = None
    if opt.stage:    
       path = opt.stage
    if opt.path:
       path = os.path.join(path,opt.path)
   #--- init SVM class & run : load raw obj & apply SVM for ICs
    jSVM = JuMEG_ICA_SVM()
    fname= os.path.join(path,opt.fraw) 
    ica, predict_proba = jSVM.run( fname= fname )
    raw = jSVM.raw
     
   #--- raw cleaned
    raw_clean = ica.apply(raw.copy() )
  
    #raw.plot(block=True)
  
   #--- prepare performance plot
   #--- find ECG
    jIP.ECG.find_events(raw=raw)
   #--- find EOG in raw
    annotations = jIP.EOG.find_events(raw=raw)
    raw.set_annotations(annotations)
   #---  
    fout = fname.rsplit("-",1)[0] + "-ar"
    jIP.plot(raw=raw,raw_clean=raw_clean,verbose=opt.verbose,plot_path=path,fout=fout)

    jIP.Plot.figure.show()
    
    logger.info("DONE JuMEG SVM ICA")
Example #10
0
        "log2file": True,
        "logprefix": "preproc0",
        "overwrite": False,
        "verbose": False,
        "debug": False,
        "recursive": True
    }

    opt = None
    jpl = JuMEG_PipelineLooper(defaults=defaults)

    print("---> TEST4: config file")
    print(jpl.config_file)

    print("---> TEST4: config")
    print(jpl.config)
    print("\n\n")
    for raw_fname, subject_id, dir in jpl.file_list():
        print("  -> Test4 in loop PDF: {}".format(raw_fname))


if __name__ == "__main__":
    #--- init/update logger
    from jumeg.base import jumeg_logger
    logger = jumeg_logger.setup_script_logging(logger=logger)
    logger.setLevel(logging.DEBUG)

    #test1()
    #test2()
    #test3()
    test4()
Example #11
0
         :param data: the data which will be written into the file
         :type data: dict
         '''
        if data:
            self._cfg = data
            self._update_struct()

        if fname:
            self.fname = fname
        with open(self.fname, "w") as FH:
            if fname.endswith(".yaml"):
                if yaml_type == "ruamel":
                    yaml.dump(self._cfg, FH, Dumper=yaml.RoundTripDumper)
                else:
                    yaml.dump(self._cfg, FH)
            elif fname.endswith(".json"):
                json.dump(self._cfg, FH)
            else:
                logger.exception(
                    "ERROR config file name must end with [.yaml | .json]: {}".
                    format(self.fname))
        if self.verbose:
            logger.info("done saving config file: {}".format(self.fname))


if __name__ == '__main__':
    from jumeg.base.jumeg_logger import setup_script_logging
    logger = setup_script_logging(logger=logger, name="jumeg", opt=None)
    info = JuMEG_CONFIG_Info(version=__version__)
    info.printInfo()

if __name__ == "__main__":
    opt = None

    #---  Testing DEBUG
    from tsv.utils.jumeg_tsv_utils_io_data import JuMEG_TSV_Utils_IO_Data
    from tsv.plot.jumeg_tsv_plot2d_data_options import JuMEG_TSV_PLOT2D_DATA_OPTIONS, GroupOptions

    # from tsv.wxutils.jumeg_tsv_wxutils_dlg_settings import GroupDLG,ChannelDLG

    verbose = True
    path = "data"
    path = "~/MEGBoers/programs/JuMEG/jumeg-py/jumeg-py-git-fboers-2019-08-21/projects/JuMEGTSV/data"
    fname = '200098_leda_test_10_raw.fif'
    raw = None

    jumeg_logger.setup_script_logging(name="JuMEG", opt=opt, logger=logger)

    IO = JuMEG_TSV_Utils_IO_Data()
    raw, bads = IO.load_data(raw, fname, path)
    #--- ToDo use only groups from raw
    GRP = GroupOptions()

    DOpt = JuMEG_TSV_PLOT2D_DATA_OPTIONS(raw=raw)
    DOpt.update(verbose=True, debug=True)

    app = wx.App()
    MainFrame(None, 'JuMEG demo', grp=GRP)
    app.MainLoop()
from jumeg.gui.wxlib.jumeg_gui_wxlib_main_frame import JuMEG_wxMainFrame
from jumeg.gui.wxlib.jumeg_gui_wxlib_main_panel import JuMEG_wxMainPanel
from jumeg.gui.wxlib.utils.jumeg_gui_wxlib_utils_controls import JuMEG_wxControlGrid
#--- Merger CTRLs
from jumeg.gui.wxlib.jumeg_gui_wxlib_experiment_template import JuMEG_wxExpTemplate
from jumeg.gui.wxlib.jumeg_gui_wxlib_psel_bti import JuMEG_wxPselBTi
#---
from jumeg.gui.wxlib.jumeg_gui_wxlib_pbshost import JuMEG_wxPBSHosts
from jumeg.gui.jumeg_gui_wx_argparser import JuMEG_GUI_wxArgvParser
#---
from jumeg.base.jumeg_base import jumeg_base as jb
from jumeg.base.ioutils.jumeg_ioutils_subprocess import JuMEG_IoUtils_SubProcess

import logging
from jumeg.base import jumeg_logger
jumeg_logger.setup_script_logging()
logger = logging.getLogger('jumeg')  # init a logger

__version__ = "2019.09.27-001"


class JuMEG_wxImport_BTiCtrlGrid(wx.Panel):
    def __init__(self, parent, *kargs, **kwargs):
        super().__init__(parent, *kargs)
        self._names = {
            "stage_ck": "CK_STAGE",
            "stage_txt": "TXT_STAGE",
            "emptyroom_ck": "CK_EMPTYROOM",
            "emptyroom_txt": "TXT_EMPTYROOM",
            "path_flbt": "FLBT_PATH",
            "path_combo": "COMBO_PATH"
Example #14
0
Created 2020.01.08

@author: fboers
"""

import os, sys, logging
import os.path as op

from jumeg.base.jumeg_base import jumeg_base as jb
from jumeg.epocher.jumeg_epocher import jumeg_epocher
from jumeg.filter.jumeg_mne_filter import JuMEG_MNE_FILTER
from jumeg.base import jumeg_logger

logger = logging.getLogger("jumeg")
logger = jumeg_logger.setup_script_logging(logger=logger,
                                           fname="quaters_epocher.log",
                                           level="INFO",
                                           logfile=True)  #,mode="w" )

#---
DO_EVENTS = True
DO_FILTER = True
DO_EPOCHS = True
verbose = True
debug = False
stage = jb.expandvars("$JUMEG_PATH_LOCAL_DATA/exp/QUATERS/mne")

epocher_path = None
hdf_path = None
raw = None

jumeg_epocher.use_yaml = True
Example #15
0
    path  = "$JUMEG_TEST_DATA/mne"
    fname = "FREEVIEW01"
    
    BCT = JuMEG_BadChannelTable(verbose=True)
    
    BCT.open(path=path,fname=fname,overwrite=True)
    
    id    = "123456"
    scan = "FREEVIEW01"
    fname = "$JUMEG_TEST_DATA/mne/211747/FREEVIEW01/180109_0955/1/211747_FREEVIEW01_180109_0955_1_c,rfDC,meeg-raw.fif"
    bads = "MEG 007,MEG 142,MEG 156,RFM 011"
    BCT.set_bads(id=id,scan=scan,fname=fname,bads=bads)
    
    BCT.show()
    
    fname = "$JUMEG_TEST_DATA/mne/211747/FREEVIEW01/180109_0955/1/211747_FREEVIEW01_180109_0955_2_c,rfDC,meeg-raw.fif"
    BCT.set_bads(id=id,scan=scan,fname=fname,bads=bads)
    BCT.show()
    
    BCT.set_bads(id=id,scan=scan,fname=fname,bads="NIX")
    BCT.show()
    print("bads: {}".format( BCT.get_badslist(fname=fname) ))
    
    BCT.close()


if __name__ == "__main__":
  #--- init/update logger
   logger=jumeg_logger.setup_script_logging(logger=logger,level=logging.DEBUG)
   _test()
   
    #--- init flags
    # ck if flag is set in argv as True
    # problem can not switch on/off flag via cmd call
    opt = parser.parse_args()
    for g in parser._action_groups:
        for obj in g._group_actions:
            if str(type(obj)).endswith('_StoreTrueAction\'>'):
                if vars(opt).get(obj.dest):
                    opt.__dict__[obj.dest] = False
                    for flg in argv:
                        if flg in obj.option_strings:
                            opt.__dict__[obj.dest] = True
                            break

    return opt, parser


#=========================================================================================
#==== MAIN
#=========================================================================================
if __name__ == "__main__":
    opt, parser = get_args(sys.argv)

    if len(sys.argv) < 2:
        parser.print_help()
        sys.exit(-1)

    jumeg_logger.setup_script_logging(name=sys.argv[0], opt=opt, logger=logger)

    run(opt)
Example #17
0
def apply(name=None, opt=None, defaults=None, logprefix="preproc"):
    """
     jumeg preprocessing step 1
      noise reducer
      interpolate bads (bad channels & suggested_bads)
      filter
      resample
     
    :param opt: arparser option obj
    :param defaults: default dict
    :param logprefix: prefix for logfile e.g. name of script
    :return:
    """
    #---
    raw = None

    jpl = JuMEG_PipelineLooper(options=opt, defaults=defaults)
    jpl.ExitOnError = True

    #--- init/update logger
    #--- logfile
    opt.log2file = jpl.log2file
    opt.logprefix = jpl.logprefix
    opt.logoverwrite = jpl.logoverwrite
    if opt.debug:
        level = "DEBUG"
    else:
        level = "INFO"
    jumeg_logger.setup_script_logging(name=name,
                                      opt=opt,
                                      logger=logger,
                                      version=__version__,
                                      level=level)

    for fname, subject_id, raw_dir in jpl.file_list():

        if not opt.run: continue

        raw = None  # !!!

        #--- call noise reduction
        raw_fname, raw = utils.apply_noise_reducer(
            raw_fname=fname, raw=None, config=jpl.config.get("noise_reducer"))

        #--- call suggest_bads
        raw_fname, raw = utils.apply_suggest_bads(
            raw_fname=raw_fname,
            raw=raw,
            config=jpl.config.get("suggest_bads"))

        #--- call bads to HDF
        raw_fnamee, raw = utils.apply_bads_to_hdf(
            raw_fname=raw_fname, raw=raw, config=jpl.config.get("bads_to_hdf"))

        #--- call interploate_bads
        raw_fname, raw = utils.apply_interpolate_bads(
            raw_fname=raw_fname,
            raw=raw,
            config=jpl.config.get("interpolate_bads"))

        #--- call ica
        raw_fname, raw = utils.apply_ica(raw_fname=raw_fname,
                                         path=raw_dir,
                                         raw=raw,
                                         config=jpl.config.get("ica"))

        #--- call filter 1
        raw_fname, raw = utils.apply_filter(raw_fname=raw_fname,
                                            raw=raw,
                                            config=jpl.config.get("filter_1"))

        #--- call epocher
        utils.apply_epocher(stage=jpl.stage,
                            subject_id=subject_id,
                            experiment=jpl.experiment,
                            path=raw_dir,
                            fname=raw_fname,
                            config=jpl.config.get("epocher"))

        #--- call resample
        utils.apply_report(stage=jpl.stage,
                           subject_id=subject_id,
                           experiment=jpl.experiment,
                           path=raw_dir,
                           fname=raw_fname,
                           config=jpl.config.get("report"))

        logger.info("DONE preproc subject id: {}\n".format(subject_id) +
                    "  -> input  file: {}\n".format(fname) +
                    "  -> output file: {}\n".format(raw_fname))