module NpSearch
# A class to hold sequence data
class Sequence
DI_NP_CLV = 'KR|KK|RR'
MONO_NP_CLV = '[KRH]..R|[KRH]....R|[KRH]......R'
attr_reader :id
attr_reader :signalp
attr_reader :seq
attr_reader :html_seq
attr_reader :signalp_output
attr_reader :translated_frame
attr_accessor :score
attr_accessor :potential_cleaved_nps
def initialize(id, seq, signalp_output, frame = nil)
@id = id
sp_cleavage_site_idx = signalp_output[:ymax_pos].to_i - 1
@signalp = seq[0..(sp_cleavage_site_idx - 1)]
@seq = seq[sp_cleavage_site_idx..-1]
@html_seq = format_seq_for_html
@translated_frame = frame
@score = 0
@potential_cleaved_nps = nil
end
def format_seq_for_html
seq = @seq.gsub(/C/, 'C')
seq.gsub!(/#{DI_NP_CLV}/i, '\0')
seq.gsub!(/#{MONO_NP_CLV}/i, '\0::NP_CLV::') # so that we can target R >>
seq.gsub!('R::NP_CLV::', 'R')
seq.gsub!('G',
'G')
"#{@signalp}#{seq}"
end
end
end