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 +5 -5
- data/lib/sushi_fabric/sushiApp.rb +54 -48
- data/lib/sushi_fabric/version.rb +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c57dc465158ddf76e857e126e427f581ecf1a65a805fd01af17e1782b0503208
|
4
|
+
data.tar.gz: 7ff6d22fd4617f2e10459474d86f706b1f4bbd39c7922031271c49c8f4f45269
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 = '
|
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 =
|
393
|
-
|
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
|
-
|
635
|
-
|
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
|
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
|
data/lib/sushi_fabric/version.rb
CHANGED
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.
|
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:
|
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
|
-
|
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.
|