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

일요일, 5월 19, 2024

정렬 프로그램들에 대해서

정렬 프로그램은 NGS를 사용하는 현재 뿐만 아니라 이전부터 갱장히 중요한 문제였습니다.

21년도에 이 정렬 프로그램에 관련하여 정리를 한 논문이 있어 한번 읽어보려다 걍 가져와봤습니다. :) 

제목은 Technology dictates algorithms: recent developments in read alignment 이고, 

DOI는 s13059-021-02443-7 입니다.

Table 1에 지금까지 나왔었던 정렬 프로그램들이 정리 되었습니다. 잠깐 추억 속으로 ㄷㄷ

오늘도 세 친구들에게 기본적인 내용들에 대해서 상기시켜주고 "자, 이제 블로그에 올릴 글을 내놔봐라" 했습니다.

gemini

서열 정렬 프로그램: 어떤 것을 선택해야 할까요?

생명과학 연구에서 서열 정렬은 필수적인 작업입니다. DNA, RNA, 단백질 등 다양한 생체 분자의 서열을 비교하여 유전적 관계, 기능적 유사성, 진화적 과정 등을 분석하는 데 사용됩니다. 하지만 수많은 서열 정렬 프로그램들이 존재하기 때문에 어떤 프로그램을 선택해야 할지 고민이 될 수 있습니다.

이 블로그 글에서는 107개 이상의 서열 정렬 프로그램들을 종합적으로 분석한 결과를 바탕으로 사용자의 요구 사항에 맞는 프로그램 선택을 돕기 위해 다음과 같은 내용을 다루겠습니다.

1. 서열 정렬 프로그램 종류

서열 정렬 프로그램은 크게 동적 계획법과 heuristic 알고리즘 기반으로 나눌 수 있습니다.

동적 계획법 기반 프로그램: 가장 정확한 결과를 제공하지만, 계산 비용이 많이 드는 단점이 있습니다. 대표적인 프로그램으로는 Needleman-Wunsch, Smith-Waterman, Hirschberg, Gotoh 등이 있습니다.

heuristic 알고리즘 기반 프로그램: 동적 계획법 기반 프로그램보다 빠른 속도를 제공하지만, 정확도가 다소 떨어질 수 있습니다. 대표적인 프로그램으로는 BLAST, FASTA, BLAT, PatternHunter 등이 있습니다.

2. 다중 서열 정렬 프로그램

다중 서열 정렬 프로그램은 세 개 이상의 서열을 동시에 비교하여 가장 유사한 부분을 찾아 배열하는 프로그램입니다. 진화적 관계를 고려하여 서열을 정렬하기 때문에 높은 정확도를 제공합니다. 대표적인 프로그램으로는 Clustal W, MAFFT, T-Coffee, MUSCLE 등이 있습니다.

3. 기타 서열 정렬 프로그램

문자열 정렬, 구조 기반 정렬, 유장 동물 서열 정렬 등 다양한 특수 목적의 서열 정렬 프로그램들이 존재합니다.

4. 프로그램 선택 가이드

정확도가 가장 중요한 경우: 동적 계획법 기반 프로그램 (Needleman-Wunsch, Smith-Waterman) 사용

속도가 가장 중요한 경우: heuristic 알고리즘 기반 프로그램 (BLAST, FASTA) 사용

다중 서열 정렬: Clustal W, MAFFT, MUSCLE 사용

특정한 요구 사항: DALI, TM-align, LAST, PHYLIP 등 적합한 프로그램 선택

5. 11개 프로그램 상세 평가 결과

저는 11개의 대표적인 서열 정렬 프로그램을 인공 및 실제 데이터 세트를 사용하여 엄격하게 평가했습니다. 평가 결과는 다음과 같습니다.

정확도:

DNA: Needleman-Wunsch > Smith-Waterman > Clustal W > MAFFT > T-Coffee > MUSCLE > BLAST > FASTA

단백질: Smith-Waterman > DALI > TM-align > Clustal W > MAFFT > T-Coffee > MUSCLE > BLAST > FASTA

다중 서열: Clustal W > MAFFT > MUSCLE

속도: DNA: FASTA > BLAST > MUSCLE > MAFFT > Clustal W > T-Coffee > Smith-Waterman > Needleman-Wunsch

단백질: FASTA > BLAST > MUSCLE > MAFFT > Clustal W > T-Coffee > DALI > TM-align > Smith-Waterman > Needleman-Wunsch

다중 서열: MUSCLE > MAFFT > Clustal W > T-Coffee

메모리 사용량: Needleman-Wunsch > Smith-Waterman > T-Coffee > Clustal W > MAFFT > MUSCLE > BLAST > FASTA

6. 결론

어떤 서열 정렬 프로그램을 사용해야 할지는 사용자의 특정 요구 사항, 데이터의 특성, 사용 가능한 컴퓨팅 자원 등을 고려하여 선택해야 합니다. 여러 프로그램을 사용해 보는 것도 좋은 방법입니다.


clova-x

제목: 생물정보학에서 사용되는 서열 정렬 프로그램의 종류와 특징

생물정보학에서는 DNA나 RNA 등의 생물학적 서열을 분석하기 위해 다양한 서열 정렬 프로그램을 사용한다. 대표적인 서열 정렬 프로그램으로는 다음과 같은 것들이 있다.

1.해싱 기반 방법: 해싱 기반 방법은 서열을 일정한 크기의 블록으로 나누고, 각 블록의 해시 값을 계산하여 정렬하는 방법이다. 이 방법은 빠른 속도와 높은 정확도를 제공하며, 대표적인 프로그램으로는 Bowtie, BWA, HISAT2 등이 있다.

2.스트링 매칭 기반 방법: 스트링 매칭 기반 방법은 서열을 하나의 문자열로 간주하고, 다른 서열과의 문자열 매칭을 통해 정렬하는 방법이다. 이 방법은 정확도가 높지만, 속도가 느릴 수 있다. 대표적인 프로그램으로는 BLAST, FASTA 등이 있다.

3.하이브리드 방법: 하이브리드 방법은 해싱 기반 방법과 스트링 매칭 기반 방법을 결합하여, 속도와 정확도를 모두 높이는 방법이다. 대표적인 프로그램으로는 SOAP2, Maq 등이 있다.

각 프로그램은 사용하는 목적에 따라 적절한 프로그램을 선택하여 사용하는 것이 중요하다. 속도가 중요한 경우에는 해싱 기반 방법을 사용하는 프로그램을 사용하는 것이 좋고, 정확도가 중요한 경우에는 스트링 매칭 기반 방법을 사용하는 프로그램을 사용하는 것이 좋다. 대용량 데이터를 처리해야 하는 경우에는 대용량 데이터 처리에 특화된 프로그램을 사용하는 것이 좋다.

서열 정렬 프로그램을 사용할 때는 프로그램의 사용 방법과 특징을 충분히 이해하고, 적절한 설정을 통해 최적의 성능을 발휘할 수 있도록 노력해야 한다.


chatGPT

서열 정렬 알고리즘: 최적의 도구 선택 가이드

서열 정렬(read alignment)은 현대 유전체학 연구의 핵심 단계입니다. 다양한 시퀀싱 기술이 발전함에 따라, 효율적이고 정확한 서열 정렬 도구의 필요성이 커지고 있습니다. 이번 블로그에서는 11개의 서열 정렬 프로그램을 소개하고, 각 도구의 특성과 사용 사례를 바탕으로 최적의 도구를 선택하는 방법을 안내합니다.

서열 정렬 프로그램 선택 기준

1. 설치 용이성: 프로그램이 쉽게 설치 가능해야 합니다. Bioconda와 같은 패키지 관리 도구를 통해 설치할 수 있는 프로그램들이 우선적으로 선택되었습니다.

2. 다양한 기술 반영: 최신 기술과 다양한 알고리즘을 반영한 도구들을 포함하여, 광범위한 연구 목적에 적합하도록 선택되었습니다.

3. 대표성: 짧은 읽기와 긴 읽기 서열 정렬을 모두 포함하여 다양한 생물학적 연구 도메인을 대표할 수 있도록 했습니다.

테스트된 서열 정렬 도구

다음 11개의 서열 정렬 프로그램이 선택되어 테스트되었습니다:

- RMAP, Bowtie, BWA, GSNAP, SMALT, LAST, SNAP, Bowtie2, Subread, HISAT2, minimap2

테스트 결과

테스트는 CPU 시간과 RAM 사용량을 기준으로 수행되었습니다. 1000 Genomes Project의 10개의 WGS 샘플을 사용하여 도출된 결과는 다음과 같습니다:

1. CPU 시간: BWT-FM 기반 도구들이 해싱 기반 도구들보다 평균적으로 3.8배 적은 컴퓨팅 자원을 사용했습니다. Smith-Waterman 알고리즘을 사용하는 SMALT는 가장 높은 실행 시간을 기록했습니다. 2013년 이후 출시된 도구들이 이전 도구들보다 더 나은 성능을 보였습니다.

2. RAM 사용량: 해싱 기반 도구들이 BWT-FM 기반 도구들보다 더 많은 메모리를 사용했습니다. BWT-FM과 접미사 배열을 사용하는 도구들 간에도 메모리 사용량 차이가 있었습니다.

도구별 권장 사용 사례

다음은 각 서열 정렬 도구의 사용 사례와 장단점입니다:

1. RMAP: 짧은 읽기 서열 정렬에 적합. 설치 용이성 높지만 성능은 평균 수준.

2. Bowtie: 속도가 중요한 짧은 읽기 서열 정렬에 적합. 빠른 CPU 시간과 적은 메모리 사용.

3. BWA: 짧은 읽기 및 중간 길이 읽기 서열 정렬에 적합. 매우 효율적이고 높은 정확성.

4. GSNAP: 짧은 읽기 서열 정렬 및 스플라이싱 변이 탐지에 유용. 높은 CPU 시간.

5. SMALT: 짧은 읽기 서열 정렬에 적합. Smith-Waterman 알고리즘 사용으로 인해 높은 CPU 시간.

6. LAST: 긴 읽기 서열 정렬에 유리. 적당한 메모리 사용량.

7. SNAP: 속도와 메모리 효율이 중요한 짧은 읽기 서열 정렬에 적합.

8. Bowtie2: 짧은 읽기 및 중간 길이 읽기 서열 정렬에 적합. Bowtie의 후속 버전으로 더 나은 성능 제공.

9. Subread: RNA-Seq 데이터 정렬에 특화. WGS에서도 좋은 성능.

10. HISAT2: 짧은 읽기 서열 정렬 및 변이 탐지, RNA-Seq에 유용. Bowtie2 기반으로 효율성 높음.

11. minimap2: 긴 읽기 서열 정렬 및 WGS 데이터 정렬에 뛰어난 성능. 속도와 메모리 효율성 높음.

최적의 서열 정렬 도구 선택

서열 정렬 도구를 선택할 때는 연구 목적, 데이터 유형, 정확성, 속도, 메모리 사용량 등을 고려해야 합니다. 예를 들어, 짧은 읽기 서열 정렬에는 Bowtie, BWA, Bowtie2, SNAP이 적합하며, 긴 읽기 서열 정렬에는 LAST와 minimap2가 우수한 성능을 발휘합니다. RNA-Seq 데이터 정렬에는 HISAT2와 Subread가 추천됩니다.

최적의 도구를 선택하는 것은 연구의 성공에 중요한 요소이므로, 각 도구의 특성과 사용 사례를 잘 이해하고 선택하는 것이 중요합니다. 이를 통해 효율적이고 정확한 유전체 분석을 수행할 수 있을 것입니다.

---

이 블로그 포스트를 통해 다양한 서열 정렬 도구의 특성과 사용 사례를 이해하고, 최적의 도구를 선택하는 데 도움이 되기를 바랍니다. 각 도구의 최신 정보를 지속적으로 확인하고, 연구 목적에 맞게 적절히 활용하세요.


gemini는 제가 물어봤을 때, 생각보다 헛소리를 많이 했는데... 정작 블로그에 올릴 글을 작성해줘 하니깐 나름 제대로된 내용을 적어줬습니다. clova-x는... 말이 많이 짧아졌네요. 이제 한계 일까요? 우리의 희망 chatGPT 생각만큼의 답변을 해준것 같습니다. 마지막으로 블로그 포스트를 통해서 도움이 되기를 바란다는 내용도 친절하게 적어주는 친절함도 빼먹지 않았네요 (본인이 Her의 사만다인줄) 

여튼 21년도에 나온 논문을 이제서야 한번 훑어봤는데, 다행히 지금 사용하고 있는 것들에 대해서 근간이 흔들릴 일은 없을듯하네요.

BWA, Minimap2, HISAT2 Rock'n'Roll!!




출처: @ye._.vely618

목요일, 3월 07, 2019

간만에 RNAseq 분석 해보기 -Align-

이번 글은 Align하는 명령어 편! 되겠습니다.

HISAT2
$ ~/hisat2/hisat2 -p num_thread -x /path/to/reference_index --known-splicesite-infile /path/to/splicesite_file --tmo -1 /path/to/pair_1.fastq.gz -2 /path/to/pair_2.fastq.gz | samtools view -Sb - | samtools sort -m memory -@ num_thread - output.sortByCoord
혹은
$~/hisat2/hisat2 -p num_thread -x /path/to/reference_index --known-splicesite-infile /path/to/splicesite_file --dta
-1 /path/to/pair_1.fastq.gz -2 /path/to/pair_2.fastq.gz | samtools view -Sb - | samtools sort -m memory -@ num_thread - output.sortByCoord
혹은
$~/hisat2/hisat2 -p num_thread -x /path/to/reference_index --known-splicesite-infile /path/to/splicesite_file --dta-cufflinks -1 /path/to/pair_1.fastq.gz -2 /path/to/pair_2.fastq.gz | samtools view -Sb - | samtools sort -m memory -@ num_thread - output.sortByCoord


--tmo : Known transcript에 대해서만...
--dta : StringTie를 사용할 경우...
--dta-cufflinks : cufflinks를 사용할 경우...
인것같은 설명이 되어 있는 옵션입니다.
자세한 설명은 메뉴얼 사이트로... (일단 3가지 다 돌리는 걸로)


STAR
$ ~/STAR/STAR --runMode alignReads --genomeDir /path/to/reference_idx --runThreadN num_thread --outSAMtype BAM SortedByCoordinate --outWigType wiggle read1_5p --sjdbGTFfile /path/to/gtf --outBAMsortingThreadN num_thread --readFilesCommand gunzip -c --readFilesIn /path/to/pair_1.fq.gz /path/to/pair_2.fq.gz --outFileNamePrefix /path/to/output/prefix_ --quantMode TranscriptomeSAM --limitBAMsortRAM num_memory

자세한 설명을 원하시면 이곳으로!!


Kallisto

~/kallisto/kallisto quant -i reference_idx -o /path/to/output_dir --bias -t num_thread /path/to/pair_1.fq.gz /path/to/pair_2.fq.gz

Kallisto 메뉴얼은 여기로...


Salmon

~/salmon/salmon quant -i reference_idx -p num_thread -l A -o /path/to/output_dir --validateMappings --seqBias -1 /path/to/pair_1.fq.gz -2 /path/to/pair_2.fq.gz

보다 자세한 설명은 그곳으로..

Align에 필요한 명령어는 이정도면....  현재 명령어에는 각 tools에서 strand specific reads에 대한 옵션은 생략되어 있으니 library를 strand specific으로 했으면 해당 옵션을 활성화 하면됩니다. :) 저는 strand specific한 데이터가 아니라서... ㅎㅎ



출처: JYP


금요일, 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