본문 바로가기
Brain Engineering/MNE

[MNE-Python] 구성 (2)

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

Using environment variables

 

MNE-C와의 호환성을 위해 MNE-Python은 구성을 지정하기 위해 환경 변수를 읽고 쓴다. 이것은 JSON 구성을 읽고 쓰는 것과 동일한 기능으로 수행되며 매개변수 use_env set_env와 같이 기본적으로 MNE-Python JSON 파일 get_config()을 확인 os.environ하기 전에 수행한다. JSON 파일만 확인하고자 (use_env=False.) 시연한다면 MNE-Python에서는 고유하지 않은 (따라서 JSON 구성 파일에 없는) 환경 변수이다.

 

# make sure it's not in the JSON file (no error means our assertion held):
assert mne.get_config('PATH', use_env=False) is None
# but it *is* in the environment:
print(mne.get_config('PATH'))
Out: /home/circleci/python_env/bin:/home/circleci/.local/bin/:/home/circleci/minimal_cmds/bin:/home/circleci/bin:/home/circleci/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

 

또한 기본적으로 set_config() JSON 파일과 os.environ, JSON 파일에서만 구성 변수를 설정하려면 set_env=False. 여기에서 print()문을 사용하여 환경 변수가 생성 및 삭제되고 있는지 확인한다 (대신 Python assert 문을 사용할 수 있지만 성공할 때 출력을 인쇄하지 않으므로 약간 덜 명확함).

 

mne.set_config('foo', 'bar', set_env=False)
print('foo' in os.environ.keys())
mne.set_config('foo', 'bar')
print('foo' in os.environ.keys())
mne.set_config('foo', None)  # unsetting a key deletes var from environment
print('foo' in os.environ.keys())
---
/home/circleci/project/tutorials/intro/50_configure_mne.py:134: RuntimeWarning: Setting non-standard config type: "foo"
  mne.set_config('foo', 'bar', set_env=False)
False
/home/circleci/project/tutorials/intro/50_configure_mne.py:136: RuntimeWarning: Setting non-standard config type: "foo"
  mne.set_config('foo', 'bar')
True
/home/circleci/project/tutorials/intro/50_configure_mne.py:138: RuntimeWarning: Setting non-standard config type: "foo"
  mne.set_config('foo', None)  # unsetting a key deletes var from environment
False

 

Logging

 

한 가지 중요한 구성 변수는 MNE_LOGGING_LEVEL이다. 모듈 전체에서 MNE-Python이 뒤에서 수행하는 작업을 설명하는 메시지가 생성된다. 설정 MNE_LOGGING_LEVEL 방법에 따라 표시되는 메시지 수가 결정된다. MNE-Python을 새로 설치할 때의 기본 로깅 수준은 info 다음과 같다.

 

print(mne.get_config('MNE_LOGGING_LEVEL'))
Out: INFO

 

구성 변수로 설정할 수 있는 로깅 수준은 debug, info, warning, error, critical이다. MNE-Python에서 로그 메시지의 약 90%가 info 메시지이므로 대부분의 사용자는 info (무슨 일이 일어나고 있는지 말해주세요)와 warning (뭔가 걱정스러운 일이 발생할 때만 말해주세요) 중 하나를 선택한다. 로깅 수준 은 debugMNE-Python 개발자를 위한 것이다.

 

이전 섹션에서 mne.set_config()가 현재 Python 세션과 모든 향후 세션의 로깅 수준을 변경하는 데 사용되는 방법을 보았다. 현재 Python 세션에 대해서만 로깅 수준을 변경하려면 mne.set_log_level() 대신 사용할 수 있다. 이 함수는 config 변수 set_log_level()에 사용되는 것과 동일한 5개의 문자열 옵션을 사용한다. MNE_LOGGING_LEVEL 또한 해당 문자열과 동일한 int 또는 값을 허용할 수 있다. bool 동등성은 다음 표에 나와 있다.

 

 

많은 MNE-Python 함수에서 매개변수를 사용하여 해당 함수 호출에 대한 로깅 수준을 일시적으로 변경할 수 있다 (verbose). 이를 설명하기 위해 다양한 로깅 수준이 설정된 일부 샘플 데이터를 로드한다.

 

kit_data_path = os.path.join(os.path.abspath(os.path.dirname(mne.__file__)),
                             'io', 'kit', 'tests', 'data', 'test.sqd')
raw = mne.io.read_raw_kit(kit_data_path, verbose='warning')

 

어떤 메시지도 심각도가 "경고"이거나 더 나빴기 때문에 생성된 메시지가 없다. info 다음으로 로그 수준 (기본 수준)으로 동일한 파일을 로드한다.

 

raw = mne.io.read_raw_kit(kit_data_path, verbose='info')
---
Extracting SQD Parameters from /home/circleci/project/mne/io/kit/tests/data/test.sqd...
Creating Raw.info structure...
Setting channel info structure...
Creating Info structure...
Ready.

 

파일에서 정보를 추출하고 해당 정보를 MNE-Python Info 형식으로 변환하는 등의 몇 가지 메시지를 받았다. 마지막으로 debug수준 정보를 요청하면 더 자세한 정보를 얻을 수 있다. 이번에는 다음을 사용하여 수행한다.

 

with mne.use_log_level('debug'):
    raw = mne.io.read_raw_kit(kit_data_path)
---
Extracting SQD Parameters from /home/circleci/project/mne/io/kit/tests/data/test.sqd...
Creating Raw.info structure...
    KIT dir entry 0 @ 16
    KIT dir entry 1 @ 32
    KIT dir entry 2 @ 48
    KIT dir entry 3 @ 64
    KIT dir entry 4 @ 80
    KIT dir entry 5 @ 96
    KIT dir entry 6 @ 112
    KIT dir entry 7 @ 128
    KIT dir entry 8 @ 144
    KIT dir entry 9 @ 160
    KIT dir entry 10 @ 176
    KIT dir entry 11 @ 192
    KIT dir entry 12 @ 208
    KIT dir entry 13 @ 224
    KIT dir entry 14 @ 240
    KIT dir entry 15 @ 256
    KIT dir entry 16 @ 272
    KIT dir entry 17 @ 288
    KIT dir entry 18 @ 304
    KIT dir entry 19 @ 320
    KIT dir entry 20 @ 336
    KIT dir entry 21 @ 352
    KIT dir entry 22 @ 368
    KIT dir entry 23 @ 384
    KIT dir entry 24 @ 400
    KIT dir entry 25 @ 416
    KIT dir entry 26 @ 432
    KIT dir entry 27 @ 448
    KIT dir entry 28 @ 464
    KIT dir entry 29 @ 480
    KIT dir entry 30 @ 496
SQD file basic information:
Meg160 version = V2R004
System ID      = 34
System name    = NYU 160ch System since Jan24 2009
Model name     = EQ1160C
Channel count  = 192
Comment        =
Dewar style    = 2
FLL type       = 10
Trigger type   = 21
A/D board type = 12
ADC range      = +/-5.0[V]
ADC allocate   = 16[bit]
ADC bit        = 12[bit]
Setting channel info structure...
Creating Info structure...
Ready.

 

verbose 매개변수에 문자열 값을 전달했지만 위의 표에서 메시지를 verbose=True을 제공하고 억제하는 것을 볼 수 있다. 이것은 스크립트에서 사용하기에 유용한 축약형이므로 다른 로깅 수준의 특정 이름을 기억할 필요가 없다. 마지막으로 참고 사항은 매개변수가 있는 함수의 기본값에 의해 가장 최근에 설정된 로깅 수준으로 대체된다. 현재 Python 세션 동안 호출되지 않은 경우 해당 값으로 대체된다.

 

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