basil 0.1.1 → 0.1.2

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.
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
-