Sha256: c54b74b342734eee759293f109fe672e9f11d1a40f8df0566efb3d39ebfdb218

Contents?: true

Size: 854 Bytes

Versions: 11

Compression:

Stored size: 854 Bytes

Contents

module DbClustering
  module DatasourceAdapters
    class InMemory

      def initialize(array:, vector_params: nil)
        @vector_params = vector_params
        @array = array.map{ |datasource_point| DbClustering::Models::Point.new(datasource_point: datasource_point, vector_params: @vector_params) }
      end

      def iterate_all_points
        points_count = @array.count
        @array.each.with_index do |point, current_index|
          yield(point, current_index, points_count)
        end
      end

      def neighbors(point:, distance_metric:, max_distance:)
        neighbors = []

        @array.each do |neighbor_candidate|
          if distance_metric.distance(point.vector, neighbor_candidate.vector) <= max_distance
            neighbors << neighbor_candidate
          end
        end

        neighbors
      end

    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
db_clustering-0.1.17 lib/datasource_adapters/in_memory.rb
db_clustering-0.1.16 lib/datasource_adapters/in_memory.rb
db_clustering-0.1.15 lib/datasource_adapters/in_memory.rb
db_clustering-0.1.14 lib/datasource_adapters/in_memory.rb
db_clustering-0.1.13 lib/datasource_adapters/in_memory.rb
db_clustering-0.1.12 lib/datasource_adapters/in_memory.rb
db_clustering-0.1.11 lib/datasource_adapters/in_memory.rb
db_clustering-0.1.10 lib/datasource_adapters/in_memory.rb
db_clustering-0.1.9 lib/datasource_adapters/in_memory.rb
db_clustering-0.1.8 lib/datasource_adapters/in_memory.rb
db_clustering-0.1.7 lib/datasource_adapters/in_memory.rb