본문 바로가기
Brain Engineering/MNE

[MNE-Python] 구성 (1)

by goatlab 2022. 3. 23.
728x90
반응형
SMALL
import os
import mne

 

Getting and setting configuration variables

 

mne.get_config() 구성 변수는 및 함수 를 사용하여 읽고 쓴다. 특정 구성 변수를 읽으려면 해당 이름을 매개변수로 전달 get_config() 한다 ( key는 첫 번째 매개변수이므로 원하는 경우 이름 없이 전달할 수 있음).

 

print(mne.get_config('MNE_USE_CUDA'))
print(type(mne.get_config('MNE_USE_CUDA')))
---
false
<class 'str'>

 

JSON 파일에서 읽은 문자열 값은 어떤 식으로든 구문 분석되지 않으므로 Python booleanget_config() 대신 true / false 구성 값에 대해서도 문자열을 반환한다. 마찬가지로 문자열 값 (또는 값, 변수 설정 해제)만 설정한다.

 

try:
    mne.set_config('MNE_USE_CUDA', True)
except TypeError as err:
    print(err)
Out: value must be an instance of str, path-like, or NoneType, got <class 'bool'> instead.

 

구성 변수가 설정되었는지 여부가 확실하지 않은 경우 이를 확인하고 존재하지 않는 경우 대체를 제공하는 편리한 방법이 있다 (get_config()). default 매개변수가 있다.

 

print(mne.get_config('missing_config_key', default='fallback value'))
Out: fallback value

 

두 가지 편의 모드도 있다. 첫 번째는 dict 시스템에 설정된 모든 구성 변수 (해당 값)를 포함하는 a를 반환한다. 이것은 다음을 전달하여 수행된다 key=None (기본값이므로 생략 가능).

 

print(mne.get_config())  # same as mne.get_config(key=None)
Out: {'MNE_BROWSE_RAW_SIZE': '8.0,8.0', 'MNE_DATASETS_BRAINSTORM_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_EEGBCI_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_EPILEPSY_ECOG_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_ERP_CORE_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_FIELDTRIP_CMC_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_FNIRS_MOTOR_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_HF_SEF_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_KILOWORD_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_LIMO_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_MISC_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_MTRF_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_MULTIMODAL_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_OPM_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_PHANTOM_4DBTI_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_REFMEG_NOISE_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_SAMPLE_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_SOMATO_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_SPM_FACE_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_SSVEP_PATH': '/home/circleci/mne_data', 'MNE_DATASETS_TESTING_PATH': '/home/circleci/mne_data', 'MNE_LOGGING_LEVEL': 'info', 'MNE_USE_CUDA': 'false', 'SUBJECTS_DIR': '/home/circleci/mne_data/MNE-fsaverage-data', 'MNE_BROWSER_BACKEND': 'qt', 'MNE_BROWSER_PRECOMPUTE': 'false'}

 

두 번째 편의 모드는 tuple 시스템에 설정되었는지 여부에 관계없이 MNE-Python이 인식하고 사용하는 모든 키를 반환한다. 이것은 빈 문자열 ''을 다음과 같이 전달하여 수행된다.

 

print(mne.get_config(key=''))
Out: ('MNE_3D_OPTION_ANTIALIAS', 'MNE_3D_OPTION_DEPTH_PEELING', 'MNE_3D_OPTION_SMOOTH_SHADING', 'MNE_3D_OPTION_THEME', 'MNE_BROWSE_RAW_SIZE', 'MNE_BROWSER_BACKEND', 'MNE_BROWSER_PRECOMPUTE', 'MNE_BROWSER_THEME', 'MNE_BROWSER_USE_OPENGL', 'MNE_CACHE_DIR', 'MNE_COREG_ADVANCED_RENDERING', 'MNE_COREG_COPY_ANNOT', 'MNE_COREG_GUESS_MRI_SUBJECT', 'MNE_COREG_HEAD_HIGH_RES', 'MNE_COREG_HEAD_OPACITY', 'MNE_COREG_HEAD_INSIDE', 'MNE_COREG_INTERACTION', 'MNE_COREG_MARK_INSIDE', 'MNE_COREG_PREPARE_BEM', 'MNE_COREG_ORIENT_TO_SURFACE', 'MNE_COREG_SCALE_LABELS', 'MNE_COREG_SCALE_BY_DISTANCE', 'MNE_COREG_SCENE_SCALE', 'MNE_COREG_WINDOW_HEIGHT', 'MNE_COREG_WINDOW_WIDTH', 'MNE_COREG_SUBJECTS_DIR', 'MNE_CUDA_DEVICE', 'MNE_CUDA_IGNORE_PRECISION', 'MNE_DATA', 'MNE_DATASETS_BRAINSTORM_PATH', 'MNE_DATASETS_EEGBCI_PATH', 'MNE_DATASETS_EPILEPSY_ECOG_PATH', 'MNE_DATASETS_HF_SEF_PATH', 'MNE_DATASETS_MEGSIM_PATH', 'MNE_DATASETS_MISC_PATH', 'MNE_DATASETS_MTRF_PATH', 'MNE_DATASETS_SAMPLE_PATH', 'MNE_DATASETS_SOMATO_PATH', 'MNE_DATASETS_MULTIMODAL_PATH', 'MNE_DATASETS_FNIRS_MOTOR_PATH', 'MNE_DATASETS_OPM_PATH', 'MNE_DATASETS_SPM_FACE_DATASETS_TESTS', 'MNE_DATASETS_SPM_FACE_PATH', 'MNE_DATASETS_TESTING_PATH', 'MNE_DATASETS_VISUAL_92_CATEGORIES_PATH', 'MNE_DATASETS_KILOWORD_PATH', 'MNE_DATASETS_FIELDTRIP_CMC_PATH', 'MNE_DATASETS_PHANTOM_4DBTI_PATH', 'MNE_DATASETS_LIMO_PATH', 'MNE_DATASETS_REFMEG_NOISE_PATH', 'MNE_DATASETS_SSVEP_PATH', 'MNE_DATASETS_ERP_CORE_PATH', 'MNE_DATASETS_EPILEPSY_ECOG_PATH', 'MNE_FORCE_SERIAL', 'MNE_KIT2FIFF_STIM_CHANNELS', 'MNE_KIT2FIFF_STIM_CHANNEL_CODING', 'MNE_KIT2FIFF_STIM_CHANNEL_SLOPE', 'MNE_KIT2FIFF_STIM_CHANNEL_THRESHOLD', 'MNE_LOGGING_LEVEL', 'MNE_MEMMAP_MIN_SIZE', 'MNE_SKIP_FTP_TESTS', 'MNE_SKIP_NETWORK_TESTS', 'MNE_SKIP_TESTING_DATASET_TESTS', 'MNE_STIM_CHANNEL', 'MNE_TQDM', 'MNE_USE_CUDA', 'MNE_USE_NUMBA', 'SUBJECTS_DIR')

 

임의의 키에 전달하여 인식된 목록의 일부가 아닌 구성 변수를 추가할 수 있다 (set_config()). 그러나 이것은 유효한 키를 설정하려고 했지만 단순히 철자가 틀린 경우에 좋은 검사인 경고를 생성한다.

 

mne.set_config('MNEE_USE_CUUDAA', 'false')
Out: /home/circleci/project/tutorials/intro/50_configure_mne.py:75: RuntimeWarning: Setting non-standard config type: "MNEE_USE_CUUDAA"
  mne.set_config('MNEE_USE_CUUDAA', 'false')

 

방금 만든 구성 변수를 삭제해 보면 구성 변수를 설정 해제하기 위해 set_config()와 함께 사용한다 (value=None). 여전히 인식할 수 없는 키를 다루고 있기 때문에 (MNE-Python에 관한 한) 여전히 경고가 표시되지만 키는 설정 해제된다.

 

mne.set_config('MNEE_USE_CUUDAA', None)
assert 'MNEE_USE_CUUDAA' not in mne.get_config('')
Out: /home/circleci/project/tutorials/intro/50_configure_mne.py:83: RuntimeWarning: Setting non-standard config type: "MNEE_USE_CUUDAA"
  mne.set_config('MNEE_USE_CUUDAA', None)

 

Where configurations are stored

 

MNE-Python은 구성 변수를 JSON 파일에 저장한다. 기본적으로 이 파일은 Windows 및 Linux 또는 macOS에 있다. 이것을 사용하여 구성 파일의 전체 경로를 얻을 수 있다.

 

print(mne.get_config_path())
Out: /home/circleci/.mne/mne-python.json

 

디렉토리에 있는 파일을 직접 편집하는 것은 좋은 생각이 아니다 . 이전 섹션에서 설명한 가져오기 및 설정 기능을 사용한다.

 

어떤 이유로 다른 위치에서 구성을 로드하려는 경우 로드하려는 구성 파일이 저장된 디렉토리의 상위 디렉토리를 지정하여 home_dir 매개변수를 전달할 수 있다.

 

https://mne.tools/stable/auto_tutorials/intro/50_configure_mne.html

 

Configuring MNE-Python — MNE 1.0.0 documentation

This tutorial covers how to configure MNE-Python to suit your local system and your analysis preferences. Using environment variables For compatibility with MNE-C, MNE-Python also reads and writes environment variables to specify configuration. This is don

mne.tools

 

728x90
반응형
LIST