코딩 공부 기록


본 글은 대학병원 재활의학과 교수가 취미처럼 프로그래밍 언어를 공부(해보려고)하는 글
20230325 류마티스 학회 강의 차 올라가는 SRT 기차에서 작성

2018년 서울대 펠로우 시절 메인 연구 주제를 노인 근감소증 환자들에게 fitbit 을 손목에 채우고 코호트를 구축하는 업무를 맡았었다.

해당 연구는 fitbit을 통해 신체활동도(physical activity)를 수집하긴 하지만 대부분은 많은 시간을 들여서 데이터만을 수집하는 노가다 업무에 해당했고, 실제로 데이터는 분석해보지도 못하고 다음 전임의에게 인수인계만을 열심히 했다.

한창 바쁘게 데이터를 모으다가 6월 말 쯤,
은사님께서 무릎 관절 데이터가 남는데 분석을 해보면 좋을 것 같다는 말씀을 지나가듯이 하셨고, 제가 해보겠다고 말씀 드렸다.
(당시 서울대병원에는 관절 주사를 하면서 동시에 관절 내 압력을 측정할 수 있는 기기가 있었다.
해당 술기는 유착성 관절낭염, 흔히 오십견이라고 불리는 환자들에게서 관절 내 압력을 측정하면서 관절주사와 동시에 멸균생리식염수를 주사하여, 관절막을 파열시키지 않으면서 최대의 팽창치료 효과를 얻을 수 있는 치료 방법이다.)

당시 코딩에는 완전 문외한이었다. 결과적으로 해당 데이터는 관절 내부의 팽창에 따른 압력의 증가를 1초에 200번 측정한 시계열 데이터로 최종적으로는 관절막의 경직도, 관절 팽창 전의 여유공간에 대한 정보를 가진 데이터였다.

매일 새벽까지, 버티기만 해도 성장했던 그 바쁜 한 가운데서, 정신 에너지가 다 소비된 상황에서도 흥미가 돋았던 것 같다. 돌이켜보니, 은사님께 뭔가 증명해야 할 것 같은 마음이 반, 소위 분석tool이 재밌어 보였던 것이 반이었다고 생각된다.

실제로 당시에는 데이터의 전처리와 시각화를 위한 지식이 없었다. 그런데 서울대에서는 matlab 이라는 유료 프로그램을 쓰고 있었고, matlab은 내가 처음으로 마주한 프로그램 언어와 IDE 였다. 지금은 문법이 하나도 생각이 안난다..

하지만 유료프로그램에 걸맞게 matlab은간단한 시계열 데이터는 코드를 몰라도 그래프를 대충 그려볼 수 있었다. UI가 뛰어났다고 할까.. 이는 행운이었는데 일단 이해는 하나도 못할지라도 이것저것 구글링하면서 매우 비효율적이지만 그래프를 그리고 데이터를 만져 볼 수 있었고, 이 과정을 짬 날 때마다 틈틈이 했다.
이렇게 프로젝트 하나를 꾸역꾸역 해내면서 해당 코딩을 실전에서 써보고, 그때 그때 찾아서 배우는 것이 현재도 내가 하는 방식이다.. 코드 작성하는 습관이 잘못 들어서 매번 양식이 엉망이 되는 것은 아닌가 걱정은 들었지만, 하나하나 문법부터 시작할 여유도, 능력도 없었던 것 같다.

결국 무릎의 골관절염에서의 활액막 강직과 초기 여유공간의 감소를 데이터로 확인하고 보고할 수 있었고, 해당 연구는 2018년 겨울 라스베가스에서 진행된 Orthopaedic summit 학회와 2019년 국내 초음파학회에서 발표하고 최우수구연상을 받았다.

그리고 2019년 고신대로 내려와서 어떤 언어를 공부해볼까 고민하다가 의료 통계에도 사용할 수 있는(무료라서) R 을 유튜브 등으로 공부하기 시작했고, 무릎 팽창 논문에 작성한 누더기 matlab 코드를 전부 R로 새로 작성해보았고 (여전히 형편없었지만), 그래프의 변곡점을 잡고, 노이즈를 제거하고, 그래프를 부드럽게 만들기 위한 LOESS function 등도 사용해보았다.

인체의 연조직(힘줄, 인대, 근육, 활막, 관절막 등등)은 모두 점탄성(Viscoelasticity)을 가지고 있고, 스트레스가 가해지면 유지되다가 상승되기 시작하는 토리전(toe region)을 지나서 조직이 갖고 있는 경직도에 따라 특정 기울기를 가지고 상승하는 비선형적인 그래프를 보이는데, 이를 시각화하고 phase를 나누었다. 누구에게는 매우 쉬운 과제였을 수도 있는데, 주사 중간에 주사기 바늘이 관절막에 닿거나, 환자의 무릎이 움직일 때 발생한 것으로 보이는 노이즈들이 있어서 그런 것들을 처리하는 것이 어렵기도 했다.. 그리고 토리전을 수학적으로 정의하는 것도 어려운 부분이었다.

어쨌든 해당 연구는 2022년 7월 JOR에 실렸고, 해당 논문은 다른 높은 IF 저널에서 reject 되면서 review를 한 번 받기는 했는데, 주로 임상의학 위주로 실리는 저널이었고, 다듬어서 JOR에 투고할 때는 한 번의 revision 도 없이 바로 accept 되었었다. 그 때의 기분은 참 짜릿했다.

어쨌든 그리고 나서 프로그램 언어를 좀 사용할 줄 알면 쓸 일이 여기저기 있겠다는 생각이 들었고, 여기저기 가끔 한번 씩 있는 의료인공지능학회 강의 혹은 산발적으로 열리는 강의들을 들었는데 개념공부 수준에서 멈춰있었고..
2020년에 한 번 떨어진 한국보건복지인력개발원 의료 인공지능 데이터 분석 기본과정을 2021년에는 뽑혀서 듣고 수료했는데, 역시 개념공부 수준이었던 것 같다.
2022년에는 부경대 인공지능 융합학과 대학원에 진학했고, 대학원 과정에서 R을 사용한 기초 데이터 정리를 배웠고, 이번 학기에는 파이썬 기초 수업도 듣고 있다.
작년 R 수업 듣고 나서 작성했던 코드는 내가 봐도 조금은 깔끔해졌(었)긴 한데, 지금은 또 다 까먹어서 다시 그렇게 작성하지 못한다.. 파이썬 수업에서 교수님이 1년 전 작성한 코드를 보면 처음 보는 것 같으니 꼭 주석을 달아 놓으라는 말에 내심 위안을 얻었다.
(R로 작성한 코드는 어깨 방사선사진에서 석회화건염의 질감 혹은 공간적 특성을 간단히 정량적으로 분석해 보고자 했다.. 곧 논문으로 출판할 수 있기를 바란다.)

이 후 좋은 기회로 이번에는 다른 성질의 생체데이터에 대한 연구를 시작하게 되었고, 학점이수는 파이썬, R, 확률, HCI, 그 외 인공지능 관련 강의들로 이수 중인데.. 의과대학/재활의학회 업무와 병행하는 것이 참 쉽지만은 않다..

현재는 코드를 통계/시각화/정량적인 parameter의 발굴에 활용하는 수준이고,
앞으로는 실제 진료현장에 적용하거나 혹은 연구에서 제대로 사용할 수 있는 수준으로 발전이 다음 목표이다.
물론 인공지능 논문까지 융합연구 없이 혼자서 진행 할 수 있다면 좋겠지만, 아마도 불가능하거나 시간효율이 매우 떨어지는 일일 것 같다. 기초 수학과 공학지식을 공부하는 것도 조금 겁이 난다. 다만 Chat-GPT 가 코드 오류 수정을 해줘서 그나마 선생님이 있는 것 같긴 하다. 그리고 이번 학기에 수강하는 HCI는 사람과 컴퓨터간의 인터페이스에 대한 내용이다 보니, 재활의학과에서 활용할 만한 아이디어만 생긴다면 한번 연구 주제로 삼는 것도 좋을 것 같은 생각도 든다.

데이터 정리할 것도 많은데 일단 미루고 오랜만에 블로그 글을 작성해봤다..

다음엔 외래 진료 자동화를 위해서 활용하고 있는 workflow 를 좀 정리해서 올려볼까한다.

그리고 노트앱으로 원노트에서 옵시디언으로 옮겼는데, 만족스럽게 사용하고 있는데, 이것도 정리해볼까 싶다.
옵시디언 인터넷 출판은 유료라서.. 네이버 블로그로 쉽게 변환하는 방법도 한번 찾아봐야겠다.

🔗LINKS TO THIS PAGE


Comments