EKG 에서 V1-V6 까지 QT interval 을 각각 측정해보라는 리뷰어의 지적을 받은 형의 부탁을 받아서 간단하게 QT interval 을 측정할 수 있도록 EKG 이미지를 다루어 보았다. 처음의 생각은 QT interval 까지 측정해 볼 수 있도록 좀 연구를 해볼려고 했는데, T wave가 약한 경우도 많고, 노이즈가 심한 경우도 있고, 전도 장애가 있는 것으로 기계 판독이 나온 경우도 있어서 결국엔 그것은 포기하고 수작업으로 QT interval 을 구하는 방법으로 하되, 그 구하는 과정이 용이하도록 이미지를 조작하는게 더 좋을 것이라는 결론에 이르렀다.
지금 첨부한 그림은 가장 상단에 II, 그 아래로 V1 에서 V3 까지의 심전도를 약간 확대한 다음 QT 간격을 측정할 수 있을 만큼만 적당히 잘라서 붙인 것이다.
이 과정에 사용한 패키지는 총 3개이다.
파일명을 다루는데 사용한 stringr.
PDF 파일을 PS 파일로 변환하고, 이 PS 파일을 다루기 위한 grImport.
PS 파일을 PNG 파일로 변환해서 다루었기 때문에 PNG.
원래 받은 심전도 이미지 파일은 PDF로 되어 있어서 직접 다룰 수가 없었기 때문에 적당한 변환 과정이 필요했다. 우선 리눅스 명령어 중에서 PDF2PS 를 이용하여 PS 파일로 변환하였으며, 이 이미지 파일을 R에서 2배의 크기로 출력한 후 PNG 파일로 저장했고, 이 이미지를 이용했다.
통상의 3 x 4 심전도 출력물에서 각각의 심전도가 위치하는 위치는 고정되어 있기 때문에 적절한 영역을 지정해서 불러왔다. 그 다음 P 에서 T까지 하나의 심전도가 충분히 포함될 수 있도록 중간 부분만을 선택했다.
Lead II 에서는 특징적이라고 할 수 있는 위쪽으로 높은 QRS complex 가 관찰이 되며, 이를 수식으로 찾는것이 가장 쉬울 것이라고 생각했다. 그래프를 분석한 것이 아니라, 각각을 구성하고 있는 점을 기반으로 수식으로 구현하기로 했다. 정상적인 경우라면 R파의 Y축의 값이 거의 항상 최고 값을 가지기 때문에, 이를 기준으로 R 의 위치를 추정할 수 있는 지점을 선택할 수 있다. 이 지점들 앞쪽 부근에서 일정 간격으로 기울기를 구하여 기울기가 일정 범위 이상으로 꾸준히 관찰되는 첫 번째 지점을 Q 파에서 R 로 넘어가는 부분으로 지정하기로 하였다. 이 방법은 꽤나 많은 증례에서 꽤 괜찮은 정도로 Q를 찾아 주었다. Q를 찾았으면 이 위치를 기준으로 나머지 V1에서부터 V3까지 같은 지점을 잘라서 붙이면 된다.
이 알고리즘으로 구할 수 없는 경우를 보면 대부분 left axis deviation 이라는 기계 판독이 나온 경우가 대부분이었다. QRS 의 진폭이 T 보다 작게 나올 경우에도 이 방법을 적용할 수는 없었다.
RStudio Server 버젼을 설치한 이후 처음을 지속적인 계산이 필요한 작업이었는데, 빠른 컴퓨터로 작업을 할 수 있는 장점을 십분 활용할 수 있어서 좋았다.
Leave a Reply