scbi_fqbin 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gemtest ADDED
File without changes
data/History.txt ADDED
@@ -0,0 +1,11 @@
1
+ === 0.0.1 2010-05-14
2
+
3
+ * 1 major enhancement:
4
+ * Initial release
5
+
6
+ === 0.1.0 2010-05-31
7
+
8
+ * 1 major enhancement:
9
+ * Added extras to sequences
10
+
11
+
data/Manifest.txt ADDED
@@ -0,0 +1,12 @@
1
+ History.txt
2
+ Manifest.txt
3
+ PostInstall.txt
4
+ README.rdoc
5
+ Rakefile
6
+ script/console
7
+ script/destroy
8
+ script/generate
9
+ lib/scbi_fqbin/fbin_file.rb
10
+ lib/scbi_fqbin.rb
11
+ test/test_helper.rb
12
+ test/test_scbi_fbin_file.rb
data/PostInstall.txt ADDED
@@ -0,0 +1,7 @@
1
+
2
+ For more information on scbi_fqbin, see http://scbi_fqbin.rubyforge.org
3
+
4
+ NOTE: Change this information in PostInstall.txt
5
+ You can also delete it if you don't want it.
6
+
7
+
data/README.rdoc ADDED
@@ -0,0 +1,79 @@
1
+ = scbi_fqbin
2
+
3
+ * http://github.com/dariogf/scbi_fqbin
4
+
5
+ == DESCRIPTION:
6
+
7
+ scbi_fqbin is a gem to handle compressed fastq and fasta files (FQbin files) made by Rafael Larrosa, Gonzalo Claros & Dario Guerrero for the Plataforma Andaluza de Bioinformática.
8
+
9
+ FastaBin was developed to handle huge fasta and qual files in a more efficient manner. To achieve its goals, FastaBin uses some
10
+ indexing and compression techniques in order to minimize disk accesses and thus increase the performance when reading fasta and qual files.
11
+
12
+ == FEATURES/PROBLEMS:
13
+
14
+
15
+ == SYNOPSIS:
16
+
17
+ === Using command line tools:
18
+
19
+ * To generate a FastaBin file:
20
+
21
+ mk_fbin fasta qual extras fbin_file
22
+
23
+ * To read a random sequence fomr FastaBin file:
24
+
25
+ rd_seq_fbin fbin_file seqname
26
+
27
+ * To iterate over all sequences in FastaBin file:
28
+
29
+
30
+ === Using ruby FastaBin gem:
31
+
32
+
33
+ == REQUIREMENTS:
34
+
35
+ *libfbin library
36
+
37
+ To install libfbin library, download this file http://www.scbi.uma.es/downloads/gems/libfbin.zip:
38
+
39
+ then unzip with:
40
+
41
+ unzip libfbin.zip
42
+
43
+ and install with:
44
+
45
+ make
46
+
47
+ sudo make install
48
+
49
+ By default the library will be installed to /usr/local/lib and binaries (mk_fbin, rd_seq_fbin and iterate_fbin) to /usr/local/bin
50
+
51
+ == INSTALL:
52
+
53
+ gem install scbi_fqbin
54
+
55
+
56
+ == LICENSE:
57
+
58
+ (The MIT License)
59
+
60
+ Copyright (c) 2010 Rafael Larrosa, Gonzalo Claros & Dario Guerrero
61
+
62
+ Permission is hereby granted, free of charge, to any person obtaining
63
+ a copy of this software and associated documentation files (the
64
+ 'Software'), to deal in the Software without restriction, including
65
+ without limitation the rights to use, copy, modify, merge, publish,
66
+ distribute, sublicense, and/or sell copies of the Software, and to
67
+ permit persons to whom the Software is furnished to do so, subject to
68
+ the following conditions:
69
+
70
+ The above copyright notice and this permission notice shall be
71
+ included in all copies or substantial portions of the Software.
72
+
73
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
74
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
75
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
76
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
77
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
78
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
79
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ gem 'hoe', '>= 2.1.0'
3
+ require 'hoe'
4
+ require 'fileutils'
5
+ # require './lib/scbi_fqbin'
6
+
7
+ Hoe.plugin :newgem
8
+ Hoe.plugin :website
9
+ # Hoe.plugin :cucumberfeatures
10
+
11
+ # Generate all the Rake tasks
12
+ # Run 'rake -T' to see list of generated tasks (from gem root directory)
13
+ $hoe = Hoe.spec 'scbi_fqbin' do
14
+ self.developer 'Dario Guerrero', 'dariogf@gmail.com'
15
+ self.post_install_message = 'PostInstall.txt' # TODO remove if post-install message not required
16
+ self.rubyforge_name = self.name # TODO this is default value
17
+ self.extra_deps = [['scbi_fasta','>= 0.0.1']]
18
+
19
+ end
20
+
21
+ require 'newgem/tasks'
22
+ Dir['tasks/**/*.rake'].each { |t| load t; puts t}
23
+
24
+ # TODO - want other tests/tasks run by default? Add them to the list
25
+
26
+ # remove_task :default
27
+ task :default => [:build, :install,:spec, :features]
28
+
@@ -0,0 +1,223 @@
1
+ require 'ffi'
2
+
3
+ class FFIString<FFI::MemoryPointer
4
+
5
+ def initialize
6
+ super(:pointer,1)
7
+ # self.write_string('a')
8
+ # return FFI::MemoryPointer.from_string('a'*150000000)
9
+ end
10
+
11
+ def to_s
12
+ resPtr = self.read_pointer()
13
+
14
+ #if null, return nil, if not return string
15
+ return resPtr.null? ? nil : resPtr.read_string()
16
+ end
17
+
18
+ def inspect
19
+ self.to_s
20
+ end
21
+
22
+ end
23
+
24
+ class FbinFile
25
+
26
+ CREATE_NEW_FILE=1
27
+ APPEND_TO_FILE=2
28
+ extend FFI::Library
29
+
30
+ ffi_lib(["libfbin"])
31
+
32
+ functions = [
33
+
34
+ [:read_seq, [:string,:string,:pointer,:pointer,:pointer],:int],
35
+ [:read_data_sequential, [:pointer,:pointer,:pointer,:pointer,:pointer],:int],
36
+ [:initialize_sequential_reads,[:pointer, :string],:int],
37
+ [:close_sequential_reads,[:pointer],:int],
38
+ [:write_seq,[:pointer, :string, :string, :string, :string],:int],
39
+ [:close_writes,[:pointer],:int],
40
+ [:initialize_writes,[:pointer, :string, :int, :int, :int, :int],:int],
41
+ [:inspect_file_data_struct,[:pointer],:void],
42
+ [:free_string,[:pointer],:int]
43
+
44
+
45
+ ]
46
+
47
+ functions.each do |func|
48
+ begin
49
+ attach_function(*func)
50
+ private func[0]
51
+ rescue Object => e
52
+ puts "Could not attach #{func}, #{e.message}"
53
+ end
54
+ end
55
+
56
+
57
+ # Initializes the file
58
+ def initialize(file_path, mode = 'r', qual_to_phred=true, qual_to_array=true, discretize_qual=0, flatten_qual=0, create_index=1)
59
+ @file_path = file_path
60
+ @open_mode=mode
61
+
62
+ @qual_to_phred = qual_to_phred
63
+ @qual_to_array = qual_to_array
64
+
65
+ @to_phred = lambda{|q| q - 33}
66
+
67
+ if @open_mode.index('r')
68
+ @gzf_bin = FFI::MemoryPointer.new :pointer
69
+ initialize_sequential_reads(@gzf_bin,@file_path)
70
+ # inspect_file_data_struct(@gzf_bin)
71
+ @gzf_bin = @gzf_bin.get_pointer(0)
72
+
73
+ elsif @open_mode.index('w')
74
+ @write_struct = FFI::MemoryPointer.new :pointer
75
+ initialize_writes(@write_struct,@file_path, CREATE_NEW_FILE,discretize_qual, flatten_qual, create_index)
76
+ @write_struct = @write_struct.get_pointer(0)
77
+ # inspect_file_data_struct(@write_struct)
78
+
79
+ elsif @open_mode.index('a')
80
+
81
+ @write_struct = FFI::MemoryPointer.new :pointer
82
+ initialize_writes(@write_struct,@file_path, APPEND_TO_FILE,discretize_qual, flatten_qual, create_index)
83
+ @write_struct = @write_struct.get_pointer(0)
84
+ # inspect_file_data_struct(@write_struct)
85
+
86
+ else
87
+ raise "Invalid aperture mode #{mode}. Use r/w"
88
+ end
89
+ end
90
+
91
+ # Access a sequence by its name using the indexed read
92
+ def read_sequence(seq_name)
93
+
94
+ fastaPtr = FFIString.new
95
+ qualPtr = FFIString.new
96
+ extrasPtr = FFIString.new
97
+
98
+ if read_seq(@file_path,seq_name,fastaPtr,qualPtr,extrasPtr)==0
99
+
100
+ qual=qualPtr.to_s
101
+
102
+ if @qual_to_phred
103
+ qual=qual.each_char.map{|e| (@to_phred.call(e.ord))}
104
+ if !@qual_to_array
105
+ qual=qual.join(' ')
106
+ end
107
+ end
108
+
109
+ fasta=fastaPtr.to_s
110
+ extras = extrasPtr.to_s
111
+
112
+ free_string(qualPtr)
113
+ free_string(fastaPtr)
114
+ free_string(extrasPtr)
115
+
116
+ return seq_name, fasta, qual, extras
117
+
118
+ else
119
+
120
+ free_string(qualPtr)
121
+ free_string(fastaPtr)
122
+ free_string(extrasPtr)
123
+
124
+ return nil
125
+ # raise "Invalid sequence"
126
+ end
127
+ end
128
+
129
+ # Returns the next sequence in file, or nil if no more ara available
130
+ def next_sequence
131
+ return get_next_seq(@gzf_bin)
132
+ end
133
+
134
+ def get_next_seq(gzf_bin)
135
+ seq_namePtr = FFIString.new
136
+ fastaPtr = FFIString.new
137
+ qualPtr = FFIString.new
138
+ extrasPtr = FFIString.new
139
+
140
+ if ((r=read_data_sequential(gzf_bin, seq_namePtr, fastaPtr, qualPtr, extrasPtr))==0)
141
+
142
+ qual=qualPtr.to_s
143
+ if @qual_to_phred
144
+ qual=qual.each_char.map{|e| (@to_phred.call(e.ord))}
145
+
146
+ if !@qual_to_array
147
+ qual=qual.join(' ')
148
+ end
149
+ end
150
+
151
+ seq_name=seq_namePtr.to_s
152
+ fasta=fastaPtr.to_s
153
+ extras=extrasPtr.to_s
154
+
155
+ # seq_namePtr.free
156
+ # fastaPtr.free
157
+ # qualPtr.free
158
+ # extrasPtr.free
159
+
160
+ free_string(seq_namePtr)
161
+ free_string(fastaPtr)
162
+ free_string(qualPtr)
163
+ free_string(extrasPtr)
164
+
165
+ return seq_name, fasta, qual, extras
166
+
167
+ else
168
+ free_string(seq_namePtr)
169
+ free_string(fastaPtr)
170
+ free_string(qualPtr)
171
+ free_string(extrasPtr)
172
+ return nil
173
+ end
174
+ end
175
+
176
+ # Iterates over all sequences in file
177
+ def each
178
+
179
+ gzf_bin = FFI::MemoryPointer.new :pointer
180
+ initialize_sequential_reads(gzf_bin,@file_path)
181
+ gzf_bin = gzf_bin.get_pointer(0)
182
+
183
+ while seq=get_next_seq(gzf_bin)
184
+ yield seq
185
+ end
186
+
187
+ close_sequential_reads(gzf_bin)
188
+ end
189
+
190
+ # Writes a sequence to file
191
+ def write_sequence(seq_name,fasta,qual,extras)
192
+
193
+ if qual.is_a?(Array)
194
+ qual=qual.join(' ')
195
+ end
196
+
197
+ write_seq(@write_struct,seq_name,fasta,qual,extras)
198
+ end
199
+
200
+
201
+ # Closes file
202
+ def close
203
+
204
+ if @open_mode.index('r')
205
+ close_sequential_reads(@gzf_bin)
206
+ else # CREATE_NEW_FILE or APPEND_TO_FILE
207
+ # inspect_write_struct(@write_struct)
208
+ close_writes(@write_struct)
209
+ end
210
+
211
+ end
212
+
213
+ # Returns the number of sequences in file. Iterating over it
214
+ def count
215
+ res=0
216
+ each do #|n,f,q,e|
217
+ # puts n
218
+ res+=1
219
+ end
220
+ return res
221
+ end
222
+
223
+ end
data/lib/scbi_fqbin.rb ADDED
@@ -0,0 +1,8 @@
1
+ $: << File.join(File.dirname(__FILE__),File.basename(__FILE__,File.extname(__FILE__)))
2
+
3
+ # require 'fastabin'
4
+ require 'fbin_file'
5
+
6
+ module ScbiFastabin
7
+ VERSION = '0.2.1'
8
+ end
data/script/console ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ # File: script/console
3
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
+
5
+ libs = " -r irb/completion"
6
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/scbi_fqbin.rb'}"
9
+ puts "Loading scbi_fqbin gem"
10
+ exec "#{irb} #{libs} --simple-prompt"
data/script/destroy ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/destroy'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Destroy.new.run(ARGV)
data/script/generate ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/generate'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Generate.new.run(ARGV)
@@ -0,0 +1,3 @@
1
+ require 'stringio'
2
+ require 'test/unit'
3
+ require File.dirname(__FILE__) + '/../lib/scbi_fqbin'
@@ -0,0 +1,158 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ # Ojo si va muy lento cuando se incrementa el numero de secuencias porque resulta que las longitudes de la secuencia va aumentando con cada número
4
+
5
+ class TestScbiFbinFile < Test::Unit::TestCase
6
+
7
+ def setup
8
+ #File.delete(TEST_FILE)
9
+ end
10
+
11
+ TEST_FILE='/tmp/fbinfile';
12
+
13
+ SEQ_FASTA='ACTG'
14
+ SEQ_FASTA400=SEQ_FASTA*100
15
+ SEQ_QUAL='B'
16
+ SEQ_QUAL400=(SEQ_QUAL*400*SEQ_FASTA.length)
17
+ PHRED_QUAL=[33]
18
+ SEQ_NAME='SEQ'
19
+ SEQ_EXTRAS='SOME EXTRAS IN SEQ'
20
+
21
+ PROGRESS=100
22
+
23
+ def this_method
24
+ caller[0] =~ /`([^']*)'/ and $1
25
+ end
26
+
27
+ def get_seq(i)
28
+ # i=25
29
+ return SEQ_FASTA*i
30
+ end
31
+
32
+ def get_qual(i)
33
+ # i=25
34
+ return (SEQ_QUAL*i*SEQ_FASTA.length)#.join(' ')
35
+ end
36
+
37
+ def fill_file(n)
38
+ fb=FbinFile.new(TEST_FILE,'w',false)
39
+ n.times do |c|
40
+ i = c+1
41
+ if (i%PROGRESS)==0
42
+ puts "#{this_method}: #{i}"
43
+ end
44
+
45
+ fb.write_sequence(SEQ_NAME+i.to_s,get_seq(i),get_qual(i),SEQ_EXTRAS)
46
+ #fb.write_sequence(SEQ_NAME+i.to_s,SEQ_FASTA400,SEQ_QUAL400,SEQ_EXTRAS)
47
+ end
48
+ puts "END #{this_method}"
49
+ fb.close
50
+ end
51
+
52
+ def test_new
53
+
54
+ if File.exists?(TEST_FILE)
55
+ File.delete(TEST_FILE)
56
+ end
57
+
58
+ fb=FbinFile.new(TEST_FILE,'w',false)
59
+ # fb.write_sequence('hola','actg','50 50 50 50','extras')
60
+ fb.close
61
+
62
+ assert(File.exists?(TEST_FILE))
63
+ end
64
+
65
+ def test_add100
66
+ num_seqs=100
67
+ # make new file and fill with data
68
+ fill_file(num_seqs)
69
+
70
+ fb=FbinFile.new(TEST_FILE,'r',false)
71
+
72
+ assert_equal(num_seqs,fb.count)
73
+ fb.close
74
+
75
+ end
76
+
77
+ def test_read_random
78
+ num_seqs=100 #100
79
+ # make new file and fill with data
80
+ fill_file(100)
81
+
82
+
83
+ fb=FbinFile.new(TEST_FILE,'r',false)
84
+
85
+ num_seqs.times do |c|
86
+ i = c+1
87
+ n,s,q,e=fb.read_sequence(SEQ_NAME+i.to_s)
88
+ # puts n,s,q,s.length,q.length,'_______'
89
+ assert_equal(SEQ_NAME+i.to_s,n)
90
+ assert_equal(get_seq(i),s)
91
+ assert_equal(get_qual(i), q)
92
+ assert_equal(SEQ_EXTRAS , e)
93
+ # gets
94
+ end
95
+
96
+ fb.close
97
+ end
98
+
99
+ def test_read_no_exists
100
+
101
+ fill_file(100)
102
+
103
+ fb=FbinFile.new(TEST_FILE,'r',false)
104
+ n,s,q=fb.read_sequence(SEQ_NAME+'NO_EXIST')
105
+ puts "H:#{n}"
106
+ assert(n.nil?)
107
+ fb.close
108
+ end
109
+
110
+
111
+
112
+ def test_each
113
+ fill_file(100)
114
+
115
+ i = 1
116
+ fb=FbinFile.new(TEST_FILE,'r',false)
117
+
118
+ fb.each do |n,s,q,e|
119
+ assert_equal(SEQ_NAME+i.to_s,n)
120
+ assert_equal(get_seq(i),s)
121
+ assert_equal(get_qual(i),q)
122
+ assert_equal(SEQ_EXTRAS,e)
123
+
124
+ i+=1
125
+ end
126
+
127
+ assert_equal(i,101)
128
+
129
+ fb.close
130
+
131
+ end
132
+
133
+ def test_each_by_index
134
+ num_seqs=100
135
+
136
+ fill_file(num_seqs)
137
+
138
+ i = 1
139
+
140
+ fb=FbinFile.new(TEST_FILE,'r',false)
141
+
142
+ fb.each do |n,f,q,e|
143
+ if (i%PROGRESS)==0
144
+ puts "#{this_method}: #{i}"
145
+ end
146
+ assert_equal(SEQ_NAME+i.to_s,n)
147
+ assert_equal(get_seq(i),f)
148
+ assert_equal(get_qual(i),q)
149
+ assert_equal(SEQ_EXTRAS,e)
150
+ i+=1
151
+ end
152
+
153
+ assert_equal(i,num_seqs+1)
154
+ fb.close
155
+
156
+ end
157
+
158
+ end
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: scbi_fqbin
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dario Guerrero
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-05-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: scbi_fasta
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.0.1
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.0.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: rdoc
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '4.0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '4.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: newgem
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 1.5.3
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.5.3
62
+ - !ruby/object:Gem::Dependency
63
+ name: hoe
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '3.6'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '3.6'
78
+ description: ! "scbi_fqbin is a gem to handle compressed fastq and fasta files (FQbin
79
+ files) made by Rafael Larrosa, Gonzalo Claros & Dario Guerrero for the Plataforma
80
+ Andaluza de Bioinformática.\n\nFastaBin was developed to handle huge fasta and qual
81
+ files in a more efficient manner. To achieve its goals, FastaBin uses some \nindexing
82
+ and compression techniques in order to minimize disk accesses and thus increase
83
+ the performance when reading fasta and qual files."
84
+ email:
85
+ - dariogf@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files:
89
+ - History.txt
90
+ - Manifest.txt
91
+ - PostInstall.txt
92
+ - README.rdoc
93
+ files:
94
+ - History.txt
95
+ - Manifest.txt
96
+ - PostInstall.txt
97
+ - README.rdoc
98
+ - Rakefile
99
+ - script/console
100
+ - script/destroy
101
+ - script/generate
102
+ - lib/scbi_fqbin/fbin_file.rb
103
+ - lib/scbi_fqbin.rb
104
+ - test/test_helper.rb
105
+ - test/test_scbi_fbin_file.rb
106
+ - .gemtest
107
+ homepage: http://github.com/dariogf/scbi_fqbin
108
+ licenses: []
109
+ post_install_message: PostInstall.txt
110
+ rdoc_options:
111
+ - --main
112
+ - README.rdoc
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ requirements: []
128
+ rubyforge_project: scbi_fqbin
129
+ rubygems_version: 1.8.24
130
+ signing_key:
131
+ specification_version: 3
132
+ summary: scbi_fqbin is a gem to handle compressed fastq and fasta files (FQbin files)
133
+ made by Rafael Larrosa, Gonzalo Claros & Dario Guerrero for the Plataforma Andaluza
134
+ de Bioinformática
135
+ test_files:
136
+ - test/test_helper.rb
137
+ - test/test_scbi_fbin_file.rb