bio-fastqc 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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