scaffolder 0.2.6 → 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/Gemfile +15 -0
- data/LICENSE +1 -1
- data/README.rdoc +29 -17
- data/Rakefile +22 -41
- data/VERSION +1 -1
- data/cucumber.yml +2 -0
- data/features/insert.feature +15 -0
- data/features/sequence.feature +20 -0
- data/features/step_definitions/scaffolder_steps.rb +48 -0
- data/features/support/env.rb +30 -0
- data/lib/scaffolder/errors.rb +6 -0
- data/lib/scaffolder/region/insert.rb +51 -0
- data/lib/scaffolder/region/sequence.rb +74 -0
- data/lib/scaffolder/region/unresolved.rb +23 -0
- data/lib/scaffolder/region.rb +139 -1
- data/lib/scaffolder.rb +197 -33
- data/scaffolder.gemspec +61 -43
- data/test/helper.rb +18 -3
- data/test/test_insert.rb +35 -43
- data/test/test_region.rb +143 -4
- data/test/test_scaffolder.rb +78 -47
- data/test/test_sequence.rb +61 -84
- data/test/test_unresolved.rb +23 -0
- data/yard/attribute_handler.rb +12 -0
- metadata +102 -45
- data/.gitignore +0 -22
- data/lib/scaffolder/insert.rb +0 -32
- data/lib/scaffolder/sequence.rb +0 -50
- data/test/data/sequences.fna +0 -4
data/lib/scaffolder/insert.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
class Scaffolder
|
2
|
-
class Insert
|
3
|
-
include Comparable
|
4
|
-
|
5
|
-
attr_accessor :start, :stop, :sequence
|
6
|
-
|
7
|
-
def initialize(options)
|
8
|
-
@sequence = options[:sequence]
|
9
|
-
@start = options[:start]
|
10
|
-
@stop = options[:stop]
|
11
|
-
|
12
|
-
m = "Either insert start or stop must be provided"
|
13
|
-
raise ArgumentError.new(m) if @start.nil? and @stop.nil?
|
14
|
-
|
15
|
-
@start ||= (@stop - @sequence.length - 1)
|
16
|
-
@stop ||= (@start + @sequence.length - 1)
|
17
|
-
|
18
|
-
if options[:reverse]
|
19
|
-
@sequence = Bio::Sequence::NA.new(@sequence).reverse_complement.seq.upcase
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def position
|
24
|
-
@start-1..@stop-1
|
25
|
-
end
|
26
|
-
|
27
|
-
def <=>(other)
|
28
|
-
self.stop <=> other.stop
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
data/lib/scaffolder/sequence.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
class Scaffolder
|
2
|
-
class Sequence
|
3
|
-
|
4
|
-
attr_accessor :entry_type, :start, :end, :name, :inserts, :raw_sequence
|
5
|
-
|
6
|
-
def initialize(options)
|
7
|
-
@entry_type = :sequence
|
8
|
-
@name = options[:name]
|
9
|
-
@start = options[:start] || 1
|
10
|
-
@end = options[:end] || options[:sequence].length
|
11
|
-
@sequence = options[:sequence]
|
12
|
-
@raw_sequence = @sequence.clone
|
13
|
-
@reverse = options[:reverse]
|
14
|
-
@inserts = []
|
15
|
-
|
16
|
-
raise ArgumentError.new("Sequence end greater than length") if @end > @raw_sequence.length
|
17
|
-
raise ArgumentError.new("Sequence start less than 0") if @start < 1
|
18
|
-
raise ArgumentError.new("Sequence start greater than end") if @start > @end
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
def add_inserts(inserts)
|
23
|
-
@inserts = inserts.sort.reverse
|
24
|
-
@inserts.each do |insert|
|
25
|
-
if insert.start > @sequence.length
|
26
|
-
raise ArgumentError.new("Insert start greater than length")
|
27
|
-
end
|
28
|
-
if insert.stop < 1
|
29
|
-
raise ArgumentError.new("Insert end less than 1")
|
30
|
-
end
|
31
|
-
if insert.stop <= insert.start
|
32
|
-
raise ArgumentError.new("Insert end less than start")
|
33
|
-
end
|
34
|
-
|
35
|
-
before_size = @sequence.length
|
36
|
-
@sequence[insert.position] = insert.sequence
|
37
|
-
|
38
|
-
# Update sequence end after adding inserts
|
39
|
-
diff = @sequence.length - before_size
|
40
|
-
@end += diff
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def sequence
|
45
|
-
seq = @sequence[(@start-1)..(@end-1)]
|
46
|
-
seq = Bio::Sequence::NA.new(seq).reverse_complement if @reverse
|
47
|
-
seq.to_s.upcase
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
data/test/data/sequences.fna
DELETED