rbbt-util 5.17.18 → 5.17.19

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
2
  SHA1:
3
- metadata.gz: df2f1977b609e8ee620bf7f2a5318664c7ed7cbf
4
- data.tar.gz: f8107c1ea077494713357cfe4b37289fcb1103ba
3
+ metadata.gz: 8086326d7f2641311bb29a47622ed665b7810bbf
4
+ data.tar.gz: bb5058f3d0f22653fb8f01bcb2ff7660e581eb17
5
5
  SHA512:
6
- metadata.gz: 5dfbc75b5b4cb08522333f438d0a40a240c29a17d3ebd37139a67d4dc7a5b236d6424b09eeb7a533d9e6f1fda1e133cca9db102de06d56ed9d9667a1c5be3855
7
- data.tar.gz: 98a1e891119afbf2a454efd0e5ebc690be36f6deadb474c8ed9b3294f866522f3c568fe1571624015ca6653e29dffb229fef6d4074dc7d5a7ab702f06fadd1c5
6
+ metadata.gz: ab07516d71e624866421fbd4041e27ea9964d871f13bbda1ceb6871215815d7e847eb2f6af2f21e001417d1a933804e08d28db3e26b4596365a29747dc4d48d2
7
+ data.tar.gz: f58d0cad5b049f1fdc902a0d14b9cd39ffe3b0104017e08ce4941cf1f73014d95e0989e26e9d3878a9e62948f7928c1b7ed0fec5864e5e3cafbfc761dcc28110
@@ -167,7 +167,7 @@ module Path
167
167
 
168
168
  search_paths.keys.
169
169
  collect{|where| Dir.glob(find(where, Path.caller_lib_dir, search_paths))}.
170
- compact.flatten.collect{|path| Path.setup(path, self.resource, self.pkgdir)}
170
+ compact.flatten.uniq.collect{|path| Path.setup(path, self.resource, self.pkgdir)}
171
171
  end
172
172
  #{{{ Methods
173
173
 
@@ -18,7 +18,7 @@ module TSV
18
18
 
19
19
  def self.paste_streams(streams, options = {})
20
20
  options = Misc.add_defaults options, :sep => "\t", :sort => true
21
- sort, sep, preamble = Misc.process_options options, :sort, :sep, :preamble
21
+ sort, sep, preamble, same_fields = Misc.process_options options, :sort, :sep, :preamble, :same_fields
22
22
 
23
23
  out = Misc.open_pipe do |sin|
24
24
 
@@ -67,7 +67,11 @@ module TSV
67
67
  end
68
68
 
69
69
  key_field = key_fields.compact.first
70
- fields = fields.compact.flatten
70
+ if same_fields
71
+ fields = fields.first
72
+ else
73
+ fields = fields.compact.flatten
74
+ end
71
75
  options = options.merge(input_options.first)
72
76
  options[:type] = :list if options[:type] == :single
73
77
 
@@ -150,13 +154,30 @@ module TSV
150
154
  end
151
155
  end
152
156
 
153
- values = str.inject(nil) do |acc,part|
154
- if acc.nil?
155
- acc = part.dup
156
- else
157
- acc << sep << part
157
+ if same_fields
158
+
159
+ values = nil
160
+ str.each do |part|
161
+ next if part.nil? or part.empty?
162
+ _p = part.split(sep,-1)
163
+ if values.nil?
164
+ values = _p.collect{|v| [v]}
165
+ else
166
+ _p.each_with_index{|v,i| values[i] << v}
167
+ end
168
+ end
169
+
170
+ values = values.collect{|list| list * "|" } * sep
171
+
172
+ else
173
+ values = str.inject(nil) do |acc,part|
174
+ if acc.nil?
175
+ acc = part.dup
176
+ else
177
+ acc << sep << part
178
+ end
179
+ acc
158
180
  end
159
- acc
160
181
  end
161
182
  text = [min, values] * sep
162
183
  sin.puts text
@@ -70,6 +70,19 @@ data = NULL
70
70
  tsv
71
71
  end
72
72
 
73
+ def predict_interval(value, interval='confidence')
74
+ field = formula.split("~").last.strip
75
+ field.gsub!(/log\((.*)\)/,'\1')
76
+
77
+ script = <<-EOF
78
+ model = rbbt.model.load('#{model_file}');
79
+ predict(model, data.frame(#{field} = #{R.ruby2R value}), interval=#{R.ruby2R interval});
80
+ EOF
81
+
82
+ res = R.eval_a script
83
+ Hash[*%w(fit lower upper).zip(res).flatten]
84
+ end
85
+
73
86
  def predict(tsv, field = "Prediction")
74
87
  case tsv
75
88
  when TSV
@@ -118,8 +118,6 @@ module Misc
118
118
  def self.hash2md5(hash)
119
119
  return "" if hash.nil? or hash.empty?
120
120
 
121
- hash = Annotated.purge(hash)
122
-
123
121
  str = ""
124
122
  keys = hash.keys
125
123
  keys = keys.clean_annotations if keys.respond_to? :clean_annotations
@@ -133,7 +131,11 @@ module Misc
133
131
 
134
132
  keys.each do |k|
135
133
  next if k == :monitor or k == "monitor" or k == :in_situ_persistence or k == "in_situ_persistence"
136
- v = hash[k]
134
+ _v = hash[k]
135
+ _k = k
136
+ v = Annotated.purge(_v)
137
+ k = Annotated.purge(k)
138
+
137
139
  case
138
140
  when TrueClass === v
139
141
  str << k.to_s << "=>true"
@@ -168,8 +170,8 @@ module Misc
168
170
  end
169
171
  end
170
172
 
171
- if defined? Annotated and Annotated === v and not (defined? AssociationItem and AssociationItem === v)
172
- info = Annotated.purge(v.info)
173
+ if defined? Annotated and Annotated === _v and not (defined? AssociationItem and AssociationItem === _v)
174
+ info = Annotated.purge(_v.info)
173
175
  str << "_" << hash2md5(info)
174
176
  end
175
177
  end
@@ -176,6 +176,28 @@ row1 A B C
176
176
  assert_equal ["AA", "BB", "CC", ""], tsv["row2"]
177
177
  end
178
178
 
179
+ def test_paste_stream_same_field
180
+ text1=<<-EOF
181
+ #: :sep=" "
182
+ #Row LabelA
183
+ row1 A
184
+ row2 AA
185
+ EOF
186
+
187
+ text2=<<-EOF
188
+ #: :sep=" "
189
+ #Row LabelA
190
+ row2 AAA
191
+ EOF
192
+
193
+ s1 = StringIO.new text1
194
+ s2 = StringIO.new text2
195
+ tsv = TSV.open TSV.paste_streams([s1,s2], :sep => " ", :type => :double, :sort => false, :same_fields => true)
196
+ ppp tsv.to_s
197
+ assert_equal "Row", tsv.key_field
198
+ assert_equal ["AA", "AAA"], tsv["row2"][0]
199
+ end
200
+
179
201
  def test_flat2double
180
202
  text1=<<-EOF
181
203
  #: :sep= #:type=:flat
@@ -109,4 +109,22 @@ data = rbbt.model.inpute(data, CI ~ Dose, method=drm, classes='numeric', fct=LL.
109
109
  pred = model.predict "Dose" => x
110
110
  assert pred > y and pred < y + 4
111
111
  end
112
+
113
+ def test_interval
114
+ data = TSV.setup({}, :key_field => "Dose", :fields => ["Response"], :type => :single)
115
+ 10.times do
116
+ x = rand(10)
117
+ y = 10 + 3 * x + rand * 4
118
+ data[x] = y
119
+ end
120
+
121
+ model = R::Model.new "Test fit 2", "Response ~ Dose", data, :fit => 'lm'
122
+
123
+ x = 5
124
+ y = 10 + 3 * x
125
+
126
+ pred = model.predict x
127
+ iii model.predict_interval(x)
128
+ assert pred > y and pred < y + 4
129
+ end
112
130
  end
@@ -3,7 +3,7 @@ require 'rbbt/util/open'
3
3
  require 'rbbt/util/tmpfile'
4
4
  require 'rbbt/persist'
5
5
  require 'test/unit'
6
- require 'iconv'
6
+
7
7
 
8
8
  class TestOpen < Test::Unit::TestCase
9
9
 
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.17.18
4
+ version: 5.17.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-16 00:00:00.000000000 Z
11
+ date: 2015-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake