Genom çapında ilişkilendirme çalışma verilerini analiz etmek için R kullanıyorum. Yaklaşık 500,000 potansiyel belirleyici değişkenim (tek nükleotid polimorfizmleri veya SNP'ler) var ve bunların her biri ile sürekli bir sonucu arasındaki ilişkiyi test etmek istiyorum (bu durumda, kandaki düşük yoğunluklu lipoprotein konsantrasyonu).GWAS verilerini analiz etmek için çok çekirdekli R'yi kullanma
Zaten bunu sorunsuz yapan bir komut dosyası yazdım. Kısaca açıklamak gerekirse, "Data" adlı bir veri nesnesine sahibim. Her sıra, çalışmadaki belirli bir hastaya karşılık gelir. Yaş, cinsiyet, vücut kitle indeksi (BMI) ve kan LDL konsantrasyonu için sütunlar vardır. SNP verileriyle birlikte yarım milyon başka sütun da var.
Şu anda görüldüğü gibi, doğrusal modele yarım milyon kez çalıştırmak için döngü için kullanıyorum:
# Repeat loop half a million times
for(i in 1:500000) {
# Select the appropriate SNP
SNP <- Data[i]
# For each iteration, perform linear regression adjusted for age, gender, and BMI and save the result in an object called "GenoMod"
GenoMod <- lm(bloodLDLlevel ~ SNP + Age + Gender + BMI, data = Data)
# For each model, save the p value and error for each SNP. I save these two data points in columns 1 and 2 of a matrix called "results"
results[i,1] <- summary(GenoMod)$coefficients["Geno","Pr(>|t|)"]
results[i,2] <- summary(GenoMod)$coefficients["Geno","Estimate"]
}
Bunların hepsi iyi çalışır. Ancak, analizimi hızlandırmak isterim. Bu nedenle çok çekirdekli, DoMC ve foreach paketlerini denedim.
Soruma göre, birisi bu kodu foreach şemasını kullanarak uyarlamama yardımcı olabilir mi?
Komutu, görünüşte 16 çekirdeği olan bir Linux sunucusunda çalıştırıyorum. Foreach paketi ile denemeyi denedim ve bunu kullanarak sonuçları karşılaştırmalı olarak kötü oldu, yani foreach kullanarak analizi çalıştırmak için uzun alır. gösterildiği gibi
Örneğin, ben lineer model nesneleri tasarrufu denedim:
library(doMC)
registerDoMC()
results <- foreach(i=1:500000) %dopar% { lm(bloodLDLlevel ~ SNP + Age + Gender + BMI, data = Data) }
Bu döngü sadece normal kullanma gibi iki kat uzun daha fazla sürer. Bunu daha iyi ya da daha hızlı nasıl yapacağınıza dair herhangi bir tavsiye memnuniyetle karşılanacaktır! Lapa'nın paralel versiyonunu kullanmanın bir seçenek olabileceğini, ancak bunu nasıl yapacağımı bilmediğimi anlıyorum.
Tüm iyi,
Alex
R 2.14'e güncelleyin ve 'parallel' paketini kullanın. Ve biz de bizler üzerinde çalışırken, bize yeniden üretilebilecek bir örnek vererek, kesinlikle yardımcı olacaktır. [Bu soru] bölümüne bakın (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) –
Joris, tavsiye için teşekkürler. Http://www.biomedcentral.com/content/pdf/1471-2105-9-390.pdf adresinde 'parallel' dokümantasyonunu buldum ve şimdi okuyacağım. – Alexander
Paket 'kar yağışı 'masanın dışında mı (bana vurma, Dirk)? –