LoginSignup
1
2

More than 1 year has passed since last update.

mixOmicsのエラー「'cpus' has been replaced by BPPARAM」の対処方法

Posted at

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のバージョンアップに対応したエラーの処理でした。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2