---
# System prepended metadata

title: HPC app - GATK

---

HPC app - GATK
==

### 1.What is GATK?
### 2.GATK - real case introduction
### 3.GATK - case tutorial 
### 4.GATK - docker images
### 5.GATK - GPU
### 6.GATK - GUI
### 7.GATK - Parallelism, Multithreading


<br>
<br>
<br>
<br>
<br>

## What is GATK?

ref.[Broad Institute GATK](https://hackmd.io/@sK-GgpcqTNWnutbxzOoG2g/rJzIawY-B)

**Genome Analysis Toolkit** (基因體分析工具)

**開發者** : Broad Institute (博勞德研究所) 
*MAP: https://goo.gl/maps/ArufnvfyvTb8DMD16 隸屬於麻省理工學院和哈佛大學*

**開發目的** : 分析人類的「基因組」和「外顯子」的變異，找出 SNPs 和 INDELs。

* **基因組**是指一個生物體的全部遺傳訊息，它包含了所有基因和非編碼區域的DNA序列。
* **外顯子**是基因組中的一個部分，包含了編碼蛋白質的DNA序列。
* **SNPs**是基因組中常見的變異形式之一，它指的是單個核苷酸的位置上發生的堿基差異。
  例如，一個位置上可能是"A"，而在另一個個體中可能是"G"。
* **INDELs**是指插入或刪除DNA序列中一個或多個含氮鹼基。
  例如，一個位置上可能插入了一個"A"含氮鹼基，導致該位置上多了一個含氮鹼基。
  
**核心功能** : 
* 用來分析基因體，尋找變異的地方。
* 晚期延伸應用：
  - 分析 RNA 序列
  - 應用到其他物種

**開發語言**：
* 核心：Java
* 腳本：python (用於打包 java 指令)
* 其他：R 語言

**支援平台** : [支援 Linux 和 MacOS X，不支援 Windows](https://gatk.broadinstitute.org/hc/en-us/articles/360035889531-What-are-the-requirements-for-running-GATK)


**2017 年 6 月釋出 GATK4，並進行開源。**

<br>
<br>



## GATK - real case introduction

**資料前處理  ->  尋找變異點  ->  資料解讀**
![image](https://hackmd.io/_uploads/rklLtHReR.png)
[ref.](https://gatk.broadinstitute.org/hc/en-us#info-tab)


<br>

**Terra 雲端平台**
[Broad Institute 與 NVIDIA 攜手將 NVIDIA Clara 導入 Terra 雲端平台，協助 25,000 名研究人員推動生物醫學發現](https://blogs.nvidia.com.tw/blog/the-broad-institute-and-nvidia-bring-nvidia-clara-to-terra-cloud-platform-serving-25-000-researchers-advancing-biomedical-discovery/)

<br>

### case1. [GATK Best Practices for Germline SNPs & Indels](https://app.terra.bio/#workspaces/help-gatk/GATK4-Germline-Preprocessing-VariantCalling-JointCalling)

使用GATK（Genome Analysis Toolkit）進行基因組變異檢測，
主要針對人類全基因組測序數據進行SNP（單核苷酸多態性）和Indel（插入和缺失）的變異調用。

* GATK版本 : 4.1.4.1
* CPU minimum : 4
* Disksize minimum : 100GB
* Memory minimum : 15GB

資料集 : [downsampled-1kgp-50-exomes](https://pubmed.ncbi.nlm.nih.gov/26432245/)
*(從 1,000 Genomes Project (1KG) 資料庫中抽取的 50 個外顯子組資料。每個外顯子組資料都包含來自 25 個不同個體的基因組資料，這些個體代表了全球人類遺傳多樣性的廣泛範圍。)*

**1. Preprocessing-For-Variant-Discovery** 
input : 未映射的 BAM 文件
output : 單個處理後的 BAM 文件及其索引
![image](https://hackmd.io/_uploads/SyJ6yICg0.png)


**2. Haplotypecaller** 
input : 處理好的 BAM 文件
output : VCF或GVCF文件(異種包含了每個基因變異調用訊息的文件，可用於後續的聯合基因分型)。
![image](https://hackmd.io/_uploads/SJsGzUAgC.png)

**3. Generate-Sample-Map**
input : 多個GVCF 文件名和路徑
output : 樣本映射文件(包含樣本名稱和GVCF文件路徑)

**4. Joint-Genotyping**
input : 樣本映射文件(包含樣本名稱和GVCF文件路徑)
output : 經過 VQSR 過濾的多樣本 VCF 文件

VCF文件包含了所有樣本的變異訊息，並經過了質量控制過濾，是用於進一步分析和研究的最終資料。


<br>


### case2. GATK Best Practices for Somatic SNVs and Indels using Mutect2
GATK的Mutect2工具對體細胞單核苷酸變異（SNVs）和插入缺失（Indels）進行探測的完整範例。

這個案例的主要目的是展示如何在科學研究和臨床測試中識別腫瘤樣本中的體細胞突變，這些突變對於理解癌癥的遺傳基礎至關重要。


* GATK版本 : 4
* CPU Minimum	4
* Disksize Minimum	100 GB
* Memory Minimum	15 GB

資料集 : [panel_of_normals ](https://console.cloud.google.com/storage/browser/gatk-tutorials/workshop_2002/3-somatic;tab=objects?project=broad-dsde-outreach&organizationId=548622027621&prefix=&forceOnObjectsSortingFiltering=false)

**1.Mutect2_PON**
創建用於後續分析中識別化學和儀器偽影的正常對照組

![image](https://hackmd.io/_uploads/ryjiDICgC.png)


**2.Mutect2_GATK4**
在單個腫瘤-正常樣本對上運行 Mutect2，進行額外的過濾和功能注釋。

![image](https://hackmd.io/_uploads/HJ1swIRx0.png)

最後得到未過濾的和過濾後的 VCF 文件，用於後續研究、分析腫瘤樣本中的變異。

<br>
<br>




## GATK - case tutorial 

### [(How to) Generate an unmapped BAM from FASTQ or aligned BAM](https://gatk.broadinstitute.org/hc/en-us/articles/4403687183515--How-to-Generate-an-unmapped-BAM-from-FASTQ-or-aligned-BAM)

介紹如何從FASTQ文件或已對齊的BAM文件，生成未映射的BAM（uBAM）文件。
這種轉換是必要的步驟，因為**uBAM文件提供了一個統一的格式來進行後續的數據分析。**


方法A：**使用FastqToSam從FASTQ文件轉換**
如果你已經擁有FASTQ文件，可以使用Picard的FastqToSam工具將這些FASTQ文件轉換成未映射的BAM文件。

```
gatk FastqToSam \
    --FASTQ 6484_snippet_1.fastq \
    --FASTQ2 6484_snippet_2.fastq \
    --OUTPUT 6484_snippet_fastqtosam.bam \
    --READ_GROUP_NAME H0164.2 \
    --SAMPLE_NAME NA12878 \
    --LIBRARY_NAME Solexa-272222 \
    --PLATFORM_UNIT H0164ALXX140820.2 \
    --PLATFORM illumina \
    --SEQUENCING_CENTER BI \
    --RUN_DATE 2014-08-20T00:00:00-0400
```
![image](https://hackmd.io/_uploads/HyCAcICe0.png)


方法B：**使用RevertSam從已對齊的BAM文件轉換**
如果你的起始數據是已對齊的BAM文件，那麽可以使用RevertSam工具將這些文件恢覆到一個類似原始數據的狀態，即轉換成未映射的BAM文件。
這通常用於去除對齊訊息，以便重新分析或進行質量控制。

```
gatk RevertSam \
    -I 6484_snippet.bam \
    -O 6484_snippet_revertsam.bam \
    --SANITIZE true \
    --MAX_DISCARD_FRACTION 0.01 \
    --ATTRIBUTE_TO_CLEAR XT \
    --ATTRIBUTE_TO_CLEAR XN \
    --ATTRIBUTE_TO_CLEAR AS \
    --ATTRIBUTE_TO_CLEAR OC \
    --ATTRIBUTE_TO_CLEAR OP \
    --SORT_ORDER queryname \
    --RESTORE_ORIGINAL_QUALITIES true \
    --REMOVE_DUPLICATE_INFORMATION true \
    --REMOVE_ALIGNMENT_INFORMATION true
```
![image](https://hackmd.io/_uploads/SyV-sIAeC.png)


使用指令查看生成的文件。
```
samtools view 6484_snippet_revertsam.bam | less
```
![image](https://hackmd.io/_uploads/rJeT98AxA.png)


<br>
<br>


## GATK - docker images

![image](https://hackmd.io/_uploads/Hk_hsLReA.png)



 docker pull nvcr.io/nvidia/clara/clara-parabricks:<TAG>   [.](https://catalog.ngc.nvidia.com/orgs/nvidia/teams/clara/containers/clara-parabricks)



    
<br>
<br>


## GATK - GPU

**NVIDIA Parabricks** 是一種加速計算框架，專門為生物基因組的應用軟體設計，主要支持 DNA、RNA 和體細胞突變檢測等分析工作。

    
### [FQ2BAM Tutorial](https://docs.nvidia.com/clara/parabricks/latest/tutorials/fq2bam_tutorial.html)
使用 NVIDIA Clara Parabricks 的 pbrun fq2bam 工具將 FASTQ 文件轉換為 BAM 文件的範例。
![image](https://hackmd.io/_uploads/SJRi6ICgC.png)

    
### [HaplotypeCaller Tutorial](https://docs.nvidia.com/clara/parabricks/latest/tutorials/haplotypecaller_tutorial.html)

    
<br>
<br>




## GATK - GUI
[視覺瀏覽定序檔案格式SAM, BAM的工具    ](https://ithelp.ithome.com.tw/m/articles/10265503)
    
IGV
Artemis
bamview    

<br>
<br>




## GATK - Parallelism, Multithreading
    
GATK官方無支援mpirun。(官網無提及)
    
<br>
    
    
兩種方法實現平行運算 :
    
1.**[Multi-threading with Spark in GATK](https://gatk.broadinstitute.org/hc/en-us/articles/360035890591-Spark)**



2.**Scatter-gather**

Cromwell + WDL實現
    
Cromwell 是一個由 Broad Institute 開發的workflow引擎，它支持運行編寫在 WDL（Workflow Description Language）中的腳本，未來也將支持 CWL（Common Workflow Language）。