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")
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))
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")
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))
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)
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)
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)
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")
"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()
: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"
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
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)
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))