rbbt-util 5.17.18 → 5.17.19

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: 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