bio-velvet_underground 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 65689e857131512e65603fb6fa5f6d66cca0b9af
4
- data.tar.gz: f3898e399d3ff7c44e6ebcb37920be2a119603e2
3
+ metadata.gz: f1ae3ddf8e6093e4808984c2a525a633cd6b7a3d
4
+ data.tar.gz: e36bd5e26e2f89d2f5917e5333e4420d0817e180
5
5
  SHA512:
6
- metadata.gz: 86af06bc883460bd7c05d3f3a3925cd9e9aaf7b2914d552936a84ad243c322f4777b0797c58c868a3f7045507a969a2d2b1f1b2ad56f593d4ab3a011afab2b6a
7
- data.tar.gz: 4e42bf15c4bfde9bdd437203b2f559caef66fd3c47c86cabd5f6255f1666c4933e6253b7ae09f21622748f25dc4b495cee77e90b035b7edcc24f2cc2c16ae2f6
6
+ metadata.gz: 457377686af6d3344811f1d9acb0b4c3153842dde4bc36b1c1e7f2802ec0577132a1db7c6a0237db73f8ff870d6d2ef0c992d36f4f9c726720e64c0f48e9b0d5
7
+ data.tar.gz: f59ba0ee02ecc7239c82750c4bc17d1d851a29818a55158f853a337aeb89be23fca20112213a6822434d813e2af0ba10bf91f333448e1d78f1db6e402808e7f7
data/Gemfile CHANGED
@@ -5,6 +5,7 @@ source "http://rubygems.org"
5
5
 
6
6
  gem 'ffi', '~> 1.9'
7
7
  gem 'bio-logger', '~> 1.0'
8
+ gem 'bio-velvet', '~> 0.6'
8
9
 
9
10
  # Add dependencies to develop your gem here.
10
11
  # Include everything needed to run rake, tests, features, etc.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.3.0
@@ -55,6 +55,12 @@ class Bio::Velvet::Underground
55
55
  sequence_id+1
56
56
  end
57
57
  end
58
+
59
+ # Return the number of libraries used in this sequence store that were paired-end
60
+ # e.g.
61
+ def num_paired_end_readsets
62
+ Bio::Velvet::Underground.pairedCategories(@readset)
63
+ end
58
64
  end
59
65
 
60
66
  private
@@ -1,4 +1,5 @@
1
1
  require 'csv'
2
+ require 'bio-velvet'
2
3
 
3
4
  class Bio::Velvet::Underground
4
5
 
@@ -34,7 +35,7 @@ class Bio::Velvet::Underground
34
35
  end
35
36
 
36
37
  def nodes
37
- NodeArray.new self
38
+ @nodes ||= NodeArray.new self #cache node array
38
39
  end
39
40
 
40
41
  def node_count
@@ -51,6 +52,7 @@ class Bio::Velvet::Underground
51
52
 
52
53
  def initialize(graph)
53
54
  @graph = graph
55
+ @node_cache = []
54
56
  end
55
57
 
56
58
  def each
@@ -64,10 +66,13 @@ class Bio::Velvet::Underground
64
66
  end
65
67
 
66
68
  def [](node_id)
69
+ cache = @node_cache[node_id]
70
+ return cache unless cache.nil?
71
+
67
72
  return nil if node_id < 1 or node_id > @graph.internal_graph_struct[:nodeCount]
68
73
  pointer = Bio::Velvet::Underground.getNodeInGraph @graph.internal_graph_struct, node_id
69
74
  node_struct = Bio::Velvet::Underground::NodeStruct.new pointer
70
- Node.new(@graph, node_struct)
75
+ @node_cache[node_id] = Node.new(@graph, node_struct)
71
76
  end
72
77
  end
73
78
 
@@ -80,11 +85,11 @@ class Bio::Velvet::Underground
80
85
  end
81
86
 
82
87
  def node_id
83
- @internal_node_struct[:ID]
88
+ @node_id ||= @internal_node_struct[:ID]
84
89
  end
85
90
 
86
91
  def length_alone
87
- @internal_node_struct[:length]
92
+ @length_alone ||= @internal_node_struct[:length]
88
93
  end
89
94
 
90
95
  def coverages
@@ -95,13 +100,14 @@ class Bio::Velvet::Underground
95
100
  end
96
101
 
97
102
  def ends_of_kmers_of_node
103
+ return @ends_of_kmers_of_node unless @ends_of_kmers_of_node.nil?
98
104
  seq = []
99
105
  key = %w(A C G T)
100
106
  0.upto(length_alone-1) do |i|
101
107
  n = Bio::Velvet::Underground.getNucleotideInNode(@internal_node_struct, i)
102
108
  seq.push key[n]
103
109
  end
104
- return seq.join
110
+ @ends_of_kmers_of_node = seq.join
105
111
  end
106
112
 
107
113
  def ends_of_kmers_of_twin_node
@@ -123,10 +129,13 @@ class Bio::Velvet::Underground
123
129
  array_start_pointer = Bio::Velvet::Underground.getNodeReads @internal_node_struct, @graph.internal_graph_struct
124
130
  num_short_reads = Bio::Velvet::Underground.getNodeReadCount @internal_node_struct, @graph.internal_graph_struct
125
131
  struct_size = Bio::Velvet::Underground::ShortReadMarker.size #calculate once for performance
126
- @short_reads = 0.step(num_short_reads-1, 1).collect do |i|
132
+
133
+ # Return a hash of read_id => short_read object
134
+ @short_reads = Bio::Velvet::Graph::NodedReadArray.new
135
+ 0.step(num_short_reads-1, 1).each do |i|
127
136
  # Use the fact that FFI pointers can do pointer arithmetic
128
137
  pointer = array_start_pointer+(i*struct_size)
129
- NodedRead.new Bio::Velvet::Underground::ShortReadMarker.new(pointer), true
138
+ @short_reads.push(NodedRead.new(Bio::Velvet::Underground::ShortReadMarker.new(pointer), true))
130
139
  end
131
140
  return @short_reads
132
141
  end
@@ -136,12 +145,13 @@ class Bio::Velvet::Underground
136
145
  end
137
146
 
138
147
  def short_reads
139
- reads = fwd_short_reads
148
+ return @reads unless @reads.nil?
149
+ @reads = fwd_short_reads
140
150
  rev_short_reads.each do |read|
141
151
  read.direction = false
142
- reads.push read
152
+ @reads.push read
143
153
  end
144
- return reads
154
+ return @reads
145
155
  end
146
156
  end
147
157
 
@@ -165,15 +175,15 @@ class Bio::Velvet::Underground
165
175
  end
166
176
 
167
177
  def read_id
168
- @internal_short_read_struct[:readID]
178
+ @read_id ||= @internal_short_read_struct[:readID]
169
179
  end
170
180
 
171
181
  def offset_from_start_of_node
172
- @internal_short_read_struct[:position]
182
+ @offset_from_start_of_node ||= @internal_short_read_struct[:position]
173
183
  end
174
184
 
175
185
  def start_coord
176
- @internal_short_read_struct[:offset]
186
+ @start_coord ||= @internal_short_read_struct[:offset]
177
187
  end
178
188
  end
179
189
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bio-velvet_underground
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Woodcroft
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-05 00:00:00.000000000 Z
11
+ date: 2015-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bio-velvet
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.6'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.6'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: pry
43
57
  requirement: !ruby/object:Gem::Requirement