OmnipathR icon indicating copy to clipboard operation
OmnipathR copied to clipboard

Parallelization error when optimizing parameters for NicheNet

Open tkapello opened this issue 6 months ago • 0 comments

Hi,

I am implementing the Omnipath resources for NicheNet analysis on a Windows computer. I was optimizing the parameters for the model as shown below:

# Parameter optimization
expression_settings_validation<-readRDS(url("https://zenodo.org/record/3260758/files/expression_settings.rds"))

my_source_weights_df<-tibble(source=unique(c(lr_network$source, sig_network$source, gr_network$source)), weight=rep(1, length(unique(c(lr_network$source, sig_network$source, gr_network$source)))))

additional_arguments_topology_correction<-list(source_names=my_source_weights_df$source %>% unique(), 
                                               algorithm="PPR", 
                                               correct_topology=FALSE,
                                               lr_network=lr_network, 
                                               sig_network=sig_network, 
                                               gr_network=gr_network, 
                                               settings=lapply(expression_settings_validation, convert_expression_settings_evaluation),
                                               secondary_targets=FALSE, 
                                               remove_direct_links="no", 
                                               cutoff_method="quantile")

nr_datasources<-additional_arguments_topology_correction$source_names %>% length()

obj_fun_multi_topology_correction<-makeMultiObjectiveFunction(name="nichenet_optimization",
                                                              description="data source weight and hyperparameter optimization: expensive black-box function",
                                                              fn=model_evaluation_optimization, 
                                                              par.set=makeParamSet(makeNumericVectorParam("source_weights", len=nr_datasources, lower=0, upper=1, tunable=FALSE),
                                                                                   makeNumericVectorParam("lr_sig_hub", len=1, lower=0, upper=1, tunable=TRUE),  
                                                                                   makeNumericVectorParam("gr_hub", len=1, lower=0, upper=1, tunable=TRUE),  
                                                                                   makeNumericVectorParam("ltf_cutoff", len=1, lower=0.9, upper=0.999, tunable=TRUE), 
                                                                                   makeNumericVectorParam("damping_factor", len=1, lower=0.01, upper=0.99, tunable=TRUE)), 
                                                              has.simple.signature=FALSE,
                                                              n.objectives=4, 
                                                              noisy=FALSE,
                                                              minimize=c(FALSE, FALSE, FALSE, FALSE))

optimization_results=lapply(1, mlrmbo_optimization, obj_fun=obj_fun_multi_topology_correction, niter=8, ncores=5, nstart=1250, additional_arguments=additional_arguments_topology_correction)

However, I have an error:

Error in parallelStart(mode = MODE_MULTICORE, cpus = cpus, level = level,  : 
  Multicore mode not supported on windows!

I understand that the issue is the Windows OS which can not use several cores to process functions but I have not found a workaround with parallelStart(mode='socket', cpus=5) with no success. I would appreciate any support!

tkapello avatar Aug 01 '24 12:08 tkapello