From ae98925062d5a392a73df4a1456df3a4a3be9b18 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 8 Mar 2013 20:14:51 -0600 Subject: factor common behavior out into a library --- rosalind/dna.rs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 rosalind/dna.rs (limited to 'rosalind/dna.rs') diff --git a/rosalind/dna.rs b/rosalind/dna.rs new file mode 100644 index 0000000..a2ee73d --- /dev/null +++ b/rosalind/dna.rs @@ -0,0 +1,30 @@ +use str = core::str; + +pure fn gc_content(dna: ~str) -> float { + let mut content = 0; + for str::each_char(dna) |ch| { + match ch { + 'C' | 'G' => content += 1, + _ => (), + } + } + (content as float) / (str::len(dna) as float) +} + +pure fn complement(base: char) -> char { + match base { + 'A' => 'T', + 'C' => 'G', + 'G' => 'C', + 'T' => 'A', + _ => fail ~"Unknown character found", + } +} + +pure fn transcribe(base: char) -> char { + match base { + 'T' => 'U', + 'A' | 'C' | 'G' => base, + _ => fail ~"Unknown character found", + } +} -- cgit v1.2.3-54-g00ecf