OACIS (‘‘Organizing Assistant for Comprehensive and Interactive Simulations’’) is a job management software for simulation studies.
When we conduct scientific research by numerical simulations, we usually carry out many simulation jobs changing models and parameters through a trial and error process. This kind of trial-and-error approach often causes a problem of job management since a large amount of jobs are often created while we are exploring the parameter space. As the number of simulation jobs increases, it is often difficult to keep track of vast and various simulation results in an organized way and, as a result, we inevitably suffer from inefficiency and human errors.
OACIS is being developed aiming at overcoming these difficulties. For instance, submitting only one simulation job would require the following tasks.
Using OACIS, you can automate most of the above tasks, which lets you efficiently explore the parameter space. With a user-friendly interface, you can easily submit various jobs to appropriate remote hosts. After these jobs are finished, all the result files are automatically downloaded from the remote hosts and stored in a traceable way together with logs of the date, host, and elapsed time of the jobs. You can easily find the status of the jobs or results files from the browser-based UI, which lets you focus on more productive and essential parts of your research activities.
It also provides Ruby and Python APIs, which helps us automate parameter sweep, optimization of parameters, and sensitivity analysis etc.
A small sample of parameter sweep over parameters “p1” and “p2” of your simulator. See http://crest-cassia.github.io/oacis/en/api.html for more details. OACIS has both Ruby and Python APIs.
sim = Simulator.where(name: "my_simulator").first
p1_values = [1.0,2.0,3.0,4.0,5.0] # a standard way to make an array
p2_values = [2.0,4.0,6.0,8.0,10.0]
base_param = sim.default_parameters # => {"p1"=>1.0, "p2"=>2.0, "p3"=>3.0}
host = Host.where(name: "localhost").first
host_param = host.default_host_parameters
# We are going to fix the parameters other than "p1" and "p2"
p1_values.each do |p1| # iterate over p1
p2_values.each do |p2| # iterate over p2
param = base_param.merge({"p1"=>p1,"p2"=>p2}) # => {"p1"=>p1, "p2"=>p2, "p3"=>3.0}
ps = sim.find_or_create_parameter_set( param ) # => ParameterSet of the given parameters
runs = ps.find_or_create_runs_upto(5, submitted_to: host, host_param: host_param) # creating runs under given parameter sets
end
end
This document illustrates the usage of OACIS. The remaining pages are organized as follows.
You will be able to start using OACIS if you read the first three pages. In order to fully make use of OACIS, read other pages when necessary.
If you have questions, requests, or bug reports, please send your feedback to the developers (oacis-dev _at_ googlegroups.com
). Replace at with @.