sushi_fabric 0.9.3 → 0.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 84de00c578f9193950709558ab94634ef637a12e
4
- data.tar.gz: fb3af7878169c568fdcf8d291dcc354ef3fa5142
2
+ SHA256:
3
+ metadata.gz: c57dc465158ddf76e857e126e427f581ecf1a65a805fd01af17e1782b0503208
4
+ data.tar.gz: 7ff6d22fd4617f2e10459474d86f706b1f4bbd39c7922031271c49c8f4f45269
5
5
  SHA512:
6
- metadata.gz: 7e83696b93bbc02318541f5e7be8fe406d86ab2330fc28b2a1ec3b256a568bff3b4e3771b925a83adceec0c6984ff0f842d4a924f94b52ee46b4c34aec558128
7
- data.tar.gz: 32e32f6a899a3e1d435da76c945a3c76835ff8cc0fb02b8b484fc36333dc5b03b02be9a5f7f14cfaaba56fcab1e58e638fa2e2478f036c685fed9b456cbf6195
6
+ metadata.gz: c88d5589e019b1742b962d78550658c53302d453a2ce76c21b171f9caa4cc176be79ccb60dbb3d9edfb9cc88e7fbde1a36848a8392a64f089b1ffcbb53a99260
7
+ data.tar.gz: eacc4d03b02f4a94adeb42a40f2217022aa0b7659c1cfe3fc1035d9726dd04375e15eebf47c4a7f582416c7c7b18eabaac4e9c8b6e46c5c48fbea4139380ada6
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
- # Version = '20191114-151205'
3
+ # Version = '20200723-132451'
4
4
 
5
5
  require 'csv'
6
6
  require 'fileutils'
@@ -227,6 +227,7 @@ class SushiApp
227
227
  attr_accessor :mango_run_name
228
228
  attr_accessor :input_dataset_bfabric_application_number
229
229
  attr_accessor :next_dataset_bfabric_application_number
230
+ attr_reader :inactivate_nodes
230
231
  def initialize
231
232
  @gstore_dir = GSTORE_DIR
232
233
  @project = nil
@@ -236,6 +237,7 @@ class SushiApp
236
237
  @params['ram'] = nil
237
238
  @params['scratch'] = nil
238
239
  @params['node'] = ''
240
+ @params['queue'] = ''
239
241
  @params['process_mode'] = 'SAMPLE'
240
242
  @params['samples'] = ''
241
243
  @job_ids = []
@@ -243,6 +245,7 @@ class SushiApp
243
245
  @module_source = MODULE_SOURCE
244
246
  @modules = []
245
247
  #@workflow_manager = workflow_manager_instance||DRbObject.new_with_uri(WORKFLOW_MANAGER)
248
+ @last_job = true
246
249
  end
247
250
  def set_input_dataset
248
251
  if @dataset_tsv_file
@@ -389,8 +392,13 @@ class SushiApp
389
392
  end
390
393
  def check_latest_module_version(mod)
391
394
  command_out = %x[ bash -lc "source #{@module_source}; module whatis #{mod} 2>&1" ]
392
- latest_mod = command_out.split.first
393
- latest_mod = nil if latest_mod == "Failed"
395
+ latest_mod = nil
396
+ command_out.split("\n").each do |line|
397
+ if line =~ /#{mod}/
398
+ latest_mod = line.split.first
399
+ break
400
+ end
401
+ end
394
402
  latest_mod
395
403
  end
396
404
  def job_header
@@ -414,7 +422,6 @@ class SushiApp
414
422
  modules_with_version = @modules.map{|mod| check_latest_module_version(mod)}
415
423
  modules_with_version.compact!
416
424
  "module add #{modules_with_version.join(' ')}"
417
- #"module add #{@modules.join(' ')}"
418
425
  else
419
426
  ""
420
427
  end
@@ -429,6 +436,7 @@ umask 0002
429
436
  SCRATCH_DIR=#{@scratch_dir}
430
437
  GSTORE_DIR=#{@gstore_dir}
431
438
  INPUT_DATASET=#{@input_dataset_tsv_path}
439
+ LAST_JOB=#{@last_job.to_s.upcase}
432
440
  echo "Job runs on `hostname`"
433
441
  echo "at $SCRATCH_DIR"
434
442
  mkdir $SCRATCH_DIR || exit 1
@@ -631,36 +639,22 @@ rm -rf #{@scratch_dir} || exit 1
631
639
  @out.close
632
640
  end
633
641
  def sample_mode
634
- set_job_script =-> (dataset_) do
635
- @dataset = dataset_
642
+ selected_samples = Hash[*@params['samples'].split(',').map{|sample_name| [sample_name, true]}.flatten]
643
+ @dataset_hash.each_with_index do |row, i|
644
+ @dataset = Hash[*row.map{|key,value| [key.gsub(/\[.+\]/,'').strip, value]}.flatten]
645
+ if selected_samples[@dataset['Name']]
636
646
  sample_name = @dataset['Name']||@dataset.first
637
647
  @job_script = if @dataset_sushi_id and dataset = DataSet.find_by_id(@dataset_sushi_id.to_i)
638
648
  File.join(@job_script_dir, @analysis_category + '_' + sample_name) + '_' + dataset.name.gsub(/\s+/,'_') + '.sh'
639
649
  else
640
650
  File.join(@job_script_dir, @analysis_category + '_' + sample_name) + '.sh'
641
651
  end
652
+ @last_job = (i == @dataset_hash.length - 1)
642
653
  make_job_script
643
654
  @job_scripts << @job_script
644
655
  @result_dataset << next_dataset
645
- end
646
- selected_samples = Hash[*@params['samples'].split(',').map{|sample_name| [sample_name, true]}.flatten]
647
- last_sample = nil
648
- @dataset_hash.each do |row|
649
- @dataset = Hash[*row.map{|key,value| [key.gsub(/\[.+\]/,'').strip, value]}.flatten]
650
- if selected_samples[@dataset['Name']]
651
- header = if header_ = row.keys.find{|h| h.tag?('Last')}
652
- header_.gsub(/\[.+\]/,'').strip
653
- end
654
- if header and eval(@dataset[header])
655
- last_sample = @dataset
656
- else
657
- set_job_script.(@dataset)
658
- end
659
656
  end
660
657
  end
661
- if last_sample
662
- set_job_script.(last_sample)
663
- end
664
658
  end
665
659
  def dataset_mode
666
660
  selected_samples = Hash[*@params['samples'].split(',').map{|sample_name| [sample_name, true]}.flatten]
@@ -766,28 +760,14 @@ rm -rf #{@scratch_dir} || exit 1
766
760
  if mock
767
761
  make_dummy_files
768
762
  end
769
- copy_inputdataset_parameter_jobscripts
770
-
771
- # job submittion
772
- gstore_job_script_paths = []
773
- @job_scripts.each_with_index do |job_script, i|
774
- if job_id = submit(job_script, mock)
775
- @job_ids << job_id
776
- print "Submit job #{File.basename(job_script)} job_id=#{job_id}"
777
- gstore_job_script_paths << File.join(@gstore_script_dir, File.basename(job_script))
778
- end
779
- end
780
763
 
781
- puts
782
- print 'job scripts: '
783
- p @job_scripts
784
764
  print 'result dataset: '
785
765
  p @result_dataset
786
766
 
787
767
  # copy application data to gstore
788
768
  @next_dataset_tsv_path = save_next_dataset_as_tsv
789
769
 
790
- if !@job_ids.empty? and @dataset_sushi_id and dataset = DataSet.find_by_id(@dataset_sushi_id.to_i)
770
+ if @dataset_sushi_id and dataset = DataSet.find_by_id(@dataset_sushi_id.to_i)
791
771
  data_set_arr = []
792
772
  headers = []
793
773
  rows = []
@@ -812,20 +792,46 @@ rm -rf #{@scratch_dir} || exit 1
812
792
  unless @off_bfabric_registration
813
793
  if next_dataset = DataSet.find_by_id(@next_dataset_id)
814
794
  next_dataset.register_bfabric(bfabric_application_number: @next_dataset_bfabric_application_number)
795
+ if next_dataset.workunit_id
796
+ @job_scripts.each do |job_script|
797
+ open(job_script, "a") do |out|
798
+ out.puts "module load Dev/Python"
799
+ out.puts "WORKUNIT_ID=#{next_dataset.workunit_id}"
800
+ out.puts "update_resource_size -w $WORKUNIT_ID"
801
+ end
802
+ end
803
+ end
815
804
  end
816
805
  end
806
+ end
807
+ end
808
+ copy_inputdataset_parameter_jobscripts
809
+
810
+ # job submittion
811
+ gstore_job_script_paths = []
812
+ @job_scripts.each_with_index do |job_script, i|
813
+ if job_id = submit(job_script, mock)
814
+ @job_ids << job_id
815
+ print "Submit job #{File.basename(job_script)} job_id=#{job_id}"
816
+ gstore_job_script_paths << File.join(@gstore_script_dir, File.basename(job_script))
817
+ end
818
+ end
819
+
820
+ puts
821
+ print 'job scripts: '
822
+ p @job_scripts
817
823
 
818
- # save job and dataset relation in Sushi DB
819
- job_ids.each_with_index do |job_id, i|
820
- new_job = Job.new
821
- new_job.submit_job_id = job_id.to_i
822
- new_job.script_path = gstore_job_script_paths[i]
823
- new_job.next_dataset_id = @next_dataset_id
824
- new_job.save
825
- new_job.data_set.jobs << new_job
826
- new_job.data_set.save
827
- end
828
824
 
825
+ unless @job_ids.empty? or NO_ROR
826
+ # save job and dataset relation in Sushi DB
827
+ job_ids.each_with_index do |job_id, i|
828
+ new_job = Job.new
829
+ new_job.submit_job_id = job_id.to_i
830
+ new_job.script_path = gstore_job_script_paths[i]
831
+ new_job.next_dataset_id = @next_dataset_id
832
+ new_job.save
833
+ new_job.data_set.jobs << new_job
834
+ new_job.data_set.save
829
835
  end
830
836
  end
831
837
  copy_nextdataset
@@ -1,3 +1,3 @@
1
1
  module SushiFabric
2
- VERSION = "0.9.3"
2
+ VERSION = "0.9.8"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sushi_fabric
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Functional Genomics Center Zurich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-14 00:00:00.000000000 Z
11
+ date: 2020-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -84,8 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
84
  - !ruby/object:Gem::Version
85
85
  version: '0'
86
86
  requirements: []
87
- rubyforge_project:
88
- rubygems_version: 2.6.14
87
+ rubygems_version: 3.0.3
89
88
  signing_key:
90
89
  specification_version: 4
91
90
  summary: workflow manager client.