File: enumkmers.rb

package info (click to toggle)
genometools 1.6.6%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 50,576 kB
  • sloc: ansic: 271,876; ruby: 29,930; python: 5,106; sh: 3,083; makefile: 1,213; perl: 219; pascal: 159; haskell: 37; sed: 5
file content (26 lines) | stat: -rwxr-xr-x 466 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/env ruby

require_relative "turnwheel.rb"

def enum_kmers(k,alphabet)
  asize = alphabet.length
  outstring = Array.new(k)
  turnwheels(Array.new(k) {asize}) do |wheel|
    0.upto(k-1).each do |i|
      outstring[i] = alphabet[wheel[i]]
    end
    yield outstring.join
  end
end

if ARGV.length != 2
  STDERR.puts "Usage: #{$0} <k> <alphabet>"
  exit 1
end

k = ARGV[0].to_i
alphabet = ARGV[1].split(//)

enum_kmers(k,alphabet) do |kmer|
  puts kmer
end