bix 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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