2020년 4월 8일 수요일

R에서 GO.db 패키지를 설치하다가 SSL 인증서 문제를 만났을 때 해결 방법

웹프록시 서버 뒤편에서 '안전하게' 보호된 사내 전산망을 통해 작업을 하다 보면 어려움을 겪는 일이 참 많다. 윈도우가 설치된 PC에서는 별 문제가 없다고 느끼지만, 리눅스 머신에서 https://로 시작하는 주소로부터 wget을 한다거나, pip를 실행할 때에는 파일 전송이 막혀서 정말 답답한 순간을 겪게 된다. 전산망 관리자가 이 모든 현상 혹은 작업의 중요성을 다 이해하고 있는 것도 아니다. 이러한 문제를 해결하는 방법을 지난 일년 동안 내 블로그에서 여러 차례 글로 기록한바 있다.

이번에는 R 환경 안에서 GO.db를 설치하는데 애를 먹었다. RNA-seq 데이터를 다루는데 통달한 사람이라면 늘 Bioconductor를 끼고 살 터이고, '이쯤이야 뭐 식은 죽 먹기지'하면서 쉽게 해결하겠지만 이러한 자료에 대한 작업 빈도가 높지 않은 나와 같은 사람에게는 다른 이야기이다. 몇 년 전에 초보적인 microarray 자료 작업을 조금 하면서 Bioconductor를 잠깐 썼던 것 같고, 그 이후에는 R의 일반적인 사용 방법을 익히고 실무에 활용하는 것에 집중했을 뿐이다. 정확히 말하면 이번의 문제는 Bioconductor와는 직접적인 관계가 없는지도 모른다.

R 버전 3.6.0에서 다음을 입력하면 GO.db 패키지를 설치할 수 있다고 한다.

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("GO.db")

그러나 내가 만난 것은 다음과 같은 에러 메시지 뿐이었다.

file(con, "r")에서 경고가 발생했습니다 :
  URL 'https://bioconductor.org/config.yaml': status was 'Problem with the SSL CA cert (path? access rights?)'

정말 지긋지긋한 SSL CA cert 관련 에러다. GO.db는 bioconda에서 패키지명 bioconductor-go.db로 제공한다고 하니 conda install 명령어를 쓰면 잘 될 것이 생각했지만, Solving environment: 상태에서 더 이상 진도가 나가지 않았다. 자, 검색을 해 보자. 어디든 방법이 있겠지. GitHub의 Bioconductor 사이트에서 해결의 실마리를 찾았다.

Guidance on solving SSL error?

여기에서 설명한대로 R 프롬프트에서 'httr::set_config(httr::config(ssl_verifypeer=0L))' 명령을 실행한 다음 GO.db 설치 명령어를 날리니까 비로소 에러 없이 진행되었다. httr::set_config() 함수가 httr configuration을 영구적으로 보관하는지 혹은 R 세션 종료와 함께 사라지는지는 아직까지 잘 모르겠다. 내가 원하는 것은 GO ID와 description이 수록된 tab-delimited text file이다. R 환경에서 다음 명령어를 실행하면 된다.

> library(GO.db)
> goterms <- Term(GOTERM)
> write.table(goterms, sep="\t", file="goterms.txt",col.names=F,quote=F)

출력을 하니 45,000 줄이 넘는다. 나에게 당장 필요한 것은 이 파일 하나뿐이지만, GO.db가 할 수 있는 일은 훨씬 많을 것이다. GO ID의 목록이 있다면 Blast2GO용 annot file을 임시로 만들어서 GO description을 가져오는 꼼수를 부릴 수도 있다. annot 파일의 형식이 워낙 단순하니 가능한 일이다. SeqName 대신 적절한 부여하고, 한 라인에 하나씩의 GO ID를 넣은 annot 파일을 만들어서 임포트한 뒤 Export Table 기능을 이용하면 된다.

댓글 없음: