一、概述
tsinfer是一個基於Python編寫的有效的序列基因型推斷工具,可幫助研究人員在人類群體中推斷個體的基因型,以便更深入地理解人類遺傳變異的性質和行為。tsinfer的核心思想是基於”直接似然推斷”,該方法利用貝葉斯統計學和HMM來推斷祖先間的遺傳關係,這使得(tsinfer)成為了目前速度和準確性最好的基因型推斷軟件之一。
二、tsinfer的功能特性
1、支持基於測序數據的直接推斷,使其在大規模基因組學項目中特別有用;
2、作為一種基於單倍型的推斷方法,tsinfer可以處理僅使用 SNPs 測序數據的複雜樣本,並可以更好地處理極端情況;
3、可以使用tsbeagle提供的結果來進行極高質量的複測,精度達到或優於同類工具。
三、tsinfer的工作原理
tsinfer使用基於隱馬爾可夫模型的算法,以最大化給定的序列數據與生成基因信息的祖先單倍型的可能性。該算法可以被形式化地描述為以下過程:
1、根據序列數據,對單倍型進行組合,得到遺傳變異層次;
2、使用「前向-後向」算法獲得祖先單倍型的可能性,從而估算基因史實例中世代間基因傳遞的概率分佈;
3、通過遞歸啟發式地執行基於祖先遺傳結構的全局排除單倍子體算法,來構建單倍型樹,該算法的目的是最小化葉節點中最小異質型數的數量;
4、使用標準化嵌入 (Canonical Embedding) 的算法來生成實際的遺傳關係樹。
四、tsinfer的使用舉例
下面是一個演示tsinfer用於humpback whale的個體推斷的的示例:
import tsinfer
import tsdate
import tskit
#載入whale的多個vcf文件
vcfs = ["1.vcf.gz", "2.vcf.gz", "3.vcf.gz", "4.vcf.gz"]
samples_file = "samples.txt"
#從VCF數據中創建tskit基礎數據
callsets = tsinfer.load(vcfs, ploidy=2)
ts = tsinfer.match_samples(callsets, samples_file)
#使用tsinfer執行單倍型推斷
samples = tsinfer.formats.convert_msprime_to_sample_data(ts)
inferred_ts = tsinfer.infer(samples, num_threads=4)
#推斷真實時間表;需要tsdate
tsdate.infer(inferred_ts, Ne=1000, mutation_rate=1e-8)
五、結語
本文簡要介紹了tsinfer的功能特性、工作原理以及一個簡單的Python演示,這只是tsinfer工具的冰山一角,更多功能特性的實現需要確定的數據輸入和實驗流程。如果你有相關的基因型推斷需求,tsinfer肯定是你不錯的選擇。
原創文章,作者:QOPK,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/145090.html