text_alignment 0.2.9 → 0.3.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,103 +12,103 @@ module TextAlignment; end unless defined? TextAlignment
12
12
  TextAlignment::SIGNATURE_NGRAM = 5 unless defined? TextAlignment::SIGNATURE_NGRAM
13
13
 
14
14
  class TextAlignment::GLCSTextAlignment
15
- attr_reader :position_map_begin, :position_map_end
16
- attr_reader :common_elements, :mapped_elements
17
- attr_reader :similarity
18
- attr_reader :str1_match_initial, :str1_match_final, :str2_match_initial, :str2_match_final
19
-
20
- def initialize(str1, str2, mappings = [], lcs = nil, sdiff = nil)
21
- raise ArgumentError, "nil string" if str1.nil? || str2.nil?
22
- raise ArgumentError, "nil mappings" if mappings.nil?
23
-
24
- _glcs_alignment_fast(str1, str2, mapptings, lcs, sdiff)
25
- end
26
-
27
- private
28
-
29
- def _glcs_alignment_fast(str1, str2, mappings, lcs, sdiff)
30
- sdiff = TextAlignment::LCSMin.new(str1, str2).sdiff if sdiff.nil?
31
-
32
- posmap_begin, posmap_end = {}, {}
33
- @common_elements, @mapped_elements = [], []
34
-
35
- addition, deletion = [], []
36
-
37
- sdiff.each do |h|
38
- case h.action
39
- when '='
40
- p1, p2 = h.old_position, h.new_position
41
-
42
- @common_elements << [str1[p1], str2[p2]]
43
- posmap_begin[p1], posmap_end[p1] = p2, p2
44
-
45
- if !addition.empty? && deletion.empty?
46
- posmap_end[p1] = p2 - addition.length unless p1 == 0
47
- elsif addition.empty? && !deletion.empty?
48
- deletion.each{|p| posmap_begin[p], posmap_end[p] = p2, p2}
49
- elsif !addition.empty? && !deletion.empty?
50
- if addition.length > 1 || deletion.length > 1
51
- galign = TextAlignment::GLCSAlignment.new(str1[deletion[0] .. deletion[-1]], str2[addition[0] .. addition[-1]], mappings)
52
- galign.position_map_begin.each {|k, v| posmap_begin[k + deletion[0]] = v.nil? ? nil : v + addition[0]}
53
- galign.position_map_end.each {|k, v| posmap_end[k + deletion[0]] = v.nil? ? nil : v + addition[0]}
54
- posmap_begin[p1], posmap_end[p1] = p2, p2
55
- @common_elements += galign.common_elements
56
- @mapped_elements += galign.mapped_elements
57
- else
58
- posmap_begin[deletion[0]], posmap_end[deletion[0]] = addition[0], addition[0]
59
- deletion[1..-1].each{|p| posmap_begin[p], posmap_end[p] = nil, nil}
60
- @mapped_elements << [str1[deletion[0], deletion.length], str2[addition[0], addition.length]]
61
- end
62
- end
63
-
64
- addition.clear; deletion.clear
65
-
66
- when '!'
67
- deletion << h.old_position
68
- addition << h.new_position
69
- when '-'
70
- deletion << h.old_position
71
- when '+'
72
- addition << h.new_position
73
- end
74
- end
75
-
76
- p1, p2 = str1.length, str2.length
77
- posmap_begin[p1], posmap_end[p1] = p2, p2
78
-
79
- if !addition.empty? && deletion.empty?
80
- posmap_end[p1] = p2 - addition.length unless p1 == 0
81
- elsif addition.empty? && !deletion.empty?
82
- deletion.each{|p| posmap_begin[p], posmap_end[p] = p2, p2}
83
- elsif !addition.empty? && !deletion.empty?
84
- if addition.length > 1 && deletion.length > 1
85
- galign = TextAlignment::GLCSAlignment.new(str1[deletion[0] .. deletion[-1]], str2[addition[0] .. addition[-1]], mappings)
86
- galign.position_map_begin.each {|k, v| posmap_begin[k + deletion[0]] = v.nil? ? nil : v + addition[0]}
87
- galign.position_map_end.each {|k, v| posmap_end[k + deletion[0]] = v.nil? ? nil : v + addition[0]}
88
- posmap_begin[p1], posmap_end[p1] = p2, p2
89
- @mapped_elements += galign.common_elements + galign.mapped_elements
90
- else
91
- posmap_begin[deletion[0]], posmap_end[deletion[0]] = addition[0], addition[0]
92
- deletion[1..-1].each{|p| posmap_begin[p], posmap_end[p] = nil, nil}
93
- @mapped_elements << [str1[deletion[0], deletion.length], str2[addition[0], addition.length]]
94
- end
95
- end
96
-
97
- @position_map_begin = posmap_begin.sort.to_h
98
- @position_map_end = posmap_end.sort.to_h
99
- end
15
+ attr_reader :position_map_begin, :position_map_end
16
+ attr_reader :common_elements, :mapped_elements
17
+ attr_reader :similarity
18
+ attr_reader :str1_match_initial, :str1_match_final, :str2_match_initial, :str2_match_final
19
+
20
+ def initialize(str1, str2, mappings = [], lcs = nil, sdiff = nil)
21
+ raise ArgumentError, "nil string" if str1.nil? || str2.nil?
22
+ raise ArgumentError, "nil mappings" if mappings.nil?
23
+
24
+ _glcs_alignment_fast(str1, str2, mapptings, lcs, sdiff)
25
+ end
26
+
27
+ private
28
+
29
+ def _glcs_alignment_fast(str1, str2, mappings, lcs, sdiff)
30
+ sdiff = TextAlignment::LCSMin.new(str1, str2).sdiff if sdiff.nil?
31
+
32
+ posmap_begin, posmap_end = {}, {}
33
+ @common_elements, @mapped_elements = [], []
34
+
35
+ addition, deletion = [], []
36
+
37
+ sdiff.each do |h|
38
+ case h.action
39
+ when '='
40
+ p1, p2 = h.old_position, h.new_position
41
+
42
+ @common_elements << [str1[p1], str2[p2]]
43
+ posmap_begin[p1], posmap_end[p1] = p2, p2
44
+
45
+ if !addition.empty? && deletion.empty?
46
+ posmap_end[p1] = p2 - addition.length unless p1 == 0
47
+ elsif addition.empty? && !deletion.empty?
48
+ deletion.each{|p| posmap_begin[p], posmap_end[p] = p2, p2}
49
+ elsif !addition.empty? && !deletion.empty?
50
+ if addition.length > 1 || deletion.length > 1
51
+ galign = TextAlignment::GLCSAlignment.new(str1[deletion[0] .. deletion[-1]], str2[addition[0] .. addition[-1]], mappings)
52
+ galign.position_map_begin.each {|k, v| posmap_begin[k + deletion[0]] = v.nil? ? nil : v + addition[0]}
53
+ galign.position_map_end.each {|k, v| posmap_end[k + deletion[0]] = v.nil? ? nil : v + addition[0]}
54
+ posmap_begin[p1], posmap_end[p1] = p2, p2
55
+ @common_elements += galign.common_elements
56
+ @mapped_elements += galign.mapped_elements
57
+ else
58
+ posmap_begin[deletion[0]], posmap_end[deletion[0]] = addition[0], addition[0]
59
+ deletion[1..-1].each{|p| posmap_begin[p], posmap_end[p] = nil, nil}
60
+ @mapped_elements << [str1[deletion[0], deletion.length], str2[addition[0], addition.length]]
61
+ end
62
+ end
63
+
64
+ addition.clear; deletion.clear
65
+
66
+ when '!'
67
+ deletion << h.old_position
68
+ addition << h.new_position
69
+ when '-'
70
+ deletion << h.old_position
71
+ when '+'
72
+ addition << h.new_position
73
+ end
74
+ end
75
+
76
+ p1, p2 = str1.length, str2.length
77
+ posmap_begin[p1], posmap_end[p1] = p2, p2
78
+
79
+ if !addition.empty? && deletion.empty?
80
+ posmap_end[p1] = p2 - addition.length unless p1 == 0
81
+ elsif addition.empty? && !deletion.empty?
82
+ deletion.each{|p| posmap_begin[p], posmap_end[p] = p2, p2}
83
+ elsif !addition.empty? && !deletion.empty?
84
+ if addition.length > 1 && deletion.length > 1
85
+ galign = TextAlignment::GLCSAlignment.new(str1[deletion[0] .. deletion[-1]], str2[addition[0] .. addition[-1]], mappings)
86
+ galign.position_map_begin.each {|k, v| posmap_begin[k + deletion[0]] = v.nil? ? nil : v + addition[0]}
87
+ galign.position_map_end.each {|k, v| posmap_end[k + deletion[0]] = v.nil? ? nil : v + addition[0]}
88
+ posmap_begin[p1], posmap_end[p1] = p2, p2
89
+ @mapped_elements += galign.common_elements + galign.mapped_elements
90
+ else
91
+ posmap_begin[deletion[0]], posmap_end[deletion[0]] = addition[0], addition[0]
92
+ deletion[1..-1].each{|p| posmap_begin[p], posmap_end[p] = nil, nil}
93
+ @mapped_elements << [str1[deletion[0], deletion.length], str2[addition[0], addition.length]]
94
+ end
95
+ end
96
+
97
+ @position_map_begin = posmap_begin.sort.to_h
98
+ @position_map_end = posmap_end.sort.to_h
99
+ end
100
100
  end
101
101
 
102
102
  if __FILE__ == $0
103
- str1 = '-βκ-'
104
- str2 = '-betakappa-'
103
+ str1 = '-βκ-'
104
+ str2 = '-betakappa-'
105
105
 
106
- # anns1 = JSON.parse File.read(ARGV[0]), :symbolize_names => true
107
- # anns2 = JSON.parse File.read(ARGV[1]), :symbolize_names => true
106
+ # anns1 = JSON.parse File.read(ARGV[0]), :symbolize_names => true
107
+ # anns2 = JSON.parse File.read(ARGV[1]), :symbolize_names => true
108
108
 
109
- dictionary = [["β", "beta"]]
110
- # align = TextAlignment::TextAlignment.new(str1, str2)
111
- align = TextAlignment::TextAlignment.new(str1, str2, TextAlignment::MAPPINGS)
112
- p align.common_elements
113
- p align.mapped_elements
109
+ dictionary = [["β", "beta"]]
110
+ # align = TextAlignment::TextAlignment.new(str1, str2)
111
+ align = TextAlignment::TextAlignment.new(str1, str2, TextAlignment::MAPPINGS)
112
+ p align.common_elements
113
+ p align.mapped_elements
114
114
  end
@@ -2,67 +2,67 @@
2
2
  module TextAlignment; end unless defined? TextAlignment
3
3
 
4
4
  class << TextAlignment
5
- def glcs_required?(str1, mappings = [])
6
- raise ArgumentError, "nil string" if str1.nil?
7
- raise ArgumentError, "nil mappings" if mappings.nil?
5
+ def glcs_required?(str1, mappings = [])
6
+ raise ArgumentError, "nil string" if str1.nil?
7
+ raise ArgumentError, "nil mappings" if mappings.nil?
8
8
 
9
- # character mappings can be safely applied to the strings withoug changing the position of other characters
10
- character_mappings = mappings.select{|m| m[0].length == 1 && m[1].length == 1}
11
- characters_from = character_mappings.collect{|m| m[0]}.join
12
- characters_to = character_mappings.collect{|m| m[1]}.join
13
- characters_to.gsub!(/-/, '\-')
9
+ # character mappings can be safely applied to the strings withoug changing the position of other characters
10
+ character_mappings = mappings.select{|m| m[0].length == 1 && m[1].length == 1}
11
+ characters_from = character_mappings.collect{|m| m[0]}.join
12
+ characters_to = character_mappings.collect{|m| m[1]}.join
13
+ characters_to.gsub!(/-/, '\-')
14
14
 
15
- str1.tr!(characters_from, characters_to)
15
+ str1.tr!(characters_from, characters_to)
16
16
 
17
- str1 =~/([^\p{ASCII}][^\p{ASCII}])/
18
- $1
19
- end
17
+ str1 =~/([^\p{ASCII}][^\p{ASCII}])/
18
+ $1
19
+ end
20
20
  end
21
21
 
22
22
  if __FILE__ == $0
23
23
 
24
- dictionary = [
25
- ["×", "x"], #U+00D7 (multiplication sign)
26
- ["•", "*"], #U+2022 (bullet)
27
- ["Δ", "delta"], #U+0394 (greek capital letter delta)
28
- ["Φ", "phi"], #U+03A6 (greek capital letter phi)
29
- ["α", "alpha"], #U+03B1 (greek small letter alpha)
30
- ["β", "beta"], #U+03B2 (greek small letter beta)
31
- ["γ", "gamma"], #U+03B3 (greek small letter gamma)
32
- ["δ", "delta"], #U+03B4 (greek small letter delta)
33
- ["ε", "epsilon"], #U+03B5 (greek small letter epsilon)
34
- ["κ", "kappa"], #U+03BA (greek small letter kappa)
35
- ["λ", "lambda"], #U+03BB (greek small letter lambda)
36
- ["μ", "mu"], #U+03BC (greek small letter mu)
37
- ["χ", "chi"], #U+03C7 (greek small letter chi)
38
- ["ϕ", "phi"], #U+03D5 (greek phi symbol)
39
- [" ", " "], #U+2009 (thin space)
40
- [" ", " "], #U+200A (hair space)
41
- [" ", " "], #U+00A0 (no-break space)
42
- [" ", " "], #U+3000 (ideographic space)
43
- ["−", "-"], #U+2212 (minus sign)
44
- ["–", "-"], #U+2013 (en dash)
45
- ["′", "'"], #U+2032 (prime)
46
- ["‘", "'"], #U+2018 (left single quotation mark)
47
- ["’", "'"], #U+2019 (right single quotation mark)
48
- ["“", '"'], #U+201C (left double quotation mark)
49
- ["”", '"'] #U+201D (right double quotation mark)
50
- ]
24
+ dictionary = [
25
+ ["×", "x"], #U+00D7 (multiplication sign)
26
+ ["•", "*"], #U+2022 (bullet)
27
+ ["Δ", "delta"], #U+0394 (greek capital letter delta)
28
+ ["Φ", "phi"], #U+03A6 (greek capital letter phi)
29
+ ["α", "alpha"], #U+03B1 (greek small letter alpha)
30
+ ["β", "beta"], #U+03B2 (greek small letter beta)
31
+ ["γ", "gamma"], #U+03B3 (greek small letter gamma)
32
+ ["δ", "delta"], #U+03B4 (greek small letter delta)
33
+ ["ε", "epsilon"], #U+03B5 (greek small letter epsilon)
34
+ ["κ", "kappa"], #U+03BA (greek small letter kappa)
35
+ ["λ", "lambda"], #U+03BB (greek small letter lambda)
36
+ ["μ", "mu"], #U+03BC (greek small letter mu)
37
+ ["χ", "chi"], #U+03C7 (greek small letter chi)
38
+ ["ϕ", "phi"], #U+03D5 (greek phi symbol)
39
+ [" ", " "], #U+2009 (thin space)
40
+ [" ", " "], #U+200A (hair space)
41
+ [" ", " "], #U+00A0 (no-break space)
42
+ [" ", " "], #U+3000 (ideographic space)
43
+ ["−", "-"], #U+2212 (minus sign)
44
+ ["–", "-"], #U+2013 (en dash)
45
+ ["′", "'"], #U+2032 (prime)
46
+ ["‘", "'"], #U+2018 (left single quotation mark)
47
+ ["’", "'"], #U+2019 (right single quotation mark)
48
+ ["“", '"'], #U+201C (left double quotation mark)
49
+ ["”", '"'] #U+201D (right double quotation mark)
50
+ ]
51
51
 
52
- str = "TGF-β–induced"
52
+ str = "TGF-β–induced"
53
53
 
54
- # from_text = "TGF-beta-induced"
55
- # to_text = "TGF-β–induced"
54
+ # from_text = "TGF-beta-induced"
55
+ # to_text = "TGF-β–induced"
56
56
 
57
- # from_text = "TGF-β–β induced"
58
- # to_text = "TGF-beta-beta induced"
57
+ # from_text = "TGF-β–β induced"
58
+ # to_text = "TGF-beta-beta induced"
59
59
 
60
- # str = "-βκ-"
60
+ # str = "-βκ-"
61
61
 
62
- if ARGV.length == 1
63
- str = File.read(ARGV[0])
64
- end
65
- # anns2 = JSON.parse File.read(ARGV[1]), :symbolize_names => true
62
+ if ARGV.length == 1
63
+ str = File.read(ARGV[0])
64
+ end
65
+ # anns2 = JSON.parse File.read(ARGV[1]), :symbolize_names => true
66
66
 
67
- p TextAlignment.glcs_required?(str, dictionary)
67
+ p TextAlignment.glcs_required?(str, dictionary)
68
68
  end
@@ -2,145 +2,145 @@
2
2
  require 'text_alignment/lcs_min'
3
3
 
4
4
  class TextAlignment::LCSAlignment
5
- attr_reader :position_map_begin, :position_map_end
6
- attr_reader :common_elements, :mapped_elements
7
-
8
- # It initializes the LCS table for the given two strings, str1 and str2.
9
- # Exception is raised when nil given passed to either str1, str2 or dictionary
10
- def initialize(str1, str2, lcs = nil, sdiff = nil)
11
- raise ArgumentError, "nil string" if str1 == nil || str2 == nil
12
- sdiff = TextAlignment::LCSMin.new(str1, str2).sdiff if sdiff.nil?
13
- _compute_position_map(str1, str2, sdiff)
14
- end
15
-
16
- private
17
-
18
- def _compute_position_map(str1, str2, sdiff)
19
- posmap_begin, posmap_end = {}, {}
20
- @common_elements, @mapped_elements = [], []
21
-
22
- addition, deletion = [], []
23
-
24
- sdiff.each do |h|
25
- case h.action
26
- when '='
27
- p1, p2 = h.old_position, h.new_position
28
-
29
- @common_elements << [str1[p1], str2[p2]]
30
- posmap_begin[p1], posmap_end[p1] = p2, p2
31
-
32
- if !addition.empty? && deletion.empty?
33
- # correct the position for end
34
- posmap_end[p1] = p2 - addition.length unless p1 == 0
35
- elsif addition.empty? && !deletion.empty?
36
- deletion.each{|p| posmap_begin[p], posmap_end[p] = p2, p2}
37
- elsif !addition.empty? && !deletion.empty?
38
- @mapped_elements << [str1[deletion[0], deletion.length], str2[addition[0], addition.length]]
39
-
40
- posmap_begin[deletion[0]], posmap_end[deletion[0]] = addition[0], addition[0]
41
- deletion[1..-1].each{|p| posmap_begin[p], posmap_end[p] = nil, nil}
42
- end
43
-
44
- addition.clear; deletion.clear
45
-
46
- when '!'
47
- deletion << h.old_position
48
- addition << h.new_position
49
- when '-'
50
- deletion << h.old_position
51
- when '+'
52
- addition << h.new_position
53
- end
54
- end
55
-
56
- p1, p2 = str1.length, str2.length
57
- posmap_begin[p1], posmap_end[p1] = p2, p2
58
-
59
- if !addition.empty? && deletion.empty?
60
- # correct the position for end
61
- posmap_end[p1] = p2 - addition.length unless p1 == 0
62
- elsif addition.empty? && !deletion.empty?
63
- deletion.each{|p| posmap_begin[p], posmap_end[p] = p2, p2}
64
- elsif !addition.empty? && !deletion.empty?
65
- @mapped_elements << [str1[deletion[0], deletion.length], str2[addition[0], addition.length]]
66
-
67
- posmap_begin[deletion[0]], posmap_end[deletion[0]] = addition[0], addition[0]
68
- deletion[1..-1].each{|p| posmap_begin[p], posmap_end[p] = nil, nil}
69
- end
70
-
71
- @position_map_begin = posmap_begin.sort.to_h
72
- @position_map_end = posmap_end.sort.to_h
73
- end
5
+ attr_reader :position_map_begin, :position_map_end
6
+ attr_reader :common_elements, :mapped_elements
7
+
8
+ # It initializes the LCS table for the given two strings, str1 and str2.
9
+ # Exception is raised when nil given passed to either str1, str2 or dictionary
10
+ def initialize(str1, str2, lcs = nil, sdiff = nil)
11
+ raise ArgumentError, "nil string" if str1 == nil || str2 == nil
12
+ sdiff = TextAlignment::LCSMin.new(str1, str2).sdiff if sdiff.nil?
13
+ _compute_position_map(str1, str2, sdiff)
14
+ end
15
+
16
+ private
17
+
18
+ def _compute_position_map(str1, str2, sdiff)
19
+ posmap_begin, posmap_end = {}, {}
20
+ @common_elements, @mapped_elements = [], []
21
+
22
+ addition, deletion = [], []
23
+
24
+ sdiff.each do |h|
25
+ case h.action
26
+ when '='
27
+ p1, p2 = h.old_position, h.new_position
28
+
29
+ @common_elements << [str1[p1], str2[p2]]
30
+ posmap_begin[p1], posmap_end[p1] = p2, p2
31
+
32
+ if !addition.empty? && deletion.empty?
33
+ # correct the position for end
34
+ posmap_end[p1] = p2 - addition.length unless p1 == 0
35
+ elsif addition.empty? && !deletion.empty?
36
+ deletion.each{|p| posmap_begin[p], posmap_end[p] = p2, p2}
37
+ elsif !addition.empty? && !deletion.empty?
38
+ @mapped_elements << [str1[deletion[0], deletion.length], str2[addition[0], addition.length]]
39
+
40
+ posmap_begin[deletion[0]], posmap_end[deletion[0]] = addition[0], addition[0]
41
+ deletion[1..-1].each{|p| posmap_begin[p], posmap_end[p] = nil, nil}
42
+ end
43
+
44
+ addition.clear; deletion.clear
45
+
46
+ when '!'
47
+ deletion << h.old_position
48
+ addition << h.new_position
49
+ when '-'
50
+ deletion << h.old_position
51
+ when '+'
52
+ addition << h.new_position
53
+ end
54
+ end
55
+
56
+ p1, p2 = str1.length, str2.length
57
+ posmap_begin[p1], posmap_end[p1] = p2, p2
58
+
59
+ if !addition.empty? && deletion.empty?
60
+ # correct the position for end
61
+ posmap_end[p1] = p2 - addition.length unless p1 == 0
62
+ elsif addition.empty? && !deletion.empty?
63
+ deletion.each{|p| posmap_begin[p], posmap_end[p] = p2, p2}
64
+ elsif !addition.empty? && !deletion.empty?
65
+ @mapped_elements << [str1[deletion[0], deletion.length], str2[addition[0], addition.length]]
66
+
67
+ posmap_begin[deletion[0]], posmap_end[deletion[0]] = addition[0], addition[0]
68
+ deletion[1..-1].each{|p| posmap_begin[p], posmap_end[p] = nil, nil}
69
+ end
70
+
71
+ @position_map_begin = posmap_begin.sort.to_h
72
+ @position_map_end = posmap_end.sort.to_h
73
+ end
74
74
 
75
75
  end
76
76
 
77
77
  if __FILE__ == $0
78
78
 
79
- # from_text = "TGF-β mRNA"
80
- # to_text = "TGF-beta mRNA"
79
+ # from_text = "TGF-β mRNA"
80
+ # to_text = "TGF-beta mRNA"
81
81
 
82
- # from_text = "TGF-beta mRNA"
83
- # to_text = "TGF-β mRNA"
82
+ # from_text = "TGF-beta mRNA"
83
+ # to_text = "TGF-β mRNA"
84
84
 
85
- # from_text = "TGF-beta mRNA"
86
- # to_text = "TGF- mRNA"
85
+ # from_text = "TGF-beta mRNA"
86
+ # to_text = "TGF- mRNA"
87
87
 
88
- # from_text = "TGF-β–induced"
89
- # to_text = "TGF-beta-induced"
88
+ # from_text = "TGF-β–induced"
89
+ # to_text = "TGF-beta-induced"
90
90
 
91
- from_text = 'abxyzcd'
92
- to_text = 'abcd'
91
+ from_text = 'abxyzcd'
92
+ to_text = 'abcd'
93
93
 
94
- # from_text = "TGF-beta-induced"
95
- # to_text = "TGF-β–induced"
94
+ # from_text = "TGF-beta-induced"
95
+ # to_text = "TGF-β–induced"
96
96
 
97
- # from_text = "beta-induced"
98
- # to_text = "TGF-beta-induced"
97
+ # from_text = "beta-induced"
98
+ # to_text = "TGF-beta-induced"
99
99
 
100
- # from_text = "TGF-beta-induced"
101
- # to_text = "beta-induced"
100
+ # from_text = "TGF-beta-induced"
101
+ # to_text = "beta-induced"
102
102
 
103
- # from_text = "TGF-β–β induced"
104
- # to_text = "TGF-beta-beta induced"
103
+ # from_text = "TGF-β–β induced"
104
+ # to_text = "TGF-beta-beta induced"
105
105
 
106
- # from_text = "-βκ-"
107
- # to_text = "-betakappa-"
106
+ # from_text = "-βκ-"
107
+ # to_text = "-betakappa-"
108
108
 
109
- # from_text = "-betakappa-beta-z"
110
- # to_text = "-βκ-β–z"
109
+ # from_text = "-betakappa-beta-z"
110
+ # to_text = "-βκ-β–z"
111
111
 
112
- # from_text = "affect C/EBP-β’s ability"
113
- # to_text = "affect C/EBP-beta's ability"
112
+ # from_text = "affect C/EBP-β’s ability"
113
+ # to_text = "affect C/EBP-beta's ability"
114
114
 
115
- # from_text = "12 ± 34"
116
- # to_text = "12 +/- 34"
115
+ # from_text = "12 ± 34"
116
+ # to_text = "12 +/- 34"
117
117
 
118
- # from_text = "TGF-β–treated"
119
- # to_text = "TGF-beta-treated"
118
+ # from_text = "TGF-β–treated"
119
+ # to_text = "TGF-beta-treated"
120
120
 
121
- # from_text = "in TGF-β–treated cells"
122
- # to_text = "in TGF-beta-treated cells"
121
+ # from_text = "in TGF-β–treated cells"
122
+ # to_text = "in TGF-beta-treated cells"
123
123
 
124
- # from_text = "TGF-β–induced"
125
- # to_text = "TGF-beta-induced"
124
+ # from_text = "TGF-β–induced"
125
+ # to_text = "TGF-beta-induced"
126
126
 
127
- # anns1 = JSON.parse File.read(ARGV[0]), :symbolize_names => true
128
- # anns2 = JSON.parse File.read(ARGV[1]), :symbolize_names => true
127
+ # anns1 = JSON.parse File.read(ARGV[0]), :symbolize_names => true
128
+ # anns2 = JSON.parse File.read(ARGV[1]), :symbolize_names => true
129
129
 
130
- # aligner = TextAlignment.new(anns1[:text], anns2[:text], [["Δ", "delta"], [" ", " "], ["–", "-"], ["′", "'"]])
131
- # denotations = aligner.transform_denotations(anns1[:denotations])
130
+ # aligner = TextAlignment.new(anns1[:text], anns2[:text], [["Δ", "delta"], [" ", " "], ["–", "-"], ["′", "'"]])
131
+ # denotations = aligner.transform_denotations(anns1[:denotations])
132
132
 
133
- denotations_s = <<-'ANN'
134
- [{"id":"T0", "span":{"begin":1,"end":2}, "category":"Protein"}]
135
- ANN
133
+ denotations_s = <<-'ANN'
134
+ [{"id":"T0", "span":{"begin":1,"end":2}, "category":"Protein"}]
135
+ ANN
136
136
 
137
- # denotations = JSON.parse denotations_s, :symbolize_names => true
137
+ # denotations = JSON.parse denotations_s, :symbolize_names => true
138
138
 
139
- a = TextAlignment::LCSAlignment.new(from_text, to_text)
140
- p a.position_map_begin
141
- puts "-----"
142
- p a.position_map_end
143
- # aligner = TextAlignment.new(from_text, to_text, [["Δ", "delta"], [" ", " "], ["–", "-"], ["′", "'"], ["β", "beta"]])
139
+ a = TextAlignment::LCSAlignment.new(from_text, to_text)
140
+ p a.position_map_begin
141
+ puts "-----"
142
+ p a.position_map_end
143
+ # aligner = TextAlignment.new(from_text, to_text, [["Δ", "delta"], [" ", " "], ["–", "-"], ["′", "'"], ["β", "beta"]])
144
144
 
145
- # p denotations
145
+ # p denotations
146
146
  end