optimus-ep 0.6.91 → 0.8.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.
Files changed (60) hide show
  1. data/CHANGELOG +13 -0
  2. data/{License.txt → LICENSE} +1 -1
  3. data/{Manifest.txt → Manifest} +23 -11
  4. data/{README.txt → README} +1 -1
  5. data/Rakefile +9 -10
  6. data/autotest/discover.rb +1 -0
  7. data/bin/eprime2tabfile +10 -10
  8. data/bin/extract_timings +4 -4
  9. data/lib/eprimetab_parser.rb +3 -3
  10. data/lib/excel_parser.rb +2 -2
  11. data/lib/expression_parser/evaluators.rb +188 -0
  12. data/lib/expression_parser/expressions.rb +173 -0
  13. data/lib/log_file_parser.rb +9 -9
  14. data/lib/optimus.rb +30 -0
  15. data/lib/{eprime_data.rb → optimus_data.rb} +12 -29
  16. data/lib/{eprime_reader.rb → optimus_reader.rb} +27 -13
  17. data/lib/parsed_calculator.rb +92 -0
  18. data/lib/raw_tab_parser.rb +3 -3
  19. data/lib/runners/generic_runner.rb +7 -7
  20. data/lib/runners/yaml_template/option_parser.rb +33 -0
  21. data/lib/runners/yaml_template/runner.rb +19 -0
  22. data/lib/tabfile_parser.rb +6 -6
  23. data/lib/tabfile_writer.rb +7 -7
  24. data/lib/transformers/basic_transformer.rb +35 -24
  25. data/lib/transformers/column_calculator.rb +131 -326
  26. data/lib/transformers/multipasser.rb +10 -6
  27. data/lib/transformers/row_filter.rb +7 -12
  28. data/lib/transformers/timing_extractor.rb +3 -3
  29. data/lib/version.rb +3 -3
  30. data/lib/writers/stimtimes_writer.rb +6 -6
  31. data/optimus-ep.gemspec +37 -0
  32. data/spec/eprimetab_parser_spec.rb +7 -7
  33. data/spec/excel_parser_spec.rb +6 -6
  34. data/spec/expression_parser/evaluators_spec.rb +241 -0
  35. data/spec/expression_parser/expressions_spec.rb +119 -0
  36. data/spec/log_file_parser_spec.rb +30 -30
  37. data/spec/{eprime_data_spec.rb → optimus_data_spec.rb} +20 -20
  38. data/spec/{eprime_reader_spec.rb → optimus_reader_spec.rb} +36 -24
  39. data/spec/parsed_calculator_spec.rb +112 -0
  40. data/spec/raw_tab_parser_spec.rb +26 -0
  41. data/spec/runners/generic_runner_spec.rb +5 -12
  42. data/spec/runners/yaml_template/option_parser_spec.rb +25 -0
  43. data/spec/runners/yaml_template/runner_spec.rb +20 -0
  44. data/spec/samples/optimus_log.txt +103 -103
  45. data/spec/samples/optimus_log_utf16le.txt +0 -0
  46. data/spec/samples/raw_tsv.txt +4 -0
  47. data/spec/spec_helper.rb +75 -12
  48. data/spec/tabfile_parser_spec.rb +18 -18
  49. data/spec/tabfile_writer_spec.rb +12 -12
  50. data/spec/transformers/basic_transformer_spec.rb +18 -8
  51. data/spec/transformers/column_calculator_spec.rb +109 -364
  52. data/spec/transformers/multipasser_spec.rb +14 -7
  53. data/spec/transformers/row_filter_spec.rb +11 -6
  54. data/spec/transformers/timing_extractor_spec.rb +8 -8
  55. data/spec/writers/stimtimes_writer_spec.rb +3 -3
  56. metadata +103 -50
  57. data/History.txt +0 -45
  58. data/lib/calculator.rb +0 -51
  59. data/lib/eprime.rb +0 -24
  60. data/spec/calculator_spec.rb +0 -70
@@ -1,17 +1,17 @@
1
1
  # Part of the Optimus package for managing E-Prime data
2
2
  #
3
- # Copyright (C) 2008 Board of Regents of the University of Wisconsin System
3
+ # Copyright (C) 2008-09 Board of Regents of the University of Wisconsin System
4
4
  #
5
5
  # Written by Nathan Vack <njvack@wisc.edu>, at the Waisman Laborotory for Brain
6
6
  # Imaging and Behavior, University of Wisconsin - Madison
7
7
 
8
8
  require File.join(File.dirname(__FILE__),'../spec_helper')
9
- require File.join(File.dirname(__FILE__), '../../lib/eprime')
9
+ require File.join(File.dirname(__FILE__), '../../lib/optimus')
10
10
  require 'transformers/timing_extractor'
11
- include EprimeTestHelper
12
- include Eprime::Transformers
11
+ include OptimusTestHelper
12
+ include Optimus::Transformers
13
13
 
14
- describe Eprime::Transformers::TimingExtractor do
14
+ describe Optimus::Transformers::TimingExtractor do
15
15
  before :each do
16
16
  @data = mock_edata
17
17
  @tx = TimingExtractor.new(@data)
@@ -42,7 +42,7 @@ describe Eprime::Transformers::TimingExtractor do
42
42
  end
43
43
 
44
44
  it "should extract from computed columns" do
45
- @tx.computed_column 'foo', 'a'
45
+ @tx.computed_column 'foo', "'a'"
46
46
  @tx.columns.should include('foo')
47
47
  @tx.extract_stimulus('foo', 'foo', 'foo')
48
48
  @tx.extracted_data.size.should == @data.size
@@ -63,8 +63,8 @@ describe Eprime::Transformers::TimingExtractor do
63
63
  before :each do
64
64
  @data = mock_edata
65
65
  @tx = TimingExtractor.new(@data)
66
- @tx.computed_column('stim_name','stim')
67
- @tx.computed_column('fix_name', 'fixation')
66
+ @tx.computed_column('stim_name',"'stim'")
67
+ @tx.computed_column('fix_name', "'fixation'")
68
68
  @tx.computed_column('stim_offset', '{stim_time} + 500 - {run_start}')
69
69
  @tx.computed_column('fix_offset', '{fix_time}+130-{run_start}')
70
70
  @tx.extract_stimulus('stim_name', 'stim_time', 'stim_time')
@@ -1,16 +1,16 @@
1
1
  # Part of the Optimus package for managing E-Prime data
2
2
  #
3
- # Copyright (C) 2008 Board of Regents of the University of Wisconsin System
3
+ # Copyright (C) 2008-09 Board of Regents of the University of Wisconsin System
4
4
  #
5
5
  # Written by Nathan Vack <njvack@wisc.edu>, at the Waisman Laborotory for Brain
6
6
  # Imaging and Behavior, University of Wisconsin - Madison
7
7
 
8
8
 
9
9
  require File.join(File.dirname(__FILE__),'../spec_helper')
10
- require File.join(File.dirname(__FILE__), '../../lib/eprime')
10
+ require File.join(File.dirname(__FILE__), '../../lib/optimus')
11
11
  require File.join(File.dirname(__FILE__), '../../lib/writers/stimtimes_writer')
12
12
 
13
- describe Eprime::StimtimesWriter do
13
+ describe Optimus::StimtimesWriter do
14
14
  # I don't actually know how to spec this out. I'm a bit worried.
15
15
 
16
16
  end
metadata CHANGED
@@ -1,78 +1,110 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: optimus-ep
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.91
4
+ hash: 63
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 8
9
+ - 0
10
+ version: 0.8.0
5
11
  platform: ruby
6
12
  authors:
7
- - Nathan Vack
13
+ - Nate Vack
8
14
  autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2009-03-10 00:00:00 -05:00
18
+ date: 2010-11-01 00:00:00 -05:00
13
19
  default_executable:
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: rparsec
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
20
26
  requirements:
21
27
  - - ">="
22
28
  - !ruby/object:Gem::Version
29
+ hash: 15
30
+ segments:
31
+ - 1
32
+ - 0
23
33
  version: "1.0"
24
- version:
34
+ type: :runtime
35
+ version_requirements: *id001
25
36
  - !ruby/object:Gem::Dependency
26
- name: hoe
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
37
+ name: rspec
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
30
41
  requirements:
31
42
  - - ">="
32
43
  - !ruby/object:Gem::Version
33
- version: 1.8.2
34
- version:
35
- description: A collection of utilities for working with Eprime data files
36
- email:
37
- - njvack@freshforever.net
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
48
+ type: :development
49
+ version_requirements: *id002
50
+ description: Utilities to process behavioral data generated by E-Prime
51
+ email: njvack@wisc.edu
38
52
  executables:
39
53
  - eprime2tabfile
40
54
  - extract_timings
41
55
  extensions: []
42
56
 
43
57
  extra_rdoc_files:
44
- - GPL.txt
45
- - History.txt
46
- - License.txt
47
- - Manifest.txt
48
- - README.txt
49
- - spec/samples/bad_excel_tsv.txt
50
- - spec/samples/corrupt_log_file.txt
51
- - spec/samples/eprime_tsv.txt
52
- - spec/samples/excel_tsv.txt
53
- - spec/samples/optimus_log.txt
54
- - spec/samples/short_columns.txt
55
- - spec/samples/sorted_columns.txt
56
- - spec/samples/std_columns.txt
57
- - spec/samples/unknown_type.txt
58
+ - CHANGELOG
59
+ - LICENSE
60
+ - README
61
+ - bin/eprime2tabfile
62
+ - bin/extract_timings
63
+ - lib/eprimetab_parser.rb
64
+ - lib/excel_parser.rb
65
+ - lib/expression_parser/evaluators.rb
66
+ - lib/expression_parser/expressions.rb
67
+ - lib/log_file_parser.rb
68
+ - lib/optimus.rb
69
+ - lib/optimus_data.rb
70
+ - lib/optimus_reader.rb
71
+ - lib/parsed_calculator.rb
72
+ - lib/raw_tab_parser.rb
73
+ - lib/runners/generic_runner.rb
74
+ - lib/runners/yaml_template/option_parser.rb
75
+ - lib/runners/yaml_template/runner.rb
76
+ - lib/tabfile_parser.rb
77
+ - lib/tabfile_writer.rb
78
+ - lib/transformers/basic_transformer.rb
79
+ - lib/transformers/column_calculator.rb
80
+ - lib/transformers/multipasser.rb
81
+ - lib/transformers/row_filter.rb
82
+ - lib/transformers/timing_extractor.rb
83
+ - lib/version.rb
84
+ - lib/writers/stimtimes_writer.rb
58
85
  files:
86
+ - CHANGELOG
59
87
  - GPL.txt
60
- - History.txt
61
- - License.txt
62
- - Manifest.txt
63
- - README.txt
88
+ - LICENSE
89
+ - Manifest
90
+ - README
64
91
  - Rakefile
92
+ - autotest/discover.rb
65
93
  - bin/eprime2tabfile
66
94
  - bin/extract_timings
67
- - lib/calculator.rb
68
- - lib/eprime.rb
69
- - lib/eprime_data.rb
70
- - lib/eprime_reader.rb
71
95
  - lib/eprimetab_parser.rb
72
96
  - lib/excel_parser.rb
97
+ - lib/expression_parser/evaluators.rb
98
+ - lib/expression_parser/expressions.rb
73
99
  - lib/log_file_parser.rb
100
+ - lib/optimus.rb
101
+ - lib/optimus_data.rb
102
+ - lib/optimus_reader.rb
103
+ - lib/parsed_calculator.rb
74
104
  - lib/raw_tab_parser.rb
75
105
  - lib/runners/generic_runner.rb
106
+ - lib/runners/yaml_template/option_parser.rb
107
+ - lib/runners/yaml_template/runner.rb
76
108
  - lib/tabfile_parser.rb
77
109
  - lib/tabfile_writer.rb
78
110
  - lib/transformers/basic_transformer.rb
@@ -82,18 +114,25 @@ files:
82
114
  - lib/transformers/timing_extractor.rb
83
115
  - lib/version.rb
84
116
  - lib/writers/stimtimes_writer.rb
85
- - spec/calculator_spec.rb
86
- - spec/eprime_data_spec.rb
87
- - spec/eprime_reader_spec.rb
88
117
  - spec/eprimetab_parser_spec.rb
89
118
  - spec/excel_parser_spec.rb
119
+ - spec/expression_parser/evaluators_spec.rb
120
+ - spec/expression_parser/expressions_spec.rb
90
121
  - spec/log_file_parser_spec.rb
122
+ - spec/optimus_data_spec.rb
123
+ - spec/optimus_reader_spec.rb
124
+ - spec/parsed_calculator_spec.rb
125
+ - spec/raw_tab_parser_spec.rb
91
126
  - spec/runners/generic_runner_spec.rb
127
+ - spec/runners/yaml_template/option_parser_spec.rb
128
+ - spec/runners/yaml_template/runner_spec.rb
92
129
  - spec/samples/bad_excel_tsv.txt
93
130
  - spec/samples/corrupt_log_file.txt
94
131
  - spec/samples/eprime_tsv.txt
95
132
  - spec/samples/excel_tsv.txt
96
133
  - spec/samples/optimus_log.txt
134
+ - spec/samples/optimus_log_utf16le.txt
135
+ - spec/samples/raw_tsv.txt
97
136
  - spec/samples/short_columns.txt
98
137
  - spec/samples/sorted_columns.txt
99
138
  - spec/samples/std_columns.txt
@@ -108,32 +147,46 @@ files:
108
147
  - spec/transformers/row_filter_spec.rb
109
148
  - spec/transformers/timing_extractor_spec.rb
110
149
  - spec/writers/stimtimes_writer_spec.rb
150
+ - optimus-ep.gemspec
111
151
  has_rdoc: true
112
- homepage: http://code.google.com/p/optimus-ep
113
- post_install_message: ""
152
+ homepage: http://github.com/njvack/optimus-ep
153
+ licenses: []
154
+
155
+ post_install_message:
114
156
  rdoc_options:
157
+ - --line-numbers
158
+ - --inline-source
159
+ - --title
160
+ - Optimus-ep
115
161
  - --main
116
- - README.txt
162
+ - README
117
163
  require_paths:
118
164
  - lib
119
165
  required_ruby_version: !ruby/object:Gem::Requirement
166
+ none: false
120
167
  requirements:
121
168
  - - ">="
122
169
  - !ruby/object:Gem::Version
170
+ hash: 3
171
+ segments:
172
+ - 0
123
173
  version: "0"
124
- version:
125
174
  required_rubygems_version: !ruby/object:Gem::Requirement
175
+ none: false
126
176
  requirements:
127
177
  - - ">="
128
178
  - !ruby/object:Gem::Version
129
- version: "0"
130
- version:
179
+ hash: 11
180
+ segments:
181
+ - 1
182
+ - 2
183
+ version: "1.2"
131
184
  requirements: []
132
185
 
133
186
  rubyforge_project: optimus-ep
134
- rubygems_version: 1.3.1
187
+ rubygems_version: 1.3.7
135
188
  signing_key:
136
- specification_version: 2
137
- summary: A collection of utilities for working with Eprime data files
189
+ specification_version: 3
190
+ summary: Utilities to process behavioral data generated by E-Prime
138
191
  test_files: []
139
192
 
data/History.txt DELETED
@@ -1,45 +0,0 @@
1
- == 0.6.9.1 3/10/2008
2
- * Bug fix:
3
- * Fix for parsing eprime log files in which leaf frames don't occur at the
4
- highest log level
5
-
6
- == 0.6.9 2/25/2008
7
- * New features:
8
- * Supports parsing raw tab-delmimted files
9
- * Allows Procs as starting values for ComputedColumns
10
- * Bug fixes:
11
- * No longer jumbles the order of Eprime log files
12
-
13
- == 0.6.5 9/2/2008
14
- * New features:
15
- * Speed! Speed! Speed! Should be something like 10x faster.
16
- * Procs are now allowed in ComputedColumns -- so if you want to do really
17
- arbitrary things in your column computation, have at it.
18
-
19
- == 0.6.0 7/14/2008
20
- * New features:
21
- * Added extract_timings, a script to pull stimulus timing data from eprime
22
- files.
23
- * Added a GenericRunner -- a class that greatly eases end-to-end
24
- transformation of eprime data. See extract_timings for an example of
25
- its use.
26
-
27
- == 0.5.5 7/09/2008
28
- * New features:
29
- * Supports making multiple passes through data, to allow extracting multiple
30
- stimuli that occur on the same row
31
- * Created a general-purpose stimulus extractor to pull data out in the
32
- format:
33
- stimulus \t onset__time \t offset__time
34
- * Architectural changes:
35
- * Created a BasicTransformer that performs all of the basic operations to
36
- datasets: column calculation, row filtering, and multipass
37
- * Moved ColumnCalculator, RowFilter, and Multipasser into a Transformers
38
- module
39
- * Support release via hoe / rubygems
40
-
41
- == 0.5.0 6/26/2008
42
-
43
- * First public gem release
44
- * Supports converting general Eprime files into tab-delimited files
45
- * Supports converting Eprime files into AFNI stim_times files
data/lib/calculator.rb DELETED
@@ -1,51 +0,0 @@
1
- # Part of the Optimus package for managing E-Prime data
2
- #
3
- # Copyright (C) 2008 Board of Regents of the University of Wisconsin System
4
- #
5
- # Written by Nathan Vack <njvack@wisc.edu>, at the Waisman Laborotory for Brain
6
- # Imaging and Behavior, University of Wisconsin - Madison
7
- #
8
- # Calculator code adapted from rparsec infix calculator demo
9
- # at http://docs.codehaus.org/display/JPARSEC/Ruby+Parsec
10
- # rparsec (C) Ben Yu
11
-
12
- require 'rubygems'
13
- require 'rparsec'
14
- include RParsec
15
-
16
- module Eprime
17
- class Calculator
18
- include Parsers
19
- include Functors
20
-
21
- Mod = lambda { |x, y| x.to_i % y.to_i }
22
- Eql = lambda { |x, y| x.to_s == y.to_s }
23
-
24
- def initialize
25
- ops = OperatorTable.new.
26
- infixl(char('+') >> Plus, 20).
27
- infixl(char('-') >> Minus, 20).
28
- infixl(char('*') >> Mul, 40).
29
- infixl(char('/') >> Div, 40).
30
- infixl(char('%') >> Mod, 40).
31
- prefix(char('-') >> Neg, 60)
32
- expr = nil
33
- float_parser = number.map(&To_f)
34
- string_parser = regexp(/[_a-z]\S*/i)
35
- grouping_parser = char('(') >>(lazy{expr})<< char(')')
36
- term = alt(float_parser, grouping_parser, string_parser)
37
- delim = whitespace.many_
38
- expr = delim >> Expressions.build(term, ops, delim)
39
- @parser = expr << eof
40
- end
41
-
42
- def compute(expression)
43
- ans = @parser.parse(expression)
44
- return ans if ans.is_a?(String)
45
- if (ans - ans.to_i) == 0
46
- ans = ans.to_i
47
- end
48
- return ans.to_s
49
- end
50
- end
51
- end
data/lib/eprime.rb DELETED
@@ -1,24 +0,0 @@
1
- # Part of the Optimus package for managing E-Prime data
2
- #
3
- # Copyright (C) 2008 Board of Regents of the University of Wisconsin System
4
- #
5
- # Written by Nathan Vack <njvack@wisc.edu>, at the Waisman Laborotory for Brain
6
- # Imaging and Behavior, University of Wisconsin - Madison
7
-
8
- # Add our lib to the search path
9
- $: << File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
10
-
11
- require 'eprime_data'
12
- require 'version'
13
- require 'tabfile_writer'
14
- require 'eprime_reader'
15
-
16
- module Eprime
17
-
18
- # Raised whenever an input file's type can't be detemined by Eprime::Reader
19
- class UnknownTypeError < Exception; end
20
-
21
- # Raised whenever an input file seems to be damaged
22
- class DamagedFileError < Exception; end
23
-
24
- end
@@ -1,70 +0,0 @@
1
- # Part of the Optimus package for managing E-Prime data
2
- #
3
- # Copyright (C) 2008 Board of Regents of the University of Wisconsin System
4
- #
5
- # Written by Nathan Vack <njvack@wisc.edu>, at the Waisman Laborotory for Brain
6
- # Imaging and Behavior, University of Wisconsin - Madison
7
-
8
- require File.join(File.dirname(__FILE__),'spec_helper')
9
- require File.join(File.dirname(__FILE__), '../lib/eprime')
10
- require 'calculator'
11
-
12
- include EprimeTestHelper
13
-
14
- describe Eprime::Calculator do
15
- before :all do
16
- @calc = Eprime::Calculator.new
17
- end
18
-
19
- it "should compute constants" do
20
- @calc.compute(es(:const)).should == ev(:const)
21
- end
22
-
23
- it "should allow strings" do
24
- @calc.compute(es(:str_const)).should == ev(:str_const)
25
- end
26
-
27
- it "should allow string concatentation" do
28
- @calc.compute(es(:str_cat)).should == ev(:str_cat)
29
- end
30
-
31
- it "should not allow concatenating numbers with strings" do
32
- lambda {
33
- @calc.compute("1 + a")
34
- }.should raise_error
35
- end
36
-
37
- it "should add" do
38
- @calc.compute(es(:add)).should == ev(:add)
39
- end
40
-
41
- it "should multiply" do
42
- @calc.compute(es(:mul)).should == ev(:mul)
43
- end
44
-
45
- it "should handle negation" do
46
- @calc.compute(es(:add_neg)).should == ev(:add_neg)
47
- end
48
-
49
- it "should handle grouping" do
50
- @calc.compute(es(:add_mul_group)).should == ev(:add_mul_group)
51
- end
52
-
53
- it "should handle fdiv" do
54
- @calc.compute(es(:fdiv)).should == ev(:fdiv)
55
- end
56
-
57
- it "should handle fmul" do
58
- @calc.compute(es(:fmul)).should == ev(:fmul)
59
- end
60
-
61
- it "should handle mod" do
62
- @calc.compute(es(:mod)).should == ev(:mod)
63
- end
64
-
65
- it "should fail with infix garbage" do
66
- lambda {
67
- @calc.compute("1 broken 2")
68
- }.should raise_error(RParsec::ParserException)
69
- end
70
- end