basil 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,5 +1,4 @@
1
1
  source :rubygems
2
- gemspec
3
2
 
4
3
  gem "dna"
5
4
  gem "trollop"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "basil"
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Austin G. Davis-Richardson"]
12
- s.date = "2012-09-18"
12
+ s.date = "2012-12-18"
13
13
  s.description = "Split multiplexed Illumina/454/IonTorrent/etc... output by barcode"
14
14
  s.email = "harekrishna@gmail.com"
15
15
  s.executables = ["basil"]
@@ -22,11 +22,13 @@ Gem::Specification.new do |s|
22
22
  "bin/basil",
23
23
  "lib/basil.rb",
24
24
  "lib/basil/barcodes.rb",
25
+ "lib/basil/barcodes/triplett.csv",
25
26
  "lib/basil/basil.rb",
26
27
  "lib/basil/buffer.rb",
27
28
  "lib/basil/cli.rb",
28
29
  "lib/basil/version.rb",
29
30
  "readme.md",
31
+ "spec/barcodes_spec.rb",
30
32
  "spec/basil_spec.rb",
31
33
  "spec/buffer_spec.rb",
32
34
  "spec/cli_spec.rb",
@@ -42,37 +44,25 @@ Gem::Specification.new do |s|
42
44
  s.homepage = "http://audy.github.com/basil"
43
45
  s.licenses = ["MIT"]
44
46
  s.require_paths = ["lib"]
45
- s.rubygems_version = "1.8.24"
47
+ s.rubygems_version = "1.8.23"
46
48
  s.summary = "Weapons-grade HTML demultiplexer"
47
49
 
48
50
  if s.respond_to? :specification_version then
49
51
  s.specification_version = 3
50
52
 
51
53
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
52
- s.add_runtime_dependency(%q<basil>, [">= 0"])
53
54
  s.add_runtime_dependency(%q<dna>, [">= 0"])
54
55
  s.add_runtime_dependency(%q<trollop>, [">= 0"])
55
56
  s.add_development_dependency(%q<jeweler>, [">= 0"])
56
- s.add_development_dependency(%q<jeweler>, [">= 0"])
57
- s.add_development_dependency(%q<jeweler>, [">= 0"])
58
- s.add_development_dependency(%q<jeweler>, [">= 0"])
59
57
  else
60
- s.add_dependency(%q<basil>, [">= 0"])
61
58
  s.add_dependency(%q<dna>, [">= 0"])
62
59
  s.add_dependency(%q<trollop>, [">= 0"])
63
60
  s.add_dependency(%q<jeweler>, [">= 0"])
64
- s.add_dependency(%q<jeweler>, [">= 0"])
65
- s.add_dependency(%q<jeweler>, [">= 0"])
66
- s.add_dependency(%q<jeweler>, [">= 0"])
67
61
  end
68
62
  else
69
- s.add_dependency(%q<basil>, [">= 0"])
70
63
  s.add_dependency(%q<dna>, [">= 0"])
71
64
  s.add_dependency(%q<trollop>, [">= 0"])
72
65
  s.add_dependency(%q<jeweler>, [">= 0"])
73
- s.add_dependency(%q<jeweler>, [">= 0"])
74
- s.add_dependency(%q<jeweler>, [">= 0"])
75
- s.add_dependency(%q<jeweler>, [">= 0"])
76
66
  end
77
67
  end
78
68
 
@@ -1,3 +1,30 @@
1
- class Barcodes
2
- # TODO add commonly used barcodes where copyright permits.
3
- end
1
+ module Basil
2
+ module Barcodes
3
+
4
+ # return a directory with the project libraries
5
+ def self.gem_libdir
6
+ File.dirname(__FILE__)
7
+ end
8
+
9
+ # list available barcodes files
10
+ def self.barcode_files
11
+ Dir[File.join(self.gem_libdir, 'barcodes', '*.csv')]
12
+ end
13
+
14
+ def self.barcodes
15
+ self.barcode_files.map { |x| File.basename(x, File.extname(x)) }
16
+ end
17
+
18
+ # returns true if string matches a file in the barcodes directory
19
+ def self.has_barcode?(string)
20
+ self.barcodes.include? File.basename(string, File.extname(string))
21
+ end
22
+
23
+ # return path for barcode file given a string
24
+ def self.barcode_path(string)
25
+ self.barcode_files.reject { |x| File.basename(x, File.extname(x)) != string }.first rescue nil
26
+ end
27
+
28
+ end
29
+ end
30
+
@@ -0,0 +1,205 @@
1
+ 1,AAGGTGG
2
+ 2,CTTGTGG
3
+ 3,TGAGTGG
4
+ 4,CAATTGG
5
+ 5,TTCTTGG
6
+ 6,GGTATGG
7
+ 7,GTGCTGG
8
+ 8,GCTGAGG
9
+ 9,ATCGAGG
10
+ 10,GAGTAGG
11
+ 11,TGTTAGG
12
+ 12,AGGAAGG
13
+ 13,TCGCAGG
14
+ 14,AATCAGG
15
+ 15,ACAGCGG
16
+ 16,TACGCGG
17
+ 17,ATGTCGG
18
+ 18,GGATCGG
19
+ 19,CAGACGG
20
+ 20,GTCACGG
21
+ 21,CGTCCGG
22
+ 22,TTACCGG
23
+ 23,CATGGTG
24
+ 24,TAGTGTG
25
+ 25,AGATGTG
26
+ 26,CTCTGTG
27
+ 27,ACTAGTG
28
+ 28,TGCAGTG
29
+ 29,ATGCGTG
30
+ 30,GCACGTG
31
+ 31,TCGGTTG
32
+ 32,GTAGTTG
33
+ 33,AGCGTTG
34
+ 34,CTGATTG
35
+ 35,CGAGATG
36
+ 36,ACGTATG
37
+ 37,TTATATG
38
+ 38,GTTAATG
39
+ 39,AACAATG
40
+ 40,CAGCATG
41
+ 41,TGTGCTG
42
+ 42,GCCGCTG
43
+ 43,AATTCTG
44
+ 44,CCATCTG
45
+ 45,CTAGGAG
46
+ 46,CCTTGAG
47
+ 47,GGAAGAG
48
+ 48,CACAGAG
49
+ 49,TGGCGAG
50
+ 50,GATCGAG
51
+ 51,TATGTAG
52
+ 52,GCGTTAG
53
+ 53,ATATTAG
54
+ 54,TCCATAG
55
+ 55,AGTCTAG
56
+ 56,GTGGAAG
57
+ 57,TGCGAAG
58
+ 58,CTCCAAG
59
+ 59,ATTGCAG
60
+ 60,TAATCAG
61
+ 61,AGCTCAG
62
+ 62,GCTACAG
63
+ 63,AAGCCAG
64
+ 64,TCTGGCG
65
+ 65,GTCGGCG
66
+ 66,AAGAGCG
67
+ 67,CTTAGCG
68
+ 68,CCGCGCG
69
+ 69,TAACGCG
70
+ 70,CCAGTCG
71
+ 71,TGGTTCG
72
+ 72,AGAATCG
73
+ 73,CATCTCG
74
+ 74,ATCCTCG
75
+ 75,CTGTACG
76
+ 76,GCATACG
77
+ 77,GGCAACG
78
+ 78,GATGCCG
79
+ 79,TCGACCG
80
+ 80,ACGTGGT
81
+ 81,CTATGGT
82
+ 82,CGTAGGT
83
+ 83,GACAGGT
84
+ 84,AGACGGT
85
+ 85,TCTGTGT
86
+ 86,ATAGTGT
87
+ 87,GCATTGT
88
+ 88,TAGTTGT
89
+ 89,AGCTTGT
90
+ 90,CCGATGT
91
+ 91,AATATGT
92
+ 92,CTCCTGT
93
+ 93,TAAGAGT
94
+ 94,CACTAGT
95
+ 95,GTGAAGT
96
+ 96,TCCAAGT
97
+ 97,CGGCAGT
98
+ 98,GTTGCGT
99
+ 99,CGAGCGT
100
+ 100,CCTTCGT
101
+ 101,TGGACGT
102
+ 102,GAGCCGT
103
+ 103,ATTGGTT
104
+ 104,TCAGGTT
105
+ 105,GTGTGTT
106
+ 106,AGGAGTT
107
+ 107,CCTCGTT
108
+ 108,TACCGTT
109
+ 109,CTGGATT
110
+ 110,GGCGATT
111
+ 111,GCTTATT
112
+ 112,TATAATT
113
+ 113,AGTCATT
114
+ 114,TAGGCTT
115
+ 115,CGGTCTT
116
+ 116,ATCTCTT
117
+ 117,GCGACTT
118
+ 118,CTTACTT
119
+ 119,GTACCTT
120
+ 120,GGTGGAT
121
+ 121,AACGGAT
122
+ 122,GAATGAT
123
+ 123,CGCTGAT
124
+ 124,TTGAGAT
125
+ 125,ACAAGAT
126
+ 126,GCGCGAT
127
+ 127,CAAGTAT
128
+ 128,GCCGTAT
129
+ 129,CTGTTAT
130
+ 130,TGATTAT
131
+ 131,GAGATAT
132
+ 132,GTTCTAT
133
+ 133,AGCAGGA
134
+ 134,TCGTAAT
135
+ 135,GTCTAAT
136
+ 136,CATCAAT
137
+ 137,GGACAAT
138
+ 138,CCGGCAT
139
+ 139,AGTACAT
140
+ 140,TACACAT
141
+ 141,TCTCCAT
142
+ 142,AATTGCT
143
+ 143,TTCTGCT
144
+ 144,GCTAGCT
145
+ 145,TGAAGCT
146
+ 146,ACGGTCT
147
+ 147,CGTGTCT
148
+ 148,TCACTCT
149
+ 149,GGCCTCT
150
+ 150,GAGGACT
151
+ 151,AGATACT
152
+ 152,CTCAACT
153
+ 153,TTGCACT
154
+ 154,AACCACT
155
+ 155,TTAGCCT
156
+ 156,GGTTCCT
157
+ 157,ATGACCT
158
+ 158,CATTGGA
159
+ 159,GCCTGGA
160
+ 160,CTGAGGA
161
+ 161,TAGCGGA
162
+ 162,ACTCGGA
163
+ 163,CTCTCGC
164
+ 164,GTACGGA
165
+ 165,CGCGTGA
166
+ 166,TTAATGA
167
+ 167,AGGCTGA
168
+ 168,GATCTGA
169
+ 169,CCACTGA
170
+ 170,CTAGAGA
171
+ 171,GACGAGA
172
+ 172,CCGTAGA
173
+ 173,TTCCAGA
174
+ 174,AATGCGA
175
+ 175,TGCTCGA
176
+ 176,TCTACGA
177
+ 177,GCTGGTA
178
+ 178,TCGAGTA
179
+ 179,GTCAGTA
180
+ 180,CGGCGTA
181
+ 181,ACAGTTA
182
+ 182,AGTGACA
183
+ 183,TATTACA
184
+ 184,CGGAACA
185
+ 185,CTTCACA
186
+ 186,CTGGCCA
187
+ 187,ACCGCCA
188
+ 188,TCATCCA
189
+ 189,TTCACCA
190
+ 190,TTCAGGC
191
+ 191,GTCGTGC
192
+ 192,CAGCTGC
193
+ 193,TGTCTGC
194
+ 194,ACGGAGC
195
+ 195,CGTGAGC
196
+ 196,TTGTAGC
197
+ 197,GGCTAGC
198
+ 198,GTTCAGC
199
+ 199,AGCGCGC
200
+ 200,GATTCGC
201
+ 201,GCACCGC
202
+ 202,GACGGTC
203
+ 203,ACCTGTC
204
+ 204,GGTAGTC
205
+ 205,AATCGTC
@@ -31,7 +31,7 @@ module Basil
31
31
  end
32
32
 
33
33
  records.each do |record|
34
-
34
+
35
35
  match = basil.recognize record.sequence
36
36
  barcode, sequence = match if match
37
37
 
@@ -39,7 +39,7 @@ module Basil
39
39
  barcode = 'unknown'
40
40
  trimmed_sequence = record.sequence
41
41
  end
42
-
42
+
43
43
  trimmed_sequence = record.sequence[pretrim..afttrim]
44
44
 
45
45
  new_record = Fasta.new :name => record.name, :sequence => trimmed_sequence
@@ -52,6 +52,14 @@ module Basil
52
52
  end
53
53
 
54
54
  def parse_barcodes barcodes
55
+ barcodes_file =
56
+ # barcodes included in barcodes/ directory?
57
+ if Barcodes.has_barcode? barcodes
58
+ Barcodes.barcode_path(barcodes)
59
+ # barcodes specified by filename
60
+ else
61
+ barcodes
62
+ end
55
63
  File.open(barcodes) { |h| Basil.parse_barcodes h }
56
64
  end
57
65
 
@@ -97,6 +105,6 @@ where [options] are:
97
105
  Trollop::die :out, "must specify output directory" if !opts[:out]
98
106
  opts
99
107
  end
100
- end
101
108
  end
102
- end
109
+ end
110
+ end
@@ -2,7 +2,7 @@ module Basil
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 1
5
+ PATCH = 2
6
6
 
7
7
  STRING = [MAJOR, MINOR, PATCH].join('.')
8
8
  end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Basil::Barcodes do
4
+ it "#gem_libdir should return full path to lib/ directory" do
5
+ Basil::Barcodes.gem_libdir.should_not be_nil
6
+ end
7
+
8
+ it "#barcode_files should return an array of barcodes files" do
9
+ Basil::Barcodes.barcode_files.should_not be_empty
10
+ end
11
+
12
+ it "#barcodes should return an array of barcode names" do
13
+ Basil::Barcodes.barcodes.should_not be_empty
14
+ end
15
+
16
+ it "#has_barcode? should return true if a barcode files is present in barcodes" do
17
+ Basil::Barcodes.has_barcode? "triplett"
18
+ end
19
+
20
+ it "#barcode_path returns full path of barcode file given a name" do
21
+ File.readable?(Basil::Barcodes.barcode_path("triplett")).should_not be_false
22
+ end
23
+ end
@@ -25,4 +25,6 @@ describe Basil::CLI do
25
25
  }
26
26
  files.should == directory
27
27
  end
28
+
29
+ it 'should have a method for listing available barcode sets'
28
30
  end
metadata CHANGED
@@ -1,129 +1,71 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: basil
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Austin G. Davis-Richardson
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-09-18 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- type: :runtime
22
- requirement: &id001 !ruby/object:Gem::Requirement
12
+ date: 2012-12-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: dna
16
+ requirement: !ruby/object:Gem::Requirement
23
17
  none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
31
- version_requirements: *id001
32
- name: basil
33
- prerelease: false
34
- - !ruby/object:Gem::Dependency
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
35
22
  type: :runtime
36
- requirement: &id002 !ruby/object:Gem::Requirement
37
- none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- hash: 3
42
- segments:
43
- - 0
44
- version: "0"
45
- version_requirements: *id002
46
- name: dna
47
23
  prerelease: false
48
- - !ruby/object:Gem::Dependency
49
- type: :runtime
50
- requirement: &id003 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
51
25
  none: false
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- hash: 3
56
- segments:
57
- - 0
58
- version: "0"
59
- version_requirements: *id003
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
60
31
  name: trollop
61
- prerelease: false
62
- - !ruby/object:Gem::Dependency
63
- type: :development
64
- requirement: &id004 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
65
33
  none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- hash: 3
70
- segments:
71
- - 0
72
- version: "0"
73
- version_requirements: *id004
74
- name: jeweler
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
75
39
  prerelease: false
76
- - !ruby/object:Gem::Dependency
77
- type: :development
78
- requirement: &id005 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
79
41
  none: false
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- hash: 3
84
- segments:
85
- - 0
86
- version: "0"
87
- version_requirements: *id005
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
88
47
  name: jeweler
89
- prerelease: false
90
- - !ruby/object:Gem::Dependency
91
- type: :development
92
- requirement: &id006 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
93
49
  none: false
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- hash: 3
98
- segments:
99
- - 0
100
- version: "0"
101
- version_requirements: *id006
102
- name: jeweler
103
- prerelease: false
104
- - !ruby/object:Gem::Dependency
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
105
54
  type: :development
106
- requirement: &id007 !ruby/object:Gem::Requirement
107
- none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- hash: 3
112
- segments:
113
- - 0
114
- version: "0"
115
- version_requirements: *id007
116
- name: jeweler
117
55
  prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
118
62
  description: Split multiplexed Illumina/454/IonTorrent/etc... output by barcode
119
63
  email: harekrishna@gmail.com
120
- executables:
64
+ executables:
121
65
  - basil
122
66
  extensions: []
123
-
124
67
  extra_rdoc_files: []
125
-
126
- files:
68
+ files:
127
69
  - .rspec
128
70
  - .rvmrc
129
71
  - Gemfile
@@ -132,11 +74,13 @@ files:
132
74
  - bin/basil
133
75
  - lib/basil.rb
134
76
  - lib/basil/barcodes.rb
77
+ - lib/basil/barcodes/triplett.csv
135
78
  - lib/basil/basil.rb
136
79
  - lib/basil/buffer.rb
137
80
  - lib/basil/cli.rb
138
81
  - lib/basil/version.rb
139
82
  - readme.md
83
+ - spec/barcodes_spec.rb
140
84
  - spec/basil_spec.rb
141
85
  - spec/buffer_spec.rb
142
86
  - spec/cli_spec.rb
@@ -149,37 +93,31 @@ files:
149
93
  - spec/data/test.qseq
150
94
  - spec/spec_helper.rb
151
95
  homepage: http://audy.github.com/basil
152
- licenses:
96
+ licenses:
153
97
  - MIT
154
98
  post_install_message:
155
99
  rdoc_options: []
156
-
157
- require_paths:
100
+ require_paths:
158
101
  - lib
159
- required_ruby_version: !ruby/object:Gem::Requirement
102
+ required_ruby_version: !ruby/object:Gem::Requirement
160
103
  none: false
161
- requirements:
162
- - - ">="
163
- - !ruby/object:Gem::Version
164
- hash: 3
165
- segments:
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ segments:
166
109
  - 0
167
- version: "0"
168
- required_rubygems_version: !ruby/object:Gem::Requirement
110
+ hash: 356002749428079559
111
+ required_rubygems_version: !ruby/object:Gem::Requirement
169
112
  none: false
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- hash: 3
174
- segments:
175
- - 0
176
- version: "0"
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
177
117
  requirements: []
178
-
179
118
  rubyforge_project:
180
- rubygems_version: 1.8.24
119
+ rubygems_version: 1.8.23
181
120
  signing_key:
182
121
  specification_version: 3
183
122
  summary: Weapons-grade HTML demultiplexer
184
123
  test_files: []
185
-