Как автоматизировать отправку пакетных заданий LSF через цикл по одному аргументу для запуска сценария R? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть тысячи файлов и папок с одинаковой структурой в главном пути к каталогу.Я пытаюсь улучшить время обработки сценария R, автоматизируя несколько пакетных заданий LSF с использованием аргументов.У меня есть некоторый опыт работы с R, но нет опыта работы с командным файлом и другим языком.

Описание структуры моих папок:

В главном каталоге у меня естьнесколько папок с именами в зависимости от года, и каждая из этих папок содержит другие папки в зависимости от имени модели.Папки с именами на основе модели содержат файлы, которые я вычисляю.

                               year        model

                                     ----- A
                           |----1980|
                           |         ----- B
main directory path -------|
                           |         ----- A
                           |----1981|
                                     ----- B

R скрипт

У меня есть R скрипт, где у меня есть два параметра "год" и "модель", которые будут моими аргументами.Я создаю воспроизводимый пример:

library(raster)

#Creation of raster files that that allow to create files. Here, I only create two rasters that should be place in one folder model. 

r1= raster(nrows = 1, ncols = 1, res = 0.5,
       xmn = -1.5, xmx = 1.5, ymn = -1.5, ymx = 1.5,
       vals = 0.3)

 r2= raster(nrows = 1, ncols = 1, res = 0.5,
       xmn = -1.5, xmx = 1.5, ymn = -1.5, ymx = 1.5,
       vals = 0.1)

 which_year=arg[1]
 years<- c("1980", "1981")
 year<- years(which_year)

 which_model=arg[2]
 models<- c("A"  ,"B")
 model<- models(which_model)

     setwd(file.path("directory_path",year, model)


pr<- stack(r1, r2)
mean<- mean(pr)

writeRaster(mean, file.path("directory_path",year, model_name,  'stackr1r2.tif'))

Пакетный код

Моя задача - реализовать цикл в пакетном скрипте.Я хотел бы автоматизировать подачу пакетных заданий по годам и моделям, что позволит мне перейти в соответствующий каталог.Тем не менее, я понятия не имею, как это сделать.

Я знаю, что структура должна быть примерно такой:

do from model = 1, nmodel
do from year =1, nyear

bsub -n 1 -W 3600 "Rscript mycode.R year model"
enddo
enddo

Спасибо за любую помощь, и я надеюсь, что я был ясен в своих объяснениях, поскольку у меня нет технического словаря!

...