summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DNA.rs4
-rw-r--r--GC.rs2
-rw-r--r--GRPH.rs4
-rw-r--r--HAMM.rs2
-rw-r--r--RNA.rs2
-rw-r--r--rosalind/dna.rs10
-rw-r--r--rosalind/fasta.rs20
-rw-r--r--rosalind/mod.rs (renamed from rosalind/mod.rc)10
-rw-r--r--rosalind/protein.rs6
9 files changed, 35 insertions, 25 deletions
diff --git a/DNA.rs b/DNA.rs
index 12e60d7..f335645 100644
--- a/DNA.rs
+++ b/DNA.rs
@@ -9,7 +9,7 @@ fn count_nucleotides(dna: &str) -> (int, int, int, int) {
'C' => c += 1,
'G' => g += 1,
'T' => t += 1,
- _ => fail ~"Unexpected character found"
+ _ => fail!(~"Unexpected character found"),
}
}
(a, c, g, t)
@@ -23,7 +23,7 @@ fn count_nucleotides_2(dna: &str) -> (int, int, int, int) {
'C' => (a, c + 1, g, t),
'G' => (a, c, g + 1, t),
'T' => (a, c, g, t + 1),
- _ => fail ~"Unexpected character found"
+ _ => fail!(~"Unexpected character found"),
}
}
}
diff --git a/GC.rs b/GC.rs
index 11f18b3..4560366 100644
--- a/GC.rs
+++ b/GC.rs
@@ -3,7 +3,7 @@ use rosalind::dna::gc_content;
use rosalind::fasta::FASTAReader;
fn main() {
- let reader = FASTAReader::new();
+ let mut reader = FASTAReader::new();
let mut (max_name, max_gc) = (~"", -1f);
for reader.each_sequence |name, dna| {
let gc_content = gc_content(dna);
diff --git a/GRPH.rs b/GRPH.rs
index 867aade..e98e2c8 100644
--- a/GRPH.rs
+++ b/GRPH.rs
@@ -1,11 +1,11 @@
-use str::{len,view};
+use core::str::{len,view};
extern mod rosalind;
use rosalind::fasta::FASTAReader;
fn main() {
let mut dna: ~[(~str, ~str)] = ~[];
- let reader = FASTAReader::new();
+ let mut reader = FASTAReader::new();
for reader.each_sequence |cur_name, cur_seq| {
let cur_len = len(cur_seq);
for dna.each |&(prev_name, prev_seq)| {
diff --git a/HAMM.rs b/HAMM.rs
index a1b2afe..7cea27d 100644
--- a/HAMM.rs
+++ b/HAMM.rs
@@ -5,7 +5,7 @@ use rosalind::str::hamming;
fn main() {
let dna1 = input_line();
let dna2 = input_line();
- assert str::len(dna1) == str::len(dna2);
+ fail_unless!(str::len(dna1) == str::len(dna2));
io::println(fmt!("%d", hamming(dna1, dna2)));
}
diff --git a/RNA.rs b/RNA.rs
index 9c20887..228dafc 100644
--- a/RNA.rs
+++ b/RNA.rs
@@ -1,4 +1,4 @@
-use io::{stdin,stdout,ReaderUtil,WriterUtil};
+use core::io::{stdin,stdout,ReaderUtil,WriterUtil};
extern mod rosalind;
use rosalind::dna::transcribe;
diff --git a/rosalind/dna.rs b/rosalind/dna.rs
index 7279c36..beb19a5 100644
--- a/rosalind/dna.rs
+++ b/rosalind/dna.rs
@@ -1,6 +1,6 @@
use str = core::str;
-pure fn gc_content(dna: &str) -> float {
+fn gc_content(dna: &str) -> float {
let mut content = 0;
for str::each_char(dna) |ch| {
match ch {
@@ -11,20 +11,20 @@ pure fn gc_content(dna: &str) -> float {
(content as float) / (str::len(dna) as float)
}
-pure fn complement(base: char) -> char {
+fn complement(base: char) -> char {
match base {
'A' => 'T',
'C' => 'G',
'G' => 'C',
'T' => 'A',
- _ => fail ~"Unknown character found",
+ _ => fail!(~"Unknown character found"),
}
}
-pure fn transcribe(base: char) -> char {
+fn transcribe(base: char) -> char {
match base {
'T' => 'U',
'A' | 'C' | 'G' => base,
- _ => fail ~"Unknown character found",
+ _ => fail!(~"Unknown character found"),
}
}
diff --git a/rosalind/fasta.rs b/rosalind/fasta.rs
index 9cd80a1..c4c828f 100644
--- a/rosalind/fasta.rs
+++ b/rosalind/fasta.rs
@@ -4,8 +4,8 @@ use str = core::str;
const EOF: char = -1 as char;
struct FASTAReader {
- in: Reader,
- priv mut peeked: char,
+ in: Reader,
+ priv peeked: char,
}
impl FASTAReader {
@@ -13,7 +13,7 @@ impl FASTAReader {
FASTAReader { in: stdin(), peeked: EOF }
}
- priv fn read_line(&self) -> ~str {
+ fn read_line(&mut self) -> ~str {
let mut line = self.in.read_line();
if self.peeked != '>' {
str::unshift_char(&mut line, self.peeked);
@@ -22,7 +22,7 @@ impl FASTAReader {
line
}
- priv fn read_sequence(&self) -> (~str, ~str) {
+ fn read_sequence(&mut self) -> (~str, ~str) {
if self.peeked == EOF {
self.peeked = self.in.read_char();
}
@@ -36,10 +36,20 @@ impl FASTAReader {
(name, dna)
}
- fn each_sequence(&self, cb: fn(~str, ~str) -> bool) {
+ pub fn each_sequence(&mut self, cb: &fn(~str, ~str) -> bool) {
while !self.in.eof() {
let (name, dna) = self.read_sequence();
cb(name, dna);
}
}
+
+ pub fn sequences(&mut self) -> (~[~str], ~[~str]) {
+ let mut names = ~[];
+ let mut dnas = ~[];
+ for self.each_sequence |name, dna| {
+ names.push(name);
+ dnas.push(dna);
+ }
+ (names, dnas)
+ }
}
diff --git a/rosalind/mod.rc b/rosalind/mod.rs
index 99fa08f..3d19392 100644
--- a/rosalind/mod.rc
+++ b/rosalind/mod.rs
@@ -2,8 +2,8 @@
#[crate_type = "lib"];
-mod dna;
-mod fasta;
-mod protein;
-mod io;
-mod str;
+pub mod dna;
+pub mod fasta;
+pub mod protein;
+pub mod io;
+pub mod str;
diff --git a/rosalind/protein.rs b/rosalind/protein.rs
index 815b9c0..d1534bf 100644
--- a/rosalind/protein.rs
+++ b/rosalind/protein.rs
@@ -3,7 +3,7 @@ use str = core::str;
const STOP: char = -1 as char;
fn translate(rna: &str) -> ~str {
- assert str::len(rna) % 3 == 0;
+ fail_unless!(str::len(rna) % 3 == 0);
let codons = str::len(rna) / 3;
let mut protein = str::with_capacity(codons);
@@ -21,7 +21,7 @@ fn translate(rna: &str) -> ~str {
}
priv fn translate_single(codon: &str) -> char {
- assert str::len(codon) == 3;
+ fail_unless!(str::len(codon) == 3);
match codon {
"UUU" => 'F', "CUU" => 'L', "AUU" => 'I', "GUU" => 'V',
"UUC" => 'F', "CUC" => 'L', "AUC" => 'I', "GUC" => 'V',
@@ -39,6 +39,6 @@ priv fn translate_single(codon: &str) -> char {
"UGC" => 'C', "CGC" => 'R', "AGC" => 'S', "GGC" => 'G',
"UGA" => STOP, "CGA" => 'R', "AGA" => 'R', "GGA" => 'G',
"UGG" => 'W', "CGG" => 'R', "AGG" => 'R', "GGG" => 'G',
- _ => fail ~"Unknown codon",
+ _ => fail!(~"Unknown codon"),
}
}