summaryrefslogtreecommitdiffstats
path: root/GC.rs
diff options
context:
space:
mode:
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));
}