bio-fastqc 0.1.0 → 0.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f11168085a96f6fffffc8cab997f32b0a65a4766
4
- data.tar.gz: 48ee8e555f36db25b5b2833d72593dbfabdab9ef
3
+ metadata.gz: eadb40fda6d28b9a545f14241ba2faec3b3a6125
4
+ data.tar.gz: 22920fae6a3f69315e7ef1d497816b00efb2518f
5
5
  SHA512:
6
- metadata.gz: 697892a5e9d6596bd5009a8d650dc302f7f4074ec96ab502351e1a0fa61872045d200568a009d78f0af84fff148255425dad98dca7a3bc6d6e44190e841b224b
7
- data.tar.gz: 1dc9fbb1c6f61cd03ab649bb053dacbb0f9d0f0a4f4738aaa5c37eedee77aa80348542c96f755da2929df30a8765a6fd5c0fd129644ed0d52ed603dab5607721
6
+ metadata.gz: 37fb1d7b6e7124ff9c3678ca01402d9cb68422b5630bb55fd15df4e57c3697acac118e53e5d7b4a753487be693fcfd53c67e62f9d5442a2a0b350ddf1719a670
7
+ data.tar.gz: 71ecd9ac350ef2aecdd8048de2f76faeb5371b0c468f781eb71f934ae5a2cd1bbecb8a4a66db8a24c0d1a022bcc74aa06291c5795f651ba6b179b0dc6fda8d7c
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/Gemfile CHANGED
@@ -3,16 +3,21 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
- gem 'rubyzip', ">= 1.1.0"
7
- gem 'thor', ">= 0.19.1"
6
+ gem 'rubyzip', '~> 1.1', '>= 1.1.0'
7
+ gem 'thor', "~> 0.19.1"
8
8
 
9
9
  # Add dependencies to develop your gem here.
10
10
  # Include everything needed to run rake, tests, features, etc.
11
11
  group :development do
12
- gem "shoulda", ">= 0"
13
- gem "rdoc", "~> 3.12"
14
- gem "simplecov", ">= 0"
15
- gem "jeweler"
16
- gem "bundler", ">= 1.0.21"
17
- gem "bio", ">= 1.4.2"
12
+ gem 'bundler', '~> 1.10'
13
+ gem 'rake', '~> 10.0'
14
+ gem 'rspec', '~> 3.3'
15
+ gem 'jeweler', '~> 2.0'
16
+ gem 'rdoc', '~> 3.12'
17
+
18
+ gem 'shoulda', '~> 3.5'
19
+ gem 'simplecov', '~> 0.10'
20
+
21
+ gem 'pry', '~> 0.10'
22
+ gem 'bio-fastqc'
18
23
  end
data/README.md CHANGED
@@ -2,9 +2,7 @@
2
2
 
3
3
  [![Build Status](https://secure.travis-ci.org/inutano/bioruby-fastqc.png)](http://travis-ci.org/inutano/bioruby-fastqc)
4
4
 
5
- Full description goes here
6
-
7
- Note: this software is under active development!
5
+ A ruby parser for [FastQC](http://www.bioinformatics.babraham.ac.uk/projects/fastqc/) data.
8
6
 
9
7
  ## Installation
10
8
 
@@ -16,11 +14,20 @@ gem install bio-fastqc
16
14
 
17
15
  ```ruby
18
16
  require 'bio-fastqc'
17
+
18
+ # extract data from zipfile
19
+ zip_file = "/path/to/data_fastqc.zip"
20
+ data = Bio::FastQC::Data.read(zip_file)
21
+ parser = Bio::FastQC::Parser.new(data)
22
+ parser.summary
23
+ ```
24
+
25
+ Parse FastQC data as json format by command line tool:
26
+
27
+ ```sh
28
+ $ fastqc-util parse /path/to/data_fastqc.zip
19
29
  ```
20
30
 
21
- The API doc is online. For more code examples see the test files in
22
- the source tree.
23
-
24
31
  ## Project home page
25
32
 
26
33
  Information on the source tree, documentation, examples, issues and
@@ -33,7 +40,7 @@ The BioRuby community is on IRC server: irc.freenode.org, channel: #bioruby.
33
40
  ## Cite
34
41
 
35
42
  If you use this software, please cite one of
36
-
43
+
37
44
  * [BioRuby: bioinformatics software for the Ruby programming language](http://dx.doi.org/10.1093/bioinformatics/btq475)
38
45
  * [Biogem: an effective tool-based approach for scaling up open source software development in bioinformatics](http://dx.doi.org/10.1093/bioinformatics/bts080)
39
46
 
@@ -44,4 +51,3 @@ This Biogem is published at (http://biogems.info/index.html#bio-fastqc)
44
51
  ## Copyright
45
52
 
46
53
  Copyright (c) 2015 Tazro Inutano Ohta. See LICENSE.txt for further details.
47
-
data/Rakefile CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  require 'rubygems'
4
4
  require 'bundler'
5
+ require 'rake'
6
+ require 'jeweler'
7
+ require 'rspec/core/rake_task'
8
+ require 'rdoc/task'
9
+
5
10
  begin
6
11
  Bundler.setup(:default, :development)
7
12
  rescue Bundler::BundlerError => e
@@ -9,9 +14,7 @@ rescue Bundler::BundlerError => e
9
14
  $stderr.puts "Run `bundle install` to install missing gems"
10
15
  exit e.status_code
11
16
  end
12
- require 'rake'
13
17
 
14
- require 'jeweler'
15
18
  Jeweler::Tasks.new do |gem|
16
19
  # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
20
  gem.name = "bio-fastqc"
@@ -25,12 +28,8 @@ Jeweler::Tasks.new do |gem|
25
28
  end
26
29
  Jeweler::RubygemsDotOrgTasks.new
27
30
 
28
- require 'rake/testtask'
29
- Rake::TestTask.new(:test) do |test|
30
- test.libs << 'lib' << 'test'
31
- test.pattern = 'test/**/test_*.rb'
32
- test.verbose = true
33
- end
31
+ RSpec::Core::RakeTask.new(:spec)
32
+ task :default => :spec
34
33
 
35
34
  desc "Code coverage detail"
36
35
  task :simplecov do
@@ -38,9 +37,6 @@ task :simplecov do
38
37
  Rake::Task['test'].execute
39
38
  end
40
39
 
41
- task :default => :test
42
-
43
- require 'rdoc/task'
44
40
  Rake::RDocTask.new do |rdoc|
45
41
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
46
42
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'bio-fastqc'
3
+ Bio::FastQC::CLI.start
@@ -2,11 +2,13 @@
2
2
  # bioruby directory tree.
3
3
  #
4
4
  # For example, say you have a plugin named bio-plugin, the only uncommented
5
- # line in this file would be
5
+ # line in this file would be
6
6
  #
7
7
  # require 'bio/bio-plugin/plugin'
8
8
  #
9
9
  # In this file only require other files. Avoid other source code.
10
10
 
11
- require 'bio-fastqc/fastqc.rb'
12
-
11
+ require 'bio/fastqc/data'
12
+ require 'bio/fastqc/cli'
13
+ require 'bio/fastqc/parser'
14
+ require 'bio/fastqc'
@@ -0,0 +1,4 @@
1
+ module Bio
2
+ module FastQC
3
+ end
4
+ end
@@ -0,0 +1,19 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'thor'
4
+ require 'json'
5
+
6
+ module Bio
7
+ module FastQC
8
+ class CLI < Thor
9
+ desc "parse [filename]...", "parse fastqc data in fastqc directory or zipfile, output in json format"
10
+ def parse(*files)
11
+ files.each do |file|
12
+ puts JSON.dump(Parser.new(Data.read(file)).summary)
13
+ end
14
+ rescue
15
+ puts "Wrong input file type: specify fastqc result data, directory or zipfile"
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,36 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'zip'
4
+
5
+ module Bio
6
+ module FastQC
7
+ class Data
8
+ class << self
9
+ def read(file)
10
+ read_zipfile(file)
11
+ rescue Zip::Error
12
+ read_flatfile(file)
13
+ rescue Errno::EISDIR
14
+ read_dir(file)
15
+ end
16
+
17
+ def read_zipfile(file)
18
+ Zip::File.open(file) do |zipfile|
19
+ zipfile.glob('*/fastqc_data.txt').first.get_input_stream.read
20
+ end
21
+ end
22
+
23
+ def read_flatfile(file)
24
+ open(file).read
25
+ end
26
+
27
+ def read_dir(file)
28
+ open(File.join(file, "fastqc_data.txt")).read
29
+ rescue Errno::ENOENT
30
+ puts "FastQC data file fastqc_data.txt not found"
31
+ exit
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,232 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ module Bio
4
+ module FastQC
5
+ class Parser
6
+ def initialize(fastqc_data_txt)
7
+ @data = fastqc_data_txt
8
+ @object = parse(@data)
9
+ @base = self.basic_statistics
10
+ end
11
+
12
+ def parse(data)
13
+ modules = data.split(">>END_MODULE\n")
14
+ modules.map do |node|
15
+ lines = node.split("\n")
16
+ rm_header = lines.map do |line|
17
+ if line !~ /^\#/ || line =~ /^#Total Duplicate Percentage/
18
+ line.split("\t")
19
+ end
20
+ end
21
+ rm_header.compact
22
+ end
23
+ end
24
+
25
+ def basic_statistics
26
+ Hash[*@object.select{|a| a.first.first == ">>Basic Statistics" }.flatten]
27
+ end
28
+
29
+ def filename
30
+ @base["Filename"]
31
+ end
32
+
33
+ def file_type
34
+ @base["File type"]
35
+ end
36
+
37
+ def encoding
38
+ @base["Encoding"]
39
+ end
40
+
41
+ def total_sequences
42
+ @base["Total Sequences"].to_i
43
+ end
44
+
45
+ def filtered_sequences
46
+ @base["Filtered Sequences"].to_i
47
+ end
48
+
49
+ def sequence_length
50
+ @base["Sequence length"]
51
+ end
52
+
53
+ def min_length
54
+ l = @base["Sequence length"]
55
+ if l =~ /\d-\d/
56
+ l.sub(/-\d+$/,"").to_i
57
+ else
58
+ l.to_i
59
+ end
60
+ end
61
+
62
+ def max_length
63
+ l = @base["Sequence length"]
64
+ if l =~ /\d-\d/
65
+ l.sub(/^\d+-/,"").to_i
66
+ else
67
+ l.to_i
68
+ end
69
+ end
70
+
71
+ def percent_gc
72
+ @base["%GC"].to_i
73
+ end
74
+
75
+ def per_base_sequence_quality
76
+ node = @object.select{|a| a.first.first == ">>Per base sequence quality" }
77
+ node.first.select{|n| n.first != ">>Per base sequence quality" }
78
+ end
79
+
80
+ ## Custom module: overall mean base call quality indicator
81
+ def overall_mean_quality_score
82
+ per_base = self.per_base_sequence_quality
83
+ v = per_base.map{|c| (10**(c[1].to_f/-10)).to_f }
84
+ -10 * Math.log10(v.reduce(:+) / v.size)
85
+ end
86
+
87
+ ## Custom module: overall median base call quality indicator
88
+ def overall_median_quality_score
89
+ per_base = self.per_base_sequence_quality
90
+ v = per_base.map{|c| (10**(c[2].to_f/-10)).to_f }
91
+ -10 * Math.log10(v.reduce(:+) / v.size)
92
+ end
93
+
94
+ def per_tile_sequence_quality
95
+ node = @object.select{|a| a.first.first == ">>Per tile sequence quality" }
96
+ node.first.select{|n| n.first != ">>Per tile sequence quality" }
97
+ rescue
98
+ []
99
+ end
100
+
101
+ def per_sequence_quality_scores
102
+ node = @object.select{|a| a.first.first == ">>Per sequence quality scores" }
103
+ node.first.select{|n| n.first != ">>Per sequence quality scores" }
104
+ end
105
+
106
+ def per_base_sequence_content
107
+ node = @object.select{|a| a.first.first == ">>Per base sequence content" }
108
+ node.first.select{|n| n.first != ">>Per base sequence content" }
109
+ end
110
+
111
+ def per_sequence_gc_content
112
+ node = @object.select{|a| a.first.first == ">>Per sequence GC content" }
113
+ node.first.select{|n| n.first != ">>Per sequence GC content" }
114
+ end
115
+
116
+ def per_sequence_gc_content
117
+ node = @object.select{|a| a.first.first == ">>Per sequence GC content" }
118
+ node.first.select{|n| n.first != ">>Per sequence GC content" }
119
+ end
120
+
121
+ def per_base_n_content
122
+ node = @object.select{|a| a.first.first == ">>Per base N content" }
123
+ node.first.select{|n| n.first != ">>Per base N content" }
124
+ end
125
+
126
+ ## Custom module: overall N content
127
+ def overall_n_content
128
+ per_base = self.per_base_n_content
129
+ v = per_base.map{|c| c[1].to_f }
130
+ v.reduce(:+) / v.size
131
+ end
132
+
133
+ def sequence_length_distribution
134
+ node = @object.select{|a| a.first.first == ">>Sequence Length Distribution" }
135
+ node.first.select{|n| n.first != ">>Sequence Length Distribution" }
136
+ end
137
+
138
+ ## Custom module: mean sequence length calculated from distribution
139
+ def mean_sequence_length
140
+ distribution = self.sequence_length_distribution
141
+ sum = distribution.map do |length_count|
142
+ length = length_count[0]
143
+ count = length_count[1].to_f
144
+ if length =~ /\d-\d/
145
+ f = length.sub(/-\d+$/,"").to_i
146
+ b = length.sub(/^\d+-/,"").to_i
147
+ mean = (f + b) / 2
148
+ mean * count
149
+ else
150
+ length.to_i * count
151
+ end
152
+ end
153
+ sum.reduce(:+) / self.total_sequences
154
+ end
155
+
156
+ ## Custom module: median sequence length calculated from distribution
157
+ def median_sequence_length
158
+ distribution = self.sequence_length_distribution
159
+ array = distribution.map do |length_count|
160
+ length = length_count[0]
161
+ count = length_count[1].to_i
162
+ if length =~ /\d-\d/
163
+ f = length.sub(/-\d+$/,"").to_i
164
+ b = length.sub(/^\d+-/,"").to_i
165
+ mean = (f + b) / 2
166
+ [mean] * count
167
+ else
168
+ [length.to_i] * count
169
+ end
170
+ end
171
+ sorted = array.flatten.sort
172
+ quot = sorted.size / 2
173
+ if !sorted.size.even?
174
+ sorted[quot]
175
+ else
176
+ f = sorted[quot]
177
+ b = sorted[quot - 1]
178
+ (f + b) / 2
179
+ end
180
+ end
181
+
182
+ def sequence_duplication_levels
183
+ node = @object.select{|a| a.first.first == ">>Sequence Duplication Levels" }
184
+ node.first.select{|n| n.first != ">>Sequence Duplication Levels" && n.first != "\#Total Duplicate Percentage" }
185
+ end
186
+
187
+ def total_duplicate_percentage
188
+ node = @object.select{|a| a.first.first == ">>Sequence Duplication Levels" }
189
+ node.first.select{|n| n.first == "\#Total Duplicate Percentage" }.flatten[1].to_f
190
+ end
191
+
192
+ def overrepresented_sequences
193
+ node = @object.select{|a| a.first.first == ">>Overrepresented sequences" }
194
+ node.first.select{|n| n.first != ">>Overrepresented sequences" }
195
+ end
196
+
197
+ def kmer_content
198
+ node = @object.select{|a| a.first.first == ">>Kmer Content" }
199
+ node.first.select{|n| n.first != ">>Kmer Content" }
200
+ end
201
+
202
+ def summary
203
+ {
204
+ filename: self.filename,
205
+ file_type: self.file_type,
206
+ encoding: self.encoding,
207
+ total_sequences: self.total_sequences,
208
+ filtered_sequences: self.filtered_sequences,
209
+ sequence_length: self.sequence_length,
210
+ percent_gc: self.percent_gc,
211
+ per_base_sequence_quality: self.per_base_sequence_quality,
212
+ per_tile_sequence_quality: self.per_tile_sequence_quality,
213
+ per_sequnce_quality_scores: self.per_sequence_quality_scores,
214
+ per_base_sequence_content: self.per_base_sequence_content,
215
+ per_sequence_gc_content: self.per_sequence_gc_content,
216
+ per_base_n_content: self.per_base_n_content,
217
+ sequence_length_distribution: self.sequence_length_distribution,
218
+ total_duplicate_percentage: self.total_duplicate_percentage, sequence_duplication_levels: self.sequence_duplication_levels,
219
+ overrepresented_sequences: self.overrepresented_sequences,
220
+ kmer_content: self.kmer_content,
221
+ min_length: self.min_length,
222
+ max_length: self.max_length,
223
+ overall_mean_quality_score: self.overall_mean_quality_score,
224
+ overall_median_quality_score: self.overall_median_quality_score,
225
+ overall_n_content: self.overall_n_content,
226
+ mean_sequence_length: self.mean_sequence_length,
227
+ median_sequence_length: self.median_sequence_length,
228
+ }
229
+ end
230
+ end
231
+ end
232
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Bio::FastQC do
4
+ context "with an example data" do
5
+ before do
6
+ zipfile = File.join(__dir__, "example_fastqc.zip")
7
+ @data = Bio::FastQC::Data.read(zipfile)
8
+ end
9
+
10
+ it 'extracts data from zip file' do
11
+ expect(@data).not_to be_empty
12
+ end
13
+
14
+ it 'parses a fastqc data and returns json' do
15
+ p = Bio::FastQC::Parser.new(@data)
16
+ expect(p.summary).not_to be_empty
17
+ end
18
+ end
19
+ end
Binary file
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'bio-fastqc'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bio-fastqc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tazro Inutano Ohta
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 1.1.0
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: '1.1'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,34 +27,79 @@ dependencies:
24
27
  - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: 1.1.0
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.1'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: thor
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - ">="
37
+ - - "~>"
32
38
  - !ruby/object:Gem::Version
33
39
  version: 0.19.1
34
40
  type: :runtime
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - ">="
44
+ - - "~>"
39
45
  - !ruby/object:Gem::Version
40
46
  version: 0.19.1
41
47
  - !ruby/object:Gem::Dependency
42
- name: shoulda
48
+ name: bundler
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - ">="
51
+ - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: '0'
53
+ version: '1.10'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - ">="
58
+ - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: '0'
60
+ version: '1.10'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rake
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '10.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '10.0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rspec
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.3'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.3'
89
+ - !ruby/object:Gem::Dependency
90
+ name: jeweler
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '2.0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '2.0'
55
103
  - !ruby/object:Gem::Dependency
56
104
  name: rdoc
57
105
  requirement: !ruby/object:Gem::Requirement
@@ -67,65 +115,66 @@ dependencies:
67
115
  - !ruby/object:Gem::Version
68
116
  version: '3.12'
69
117
  - !ruby/object:Gem::Dependency
70
- name: simplecov
118
+ name: shoulda
71
119
  requirement: !ruby/object:Gem::Requirement
72
120
  requirements:
73
- - - ">="
121
+ - - "~>"
74
122
  - !ruby/object:Gem::Version
75
- version: '0'
123
+ version: '3.5'
76
124
  type: :development
77
125
  prerelease: false
78
126
  version_requirements: !ruby/object:Gem::Requirement
79
127
  requirements:
80
- - - ">="
128
+ - - "~>"
81
129
  - !ruby/object:Gem::Version
82
- version: '0'
130
+ version: '3.5'
83
131
  - !ruby/object:Gem::Dependency
84
- name: jeweler
132
+ name: simplecov
85
133
  requirement: !ruby/object:Gem::Requirement
86
134
  requirements:
87
- - - ">="
135
+ - - "~>"
88
136
  - !ruby/object:Gem::Version
89
- version: '0'
137
+ version: '0.10'
90
138
  type: :development
91
139
  prerelease: false
92
140
  version_requirements: !ruby/object:Gem::Requirement
93
141
  requirements:
94
- - - ">="
142
+ - - "~>"
95
143
  - !ruby/object:Gem::Version
96
- version: '0'
144
+ version: '0.10'
97
145
  - !ruby/object:Gem::Dependency
98
- name: bundler
146
+ name: pry
99
147
  requirement: !ruby/object:Gem::Requirement
100
148
  requirements:
101
- - - ">="
149
+ - - "~>"
102
150
  - !ruby/object:Gem::Version
103
- version: 1.0.21
151
+ version: '0.10'
104
152
  type: :development
105
153
  prerelease: false
106
154
  version_requirements: !ruby/object:Gem::Requirement
107
155
  requirements:
108
- - - ">="
156
+ - - "~>"
109
157
  - !ruby/object:Gem::Version
110
- version: 1.0.21
158
+ version: '0.10'
111
159
  - !ruby/object:Gem::Dependency
112
- name: bio
160
+ name: bio-fastqc
113
161
  requirement: !ruby/object:Gem::Requirement
114
162
  requirements:
115
163
  - - ">="
116
164
  - !ruby/object:Gem::Version
117
- version: 1.4.2
165
+ version: '0'
118
166
  type: :development
119
167
  prerelease: false
120
168
  version_requirements: !ruby/object:Gem::Requirement
121
169
  requirements:
122
170
  - - ">="
123
171
  - !ruby/object:Gem::Version
124
- version: 1.4.2
172
+ version: '0'
125
173
  description: ruby parser for FastQC, a quality control software for high-throughput
126
174
  sequencing data.
127
175
  email: inutano@gmail.com
128
- executables: []
176
+ executables:
177
+ - fastqc-util
129
178
  extensions: []
130
179
  extra_rdoc_files:
131
180
  - LICENSE.txt
@@ -133,6 +182,7 @@ extra_rdoc_files:
133
182
  - README.rdoc
134
183
  files:
135
184
  - ".document"
185
+ - ".rspec"
136
186
  - ".travis.yml"
137
187
  - Gemfile
138
188
  - LICENSE.txt
@@ -140,10 +190,15 @@ files:
140
190
  - README.rdoc
141
191
  - Rakefile
142
192
  - VERSION
193
+ - bin/fastqc-util
143
194
  - lib/bio-fastqc.rb
144
- - lib/bio-fastqc/fastqc.rb
145
- - test/helper.rb
146
- - test/test_bio-fastqc.rb
195
+ - lib/bio/fastqc.rb
196
+ - lib/bio/fastqc/cli.rb
197
+ - lib/bio/fastqc/data.rb
198
+ - lib/bio/fastqc/parser.rb
199
+ - spec/bio-fastqc_spec.rb
200
+ - spec/example_fastqc.zip
201
+ - spec/spec_helper.rb
147
202
  homepage: http://github.com/inutano/bioruby-fastqc
148
203
  licenses:
149
204
  - MIT
@@ -1,3 +0,0 @@
1
-
2
- module BioFastqc
3
- end
@@ -1,34 +0,0 @@
1
- require 'simplecov'
2
-
3
- module SimpleCov::Configuration
4
- def clean_filters
5
- @filters = []
6
- end
7
- end
8
-
9
- SimpleCov.configure do
10
- clean_filters
11
- load_adapter 'test_frameworks'
12
- end
13
-
14
- ENV["COVERAGE"] && SimpleCov.start do
15
- add_filter "/.rvm/"
16
- end
17
- require 'rubygems'
18
- require 'bundler'
19
- begin
20
- Bundler.setup(:default, :development)
21
- rescue Bundler::BundlerError => e
22
- $stderr.puts e.message
23
- $stderr.puts "Run `bundle install` to install missing gems"
24
- exit e.status_code
25
- end
26
- require 'test/unit'
27
- require 'shoulda'
28
-
29
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
30
- $LOAD_PATH.unshift(File.dirname(__FILE__))
31
- require 'bio-fastqc'
32
-
33
- class Test::Unit::TestCase
34
- end
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestBioFastqc < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end