====== Detection of recombination in bacterial genomes ====== 일단 Zakour의 다음 자료를 정독하라. {{ :detectection_of_recombinational_events_in_bacterial_genomes.pdf |}} Xabier Didelot는 microevolution 과정에서 recombination이 중요함을 인식하고 이를 검출하는 ClonalFrame이라는 프로그램을 개발하였다([[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1840087/|논문]] [[http://www.xavierdidelot.xtreemhost.com/clonalframe.htm|웹사이트]] ). 발표 당시에는 multilocus sequence data에 국한되었지만 현재는 박테리아 유전체에도 적용 가능한 ClonalFrameML([[https://github.com/xavierdidelot/ClonalFrameML|GitHub]])도 개발되었다. 고전적인 논문 **Rapid pneumococcal evolution in response to clinical interventions** (Science 2011, [[https://www.ncbi.nlm.nih.gov/pubmed/21273480|PubMed]])를 읽어보면 박테리아의 유전체에서 벌어지는 homologous recombination이 얼마나 중요한지를 알 수 있다. 그러나 모든 미생물 종에서 같은 정도로 recombination이 일어나는 것은 아님에 유의하자. 이 페이지에서는 Gubbins(Genealogies Unbiased By recomBinations in Nucleotide Sequences, [[https://academic.oup.com/nar/article/43/3/e15/2410982|논문]] [[https://sanger-pathogens.github.io/gubbins/|웹사이트]])을 이용하여 미생물 유전체로부터 recombination이 일어난 곳을 찾아내고 이를 시각화하는 방법을 알아본다. ===== Genome alignment의 생성 ===== ==== Snippy ==== Snippy([[https://github.com/tseemann/snippy|GitHub]])는 raw sequencing read와 contig를 전부 사용할 수 있는 유연한 도구이다. 그러나 설치 과정에서 에러가 발견되어 이를 극복하는 과정을 상세히 기술하고자 한다. Snippy는 BioConda에 포함되어 있어서(최신 버전 4.0_dev) 설치는 매우 쉬웠다. 별도의 환경을 만들지 않고 Base에서 설치하면 된다. 설치를 마친 뒤 모든 프로그램이 다 깔린 상태인지를 snippy --check 명령으로 확인을 하니 vcfirstheader가 없다는 메시지가 나왔다. 이 유틸리티는 vcflib([[https://github.com/vcflib/vcflib|GitHub]])에 포함되어 있으므로 git clone 명령을 사용하여 수작업으로 설치하였다. 그리고 설명 파일에서 소개한 대로 /vcflib/bin/을 PATH 환경변수에 추가하였다. 그런데 snippy의 첫 실행에서 다음과 같은 에러가 발생하였다. java.lang.RuntimeException: Error parsing property 'ref.AE015924.codonTable'. No such codon table 'Bacterial_and_Plant_Plastid' ... 이에 대해서는 이미 snippy issue 페이지에 154번째 문서로 보고된 상태이다([[https://github.com/tseemann/snippy/issues/154|링크]]). 2018년 4월부터 시작된 쓰레드이므로 매우 최신의 에러라고 할 수 있다. 이에 대하여 3.2 버전을 쓰라는 조언이 있었다. 더욱 바람직하게는 4.0 안정화 버전이 빨리 나와야 한다. conda remove snippy conda install -c bioconda -c conda-forge snippy=3.2 이렇게 한 뒤 다시 테스트 러닝을 하였으나 제대로 결과가 나오지 않았다. snps.log 파일을 열어보니 이번에는 다음과 같은 내용이었다. /data/anaconda2/bin/freebayes-parallel: line 40: ../vcflib/bin/vcfstreamsort: 그런 파일이나 디렉터리가 없습니다 /data/anaconda2/bin/freebayes-parallel: line 40: ../vcflib/scripts/vcffirstheader: 그런 파일이나 디렉터리가 없습니다 /data/anaconda2/bin/freebayes-parallel의 40번째 라인을 찾아가서 위 두 가지 유틸리티 앞에 붙은 상대경로를 지워버렸다. 이렇게 하니 비로소 정상적인 실행이 되었다. 일반적인 실행 방법은 다음과 같다. $ snippy --cpus 16 --outdir mysnps --ref E_coli.gbk --R1 read_1.fastq.gz --R2 read_2.fastq.gz $ snippy-core --prefix core mysnps1 mysnps2 mysnps2 snippy-core 결과물인 core.full.aln(whole genome SNP alignment including invariant sites)을 gubbins에 이용하면 된다. ==== Harvest suite (parsnp) ==== [[http://harvest.readthedocs.io/en/latest/index.html|Harvest suite]]는 동일 종에 속하는 미생물 유전체를 신속하게 비교하여 core-genome alignment를 만들고 시각화하는 도구이다. * Parsnp - core-genome alignment and analysis * Gingr - interactive visualization of alignments, trees and variants * HarvestTools - Archiving and postprocessing Parsnp가 기본적으로 생성하는 출력파일은 다음의 세 가지이다. Gingr에서 .ggr 파일을 열면 MFA 파일로 export할 수 있다. XMFA(eXtended Multi FastA) 파일의 포맷은 [[http://darlinglab.org/mauve/user-guide/files.html|여기]]에 설명되어 있다. parsnp.ggr parsnp.tree parsnp.xmfa HarvestTools 유틸리티는 좀 더 다양한 포맷간의 전환을 도와준다. Gingr 혹은 harvesttools에서 전환 가능한 파일 포맷에 대한 상세한 내용은 [[https://harvest.readthedocs.io/en/latest/content/gingr/types.html|여기]]를 참고하라. $ harvesttools -i parsnp.gingr -M multiFASTA.fna # (concatenated LCBs) 이렇게 만들어진 multiFASTA 파일을 gubbins에 입력물로 제공해도 실행에는 문제가 없다. 그러나 LCB(locally collinear block)을 갭 없이 이어붙인 것이라서 원래의 좌표 정보가 더 이상 유효하지 않다. parsnp.xmfa를 정밀하게 parsing하면 reference coordinate에 맞추어서 각 LCB 사이에 알맞은 길이의 gap을 넣어서 연결한 서열을 만드는 것이 가능할지도 모른다. 하지만 그렇게 하느니 처음부터 whole genome alignment를 만드는 snippy를 쓰는 것이 바람직할 것이다. ===== Gubbins ===== * [논문] Rapid phylogenetic analysis of large samples of recombinant bacterial whole genome sequences using Gubbins. Nucl Acid Res 2015 [[https://www.ncbi.nlm.nih.gov/pubmed/25414349|PubMed]] * [[https://www.sanger.ac.uk/science/tools/gubbinshttps://www.sanger.ac.uk/science/tools/gubbins|웹사이트]] [[https://github.com/sanger-pathogens/gubbins|GitHub]] BioConda 패키지를 이용하여 설치하였다(py35 environment). $ run_gubbins.py dataset.aln $ gubbins_drawer.py -o result.pdf dataset.final_tree.tre dataset.recombination_predictions.embl $ gubbins_drawer.py -o results_SNPS.pdf dataset.final_tree.tre dataset.branch_base_reconstruction.embl ===== Visualization using phandango =====