summaryrefslogtreecommitdiffstats
path: root/GC.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-03-08 20:14:51 -0600
committerJesse Luehrs <doy@tozt.net>2013-03-08 20:14:51 -0600
commitae98925062d5a392a73df4a1456df3a4a3be9b18 (patch)
tree3b89c49d97b9c38551578bf57619a9649dd0b4fb /GC.rs
parentb331d192d8da5b7397240d7eced71cbf0ab8cc55 (diff)
downloadrosalind-ae98925062d5a392a73df4a1456df3a4a3be9b18.tar.gz
rosalind-ae98925062d5a392a73df4a1456df3a4a3be9b18.zip
factor common behavior out into a library
Diffstat (limited to 'GC.rs')
-rw-r--r--GC.rs63
1 files changed, 5 insertions, 58 deletions
diff --git a/GC.rs b/GC.rs
index 62dd706..11f18b3 100644
--- a/GC.rs
+++ b/GC.rs
@@ -1,59 +1,6 @@
-use io::{println,stdin,Reader,ReaderUtil};
-use str::{push_str,unshift_char,each_char,len};
-
-const EOF: char = -1 as char;
-
-struct FASTAReader {
- in: Reader,
- priv mut peeked: char,
-}
-
-impl FASTAReader {
- static fn new() -> FASTAReader {
- FASTAReader { in: stdin(), peeked: EOF }
- }
-
- fn read_line(&self) -> ~str {
- let mut line = self.in.read_line();
- if self.peeked != '>' {
- unshift_char(&mut line, self.peeked);
- }
- self.peeked = self.in.read_char();
- line
- }
-
- fn read_sequence(&self) -> (~str, ~str) {
- if self.peeked == EOF {
- self.peeked = self.in.read_char();
- }
-
- let name = self.read_line();
- let mut dna = ~"";
- while !self.in.eof() && self.peeked != '>' {
- let line = self.read_line();
- push_str(&mut dna, line);
- }
- (name, dna)
- }
-
- fn each_sequence(&self, cb: fn(~str, ~str) -> bool) {
- while !self.in.eof() {
- let (name, dna) = self.read_sequence();
- cb(name, dna);
- }
- }
-}
-
-pure fn gc_content(dna: ~str) -> float {
- let mut content = 0;
- for each_char(dna) |ch| {
- match ch {
- 'C' | 'G' => content += 1,
- _ => (),
- }
- }
- (content as float) / (len(dna) as float)
-}
+extern mod rosalind;
+use rosalind::dna::gc_content;
+use rosalind::fasta::FASTAReader;
fn main() {
let reader = FASTAReader::new();
@@ -65,6 +12,6 @@ fn main() {
max_name = name;
}
}
- println(max_name);
- println(fmt!("%.6f", max_gc * 100f));
+ io::println(max_name);
+ io::println(fmt!("%.6f", max_gc * 100f));
}