User Tools

Site Tools


all_about_illumina_sequence_assembly_for_microbial_genomes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

all_about_illumina_sequence_assembly_for_microbial_genomes [2017/01/16 08:41] – [All about Illumina sequence assembly for microbial genomes] hyjeongall_about_illumina_sequence_assembly_for_microbial_genomes [2021/03/17 13:09] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== All about Illumina sequence assembly for microbial genomes ====== ====== All about Illumina sequence assembly for microbial genomes ======
-gzip 압축이 된 **Illumina paired fastq file**(file_1.fastq.gz & file_2.fastq.gz)을 시작점으로 한다. 여기에서 다루는 방법은 어디까지나 나의 경험에 의한 제안일 뿐, 반드시 이를 지켜야 하는 것은 아니다. 생소한 이름의 shell script는 내가 직접 작성하거나, 인터넷에 공유된 것을 수정한 것이다. 이 페이지는 아직 완성되지 않은 상태이다.+본 문서에서 소개한 사례에서는 gzip 압축이 된 **Illumina paired fastq file**(file_1.fastq.gz & file_2.fastq.gz)을 시작점으로 한다. 여기에서 다루는 방법은 어디까지나 나의 경험에 의한 제안일 뿐, 반드시 이를 지켜야 하는 것은 아니다. 생소한 이름의 shell script는 내가 직접 작성하거나, 인터넷에 공유된 것을 수정한 것이다. 이 페이지는 아직 완성되지 않은 상태이다. 
 +===== 이제 3세대 시퀀싱 기법(3GS)의 시대 아닌가? ===== 
 +맞다! PacBio RSII이 de novo sequencing의 새로운 강자로 부상하고 있고, Oxford Nanopore Technologies의 nanopore sequencing도 점점 많은 사람들의 관심을 끌고 있다. 그럼에도 불구하고 일루미나 시퀀싱 데이터를 이용한 분석 작업을 비용 대비 throughput이 가장 높은 방법으로서 여전히 중요하다고 생각한다. 본인 역시 3GS를 활발하게 사용하고 있으며, 이를 활용하기 위한 소프트웨어를 익힌는 데에도 열심이다.
 ===== 일반적인 주의사항 ===== ===== 일반적인 주의사항 =====
 ==== Read length ==== ==== Read length ====
Line 29: Line 31:
   $ sh file_1.sh   $ sh file_1.sh
   $ sh file_2.sh   $ sh file_2.sh
-   +2020년 5월 현재에는 이렇게 무식한(?) 방법으로 fastq 파일 이름을 정리하지 않는다. 원본의 파일 이름이 밑줄('_')로 구분된 컬럼을 갖고 있고, 그 중에서 만약 첫번째와 네번째 것을 남기고 싶다면 다음과 같이 하면 된다. 네번째 필드는 보통 판독 방향을 나타내므로(R1 or R2), 이어서 _1과 _2로 바꾸거나 혹은 그냥 놔두어도 보통의 프로그램은 다 알아먹는다.  
-===== 기본적인 QC ===== +  $ ls *fastq | while read f 
-하나의 입력 파일 file_1.fastq(.gz)에 대해서 file_1_fastq.html 및 file_1_fastq.zip이 생성된다.+  > do 
 +  > cut -d_ -f1,3 $(<<<$f) 
 +  > done 
 +===== FastQC를 이용한 기본적인 QC ===== 
 +여기서 QC라 함은 원본 시퀀싱 데이터 파일(fastq)에 변화를 가하지 않고 단지 quality에 대한 평가를 하는 일을 뜻힌다. 따라서 수치와 도표로 표현되는 보고서가 주된 결과물이다. 매우 널리 쓰이는 QC 도구인 [[https://www.bioinformatics.babraham.ac.uk/projects/fastqc/|FastQC]]를 다음과 같이 사용하면 하나의 입력 파일 file_1.fastq(.gz)에 대해서 file_1_fastq.html 및 file_1_fastq.zip이 생성된다.
   $ /usr/local/apps/FastQC/fastqc *fastq.gz   $ /usr/local/apps/FastQC/fastqc *fastq.gz
  
 ===== 어댑터 제거, 트리밍 및 interleaved file로 전환 ===== ===== 어댑터 제거, 트리밍 및 interleaved file로 전환 =====
-trimmomatic과 khmer 패키지([[http://khmer.readthedocs.org/en/v2.0/|website]] [[http://www.ncbi.nlm.nih.gov/pubmed/26535114|논문 링크]])의 interleave-reads.py 스크립트가 필요하다. 보통 read가 부족한 경우는 없으므로 orphan file은 제거하도록 하였다. 결과물은 file.pe.fq이다. 총 bp 수, read 수 및 평균 read 길이와 같은 기본 정보가 필요하면 khmer 패키지에 포함된 readstats.py 스크립트가 매우 유용하다. [[myIllu_01.trimPE.sh|myIllu_01_trimPE.sh]] 쉘 스크립트가 결코 완벽한 것은 아니다. 생각 같아서는 가장 처음 작업으로서 read의 맨 앞부분을 5-6 bp 정도 제거하고, 처리 후에는 필터나 교정 기능을 적용하는 것이 더욱 완벽한 방법일지도 모른다.+==== 개요 ==== 
 +Illumina sequencing read의 주요 용도라면 de novo assembly나 reference mapping이 가장 대표적일 것이다. Metagenomics 혹은 epigenomics를 주업으로 삼는 연구자라면 다른 의견을 가질 수도 있겠으나, read 자체를 입력으로 삼는 매우 구체적인 '소프트웨어'를 기준으로 삼는다면 이렇게 말해도 그다지 틀린 것은 아닐 것이다. Raw sequencing read의 전처리(preprocess)는 매우 광범위한 작업을 포괄하고 있다. 예를 들자면 다음과 같다. 
 +  * Adapter sequence 제거 
 +  * Low quality 영역 제거 
 +  * low abundant k-mer를 갖는 read의 제거 
 +  * Error 교정(바로 위의 것과 겹치기도 한다) 
 +  * 포맷의 전환 
 +후속 프로그램에 따라서는 적극적인 전처리(low quality region의 trimming)이 결과에 좋은 영향을 미치는 것도 있고 그렇지 않은 것도 있다. 따라서 위에서 나열한 작업을 다 해야 한다거나, 혹은 어느 것들을 골라서 해야 한다고 원칙적으로 만들기는 대단히 어렵다. 본 사례에서는 sequencing read에 오염이 존재할 경우(매우 흔하다) 이를 k-mer abundance 측면에서 필터링하여 좋은 de novo assembly를 하는 방법에 초점을 맞추었다. 
 + 
 +Sequencing reads(fastq file)의 전처리기는 위에서 나열한 작업 종류만큼 다양한 것들이 존재한다. 어떤 것은 QC plot의 생성을 겸하는 것도 있고(Prinseq), 일반적인 서열 조작 기능에 충실한 것도 있다(FASTX-toolkit). Quality-based trimming이 주요 기능인 sickle, 어댑터 제거에도 중점을 둔 trimmomatic, 복합적인 기능의 HTQC 등등. 
 + 
 +이 페이지에서 중점적으로 다루는 전처리 기법에서는 [[http://www.usadellab.org/cms/?page=trimmomatic|trimmomatic]]과 khmer 패키지([[http://khmer.readthedocs.org/en/v2.0/|website]] [[http://www.ncbi.nlm.nih.gov/pubmed/26535114|논문 링크]])의 interleave-reads.py 스크립트가 필요하다. 보통 read가 부족한 경우는 없으므로 orphan file은 제거하도록 하였다. 결과물은 file.pe.fq이다. 총 bp 수, read 수 및 평균 read 길이와 같은 기본 정보가 필요하면 khmer 패키지에 포함된 readstats.py 스크립트가 매우 유용하다. [[myIllu_01.trimPE.sh|myIllu_01_trimPE.sh]] 쉘 스크립트가 결코 완벽한 것은 아니다. 생각 같아서는 가장 처음 작업으로서 read의 맨 앞부분을 5-6 bp 정도 제거하고, 처리 후에는 필터나 교정 기능을 적용하는 것이 더욱 완벽한 방법일지도 모른다.
   $ myIllu_01_trimPE.sh file_1.fastq.gz file_2.fastq.gz # file-trim.pe.fq 생성   $ myIllu_01_trimPE.sh file_1.fastq.gz file_2.fastq.gz # file-trim.pe.fq 생성
      
Line 64: Line 81:
   $ /usr/local/apps/VelvetOptimiser-2.2.5/VelvetOptimiser.pl -s ${KSTART} -e ${KEND} -t ${THREADS} -f '-shortPaired -fastq file.pe.fq'   $ /usr/local/apps/VelvetOptimiser-2.2.5/VelvetOptimiser.pl -s ${KSTART} -e ${KEND} -t ${THREADS} -f '-shortPaired -fastq file.pe.fq'
 ==== ABySS ==== ==== ABySS ====
 +  * [웹사이트] http://www.bcgsc.ca/platform/bioinfo/software/abyss
 ==== SPAdes ==== ==== SPAdes ====
   * [웹사이트] http://cab.spbu.ru/software/spades/ latest version: 3.9.1, [[http://spades.bioinf.spbau.ru/release3.9.1/manual.html|v3.9.1 매뉴얼]]   * [웹사이트] http://cab.spbu.ru/software/spades/ latest version: 3.9.1, [[http://spades.bioinf.spbau.ru/release3.9.1/manual.html|v3.9.1 매뉴얼]]
Line 73: Line 90:
   $ /usr/local/apps/SPAdes-3.5.0-Linux/bin/spades.py -k 21,33,55 -t 24 --12 file.pe.fq -o spades_out   $ /usr/local/apps/SPAdes-3.5.0-Linux/bin/spades.py -k 21,33,55 -t 24 --12 file.pe.fq -o spades_out
  
-  * Unordered List Item오류 교정을 이미 한 read를 사용하려면 --only-assembler 옵션을 추가한다.  +  * output_dir/에 input_1.00.0_0.cor.fastq.gz, input_2.00.0_0.cor.fastq.gz 및 input__unpaired.00.0_0.cor.fastq.gz 파일이 생성된다. 
 +  * 오류 교정을 이미 한 read를 사용하려면 --only-assembler 옵션을 추가한다.   
 +  * plasmid 서열만을 조립하려면 --plasmid 옵션을 추가한다(plasmidSPAdes: assembling plasmids from whole genome sequencing data [[https://www.ncbi.nlm.nih.gov/pubmed/27466620|Nuc. Acid. Res 2016]]). plasmidSPAdes는 원래 별도의 프로그램으로 개발된 것이지만 version 3.8부터는 SPAdes에 포함되었다.
   * (구식 포맷) --12 interleavedFile or --1 forwardReadFile --2 reverseReadFile and/or --s unpairedReadFile   * (구식 포맷) --12 interleavedFile or --1 forwardReadFile --2 reverseReadFile and/or --s unpairedReadFile
   * (신식 포맷) --s<#> unpairedReadFile --pe<#>-12 interleavedFile --pe<#>-1 forwardReadFile --pe<#>--2 reverseReadFile ... <#> = 1,2,...,9; 상세한 사용법은 매뉴얼을 참조할 것.   * (신식 포맷) --s<#> unpairedReadFile --pe<#>-12 interleavedFile --pe<#>-1 forwardReadFile --pe<#>--2 reverseReadFile ... <#> = 1,2,...,9; 상세한 사용법은 매뉴얼을 참조할 것.
    
 ==== dipSPAdes ==== ==== dipSPAdes ====
 +dipSPAdes는 highly polymorphic diploid genome을 위한 assembler로서 SPAdes에 기반을 하고 있다([[https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4449708/|J. Comput. Biol. 2015]])
 ==== A5-miseq ==== ==== A5-miseq ====
   * [웹사이트] https://sourceforge.net/projects/ngopt/   * [웹사이트] https://sourceforge.net/projects/ngopt/
Line 88: Line 107:
   $ /usr/local/apps/ngopt/bin/a5_pipeline.pl --threads=24 file_1.fastq.gz file_2.fastq.gz a5-out   $ /usr/local/apps/ngopt/bin/a5_pipeline.pl --threads=24 file_1.fastq.gz file_2.fastq.gz a5-out
 === 2. Mixed mode === === 2. Mixed mode ===
-교정을 마친 read file을 a5-out.ec.fastq로 명명해 둔다. 원본 파일(file.pe.fq)과 이름을 맞추지 않아도 된다. mixed mode에서 인수로 주어지는 file.pe.fq(염기 교정 전)은 실제로는 scaffolding에만 쓰인다. 따라서 a5-out.ec.fastq를 인수로 주어도 상관이 없을 것이다.+교정을 마친 read file을 a5-out.**ec.fastq**로 명명해 둔다. 원본 파일(file.pe.fq)과 이름을 맞추지 않아도 된다. mixed mode에서 인수로 주어지는 file.pe.fq(염기 교정 전)은 실제로는 scaffolding에만 쓰인다. 따라서 a5-out.ec.fastq를 인수로 주어도 상관이 없을 것이다.
   $ /usr/local/apps/ngopt/bin/a5_pipeline.pl --threads=24 --begin=2 --end=5 file.pe.fq a5-out   $ /usr/local/apps/ngopt/bin/a5_pipeline.pl --threads=24 --begin=2 --end=5 file.pe.fq a5-out
  
Line 99: Line 118:
   * [GitHub] https://github.com/loneknightpy/idba - **IDBA, IDBA-UD, IDBA-Hybrid and IDBA-Tran**은 2012년 10월 18일 이후로 전부 한 패키지에 들어있다.   * [GitHub] https://github.com/loneknightpy/idba - **IDBA, IDBA-UD, IDBA-Hybrid and IDBA-Tran**은 2012년 10월 18일 이후로 전부 한 패키지에 들어있다.
  
 +IDBA는 100 bp 근방의 짧은 read를 쓰도록 설게되어 있다. Illumina의 long read(PacBio read를 말하는 것이 아님!)를 사용하려면 src/sequence/short_sequence.h 파일의 kMaxShortSequence(default = 128) 변수를 변경한 뒤 빌드하여라.
 ===== 기타 고급 주제 ===== ===== 기타 고급 주제 =====
   * [[Hybrid assembly]]   * [[Hybrid assembly]]
 +  * [[http://blog.genoglobe.com/2017/09/genome-assembler.html|시퀀싱 라이브러리 크기의 신속한 체크]]
  
  
all_about_illumina_sequence_assembly_for_microbial_genomes.1484523689.txt.gz · Last modified: (external edit)