rbbt-util 5.35.1 → 5.35.2

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
  SHA256:
3
- metadata.gz: 5efc019e19e967e30d83a08aa3ed45debe5036dac45f644ec0c7195100112e08
4
- data.tar.gz: 1b7f34c9cb59d5936762531df4e004728071a90f4fcf3a4dce009e58071d7ffa
3
+ metadata.gz: 7fc87aa89e132735c535df80f34cfd0f31fb44475d55d08fb194ee50e045f884
4
+ data.tar.gz: e1c380d68af04bd683a3a06e675b6e8744497869d95ac96620e7864f05e8aeb7
5
5
  SHA512:
6
- metadata.gz: e0282a5eb3e8ec139b2cfc60face60d9bbd83d3597291df4e37fe9b8c4b2bca78a5fac23eb0c2ed4948d7cc61005c0625d992faaa67e265cd12443ee509f3037
7
- data.tar.gz: a1e058254ad80b23409bb8f4618f14949089d6fbb355228fbf7abf82919d55a4ee86f47cdb1684014079a00f65831a5ea1900e63808fe21e863de3c67e121e86
6
+ metadata.gz: dd65fb3be5c880288fa1718d6a2327d1e799f7c9b415785cdcb5f1cd9d18d02664347e6dc16dde2a78d727ab86ab292d272fc2a608ea7a9a1eb7c0e88f213131
7
+ data.tar.gz: 603ca603814e8405dcc88ed0a499ddb92658d2831887d8c8110ba60737a83317ee7d68e00a3b51a48734a6bb90f2539d654169b07a8609a60fe02351d8426394
@@ -31,4 +31,23 @@ module RbbtPython
31
31
  tsv
32
32
  end
33
33
 
34
+ def self.list2ruby(list)
35
+ return list unless PyCall::List === list
36
+ list.collect do |e|
37
+ list2ruby(e)
38
+ end
39
+ end
40
+
41
+ def self.numpy2ruby(numpy)
42
+ list2ruby(numpy.tolist)
43
+ end
44
+
45
+ def self.obj2hash(obj)
46
+ hash = {}
47
+ RbbtPython.iterate obj.keys do |k|
48
+ hash[k] = obj[k]
49
+ end
50
+ hash
51
+ end
52
+
34
53
  end
@@ -5,6 +5,16 @@ require 'rbbt/util/python/util'
5
5
  module RbbtPython
6
6
  extend PyCall::Import
7
7
 
8
+ class RbbtPythonException < StandardError; end
9
+
10
+ class Binding
11
+ include PyCall::Import
12
+
13
+ def run(*args, &block)
14
+ instance_exec(*args, &block)
15
+ end
16
+ end
17
+
8
18
  def self.script(text, options = {})
9
19
  Log.debug "Running python script:\n#{text.dup}"
10
20
  text = StringIO.new text unless IO === text
@@ -12,8 +22,13 @@ module RbbtPython
12
22
  end
13
23
 
14
24
  def self.add_path(path)
15
- self.run 'sys' do
16
- sys.path.append path
25
+ begin
26
+ self.run 'sys' do
27
+ sys.path.append path
28
+ end
29
+ rescue
30
+ raise RbbtPythonException,
31
+ "Could not add path #{Misc.fingerprint path} to python sys: " + $!.message
17
32
  end
18
33
  end
19
34
 
@@ -26,19 +41,64 @@ module RbbtPython
26
41
  end
27
42
 
28
43
  def self.init_rbbt
29
- if ! defined?(@@__init_rbbt) || ! @@__init_rbbt
44
+ if ! defined?(@@__init_rbbt_python) || ! @@__init_rbbt_python
30
45
  Log.debug "Loading python 'rbbt' module into pycall RbbtPython module"
31
46
  RbbtPython.add_paths(Rbbt.python.find_all)
32
47
  RbbtPython.pyimport("rbbt")
33
- @@__init_rbbt = true
48
+ @@__init_rbbt_python = true
34
49
  end
35
50
  end
36
51
 
52
+ def self.import_method(module_name, method_name, as = nil)
53
+ RbbtPython.pyfrom module_name, import: method_name
54
+ RbbtPython.method(method_name)
55
+ end
56
+
37
57
  def self.exec(script)
38
58
  PyCall.exec(script)
39
59
  end
40
60
 
41
- def self.iterate(iterator, options = {})
61
+ def self.iterate_index(elem, options = {})
62
+ iii :interate_index
63
+ bar = options[:bar]
64
+
65
+ len = PyCall.len(elem)
66
+ case bar
67
+ when TrueClass
68
+ bar = Log::ProgressBar.new nil, :desc => "RbbtPython iterate"
69
+ when String
70
+ bar = Log::ProgressBar.new nil, :desc => bar
71
+ end
72
+
73
+ len.times do |i|
74
+ begin
75
+ yield elem[i]
76
+ bar.tick if bar
77
+ rescue PyCall::PyError
78
+ if $!.type.to_s == "<class 'StopIteration'>"
79
+ break
80
+ else
81
+ raise $!
82
+ end
83
+ rescue
84
+ bar.error if bar
85
+ raise $!
86
+ end
87
+ end
88
+
89
+ Log::ProgressBar.remove_bar bar if bar
90
+ nil
91
+ end
92
+
93
+ def self.iterate(iterator, options = {}, &block)
94
+ if ! iterator.respond_to?(:__next__)
95
+ if iterator.respond_to?(:__iter__)
96
+ iterator = iterator.__iter__
97
+ else
98
+ return iterate_index(iterator, options, &block)
99
+ end
100
+ end
101
+
42
102
  bar = options[:bar]
43
103
 
44
104
  case bar
@@ -50,7 +110,8 @@ module RbbtPython
50
110
 
51
111
  while true
52
112
  begin
53
- yield iterator.__next__
113
+ elem = iterator.__next__
114
+ yield elem
54
115
  bar.tick if bar
55
116
  rescue PyCall::PyError
56
117
  if $!.type.to_s == "<class 'StopIteration'>"
@@ -79,12 +140,12 @@ module RbbtPython
79
140
 
80
141
  def self.run(mod = nil, imports = nil, &block)
81
142
  if mod
82
- if Array === imports
83
- pyfrom mod, :import => imports
84
- elsif Hash === imports
143
+ if Hash === imports
85
144
  pyimport mod, **imports
86
- else
145
+ elsif imports.nil?
87
146
  pyimport mod
147
+ else
148
+ pyfrom mod, :import => imports
88
149
  end
89
150
  end
90
151
 
@@ -124,4 +185,13 @@ module RbbtPython
124
185
  module_eval(&block)
125
186
  end
126
187
  end
188
+
189
+ def self.new_binding
190
+ Binding.new
191
+ end
192
+
193
+ def self.binding_run(binding = nil, *args, &block)
194
+ binding = new_binding
195
+ binding.instance_exec *args, &block
196
+ end
127
197
  end
@@ -13,5 +13,13 @@ class TestPythonUtil < Test::Unit::TestCase
13
13
  assert_equal tsv, new_tsv
14
14
  end
15
15
 
16
+ def test_numpy
17
+ ra = RbbtPython.run :numpy, :as => :np do
18
+ na = np.array([[[1,2,3], [4,5,6]]])
19
+ RbbtPython.numpy2ruby na
20
+ end
21
+ assert_equal 6, ra[0][1][2]
22
+ end
23
+
16
24
  end
17
25
 
@@ -81,5 +81,55 @@ def python_print():
81
81
  end
82
82
  assert defined
83
83
  end
84
+
85
+ def test_iterate
86
+ a2, b2 = nil, nil
87
+ RbbtPython.run :numpy, as: :np do
88
+ a = np.array([1,2])
89
+ a2 = RbbtPython.collect a do |e|
90
+ e * 2
91
+ end
92
+ b = PyCall.tuple([1,2])
93
+ b2 = RbbtPython.collect b do |e|
94
+ e * 2
95
+ end
96
+ end
97
+ assert_equal [2,4], a2
98
+ assert_equal [2,4], b2
99
+ end
100
+
101
+ def test_lambda
102
+ l = PyCall.eval "lambda e: e + 2"
103
+ assert_equal 5, l.(3)
104
+ end
105
+
106
+ def test_binding
107
+ raised = false
108
+ RbbtPython.binding_run do
109
+ pyimport :torch
110
+ pyfrom :torch, import: ["nn"]
111
+ begin
112
+ torch
113
+ rescue
114
+ raised = true
115
+ end
116
+ end
117
+ assert ! raised
118
+
119
+ raised = false
120
+ RbbtPython.binding_run do
121
+ begin
122
+ torch
123
+ rescue
124
+ raised = true
125
+ end
126
+ end
127
+ assert raised
128
+ end
129
+
130
+ def test_import_method
131
+ random = RbbtPython.import_method :torch, :rand, :random
132
+ assert random.call(1).numpy.to_f > 0
133
+ end
84
134
  end
85
135
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.35.1
4
+ version: 5.35.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-23 00:00:00.000000000 Z
11
+ date: 2023-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -613,113 +613,113 @@ required_rubygems_version: !ruby/object:Gem::Requirement
613
613
  - !ruby/object:Gem::Version
614
614
  version: '0'
615
615
  requirements: []
616
- rubygems_version: 3.1.4
616
+ rubygems_version: 3.1.2
617
617
  signing_key:
618
618
  specification_version: 4
619
619
  summary: Utilities for the Ruby Bioinformatics Toolkit (rbbt)
620
620
  test_files:
621
+ - test/test_helper.rb
622
+ - test/rbbt/entity/test_identifiers.rb
623
+ - test/rbbt/test_resource.rb
624
+ - test/rbbt/test_association.rb
625
+ - test/rbbt/hpc/test_orchestrate.rb
626
+ - test/rbbt/hpc/test_slurm.rb
627
+ - test/rbbt/hpc/orchestrate/test_batches.rb
628
+ - test/rbbt/hpc/orchestrate/test_rules.rb
629
+ - test/rbbt/hpc/orchestrate/test_chains.rb
630
+ - test/rbbt/hpc/test_batch.rb
631
+ - test/rbbt/persist/test_tsv.rb
632
+ - test/rbbt/persist/tsv/test_kyotocabinet.rb
633
+ - test/rbbt/persist/tsv/test_lmdb.rb
634
+ - test/rbbt/persist/tsv/test_tokyocabinet.rb
635
+ - test/rbbt/persist/tsv/test_cdb.rb
636
+ - test/rbbt/persist/tsv/test_leveldb.rb
637
+ - test/rbbt/persist/tsv/test_sharder.rb
638
+ - test/rbbt/test_packed_index.rb
621
639
  - test/rbbt/test_entity.rb
640
+ - test/rbbt/test_fix_width_table.rb
622
641
  - test/rbbt/workflow/test_remote_workflow.rb
642
+ - test/rbbt/workflow/test_doc.rb
643
+ - test/rbbt/workflow/step/test_save_load_inputs.rb
644
+ - test/rbbt/workflow/step/test_dependencies.rb
645
+ - test/rbbt/workflow/test_schedule.rb
623
646
  - test/rbbt/workflow/util/test_archive.rb
624
647
  - test/rbbt/workflow/util/test_orchestrator.rb
625
648
  - test/rbbt/workflow/util/test_data.rb
626
- - test/rbbt/workflow/test_doc.rb
627
- - test/rbbt/workflow/test_schedule.rb
628
- - test/rbbt/workflow/test_step.rb
629
- - test/rbbt/workflow/step/test_dependencies.rb
630
- - test/rbbt/workflow/step/test_save_load_inputs.rb
631
649
  - test/rbbt/workflow/test_task.rb
632
- - test/rbbt/resource/test_path.rb
633
- - test/rbbt/util/test_colorize.rb
650
+ - test/rbbt/workflow/test_step.rb
651
+ - test/rbbt/test_tsv.rb
652
+ - test/rbbt/test_annotations.rb
653
+ - test/rbbt/test_knowledge_base.rb
654
+ - test/rbbt/util/test_migrate.rb
655
+ - test/rbbt/util/test_simpleDSL.rb
656
+ - test/rbbt/util/concurrency/processes/test_socket.rb
657
+ - test/rbbt/util/concurrency/test_processes.rb
658
+ - test/rbbt/util/concurrency/test_threads.rb
659
+ - test/rbbt/util/test_filecache.rb
660
+ - test/rbbt/util/simpleopt/test_get.rb
661
+ - test/rbbt/util/simpleopt/test_parse.rb
662
+ - test/rbbt/util/simpleopt/test_setup.rb
663
+ - test/rbbt/util/test_misc.rb
664
+ - test/rbbt/util/test_excel2tsv.rb
665
+ - test/rbbt/util/test_semaphore.rb
634
666
  - test/rbbt/util/test_procpath.rb
667
+ - test/rbbt/util/R/test_model.rb
668
+ - test/rbbt/util/R/test_eval.rb
669
+ - test/rbbt/util/R/test_plot.rb
670
+ - test/rbbt/util/test_open.rb
671
+ - test/rbbt/util/test_tmpfile.rb
672
+ - test/rbbt/util/test_cmd.rb
673
+ - test/rbbt/util/test_concurrency.rb
674
+ - test/rbbt/util/test_colorize.rb
675
+ - test/rbbt/util/test_config.rb
635
676
  - test/rbbt/util/python/test_util.rb
636
- - test/rbbt/util/misc/test_development.rb
677
+ - test/rbbt/util/test_log.rb
678
+ - test/rbbt/util/test_simpleopt.rb
679
+ - test/rbbt/util/test_python.rb
680
+ - test/rbbt/util/test_chain_methods.rb
637
681
  - test/rbbt/util/misc/test_omics.rb
638
- - test/rbbt/util/misc/test_pipes.rb
639
- - test/rbbt/util/misc/test_serialize.rb
640
- - test/rbbt/util/misc/test_format.rb
641
- - test/rbbt/util/misc/test_communication.rb
642
682
  - test/rbbt/util/misc/test_lock.rb
643
683
  - test/rbbt/util/misc/test_multipart_payload.rb
644
684
  - test/rbbt/util/misc/test_bgzf.rb
645
- - test/rbbt/util/test_concurrency.rb
646
- - test/rbbt/util/test_cmd.rb
647
- - test/rbbt/util/R/test_plot.rb
648
- - test/rbbt/util/R/test_eval.rb
649
- - test/rbbt/util/R/test_model.rb
650
- - test/rbbt/util/test_config.rb
651
- - test/rbbt/util/test_log.rb
652
- - test/rbbt/util/test_simpleDSL.rb
685
+ - test/rbbt/util/misc/test_development.rb
686
+ - test/rbbt/util/misc/test_serialize.rb
687
+ - test/rbbt/util/misc/test_format.rb
688
+ - test/rbbt/util/misc/test_communication.rb
689
+ - test/rbbt/util/misc/test_pipes.rb
653
690
  - test/rbbt/util/log/test_progress.rb
654
- - test/rbbt/util/test_tmpfile.rb
655
691
  - test/rbbt/util/test_R.rb
656
- - test/rbbt/util/test_excel2tsv.rb
657
- - test/rbbt/util/test_misc.rb
658
- - test/rbbt/util/test_open.rb
659
- - test/rbbt/util/test_simpleopt.rb
660
- - test/rbbt/util/simpleopt/test_parse.rb
661
- - test/rbbt/util/simpleopt/test_setup.rb
662
- - test/rbbt/util/simpleopt/test_get.rb
663
- - test/rbbt/util/test_python.rb
664
- - test/rbbt/util/test_filecache.rb
665
- - test/rbbt/util/concurrency/test_processes.rb
666
- - test/rbbt/util/concurrency/test_threads.rb
667
- - test/rbbt/util/concurrency/processes/test_socket.rb
668
- - test/rbbt/util/test_semaphore.rb
669
- - test/rbbt/util/test_chain_methods.rb
670
- - test/rbbt/util/test_migrate.rb
671
- - test/rbbt/test_resource.rb
672
- - test/rbbt/test_packed_index.rb
673
- - test/rbbt/tsv/test_change_id.rb
674
- - test/rbbt/tsv/test_attach.rb
675
- - test/rbbt/tsv/test_filter.rb
676
- - test/rbbt/tsv/test_marshal.rb
692
+ - test/rbbt/test_workflow.rb
693
+ - test/rbbt/knowledge_base/test_entity.rb
694
+ - test/rbbt/knowledge_base/test_enrichment.rb
695
+ - test/rbbt/knowledge_base/test_traverse.rb
696
+ - test/rbbt/knowledge_base/test_syndicate.rb
697
+ - test/rbbt/knowledge_base/test_registry.rb
698
+ - test/rbbt/knowledge_base/test_query.rb
699
+ - test/rbbt/association/test_item.rb
700
+ - test/rbbt/association/test_util.rb
701
+ - test/rbbt/association/test_open.rb
702
+ - test/rbbt/association/test_database.rb
703
+ - test/rbbt/association/test_index.rb
704
+ - test/rbbt/annotations/test_util.rb
705
+ - test/rbbt/test_monitor.rb
706
+ - test/rbbt/resource/test_path.rb
707
+ - test/rbbt/test_hpc.rb
708
+ - test/rbbt/test_persist.rb
677
709
  - test/rbbt/tsv/test_parser.rb
678
710
  - test/rbbt/tsv/test_csv.rb
679
- - test/rbbt/tsv/test_accessor.rb
680
- - test/rbbt/tsv/test_matrix.rb
711
+ - test/rbbt/tsv/test_manipulate.rb
681
712
  - test/rbbt/tsv/test_field_index.rb
682
713
  - test/rbbt/tsv/test_util.rb
683
- - test/rbbt/tsv/test_index.rb
714
+ - test/rbbt/tsv/test_accessor.rb
715
+ - test/rbbt/tsv/test_filter.rb
716
+ - test/rbbt/tsv/test_stream.rb
684
717
  - test/rbbt/tsv/test_parallel.rb
685
- - test/rbbt/tsv/test_manipulate.rb
718
+ - test/rbbt/tsv/test_marshal.rb
719
+ - test/rbbt/tsv/test_matrix.rb
720
+ - test/rbbt/tsv/test_attach.rb
686
721
  - test/rbbt/tsv/test_excel.rb
687
- - test/rbbt/tsv/parallel/test_through.rb
722
+ - test/rbbt/tsv/test_change_id.rb
723
+ - test/rbbt/tsv/test_index.rb
688
724
  - test/rbbt/tsv/parallel/test_traverse.rb
689
- - test/rbbt/tsv/test_stream.rb
690
- - test/rbbt/test_association.rb
691
- - test/rbbt/hpc/test_batch.rb
692
- - test/rbbt/hpc/orchestrate/test_chains.rb
693
- - test/rbbt/hpc/orchestrate/test_rules.rb
694
- - test/rbbt/hpc/orchestrate/test_batches.rb
695
- - test/rbbt/hpc/test_slurm.rb
696
- - test/rbbt/hpc/test_orchestrate.rb
697
- - test/rbbt/association/test_database.rb
698
- - test/rbbt/association/test_item.rb
699
- - test/rbbt/association/test_open.rb
700
- - test/rbbt/association/test_util.rb
701
- - test/rbbt/association/test_index.rb
702
- - test/rbbt/test_knowledge_base.rb
703
- - test/rbbt/persist/tsv/test_kyotocabinet.rb
704
- - test/rbbt/persist/tsv/test_cdb.rb
705
- - test/rbbt/persist/tsv/test_lmdb.rb
706
- - test/rbbt/persist/tsv/test_sharder.rb
707
- - test/rbbt/persist/tsv/test_leveldb.rb
708
- - test/rbbt/persist/tsv/test_tokyocabinet.rb
709
- - test/rbbt/persist/test_tsv.rb
710
- - test/rbbt/test_tsv.rb
711
- - test/rbbt/test_annotations.rb
712
- - test/rbbt/test_fix_width_table.rb
713
- - test/rbbt/test_workflow.rb
714
- - test/rbbt/entity/test_identifiers.rb
715
- - test/rbbt/annotations/test_util.rb
716
- - test/rbbt/test_hpc.rb
717
- - test/rbbt/test_monitor.rb
718
- - test/rbbt/test_persist.rb
719
- - test/rbbt/knowledge_base/test_entity.rb
720
- - test/rbbt/knowledge_base/test_registry.rb
721
- - test/rbbt/knowledge_base/test_syndicate.rb
722
- - test/rbbt/knowledge_base/test_query.rb
723
- - test/rbbt/knowledge_base/test_enrichment.rb
724
- - test/rbbt/knowledge_base/test_traverse.rb
725
- - test/test_helper.rb
725
+ - test/rbbt/tsv/parallel/test_through.rb