Ich habe dieses kleine Stück Code in meinem Skript, das mehrere Annotation für Peak-Regionen berechnet. Der unten stehende Code ist ein Engpass für die Geschwindigkeit und dauert einige Stunden, da ich ungefähr 100.000 Regionen habe, für die ich dies ausführen muss, um die Anzahl der CpGs zu berechnen. Gibt es eine Möglichkeit, es zu beschleunigen?Code zu lang - Wie man beschleunigt
for (i in 1:nrow(dataMtx)){
peakCord<-gsub("chr", "", peakCord)
peakSeq<-system(sprintf("samtools faidx genome.fa %s", peakCord[i]), intern=T)
peakSeq<-gsub(">.*$", "", peakSeq)
peakSeq<-paste(peakSeq, collapse='')
dataMtx$CpGCount[i] <- sum(str_count(peakSeq, "CG"))
print(i)
}
können Sie versuchen, die 'apply()' -Funktionen und die zugehörige Familie zu verwenden. Wahrscheinlich möchten Sie data.table oder dplyr-Pakete verwenden, wenn Sie auf Geschwindigkeit drängen. Oder schreibe die Funktion in c/kompiliere sie - obwohl ich das selbst nicht ausprobiert habe. – zacdav