Chest X-Ray Medical Diagnosis with Deep Learning - ② Load the Datasets

start

BioinformaticsAndMe

 

 


Chest X-Ray Medical Diagnosis with Deep Learning

     ① Import Packages and Function
     ② Load the Datasets
     ③ Model Development
     ④ Training
    ⑤ Prediction and Evaluation 

 

 

 

 

② Load the Datasets


: 환자 32,717명의 108,948개 frontal-view X-ray 이미지가 포함된 ChestX-ray8 데이터셋을 사용

    데이터셋의 각 이미지에는 14개의 병리학적 상태를 식별하는 여러 텍스트 마이닝 레이블이 포함됨

          *의사는 이 결과를 통해, 8가지 질병을 진단하는데 사용할 수 있음

    이 데이터에 기반하여 14개의 레이블이 지정된 병리 상태에 대한 분류 모델을 개발할 것

          *각 병리에 대해 '양성' 또는 '음성'을 예측

: Link 에서 전체 데이터셋을 다운로드할 수 있음

: 분석 실습은 축소된 아래 3개의 파일을 사용 (github.com/vishrutskaushik/Chest-X-Ray-Medical-Diagnosis)

  • nih/train-small.csv: 875 images from our dataset to be used for training.
  • nih/valid-small.csv: 109 images from our dataset to be used for validation.
  • nih/test.csv: 420 images from our dataset to be used for testing.

: 이 데이터셋은 14개 병리 상태 중에서 아래 5개에 대해, 방사선과의사가 합의하여 주석을 달았음

  • Consolidation
  • Edema
  • Effusion
  • Cardiomegaly
  • Atelectasis

#pandas 라이브러리로 데이터 로딩

#구글드라이브에 'nih' 폴더 업로드 후, 마운트
from google.colab import drive
drive.mount('/content/drive')

#데이터 로딩
train_df = pd.read_csv("drive/MyDrive/nih/train-small.csv")
valid_df = pd.read_csv("drive/MyDrive/nih/valid-small.csv")
test_df = pd.read_csv("drive/MyDrive/nih/test.csv")

#데이터 확인
train_df.head()

labels = ['Cardiomegaly', 
          'Emphysema', 
          'Effusion', 
          'Hernia', 
          'Infiltration', 
          'Mass', 
          'Nodule', 
          'Atelectasis',
          'Pneumothorax',
          'Pleural_Thickening', 
          'Pneumonia', 
          'Fibrosis', 
          'Edema', 
          'Consolidation']

 

 

 

2.1 Preventing Data Leakage


: 데이터셋에 각 환자에 대해 여러 이미지가 포함되어 있음

: 예를 들어, 환자가 병원 방문 중 여러 다른 시간에 X-ray 이미지를 촬영한 경우가 이에 해당

: Train, Validation,, Test 데이터셋 사이에 Leakage가 없도록, 데이터 분할이 수행됨

 

Exercise 1 - Checking Data Leakage
: 아래 셀에서 두 데이터셋 사이에 누출이 있는지 확인하는 함수가 작성됨

def check_for_leakage(df1, df2, patient_col):
    """
    Return True if there any patients are in both df1 and df2.

    Args:
        df1 (dataframe): dataframe describing first dataset
        df2 (dataframe): dataframe describing second dataset
        patient_col (str): string name of column with patient IDs
    
    Returns:
        leakage (bool): True if there is leakage, otherwise False
    """
    
    df1_patients_unique = set(df1[patient_col].unique().tolist())
    df2_patients_unique = set(df2[patient_col].unique().tolist())
    
    patients_in_both_groups = df1_patients_unique.intersection(df2_patients_unique)

    # leakage contains true if there is patient overlap, otherwise false.
    leakage = len(patients_in_both_groups) >= 1 # boolean (true if there is at least 1 patient in both groups)
    
    
    return leakage

: 예제 테스트

print("test case 1")
df1 = pd.DataFrame({'patient_id': [0, 1, 2]})
df2 = pd.DataFrame({'patient_id': [2, 3, 4]})
print("df1")
print(df1)
print("df2")
print(df2)
print(f"leakage output: {check_for_leakage(df1, df2, 'patient_id')}")
print("-------------------------------------")
print("test case 2")
df1 = pd.DataFrame({'patient_id': [0, 1, 2]})
df2 = pd.DataFrame({'patient_id': [3, 4, 5]})
print("df1:")
print(df1)
print("df2:")
print(df2)

print(f"leakage output: {check_for_leakage(df1, df2, 'patient_id')}")

: 결과 출력

# Expected output
test case 1
df1
   patient_id
0           0
1           1
2           2
df2
   patient_id
0           2
1           3
2           4
leakage output: True
-------------------------------------
test case 2
df1:
   patient_id
0           0
1           1
2           2
df2:
   patient_id
0           3
1           4
2           5
leakage output: False

: 다음 셀을 실행하여 train, valid, test 데이터셋에 공통된 환자가 있는지 확인

print("leakage between train and test: {}".format(check_for_leakage(train_df, test_df, 'PatientId')))
print("leakage between valid and test: {}".format(check_for_leakage(valid_df, test_df, 'PatientId')))

# Expected output
leakage between train and test: False
leakage between valid and test: False

: 두 가지 모두에 대해 'False'가 출력되면, training을 위한 데이터셋 준비가 완료

 

 

 

2.2 Preparing Images


: 데이터셋 분할이 준비됐으므로, 이를 사용하도록 모델 설정을 진행할 수 있음

: 이를 위해, Keras의 ImageDataGenerator를 사용하여 데이터프레임에 지정된 이미지에 대한 'generator'를 빌드

: generator로 각 배치의 값을 변환하여 평균이 0, 표준 편차가 1이 되도록 표준화 함

: 또한, 단일채널 X-ray 이미지 (회색조)를 3채널 형식으로 변환

: 이미지 크기를 320x320 픽셀로 설정

def get_train_generator(df, image_dir, x_col, y_cols, shuffle=True, batch_size=8, seed=1, target_w = 320, target_h = 320):
    """
    Return generator for training set, normalizing using batch
    statistics.

    Args:
      train_df (dataframe): dataframe specifying training data.
      image_dir (str): directory where image files are held.
      x_col (str): name of column in df that holds filenames.
      y_cols (list): list of strings that hold y labels for images.
      sample_size (int): size of sample to use for normalization statistics.
      batch_size (int): images per batch to be fed into model during training.
      seed (int): random seed.
      target_w (int): final width of input images.
      target_h (int): final height of input images.
    
    Returns:
        train_generator (DataFrameIterator): iterator over training set
    """        
    print("getting train generator...") 
    # normalize images
    image_generator = ImageDataGenerator(
        samplewise_center=True,
        samplewise_std_normalization= True)
    
    # flow from directory with specified batch size
    # and target image size
    generator = image_generator.flow_from_dataframe(
            dataframe=df,
            directory=image_dir,
            x_col=x_col,
            y_col=y_cols,
            class_mode="raw",
            batch_size=batch_size,
            shuffle=shuffle,
            seed=seed,
            target_size=(target_w,target_h))
    
    return generator

 

Valid 및 Test 셋을 위한 별도의 생성기 구축

: 이제 데이터 validaiton 및 testing을 위한 새로운 생성기를 구축해야함

: Training 데이터와 동일한 generator를 사용할 수 없는 이유

   -Training에서는 배치마다 각 이미지를 정규화하므로 배치 통계를 사용함

   -실제 분석에서는 들어오는 이미지를 한 번에 일괄 처리하지 않음 (한번에 하나의 이미지를 처리)

   -Training 모델에는 test 데이터셋에 대한 정보가 없어야 함

: 우리가 해야 할 일은 training 셋에서 계산된 통계를 사용하여, 들어오는 test 셋을 정규화하는 것

   -아래 함수에서 이를 구현함

   -이상적으로는 전체 training 셋을 사용하여 표본 평균과 표준 편차를 계산하고자 할 것

     *그러나 이것은 매우 크기 때문에 시간이 많이 소요

   -시간을 고려하여 데이터셋의 무작위 샘플을 취하고, 샘플 평균과 샘플 표준 편차를 계산함

def get_test_and_valid_generator(valid_df, test_df, train_df, image_dir, x_col, y_cols, sample_size=100, batch_size=8, seed=1, target_w = 320, target_h = 320):
    """
    Return generator for validation set and test test set using 
    normalization statistics from training set.

    Args:
      valid_df (dataframe): dataframe specifying validation data.
      test_df (dataframe): dataframe specifying test data.
      train_df (dataframe): dataframe specifying training data.
      image_dir (str): directory where image files are held.
      x_col (str): name of column in df that holds filenames.
      y_cols (list): list of strings that hold y labels for images.
      sample_size (int): size of sample to use for normalization statistics.
      batch_size (int): images per batch to be fed into model during training.
      seed (int): random seed.
      target_w (int): final width of input images.
      target_h (int): final height of input images.
    
    Returns:
        test_generator (DataFrameIterator) and valid_generator: iterators over test set and validation set respectively
    """
    print("getting train and valid generators...")
    # get generator to sample dataset
    raw_train_generator = ImageDataGenerator().flow_from_dataframe(
        dataframe=train_df, 
        directory=IMAGE_DIR, 
        x_col="Image", 
        y_col=labels, 
        class_mode="raw", 
        batch_size=sample_size, 
        shuffle=True, 
        target_size=(target_w, target_h))
    
    # get data sample
    batch = raw_train_generator.next()
    data_sample = batch[0]

    # use sample to fit mean and std for test set generator
    image_generator = ImageDataGenerator(
        featurewise_center=True,
        featurewise_std_normalization= True)
    
    # fit generator to sample from training data
    image_generator.fit(data_sample)

    # get test generator
    valid_generator = image_generator.flow_from_dataframe(
            dataframe=valid_df,
            directory=image_dir,
            x_col=x_col,
            y_col=y_cols,
            class_mode="raw",
            batch_size=batch_size,
            shuffle=False,
            seed=seed,
            target_size=(target_w,target_h))

    test_generator = image_generator.flow_from_dataframe(
            dataframe=test_df,
            directory=image_dir,
            x_col=x_col,
            y_col=y_cols,
            class_mode="raw",
            batch_size=batch_size,
            shuffle=False,
            seed=seed,
            target_size=(target_w,target_h))
    return valid_generator, test_generator

: generator 함수가 준비 되었으면 training, validation, testing 데이터셋을 각각 하나씩 생성해봄

IMAGE_DIR = "./drive/MyDrive/nih/images-small/"
train_generator = get_train_generator(train_df, IMAGE_DIR, "Image", labels)
valid_generator, test_generator= get_test_and_valid_generator(valid_df, test_df, train_df, IMAGE_DIR, "Image", labels)
# Expected output
getting train generator...
Found 1000 validated image filenames.
getting train and valid generators...
Found 1000 validated image filenames.
Found 200 validated image filenames.
Found 420 validated image filenames.

: '__get_item __ (index)' 함수를 호출하여, generator가 모델에 제공하는 내용을 살펴봄

x, y = train_generator.__getitem__(0)
plt.imshow(x[0]);

# Expected output
Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers).

 

 

 

 

다음 분석

Chest X-Ray Medical Diagnosis with Deep Learning

    ③ Model Development

 

 

 

#Reference

1) www.coursera.org/learn/ai-for-medical-diagnosis

2) github.com/vishrutskaushik/Chest-X-Ray-Medical-Diagnosis

 

 

 

Chest X-Ray Medical Diagnosis with Deep Learning - ② Load the Datasets

end

BioinformaticsAndMe

 

 

 

 

 

 

2021년 제1차 전문경력직(연구·전문·경력신입) 선발

2021.02.10 ~ 2021.02.25

○ 모집인원 : 19명
  - 연구원 : 11명(정신건강/책임급/1명, 방사선의학/선임급/1명, 디지털혁신(AI로봇개발)/선임급/1명, 방폐물처분/선임급/1명, 방사능방재/선임급/1명, 인간기계연계기술/선임급/1명, 증기발생기 건전성평가/선임급/1명, 보건의료 빅데이터/일반급/1명, 생물학적 선량평가/일반급/1명, 건강평가/일반급/1명, 종합설계기술/일반급/1명)
  - 전문원 : 6명(기업문화/선임급/1명, 산업보안/선임급/1명, 액․기체 배출량관리 및 RMS기술/선임급/1명, 수력전기기술/선임급/1명, 디지털혁신(증강현실)/일반급/1명, 디지털혁신(빅데이터)/일반급/1명)
  - 경력신입 : 2명(공인회계사/4(을)/2명)
○ 연령 : 제한없음
○ 병역 : 병역을 필하였거나 면제된 자(단, 면접시작일 전까지 전역가능한 자 포함)
     ※ 전문연구요원(병역특례) 신규편입 및 전직 가능분야 : “없음”
○ 영어 : 제한없음(어학점수 환산표에 따라 1차전형 점수 반영, 책임급연구원 해당없음)
○ 자격/경력 요건 : 선발분야 별 상이하므로 모집요강 참조
○ 기타
   - 당사 신규채용자의 결격사유에 해당함이 없는 자
   - 2021년 2월 학위취득 예정자는 면접시작일 전까지 학위 미취득 시 합격 취소
○ 접수장소 : http://www.khnp.co.kr/RECU_NEW/ (온라인 접수)
○ 접수기간 : 2021. 2. 10.(수) ~ 2. 25.(목) 15:00
  - 지역주민 확인기간 : 2021. 2. 10.(수) ~ 2. 24.(수) 17:00
○ 본사 인사처 인재채용부(054-704-5132, 5136)
○ 업무시간 : 평일 09:00 ~ 18:00

 

2021년 제1차 전문경력직 선발 모집요강.pdf
0.65MB

 

 

 

직무명

보건의료빅데이터 구축 및 운용

직급

일반(4직급)

직군명

연구

근무형태

통상근무

해당사업소

방사선보건원

직무개요

보건의료빅데이터 공통데이터모델(CDM) 변환 및 예측모형 개발

 

 

 

직무내용 (세부업무)

   보건의료빅데이터센터 운영 및 활용 지원

-   기초 보건통계(유병률, 발생률, 사망률) 산출

-   보건의료빅데이터 통계분석 및 시각화

   연구DB 통합 데이터웨어하우스(DW) 구축 및 운용

-   통합 DW 정형 데이터 정제 및 표준화

-   통합 DW의 개인정보 가명처리(비식별조치)

   통합 DW 공통데이터모델(CDM) 변환

-   표준용어(vocabulary) 검토 및 보완

-   공통데이터모델 변환을 통한 통합 DW 표준화

   빅데이터 활용 플랫폼 등 시스템 개발 및 운용

-   보건의료빅데이터 활용 플랫폼 개발

-   보건의료빅데이터 활용 플랫폼 운영 및 실증

 

필요지식/기술

   의료/임상/헬스케어 데이터에 관한 이해

   통계, 데이터 마이닝, 데이터 모델링에 관한 이해

   데이터웨어하우스 구축 및 운용 기술

   보건의료빅데이터 활용 플랫폼에 관한 이해

자격증

필수

 

권장

 

 

교육훈련

 

필수

  해당분야 석사학위 취득자로 일정한 외국어능력이 있는

  해당분야 학사학위 취득 관련분야 경력이 2이상 있는자

  전공 : 의료정보학과, 정보의학과, 빅데이터학과, 의과학과

권장

 

 

우대경력

필수

 

 

권장

   데이터 분석/모델링 관련 역량(SAS, R )

   보건의료빅데이터 CDM 변환 관련 경험 또는 연구 경력

   빅데이터  기반  분석  시스템  구축/관리 실무경력

   의료/임상/헬스케어  인공지능(AI)  관련 실무경력

비고

 

 

Chest X-Ray Medical Diagnosis with Deep Learning - ① Import Packages and Function

start

BioinformaticsAndMe

 

 

 

Chest X-Ray Medical Diagnosis with Deep Learning

     ① Import Packages and Function
     ② Load the Datasets
     ③ Model Development
     ④ Training
    ⑤ Prediction and Evaluation 

 

 

 

 

Chest X-Ray Medical Diagnosis with Deep Learning 시작


: Keras를 사용하여 흉부 X-ray classifier 딥러닝 모델을 생성하여, 의료 영상 진단에 사용해보는 학습 과정

: 모든 분석 과정은 google colab에서 수행되었음

: 실제 X-ray 데이터 전처리부터 모델 평가까지 아래의 과정을 수행

  • Data preparation
    • Visualizing data
    • Preventing data leakage
  • Model Development
    • Addressing class imbalance
    • Leveraging pre-trained models using transfer learning
  • Evaluation
    • AUC and ROC curves

 

 

 

 

① Import Packages and Function


: numpy, pandas - 데이터 전처리, 가공

: matplotlib.pyplot, seaborn - 결과 플롯팅으로 시각화

: util - 로컬로 정의된 유틸리티 기능 제공

: keras - 딥러닝 모델 구축

util.py
0.00MB

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

from keras.preprocessing.image import ImageDataGenerator
from keras.applications.densenet import DenseNet121
from keras.layers import Dense, GlobalAveragePooling2D
from keras.models import Model
from tensorflow.compat.v1.keras import backend as K

from keras.models import load_model

# 아래 코드를 실행하여 util.py을 업로드
from google.colab import files
src = list(files.upload().values())[0]
open('util.py','wb').write(src)
import util

 

 

 

다음 분석

Chest X-Ray Medical Diagnosis with Deep Learning

    ② Load the Datasets

 

 

 

#Reference

1) www.coursera.org/learn/ai-for-medical-diagnosis

 

 

 

 

Chest X-Ray Medical Diagnosis with Deep Learning - ① Import Packages and Function

end

BioinformaticsAndMe

 

 

 

심장전도시스템 (cardiac conduction system) ②

start

BioinformaticsAndMe

 

 

 

 

 

Atrioventricular (AV) node 


: 방실결절(AV node)은 내측 우심방에 위치하며, 심방과 심실 사이에서 전기적인 연결을 형성함

: 방실결절의 세포는 충격을 매우 느리게 전달하므로, 약 1cm 길이의 노드를 횡단에 필요한 시간은 60-125ms

: 이와 같은 전도 둔화는 급속한 심방 부정맥(심방세동, 심방조동)에 대한 반응으로 심실의 장애를 방지함

: 또한, 전도의 통과를 막을 수 있으며, 심장 전도 차단의 가장 일반적인 위치

: 방실결절은 자율신경계에 의해 조절됨

 

 

 

 

 

His-Purkinje System and Ventricles


: 심실에서 전도의 급속한 확산은 His-Purkinje system(HPS)의 세포에 의해 매개됨

: His bundle(히스속;히스다발)은 심실 중격의 꼭대기에 존재

: AV node는 His bundle의 상단에서 끝나고, His bundle은 왼쪽 및 오른쪽으로 분기됨

: AV node를 통과하는데 걸리는 시간은 일반적으로 60-125ms

: His bundle~Purkinje fiber에서 소요된 시간은 일반적으로 35-55ms

     *55ms가 넘어가면 HPS 전도 과정에 심각한 문제가 있음을 암시

 

 

 

 

 

동방결절 전도과정은 아래 링크 참조

심장전도시스템 (cardiac conduction system) 

 

 

 

 

#Reference

1) www.brown.edu/Courses/Bio_281-cardio/cardio/EKGhandout2.pdf

2) www.youtube.com/watch?v=buT0JSmVjxI&list=PUUmD__F0ZGrvbDa92dR76qQ&index=7

 

 

 

 

심장전도시스템 (cardiac conduction system) ②

end

BioinformaticsAndMe

 

 

 

흉부유도 (Precordial lead)

start

BioinformaticsAndMe

 

 

흉부유도 (Precordial lead; Chest lead)


: 앞면에 수직인 평면에서 전기적 활동을 기록하기 위해, 심장의 여러 영역에 걸쳐 가슴 표면에 6개의 (+)극을 배치

: 6개의 unipolar precordial lead (단극 흉부유도) 명칭은 V1-V6

  • V1: fourth intercostal space, to the right of sternum.
  • V2: fourth intercostal space, to the left of sternum.
  • V3: placed diagonally between V2 and V4.
  • V4: between rib 5 and 6 in the midclavicular line.
  • V5: placed on the same level as V4, but in the anterior axillary line.
  • V6: placed on the same level as V4 and V5, but in he midaxillary line.

: 해석 규칙은 사지 리드와 동일하며, 흉부 표면의 특정 전극을 향해 이동하는 탈분극 파동은 (+) deflection을 유발

: Standard Limb Leads(I, II, III) 및 Augmented Limb Leads(aVF, aVR, aVL)의 사지 리드는 탐색 전극과 기준점이 정면에 배치됨

     →따라서, 이러한 리드는 정면에서 이동하는 벡터를 감지하는데 탁월함

: Precordial Leads(V1, V2, V3, V4, V5, V6)에는 탐색 전극이 흉벽 앞쪽에 위치하고 기준점은 흉부 내부에 존재

     →따라서, 가슴 리드는 수평면으로 이동하는 벡터를 감지하는데 탁월함

 

 

 

 

 

#Reference

1) ecgwaves.com/topic/ekg-ecg-leads-electrodes-systems-limb-chest-precordial/

2) www.cvphysiology.com/Arrhythmias/A013c

 

 

 

흉부유도 (Precordial lead)

end

BioinformaticsAndMe

 

 

 

증폭사지유도 (Augmented limb lead)

start

BioinformaticsAndMe

 

 

 

 

증폭사지유도 (Augmented limb lead)


: Lead aVR, aVL, aVF는 증폭사지유도(Augmented limb lead)임

     Lead augmented vector right (aVR) → (+)극은 오른팔, (-)극은 왼팔 전극과 왼다리 전극의 조합

     Lead augmented vector left (aVL) (+)극은 왼, (-)극은 오른팔 전극과 왼다리 전극의 조합

     Lead augmented vector foot (aVF) (+)극은 왼다리, (-)극은 오른팔 전극과 왼팔 전극의 조합

: 상대적으로 전위가 0인 Null point를 사용하여 한 사지에서 기록된 전기력 그래프를 얻으므로, 단극(Unipolar)

: 표준 ECG를 구성하는 Lead 시스템은 아래와 같이 3가지가 존재함

  • Standard Limb Leads (Bipolar) - I, Il, III
  • Augmented Limb Leads (Unipolar) - aVR, aVL, aVF
  • Precordial Leads  (Unipolar) - V1, V2, V3, V4, V5, V6

 

 

 

 

#Reference

1) en.wikipedia.org/wiki/Electrocardiography

2) thephysiologist.org/study-materials/the-ecg-leads-polarity-and-einthovens-triangle/

 

 

 

증폭사지유도 (Augmented limb lead)

end

BioinformaticsAndMe

 

 

 

아인트호벤 삼각형 (Einthoven’s Triangle)

start

BioinformaticsAndMe

 

 

 

 

 

아인트호벤 삼각형 (Einthoven’s Triangle)


: Standard Limb Lead(표준사지전극)은 한 번에 두 사지(팔다리) 사이에 기록된 전위차 그래프를 표시하는데 사용

: Lead에서 한 사지에는 (+)극이 있고 다른 사지에는 (-)극이 위치함

: 세 개의 사지 전극 I, II, III은 오른팔(RA), 왼팔(LA), 왼다리(LL)에서 아인트호벤 삼각형 (Einthoven’s Triangle)을 형성

: Einthoven’s Law은 Lead II complex가 Leads I 및 III complex의 합과 같으며 II = I + III로 주어짐

: 예를 들면,

     Lead I complex에서 R파는 7mm이고 S파가 2mm인 ECG가있는 경우, R에서 S를 빼면 5mm

     Lead III complex에서 R파는 1mm이고 S파가 16mm인 ECG가있는 경우, S에서 R을 빼면 -15mm

          →Lead II complex에서 위 법칙으로 II = 5 + -15 = -10mm을 얻을 수 있음

 

 

 

 

 

#Reference

1) www.youtube.com/watch?v=tTwld2jNy28&list=PUUmD__F0ZGrvbDa92dR76qQ&index=2

2) thephysiologist.org/study-materials/the-ecg-leads-polarity-and-einthovens-triangle/

3) www.medicalopedia.org/2148/electrocardiography-ekg-an-introduction/einthoven-triangle-ecg/

 

 

 

아인트호벤 삼각형 (Einthoven’s Triangle)

end

BioinformaticsAndMe

 

 

 

심전도의 3가지 규칙

start

BioinformaticsAndMe

 

 

 

 

 

 

Three Basic “Laws” of Electrocardiography


1. 첫번째 규칙 (A 그림)

: 탈분극의 wave가 해당 Lead의 (+)극으로 확산되면, 모든 Lead에서 positive(upward) deflection이 나타남

: 심방 자극 경로가 환자의 왼쪽 아래로 향하면,  Lead II에서 positive P파가 보임

: 심실 자극 경로가 환자의 왼쪽 아래로 향하면, Lead I에서 positive R파가 보임

2. 두번째 규칙 (B 그림)
: 탈분극의 wave가 해당 Lead의 (-)극으로 확산되면(또는 (+)극에서 멀어짐), 모든 Lead에서 negative(downward) deflection이 나타남

: 심방 자극 경로가 환자의 왼쪽 아래로 향하면,  Lead aVR에서 negative P파가 보임

: 심실 자극 경로가 Lead의 (+)극에서 완전히 멀어지면, negative QRS complex가 보임

 3. 세번째 규칙 (C 그림)
: 탈분극 경로가 Lead에 대해 직각(수직)으로 향하는 경우, biphasic deflection이 나타남 (동일한 크기의 positive, negative delfection으로 구성)

: 심방 자극 경로가 모든 Lead에 직각으로 퍼지면, 해당 Lead에서 biphasic P 파가 보임

: 심실 자극 경로가 모든 Lead에 직각으로 퍼지면, QRS complex는 biphasic

: biphasic QRS complex는 RS 패턴 또는 QR 패턴으로 구성 될 수 있음

 

 

 

 

 

#Reference

1) doctorlib.info/cardiology/electrocardiography1/5.html

 

 

 

 

심전도의 3가지 규칙

end

BioinformaticsAndMe

 

 

 

심장전도시스템 (cardiac conduction system) ①

start

BioinformaticsAndMe

 

 

 

 

 

 

심박 조율기 세포 (동결절; 동방결절; 박동조율기 세포) 전도 과정


: 심장에는 활동 전위를 생성하는 심박 조율기 세포(Sino-Atrial[SA] node; Sinus node; Pacemaker cell)가 존재

    →자발적으로 리드미컬한 심박수를 설정

수축하는 심장 근세포(심장 근육 섬유; contractile cell; cardiac muscle cell)의 신호는 신경계에서 직접 오는 것이 아니라 SA node의 심박 조율기 세포에서 시작함

    →심장의 전기 공급원(Origin of Life)

: SA node의 세포는 심방 근세포를 탈분극시킴

: 힘을 발생시키는 심장 근세포는 간극연접(gap junction)에 의해 서로 연결

    한 세포의 탈분극이 인접한 세포로 빠르게 확산되고, 활동 전위는 심방 근세포의 막에 의해 생성됨

: 위 그림에서 심방 주위에 표시된 녹색 섬유는 활동 전위를 방실 결절(Atrioventricular[AV] node)로 전도

: 심박 조율기 세포(Sinus node)는 아래 Phase 4에서 slow spontaneous depolarization함으로써 자동능을 갖음

    →심박수(Heart rate) 조절

 

: 전체적인 심장 전기 흐름의 방향은 '우상  좌하'

 

 

 

방실결절, 히스다발 전도과정은 아래 참조

심장전도시스템 (cardiac conduction system) ②

 

 

 

#Reference

1) www.quora.com/Does-the-cardiac-conduction-system-work-more-like-nerves-or-more-like-wires

2) www.youtube.com/watch?v=7NRuLlgI1zM&list=PUUmD__F0ZGrvbDa92dR76qQ

3) www.slideserve.com/alaric/arrhythmias

 

 

 

 

심장전도시스템 (cardiac conduction system)

end

BioinformaticsAndMe

 

 

 

[R] Neuroimaging Analysis

Start

BioinformaticsAndMe

 

 

 

 

 

 

Neuroconductor


: Neuroconductor는 재현 가능한 이미징 소프트웨어의 오픈 소스 플랫폼
: 이미지 분석 전용 R 소프트웨어의 중앙 저장소를 제공
: 프로그래밍 언어 R을 기반

: 시각화, 데이터 처리 및 저장, 통계적 추론을 포함한 이미징 영역 관련 수많은 패키지들을 보유

: Neuroconductor는 공식적인 테스트를 거쳐 새로운 R 패키지 submit을 허용함

 

 

 

1. Packages download


oro.nifti - reading/writing NIfTI images

 *NIfTI(Neuroimaging Informatics Technology Initiative): 자기 공명 영상 기법을 사용하여 얻은 뇌 영상 데이터 형식
neurobase - extends oro.nifti and provides helpful imaging functions

install.packages("oro.nifti")
install.packages("neurobase")
library(oro.nifti)
library(neurobase)

 

 

 

2. Display neuroimaging


연습용 데이터 다운로드

ortho2 - displays nifti objects in 3 different planes (sagittal, coronal, transverse)

 

t1 = neurobase::readnii("./Raw_data/training01_01_t1.nii.gz")
neurobase::ortho2(t1)

이미지를 밝게 설정

ortho2(robust_window(t1, probs = c(0, 0.975)))

 

 

 

3. Display multiple neuroimaging


double_ortho - 동일한 크기의 이미지 2 개를 나란히 표시

double_ortho(t1, y = t1 > 300, col.y = "white")

 

 

 

4. Display specific neuroimaging


slice - 개별 슬라이스를 플롯팅 (아래는 sagittal까지 지정)

oro.nifti::slice(t1, z = 125, plane = "sagittal")

 

 

 

5. Function 정리


ortho2 - show orthographic images (and with overlays)
image - shows multiple slices of an image
slice - shows only specified slices
slice_overlay - similar to image but with an overlay
double_ortho - similar to ortho2 but side-by-side
robust_window - good for setting high values to not so high

 

 

 

 

 

#Reference

1) http://www.kjg.or.kr/journal/view.html?uid=3528&vmd=Fullneuroconductor.org/

2) johnmuschelli.com/imaging_in_r/

 

 

 

 

[R] Neuroimaging Analysis

End

BioinformaticsAndMe

+ Recent posts