在服务器平台中的2个CPU,18G的运行内存的情况下测试我的代码,具体是一个计算的公式,我也尝试了@views,@@floop等一些提高效率的宏,但运行的时候还是会崩溃,请问我的代码该在哪些方面进行优化呢,能在16G的运行内存下正常运行?
function make_G_0(SNP_matrix)
SNP_matrix = [convert_genotype(s) for s in SNP_matrix]#首先将基因型转换为0,1,2,missing
n, m = size(SNP_matrix) #n为snp数,m为个体数
#先计算每个SNP的频率
p = vec(sum(SNP_matrix, dims = 2) ./ (2*m)) #vec变为数组形式
SNP_matrix = SNP_matrix[findall(x -> x != 1, p),:]
p = p[findall(x -> x != 1, p)]
#计算G矩阵
G = (((SNP_matrix' .- 2*p') ./ ((2*p .* (1 .- p)))') * (SNP_matrix .- 2*p) ) / length(findall(x -> x != 1, p))
return G
end