Class: Ml::ExperimentTracking::CandidateRepository

Inherits:
Object
  • Object
show all
Defined in:
app/services/ml/experiment_tracking/candidate_repository.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(project, user = nil) ⇒ CandidateRepository

Returns a new instance of CandidateRepository.



8
9
10
11
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 8

def initialize(project, user = nil)
  @project = project
  @user = user
end

Instance Attribute Details

#candidateObject

Returns the value of attribute candidate.



6
7
8
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 6

def candidate
  @candidate
end

#experimentObject

Returns the value of attribute experiment.



6
7
8
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 6

def experiment
  @experiment
end

#projectObject

Returns the value of attribute project.



6
7
8
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 6

def project
  @project
end

#userObject

Returns the value of attribute user.



6
7
8
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 6

def user
  @user
end

Instance Method Details

#add_metric!(candidate, name, value, tracked_at, step) ⇒ Object



38
39
40
41
42
43
44
45
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 38

def add_metric!(candidate, name, value, tracked_at, step)
  candidate.metrics.create!(
    name: name,
    value: value,
    tracked_at: tracked_at,
    step: step
  )
end

#add_metrics(candidate, metric_definitions) ⇒ Object



57
58
59
60
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 57

def add_metrics(candidate, metric_definitions)
  extra_keys = { tracked_at: :timestamp, step: :step }
  insert_many(candidate, metric_definitions, ::Ml::CandidateMetric, extra_keys)
end

#add_param!(candidate, name, value) ⇒ Object



47
48
49
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 47

def add_param!(candidate, name, value)
  candidate.params.create!(name: name, value: value)
end

#add_params(candidate, param_definitions) ⇒ Object



62
63
64
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 62

def add_params(candidate, param_definitions)
  insert_many(candidate, param_definitions, ::Ml::CandidateParam)
end

#add_tag!(candidate, name, value) ⇒ Object



51
52
53
54
55
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 51

def add_tag!(candidate, name, value)
  handle_gitlab_tags(candidate, [{ key: name, value: value }])

  candidate..create!(name: name, value: value)
end

#add_tags(candidate, tag_definitions) ⇒ Object



66
67
68
69
70
71
72
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 66

def add_tags(candidate, tag_definitions)
  return unless tag_definitions.present?

  handle_gitlab_tags(candidate, tag_definitions)

  insert_many(candidate, tag_definitions, ::Ml::CandidateMetadata)
end

#by_eid(eid) ⇒ Object



13
14
15
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 13

def by_eid(eid)
  ::Ml::Candidate.with_project_id_and_eid(project.id, eid)
end

#create!(experiment, start_time, tags = nil, name = nil) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 17

def create!(experiment, start_time, tags = nil, name = nil)
  create_params = {
    start_time: start_time,
    user: user,
    name: candidate_name(name, tags)
  }

  candidate = Ml::CreateCandidateService.new(experiment, create_params).execute

  add_tags(candidate, tags)

  candidate
end

#update(candidate, status, end_time) ⇒ Object



31
32
33
34
35
36
# File 'app/services/ml/experiment_tracking/candidate_repository.rb', line 31

def update(candidate, status, end_time)
  candidate.status = status.downcase if status
  candidate.end_time = end_time if end_time

  candidate.save
end