每日学习:贪心算法(SNP聚集的补充阅读)
最显著SNP法寻找独立基因位点
如何对自己计算获得的GWAS的summary statistics,或者公开数据库中的GWAS结果寻找独立基因位点,用于论文结果展示。
付费内容:
Plink-clump(聚集)代码及解释、原理解析、结果分析、数据下载链接、常用参数设置等及录音。
---今日内容---
---以下内容一部分摘自知乎“小白算法”---
---PLINK相关部分为爱学妹自我领悟、举一反三,暂无参考文献支持---
贪心算法(Greedy Algorithm) ,又名贪婪法,是寻找最优解问题的常用方法,这种方法模式一般将求解过程分成若干个步骤,但每个步骤都应用贪心原则,选取当前状态下最好/最优的选择(局部最有利的选择),并以此希望最后堆叠出的结果也是最好/最优的解。
贪婪法的基本步骤:
步骤1:从某个初始解出发;
步骤2:采用迭代的过程,当可以向目标前进一步时,就根据局部最优策略,得到一部分解,缩小问题规模;
步骤3:将所有解综合起来。
事例:找零钱问题
假设你开了间小店,不能电子支付,钱柜里的货币只有 25 分、10 分、5 分和 1 分四种硬币,如果你是售货员且要找给客户 41 分钱的硬币,如何安排才能找给客人的钱既正确且硬币的个数又最少?
这里需要明确的几个点:
1.货币只有 25 分、10 分、5 分和 1 分四种硬币;
2.找给客户 41 分钱的硬币;
3.硬币最少化
用贪婪算法的做法
找给顾客sum_money=41分钱,可选择的是25 分、10 分、5 分和 1 分四种硬币。能找25分的,不找10分的原则,初次先找给顾客25分;
还差顾客sum_money=41-25=16。然后从25 分、10 分、5 分和 1 分四种硬币选取局部最优的给顾客,也就是选10分的,此时sum_money=16-10=6。
重复迭代过程,还需要sum_money=6-5=1,sum_money=1-1=0。至此,顾客收到零钱,交易结束;
此时41分,分成了1个25,1个10,1个5,1个1,共四枚硬币。
总结:贪心算法的优缺点
优点:简单,高效,省去了为了找最优解可能需要穷举操作,通常作为其它算法的辅助算法来使用;
缺点:不从总体上考虑其它可能情况,每次选取局部最优解,不再进行回溯处理,所以很少情况下得到最优解。
PLINK-clump过程
(爱学妹自我领悟,无参考文献。如有错误,欢迎后台沟通)
PLINK相关代码及默认参数设置请至链接:
1. 找到索引SNP(P-value < 0.0001),及+/-250kb的所有SNP
2. 计算索引SNP与相邻SNP的LD
(点击超链接进入)
3. 如果LD值大于0.5,从列表中剔除P-value较大的SNP
4. 再对第三步中留下的SNP,与下一个SNP计算LD
5. 重复步骤3和4,直到以一个索引SNP为起头的所有的SNP都进行了LD计算
6. 将最终剩下的局部最优SNP留下
7. 重复步骤2-6,直到所有的索引SNP都计算完毕
8. 如果某一个索引SNP在另一个索引SNP的+/-250kb范围以内,则跳过该SNP(即该SNP不会再次成为索引SNP,即不会触发步骤2-6)。
Omics