summaryrefslogtreecommitdiffstats
path: root/rosalind
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-03-13 22:50:02 -0500
committerJesse Luehrs <doy@tozt.net>2013-03-13 22:50:02 -0500
commita88eef55cd2552cb49d47c274ed080feac649112 (patch)
tree646d388d30745543ec79eb2a365b0f74fe129226 /rosalind
parent00e7efaee4bb250758563289ef509101b43715f1 (diff)
downloadrosalind-master.tar.gz
rosalind-master.zip
fixes for rust 0.6HEADmaster
Diffstat (limited to 'rosalind')
-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
4 files changed, 28 insertions, 18 deletions
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"),
}
}