class Bio::SiRNA
Bio::SiRNA
¶ ↑
Designing siRNA.
This class implements the selection rules described by Kumiko Ui-Tei et al. (2004) and Reynolds et al. (2004).
Attributes
A parameter of size of antisense.
A parameter of maximal %GC.
A parameter of minimum %GC.
Public Class Methods
Source
# File lib/bio/util/sirna.rb 66 def initialize(seq, antisense_size = 21, max_gc_percent = 60.0, min_gc_percent = 40.0) 67 @seq = seq.rna! 68 @pairs = Array.new 69 @antisense_size = antisense_size 70 @max_gc_percent = max_gc_percent 71 @min_gc_percent = min_gc_percent 72 end
Input is a Bio::Sequence::NA
object (the target sequence). Output is a list of Bio::SiRNA::Pair
object.
Public Instance Methods
Source
# File lib/bio/util/sirna.rb 147 def design(rule = 'uitei') 148 @target_size = @antisense_size + 2 149 150 target_start = 0 151 @seq.window_search(@target_size) do |target| 152 antisense = target.subseq(1, @target_size - 2).complement.rna 153 sense = target.subseq(3, @target_size) 154 155 target_start += 1 156 target_stop = target_start + @target_size 157 158 antisense_gc_percent = antisense.gc_percent 159 next if antisense_gc_percent > @max_gc_percent 160 next if antisense_gc_percent < @min_gc_percent 161 162 case rule 163 when 'uitei' 164 next unless uitei?(target) 165 when 'reynolds' 166 next unless reynolds?(target) 167 else 168 raise NotImplementedError 169 end 170 171 pair = Bio::SiRNA::Pair.new(target, sense, antisense, target_start, target_stop, rule, antisense_gc_percent) 172 @pairs.push(pair) 173 end 174 return @pairs 175 end
rule can be one of ‘uitei’ (default) and ‘reynolds’.
Source
# File lib/bio/util/sirna.rb 142 def reynolds 143 design('reynolds') 144 end
same as design(‘reynolds’).
Source
# File lib/bio/util/sirna.rb 97 def reynolds?(target) 98 return false if target.length != 23 # 21 nt target + 2 nt overhang 99 100 seq19 = target[2..20] # 19 nt double-stranded region of siRNA 101 score = 0 102 103 # criteria I 104 gc_number = seq19.scan(/[GC]/i).size 105 score += 1 if (7 <= gc_number and gc_number <= 10) 106 107 # criteria II 108 au_number = seq19[14..18].scan(/[AU]/i).size 109 score += au_number 110 111 # criteria III 112 # NotImpremented: Tm 113 114 # criteria IV 115 score += 1 if seq19[18..18].match(/A/i) 116 117 # criteria V 118 score += 1 if seq19[2..2].match(/A/i) 119 120 # criteria VI 121 score += 1 if seq19[9..9].match(/[U]/i) 122 123 # criteria VII 124 score -= 1 if seq19[18..18].match(/[GC]/i) 125 126 # criteria VIII 127 score -= 1 if seq19[12..12].match(/G/i) 128 129 if score >= 6 130 return score 131 else 132 return false 133 end 134 end
Reynolds’ rule.
Source
# File lib/bio/util/sirna.rb 137 def uitei 138 design('uitei') 139 end
same as design(‘uitei’).
Source
# File lib/bio/util/sirna.rb 75 def uitei?(target) 76 return false if target.length != 23 # 21 nt target + 2 nt overhang 77 78 seq19 = target[2..20] # 19 nt double-stranded region of siRNA 79 80 # criteria i 81 return false unless seq19[18..18].match(/[AU]/i) 82 83 # criteria ii 84 return false unless seq19[0..0].match(/[GC]/i) 85 86 # criteria iii 87 au_number = seq19[12..18].scan(/[AU]/i).size 88 return false unless au_number >= 4 89 90 # criteria iv 91 return false if seq19.match(/[GC]{10}/i) 92 93 return true 94 end
Ui-Tei’s rule.