我解释我的问题。我想在我的数据集(数千行)上计算算法的可伸缩性。为此,我想对该数据集进行子集化并增加500行子集的大小(因此,第一子集500行,第二子集1000行,第三子集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行),并将覆盖其他四个变量。
那么,如何从同一个se_gl变量中创建5个不同的变量?我知道使用slurm,例如,该代码将执行5次(如果我设置了5个数组),但是问题是我的最后一个命令行...
有帮助吗?
最佳
答案 0 :(得分:0)
您有几种选择。既然提到了slurm,您可能只想修改文件名以保留可扩展的解决方案。
save(se_gl, file = sprintf("/home/vipailler/PROJET_M2/data/se_gl_%s.RData", opt$subset))