veritable 0.1.2.30 → 0.1.3.31
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.
- data/CHANGELOG.txt +4 -0
- data/lib/veritable/api.rb +54 -10
- data/lib/veritable/version.rb +1 -1
- metadata +4 -4
data/CHANGELOG.txt
CHANGED
data/lib/veritable/api.rb
CHANGED
@@ -554,8 +554,8 @@ module Veritable
|
|
554
554
|
# Scores how related columns are to a column of interest
|
555
555
|
#
|
556
556
|
# ==== Arguments
|
557
|
-
# * +column_id+ -- the
|
558
|
-
# * +start+ -- the column
|
557
|
+
# * +column_id+ -- the name of the column of interest
|
558
|
+
# * +start+ -- the column name from which to start the cursor. Columns with related scores greater than or equal to the score of column +start+ will be returned by the cursor. Default is +nil+, in which case all columns in the table will be returned by the cursor.
|
559
559
|
# * +limit+ -- optionally limits the number of columns returned by the cursor. Default is +nil+, in which case the number of columns returned will not be limited.
|
560
560
|
#
|
561
561
|
# ==== Returns
|
@@ -578,6 +578,45 @@ module Veritable
|
|
578
578
|
end
|
579
579
|
end
|
580
580
|
|
581
|
+
# Returns rows which are similar to a target row in the context
|
582
|
+
# of a particular column of interest.
|
583
|
+
#
|
584
|
+
# ==== Arguments
|
585
|
+
# * +row+ -- either a row '_id' string or a row hash corrsponding to the target row. If a row hash is provided, it must contain an '_id' key whose value is the '_id' of a row present in the table at the time of the analysis
|
586
|
+
# * +column_id+ -- the name of the column of interest.
|
587
|
+
# * +max_rows+ -- the maximum number of similar rows to return. Default is +10+. The actual number of similar rows returned will be less than or equal to max_rows.
|
588
|
+
# * +return_data+ -- if +true+, the full row content will be returned. If +false+, only the '_id' field for each row will be returned. Default is +true+.
|
589
|
+
#
|
590
|
+
# ==== Returns
|
591
|
+
# An array of row entries ordered from most similar to least similar.
|
592
|
+
# Each row entry is an array with the first element being the row and
|
593
|
+
# the second element being a relatedness score between 0 to 1.
|
594
|
+
#
|
595
|
+
# See also: https://dev.priorknowledge.com/docs/client/ruby
|
596
|
+
def similar_to(row, column_id, opts={:max_rows => 10, :return_data => true})
|
597
|
+
if row.is_a? String
|
598
|
+
row = {'_id' => row}
|
599
|
+
end
|
600
|
+
if not row.is_a? Hash
|
601
|
+
raise VeritableError.new("Similar -- Must provide an existing row to get similar!")
|
602
|
+
end
|
603
|
+
update if running?
|
604
|
+
if succeeded?
|
605
|
+
doc = post(link('similar'), {:data => row, :column => column_id,
|
606
|
+
:max_rows => 10, :return_data => true}.update(opts))
|
607
|
+
return doc['data']
|
608
|
+
elsif running?
|
609
|
+
raise VeritableError.new("Similar -- Analysis with id #{_id} is still running and not yet ready to calculate similar.")
|
610
|
+
elsif failed?
|
611
|
+
raise VeritableError.new("Similar -- Analysis with id #{_id} has failed and cannot calculate similar.")
|
612
|
+
else
|
613
|
+
raise VeritableError.new("Similar -- Shouldn't be here -- please let us know at support@priorknowledge.com.")
|
614
|
+
end
|
615
|
+
end
|
616
|
+
|
617
|
+
|
618
|
+
|
619
|
+
|
581
620
|
# Returns a string representation of the analysis resource
|
582
621
|
def inspect; to_s; end
|
583
622
|
|
@@ -618,16 +657,22 @@ module Veritable
|
|
618
657
|
|
619
658
|
private
|
620
659
|
|
621
|
-
def execute_batch(batch, count, preds)
|
660
|
+
def execute_batch(batch, count, preds, maxcells)
|
622
661
|
if batch.size == 0
|
623
662
|
return
|
624
663
|
end
|
625
664
|
if batch.size == 1
|
626
665
|
data = batch[0]
|
666
|
+
ncols = (data.values.select {|v| v.nil?}).size
|
667
|
+
max_batch_count = (ncols == 0) ? count : (maxcells/ncols).to_i
|
668
|
+
res = []
|
669
|
+
while res.size < count do
|
670
|
+
batch_count = [max_batch_count, count - res.size].min
|
671
|
+
res = res + post(link('predict'), {'data' => data, 'count' => batch_count, 'return_fixed' => false})
|
672
|
+
end
|
627
673
|
else
|
628
|
-
|
674
|
+
res = post(link('predict'), {'data' => batch, 'count' => count, 'return_fixed' => false})
|
629
675
|
end
|
630
|
-
res = post(link('predict'), {'data' => data, 'count' => count, 'return_fixed' => false})
|
631
676
|
if not res.is_a? Array
|
632
677
|
begin
|
633
678
|
res.to_s
|
@@ -661,16 +706,15 @@ module Veritable
|
|
661
706
|
if tcols > maxcols
|
662
707
|
raise VeritableError.new("Predict -- Cannot predict for row #{row['_request_id']} with more than #{maxcols} combined fixed and predicted values.")
|
663
708
|
end
|
664
|
-
|
665
|
-
|
666
|
-
raise VeritableError.new("Predict -- Cannot predict for row #{row['_request_id']} with #{ncols} missing values and count #{count}: exceeds predicted cell limit of #{maxcells}.")
|
709
|
+
if ncols > maxcells
|
710
|
+
raise VeritableError.new("Predict -- Cannot predict for row #{row['_request_id']} with #{ncols} missing values: exceeds predicted cell limit of #{maxcells}.")
|
667
711
|
end
|
668
712
|
}
|
669
713
|
rows.each {|row|
|
670
714
|
ncols = (row.values.select {|v| v.nil?}).size
|
671
715
|
n = ncols * count
|
672
716
|
if (ncells + n) > maxcells
|
673
|
-
execute_batch(batch, count, preds)
|
717
|
+
execute_batch(batch, count, preds, maxcells)
|
674
718
|
ncells = n
|
675
719
|
batch = [row]
|
676
720
|
else
|
@@ -678,7 +722,7 @@ module Veritable
|
|
678
722
|
ncells = ncells + n
|
679
723
|
end
|
680
724
|
}
|
681
|
-
execute_batch(batch, count, preds)
|
725
|
+
execute_batch(batch, count, preds, maxcells)
|
682
726
|
return preds
|
683
727
|
else
|
684
728
|
raise VeritableError.new("Predict -- Shouldn't be here -- please let us know at support@priorknowledge.com.")
|
data/lib/veritable/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: veritable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3.31
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rest-client
|
@@ -173,7 +173,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
173
173
|
version: '0'
|
174
174
|
segments:
|
175
175
|
- 0
|
176
|
-
hash:
|
176
|
+
hash: 4376636797931241119
|
177
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
178
|
none: false
|
179
179
|
requirements:
|
@@ -182,7 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
182
|
version: '0'
|
183
183
|
segments:
|
184
184
|
- 0
|
185
|
-
hash:
|
185
|
+
hash: 4376636797931241119
|
186
186
|
requirements: []
|
187
187
|
rubyforge_project:
|
188
188
|
rubygems_version: 1.8.24
|