지난 글에서는 의생명정보학의 정의 및 다른 학문들과의 관계에 대해 간략히 살펴보았습니다. 이번 글에서는 어떤 컴퓨터 언어 (프로그래밍)를 미리 익혀 두어야 하는지에 대해 소개하려 합니다.
이번 글에서는 조금 생물정보학에 중점을 두고 얘기한 부분이 많은데, 의료정보학과 보건정보학에 대해서도 다음 글에서 깊게 소개할 예정입니다.
- 의생명정보학을 공부하기 위해서 컴퓨터 과학 지식은 얼마나 필요한가?
앞서
연재 1편에서 설명했듯이, 의생명정보학은 생물학, 의학, 데이터 과학의 융합 학문이기 때문에, 컴퓨터 과학 지식은 필수입니다. 생물, 의학, 보건 데이터를 어떻게 수집하고, 저장하고, 처리하고, 분석하며, 해석할 것인지에 초점을 두기 때문에 컴퓨터 과학 지식이 없다면 대학원 수업과 연구를 수행할 수 없습니다. 의생명정보학 연구는 반드시 컴퓨터 과학 지식을 기반으로 하는 계산 도구, 알고리즘, 그리고 데이터 구조에 의존합니다.
일단 기본적으로 R 또는 Python 중에 한 가지는 반드시 먼저 배우고 대학원에 입학해야 합니다. 의료정보학을 공부한다면 Java 또는 MATLAB을 사용해야 할 수 있습니다. 생물정보학을 공부한다면 High Performance Computing (HPC 또는 슈퍼컴퓨터)를 사용해야 하니, Bash/Shell 그리고 Slurm, AWS CLI 명령어를 미리 익혀야 합니다. 그리고 더 배울 시간적 여유가 있다면, 데이터베이스 언어 (SQL, data model), 통계학, 데이터 분석을 미리 배울 것을 추천합니다.
이미 다른 연재자분들께서 생물정보학을 공부하기 위해 어떤 컴퓨터 언어를 배워야 하는지 상세하게 설명해 주셨습니다.
- 의생명정보학에서는 어떤 컴퓨터 언어가 많이 사용되는가?
아래 표에서는 의생명정보학은 세부 분야인 생물정보학, 의료정보학, 보건정보학에서 주로 이용하는 컴퓨터 언어 또는 도구들을 용도와 함께 설명하였습니다. 보편적으로 많이 사용되는 언어들만 표에 담았기에 컴퓨터 과학을 잘 모르시는 분들도 들어봤을 용어들입니다. 제 경험에 비추어 봤을 때, 적어도 생물정보학에서는 Python보다는 R이 좀 더 많이 사용되며, Python은 R 보다 배우기 조금 쉽고, 컴퓨터 언어를 한 두 개 이해한다면 다른 Uinix/Linux, Bash/Shell, Nextflow, AWS CLI 등의 언어도 금방 배울 수 있습니다.
표 1. 의생명정보학 연구에 필요한 컴퓨터 언어 및 도구 (생물정보학에서 더욱 필수 언어들)
표 2. 의료정보학 연구 시 더욱 필요한 컴퓨터 언어 및 도구
표 3. 보건정보학 연구 시 더욱 필요한 컴퓨터 언어 및 도구
그림 1. 의생명정보학을 공부하기 위해 필요한 컴퓨터 언어들
전부 다 익히기에는 너무 많고, 필수 컴퓨터 언어 2~3개를 골라 익힌 후, 다른 필요한 언어들을 조금씩 스스로 배워가야 합니다.
생물정보학에 관심이 많을 듯하여, 잠시 현대 분자생물학 연구에 컴퓨터 언어 (코딩)이 얼마나 필수적인지 조금 얘기해 보겠습니다.
- 어느 것이 배우기 더 어려울까: 컴퓨터 언어 (코딩) vs 의생명/생물 지식
컴퓨터 과학자와 생물학자/의학자(의사) 간에 오랜 된 흥미로운 논쟁 하나가 있습니다. “생물학자/의학자가 컴퓨터 언어 또는 코딩을 배우는 게 더 어려울까? 아니면 컴퓨터 과학자가 유전자/단백질 발현, 지놈, 돌연변이 등의 생물학/유전체학 지식 또는 의학을 배우는 게 더 어려울까?” 컴퓨터 과학자 생물학자, 각자의 분야에서 하고 싶은 말이 많을 겁니다. 이 질문은 컴퓨터 과학자에게 하면 돌아오는 대답은 “생물학 지식을 배우는 게 더 어렵다. 유전학과 유전체학의 차이가 뭔지 모르겠다. 코딩은 그냥 컴퓨터 문법 조금만 익히면 30분 만에 이해할 수 있다.”라고 합니다. 같은 질문을 분자생물학자에게 하면 돌아오는 대답은 “컴퓨터 코딩은 알파벳을 사용하지만 마치 외계어를 보는 것 같다. Input data를 어떻게 만들어야 컴퓨터가 받아들일 수 있는지 모르겠다. 에러 메시지가 뜨면 정말 너무 무섭고 어떻게 해결해야 할지 정말 막막하다.”라고 합니다.
제 경험으로 비추어 봤을 때, 생물학자 머릿속에 코딩이나, 알고리즘, 데이터 구조 지식을 넣는 것은, 컴퓨터 과학을 공부한 학자에게 생물학 지식을 넣는 것보다 조금 더 많이 어려웠습니다. 생물학자들이 코딩을 익히고 생물정보학 분야 연구에서 빠른 시간에 성과를 만드는 건 쉽지 않았습니다. 코딩 경험이 없는 연구자가 코딩을 배우는 건 지식을 배운 다기 보다, 전혀 배운 적 없는 유럽이나 아프리카의 언어/문법을, 나아가 문화까지 배워야 하는 것처럼 어려워했습니다.
반면에 컴퓨터 과학자는 생물정보학 연구를 할 때, 생물학/의학 지식을 빨리 습득할 필요가 없었으며, 생물학 지식이 부족해도 빠른 코딩을 이용하여 연구 책임자 (Principal Investigator, PI)가 생각하는 방향으로 연구를 진행하고 분석 결과를 만드는데 수월하였습니다. 컴퓨터 과학자들 역시, 암/질병의 원인, 유전자 (Gene) 발현, 전사 (transcription), 돌연변이 (mutation), DNA sequencing 등의 개념을 이해하는 데 어색해하였지만, 조금 공부하면 이해하면서 연구를 진행하는 것을 많이 보았습니다.
그래서 의생명정보학 연구 책임자들은 대학원생 입학 시 학부 전공으로 생물학을 공부한 학생보다는 컴퓨터 과학을 공부한 학생을 더 선호합니다. (경험에 의한 의견입니다.)
- 현대 분자생물학 실험실에서 컴퓨터 과학 또는 코딩 기술은 얼마나 필요한가?
순수 생물학 실험실 (wet-lab)과 순수 생물정보학 실험실 (dry-lab) 간의 협력 연구에서도 비슷한 예를 볼 수 있습니다. 현대 많은 분자생물학 실험실에서 시퀀싱 데이터 (Sequencing data) 예를 들면 bulk RNA-seq, scRNA-seq, scATAC-seq, scWGS를 많이 생성하고 있습니다. 만약, 실험실이 wet-lab인데, 연구 과정에서 시퀀싱 데이터를 만들었다면, 생물정보학 전공 학자 또는 코딩 기술이 있는 연구자가 없는 경우, 데이터 분석을 위해 외부 생물정보학자의 도움을 받아야 합니다. 시퀀싱 데이터를 항시 생성하고, 생물정보학 분석이 항상 필요하다면, 생물정보학 포닥 또는 연구원을 고용하거나, 대학원생을 생물정보학으로 훈련시킬 겁니다.
그러나 실험 진행 상황에 따라 1년에 한 번 시퀀싱 데이터를 생성하는 실험실이라면, 생물정보학자가 항상 필요한 게 아니기 때문에, 정규직으로 고용하기 부담스럽습니다. 대학교 내 시퀀싱 데이터 분석 기관 (Bioinformatics core)에 연구비를 지불하고 분석 결과를 받으려니 비용도 많이 들고, 원하는 방향으로 추가 분석을 요구하기도 쉽지 않습니다. 어떻게 이런 분석 결과가 나왔는지 설명을 듣기도 쉽지 않습니다. 따라서, 많은 wet-lab의 경우, dry-lab에 접촉하여 공동연구를 제안합니다. 그러나 요청이 들어온 web-lab과 특별한 친분이 없거나 이해관계가 없다면, dry-lab에서는 상황에 따라 wet-lab의 공동 연구 제안을 거절하기도 합니다. (이 문제는 Co-authorship에 관한 얘기로 흘러갈 수 있는데, “
논문 저자 순서 결정 시 생기는 갈등: 누가 제1 저자가 되어야 하는가?” 에서 좀 더 얘기해 보려 합니다.)
반대로, 순수 생물정보학 실험실 (dry-lab)에서는 연구 중에 생물학자나 의학자의 도움이 필요한 경우가 상대적으로 많지 않았습니다. 생물학 지식이 필요할 때는 논문을 읽거나 분자생물학자와 잠깐의 대화로 해결하곤 합니다. Dry-lab에서 시퀀싱 데이터 분석을 통해 얻은 생물학적 발견을 wet-lab 실험을 통해 검증 (Validation) 하고자 할 때, 분자 생물학 연구자의 도움이 필요하나, 흔하지는 않습니다. Wet-lab 실험실 검증은 건너뛰고, NCBI Database of Genotypes and Phenotypes (dbGaP) 또는 European Genome-Phenome Archive (EGA)에 저장된 공용 시퀀싱 데이터를 다운 받아, 검증 목적으로 사용하는 경우가 많습니다. Wet-lab 실험 검증은 오랜 시간이 걸리지만, public data 다운로드 받아 검증하는 건 상대적으로 빠른 시간에 해결할 수 있습니다. (제 경험에 따른 의견일 수 있으니, 혹시 다른 이견 있으면 댓글 달아 주세요.)
다음 글에서는 미국의 의생명정보학과 대학원에서 배우는 수업 과목들에 대해 소개하겠습니다.