nexosis_api 2.1.0 → 2.2.0

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: c12a9dee350193af3df27068feb8161999a7d085
4
- data.tar.gz: c2f3cd6d4b24c211a4eab0c5bd2ed07dd4e6b132
3
+ metadata.gz: c463f70058910101a5ec3b3ed201cc91ed27791c
4
+ data.tar.gz: '09331c0b0cd6c388851e1782942487038e69f50a'
5
5
  SHA512:
6
- metadata.gz: 59e8f973c4aa67adb891ef177deeb8571ed99413a8efb6fc826e46058d286e9a308e1d87c014294ce9a4ae2e8b756402f0b592dbb1b31ba0cebfc9686360a17f
7
- data.tar.gz: b3952c5b3d130305511310e4b77f028ada6832e90ecf1d113f8c842ece1ee2a82754553863d3766998c8c61da6fca998b4afda20de84b11042fd65ecff07ea74
6
+ metadata.gz: aa44a973d907bf7b9a55b4accb1b20669bcd0c8085ee9b92585240926d6d12517f6f14ff25d483097ac7215cc10153bafc319003301bfe23a211910d77f55f23
7
+ data.tar.gz: 0fe95f24b21264037f0e384af3fd9d8f1757b0e2235443c7041066cd167f1f49a2206a979d086ca4852d51e7a68c5dc2c203cf451239114e5a3b45fc2ef709ae
@@ -61,8 +61,8 @@ module NexosisApi
61
61
  # @note For a classification model you may include the extra parameter 'includeClassScores' to
62
62
  # get scores back for each class, not just the chosen class.
63
63
  def predict(model_id, feature_data, extra_parameters = {})
64
- raise ArgumentError, 'Running predictions requires that model_id be specified and it is currently empty.' if model_id.empty?
65
- raise ArgumentError, 'Running predictions requires that feature_data be specified and it is currently empty.' if feature_data.empty?
64
+ raise ArgumentError, 'Running predictions requires that model_id be specified and it is currently empty.' if model_id.nil? || model_id.empty?
65
+ raise ArgumentError, 'Running predictions requires that feature_data be specified and it is currently empty.' if feature_data.nil? || feature_data.empty?
66
66
  predict_url = "/models/#{model_id}/predict"
67
67
  feature_data = [feature_data] unless feature_data.kind_of?(Array)
68
68
  response = self.class.post(predict_url, headers: @headers, body: { 'data': feature_data, 'extraParameters': extra_parameters }.to_json)
@@ -81,7 +81,7 @@ module NexosisApi
81
81
  # @raise [NexosisApi::HttpException]
82
82
  # @raise [ArgumentError]
83
83
  def remove_model(model_id)
84
- raise ArgumentError, 'Deleting a model requires that model_id be specified and it is currently empty.' if model_id.empty?
84
+ raise ArgumentError, 'Deleting a model requires that model_id be specified and it is currently empty.' if model_id.nil? || model_id.empty?
85
85
  delete_url = "/models/#{model_id}"
86
86
  response = self.class.delete(delete_url, @options)
87
87
  unless (response.success?)
@@ -0,0 +1,60 @@
1
+ module NexosisApi
2
+ # class to operate on vocabulary endpoint in Nexosis API
3
+ class Client
4
+ # Vocabluary-based API operations
5
+ # @see http://docs.nexosis.com/
6
+ # @since 2.2.0
7
+ module Vocabulary
8
+ # Gets summary information about the Vocabulary built from the Text columns in a session
9
+ # @param datasource_name [String] optionally limit to those
10
+ # vocabularies created for this data source name.
11
+ # @param created_from_session [String] optionally limit to those
12
+ # vocabularies created for the given session.
13
+ # @param page [Integer] the page number for paged results. Defaults to 0.
14
+ # @param page_size [Integer] the size of each page of paged results. Defaults to 50.
15
+ # @return [NexosisApi::PagedArray of NexosisApi::VocabularySummary] - all vocabularies available within the query parameters
16
+ # @raise [NexosisApi::HttpException]
17
+ def list_vocabularies(datasource_name = nil, created_from_session=nil, page = 0, page_size = 50)
18
+ vocab_url = '/vocabulary'
19
+ query = {
20
+ page: page,
21
+ pageSize: page_size
22
+ }
23
+ query.store('created_from_session', datasource_name) unless created_from_session.nil?
24
+ query.store('dataSourceName', datasource_name) unless datasource_name.nil?
25
+ response = self.class.get(vocab_url, headers: @headers, query: query)
26
+ raise HttpException.new("There was a problem listing vocabularies: #{response.code}.",
27
+ "listing vocabularies with data source name #{datasource_name}",
28
+ response) unless response.success?
29
+ NexosisApi::PagedArray.new(response.parsed_response,
30
+ response.parsed_response['items']
31
+ .map { |item| NexosisApi::VocabularySummary.new(item) })
32
+ end
33
+
34
+ # Gets a list of Vocabulary Words from a vocabulary
35
+ # @param vocabulary_id [String] required unique identifier for vocabulary to get
36
+ # @param type [String] whether to return 'word' types (default), 'stopWord' for only stop words, or nil for both.
37
+ # @param page [Integer] the page number for paged results. Defaults to 0.
38
+ # @param page_size [Integer] the size of each page of paged results. Defaults to 50.
39
+ # @return [NexosisApi::PagedArray of NexosisApi::VocabularyWord]
40
+ # @note words will be sorted in rank order
41
+ # @raise [NexosisApi::HttpException]
42
+ def get_vocabulary(vocabulary_id, type = 'word', page = 0, page_size = 50)
43
+ raise ArgumentError, 'vocabulary_id was not provided and is not optional' if vocabulary_id.nil?
44
+ vocab_url = "/vocabulary/#{vocabulary_id}"
45
+ query = {
46
+ page: page,
47
+ pageSize: page_size
48
+ }
49
+ query.store('type', type) unless type.nil?
50
+ response = self.class.get(vocab_url, headers: @headers, query: query)
51
+ raise HttpException.new("There was a problem getting a vocabulary: #{response.code}.",
52
+ "getting vocabulary #{vocabulary_id}",
53
+ response) unless response.success?
54
+ NexosisApi::PagedArray.new(response.parsed_response,
55
+ response.parsed_response['items']
56
+ .map { |item| NexosisApi::VocabularyWord.new(item) })
57
+ end
58
+ end
59
+ end
60
+ end
@@ -30,11 +30,14 @@ require 'nexosis_api/session'
30
30
  require 'nexosis_api/time_interval'
31
31
  require 'nexosis_api/view_definition'
32
32
  require 'nexosis_api/view_data'
33
+ require 'nexosis_api/vocabulary_summary'
34
+ require 'nexosis_api/vocabulary_word'
33
35
  require 'nexosis_api/client/contest'
34
36
  require 'nexosis_api/client/sessions'
35
37
  require 'nexosis_api/client/datasets'
36
38
  require 'nexosis_api/client/imports'
37
39
  require 'nexosis_api/client/views'
40
+ require 'nexosis_api/client/vocabulary'
38
41
  require 'nexosis_api/client/models'
39
42
 
40
43
  module NexosisApi
@@ -48,6 +51,7 @@ module NexosisApi
48
51
  include Client::Views
49
52
  include Client::Models
50
53
  include Client::Contest
54
+ include Client::Vocabulary
51
55
 
52
56
  def initialize(options = {})
53
57
  raise ArgumentError, 'api_key was not defined' unless options[:api_key].nil? == false
@@ -7,6 +7,8 @@ module NexosisApi
7
7
  @data = NexosisApi::PagedArray.new(data_hash, v)
8
8
  elsif (k == 'links')
9
9
  @links = v.reject(&:nil?).map { |l| NexosisApi::Link.new(l) }
10
+ elsif (k == 'isTimeSeries')
11
+ @is_timeseries = v
10
12
  end
11
13
  end
12
14
  end
@@ -18,5 +20,10 @@ module NexosisApi
18
20
  # The hash of data values from the dataset
19
21
  # @return [NexosisApi::PagedArray of Hash] where each hash contains the dataset data
20
22
  attr_accessor :data
23
+
24
+ # Whether or not this dataset was loaded with a date-based key with a timestamp role
25
+ # @return [Boolean]
26
+ # @since 2.1.1
27
+ attr_reader :is_timeseries
21
28
  end
22
29
  end
@@ -0,0 +1,44 @@
1
+ module NexosisApi
2
+ # parsed results of a request for vocabulary
3
+ # @since 2.2.0
4
+ class VocabularySummary
5
+ def initialize(vocab_hash)
6
+ var_map = { 'id' => :@vocabulary_id,
7
+ 'dataSourceName' => :@datasource_name,
8
+ 'columnName' => :@column_name,
9
+ 'dataSourceType' => :@datasource_type,
10
+ 'createdOnDate' => :@created_on,
11
+ 'createdBySessionId' => :@created_by_session }
12
+ vocab_hash.each { |k, v| instance_variable_set(var_map[k.to_s], v) unless var_map[k.to_s].nil? }
13
+ @links = vocab_hash['links'].reject(&:nil?).map { |l| NexosisApi::Link.new(l) }
14
+ end
15
+
16
+ # unique identifier for this vocabulary
17
+ # @return [String]
18
+ attr_reader :vocabulary_id
19
+
20
+ # datasource which contained the text column the vocabulary was built from
21
+ # @return [String]
22
+ attr_reader :datasource_name
23
+
24
+ # text-based column name from the datasource
25
+ # @return [String]
26
+ attr_reader :column_name
27
+
28
+ # determines if data source was dataSet, View, or other
29
+ # @return [String]
30
+ attr_reader :datasource_type
31
+
32
+ # The date on which the vocabulary was created
33
+ # @return [DateTime]
34
+ attr_reader :created_on
35
+
36
+ # The unique id of the session for which this vocabulary was built.
37
+ # @reutn [String]
38
+ attr_reader :created_by_session
39
+
40
+ # hypermedia related to this vocabulary
41
+ # @return [Arrays]
42
+ attr_reader :links
43
+ end
44
+ end
@@ -0,0 +1,22 @@
1
+ module NexosisApi
2
+ # parse results of a single word entry in a vocabulary
3
+ # @since 2.2.0
4
+ class VocabularyWord
5
+ def initialize(word_hash)
6
+ word_hash.each { |k, v| instance_variable_set("@#{k}", v) }
7
+ end
8
+
9
+ # The actual word or word pair
10
+ # @return [String]
11
+ attr_reader :text
12
+
13
+ # Either word or stopWord
14
+ # @return [String]
15
+ attr_reader :type
16
+
17
+ # For words the rank or relative importance of the word in predictions. Nil for stop words.
18
+ # @return [Integer]
19
+ attr_reader :rank
20
+
21
+ end
22
+ end
data/nexosisapi.gemspec CHANGED
@@ -16,6 +16,6 @@ Gem::Specification.new do |spec|
16
16
  spec.require_paths = ['lib']
17
17
  spec.required_ruby_version = '>= 2.0.0'
18
18
  spec.summary = "Ruby client for working with the Nexosis API"
19
- spec.version = '2.1.0'
19
+ spec.version = '2.2.0'
20
20
  spec.metadata["yard.run"] = "yri"
21
21
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexosis_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nexosis,Inc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-12 00:00:00.000000000 Z
11
+ date: 2018-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -59,6 +59,7 @@ files:
59
59
  - lib/nexosis_api/client/models.rb
60
60
  - lib/nexosis_api/client/sessions.rb
61
61
  - lib/nexosis_api/client/views.rb
62
+ - lib/nexosis_api/client/vocabulary.rb
62
63
  - lib/nexosis_api/column.rb
63
64
  - lib/nexosis_api/column_options.rb
64
65
  - lib/nexosis_api/column_role.rb
@@ -85,6 +86,8 @@ files:
85
86
  - lib/nexosis_api/time_interval.rb
86
87
  - lib/nexosis_api/view_data.rb
87
88
  - lib/nexosis_api/view_definition.rb
89
+ - lib/nexosis_api/vocabulary_summary.rb
90
+ - lib/nexosis_api/vocabulary_word.rb
88
91
  - nexosisapi.gemspec
89
92
  homepage: https://github.com/nexosis/nexosisclient-rb
90
93
  licenses: