scaffolder-test-helpers 0.3.0 → 0.4.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.
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'scaffolder'
|
2
|
+
|
3
|
+
module Scaffolder::Test
|
4
|
+
class Annotation
|
5
|
+
|
6
|
+
[:seqname,:start,:end,:strand,:phase,:feature].each do |attribute|
|
7
|
+
define_method(attribute) do |*arg|
|
8
|
+
unless arg.first
|
9
|
+
return @options[attribute]
|
10
|
+
end
|
11
|
+
@options[attribute] = arg.first
|
12
|
+
return self
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(options = Hash.new)
|
17
|
+
defaults = {:seqname => 'record', :start => 1, :end => 10,
|
18
|
+
:strand => '+', :phase => 1, :feature => 'CDS'}
|
19
|
+
@options = defaults.merge(options)
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize_copy(source)
|
23
|
+
super
|
24
|
+
@options = @options.dup
|
25
|
+
end
|
26
|
+
|
27
|
+
def to_gff3_record
|
28
|
+
Bio::GFF::GFF3::Record.new(
|
29
|
+
self.seqname, nil, self.feature, self.start,
|
30
|
+
self.end, nil, self.strand, self.phase)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
@@ -4,6 +4,7 @@ require 'scaffolder'
|
|
4
4
|
|
5
5
|
require 'scaffolder/test/sequence'
|
6
6
|
require 'scaffolder/test/unresolved'
|
7
|
+
require 'scaffolder/test/annotation'
|
7
8
|
|
8
9
|
module Scaffolder::Test
|
9
10
|
module Helpers
|
@@ -28,6 +29,12 @@ module Scaffolder::Test
|
|
28
29
|
file
|
29
30
|
end
|
30
31
|
|
32
|
+
def generate_gff3_file(records,file = Tempfile.new("gff"))
|
33
|
+
gff = Bio::GFF::GFF3.new
|
34
|
+
gff.records = records.map{|r| r.to_gff3_record}
|
35
|
+
File.open(file.path,'w'){|out| out.print(gff) }
|
36
|
+
file
|
37
|
+
end
|
31
38
|
|
32
39
|
end
|
33
40
|
end
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{scaffolder-test-helpers}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Michael Barton"]
|
12
|
-
s.date = %q{2011-06-
|
12
|
+
s.date = %q{2011-06-07}
|
13
13
|
s.description = %q{Useful Helper methods and classes for testing scaffolder.}
|
14
14
|
s.email = %q{mail@michaelbarton.me.uk}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -23,10 +23,12 @@ Gem::Specification.new do |s|
|
|
23
23
|
"README.rdoc",
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
|
+
"lib/scaffolder/test/annotation.rb",
|
26
27
|
"lib/scaffolder/test/helpers.rb",
|
27
28
|
"lib/scaffolder/test/sequence.rb",
|
28
29
|
"lib/scaffolder/test/unresolved.rb",
|
29
30
|
"scaffolder-test-helpers.gemspec",
|
31
|
+
"spec/scaffolder/test/annotation_spec.rb",
|
30
32
|
"spec/scaffolder/test/helpers_spec.rb",
|
31
33
|
"spec/scaffolder/test/sequence_spec.rb",
|
32
34
|
"spec/scaffolder/test/unresolved_spec.rb",
|
@@ -37,7 +39,7 @@ Gem::Specification.new do |s|
|
|
37
39
|
s.require_paths = ["lib"]
|
38
40
|
s.rubygems_version = %q{1.3.7}
|
39
41
|
s.summary = %q{Methods and classes for testing scaffolder.}
|
40
|
-
s.test_files = ["spec/scaffolder/test/helpers_spec.rb", "spec/scaffolder/test/sequence_spec.rb", "spec/scaffolder/test/unresolved_spec.rb", "spec/spec_helper.rb"]
|
42
|
+
s.test_files = ["spec/scaffolder/test/annotation_spec.rb", "spec/scaffolder/test/helpers_spec.rb", "spec/scaffolder/test/sequence_spec.rb", "spec/scaffolder/test/unresolved_spec.rb", "spec/spec_helper.rb"]
|
41
43
|
|
42
44
|
if s.respond_to? :specification_version then
|
43
45
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__),'..','..','spec_helper')
|
2
|
+
|
3
|
+
describe Scaffolder::Test::Annotation do
|
4
|
+
|
5
|
+
describe "initialization" do
|
6
|
+
|
7
|
+
context "with all parameters" do
|
8
|
+
subject do
|
9
|
+
described_class.new(
|
10
|
+
:seqname => 'c1', :start => 4, :end => 6,
|
11
|
+
:strand => '+', :phase => 1, :feature => 'CDS')
|
12
|
+
end
|
13
|
+
|
14
|
+
its(:seqname){should == 'c1'}
|
15
|
+
its(:start) {should == 4}
|
16
|
+
its(:end) {should == 6}
|
17
|
+
its(:strand) {should == '+'}
|
18
|
+
its(:phase) {should == 1}
|
19
|
+
its(:feature){should == 'CDS'}
|
20
|
+
end
|
21
|
+
|
22
|
+
context "using default parameters" do
|
23
|
+
subject do
|
24
|
+
described_class.new
|
25
|
+
end
|
26
|
+
|
27
|
+
its(:seqname){should == 'record'}
|
28
|
+
its(:start) {should == 1}
|
29
|
+
its(:end) {should == 10}
|
30
|
+
its(:strand) {should == '+'}
|
31
|
+
its(:phase) {should == 1}
|
32
|
+
its(:feature){should == 'CDS'}
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#to_gff3_record" do
|
38
|
+
|
39
|
+
subject do
|
40
|
+
described_class.new.to_gff3_record
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should generate a Bio::GFF::GFF3::Record" do
|
44
|
+
expected = Bio::GFF::GFF3::Record.new(
|
45
|
+
subject.seqname, nil, subject.feature, subject.start,
|
46
|
+
subject.end, nil, subject.strand, subject.phase)
|
47
|
+
subject.should == expected
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "#clone" do
|
53
|
+
|
54
|
+
it "should duplicate the internal options state" do
|
55
|
+
a = described_class.new
|
56
|
+
b = a.clone
|
57
|
+
|
58
|
+
a.instance_variable_get("@options").
|
59
|
+
should_not equal(b.instance_variable_get("@options"))
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
@@ -2,70 +2,113 @@ require File.join(File.dirname(__FILE__),'..','..','spec_helper')
|
|
2
2
|
|
3
3
|
describe Scaffolder::Test::Helpers, "#generate_scaffold_files method" do
|
4
4
|
|
5
|
-
describe "
|
5
|
+
describe "#generate_scaffold_files" do
|
6
6
|
|
7
|
-
|
8
|
-
entries = [Sequence.new(:name => 'c1',:sequence => 'ATG')]
|
9
|
-
@scaf_file, @seq_file = described_class.generate_scaffold_files(entries)
|
10
|
-
end
|
7
|
+
context "passed an array with a single sequence" do
|
11
8
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
9
|
+
before(:all) do
|
10
|
+
entries = [Sequence.new(:name => 'c1',:sequence => 'ATG')]
|
11
|
+
@scaf_file, @seq_file = described_class.generate_scaffold_files(entries)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should create the corresponding scaffold file" do
|
15
|
+
File.exists?(@scaf_file.path).should be_true
|
16
|
+
scaffold = YAML.load(File.read(@scaf_file.path))
|
17
|
+
scaffold.should == [{'sequence' => {'source' => 'c1'}}]
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should create the corresponding sequence file" do
|
21
|
+
File.exists?(@seq_file.path).should be_true
|
22
|
+
sequence = File.read(@seq_file.path)
|
23
|
+
sequence.should == ">c1\nATG\n"
|
24
|
+
end
|
17
25
|
|
18
|
-
it "should create the corresponding sequence file" do
|
19
|
-
File.exists?(@seq_file.path).should be_true
|
20
|
-
sequence = File.read(@seq_file.path)
|
21
|
-
sequence.should == ">c1\nATG\n"
|
22
26
|
end
|
23
27
|
|
24
|
-
|
28
|
+
context "passed an array with two sequences" do
|
25
29
|
|
26
|
-
|
30
|
+
before(:all) do
|
31
|
+
entries = [Sequence.new(:name => 'c1',:sequence => 'ATG'),
|
32
|
+
Sequence.new(:name => 'c2',:sequence => 'ATG')]
|
33
|
+
@scaf_file, @seq_file = described_class.generate_scaffold_files(entries)
|
34
|
+
end
|
27
35
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
36
|
+
it "should create the corresponding scaffold file" do
|
37
|
+
File.exists?(@scaf_file.path).should be_true
|
38
|
+
scaffold = YAML.load(File.read(@scaf_file.path))
|
39
|
+
scaffold.should == [{'sequence' => {'source' => 'c1'}},
|
40
|
+
{'sequence' => {'source' => 'c2'}}]
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should create the corresponding sequence file" do
|
44
|
+
File.exists?(@seq_file.path).should be_true
|
45
|
+
sequence = File.read(@seq_file.path)
|
46
|
+
sequence.should == ">c1\nATG\n>c2\nATG\n"
|
47
|
+
end
|
33
48
|
|
34
|
-
it "should create the corresponding scaffold file" do
|
35
|
-
File.exists?(@scaf_file.path).should be_true
|
36
|
-
scaffold = YAML.load(File.read(@scaf_file.path))
|
37
|
-
scaffold.should == [{'sequence' => {'source' => 'c1'}},
|
38
|
-
{'sequence' => {'source' => 'c2'}}]
|
39
49
|
end
|
40
50
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
51
|
+
context "passed an array with a sequence and an unresolved region" do
|
52
|
+
|
53
|
+
before(:all) do
|
54
|
+
entries = [Sequence.new(:name => 'c1',:sequence => 'ATG'),
|
55
|
+
Unresolved.new(:length => 5)]
|
56
|
+
@scaf_file, @seq_file = generate_scaffold_files(entries)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should create the corresponding scaffold file" do
|
60
|
+
File.exists?(@scaf_file.path).should be_true
|
61
|
+
scaffold = YAML.load(File.read(@scaf_file.path))
|
62
|
+
scaffold.should == [{'sequence' => {'source' => 'c1'}},
|
63
|
+
{'unresolved' => {'length' => 5}}]
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should create the corresponding sequence file" do
|
67
|
+
File.exists?(@seq_file.path).should be_true
|
68
|
+
sequence = File.read(@seq_file.path)
|
69
|
+
sequence.should == ">c1\nATG\n"
|
70
|
+
end
|
71
|
+
|
45
72
|
end
|
46
73
|
|
47
74
|
end
|
48
75
|
|
49
|
-
describe "
|
76
|
+
describe "#generate_gff3_file" do
|
50
77
|
|
51
|
-
|
52
|
-
|
53
|
-
Unresolved.new(:length => 5)]
|
54
|
-
@scaf_file, @seq_file = generate_scaffold_files(entries)
|
78
|
+
subject do
|
79
|
+
described_class.generate_gff3_file(records)
|
55
80
|
end
|
56
81
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
82
|
+
context "passed an empty array" do
|
83
|
+
|
84
|
+
let(:records){ [] }
|
85
|
+
|
86
|
+
it "should create a file" do
|
87
|
+
File.exists?(subject.path).should be_true
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should generate an empty gff3 file" do
|
91
|
+
File.read(subject.path).should == "##gff-version 3\n"
|
92
|
+
end
|
93
|
+
|
62
94
|
end
|
63
95
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
96
|
+
context "passed an array with a single record" do
|
97
|
+
|
98
|
+
let(:records){ [Annotation.new(
|
99
|
+
:seqname => 'c1', :start => 4, :end => 6, :strand => '+',:phase => 1)] }
|
100
|
+
|
101
|
+
it "should create a file" do
|
102
|
+
File.exists?(subject.path).should be_true
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should generate an empty gff3 file" do
|
106
|
+
record = "c1\t.\tCDS\t4\t6\t.\t+\t1\t.\n"
|
107
|
+
File.read(subject.path).should == "##gff-version 3\n" + record
|
108
|
+
end
|
109
|
+
|
68
110
|
end
|
69
111
|
|
70
112
|
end
|
113
|
+
|
71
114
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scaffolder-test-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 4
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael Barton
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-06-
|
18
|
+
date: 2011-06-07 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -124,10 +124,12 @@ files:
|
|
124
124
|
- README.rdoc
|
125
125
|
- Rakefile
|
126
126
|
- VERSION
|
127
|
+
- lib/scaffolder/test/annotation.rb
|
127
128
|
- lib/scaffolder/test/helpers.rb
|
128
129
|
- lib/scaffolder/test/sequence.rb
|
129
130
|
- lib/scaffolder/test/unresolved.rb
|
130
131
|
- scaffolder-test-helpers.gemspec
|
132
|
+
- spec/scaffolder/test/annotation_spec.rb
|
131
133
|
- spec/scaffolder/test/helpers_spec.rb
|
132
134
|
- spec/scaffolder/test/sequence_spec.rb
|
133
135
|
- spec/scaffolder/test/unresolved_spec.rb
|
@@ -167,6 +169,7 @@ signing_key:
|
|
167
169
|
specification_version: 3
|
168
170
|
summary: Methods and classes for testing scaffolder.
|
169
171
|
test_files:
|
172
|
+
- spec/scaffolder/test/annotation_spec.rb
|
170
173
|
- spec/scaffolder/test/helpers_spec.rb
|
171
174
|
- spec/scaffolder/test/sequence_spec.rb
|
172
175
|
- spec/scaffolder/test/unresolved_spec.rb
|