batch_experiment 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4bfaf4a6fa10230872eb47786f5ed25caef9866c
4
- data.tar.gz: 5c2d57dbc5487a37d409bd6c9454177f16d44cae
3
+ metadata.gz: e2281f50d62e17b6584f76c6ee3a06b15ad3f95e
4
+ data.tar.gz: 6e75c67a2776de460de325dff16620cf5e1297b4
5
5
  SHA512:
6
- metadata.gz: e53e5c263fca88c5389268e2d8e2aafd8491bf100d3ad3888d84024ba7f515e4797ef7856fd0f03274274f563e3263a5bb5d55a1e336210e3e770409ca52e377
7
- data.tar.gz: f4d4741012d48a9383ac7cd73013ab40ab86d0dcbd98d7b55cee2b0ae6c3ffe790c1662d60ab2093249a4d41a720c2705a3615198ce4aae4239a5ecc1da52c2e
6
+ metadata.gz: 697c5f3cb314baed7e726e03c9627d76c3cb5f47709d666d48169b9f9bb6f79bd4c3f713e10ab738bb35bd312fa5ab9be2cce290da0fc701ccbb2157fb09826a
7
+ data.tar.gz: de6fa0170a1d52371e9b5799432e9915f9e9256eb76c425a520a27e217e90fa6c0e3d3709212acf3b4b52fc6244a1c6ec9b06eac321e617f42caecf184452e23
data/README.md CHANGED
@@ -15,11 +15,11 @@ What conditions you need to use this tool:
15
15
 
16
16
  What is not needed:
17
17
 
18
- * To know how to program in ruby. Only taking less than 5 minutes to learn some basic syntax will suffice to run commands on multiple cores and save the results to files (using BatchExperiment::batch). However, if you want not only to execute the commands but want to extract and group some information from their output to a CVS (using BatchExperiment::experiment), you will need to tell ruby how to do the extracting part.
18
+ * To know how to program in ruby. Only taking less than 5 minutes to learn some basic syntax will suffice to run commands on multiple cores and save the results to files (using BatchExperiment::batch). However, if you want not only to execute the commands but want to extract and group some information from their output to a CSV (using BatchExperiment::experiment), you will need to tell ruby how to do the extracting part.
19
19
 
20
20
  ## How to use it
21
21
 
22
- You will need to create a ruby script (copy, past and adapt one of the provided examples), give it execution permissions ("chmod +x script.rb"), and execute it ("./script.rb"). It's good to remember that this will probably flood the folder from were you called the command with files containing the output of the commands. Also good to remember that the commands will be called from the folder where you called the script, so they probably will expect that any relative paths/filenames given to them to be relative to the current folder.
22
+ You will need to create a ruby script (copy, past and adapt one of the provided examples), give it execution permissions ("chmod +x script.rb"), and execute it ("./script.rb"). It's good to remember that, if you didn't created a folder for the output files and set the :output_dir configuration to it, the script will probably flood your current folder with the output files. Also, good to remember that, if you didn't set the :cwd configuration, the commands will be called from the folder where you called the script, so they probably will expect that any relative paths/filenames given to them to be relative to the current folder.
23
23
 
24
24
  ## Examples
25
25
 
@@ -33,7 +33,7 @@ require 'batch_experiment'
33
33
  commands = [
34
34
  'sleep 2 && echo orange',
35
35
  'sleep 4 && echo banana',
36
- 'sleep 100 && echo "never gonna happen"',
36
+ 'sleep 100 && echo "never gonna happen"', # killed by timeout
37
37
  ]
38
38
 
39
39
  conf = {
@@ -25,6 +25,8 @@ execution_info = {
25
25
  cpus_available: [1, 2, 3],
26
26
  timeout: 10,
27
27
  post_timeout: 2,
28
+ cwd: '/home/henrique/AreaDeTrabalho/masters/data/ukp/',
29
+ output_dir: '/home/henrique/AreaDeTrabalho/tmp/',
28
30
  }
29
31
 
30
32
  conf = {
@@ -36,8 +38,6 @@ conf = {
36
38
  files = ['corepb.ukp', 'exnsd18.ukp', 'exnsd26.ukp', 'exnsdbis18.ukp', 'exnsd16.ukp', 'exnsd20.ukp', 'exnsdbis10.ukp', 'exnsds12.ukp']
37
39
  # If you don't execute the script from the ukp files folder you need to put the
38
40
  # folder relative or absolute path here (with trailing slash).
39
- path = '~/Aulas/mestrado/masters/data/ukp/'
40
- files.map! { | f | path + f }
41
41
 
42
42
  BatchExperiment::experiment(comms_info, execution_info, conf, files)
43
43
 
@@ -136,6 +136,12 @@ module BatchExperiment
136
136
  # Default: '.out'.
137
137
  # -- err_ext [String] Extension to be used in place of '.err'.
138
138
  # Default: '.err'.
139
+ # -- cwd [String] Command Working Directory. The path from where the
140
+ # commands will be executed. Default: './' (i.e. the same directory from
141
+ # where the ruby script was run).
142
+ # -- output_dir [String] The folder used to save the
143
+ # '.out'/'.err'/'.unfinished' files. Default: './' (i.e. the same directory
144
+ # from where the ruby script was run).
139
145
  #
140
146
  # @return [String] Which commands were executed. Can be different from
141
147
  # the 'commands' argument if commands are skipped (see :skip_done_comms).
@@ -174,6 +180,8 @@ module BatchExperiment
174
180
  conf[:post_timeout] ||= 5
175
181
  conf[:converter] ||= BatchExperiment::Comm2FnameConverter.new
176
182
  conf[:skip_done_comms] = true if conf[:skip_done_comms].nil?
183
+ conf[:cwd] ||= './'
184
+ conf[:output_dir] ||= './'
177
185
 
178
186
  # Initialize main variables
179
187
  free_cpus = conf[:cpus_available].clone
@@ -183,9 +191,9 @@ module BatchExperiment
183
191
 
184
192
  commands.each do | command |
185
193
  commfname = conf[:converter].call(command)
186
- out_fname = commfname + conf[:out_ext]
187
- err_fname = commfname + conf[:err_ext]
188
- lockfname = commfname + conf[:unfinished_ext]
194
+ out_fname = conf[:output_dir] + commfname + conf[:out_ext]
195
+ err_fname = conf[:output_dir] + commfname + conf[:err_ext]
196
+ lockfname = conf[:output_dir] + commfname + conf[:unfinished_ext]
189
197
 
190
198
  if conf[:skip_done_comms] && File.exists?(out_fname)
191
199
  if File.exists?(lockfname)
@@ -216,10 +224,11 @@ module BatchExperiment
216
224
  'sh', '-c', command
217
225
  )
218
226
 
227
+ cproc.cwd = conf[:cwd]
228
+
219
229
  File.open(lockfname, 'w') {} # empty on purpose
220
230
  out = File.open(out_fname, 'w')
221
231
  err = File.open(err_fname, 'w')
222
-
223
232
  cproc.io.stdout = out
224
233
  cproc.io.stderr = err
225
234
 
@@ -398,8 +407,9 @@ module BatchExperiment
398
407
  #conf[:skip_commands] defaults to false/nil
399
408
 
400
409
  # Get some of the batch config that we use inside here too.
401
- out_ext = batch_conf[:out_ext] || '.out'
410
+ out_ext = batch_conf[:out_ext] || '.out'
402
411
  unfinished_ext = batch_conf[:unfinished_ext] || '.unfinished'
412
+ output_dir = batch_conf[:output_dir] || './'
403
413
  converter = batch_conf[:converter].clone unless batch_conf[:converter].nil?
404
414
  converter ||= BatchExperiment::Comm2FnameConverter.new
405
415
 
@@ -480,14 +490,14 @@ module BatchExperiment
480
490
  curr_line = [algorithm, filename, run_number]
481
491
 
482
492
  partial_fname = converter.call(exp_comm)
483
- out_fname = partial_fname + out_ext
484
- lockfname = partial_fname + unfinished_ext
493
+ out_fname = output_dir + partial_fname + out_ext
494
+ lockfname = output_dir + partial_fname + unfinished_ext
485
495
  extractor = run_info[:comm_info][:extractor]
486
496
 
487
497
  if File.exists?(out_fname)
488
498
  if File.exists?(lockfname)
489
499
  puts "Ignored file '#{out_fname}' because there was a"
490
- + " '#{lockfname}' file in the same folder."
500
+ + " '#{lockfname}' file too."
491
501
  else
492
502
  f_content = File.open(out_fname, 'r') { | f | f.read }
493
503
  curr_line << extractor.extract(f_content)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: batch_experiment
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Henrique Becker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-21 00:00:00.000000000 Z
11
+ date: 2016-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: childprocess
@@ -66,4 +66,3 @@ specification_version: 4
66
66
  summary: A ruby script that distributes system commands between cpu cores, and save
67
67
  their output.
68
68
  test_files: []
69
- has_rdoc: