optimus-ep 0.6.9 → 0.6.91
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -0
- data/lib/log_file_parser.rb +21 -7
- data/lib/version.rb +1 -1
- data/spec/log_file_parser_spec.rb +11 -15
- data/spec/samples/optimus_log.txt +7 -14
- data/spec/spec_helper.rb +24 -0
- metadata +2 -2
data/History.txt
CHANGED
data/lib/log_file_parser.rb
CHANGED
@@ -25,7 +25,6 @@ module Eprime
|
|
25
25
|
|
26
26
|
attr_reader :frames
|
27
27
|
attr_reader :levels
|
28
|
-
attr_reader :top_level
|
29
28
|
# Valid things for the options hash:
|
30
29
|
# :columns => an array of strings, predefining the expected columns
|
31
30
|
# (and their order)
|
@@ -37,8 +36,6 @@ module Eprime
|
|
37
36
|
@force = options[:force]
|
38
37
|
@file = file
|
39
38
|
@levels = [''] # The 0 index should be blank.
|
40
|
-
@top_level = 0 # This is the level of the frame that'll
|
41
|
-
# generate output rows
|
42
39
|
@found_cols = ColumnList.new()
|
43
40
|
end
|
44
41
|
|
@@ -60,7 +57,7 @@ module Eprime
|
|
60
57
|
|
61
58
|
@columns ||= @found_cols.names
|
62
59
|
data = Eprime::Data.new(@columns)
|
63
|
-
self.
|
60
|
+
self.leaf_frames.each do |frame|
|
64
61
|
row = data.add_row
|
65
62
|
@found_cols.names_with_cols.each do |pair|
|
66
63
|
name, col = *pair
|
@@ -71,8 +68,8 @@ module Eprime
|
|
71
68
|
return data
|
72
69
|
end
|
73
70
|
|
74
|
-
def
|
75
|
-
return frames.find_all { |frame| frame.
|
71
|
+
def leaf_frames
|
72
|
+
return frames.find_all { |frame| frame.leaf? }
|
76
73
|
end
|
77
74
|
|
78
75
|
# Define this as a column we *should not* include in out output.
|
@@ -102,7 +99,6 @@ module Eprime
|
|
102
99
|
if !in_frame
|
103
100
|
if key == LEVEL_KEY
|
104
101
|
frame.level = val.to_i
|
105
|
-
@top_level = frame.level if frame.level > @top_level
|
106
102
|
elsif key == FRAME_START
|
107
103
|
in_frame = true
|
108
104
|
end
|
@@ -166,6 +162,8 @@ module Eprime
|
|
166
162
|
def set_parents!
|
167
163
|
parents = []
|
168
164
|
@frames.reverse_each do |frame|
|
165
|
+
child = parents[frame.level-1]
|
166
|
+
|
169
167
|
parents[frame.level] = frame
|
170
168
|
frame.parent = parents[frame.level-1] # This will be nil for empty slots.
|
171
169
|
end
|
@@ -176,13 +174,29 @@ module Eprime
|
|
176
174
|
|
177
175
|
attr_accessor :level
|
178
176
|
attr_accessor :parent
|
177
|
+
attr_accessor :children
|
179
178
|
def initialize(parser)
|
180
179
|
@level = nil
|
181
180
|
@parent = nil
|
181
|
+
@children = []
|
182
182
|
@data = Hash.new
|
183
183
|
@parser = parser
|
184
184
|
end
|
185
185
|
|
186
|
+
def parent=(new_parent)
|
187
|
+
if @parent
|
188
|
+
if new_parent != @parent
|
189
|
+
@parent.children.delete(self)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
@parent = new_parent
|
193
|
+
@parent.children << self if @parent
|
194
|
+
end
|
195
|
+
|
196
|
+
def leaf?
|
197
|
+
@children.empty?
|
198
|
+
end
|
199
|
+
|
186
200
|
# Methods to make this behave hashlike. Don't just delegate to
|
187
201
|
# the @data hash; that's less clear.
|
188
202
|
def [](key)
|
data/lib/version.rb
CHANGED
@@ -27,16 +27,16 @@ describe Eprime::Reader::LogfileParser do
|
|
27
27
|
@reader.frames.detect{ |c| c.keys.size == 0}.should be_nil
|
28
28
|
end
|
29
29
|
|
30
|
-
it "should have a level
|
31
|
-
@reader.frames.first.level.should ==
|
30
|
+
it "should have a level 2 frame at the start" do
|
31
|
+
@reader.frames.first.level.should == 2
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should have a level 1 frame at the end" do
|
35
35
|
@reader.frames.last.level.should == 1
|
36
36
|
end
|
37
37
|
|
38
|
-
it "should have a known
|
39
|
-
@reader.frames.first["
|
38
|
+
it "should have a known BlockTitle key in first frame" do
|
39
|
+
@reader.frames.first["BlockTitle"].should_not be_nil
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should not have a known Gibberish key in first frame" do
|
@@ -55,12 +55,8 @@ describe Eprime::Reader::LogfileParser do
|
|
55
55
|
@reader.levels.should include("Session")
|
56
56
|
end
|
57
57
|
|
58
|
-
it "should
|
59
|
-
@reader.
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should have three top frames" do
|
63
|
-
@reader.top_frames.length.should == 3
|
58
|
+
it "should have four leaves" do
|
59
|
+
@reader.leaf_frames.length.should == 4
|
64
60
|
end
|
65
61
|
|
66
62
|
it "should have a parent in the first frame" do
|
@@ -72,8 +68,8 @@ describe Eprime::Reader::LogfileParser do
|
|
72
68
|
@eprime = @reader.to_eprime
|
73
69
|
end
|
74
70
|
|
75
|
-
it "should generate
|
76
|
-
@eprime.length.should ==
|
71
|
+
it "should generate four rows from the example file" do
|
72
|
+
@eprime.length.should == 4
|
77
73
|
end
|
78
74
|
|
79
75
|
it "should follow the column order in the example file" do
|
@@ -105,7 +101,7 @@ describe Eprime::Reader::LogfileParser do
|
|
105
101
|
|
106
102
|
it "should compute task counters" do
|
107
103
|
@eprime.first["Block"].should == 1
|
108
|
-
@eprime.last["Block"].should ==
|
104
|
+
@eprime.last["Block"].should == 3
|
109
105
|
@eprime.last["Trial"].should == 2
|
110
106
|
end
|
111
107
|
|
@@ -131,8 +127,8 @@ describe Eprime::Reader::LogfileParser do
|
|
131
127
|
@eprime.columns.first.should == "ExperimentName"
|
132
128
|
end
|
133
129
|
|
134
|
-
it "should have
|
135
|
-
@eprime.length.should ==
|
130
|
+
it "should have four rows" do
|
131
|
+
@eprime.length.should == 4
|
136
132
|
end
|
137
133
|
|
138
134
|
|
@@ -19,20 +19,13 @@ Subject: 1
|
|
19
19
|
Session: 1
|
20
20
|
Display.RefreshRate: 60.000
|
21
21
|
*** Header End ***
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
BlockList.Sample: 1
|
30
|
-
Running: TestList
|
31
|
-
StartTime: 5000
|
32
|
-
Stim1.OnsetTime: 88684
|
33
|
-
Stim1.OffsetTime: 93583
|
34
|
-
CarriedVal: TrialLevel
|
35
|
-
*** LogFrame End ***
|
22
|
+
Level: 2
|
23
|
+
*** LogFrame Start ***
|
24
|
+
Procedure: Prep
|
25
|
+
Running: prepProc
|
26
|
+
CarriedVal: BlockLevel
|
27
|
+
BlockTitle: Prep
|
28
|
+
*** LogFrame End ***
|
36
29
|
Level: 2
|
37
30
|
*** LogFrame Start ***
|
38
31
|
BlockTitle: My Task
|
data/spec/spec_helper.rb
CHANGED
@@ -6,6 +6,30 @@
|
|
6
6
|
# Imaging and Behavior, University of Wisconsin - Madison
|
7
7
|
|
8
8
|
module EprimeTestHelper
|
9
|
+
|
10
|
+
class RoundTrip
|
11
|
+
def initialize(expected)
|
12
|
+
@expected = expected
|
13
|
+
end
|
14
|
+
|
15
|
+
def matches?(target)
|
16
|
+
@parsed = target.parse(@expected).to_s
|
17
|
+
@parsed == @expected
|
18
|
+
end
|
19
|
+
|
20
|
+
def failure_message
|
21
|
+
"expected #{@parsed} to parse to #{@expected}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def negative_failure_message
|
25
|
+
"Expected #{@parsed} to not parse to #{@expected}"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def round_trip(expected)
|
30
|
+
RoundTrip.new(expected)
|
31
|
+
end
|
32
|
+
|
9
33
|
unless constants.include?('SAMPLE_DIR')
|
10
34
|
SAMPLE_DIR = File.join(File.dirname(__FILE__), 'samples')
|
11
35
|
LOG_FILE = File.join(SAMPLE_DIR, 'optimus_log.txt')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: optimus-ep
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.91
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Vack
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-03-10 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|