레이블이 bwa인 게시물을 표시합니다. 모든 게시물 표시
레이블이 bwa인 게시물을 표시합니다. 모든 게시물 표시

목요일, 3월 07, 2024

나노포어용 정렬 프로그램을 비교해보자

오늘은 최근에 논란의 중심에 서 있는 claude3를 사용해보았습니다.

Comparative analysis of alignment tools for application on Nanopore sequencing data

이 논문을 선택한 이유는 claude.ai에서 무료로 해주는 양의 논문이라서 선택하였습니다.

 

Q. 요약해줘

이 논문에서는 나노포어 시퀀싱 데이터에 대한 6가지 다양한 정렬 도구(BLASR, GraphMap, LAST, minimap2, NGMLR 및 BWA MEM)의 성능과 정렬 품질을 실험 데이터셋을 사용하여 비교 분석했습니다. 주요 내용은 다음과 같습니다:

3개의 서로 다른 실험 나노포어 시퀀싱 데이터셋(람다 파지 전장 유전체, 인간 MEFV 유전자 암플리콘, SARS-CoV-2 전장 유전체)을 사용하여 정렬 도구를 비교했습니다.

각 도구의 CPU 시간, 메모리 사용량, 일치율, 불일치율, 오류율 등의 성능 및 품질 지표를 측정하고 비교했습니다.

Minimap2가 모든 데이터셋에서 속도와 메모리 효율성 면에서 가장 우수한 성능을 보였습니다.

BLASR, GraphMap, NGMLR는 상대적으로 느린 속도를 보였고, NGMLR는 높은 메모리 사용량을 보였습니다.

일치율, 불일치율, 오류율 측면에서 LAST를 제외한 도구들이 대체로 유사한 수준의 높은 정렬 품질을 보였습니다.

데이터셋 특성과 알고리즘 접근법에 따라 도구 간 차이가 있었으며, 실험 설계와 추가 분석 과정을 고려하여 적절한 도구를 선택해야 합니다.


Q. 그럼, 나노포어 왜 전용 정렬 도구가 필요합니까?

논문에 따르면 나노포어 시퀀싱 기술의 가장 큰 단점은 다른 시퀀싱 기술에 비해 높은 에러율(error rate)이라고 설명하고 있습니다. 구체적인 문장은 다음과 같습니다:

"So far, the most important disadvantage of this technology is the increased error rate compared to other sequencing technologies."

이처럼 나노포어 시퀀싱 데이터는 기존 단분자 시퀀싱 데이터와는 다른 에러 프로파일을 가지고 있어, 이러한 높은 에러율을 보완하기 위해 전용의 정렬 도구가 필요하다고 설명하고 있습니다.


Q. 좀더 자세히 설명해줘

네, 더 자세히 설명드리겠습니다.

나노포어 시퀀싱은 전기화학적 신호를 읽어 DNA/RNA 서열을 분석하는 새로운 기술입니다. 이 기술의 장점은 긴 읽기(long reads)가 가능하고 빠르며 비용이 저렴하다는 점입니다. 하지만 단점으로 다른 기존 시퀀싱 기술에 비해 상대적으로 높은 에러율을 가지고 있습니다.

이런 높은 에러율은 나노포어 시퀀싱 데이터의 고유한 에러 프로파일에서 비롯됩니다. 삽입(insertion), 삭제(deletion), 치환(substitution) 등의 에러가 많이 발생합니다. 이러한 에러들을 효과적으로 다루지 않으면 후속 데이터 분석 단계에서 오류가 커질 수 있습니다.

따라서 나노포어 시퀀싱 데이터를 정확하게 분석하기 위해서는 이러한 높은 에러율과 특수한 에러 프로파일을 잘 보완할 수 있는 전용 정렬(alignment) 도구가 필요합니다. 기존의 단분자 시퀀싱 데이터 분석용 도구들은 나노포어 데이터의 특성을 제대로 반영하지 못해 정확성이 낮을 수 있기 때문입니다.

요약하면, 나노포어 시퀀싱의 높은 에러율과 특수한 에러 프로파일을 보완하여 정확한 데이터 분석이 가능하도록 최적화된 전용 정렬 도구가 필요한 것입니다.


음.. 일단 무료 요금에서 사용하는 양인 경우 일단 쓸만한데 대부분의 논문 양은 유료버전 사용하시라고 뜰껍니다. :)



출처: @ye._.vely618


수요일, 8월 23, 2023

SpeedSeq은 어디에 쓰는거지?

오늘은 연식은 좀 되었으나 빠른 분석 tool하나 가져와봤습니다.


SpeedSeq: ultra-fast personal genome analysis and interpretation

doi : 10.1038/nmeth.3505

이름하여 SpeedSeq!! 그래서 제목에 ultra-fast, 초고속이 들어갑니다.
근데... 분석시간이 얼마나 걸렸었는지는.. 기억이 잘..

논문에서는 저렴한 서버에서 50x WGS데이터를 13시간만에 align을 했다고하는데...
(저렴한서버의 정의는 CPU 16core에 128GB RAM이 장착된 서버라고 하네요)

여튼 논문에서는 50x WGS 데이터를 저렴한 서버를 사용해서 분석을 진행할 때 정렬 작업을 시간단위에서 끝냈다.. 라는 소식을 솔직히 DRAGEN 제외하고서는 들어본적이 없어서 조금 갸우뚱 하긴 합니다.

여하튼 논문에서 13시간만에 정렬을 끝냈다고 했다니!! 그렇다고 믿는게 인지상정 아니겠습니까?

근데 정렬 속도가 빠른건 큰 장점이지만 단순히 속도만 빠르면... 그건 아무짝에도 쓸모없는거죠


그래서 SpeedSeq와 기라성같은 변이 탐지 툴들과도 비교 해봤습니다.

somatic/germline 분석 툴들을 가리지 않고 모두 비교해봤습니다. GATK의 Haplotype Caller, Mutect, VarScan2와 같은... 기존에 너님들이 많이 쓰던 툴들이랑 비교해서 결과 다르지 않아. 라고 얘기하고 있습니다.


그런데 사실 저는 SpeedSeq을 사용한 이유가 속도가 빠르면서 bwa와 같은 기존 정렬 프로그램 대비 결과가 정확해서 사용한것이 아닌 그냥 LUMPY tool을 사용하기 위해서 였다는게 함정

사실 이 정렬 tool이 nature에 출판되었는지도 몰랐다는..

LUMPY사용하려고 메뉴얼보니 SpeedSeq 결과 사용하세요 라고 적혀 있어서 단지 사용 했었을뿐... 그 후에 나도 몰라 하고 있었는데...


그냥 한번 들쳐봤는데 다시 검토해볼만한 tool일거 같긴한데..

"Reference Sample 백만번 돌려서 결과 동일해요" 하는것보다 임상 샘플 10개만 분석해봐도 그 진가를 알아볼수 있으니...

만약에 제가 사용하게 된다면 다음에 다시 글하나 올려보도록 하죠 :)




출처: @ye._.vely618


토요일, 3월 04, 2023

역시 변이 탐지에서도 machine learning

역시 세상에는 내마을을 알고 있는 분들이 있다는..

논문 제목은 Systematic benchmark of state-of-the-art variant calling pipelines identifies major factors affecting accuracy of coding sequence variant discovery 입니다.

doi: https://doi.org/10.1186/s12864-022-08365-3


결론은 누가누가 변이를 잘 찾나 테스트 되겠습니다.

그래서 샘플 준비도 GIAB과 함께 non-GIAB 데이터도 준비하고, 정렬 프로그램도 BWA, BOWTIE, Isaac, Novoalign 다양하게, 변이 caller도 GATK, FreeBayes, Strelka이외에도 DeepVariantClair3Octopus 등 다양한 변이 caller를 도입해서 테스트를 진행해 보았다고 합니다.

Clair3와  Octopus는 처음들어 봤네요 @.@ 역시 사람은 공부를 해야함

그리고 GIAB외에도 non-GIAB 데이터를 활용한것은 또 새로운 접근법인듯합니다. 아무래도 많은 연구가 이뤄진 데이터와 그러지 않은 데이터간의 차이가 있을 수 있고, 아직 T2T를 사용한 변이 탐지 벤치마킹 논문을 찾아보진 못했는데 이 또한 조만간 나오겠네요. 이미 나와 있을수도.. 


여튼 이것저것 따져 봤을 때 정렬 프로그램은 일단 Bowtie2는 성능이 저하되는 결과를 보여주기에 사용하면 안되는 방법이고, 변이 탐지에서는 DeepVariant가 좋은 성능을 보이는 결과를 얻을 수 있었다고 합니다.

그리고 GIAB와 non-GIAB 샘플을 비교해본 바 현재 사용하는 분석 방법이 GIAB에서만 좋은 결과를 보이고 non-GIAB에서는 그렇지 않다는 것, aka GIAB 샘플이나 non-GIAB 샘플이나 편견없이 잘 분석된니, 현재 분석 방법들을 활용해도 문제가 없다는 것을 확인하였다고 합니다.

그러나 아직 존재하는 몇 가지 문제점을 지적하기도 했습니다.

기계학습 방법을 사용하는 caller 같은 경우 모델에 따라 변이 탐지에 문제가 발생할 수 있기 때문에 조심해서 사용하여야 하고, 앞서 얘기했던 T2T 표준 유전체를 사용하였을 때 발생할 수 있는 기존 정렬 프로그램이나 변이 탐지 프로그램의 한계점이나 영향(부정적인)은 확인된바가 없기떄문에 검토가 필요하다는 점, GIAB이나 non-GIAB이던 일반적인 벤치마킹에 사용하고 있는 표준 샘플들의 사용 region에 대한 문제, 대게 잘 정의된 변이들은 유전자 영역에 분포하고 있기 때문에 비유전자 영역에 있는 변이 또는 시퀀싱이 잘 되지 않은 영역들에 대한 정보는 제한적일 수 있기에 이런 단점들이 보강된 표준 샘플들이 필요하는 점, NGS 데이터의 경우 지속적으로 개선되고 새로운 방법이나 도구들이 개발되고 있으나 민감도, 재현성과 같은 변이 탐지 성능 지표에 집중되어 있지 분석 시간이나 사용의 편의성, 프로그램 설치 난이도와 같은 비교적 중요하게 다루지 않는 항목들에 대해서도 관심이 필요하다는 것들에 대해서 언급을 해주었습니다. 


간만에 최신 변이 탐지 벤치마킹 논문을 한번 읽어봤는데, 저는 유익한 시간이었는데 어떠셨나요? 

이제 즐거운 주말을 보내러~ :)


ps. 근데 chatGPT한테 요약 해달라고 하니 왜 이 논문에서 Dama dama (사슴)을 왜 그리 찾는지... 처음에는 내가 url을 잘못 입력한줄 알았는데... 



출처: @ye._.vely618


토요일, 12월 26, 2020

Long read는 Long read alignment로....

간만에 글 투척합니다.

오늘은 Long read align관련된 내용 투척 하도록 하겠습니다.

시퀀싱 기술이 좋아져서 PacBio와 함께 nanopore가 (최근 covid도 있었고) 함께 많이 이용되고 있는데 질좋은 long read를 생산하셨다면 bwa/bowtie와 같은 short read alignment보다는 long read에 최적화된 long read alignment인 minimap2같은 tool를 사용하시는게 정신건강에 좋을 것 같습니다.

최근 제가 별생각없이 long read서열을 human genome에 aling할때 bwa mem의 -x ont2d옵션을 사용하여 진행했었는데...

통수를 후려 갈기는... (원래 통수는 후려 갈기는 맛이 좋다능)


bwa mem -x ont2d를 사용하는 경우 원래 생산된 read(raw read 개수)보다 더 많은 read 들이 aligned되는 것 처럼 보인다는... (?? 생산된게 100개 read인데 align된 read는 200개라고?)

근데 minimap2를 사용하였을 때에는 reference에 align된 read의 개수와 생산된 read 개수(raw 리드 개수)가 유사한(aka 생산된 read 개수보다 적은) read 개수를 확인 할 수 있었습니다.

개발자도 같고(Heng Li), 같은 align하는 tool인데 왜 이렇게 차이가 나느냐 

음... bwa와 minimap2를 자세히 까보지는 않았지만(못하지만) bwa의 경우 mem -x ont2d를 사용한다고 하더라도 태생부터가 short read를 위해서 만들어진 alginment이고 nanopore의 경우 마음먹고 시퀀싱이 된다면 수십 kb의 길이가 나오는 관계로 bwa mem에서 seed를 기준으로  align할때 mismatch나 error에 대해서 관대하게 조건을 잡으면서 확장을 한다로 하더라도 수십 kb까지 확장하지 못하는 경우가 발생 하고 그 경우 split이 되어 다른 reference에 align되는 경우가 발생하는것으로 보였습니다.

대신 minimap2의 경우 long read를 고려해서 만들다 보니 확장이 비상식적으로 read가 길더라도 확장을 하지 split하지 않아서 bwa의 경우와 같이 생산된 read보다 많은 read가 align된 것 처럼 보이는 이상한 문제는 발생하지 않는 것 처럼 보였습니다.

결론은 내 데이터에 맞는 mapper를 사용해서 분석하자 되겠습니다. ㅠ.ㅜ


추신: 2018년도 이런 글(Minimap2 and the future of BWA)도 있었군요;; 



출처: @ye._.vely618


금요일, 3월 01, 2019

간만에 RNAseq 분석 해보기 -Reference편-

Alignment를 수행하기 위해서는 reference가 필요합니다.
모 어떤 alignment 툴에서는 그냥 genome 서열만 있어도 되지만
하이 쓰루풋 시퀀싱 데이터를 다룰 때는 대부분 genome 서열을
나름의 index를 새로 생성하게 됩니다.

앞에서 설치했던 aligner들의 index를 만드는 작업의 로그를 남겨보도록 하겠습니다.

BWA
$ ~/bwa/bwa index -p index_name genome.fa

hisat2
$ ~/hisat2/hisat2_extract_exons.py genome.gtf > genome.exon
$ ~/hisat2/hisat2_extract_splice_sites.py genome.gtf > genome.ss
$ ~/hisat2/hisat2-build -f genome.fa --ss genome.ss --exon genome.exon genome_index_base
STAR
$ ~/STAR/STAR --runThreadN 16 --runMode genomeGenerate --genomeDir genomeOutFolder --genomeFastaFiles genome.fa --genomeSAindexNbases index_base --sjdbGTFfile genome.gtf --sjdbOverhang 99

Kallisto
$ ~/tophat/gtf_to_fasta genome.gtf genome.fa genome.gtf2fa.fa
$ ~/kallisto/kallisto index --index=index_name genome.gtf2fa.fa

Salmon
$ ~/salmon/bin/salmon index -t genome.gtf2fa.fa -i genome_idx --type quasi -k 31



이렇게 하면 각 align tool을 사용하기 위한 reference는 준비되었습니다.


출처: SM

수요일, 2월 27, 2019

간만에 RNAseq 분석 해보기 -설치편-

근 몇년 만인가요..
간만에 RNAseq을 손에 뭍혀봅니다.!! :)

여러가지 Tool을 조합해서 일단 해보고 좋은 놈 골라 쓸 생각이라서
여러 aligner와 abundance tool을 사용할 예정입니다.
그래서 오늘은 서버에 설치된 프로그램 유무 확인 및 업데이트를 해봐야겠습니다. Orz

그래서 오늘 설치편되겠습니다.

오랜만에 작업하는것이라 잘 될지 모르겠습니다. ㅋ

사실 이건 그냥 스킵하셔도 됩니다.
그냥 제 작업 로그 남기는 거거든요 ㅎㅎ :)

bwa (https://github.com/lh3/bwa, 2019.02.27 기준 0.7.17)
$ git clone https://github.com/lh3/bwa.git
$ cd bwa
$ make

hisat2 (https://ccb.jhu.edu/software/hisat2/index.shtml, 2019.02.27 기준 2.1.0)
$ wget http://ccb.jhu.edu/software/hisat2/dl/hisat2-2.1.0-Linux_x86_64.zip
$ unzip isat2-2.1.0-Linux_x86_64.zip

STAR (https://github.com/alexdobin/STAR, 때마침 2019.02.25일에 업데이트 ㄷㄷ)
$ wget https://github.com/alexdobin/STAR/archive/2.7.0e.tar.gz
$ tar -xzf 2.7.0e.tar.gz
$ cd STAR-2.7.0e

StringTie (https://ccb.jhu.edu/software/stringtie/ 2019.02.27 기준 1.3.5)
$ wget http://ccb.jhu.edu/software/stringtie/dl/stringtie-1.3.5.Linux_x86_64.tar.gz
$ tar zxf stringtie-1.3.5.Linux_x86_64.tar.gz
$ cd stringtie-1.3.5.Linux_x86_64

HT-Seq (https://github.com/simon-anders/htseq, 2019.02.27 기준 0.11.0)
$ pip install HTSeq
혹은
$ pip install 'HTSeq==0.11.0'
혹은
$ easy_install 'HTSeq==0.11.0'

잘 안되시면 주위에 리눅스에 HTSeq를 설치할 줄 아는 친구를 찾으십시요! :)

Kallisto (https://pachterlab.github.io/kallisto/, 2019.02.27 기준 0.45.0)
$ wget https://github.com/pachterlab/kallisto/releases/download/v0.45.0/kallisto_linux-v0.45.0.tar.gz
$ tar zxf kallisto_linux-v0.45.0.tar.gz
$ cd kallisto_linux-v0.45.0

Salmon (https://combine-lab.github.io/salmon/, 2019.03.04 기준 0.12.0)
$ wget https://github.com/COMBINE-lab/salmon/releases/download/v0.12.0/salmon-0.12.0_linux_x86_64.tar.gz
$ tar zxf salmon-0.12.0_linux_x86_64.tar.gz
$ cd salmon-0.12.0_linux_x86_64/bin

일단 설치는 여기까지,
옛날에는 컴파일하느라 설치가 반이었는데
요즘은 걍 컴파일이 잘 되어 있어서 ㅎㅎ :)

다음 포스팅은 reference 생성 내용입니다. ㅋ
-별거 없습니다. :)

출처: JYP