trace_visualization 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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