恭喜~~~ 我們已經到sample post-processing 的階段了!!!
我也快完賽了,雖然還有很多沒有介紹到,但是盡力有背景跟大概的介紹,
變異體篩選是過濾和去除變異體資料集中的低品質資料或不需要的變異體,以確保後續的分析是基於高品質和可靠的資料進行的。 這個步驟的主要目的如下:
去除低質量變異體:低品質的變異體可能是由於定序錯誤、技術雜訊或其他因素引起的。 透過適當的品質過濾,可以排除這些變異體,以降低假陽性的風險。
去除已知的技術性假陽性:某些變異體過濾標準可能會根據已知的技術性假陽性進行設置,以進一步提高數據的可靠性。
過濾變異體層級和基因型層級:篩選可以應用於整個變異體資料集,也可以針對每個基因型進行,以確保每個變異體都符合品質標準。
選擇特定類型的變異體:有時研究可能只關心某些特定類型的變異體,例如SNP或Indel。 因此,可以透過篩選來選擇這些特定類型的變異體。
GATK推薦的最好的過濾方式是用VQSR功能,它透過機器學習演算法來判斷SNP的優劣,因此至少需要兩個已存在的SNP 資料集,一個是經過驗證的高品質SNP 資料集作為真集(如HapMap),還需要一個質量不是特別高,允許存在小部分假陽性的資料集做訓練集(如,1000G)。難找這些資料的話,例如本流程用硬過濾(hard-filtering)的方法進行變異過濾。
(絕對不是我懶!!!)
變異體註釋是將基因體變異體進行標記和附加附加資訊的過程,以更深入地理解變異體的生物學含義。 變異體註釋的主要目的如下:
新增功能性註釋:透過註釋,可以確定變異體是否落在基因的編碼區域(外顯子、內含子等)或非編碼區域(調控區域、間隔區域等)。 這有助於理解變異體對基因功能的影響。
基因和蛋白質影響:註釋可以提供有關受變異體影響的基因和蛋白質的資訊。 這包括該基因的功能、受變異體影響的蛋白質結構和功能等資訊。
疾病相關性:透過註釋,可以識別與特定疾病或表型相關的變異體,這有助於疾病遺傳學研究。
外部資料庫資訊:註釋還可以提供關於變體在外部資料庫中的信息,如dbSNP ID、ClinVar、gnomAD等。 這有助於研究人員比較不同數據來源中的信息。
#!/bin/bash
# filter and annotate variants
# directories
ref="/Users/Desktop/demo/reference_files/hg38/hg38.fa"
results="/Users/Desktop/demo/variant_calling/results"
if false
then
# -------------------
# Filter Variants - GATK4
# -------------------
# Filter SNPs
gatk VariantFiltration \
-R ${ref} \
-V ${results}/raw_snps.vcf \
-O ${results}/filtered_snps.vcf \
-filter-name "QD_filter" -filter "QD < 2.0" \
-filter-name "FS_filter" -filter "FS > 60.0" \
-filter-name "MQ_filter" -filter "MQ < 40.0" \
-filter-name "SOR_filter" -filter "SOR > 4.0" \
-filter-name "MQRankSum_filter" -filter "MQRankSum < -12.5" \
-filter-name "ReadPosRankSum_filter" -filter "ReadPosRankSum < -8.0" \
-genotype-filter-expression "DP < 10" \
-genotype-filter-name "DP_filter" \
-genotype-filter-expression "GQ < 10" \
-genotype-filter-name "GQ_filter"
# Filter INDELS
gatk VariantFiltration \
-R ${ref} \
-V ${results}/raw_indels.vcf \
-O ${results}/filtered_indels.vcf \
-filter-name "QD_filter" -filter "QD < 2.0" \
-filter-name "FS_filter" -filter "FS > 200.0" \
-filter-name "SOR_filter" -filter "SOR > 10.0" \
-genotype-filter-expression "DP < 10" \
-genotype-filter-name "DP_filter" \
-genotype-filter-expression "GQ < 10" \
-genotype-filter-name "GQ_filter"
# Select Variants that PASS filters
gatk SelectVariants \
--exclude-filtered \
-V ${results}/filtered_snps.vcf \
-O ${results}/analysis-ready-snps.vcf
gatk SelectVariants \
--exclude-filtered \
-V ${results}/filtered_indels.vcf \
-O ${results}/analysis-ready-indels.vcf
# to exclude variants that failed genotype filters
cat analysis-ready-snps.vcf|grep -v -E "DP_filter|GQ_filter" > analysis-ready-snps-filteredGT.vcf
cat analysis-ready-indels.vcf| grep -v -E "DP_filter|GQ_filter" > analysis-ready-indels-filteredGT.vcf
# -------------------
# Annotate Variants - GATK4 Funcotator
# -------------------
# Annotate using Funcotator
gatk Funcotator \
--variant ${results}/analysis-ready-snps-filteredGT.vcf \
--reference ${ref} \
--ref-version hg38 \
--data-sources-path /Users/Desktop/demo/tools/functotator_prepackaged_sources/funcotator/hg38/funcotator_dataSources.v1.7.20200521g \
--output ${results}/analysis-ready-snps-filteredGT-functotated.vcf \
--output-file-format VCF
gatk Funcotator \
--variant ${results}/analysis-ready-indels-filteredGT.vcf \
--reference ${ref} \
--ref-version hg38 \
--data-sources-path /Users/Desktop/demo/tools/functotator_prepackaged_sources/funcotator/hg38/funcotator_dataSources.v1.7.20200521g \
--output ${results}/analysis-ready-indels-filteredGT-functotated.vcf \
--output-file-format VCF
fi
# Extract fields from a VCF file to a tab-delimited table
gatk VariantsToTable \
-V ${results}/analysis-ready-snps-filteredGT-functotated.vcf -F AC -F AN -F DP -F AF -F FUNCOTATION \
-O ${results}/output_snps.table