#r
#r
Вопрос:
Я объясняю свою проблему. Я хочу вычислить масштабируемость алгоритма на моем наборе данных (тысячи строк). Для этого я хочу подмножество этого набора данных и увеличить размер подмножеств из 500 строк (итак, 1-е подмножество 500 строк, 2-е подмножество 1000 строк, 3-е подмножество 1500 строк …) .
Для этого я буду использовать slurm и функцию SLURM_ARRAY_TASK_ID. Это мой R-код :
# load packages
library(SpiecEasi)
library(optparse)
args <- commandArgs(trailingOnly = F)
# get options
option_list = list(
make_option(c("-s", "--subset"), type="character", default=NULL,
help="Input file matrix ")
);
opt_parser = OptionParser(usage = "Usage: %prog -f [FILE]",option_list=option_list,
description= "Description:")
opt = parse_args(opt_parser)
# main code
print('Load matrice')
data<-read.table("/home/vipailler/PROJET_M2/raw/truelength2.prok2.uniref2.rares.tsv", h=T, row.names=1, sep="t")
print('Subset matrice')
data=data[1:opt$subset,]
#print(data)
print('Translate')
data=t(data)
#print(data)
se_gl <- spiec.easi(data, method='glasso', lambda.min.ratio=1e-2, nlambda=20)
size=format(object.size(se_gl), units="Gb")
print(size)
######!!!!######
save(se_gl, file="/home/vipailler/PROJET_M2/data/se_gl.RData")
Моя проблема заключается в следующем: если я использую 5 массивов для вычисления масштабируемости алгоритма spiec.easi (таким образом, от 500 до 2500 строк), я бы хотел, чтобы он создавал 5 разных переменных se_gl . Я имею в виду, что моя последняя командная строка сохранит только последнюю переменную (2500 строк) и перезапишет 4 других.
Итак, как я могу создать 5 разных переменных из одной и той же переменной se_gl? Я знаю, что с slurm этот код будет выполнен, например, 5 раз (если я настрою 5 массивов), но проблема в моей последней командной строке…
Какая-нибудь помощь?
Лучшие
Ответ №1:
У вас есть несколько вариантов. Поскольку вы упомянули slurm, вы, вероятно, захотите просто изменить имя файла, чтобы сохранить масштабируемое решение.
save(se_gl, file = sprintf("/home/vipailler/PROJET_M2/data/se_gl_%s.RData", opt$subset))
Комментарии:
1. Спасибо за ваш ответ. Эта команда создаст 5 отдельных файлов в соответствии с моими различными подмножествами, так что?
2. @VPailler если пять разных файлов — это не то, что вам нужно, я бы предложил создать список длиной 5 и сохранить его.
3. На самом деле, я хочу создать 5 файлов в соответствии с моими 5 подмножествами. Первый файл будет соответствовать моему подмножеству 1, второй файл будет соответствовать моему подмножеству 2…. Я не хочу сохранять только тот файл, который соответствует масштабируемому решению
4. Мое решение создает файл на основе подмножества. Не уверен, чем отличается желаемый результат. Возможно, вы могли бы изменить свой вопрос, чтобы прояснить этот момент? @VPailler