USEARCH算法在數據庫中搜索對一個或多個數據庫序列(“目標”)的高一致性命中。USEARCH由usearch_global和usearch_local命令使用,并由cluster_fast和cluister_smallmem用作子例程。該算法與為低身份本地搜索而設計的UBLAST算法從根本上不同。
推薦的標識范圍
USEARCH對蛋白質的識別率為50%及以上,對核苷酸的識別率為75%及以上時有效。
字數統計和U排序
USEARCH利用了這樣的事實,即相似的序列往往有幾個共同的短字。這些單詞的長度固定為k,有時也稱為kmers。與使用kmer計數的其他程序不同,USEARCH不會嘗試根據匹配kmers的數量來估計序列同一性。這是因為身份僅與字數大致相關,而沒有給出準確的估計,尤其是對于較低的身份。而是,USEARCH使用單詞計數對數據庫搜索進行優先級排序。按照減少唯一字數(U)的順序將目標序列與查詢進行比較。這是USEARCH中的“ U”。如果命中率超過了身份閾值 存在于數據庫中,很可能在U排序目標列表(“ U向量”)的開頭附近找到。
接受和拒絕
“接受”是高于同一性閾值的目標序列,因此可以視為命中?!熬芙^”是與查詢進行比較但低于閾值的目標序列。如果將目標與按U排序的查詢進行比較,則:
?。╥)找到的第一個匹配可能是數據庫中存在或接近數據庫的最佳匹配;以及
?。╥i)沒有命中發生的拒絕次數越多,存在命中的可能性就越小。
這意味著,如果(i)找到了一個命中點,或者(ii)發生了幾次拒絕,則可以盡早終止搜索,而只損失很小的靈敏度。該終端選項 -maxaccepts和-maxrejects確定何時停止搜索。該技術可以顯著提高速度,這對于生物學中越來越常見的非常大的序列數據集是決定性的優勢。
單詞索引
USEARCH使用數據庫中單詞的索引來快速計算給定查詢的U向量。索引選項允許微調速度,靈敏度和內存使用。索引可以存儲在UDB文件中,這在重復搜索大型數據庫時可能是有利的?;蛘?,例如,當以FASTA格式提供數據庫時,可以動態構建索引。cluster_fast和cluister_smallmem也使用索引,它使用USEARCH作為子例程,以將查詢序列與現有集群的質心數據庫進行匹配。使用聚類時,由于必須在識別新的聚類時更新數據庫,因此索引必須動態構建。