GAPIT3的farmcpu模型做GWAS,报错

2024-04-30 15:24:48 浏览数 (1)

大家好,我是邓飞。

一个好的问题,可以引起思考,通过查资料回答问题的过程,是加深理解的过程,然后通过输出,就是掌握深化。

星球里面老师提问了一个问题:

集群一般不会是内存的问题,但是报错显示“memory not mapped”,显然是内存的问题。其实是不是内存的问题不是最重要的,最重要的是怎么做?

要想解决这个问题,需要调用之前的经验,这个报错我也遇到过,大样本或者千万级别的位点,用gapit跑时就会报错,即使服务器配置很好满足条件,也是报错。那么怎么解决呢?

1,换软件,gapit由于R语言包的缘故,而R语言本身对大数据支持有限很容易崩,换软件,比如gcta、gemma就挺好,几千的样本几千万的snp,跑起来很快的,“嗖”的一下……,缺点就是模型单一,不能用farmcpu、blink、cmlm等高级模型了。不过换一种思路,数据量大的时候,高级模型影响很小,跑一下看看结果未尝不可。数据分析不是一锤子买卖,而是互动性极强探戈,有来有回反馈跟进,根据结果调模型是基本操作,分析数据的经验越多,越能明白一个道理:对数据严刑拷打,总能得到理想的结论(狗头)。

2,分解步骤,gapit跑gwas模型,会用到kinship亲缘关系矩阵,使用过R语言计算G矩阵的小伙伴都知道,内存是嗷嗷叫的往上增加,没办法,算法不行硬件来凑。但是,10万的矩阵求逆基本就是不可能,数据是成倍的增加,而内存是指数的增加,所以,R语言计算kinship不行,用别的软件计算好再用就行了。C 、C语言不香吗,像gemma和gcta都可以构建kinship矩阵,速度很快。然后用gapit从外部导入kinship就可以解决了。

一个好的问题,可以引起很多思考,之前遇到这个问题,我都是知难而退,毕竟模型这么多,这个跑不动用其他模型,通过这个问题的思考,发现还是有解决方案的。

古人云:教学相长。诚不欺我也。

0 人点赞