trace_visualization 0.0.3 → 0.0.5

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/bin/trace_visualization +21 -26
  4. data/lib/trace_visualization.rb +2 -2
  5. data/lib/trace_visualization/algorithm.rb +42 -0
  6. data/lib/trace_visualization/data/irepetition.rb +5 -1
  7. data/lib/trace_visualization/data/repetition.rb +14 -6
  8. data/lib/trace_visualization/data/sorted_array.rb +44 -0
  9. data/lib/trace_visualization/data/{lexeme.rb → token.rb} +7 -8
  10. data/lib/trace_visualization/lexeme_overlap_filter.rb +18 -18
  11. data/lib/trace_visualization/mapping.rb +72 -185
  12. data/lib/trace_visualization/repetitions/concatenation.rb +136 -0
  13. data/lib/trace_visualization/repetitions/context.rb +70 -0
  14. data/lib/trace_visualization/repetitions/filter.rb +153 -0
  15. data/lib/trace_visualization/repetitions/incrementation.rb +89 -0
  16. data/lib/trace_visualization/repetitions_psy.rb +12 -5
  17. data/lib/trace_visualization/utils.rb +5 -42
  18. data/lib/trace_visualization/version.rb +1 -1
  19. data/lib/trace_visualization/visualization/console_color_print.rb +20 -4
  20. data/spec/algorithm_spec.rb +69 -0
  21. data/spec/bwt_spec.rb +2 -5
  22. data/spec/data/sorted_array_spec.rb +27 -0
  23. data/spec/lexeme_overlap_filter_spec.rb +22 -22
  24. data/spec/longest_common_prefix_spec.rb +3 -8
  25. data/spec/mapping_spec.rb +72 -69
  26. data/spec/repetitions/concatenation_spec.rb +65 -0
  27. data/spec/repetitions/filter_spec.rb +180 -0
  28. data/spec/repetitions/incrementation_spec.rb +29 -0
  29. data/spec/repetitions_psy_spec.rb +7 -16
  30. data/spec/suffix_array_spec.rb +11 -31
  31. data/spec/utils_spec.rb +21 -9
  32. data/spec/visualization/console_color_print_spec.rb +26 -0
  33. data/trace_visualization.gemspec +2 -2
  34. metadata +27 -13
  35. data/lib/trace_visualization/repetitions_concatenation.rb +0 -134
  36. data/lib/trace_visualization/repetitions_context.rb +0 -18
  37. data/spec/repetitions_concatenation_spec.rb +0 -64
@@ -25,8 +25,8 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'bundler', '~> 1.3'
26
26
  spec.add_development_dependency 'rake'
27
27
 
28
- spec.add_development_dependency 'redcarpet', '~> 1.17'
29
- spec.add_development_dependency 'yard', '~> 0.7.5'
28
+ spec.add_development_dependency 'redcarpet'
29
+ spec.add_development_dependency 'yard', "~> 0.8.7.3"
30
30
 
31
31
  spec.add_development_dependency 'rspec-core', '~> 2.0'
32
32
  spec.add_development_dependency 'rspec-expectations', '~> 2.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trace_visualization
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-09 00:00:00.000000000 Z
11
+ date: 2013-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -42,30 +42,30 @@ dependencies:
42
42
  name: redcarpet
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
- version: '1.17'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
- version: '1.17'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: yard
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 0.7.5
61
+ version: 0.8.7.3
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: 0.7.5
68
+ version: 0.8.7.3
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec-core
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -137,12 +137,14 @@ files:
137
137
  - Rakefile
138
138
  - bin/trace_visualization
139
139
  - lib/trace_visualization.rb
140
+ - lib/trace_visualization/algorithm.rb
140
141
  - lib/trace_visualization/assert.rb
141
142
  - lib/trace_visualization/bwt.rb
142
143
  - lib/trace_visualization/bwt.rbold
143
144
  - lib/trace_visualization/data/irepetition.rb
144
- - lib/trace_visualization/data/lexeme.rb
145
145
  - lib/trace_visualization/data/repetition.rb
146
+ - lib/trace_visualization/data/sorted_array.rb
147
+ - lib/trace_visualization/data/token.rb
146
148
  - lib/trace_visualization/generators.rb
147
149
  - lib/trace_visualization/lexeme_overlap_filter.rb
148
150
  - lib/trace_visualization/longest_common_prefix.rb
@@ -150,8 +152,10 @@ files:
150
152
  - lib/trace_visualization/profile.rb
151
153
  - lib/trace_visualization/reorder.rb
152
154
  - lib/trace_visualization/repetitions.rb
153
- - lib/trace_visualization/repetitions_concatenation.rb
154
- - lib/trace_visualization/repetitions_context.rb
155
+ - lib/trace_visualization/repetitions/concatenation.rb
156
+ - lib/trace_visualization/repetitions/context.rb
157
+ - lib/trace_visualization/repetitions/filter.rb
158
+ - lib/trace_visualization/repetitions/incrementation.rb
155
159
  - lib/trace_visualization/repetitions_incrementation.rb
156
160
  - lib/trace_visualization/repetitions_psy.rb
157
161
  - lib/trace_visualization/repetitions_score.rb
@@ -159,19 +163,24 @@ files:
159
163
  - lib/trace_visualization/utils.rb
160
164
  - lib/trace_visualization/version.rb
161
165
  - lib/trace_visualization/visualization/console_color_print.rb
166
+ - spec/algorithm_spec.rb
162
167
  - spec/bwt_spec.rb
168
+ - spec/data/sorted_array_spec.rb
163
169
  - spec/generators_spec.rb
164
170
  - spec/lexeme_overlap_filter_spec.rb
165
171
  - spec/longest_common_prefix_spec.rb
166
172
  - spec/mapping_spec.rb
167
173
  - spec/reorder_spec.rb
168
- - spec/repetitions_concatenation_spec.rb
174
+ - spec/repetitions/concatenation_spec.rb
175
+ - spec/repetitions/filter_spec.rb
176
+ - spec/repetitions/incrementation_spec.rb
169
177
  - spec/repetitions_incrementation_spec.rb
170
178
  - spec/repetitions_psy_spec.rb
171
179
  - spec/repetitions_spec.rb
172
180
  - spec/spec_helper.rb
173
181
  - spec/suffix_array_spec.rb
174
182
  - spec/utils_spec.rb
183
+ - spec/visualization/console_color_print_spec.rb
175
184
  - trace_visualization.gemspec
176
185
  homepage: ''
177
186
  licenses:
@@ -198,17 +207,22 @@ signing_key:
198
207
  specification_version: 4
199
208
  summary: Software for smart trace visualization
200
209
  test_files:
210
+ - spec/algorithm_spec.rb
201
211
  - spec/bwt_spec.rb
212
+ - spec/data/sorted_array_spec.rb
202
213
  - spec/generators_spec.rb
203
214
  - spec/lexeme_overlap_filter_spec.rb
204
215
  - spec/longest_common_prefix_spec.rb
205
216
  - spec/mapping_spec.rb
206
217
  - spec/reorder_spec.rb
207
- - spec/repetitions_concatenation_spec.rb
218
+ - spec/repetitions/concatenation_spec.rb
219
+ - spec/repetitions/filter_spec.rb
220
+ - spec/repetitions/incrementation_spec.rb
208
221
  - spec/repetitions_incrementation_spec.rb
209
222
  - spec/repetitions_psy_spec.rb
210
223
  - spec/repetitions_spec.rb
211
224
  - spec/spec_helper.rb
212
225
  - spec/suffix_array_spec.rb
213
226
  - spec/utils_spec.rb
227
+ - spec/visualization/console_color_print_spec.rb
214
228
  has_rdoc:
@@ -1,134 +0,0 @@
1
- require 'trace_visualization'
2
-
3
- module TraceVisualization
4
- module RepetitionsConcatenation
5
-
6
- def self.process(rs, k, context, options = {})
7
- opts = {
8
- :positions_min_size => 3
9
- }.merge options
10
-
11
- result = []
12
-
13
- useful_cnt = 0
14
-
15
- pairs_cnt = {}
16
- context.rs_by_line.each do |item|
17
- for i in 0 ... item.size
18
- for j in i + 1 ... item.size
19
- left, right = item[i][0], item[j][0]
20
- delta = k - left.k - right.k
21
-
22
- next if not concat_condition(left, right, delta, opts[:positions_min_size])
23
-
24
- key = (left.id << 32) + right.id
25
- val = (pairs_cnt[key] || 0) + 1
26
- pairs_cnt[key] = val
27
- next if val != opts[:positions_min_size]
28
-
29
- lps, rps = process_common_positions(left, right, delta, context)
30
-
31
- if lps.size >= opts[:positions_min_size]
32
- result << create_repetition(left, right, delta, lps, rps)
33
- end
34
-
35
- useful_cnt += 1
36
- end
37
- end
38
- end
39
-
40
- options[:counter] << [k, useful_cnt] if options[:counter]
41
-
42
- puts "Total: #{rs.size ** 2} #{useful_cnt} #{result.size}"
43
-
44
- process_new_repetitions(result)
45
-
46
- rs.concat(result)
47
- end
48
-
49
- def self.process_new_repetitions(rs, context)
50
- TraceVisualization::Utils.rs_by_line(rs, context.lines_pos, context.rs_by_line)
51
- end
52
-
53
- def self.process_full_search(rs, k, context, options = {})
54
- opts = {
55
- :positions_min_size => 3
56
- }.merge options
57
-
58
- result = []
59
-
60
- useful_cnt = 0
61
-
62
- for left in rs
63
- for right in rs
64
- delta = k - left.k - right.k
65
- next if not concat_condition(left, right, delta, opts[:positions_min_size])
66
-
67
- # @@processed_path.add(key(left, right, delta))
68
-
69
- lps, rps = process_common_positions(left, right, delta, context)
70
-
71
- if lps.size >= opts[:positions_min_size]
72
- result << create_repetition(left, right, delta, lps, rps)
73
- end
74
-
75
- useful_cnt += 1
76
- end
77
- end
78
-
79
- puts "Total: #{rs.size ** 2} #{useful_cnt} #{result.size}"
80
-
81
- rs.concat(result)
82
- end
83
-
84
- def self.delete_repetition(r, context)
85
- r.lines.each do |line|
86
- context.rs_by_line[line].delete_if { |item| item[0] == r }
87
- end
88
- end
89
-
90
- def self.concat_condition(left, right, delta, positions_min_size)
91
- delta >= 0 && left.id != right.id &&
92
- left.positions_size >= positions_min_size &&
93
- right.positions_size >= positions_min_size
94
- end
95
-
96
- # *Attention* Position arrays are modified in place which can lead to side
97
- # effects. Don't send left == right!
98
- def self.process_common_positions(left, right, delta, context)
99
- lr_pos = left.left_positions
100
- lr_pos.collect! { |pos| pos + left.length + delta }
101
-
102
- rr_pos = right.left_positions
103
-
104
- cpr = lr_pos & rr_pos
105
- cpl = cpr.collect { |pos| pos - left.length - delta }
106
-
107
- idx = 0
108
- while idx < cpr.size
109
- if context.str[cpl[idx] + left.length ... cpr[idx]].scan(TraceVisualization::FORBIDDEN_CHARS).size != 0
110
- cpr.delete_at(idx)
111
- cpl.delete_at(idx)
112
- else
113
- idx += 1
114
- end
115
- end
116
-
117
- lr_pos.collect! { |lpos| lpos - left.length - delta }
118
-
119
- [cpl, cpr]
120
- end
121
-
122
- def self.create_repetition(left, right, delta, lps, rps)
123
- r = left.class.new(left.length + right.length + delta, lps, rps)
124
-
125
- r.k = left.k + right.k + delta
126
- r.pcount = left.pcount + right.pcount
127
- r.left = left
128
- r.right = right
129
- r.strict_ids = left.strict_ids + right.strict_ids
130
-
131
- r
132
- end
133
- end
134
- end
@@ -1,18 +0,0 @@
1
- require 'trace_visualization/utils'
2
-
3
- module TraceVisualization
4
- module Repetitions
5
- class Context
6
- attr_accessor :str, :lines_pos, :rs_by_line
7
-
8
- def initialize(str, rs)
9
- @str = str
10
- @lines_pos = TraceVisualization::Utils.lines_pos(str)
11
- @rs_by_line = Array.new(@lines_pos.size) { [] }
12
-
13
- TraceVisualization::Utils.rs_by_line(rs, @lines_pos, @rs_by_line)
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,64 +0,0 @@
1
- require 'trace_visualization/repetitions_concatenation'
2
- require 'trace_visualization/repetitions_context'
3
- require 'trace_visualization/data/repetition'
4
-
5
- describe TraceVisualization::RepetitionsConcatenation do
6
- it "process common positions" do
7
- str = "aaaxbbbyaaazbbbvaaawbbb"
8
-
9
- mapping = TraceVisualization::Mapping.init do
10
- default_tokens
11
- end
12
-
13
- mapping.process { from_string(str) }
14
-
15
- context = TraceVisualization::Repetitions::Context.new(mapping, [])
16
-
17
- lpos = [0, 8, 16]
18
- rpos = [4, 12, 20]
19
- ppos = [[0, 4], [8, 12], [16, 20]]
20
-
21
- left = TraceVisualization::Data::Repetition.new(3, lpos)
22
- right = TraceVisualization::Data::Repetition.new(3, rpos)
23
-
24
- cpl, cpr = TraceVisualization::RepetitionsConcatenation.process_common_positions(left, right, 1, context)
25
-
26
- left.left_positions.should eq cpl
27
- right.left_positions.should eq cpr
28
-
29
- lpos.should eq left.left_positions
30
- rpos.should eq right.left_positions
31
- end
32
-
33
- it "don't concatenate repetitions through forbidden chars" do
34
- str = <<EOF
35
- aaa
36
- bbb
37
- aaa
38
- bbb
39
- EOF
40
- context = TraceVisualization::Repetitions::Context.new(str, [])
41
-
42
- lpos, rpos = [0, 8], [4, 12]
43
- left = TraceVisualization::Data::Repetition.new(3, lpos)
44
- right = TraceVisualization::Data::Repetition.new(3, rpos)
45
-
46
- cpl, cpr = TraceVisualization::RepetitionsConcatenation.process_common_positions(left, right, 1, context)
47
-
48
- cpl.should eq []
49
- cpr.should eq []
50
-
51
- #
52
- str.gsub!(TraceVisualization::FORBIDDEN_CHARS, "x")
53
- context = TraceVisualization::Repetitions::Context.new(str, [])
54
-
55
- lpos, rpos = [0, 8], [4, 12]
56
- left = TraceVisualization::Data::Repetition.new(3, lpos)
57
- right = TraceVisualization::Data::Repetition.new(3, rpos)
58
-
59
- cpl, cpr = TraceVisualization::RepetitionsConcatenation.process_common_positions(left, right, 1, context)
60
-
61
- cpl.should eq [0, 8]
62
- cpr.should eq [4, 12]
63
- end
64
- end