bix 0.0.3 → 0.0.5

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.
Files changed (4) hide show
  1. data/lib/bix.rb +1 -0
  2. data/lib/bix/fastq.rb +6 -1
  3. data/lib/bix/gtf.rb +73 -0
  4. metadata +3 -2
data/lib/bix.rb CHANGED
@@ -5,4 +5,5 @@ end
5
5
  require "#{File.dirname(__FILE__)}/bix/fastq"
6
6
  require "#{File.dirname(__FILE__)}/bix/fasta"
7
7
  require "#{File.dirname(__FILE__)}/bix/blast"
8
+ require "#{File.dirname(__FILE__)}/bix/gtf"
8
9
 
@@ -11,10 +11,15 @@ module Bix
11
11
  def from_io(io)
12
12
  @header = io.gets
13
13
  @seq = io.gets
14
- io.gets #plus line
14
+ io.gets # Throw away + line
15
15
  @qual = io.gets
16
16
 
17
17
  return false if @header == nil || @seq == nil || @qual == nil
18
+
19
+ @header.chomp!
20
+ @seq.chomp!
21
+ @qual.chomp!
22
+
18
23
  return true
19
24
  end
20
25
 
@@ -0,0 +1,73 @@
1
+ require 'csv'
2
+
3
+ module Bix
4
+ class Gtf
5
+ attr_accessor :chr, :prog, :feature, :start, :stop, :score, :strand, :frame, :props
6
+
7
+ def from_line(line)
8
+ f = line.chomp.split("\t", -1)
9
+ @chr = f[0]
10
+ @prog = f[1]
11
+ @feature = f[2]
12
+ @start = f[3].to_i
13
+ raise if @start < 1
14
+ @stop = f[4].to_i
15
+ raise if @stop < 1
16
+ @score = f[5].to_f
17
+ @strand = f[6]
18
+ raise if @strand.size > 1
19
+ @frame = f[7].to_i
20
+
21
+ group = f[8]
22
+
23
+ group.gsub!(/; /, " ") # Remove semicolons
24
+ group.gsub!(/;$/, "") # Remove semicolons
25
+ f = CSV::parse_line(group, :col_sep => ' ')
26
+ raise "Unexpected number of fields in group: '#{f[7]}'" unless f.size % 2 == 0
27
+
28
+ @props = {}
29
+ while f.size > 0
30
+ key = f.shift
31
+ value = f.shift
32
+
33
+ @props[key] = value
34
+ end
35
+ end
36
+
37
+ # E.g. to get all exons
38
+ def self.get_all(io, feature_regex=//)
39
+ gtfs = []
40
+ for line in io
41
+ g = Gtf.new
42
+ g.from_line(line)
43
+ if g.feature =~ feature_regex
44
+ gtfs << g
45
+ end
46
+ end
47
+ return gtfs
48
+ end
49
+
50
+ def self.get_all_by_prop(io, prop_key, feature_regex=//)
51
+ gtfs = get_all(io, feature_regex)
52
+ gtfs_by_key = {}
53
+ for g in gtfs
54
+ gtfs_by_key[g.props[prop_key]] ||= []
55
+ gtfs_by_key[g.props[prop_key]] << g
56
+ end
57
+ return gtfs_by_key
58
+ end
59
+
60
+ def to_s
61
+ propstr = ""
62
+ i = 0
63
+ for key, value in @props
64
+ if i > 0
65
+ propstr << " "
66
+ end
67
+ propstr << "#{key} \"#{value}\";"
68
+ i += 1
69
+ end
70
+ return [@chr, @prog, @feature, @start, @stop, @score, @strand, @frame, propstr].join("\t")
71
+ end
72
+ end
73
+ end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: bix
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.3
5
+ version: 0.0.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jesse Rodriguez
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-09-02 00:00:00 Z
13
+ date: 2012-02-29 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: swak
@@ -58,6 +58,7 @@ files:
58
58
  - lib/bix/fasta.rb
59
59
  - lib/bix/fastq.rb
60
60
  - lib/bix/blast.rb
61
+ - lib/bix/gtf.rb
61
62
  homepage: https://github.com/jesserod/bixruby
62
63
  licenses: []
63
64