Class: ExperimentList
- Inherits:
-
Object
- Object
- ExperimentList
- Defined in:
- lib/experiment.rb
Instance Attribute Summary collapse
-
#date ⇒ Object
Persistent storage in .yml file of the experiment status.
-
#name ⇒ Object
Persistent storage in .yml file of the experiment status.
Instance Method Summary collapse
- #add(opts) ⇒ Object
-
#initialize(expfile) ⇒ ExperimentList
constructor
A new instance of ExperimentList.
- #last_iteration(name) ⇒ Object
- #name_available?(name) ⇒ Boolean
- #remove(name) ⇒ Object
- #save ⇒ Object
- #show ⇒ Object
- #update(name, step, state) ⇒ Object
- #value(name, label) ⇒ Object
Constructor Details
#initialize(expfile) ⇒ ExperimentList
Returns a new instance of ExperimentList.
43 44 45 46 47 |
# File 'lib/experiment.rb', line 43 def initialize(expfile) @expfile = expfile File.open(expfile, "w"){|f| f.puts "---"} unless File.exist?(expfile) @list = YAML.load_file(expfile) || Array.new end |
Instance Attribute Details
#date ⇒ Object
Persistent storage in .yml file of the experiment status
42 43 44 |
# File 'lib/experiment.rb', line 42 def date @date end |
#name ⇒ Object
Persistent storage in .yml file of the experiment status
42 43 44 |
# File 'lib/experiment.rb', line 42 def name @name end |
Instance Method Details
#add(opts) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/experiment.rb', line 48 def add(opts) name_available = self.name_available?(opts[:name]) if name_available newexp = {:name => opts[:name], :date => Time.now} #newexp.merge!({:fake_phy => opts[:fake_phy]}) unless opts[:fake_phy].nil? [:fake_phy, :initial_phy, :parsi_size, :bunch_size].each do |label| newexp.merge!({label => opts[label]}) unless opts[label].nil? end @list.push newexp self.save true end end |
#last_iteration(name) ⇒ Object
80 81 82 83 84 |
# File 'lib/experiment.rb', line 80 def last_iteration(name) # TODO is this working? e = self.find_by_name(name) e.last_bunch_dir unless e.nil? end |
#name_available?(name) ⇒ Boolean
114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/experiment.rb', line 114 def name_available?(name) existing_items = find_by_name(name) unless existing_items.nil? if existing_items.size >= 1 puts "A expremient with this name exists already" p existing_items return false end end return true end |
#remove(name) ⇒ Object
103 104 105 106 107 108 109 |
# File 'lib/experiment.rb', line 103 def remove(name) item = find_by_name(name) unless item.nil? @list.delete(item) self.save end end |
#save ⇒ Object
110 111 112 113 |
# File 'lib/experiment.rb', line 110 def save File.open(@expfile, "w"){|f| f.write @list.to_yaml} puts "Experiment list updated" end |
#show ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/experiment.rb', line 85 def show puts "Current Experiments" puts "ID\tname" @list.each_with_index do |item, i| fake_name = item[:fake_phy].nil? ? "-" : File.basename(item[:fake_phy]) initial_name = item[:initial_phy].nil? ? "-" : File.basename(item[:initial_phy]) parsi_size = item[:parsi_size] || "?" bunch_size = item[:bunch_size] || "?" str = "#{i}\t#{item[:name]}" str += " \tinit: #{initial_name}" unless initial_name.empty? str += " \tfake: #{fake_name}" unless fake_name.empty? str += " Best LH: #{item["bestLH"]} (parsi #{parsi_size}, bunch end size #{bunch_size})" puts str item.keys.select{|k| k =~ /^u\d+$/}.sort.each do |update_key| puts " #{update_key}: #{item[update_key]}" end end end |
#update(name, step, state) ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/experiment.rb', line 65 def update(name, step, state) e = self.find_by_name(name) unless e.nil? @list.each do |item| if item[:name] == name if item[step].nil? item[step] = state else item[step] += " " + state end end end end self.save end |
#value(name, label) ⇒ Object
61 62 63 64 |
# File 'lib/experiment.rb', line 61 def value(name, label) e = self.find_by_name(name) e[label] || "?" end |