Designing siRNA.
This class implements the selection rules described by Kumiko Ui-Tei et al. (2004) and Reynolds et al. (2004).
Input is a Bio::Sequence::NA object (the target sequence). Output is a list of Bio::SiRNA::Pair object.
# File lib/bio/util/sirna.rb, line 64 def initialize(seq, antisense_size = 21, max_gc_percent = 60.0, min_gc_percent = 40.0) @seq = seq.rna! @pairs = Array.new @antisense_size = antisense_size @max_gc_percent = max_gc_percent @min_gc_percent = min_gc_percent end
rule can be one of ‘uitei’ (default) and ‘reynolds’.
# File lib/bio/util/sirna.rb, line 105 def design(rule = 'uitei') @target_size = @antisense_size + 2 target_start = 0 @seq.window_search(@target_size) do |target| antisense = target.subseq(1, @target_size - 2).complement.rna sense = target.subseq(3, @target_size) target_start += 1 target_stop = target_start + @target_size antisense_gc_percent = antisense.gc_percent next if antisense_gc_percent > @max_gc_percent next if antisense_gc_percent < @min_gc_percent case rule when 'uitei' next unless uitei?(target) when 'reynolds' next unless reynolds?(target) else raise NotImplementedError end pair = Bio::SiRNA::Pair.new(target, sense, antisense, target_start, target_stop, rule, antisense_gc_percent) @pairs.push(pair) end return @pairs end
same as design(‘reynolds’).
# File lib/bio/util/sirna.rb, line 100 def reynolds design('reynolds') end
Reynolds’ rule.
# File lib/bio/util/sirna.rb, line 88 def reynolds?(target) return false if /[GC]{9}/ =~ target return false unless /^.{4}A.{6}U.{2}[AUC].{5}[AU].{2}$/ =~ target return true end
same as design(‘uitei’).
# File lib/bio/util/sirna.rb, line 95 def uitei design('uitei') end
Ui-Tei’s rule.
# File lib/bio/util/sirna.rb, line 73 def uitei?(target) return false unless /^.{2}[GC]/ =~ target return false unless /[AU].{2}$/ =~ target return false if /[GC]{9}/ =~ target one_third = target.size * 1 / 3 start_pos = @target_size - one_third - 1 remain_seq = target.subseq(start_pos, @target_size - 2) au_number = remain_seq.scan(/[AU]/).size return false if au_number < 5 return true end
Generated with the Darkfish Rdoc Generator 2.