2024년 7월 18일 목요일

K-BDS에 데이터를 등록하는 작업 자체가 새로운 차원의 창작이 될 수도 있다 - 데이터의 복원

게놈 고물상 영업 차원에서 과거 연구 기록물을 뒤져서 재활용이 가능한 것은 국가바이오데이터스테이션(K-BDS)에 등록하느라 짬짬이 등록하느라 애를 먹고 있다. 연구과제 보고서, 논문, 그리고 논문에 부속된 염기서열 등 정보를 GenBank 등 공개된 데이터베이스에 등록한 것. 이 세 가지는 연구 과정을 돌아볼 수 있는 무수한 자료 중에서 극히 일부에 지나지 않는다. K-BDS는 NGS 등 raw data의 등록을 적극 권장하고 있다. 나는 이보다 더 나아가서 연구 노트와 컴퓨터에 남아 있는 중간 형태의 자료를 정리하여 K-BDS에 등록하기 위해 꽤 많은 노력을 들이고 있다.

그 '정리' 작업이라는 것이 상당히 고통스럽다. 그 자체가 리서치 수준에 버금가는 노고와 지적 활동을 요구하기 때문이다. 연구 노트를 뒤적이면서 큰 줄거리만 다시 파악하여 ReadMe 파일을 만들려고 하지만, '이때 왜 이런 PCR을 했었지?'와 같은 세부적인 사항도 가끔씩은 꿰뚫어 봐야 하기 때문이다. 대장균 BL21(DE3)의 유전체 해독처럼 온갖 기법의 시퀀싱 기법을 동원하여 완수했던 프로젝트는 더욱 그렇다. 데이터가 점진적으로 성장하고 발전하는 것이 아니라 마치 애벌레에서 번데기를 거쳐서 나비 성체가 나오듯이 급격한 변화를 겪는 순간들이 있는데, 연구 노트를 다시 펼쳐서 밑줄을 그어 가면서 읽어도 당시의 상황이 쉽게 재구성이 되지 않는다. 2005~2006년의 노트와 컴퓨터에 남은 파일을 대조해 가면서 거의 새로운 수준의 연구를 하는 셈이다.

심지어는 파일 자체를 고쳐야 할 때도 있다. 예를 들어서 어느 ace 파일을 consed에서 열었더니 이런 메시지가 나온다. 

exception thrown: could not open PHD file ../phd_dir/ED229-230_229.1.ab1.phd.2
...
exception thrown: PHD file timestamp mismatch:  ace file says Wed Mar 8 10:40:30 
2006 but PHD file says Fri Nov 24 10:25:49 2006 for read ED100-101_100.1.ab1
Did you use the phredPhrap perl script?  You should.  Click on help in the 
aligned reads window for documentation

두 가지의 예외 상황에 맞닥뜨렸다. 앞의 것은 phd.2 파일(총 42개)이 없다는 것이다. Phd.1은 phred를 처음 실행했을 때 만들어지는 것이고(consed에서 Add New Reads를 실행했을 때도 포함), phd.2부터는 consed에서 크로마토그램의 피크를 직접 보면서 편집을 한 것이 기록된다. ace 파일을 보관하기 위해서 복사하는 과정에서 이런 실수가 남은 것이다. 뒤의 것은 52개의 크로마토그램에 대해서 phd 파일과 ace 파일에 기록된 timestamp가 맞지 않다는 뜻이다. 어떤 이유로 원본 phd 파일이 삭제되고, 이를 나중에 phred로 다시 만들다 보니 이미 존재했던 ace 파일과 불일치가 생겼음을 의미한다. Phd 파일과 ace 파일 둘 중의 하나를 고쳐야 한다. K-BDS에 등록하기 위해 데이터 파일에 '침습적'인 가공을 거쳐야 하다니! 여간 성가신 일이 아니다.

예외 상황 1은 복구 불가, 그러나 예외 상황 2는 약간의 스크립트를 써서 복구 가능... 자, 이를 어찌할 것인가? 예외 상황 1은 완전히 복구가 불가능한 것은 아니다. 원본 크로마토그램은 고스란히 남아 있으니, 누구든지 이를 Add New Read로 넣어 보면 된다. 2번 상황만 고쳐 놓은 뒤, 1번에 이르는 과정은 직접 실습해 볼 수 있게 설명을 잘 달아 놓으면 될 것이다. 

박물관의 유물 복원실에서 늘 하는 일을 상상해 보자. 아무리 철저히 고증을 거친다 해도, 복원은 일종의 창작을 수반하지 않을 수 없다. '손상된 데이터의 복원'에도 이처럼 많은 조사와 궁리, 그리고 구체적인 복원에 따르는 창작 수준의 노력이 들어가야 함을 느꼈다. 그리고 내가 시도하는 복원 그 자체는 데이터의 본질을 훼손하는 것이 아니라고 믿는다. 

그러면 2번 예외 사항에 대한 수정을 해 볼까? 파일로 리다이렉션한 화면 출력을 살펴보니...

more errors, but will not report them

아이고, 어쩌면 52개만 수정하는 것으로 끝날 일이 아닌것 같다. 이 ace 파일 전체에 수록된 430개의 read에 대한 phd file timestamp를 ../phd_dir에 현재 남아 있는 phd 파일의 그것으로 바꿔야 하겠다. 생각보다 일이 점점 많아진다.

모니터 앞에서 점심 도시락 먹으면서 bash BASH/Perl 스크립트로 간단히 해결하였다. 얼마 만에 돌려 보는 regular expression인가! 

댓글 없음: