mixOmicsのDIABLOのチュートリアルhttp://mixomics.org/mixdiablo/case-study-tcga/をのコードをコピペした以下のコードを実行すると、
tune.TCGA = tune.block.splsda(X = X, Y = Y, ncomp = ncomp,
test.keepX = test.keepX, design = design,
validation = 'Mfold', folds = 10, nrepeat = 10,
cpus = 2, dist = "centroids.dist")
最新のmixOmicsのバージョンを使っている場合に以下のようなエラーが吐き出されます。
tune.block.splsda(X, Y, ncomp = ncomp, test.keepX = test.keepX, でエラー:
'cpus' has been replaced by BPPARAM. See documentation.
このエラーは、上記のtune.block.splsda()の引数のうち、マルチコアを用いた並列計算を指定する「cpus」という引数が、バージョンアップにより使われなくなったことに起因します。新しいバージョンでは、cpusの代わりに「BPPARAM」という引数を使用します。
そこで、macやLinuxの場合、上記のようにBiocParallelパッケージのMulticoreParamを用いて並列化を実行します。コア数はparallelパッケージのdetectCoresを用いて検出することができます。
##BiocParallel パッケージをインストールする
##BiocManager::install("BiocParallel")
##コア数を検出して指定
BPPARAM <- BiocParallel::MulticoreParam(workers = parallel::detectCores()-1)
tune.TCGA = tune.block.splsda(X = X, Y = Y, ncomp = ncomp,
test.keepX = test.keepX, design = design,
validation = 'Mfold', folds = 10, nrepeat = 10,
BPPARAM = BPPARAM , dist = "centroids.dist")
windowsの場合、MulticoreParamはサポートされていないので代わりにSnowParam()を用いると並列化ができると思います。
BPPARAM <- BiocParallel::SnowParam(workers = parallel::detectCores()-1)
tune.TCGA = tune.block.splsda(X = X, Y = Y, ncomp = ncomp,
test.keepX = test.keepX, design = design,
validation = 'Mfold', folds = 10, nrepeat = 10,
BPPARAM = BPPARAM , dist = "centroids.dist")
以上、mixOmicsのバージョンアップに対応したエラーの処理でした。