1 USING: io io.files io.streams.duplex kernel sequences
2 sequences.private strings vectors words memoize splitting
3 grouping hints tr continuations io.encodings.ascii
5 IN: benchmark.reverse-complement
7 TR: trans-map ch>upper "ACGTUMRYKVHDB" "TGCAAKYRMBDHV" ;
9 : translate-seq ( seq -- str )
10 concat dup reverse-here dup trans-map-fast ;
13 translate-seq 60 <groups> [ print ] each ;
15 : do-line ( seq line -- seq )
17 [ over show-seq print dup delete-all ] [ over push ] if ;
19 HINTS: do-line vector string ;
21 : (reverse-complement) ( seq -- )
22 readln [ do-line (reverse-complement) ] [ show-seq ] if* ;
24 : reverse-complement ( infile outfile -- )
27 500000 <vector> (reverse-complement)
31 : reverse-complement-in ( -- path )
32 "reverse-complement-in.txt" temp-file ;
34 : reverse-complement-out ( -- path )
35 "reverse-complement-out.txt" temp-file ;
37 : reverse-complement-main ( -- )
39 reverse-complement-out
42 MAIN: reverse-complement-main