Class | String |
In: |
lib/bio/shell/plugin/seq.rb
|
Parent: | Object |
folding with conscious about word boundaries with prefix string
# File lib/bio/shell/plugin/seq.rb, line 208 208: def fill(fill_column = 80, indent = 0, separater = ' ', prefix = '', first_line_only = true) 209: 210: # size : allowed length of the actual text 211: unless (size = fill_column - indent) > 0 212: warn "Error: indent > fill_column (indent is set to 0)" 213: size = fill_column 214: indent = 0 215: end 216: 217: n = pos = 0 218: ary = [] 219: while n < self.length 220: pos = self[n, size].rindex(separater) 221: 222: if self[n, size].length < size # last line of the folded str 223: pos = nil 224: end 225: 226: if pos 227: ary << self[n, pos+separater.length] 228: n += pos + separater.length 229: else # line too long or the last line 230: ary << self[n, size] 231: n += size 232: end 233: end 234: str = ary.join("\n") 235: 236: str[0,0] = prefix + ' ' * (indent - prefix.length) 237: if first_line_only 238: head = ' ' * indent 239: else 240: head = prefix + ' ' * (indent - prefix.length) 241: end 242: str.gsub!("\n", "\n#{head}") 243: 244: return str.chomp 245: end
folding both line end justified
# File lib/bio/shell/plugin/seq.rb, line 190 190: def fold(fill_column = 72, indent = 0) 191: str = '' 192: 193: # size : allowed length of the actual text 194: unless (size = fill_column - indent) > 0 195: warn "Error: indent > fill_column (indent is set to 0)" 196: size = fill_column 197: indent = 0 198: end 199: 200: 0.step(self.length - 1, size) do |n| 201: str << ' ' * indent + self[n, size] + "\n" 202: end 203: 204: return str 205: end
# File lib/bio/shell/plugin/seq.rb, line 171 171: def skip(window_size, step_size = 1) 172: i = 0 173: 0.step(self.length - window_size, step_size) do |i| 174: yield [self[i, window_size], i + 1, i + window_size] 175: end 176: from = i + step_size 177: to = [self.length, i + step_size + window_size].min 178: yield [self[from, window_size], from + 1, to] if from + 1 <= to 179: end
# File lib/bio/shell/plugin/seq.rb, line 163 163: def step(window_size) 164: i = 0 165: 0.step(self.length - window_size, window_size) do |i| 166: yield self[i, window_size] 167: end 168: yield self[i + window_size .. -1] if i + window_size < self.length 169: end
# File lib/bio/shell/plugin/seq.rb, line 185 185: def to_aaseq 186: Bio::Sequence::AA.new(self) 187: end