bwt 0.0.1
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.
- data/lib/bwt.rb +64 -0
- data/test/test_bwt.rb +13 -0
- metadata +47 -0
data/lib/bwt.rb
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
#Initial implementation of BWT algorithm
|
4
|
+
#
|
5
|
+
#Burrows–Wheeler transform - block-sorting compression
|
6
|
+
class Bwt
|
7
|
+
|
8
|
+
def initialize;end
|
9
|
+
#Transformation
|
10
|
+
#@param String [String] Any given string
|
11
|
+
#@return [String] String transformed.
|
12
|
+
def self.bwt(string)
|
13
|
+
string2="|#{string}~"
|
14
|
+
p string2
|
15
|
+
len=string2.length
|
16
|
+
m=[]
|
17
|
+
(0...string2.length).collect { |i| (string2 * 2)[i, string2.length] }.each do |entry|
|
18
|
+
arr=[]
|
19
|
+
entry.split('').each do |letter|
|
20
|
+
arr.push(letter)
|
21
|
+
end
|
22
|
+
m.push(arr)
|
23
|
+
end
|
24
|
+
a=m.sort
|
25
|
+
b=[]
|
26
|
+
a.each do |lt|
|
27
|
+
b.push(lt[len-1])
|
28
|
+
end
|
29
|
+
return b.join('')
|
30
|
+
end #bwt
|
31
|
+
|
32
|
+
#Inverse Transformation
|
33
|
+
#@param String [String] Inverse String
|
34
|
+
#@return [Array] Array of letters - Original String
|
35
|
+
def self.bwt_rev(string)
|
36
|
+
len=string.length
|
37
|
+
s1=""
|
38
|
+
m=Array.new
|
39
|
+
count = 0
|
40
|
+
while count < len do
|
41
|
+
if not m.any?
|
42
|
+
string.split('').each do |s|
|
43
|
+
s1=[s]
|
44
|
+
m.push(s1)
|
45
|
+
m.sort!
|
46
|
+
end
|
47
|
+
count += 1
|
48
|
+
else
|
49
|
+
val = 0
|
50
|
+
string.split('').each do |s|
|
51
|
+
m[val].insert(0,s)
|
52
|
+
val += 1
|
53
|
+
end
|
54
|
+
m.sort!
|
55
|
+
count +=1
|
56
|
+
end
|
57
|
+
end
|
58
|
+
m.each do |arr|
|
59
|
+
if arr.last == "~"
|
60
|
+
return arr
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end #bwt_rev
|
64
|
+
end # Bwt
|
data/test/test_bwt.rb
ADDED
metadata
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bwt
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Andrei Rozanski
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-01-22 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: A simple, under development Burrows–Wheeler transform implementation
|
15
|
+
email: andrei@ruivo.org
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/bwt.rb
|
21
|
+
- test/test_bwt.rb
|
22
|
+
homepage: http://rubygems.org/gems/bwt
|
23
|
+
licenses: []
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ! '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
35
|
+
none: false
|
36
|
+
requirements:
|
37
|
+
- - ! '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubyforge_project:
|
42
|
+
rubygems_version: 1.8.23
|
43
|
+
signing_key:
|
44
|
+
specification_version: 3
|
45
|
+
summary: bwt
|
46
|
+
test_files:
|
47
|
+
- test/test_bwt.rb
|