2021년 4월 28일 수요일

TORMES의 샘플 수가 오락가락한 이유는 metadata file에 들어간 작은 따옴표 때문이었다

TORMES v1.2.1은 어렵게 설치하고 테스트를 하면서 분석에 투입한 샘플이 제대로 다 결과에 반영되지 않는 현상을 기이하게 생각하면서 원인을 찾고자 며칠을 허비하였다. 텍스트로 구성된 샘플 metadata 파일에 문제가 있을 것이라 생각하면서 이러저러한 조합으로 계속 시험을 해 본 결과 원인은 아주 간단한 곳에 있었다. Description을 적는 컬럼에 따옴표가 들어간 것이 문제였던 것이다. 

ABC company's lead strain

신약 개발에서 lead compound라는 용어가 쓰이듯, 프로바이오틱스 혹은 미생물 치료제 개발 분야에서도 lead strain이라는 용어가 쓰이는 것을 알고 있다. 위에 보인 사례에서는 사실 소유격을 표시하는 특수문자이므로 아포스트로피(apostrophe)가 맞지만, 현재는 키보드 엔터키 왼쪽의 작은 따옴표와 혼용되고 있다.

이것을 R로 읽어 들이면서 문제가 되었던 것이다. 만약 분석에 사용할 metadata 파일이 정상인지 알고 싶다면 R에서 다음과 같이 입력해 보라.

> data=read.table("metadata.txt", header = T, sep = "\t", dec = ".", check.names = FALSE)

아무런 에러가 나오지 말아야 한다. 아포스트로피를 살리고 싶다면 다음과 같이 큰따옴표로 둘러싸서 입력하면 된다.

ABC company"'"s lead strain

실제 사례를 보자.

$ cat metadata.txt 
Samples	Read1	Read2	Description
XYZ01	GENOME	genomes/xyz.fasta	GenoGlobe's lead strain
JCM30893	GENOME	genomes/JCM_30893.fasta	JCM 30893 strain (a Japanese isolate)
ATCC_BAA-835T	GENOME	genomes/ATCC_BAA-835T.fasta	ATCC BAA-835T (type strain, aka Muc)
KGMB02009	GENOME	genomes/test.fasta	SAMN18309827 (a South Korean isoalate)
$ R
> data=read.table("meta.txt", header = T, sep = "\t", dec = ".", check.names = FALSE)
경고메시지(들): 
In read.table("metadata.txt", header = T, sep = "\t", dec = ".", check.names = FALSE) :
  'meta.txt'에서 readTableHeader에 의하여 발견된 완성되지 않은 마지막 라인입니다
> data
        Samples  Read1                       Read2
1 ATCC_BAA-835T GENOME genomes/ATCC_BAA-835T.fasta
2     KGMB02009 GENOME          genomes/test.fasta
                             Description
1   ATCC BAA-835T (type strain, aka Muc)
2 SAMN18309827 (a South Korean isoalate)

Metadata 파일에는 분명히 4개의 샘플을 선언하였지만 data 데이터프레임에는 단 2개가 남았다. 파일에 따라서는 '따옴표로 묶인 문자열내에 EOF가 있습니다'라는 약간 다른 형태의 경고메시지가 나오기도 한다. 그러나 '를 "'"로 바꾸면 경고메시지가 나오지 않는다.

균주에 따라서는 MLST 분석 결과가 나오지 않을 수도 있다. Assembled genome sequence를 입력했다면 Assembly statistic 항목을 리포트에 표시할 필요가 없다. 리포트에서 불필요한 섹션을 제거하려면 결과 파일 report_files.tgz의 압축을 해제하여 나오는 tormes_report.Rmd 파일을 적절히 수정한 다음, render_report.sh 스크립트를 돌리면 된다. 이 스크립트 역시 report_files.tgz에 포함되어 있다.

Bactopia: a flexible pipeline for complete analysis of bacterial genomes(mBio 2020)에도 관심을 가지기 시작하였다. 그러나 아직 설치 문제를 해결하지 못했다. https://로 시작하는 URL에 있는 DB 파일을 가져오는 파이썬 스크립트가 말썽을 부린다. 만익 일반 shell script에서 wget 명령으로 파일을 가져오게 하였다면, '--no-check-certificate' 옵션을 달아서 해결하면 되는데, Bactopia에서는 파이썬 스크립트 내에 아예 심어 놓았기 때문이다.  정확히 말하자면 Bactopia 자체는 아니고, 여기에서 같이 다운로드하게 만드는 Sanger Institute의 ARIBA(Antimicrobial Resistance Identification By Assembly)의 레퍼런스 DB 다운로드 및 설치 과정에서 문제를 겪는 것이다.

https, 443번 포트, SSL 인증서... 보안이 적용된 전산망 안에서 일을 하려니 이런 데에서 장애가 생긴다. wget, conda, R 등 서로 다른 계층에서 문제가 발생하고 있으며, 파이썬 스크립트는 또 어떻게 한담? 만약 집에서 똑같은 환경을 구축하면 아무런 문제가 없을 것 같다. 이걸 그대로 복사하여 들고 출근하여 이식을 하면 어떨까?

댓글 없음: