7
7
*/
8
8
use std;
9
9
import std:: vec;
10
- import std:: str;
11
10
import std:: uint;
12
11
import std:: int;
12
+ import std:: istr;
13
13
14
14
fn LINE_LENGTH ( ) -> uint { ret 60 u; }
15
15
@@ -43,26 +43,27 @@ fn select_random(r: u32, genelist: &[aminoacids]) -> char {
43
43
ret bisect( genelist, 0 u, vec:: len :: < aminoacids > ( genelist) - 1 u, r) ;
44
44
}
45
45
46
- fn make_random_fasta ( id : str , desc : str , genelist : & [ aminoacids ] , n : int ) {
47
- log ">" + id + " " + desc;
46
+ fn make_random_fasta ( id : & istr , desc : & istr ,
47
+ genelist : & [ aminoacids ] , n : int ) {
48
+ log ~">" + id + ~" " + desc;
48
49
let rng = myrandom(std::rand::mk_rng().next());
49
- let op: str = "" ;
50
+ let op: istr = ~ " ";
50
51
for each i: uint in uint:: range ( 0 u, n as uint ) {
51
- str :: push_byte ( op, select_random ( rng. next ( 100u32 ) , genelist) as u8 ) ;
52
- if str :: byte_len ( op) >= LINE_LENGTH ( ) { log op; op = "" ; }
52
+ istr :: push_byte ( op, select_random ( rng. next ( 100u32 ) , genelist) as u8 ) ;
53
+ if istr :: byte_len ( op) >= LINE_LENGTH ( ) { log op; op = ~ ""; }
53
54
}
54
- if str :: byte_len ( op) > 0 u { log op; }
55
+ if istr :: byte_len ( op) > 0 u { log op; }
55
56
}
56
57
57
- fn make_repeat_fasta ( id : str , desc : str , s : str , n : int ) {
58
- log ">" + id + " " + desc;
59
- let op: str = "" ;
60
- let sl: uint = str :: byte_len ( s) ;
58
+ fn make_repeat_fasta ( id : & istr , desc : & istr , s : & istr , n : int ) {
59
+ log ~ ">" + id + ~ " " + desc;
60
+ let op: istr = ~ " ";
61
+ let sl: uint = istr :: byte_len ( s) ;
61
62
for each i: uint in uint:: range ( 0 u, n as uint ) {
62
- str :: push_byte ( op, s[ i % sl] ) ;
63
- if str :: byte_len ( op) >= LINE_LENGTH ( ) { log op; op = "" ; }
63
+ istr :: push_byte ( op, s[ i % sl] ) ;
64
+ if istr :: byte_len ( op) >= LINE_LENGTH ( ) { log op; op = ~ ""; }
64
65
}
65
- if str :: byte_len ( op) > 0 u { log op; }
66
+ if istr :: byte_len ( op) > 0 u { log op; }
66
67
}
67
68
68
69
fn acid ( ch : char , prob : u32 ) -> aminoacids { ret { ch : ch, prob : prob} ; }
@@ -77,16 +78,17 @@ fn main(args: [str]) {
77
78
let homosapiens: [ aminoacids ] =
78
79
make_cumulative ( [ acid ( 'a' , 30u32 ) , acid ( 'c' , 20u32 ) , acid ( 'g' , 20u32 ) ,
79
80
acid ( 't' , 30u32 ) ] ) ;
80
- let alu: str =
81
- "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG" +
82
- "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA" +
83
- "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT" +
84
- "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA" +
85
- "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG" +
86
- "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC" +
87
- "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA" ;
81
+ let alu: istr =
82
+ ~ "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG " +
83
+ ~ "GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA " +
84
+ ~ "CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT " +
85
+ ~ "ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA " +
86
+ ~ "GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG " +
87
+ ~ "AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC " +
88
+ ~ "AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA ";
88
89
let n: int = 512 ;
89
- make_repeat_fasta ( "ONE" , "Homo sapiens alu" , alu, n * 2 ) ;
90
- make_random_fasta ( "TWO" , "IUB ambiguity codes" , iub, n * 3 ) ;
91
- make_random_fasta ( "THREE" , "Homo sapiens frequency" , homosapiens, n * 5 ) ;
90
+ make_repeat_fasta ( ~"ONE ", ~"Homo sapiens alu", alu, n * 2 ) ;
91
+ make_random_fasta ( ~"TWO ", ~"IUB ambiguity codes", iub, n * 3 ) ;
92
+ make_random_fasta ( ~"THREE ", ~"Homo sapiens frequency",
93
+ homosapiens, n * 5 ) ;
92
94
}
0 commit comments