====== Prokaryotic genome analysis manual ======
이 위키 사이트와 블로그에 흩어져 있는 미생물 유전체 분석 관련 정보를 일목요연하게 정리하기가 쉽지 않아서 아예 별도의 문서 체계를 만들기로 하였다. 2019년부터 내부 교육용으로 만들어 계속 업데이트를 해 온 약 130쪽 분량의 문서 파일 '**정해영의 유전체 분석 매뉴얼(v220315)**'을 가져다가 불필요한 부분은 제외하고 Ubuntu 환경에 맞게 손질하여(원래는 CentOS용이었음) 여기에 정리하기로 하였다. 비슷한 목적의 글이 이 위키 사이트 내에 있는 경우 참고를 위하여 인용할 예정이다.
본 매뉴얼은 리눅스 및 R의 기본적인 사용법을 알고 있다는 전제 하에 작성한 것이다. 응용프로그램의 설치 방법은 각 섹션에서 최소한도로 설명하였으며, 가급적 철저하게 테스트를 하고 다시 정리를 하려 노력하였으나 현 시점에서 제대로 작동하지 않을 수도 있다. 다시 말해서 필요한 프로그램은 각자 알아서 설치하는 것을 기본으로 하고 있다. 대부분 bioconda 채널에서 제공하므로 큰 어려움은 없을 것이다. 모든 명령어는 프롬프트를 포함하였고, '#'로 시작하는 주석도 포함하고 있으므로 이를 그대로 복사하여 사용할 때에는 적절히 편집하기 바란다. 간혹 특정 conda environment를 언급한 것도 있으나, 이는 무시하기 바란다.
본문에서 응용프로그램의 이름에 링크된 URL은 대부분 프로그램 배포의 중심이 되는 GitHub repository이다(예: [[https://github.com/tseemann/shovill|shovill]]). Bowtie 2는 [[https://bowtie-bio.sourceforge.net/bowtie2/index.shtml|SourceForge]]를 중심으로 하되 [[https://github.com/BenLangmead/bowtie2|GitHub repository]]를 링크한 체제를 갖는다. Read the Docs를 통해서 구조화된 매뉴얼 문서를 제공하는 경우도 있다(예: [[https://drep.readthedocs.io/en/latest/|dRep]]).
간혹 내가 직접 만든 별볼일 없는 Perl/bash/R script도 소개하였다. 우분투에서는 기본 shell이 bash가 아닌 dash이므로 호환성 문제가 생길 수 있다. shebang line을 '#!/bin/sh'에서 '#!/usr/bin/bash' 또는 '#!/usr/bin/env bash'로 바꾸거나, [[https://faq.hostway.co.kr/Linux_ETC/7267|여기]]에 나오는 방법에 따라 기본 shell을 bash로 바꾸어서 실행하기 바란다.
실습용 데이터 파일은 아무리 간단한 텍스트 파일이라 해도 zip으로 압축하여 올려 놓았다. 왜냐하면 DokuWiki에서는 보안 때문에 업로드할 수 있는 파일의 확장자에 제한을 걸어 두었기 때문이다.
작업 개시일은 2023년 6월 20일이다. 늦어도 7월 내에 마무리하는 것을 목표로 한다. 어휴... 언제 다 한담.
===== 실행 환경 =====
[[https://www.amd.com/ko/products/cpu/amd-ryzen-9-5950x|AMD Ryzen 9 5950X]] 16-core processor, 128 GB memory로 구성된 데스크탑 리눅스 머신. 일루미나 데이터의 조립, 매핑이나 PGAP 등 비교적 묵직한 프로그램을 돌리려면 이 정도는 되어야...
$ cat /etc/os-release | grep 'VERSION='
VERSION="22.04.2 LTS (Jammy Jellyfish)"
$ uname -a # as of 2023-06-20
Linux ryzen-5950x 5.19.0-45-generic #46~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Jun 7 15:06:04 UTC 20 x86_64 x86_64 x86_64 GNU/Linux
그러나 여기에서 설명한 예제 중 사무용 PC에 설치한 Windows Subsystem for Linux(WSL) 또는 Oracle VirtualBox 내의 우분투에서도 잘 돌아가는 것도 얼마든지 있다.
===== 목차 =====
아래에 제시한 목록 중 일부는 너무 오래 전에 작성한 것이라서 현실에 맞지 않거나, 또는 공부가 부족한 관계로 앞으로도 영원히 채워지지 않을 수도 있다.
- [[실습용 자료]]
- [[Docker 사용하기]]
- [[Anaconda 사용하기]] //완료//
- [[일루미나 데이터의 QC와 기본 전처리]] //완료//
- [[NGS read simulator]] //완료//
- [[Short read를 이용한 유전체 조립(de novo assembly)]] //완료//
- [[참조 서열에 대한 매핑(reference mapping) 및 시각화]] //완료//
- [[microbial_varaint_calling]] //완료//
- [[SNP distance의 계산]] //완료//
- [[Breseq을 이용한 변이 탐색]] //완료//
- [[Harvest suite를 이용한 신속한 유전체 비교와 시각화]] //완료//
- [[The Nothern Arizona SNP pipeline (NASP)]]
- [[세균 유전체의 SNP 발굴용 프로그램 성능 비교(논문)]]
- [[Whole-genome alignment]] //완료//
- [[유전체 주석화(genome annotation)]] //완료//
- [[유전체 염기서열로부터 보툴리눔 톡신의 서브타입 알아내기]] //완료//
- [[batch download of NCBI genomes|NCBI에서 특정 분류군에 속하는 미생물 유전체를 일괄적으로 다운로드하기]] //완료//
- [[E-Direct로 명령행에서 Entrez DB 접근하기]] //완료//
- [[서열 데이터베이스의 검색(BLAST)]] //완료//
- [[Average nucleotide identity(ANI)의 계산]] //완료//
- [[:manipulation_of_ani_matrix_data_file_using_r|R을 이용하여 ANI matrix 자료 다루기]] - 클러스터링, 시각화(heatmap 등), 트리자료의 조작 포함 //완료//
- [[Pan-genome analysis]] //완료//
- [[상동유전자의 동정(inter-species)]]
- [[Prophage 서열 찾기]] //완료//
- [[계통수 작성하기]] //완료//
- [[BLAST Score Ratio(BSR)을 이용한 마커 유전자의 탐색]] //완료//
- [[PhyloSift를 이용한 genome 또는 metagenome의 분석]] - PhyloSift는 내가 꽤 즐겨 사용하던 도구였으나 이제는 배포용 웹사이트가 제대로 유지되지 않는다. 나의 매뉴얼에서도 퇴출을 해야 될 것 같다.
- [[Primer design]]
- [[iTOL에서 annotated tree 만들기]]
- [[16S rRNA amplicon sequencing을 이용한 메타게놈 분석]]
- [[Long read sequencing 결과물 다루기]]
- [[Long read assembly 2024]]
- [[Long read 기반 유전체 조립 결과물의 후처리]]
- [[TORMES pipeline을 이용한 bacterial WGS analysis]] //완료//
- [[Bactopia: 박테리아 유전체 분석을 위한 파이프라인]]
- [[Megan pipeline을 이용한 metagenome analysis]]
- [[MetaWRAP을 이용한 shotgun metagenomic analysis]]
- [[유전체 완성도(genome completeness)의 점검]]
- [[Nanopore server(GP-GPU)의 활용]]
- [[[부록] 유용한 팁 모음]] //완료//
- ...to be continued
===== 잡담 =====
예전에는 하나의 conda environment에 되도록 많은 응용프로그램을 설치하기 위해 많은 노력을 했었다. 그러나 요즘은 서로 의존성이 잘 맞지 않는 프로그램은 별도의 환경에 따로 설치하는 쪽으로 바뀌었다. 그렇게 하는 것이 훨씬 깔끔하고, 워낙 디스크 가격도 많이 내려갔으니 아끼려고 노력할 필요도 없다. 다만 내가 실행하려는 프로그램이 어느 환경에 들어가 있는지 잘 파악해 두어야 한다.
리눅스에서 하나의 응용프로그램을 설치하는 방법은 단일한 것이 아니다. 개발자가 얼마나 수고를 하는가에 따라서 다양한 방식의 설치를 지원하게 된다. 예를 들어서 매우 대중적인 미생물 유전체 주석화 프로그램인 [[https://github.com/tseemann/prokka|Prokka]](호주의 Torsten Seemann)의 경우를 보자. Seemann은 무려 일곱 가지의 설치 방법(bioconda, brew, docker, singularity, Ubuntu/Debian/Mint, CentOS/Fedora/RHEL & MacOS)을 설명하였다. 게다가 Prokka는 [[https://tracker.debian.org/pkg/prokka|데비안 패키지]]로도 나올 정도이다.
또 다른 사례로서 Jason Sahl의 [[https://github.com/jasonsahl/LS-BSR|LS-BSR]]을 살펴보자. Conda를 이용하여 python v3.9 환경을 만들고, 여기에 필요한 여러 프로그램을 설치한 뒤, git clone을 통해 ls_bsr 프로젝트를 가져다가 직접 셋업 스크립트를 돌려야 한다. Prokka와 비교한다면 설치 방법은 매우 제한적이고, 다소 불편하기까지 하다.
Python 스크립트만으로 이루어진 [[https://github.com/kblin/ncbi-genome-download|ncbi-genome-download]]는 또 어떠한가? Conda base environment에서 pip로 설치할 수도 있고, conda package를 이용할 수도 있다. 설치를 어떻게 했는지 잊어버린 다음 재설치/업그레이드 또는 삭제를 하면서 서로 뒤섞이지 않도록 요령껏 운영해야 할 것이다.
따라서 본 매뉴얼에서 설명한 유전체 분석 업무를 수행하기 위해 필요한 응용프로그램을 반드시 '이 한가지 방법'으로만 설치해야 된다고 못박아 말할 수는 없다. 프로그램에 따라서는 분석에 필요한 대용량의 데이터베이스 파일을 가져와야 하는 것도 있으며, 이 경우는 별도의 설치 스크립트를 실행하도록 만든 것이 많다.
생명정보학 연구를 위한 응용프로그램 설치 방법의 '천하통일'은 앞으로 영원히 이루어지지 않을 것이다. 각자 나름대로의 방법을 추구해서 자신에게 잘 맞도록 손질하는 것이 최선이다.