">#{seq_name}\n#{seq}\n"
end
+ # Method that generates a unique key for a
+ # DNA sequence and return this key as a Fixnum.
+ def to_key
+ key = 0
+
+ self.seq.upcase.each_char do |char|
+ key <<= 2
+
+ case char
+ when 'A' then key |= 0
+ when 'C' then key |= 1
+ when 'G' then key |= 2
+ when 'T' then key |= 3
+ else raise SeqError, "Bad residue: #{char}"
+ end
+ end
+
+ key
+ end
+
# Method to reverse complement sequence.
def reverse_complement
self.reverse
assert_equal(">test\nAT\nCG\n", entry.to_fasta(2))
end
+ def test_Seq_to_key_with_bad_residue_raises
+ entry = Seq.new("test", "AUCG")
+ assert_raise(SeqError) { entry.to_key }
+ end
+
+ def test_Seq_to_key_returns_correctly
+ entry = Seq.new("test", "ATCG")
+ assert_equal(54, entry.to_key)
+ end
+
def test_Seq_reverse_returns_correctly
@entry.seq = "ATCG"
assert_equal("GCTA", @entry.reverse)