scbi_fastq 0.0.16 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ === 0.0.17 2012-07-13
2
+
3
+ Read gzip files
4
+
1
5
  === 0.0.16 2012-06-13
2
6
 
3
7
  Class method to_fastq saves with phred qualities
@@ -13,10 +13,28 @@ scbi_fastq is a ruby gem to read/write FASTQ files (DNA/RNA sequences) with qual
13
13
  * Quality values can be automatically splitted
14
14
  * Write FASTQ files in Sanger format
15
15
  * Iteration over large files without extra memory usage
16
-
16
+ * Can read gzip files directly
17
17
 
18
18
  == SYNOPSIS:
19
19
 
20
+ === Reading a compressed FASTQ in gzip with iterator:
21
+
22
+ require 'scbi_fastq'
23
+
24
+ # open gzip file in sanger mode
25
+ fqr=FastqFile.new('file1.fastq.gz')
26
+
27
+ fqr.each do |name,seq_fasta,qual,comments|
28
+
29
+ puts name
30
+ puts seq_fasta
31
+ puts qual
32
+ puts comments
33
+ end
34
+
35
+ fqr.close
36
+
37
+
20
38
  === Reading a FASTQ with iterator:
21
39
 
22
40
  require 'scbi_fastq'
@@ -3,5 +3,5 @@ $:.unshift(File.dirname(__FILE__)) unless
3
3
 
4
4
  require 'scbi_fastq/fastq_file'
5
5
  module ScbiFastq
6
- VERSION = '0.0.16'
6
+ VERSION = '0.0.17'
7
7
  end
@@ -1,3 +1,4 @@
1
+ require 'zlib'
1
2
 
2
3
  # add ord method to ruby 1.8
3
4
  if !String.instance_methods.include?(:ord)
@@ -30,7 +31,7 @@ class FastqFile
30
31
  end
31
32
 
32
33
  @fastq_file = File.open(fasta_file_name,'a')
33
- else #read only
34
+ else #read only
34
35
  if !File.exist?(fasta_file_name)
35
36
  raise "File #{fasta_file_name} doesn't exists"
36
37
  end
@@ -38,7 +39,14 @@ class FastqFile
38
39
  if fasta_file_name.is_a?(IO)
39
40
  @fastq_file = fasta_file_name
40
41
  else
41
- @fastq_file = File.open(fasta_file_name,'r')
42
+ begin
43
+ @fastq_file = Zlib::GzipReader.open(fasta_file_name)
44
+ # puts "GZIP file detected"
45
+ rescue
46
+ @fastq_file = File.open(fasta_file_name,'r')
47
+ # puts "NORMAL file detected"
48
+ end
49
+
42
50
  end
43
51
  end
44
52
 
@@ -127,10 +135,9 @@ class FastqFile
127
135
 
128
136
  # goto first position in file
129
137
  def rewind
130
-
131
138
  @num_seqs = 0 ;
132
- @fastq_file.pos=0
133
-
139
+ # @fastq_file.pos=0
140
+ @fastq_file.rewind
134
141
  end
135
142
 
136
143
  #------------------------------------
@@ -4,12 +4,33 @@ class TestScbiFastq < Test::Unit::TestCase
4
4
 
5
5
  def setup
6
6
  @test_file='/tmp/sanger.fastq';
7
+
7
8
 
8
9
  @seq_fasta='ACTG'
9
10
  @seq_qual=[31]
10
11
  @seq_name='SEQ'
11
12
 
12
13
  end
14
+
15
+ def test_gz_sanger
16
+
17
+ fqr=FastqFile.new(File.join(File.dirname(__FILE__),'sanger2.fastq.gz'))
18
+
19
+ i=1
20
+
21
+ fqr.each do |n,s,q|
22
+
23
+ assert_equal(@seq_name+i.to_s,n)
24
+ assert_equal(@seq_fasta*i,s)
25
+ assert_equal((@seq_qual*i*@seq_fasta.length),q)
26
+
27
+ i+=1
28
+ end
29
+
30
+ fqr.close
31
+
32
+
33
+ end
13
34
 
14
35
 
15
36
  def fill_file(n,offset=33)
@@ -134,7 +155,7 @@ class TestScbiFastq < Test::Unit::TestCase
134
155
  i=1
135
156
 
136
157
  fqr.each do |n,s,q|
137
- puts n,s,q
158
+ # puts n,s,q
138
159
  assert_equal(@seq_name+i.to_s,n)
139
160
  assert_equal(@seq_fasta*i,s)
140
161
  # assert_equal((@seq_qual*i*@seq_fasta.length),q)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: scbi_fastq
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.16
5
+ version: 0.0.17
6
6
  platform: ruby
7
7
  authors:
8
8
  - Dario Guerrero
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-06-13 00:00:00 Z
13
+ date: 2012-07-13 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hoe