User Tools

Site Tools


bioinfo:short_read를_이용한_유전체_조립_de_novo_assembly

Short read를 이용한 유전체 조립

다양한 de novo assembler 활용

De Bruijn graph를 사용한 Illumina short read assembly에는 Velvet 혹은 SPAdes가 적합하다(지금도 계속 개정판이 나오는 SPAdes 권장). Velvet은 직접 실행하는 것보다 VelvetOptimiser를 사용하여 실행하면 여러 k-mer에 대해서 조립을 실시하여 최적화된 결과를 제공한다. Velvet 실행 전에 read에 대한 trimming을 특별히 하지 않아도 큰 문제는 없다. 그러나 2023년 현재 velvet assembler에 관심을 갖거나 적극 활용하는 사람은 거의 없을 것이다.

SPAdes는 실행 과정 중에 자동적으로 read에 대한 오류 교정을 실시하며, -k <int,int,…> 옵션으로 특별히 지정하지 않으면 21,33 및 55의 k-mer 크리고 조립을 실시한 다음 최적의 결과물만을 취한다. SPAdes는 PacBio, Oxford Nanopore, Sanger read 및 추가적인 contig 서열을 투입하여 hybrid assembly를 실시할 수도 있다. 박테리아 유전체 유전체 조립 도구인 Unicycler는 short-read-first 방법을 사용하는 독특한 hybrid assembler이다. Long read 전용 또는 hybrid assembler에 대해서는 별도의 문서에서 다룬다.

Velvet은 interleaved paired file을 필요로 한다. 따라서 khmer 패키지의 interleave-reads.py를 사용하여 read file쌍을 전환해야 한다.

$ interleave-reads.py –o interleaved.fastq read_.1.fastq read_2.fastq

Illumina short read의 조립용 소프트웨어로는 현재 SPAdes가 매우 널리 쓰인다. SPAdes는 long read의 조립(단독 혹은 hybrid)도 가능하며 플라스미드와 전사체 및 메타게놈의 조립 등 다양한 용도로도 쓰일 수 있다. 그러나 SPAdes의 일부 요소는 실행 속도가 느리고, 전통적으로 overlapping paired-end read를 잘 처리하지 못하는 특성도 있다. 이에 따라서 세균이나 유전체 크기가 작은 생명체의 Illumina data 전용 조립 프로그램인 Shovill이 등장하였다. Shovill은 SPAdes를 핵심으로 하되 SKESAMegahit assembler를 선택하여 사용할 수도 있다. Shovill의 작동 단계는 다음과 같다.

  1. Read로부터 유전체 크기를 추정한다(–gsize를 제공하지 않은 경우).
  2. FASTQ 파일을 적정한 수준으로 줄인다(기본 –depth 100).
  3. Adaptor 서열을 제거한다(–trim을 제공한 경우)
  4. Read의 오류를 교정한다.
  5. Paired-end read의 pre-overlap을 실시한다. 이를 “stitch”라 부른다.
  6. SPAdes/SKESA/Megahit를 이용하여 조립한다.
  7. Read를 contig 위에 매핑하여 오류를 교정한다.
  8. 불량한 contig를 제거한다(길이, coverage, pure homopolymer)
  9. 좀 더 보기 좋은 서열 이름을 갖는 FASTA 파일을 생성한다.

다음은 shovill의 실행 사례이다. 표시된 메시지는 일부만 보인 것이다.

$ shovill --outdir out --R1 sample_1.fq.gz --R2 sample_2.fq.gz --cpus 16 –trim
[shovill] Read stats: total_bp = 4148830700
[shovill] Using genome size 10536457 bp
[shovill] Estimated sequencing depth: 393 x
[shovill] Subsampling reads by factor 0.382 to get from 393x to 150x
[shovill] Estimated K-mers: 31 51 71 91 111 [kn=5, ks=20, kmin=31, kmax=113]
[shovill] It contains 361 (min=75) contigs totalling 9457211 bp.
[shovill] The name 'shovill' is pronounced as 'shovel' in English

조립 결과의 평가

Sequencing read의 조립과 관련된 여러 수치(number of contigs, total length, N50, max contig length, average contig length…)를 얻는 것은 조립 결과의 평가에서 매우 기본이 되는 행위이다. 가장 간단하게는 assemblathon_stats.pl이라는 단일 Perl 스크립트를 이용할 수도 있고, BBmap 패키지에 포함된 여러 유틸리티 중 stats.sh를 이용해도 된다. 이상의 프로그램들은 하나의 FASTA 파일을 인수로 받아서 처리한다. 만약 여러 조립물을 서로 비교 평가하려면 Quast를 사용하는 것이 바람직하다. Quast는 각 조립 결과물의 assembly statistics를 쉽게 비교할 수 있는 다양한 도표를 제공함은 물론, 참조 서열(옵션)을 제공할 경우 misassembly와 관련한 수치를 제시한다. 심지어 유전자 예측을 실시하여 이를 이용한 평가도 진행하는 것이 가능하다. Quast의 상세한 사용법은 매뉴얼을 참조하도록 한다. Quast는 Plantagora에서 정의한 misassembly를 그대로 따르고 있다(그림 참조).

다음은 각 평가용 프로그램의 활용 사례이다.

$ assemblathon_stats.pl contigs.fasta
$ assemblathon_stats.pl –csv contigs.fasta
$ /usr/local/apps/bbmap/stats.sh in=contigs.fa
$ /usr/local/apps/bbmap/stats.sh in=contigs.fa format=3
$ quast.py –o quast_out assembly_1.fa assembly_2.fa assembly_3

quast.py를 실행하려면 비교할 모든 FASTA 파일을 인수로 나열해야 한다. 만약 다수의 FASTA 파일이 assembly라는 서브디렉토리에 들어있다면 이를 일일이 타이핑하지 않고도 다음과 같은 방법을 써서 파일 목록을 자동으로 만들어서 Quast를 실행하게 된다.

$ quast.py –o quast_out $(find assembly –type f –name *fa | tr '\n' ' ')

다수의 FASTA 파일이 현재 디렉토리에 있다면 다음의 방법도 가능하다.

$ quast.py –o quast_out $(ls –m *fa | tr –d ',')
$ quast.py –o quast_out $(ls *fa | paste –sd ' ')

위 명령어를 응용한다면 텍스트 파일이 주어졌을 때 임의의 문자 또는 문자열을 구분자로 하여 파일 내의 모든 라인을 이어 붙이는 방법에 익숙해질 것이다.

$ for i in {1..5}
> do
> echo $i >> file
> done
$ cat file 
1
2
3
4
5
$ paste -sd ',' file
1,2,3,4,5
$ var=$(paste -sd ',' file)
$ echo $var
1,2,3,4,5
$ paste -sd ',' <(cat file)
1,2,3,4,5

마지막에 보인 사례에서 <(command_list) 또는 <(command_list)는 https://tldp.org/LDP/abs/html/process-sub.htmlprocess substitution을 의미한다.

Genome completeness

기타 유전체 조립용 소프트웨어

Canu, Flye 등의 long read 전용 assembler는 이 문서에서 다루지 않는다.

동일 종에 속하는 여러 미생물 균주(특히 감염성 미생물)의 일루미나 시퀀싱 자료의 평가, 조립, 동정, 조립. AMR/VF 유전자 예측 및 결과 리포트 생성 등을 일괄적으로 실시하고 싶다면 별도로 소개하는 TORMES pipeline을 활용한다. TORMES pipeline은 Quast를 포함한다.

Short & long read를 전부 입력물로 다룰 수 있고 조립 뒤에 QC와 annotation까지 실시하는 ZGA pipeline은 별도로 다룰 것이다.

bioinfo/short_read를_이용한_유전체_조립_de_novo_assembly.txt · Last modified: 2023/06/29 08:56 by hyjeong