공개 과학 (Open Science)
Overview
Teaching: 5 min
Exercises: 5 minQuestions
버전 제어가 나의 작업을 어떻게 더 공개될 수 있도록 도울까?
Objectives
컴퓨터 작업에서 버젼제어 시스템이 전자연구노트로 영향력을 어떻게 발휘될 수 있는지 설명한다.
“공개(open)”의 반대는 “폐쇄(closed)”가 아니다. “공개(open)”의 반대는 “망한(broken)” 것이다. The opposite of “open” isn’t “closed”. The opposite of “open” is “broken”.
— John Wilbanks
정보의 자유 공유는 과학에서 이상적일지 모르지만, 현실은 좀더 복잡하다. 현재, 보통 실무사례는 다음과 같다:
- 과학자가 데이터를 수집하고 학과에 가끔 백업되는 컴퓨터에 저장한다.
- 데이터를 분석하기 위해서 작은 프로그램을 작성하고 수정한다. (프로그램도 연구원의 로컬 노트북에 저장된다.)
- 적당한 분석 결과가 생성되자 마자, 작성해서 논문을 제출한다. 데이터를 논문에 포함할 수도 있다. (점점 많은 저널이 데이터를 요구한다.) 하지만, 아마도 프로그램 코드는 포함하지 않을 것이다.
- 시간이 흐른다.
- 저널에서는 연구원 분야의 익명으로된 소수의 사람들에게서 받아 검토(review)결과를 보낸다. 검토 결과를 충족하도록 논문을 수정한다. 수정하는 동안에 앞서 작성한 프로그램, 스크립트를 변경해서 다시 제출한다.
- 좀더 많은 시간이 흐른다.
- 종국에 논문이 출판된다. 논문에 데이터 온라인 사본 링크를 포함할 수도 있다. 하지만, 논문은 유료로 돈을 내야만 접근가능하다는 장벽(paywall)에 막혀있다: 개인 혹은 기관 접근 권한을 가진 사람만이 논문을 읽을 수 있다.
하지만, 점점 더 많은 과학자들에게, 프로세스는 다음과 같다:
- 과학자가 수집한 데이터가 수집되는 즉시, figshare 혹은 Zenodo같은 공개 접근 저장소에 저장된다. 그리고 디지털 객체 식별자(Digital Object Identifier, DOI)가 부여된다. 혹은 데이터를 이미 게시하고 Dryad에 저장한다.
- 과학자가 작업물을 보관할 저장소를 GitHub에 생성한다.
- 분석작업을 수행하면서, 스크립트의 변경사항을 (아마도 몇몇 산출 결과도 포함해서) 저장소에 푸쉬한다. 논문을 위한 저장소를 다목적으로 사용한다; 이 저장소가 다른 동료 과학자와 협업하는 허브가 된다.
- 논문 상태에 만족할 정도로 진행되면, arXiv 혹은 다른 사전 출력 서비스에 게시하고, 다른 동료 과학자를 초대해서 피드백을 받는다.
- 피드백에 기초해서 저널에 논문을 마지막으로 제출하기 전 몇번의 수정사항을 게시할 수도 있다.
- 출판된 논문은 사전출판논문, 코드, 그리고 데이터 저장소의 링크를 포함한다. 그렇게 함으로써 다른 과학자가 본인 연구의 시작점으로 삼아서 연구를 쉽게 연결해서 수행할 수 있게 된다.
이러한 공개 연구 모형은 발견을 가속시킨다. 연구 작업이 더 많이 공개될수록, 더 많이 인용되고 재사용된다(the more widely it is cited and re-used). 하지만, 이런 방식으로 작업하고 연구하고자 하는 사람들은 실무에서 “공개(open)”가 정확하게 의미하는 바에 대해서 몇가지 결정을 내릴 필요가 있다. 공개 과학(Open Science)에 관한 다른 측면에 대해서 이 책을 참고한다.
이것이 버젼 제어(version control)를 가르치는 (많은) 이유 중의 하나다. 버젼제어가 꾸준히 사용될 때, 컴퓨터 작업에 대한 공유가능한 전자연구노트로 활동함으로써 “방법”에 대한 질문에 답을 한다:
- 누가 언제 무엇을 했는지를 포함해서, 작업에 대한 개념적 단계가 문서화된다. 모든 단계는 (커밋 ID)식별자로 도장이 찍힌다. 식별자는 의도와 목적을 갖는 중복되지 않고 유일하다.
- 정당성(rationale), 아이디어, 다른 지적 작업에 대한 문서화를 이것에서 파생된 변경사항과 묶을 수 있다.
- 중복되지 않고 유일하며 복구가능한 방식으로 컴퓨터 작업 결과물을 얻어서 연구에 사용할 것을 조회할 수 있다.
- Git같은 분산된 버젼제어 시스템으로, 버젼제어 저장소는 영속성을 쉽게 얻을 수 있고, 전체 이력을 담아낼 수 있다.
코드를 인용가능하게 만들기
버젼제어 저장소에 올라온 모든 것(데이터, 코드, 논문 등)은 인용가능한 객체로 변환시킬 수 있다. lesson 12: 인용(Citation)에서 인용하는 방법에 대해서 학습하게 된다.
내 작업을 어떻게 재현가능하게 만들 수 있을까?
연구실 동료중 한명에게 논문에 나온 내용과 웹으로만 최근에 본인이 성취한 결과를 재현할 수 있는지 물어본다. 동료 결과물 중 하나에 대해서도 같은 작업을 수행해 본다. 그리고 나서, 일하고 있는 연구실에 나온 결과물에 대해서도 시도를 해본다.
적절한 데이터 저장소를 찾는 방법?
2~3분정도 인터넷을 검색하고 앞에서 언급된 데이터 저장소를 조사해 본다: Figshare, Zenodo, Dryad. 전공분야에 따라, 본인 전공분야별로 잘 알려진 저장소가 도움이 될 수 있다. Nature에서 추천한 데이터 저장소도 유용할 수 있다.
주변 동료와 현재 작업에 사용하고 있는 데이터 저장소에 대해서 토론해 보고, 이유도 설명해 보자.
Key Points
공개 과학 작업은 폐쇄적인 과학 작업보다 더 유용하고 더 많이 인용된다.