class Bio::Genscan::Report

Bio::Genscan::Report - Class for Genscan report output.

Parser for the Genscan report output.

Attributes

date_run[R]

Returns

gccontent[R]

Returns C+G content of the query sequence.

genes[R]

Returns Array of Bio::Genscan::Report::Gene.

genscan_version[R]

Returns Genscan version.

isochore[R]

Returns

length[R]

Returns Length of the query sequence.

matrix[R]

Returns

name[R]

Returns Name of query sequence.

prediction[R]

Returns Array of Bio::Genscan::Report::Gene.

predictions[R]

Returns Array of Bio::Genscan::Report::Gene.

query_name[R]

Returns Name of query sequence.

sequence_name[R]

Returns Name of query sequence.

time[R]

Returns

Public Class Methods

new(report) click to toggle source

Bio::Genscan::Report.new(str)

Parse a Genscan report output string.

    # File lib/bio/appl/genscan/report.rb
 66 def initialize(report)
 67   @predictions = []
 68   @genscan_version = nil
 69   @date_run   = nil
 70   @time       = nil
 71   @query_name = nil
 72   @length     = nil
 73   @gccontent  = nil
 74   @isochore   = nil
 75   @matrix     = nil
 76 
 77   report.each_line("\n") do |line|
 78     case line
 79     when /^GENSCAN/
 80       parse_headline(line)
 81     when /^Sequence/
 82       parse_sequence(line)
 83     when /^Parameter/
 84       parse_parameter(line)
 85     when /^Predicted genes/
 86       break
 87     end
 88   end
 89 
 90   # rests
 91   i = report.index(/^Predicted gene/)
 92   j = report.index(/^Predicted peptide sequence/)
 93 
 94   # genes/exons
 95   genes_region = report[i...j]
 96   genes_region.each_line("\n") do |line|
 97     if /Init|Intr|Term|PlyA|Prom|Sngl/ =~ line
 98       gn, en = line.strip.split(" +")[0].split(/\./).map {|ii| ii.to_i }
 99       add_exon(gn, en, line)
100     end
101   end
102 
103   # sequences (peptide|CDS)
104   sequence_region = report[j...report.size]
105   sequence_region.gsub!(/^Predicted .+?:/, '')
106   sequence_region.gsub!(/^\s*$/, '')
107   sequence_region.split(Bio::FastaFormat::RS).each do |ff|
108     add_seq(Bio::FastaFormat.new(ff))
109   end
110 end

Private Instance Methods

add_exon(gn, en, line) click to toggle source

Bio::Genscan::Report#add_exon

    # File lib/bio/appl/genscan/report.rb
156 def add_exon(gn, en, line)
157   exon = Exon.parser(line)
158   case line
159   when /Prom/
160     begin
161       @predictions[gn - 1].set_promoter(exon)
162     rescue NameError
163       add_gene(gn)
164       @predictions[gn - 1].set_promoter(exon)
165     end
166   when /PlyA/
167     @predictions[gn - 1].set_polyA(exon)
168   else
169     begin
170       @predictions[gn - 1].exons[en - 1] = exon
171     rescue NameError
172       add_gene(gn)
173       @predictions[gn - 1].exons[en - 1] = exon
174     end
175   end
176 end
add_gene(gn) click to toggle source

Bio::Genscan::Report#add_gene

    # File lib/bio/appl/genscan/report.rb
149 def add_gene(gn)
150   @predictions[gn - 1] = Gene.new(gn)
151 end
add_seq(seq) click to toggle source

Bio::Genscan::Report#add_seq

    # File lib/bio/appl/genscan/report.rb
181 def add_seq(seq)
182   if /peptide_(\d+)/ =~ seq.definition
183     gn = $1.to_i
184     @predictions[gn - 1].set_aaseq(seq)
185   elsif /CDS_(\d+)/ =~ seq.definition
186     gn = $1.to_i
187     @predictions[gn - 1].set_naseq(seq)
188   end
189 end
parse_headline(line) click to toggle source

Bio::Genscan::Report#parse_headline

    # File lib/bio/appl/genscan/report.rb
114 def parse_headline(line)
115   tmp = line.chomp.split(/\t/)
116   @genscan_version = tmp[0].split(' ')[1]
117   @date_run        = tmp[1].split(': ')[1]
118   @time            = tmp[2].split(': ')[1]
119 end
parse_parameter(line) click to toggle source

Bio::Genscan::Report#parse_parameter

    # File lib/bio/appl/genscan/report.rb
138 def parse_parameter(line)
139   if /^Parameter matrix: (\w.+)$/ =~ line.chomp
140     @matrix = $1
141   else
142     raise "Error: [#{line}]"  
143   end
144 end
parse_sequence(line) click to toggle source

Bio::Genscan::Report#parse_sequence

    # File lib/bio/appl/genscan/report.rb
124 def parse_sequence(line)
125   if /^Sequence (\S+) : (\d+) bp : (\d+[\.\d]+)% C\+G : Isochore (\d+.+?)$/ =~ line
126     @query_name = $1
127     @length     = $2.to_i
128     @gccontent  = $3.to_f
129     @isochore   = $4
130   else
131     raise "Error: [#{line.inspect}]"
132   end
133 end