scaffolder 0.4.4 → 0.5.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.
@@ -0,0 +1,112 @@
1
+ require 'helper'
2
+
3
+ describe Scaffolder do
4
+
5
+ Scaffolder::Region::Mock = Class.new(Scaffolder::Region)
6
+
7
+ before do
8
+ @sequence = nil
9
+ @data = [{'mock' => Hash.new}]
10
+ end
11
+
12
+ describe 'parsing a scaffold file' do
13
+
14
+ before do
15
+ Bio::FlatFile.stubs(:auto).with(@sequence).returns({})
16
+ end
17
+
18
+ it "should fetch correct region class type" do
19
+ Scaffolder::Region.expects(:'[]').with('mock').returns(Scaffolder::Region::Mock)
20
+ Scaffolder.new(@data,@sequence)
21
+ end
22
+
23
+ it "should pass data to region object" do
24
+ Scaffolder::Region::Mock.expects(:generate).with(@data.first['mock'])
25
+ Scaffolder.new(@data,@sequence)
26
+ end
27
+
28
+ end
29
+
30
+ context 'parsing a scaffold file with a source keyword' do
31
+
32
+ before do
33
+ Bio::FlatFile.stubs(:auto).with(@sequence).returns([
34
+ stub(:definition => 'seq1', :seq => 'ATGC')])
35
+ end
36
+
37
+ it "should should also pass raw_sequence from flat file" do
38
+ @data.first['mock']['source'] = 'seq1'
39
+ Scaffolder::Region::Mock.any_instance.expects(:source).with('seq1')
40
+ Scaffolder::Region::Mock.any_instance.expects(:raw_sequence).with('ATGC')
41
+ Scaffolder.new(@data,@sequence)
42
+ end
43
+
44
+ end
45
+
46
+ context 'updating each data hash with raw_sequence attributes' do
47
+
48
+ before do
49
+ @seqs = {'seq1' => 'AAA'}
50
+ @expected = {'source' => 'seq1', 'raw_sequence' => @seqs['seq1']}
51
+ end
52
+
53
+ it "should do nothing when no source keyword" do
54
+ test = {'something' => 'nothing'}
55
+ Scaffolder.update_with_sequence(test,@seqs).should == test
56
+ end
57
+
58
+ it "should add raw_sequence to simple hash" do
59
+ test = {'source' => 'seq1'}
60
+ Scaffolder.update_with_sequence(test,@seqs).should == @expected
61
+ end
62
+
63
+ it "should add raw_sequence to a nested hash" do
64
+ test = {'something' => {'source' => 'seq1'}}
65
+ expected = {'something' => @expected}
66
+ Scaffolder.update_with_sequence(test,@seqs).should == expected
67
+ end
68
+
69
+ it "should add raw_sequence to a twice nested hash" do
70
+ test = {'something' => {'other' => {'source' => 'seq1'}}}
71
+ expected = {'something' => {'other' => @expected}}
72
+ Scaffolder.update_with_sequence(test,@seqs).should == expected
73
+ end
74
+
75
+ it "should add raw_sequence to simple hash inside an array" do
76
+ test = [{'source' => 'seq1'}]
77
+ expected = [@expected]
78
+ Scaffolder.update_with_sequence(test,@seqs).should == expected
79
+ end
80
+
81
+ it "should add raw_sequence to a nested hash inside an array" do
82
+ test = {'something' => [{'source' => 'seq1'}]}
83
+ expected = {'something' => [@expected]}
84
+ Scaffolder.update_with_sequence(test,@seqs).should == expected
85
+ end
86
+
87
+ it "should add raw_sequence to two nested hashes inside an array" do
88
+ test = {'something' => [{'source' => 'seq1'},{'source' => 'seq1'}]}
89
+ expected = {'something' => [@expected,@expected]}
90
+ Scaffolder.update_with_sequence(test,@seqs).should == expected
91
+ end
92
+
93
+ it "should add raw_sequence to a hash inside a hash inside an array" do
94
+ test = {'something' => [{'else' => {'source' => 'seq1'}}]}
95
+ expected = {'something' => [{'else' => @expected}]}
96
+ Scaffolder.update_with_sequence(test,@seqs).should == expected
97
+ end
98
+
99
+ it "should add raw_sequence to a twice nested (hash inside an array)" do
100
+ test = {'something' => [{'else' => [{'source' => 'seq1'}]}]}
101
+ expected = {'something' => [{'else' => [@expected]}]}
102
+ Scaffolder.update_with_sequence(test,@seqs).should == expected
103
+ end
104
+
105
+ it "should throw an UnknownSequenceError when no matching sequence" do
106
+ test = {'source' => 'non_existent_sequence'}
107
+ lambda{ Scaffolder.update_with_sequence(test,@seqs)}.should raise_error(Scaffolder::Errors::UnknownSequenceError)
108
+ end
109
+
110
+ end
111
+
112
+ end
@@ -0,0 +1,110 @@
1
+ require 'helper'
2
+
3
+ describe Scaffolder::Region::Sequence do
4
+
5
+ its(:class){ should respond_to(:attribute)}
6
+ it{ should respond_to :source, :inserts}
7
+
8
+ describe "insert attribute method" do
9
+
10
+ let(:coordinates) do
11
+ {'open' => 2, 'close' => 3}
12
+ end
13
+
14
+ let(:insert) do
15
+ i = Scaffolder::Region::Insert.new
16
+ i.open coordinates['open']
17
+ i.close coordinates['close']
18
+ i
19
+ end
20
+
21
+ it "should return empty array as default value" do
22
+ subject.inserts.should be_empty
23
+ end
24
+
25
+ it "should allow array of inserts to be set as value" do
26
+ subject.inserts [insert]
27
+ subject.inserts.first.should == insert
28
+ end
29
+
30
+ it "should process insert data hash into an array of inserts" do
31
+ subject.inserts [coordinates]
32
+ ins = subject.inserts.first
33
+ ins.should be_instance_of Scaffolder::Region::Insert
34
+
35
+ ins.close.should == coordinates['close']
36
+ ins.open.should == coordinates['open']
37
+ end
38
+
39
+ it "should process mixed insert data into an array of inserts" do
40
+ subject.inserts [coordinates,insert]
41
+
42
+ subject.inserts.each do |ins|
43
+ ins.should be_instance_of Scaffolder::Region::Insert
44
+ ins.close.should == coordinates['close']
45
+ ins.open.should == coordinates['open']
46
+ end
47
+ end
48
+
49
+ end
50
+
51
+ describe "with inserts added" do
52
+
53
+ before do
54
+ subject.raw_sequence 'ATGCCAGATAACTGACTAGCATG'
55
+ end
56
+
57
+ let(:insert) do
58
+ ins = Scaffolder::Region::Insert.new
59
+ ins.raw_sequence 'GGTAGTA'
60
+ ins.open 5
61
+ ins.close 10
62
+ ins
63
+ end
64
+
65
+ it "should raise when the insert open is after the sequence stop" do
66
+ insert.open 24
67
+ insert.close 25
68
+ subject.inserts [insert]
69
+ lambda{subject.sequence}.should raise_error(Scaffolder::Errors::CoordinateError)
70
+ end
71
+
72
+ it "should raise when the insert close is before the sequence start" do
73
+ insert.open -5
74
+ insert.close 0
75
+ subject.inserts [insert]
76
+ lambda{subject.sequence}.should raise_error(Scaffolder::Errors::CoordinateError)
77
+ end
78
+
79
+ it "should raise when the insert open is greater than the insert close" do
80
+ insert.open 11
81
+ subject.inserts [insert]
82
+ lambda{subject.sequence}.should raise_error(Scaffolder::Errors::CoordinateError)
83
+ end
84
+
85
+ it "should update the sequence with a simple insert" do
86
+ subject.inserts [insert]
87
+ subject.sequence.should == 'ATGCGGTAGTAACTGACTAGCATG'
88
+ end
89
+
90
+ it "should update the sequence with a simple insert with repeated method calls" do
91
+ subject.inserts [insert]
92
+ subject.sequence.should == 'ATGCGGTAGTAACTGACTAGCATG'
93
+ subject.sequence.should == 'ATGCGGTAGTAACTGACTAGCATG'
94
+ end
95
+
96
+ it "should update the sequence stop position after adding a simple insert" do
97
+ subject.inserts [insert]
98
+ subject.stop.should == 24
99
+ end
100
+
101
+ it "should update the sequence with inserts in reverse order" do
102
+ insert_two = insert.clone
103
+ insert_two.open 12
104
+ insert_two.close 15
105
+ subject.inserts [insert,insert_two]
106
+ subject.sequence.should == "ATGCGGTAGTAAGGTAGTACTAGCATG"
107
+ end
108
+ end
109
+
110
+ end
@@ -0,0 +1,17 @@
1
+ require 'helper'
2
+
3
+ describe Scaffolder::Region::Unresolved do
4
+
5
+ its(:class){ should respond_to(:attribute)}
6
+ it{ should respond_to :length}
7
+
8
+ it "should return unresolved sequence when given length" do
9
+ subject.length 5
10
+ subject.sequence.should == ('N' * 5)
11
+ end
12
+
13
+ it "raise an error if length is unspecified" do
14
+ lambda{ subject.sequence }.should raise_error(Scaffolder::Errors::CoordinateError)
15
+ end
16
+
17
+ end
metadata CHANGED
@@ -1,137 +1,135 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scaffolder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
5
- prerelease:
4
+ version: 0.5.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Michael Barton
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2011-08-11 00:00:00.000000000 -04:00
13
- default_executable:
11
+ date: 2013-08-12 00:00:00.000000000 Z
14
12
  dependencies:
15
13
  - !ruby/object:Gem::Dependency
16
- name: bio
17
- requirement: &2153752620 !ruby/object:Gem::Requirement
18
- none: false
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
19
16
  requirements:
20
17
  - - ~>
21
18
  - !ruby/object:Gem::Version
22
- version: '1.4'
19
+ version: 10.1.0
23
20
  type: :runtime
24
21
  prerelease: false
25
- version_requirements: *2153752620
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 10.1.0
26
27
  - !ruby/object:Gem::Dependency
27
28
  name: bundler
28
- requirement: &2153750940 !ruby/object:Gem::Requirement
29
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: '1.0'
34
- type: :development
33
+ version: 1.3.0
34
+ type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2153750940
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 1.3.0
37
41
  - !ruby/object:Gem::Dependency
38
- name: shoulda
39
- requirement: &2153748000 !ruby/object:Gem::Requirement
40
- none: false
42
+ name: bio
43
+ requirement: !ruby/object:Gem::Requirement
41
44
  requirements:
42
45
  - - ~>
43
46
  - !ruby/object:Gem::Version
44
- version: '2.11'
45
- type: :development
47
+ version: 1.4.0
48
+ type: :runtime
46
49
  prerelease: false
47
- version_requirements: *2153748000
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.4.0
48
55
  - !ruby/object:Gem::Dependency
49
56
  name: rspec
50
- requirement: &2153746760 !ruby/object:Gem::Requirement
51
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
52
58
  requirements:
53
59
  - - ~>
54
60
  - !ruby/object:Gem::Version
55
- version: '2.4'
61
+ version: 2.14.0
56
62
  type: :development
57
63
  prerelease: false
58
- version_requirements: *2153746760
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 2.14.0
59
69
  - !ruby/object:Gem::Dependency
60
70
  name: mocha
61
- requirement: &2153746240 !ruby/object:Gem::Requirement
62
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
63
72
  requirements:
64
73
  - - ~>
65
74
  - !ruby/object:Gem::Version
66
- version: '0.9'
75
+ version: 0.14.0
67
76
  type: :development
68
77
  prerelease: false
69
- version_requirements: *2153746240
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 0.14.0
70
83
  - !ruby/object:Gem::Dependency
71
84
  name: yard
72
- requirement: &2153743100 !ruby/object:Gem::Requirement
73
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
74
86
  requirements:
75
87
  - - ~>
76
88
  - !ruby/object:Gem::Version
77
- version: '0.6'
89
+ version: 0.8.0
78
90
  type: :development
79
91
  prerelease: false
80
- version_requirements: *2153743100
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 0.8.0
81
97
  - !ruby/object:Gem::Dependency
82
98
  name: cucumber
83
- requirement: &2153742480 !ruby/object:Gem::Requirement
84
- none: false
99
+ requirement: !ruby/object:Gem::Requirement
85
100
  requirements:
86
101
  - - ~>
87
102
  - !ruby/object:Gem::Version
88
- version: '0.9'
103
+ version: 1.3.0
89
104
  type: :development
90
105
  prerelease: false
91
- version_requirements: *2153742480
92
- - !ruby/object:Gem::Dependency
93
- name: aruba
94
- requirement: &2153741780 !ruby/object:Gem::Requirement
95
- none: false
106
+ version_requirements: !ruby/object:Gem::Requirement
96
107
  requirements:
97
108
  - - ~>
98
109
  - !ruby/object:Gem::Version
99
- version: '0.2'
100
- type: :development
101
- prerelease: false
102
- version_requirements: *2153741780
110
+ version: 1.3.0
103
111
  - !ruby/object:Gem::Dependency
104
- name: jeweler
105
- requirement: &2153741080 !ruby/object:Gem::Requirement
106
- none: false
112
+ name: aruba
113
+ requirement: !ruby/object:Gem::Requirement
107
114
  requirements:
108
115
  - - ~>
109
116
  - !ruby/object:Gem::Version
110
- version: '1.5'
117
+ version: 0.5.3
111
118
  type: :development
112
119
  prerelease: false
113
- version_requirements: *2153741080
114
- - !ruby/object:Gem::Dependency
115
- name: mynyml-redgreen
116
- requirement: &2153740340 !ruby/object:Gem::Requirement
117
- none: false
120
+ version_requirements: !ruby/object:Gem::Requirement
118
121
  requirements:
119
122
  - - ~>
120
123
  - !ruby/object:Gem::Version
121
- version: 0.7.1
122
- type: :development
123
- prerelease: false
124
- version_requirements: *2153740340
125
- description: Organise sequence contigs into genome scaffolds using simple human-readable
126
- YAML files.
124
+ version: 0.5.3
125
+ description: Turns scaffolded contigs and annotations into a genome.
127
126
  email: mail@next.gs
128
127
  executables: []
129
128
  extensions: []
130
- extra_rdoc_files:
131
- - LICENSE
132
- - README.rdoc
129
+ extra_rdoc_files: []
133
130
  files:
134
131
  - .document
132
+ - .gitignore
135
133
  - .travis.yml
136
134
  - Gemfile
137
135
  - LICENSE
@@ -149,47 +147,38 @@ files:
149
147
  - lib/scaffolder/region/insert.rb
150
148
  - lib/scaffolder/region/sequence.rb
151
149
  - lib/scaffolder/region/unresolved.rb
150
+ - lib/scaffolder/version.rb
152
151
  - scaffolder.gemspec
153
- - test/helper.rb
154
- - test/test_insert.rb
155
- - test/test_region.rb
156
- - test/test_scaffolder.rb
157
- - test/test_sequence.rb
158
- - test/test_unresolved.rb
152
+ - spec/helper.rb
153
+ - spec/insert_spec.rb
154
+ - spec/region_spec.rb
155
+ - spec/scaffolder_spec.rb
156
+ - spec/sequences_spec.rb
157
+ - spec/unresolved_spec.rb
159
158
  - yard/attribute_handler.rb
160
- has_rdoc: true
161
159
  homepage: http://next.gs
162
160
  licenses:
163
161
  - MIT
162
+ metadata: {}
164
163
  post_install_message:
165
164
  rdoc_options: []
166
165
  require_paths:
167
166
  - lib
168
167
  required_ruby_version: !ruby/object:Gem::Requirement
169
- none: false
170
168
  requirements:
171
169
  - - ! '>='
172
170
  - !ruby/object:Gem::Version
173
171
  version: '0'
174
- segments:
175
- - 0
176
- hash: -4011958643952341412
177
172
  required_rubygems_version: !ruby/object:Gem::Requirement
178
- none: false
179
173
  requirements:
180
174
  - - ! '>='
181
175
  - !ruby/object:Gem::Version
182
- version: '0'
176
+ version: 1.8.0
183
177
  requirements: []
184
- rubyforge_project:
185
- rubygems_version: 1.6.2
178
+ rubyforge_project: scaffolder
179
+ rubygems_version: 2.0.3
186
180
  signing_key:
187
- specification_version: 3
188
- summary: Genome scaffolding for human beings.
189
- test_files:
190
- - test/helper.rb
191
- - test/test_insert.rb
192
- - test/test_region.rb
193
- - test/test_scaffolder.rb
194
- - test/test_sequence.rb
195
- - test/test_unresolved.rb
181
+ specification_version: 4
182
+ summary: Build genome output files
183
+ test_files: []
184
+ has_rdoc: