Как отправить все R-скрипты в каталог, используя один файл .sh с qsub? - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть каталог diffexp с 50 R скриптами, которые называются diffexpRcommands_neurons_nn.R (где nn - это число от 00 до 50.

. Я бы хотелзапустить как можно больше из них параллельно в кластере.

Есть ли способ, которым я могу представить все сценарии, используя qsub, но без необходимости создавать отдельный .sh сценарий для каждого .R script?

По сути, я запускаю тесты дифференциальной экспрессии между парами кластеров ячеек (с помощью функции Seurat FindMarkers().

Поскольку имеется 52 кластера ячеек, существует 1326 сравнений сЯ сгенерировал команду для каждой из комбинаций, а затем разделил эти команды на 50 различных файлов, с ~ 25 сравнениями в каждом. Идея состоит в том, чтобы попытаться выполнить каждый набор из 25 команд одновременно или, по крайней мере,как можно больше.

Каждый скрипт diffexpRcommands_neurons_nn.R содержит один и тот же заголовок:

source("/path/to/code/setupCSE.R")
library(gmodels)
library(Matrix)
library(RANN)
library(igraph)

load(file="/path/to/seuratobjects/alltogether_neurons.RData")

После 26 сравнений между парами кластеров ячеек:

# 1 vs 2
cluster1vs2.markers <- FindMarkers(alltogether_neurons, "1", "2")
write.table (cluster1vs2.markers,
 "/path/to/alltogether_neurons_1vs2_markers.txt",
  sep="\t", quote=F, col.names=NA)

# 1 vs 3
    cluster1vs3.markers <- FindMarkers(alltogether_neurons, "1", "3")
write.table (cluster1vs3.markers,
 "/path/to/alltogether_neurons_1vs3_markers.txt",
  sep="\t", quote=F, col.names=NA)

.
.
.

ии так далееl конец последнего файла diffexpRcommands_neurons_50.R:

# 51 vs 53
    cluster51vs52.markers <- FindMarkers(alltogether_neurons, "51", "52")
    write.table (cluster1vs3.markers,
      "/path/to/alltogether_neurons_51vs52_markers.txt",
      sep="\t", quote=F, col.names=NA)

Я начал думать, что могу каким-то образом запустить массив заданий, но я не знаю, возможно ли это, поскольку каждое задание представляет собой отдельный наборКоманды (различный набор комбинаций).

Спасибо.

1 Ответ

0 голосов
/ 06 декабря 2018

Что-то вроде:

library(parallel)
cl <- makeCluster() # adjust depending on needs.

files <- list.files('/diffexp', pattern = '.R*')
parLapply(cl, files, source)
...