factor/extra/benchmark/reverse-complement/reverse-complement.factor

43 lines
1.1 KiB
Factor
Raw Normal View History

2007-09-20 18:09:08 -04:00
USING: io io.files io.streams.duplex kernel sequences
sequences.private strings vectors words memoize splitting
grouping hints tr continuations io.encodings.ascii
unicode.case ;
2007-09-20 18:09:08 -04:00
IN: benchmark.reverse-complement
TR: trans-map ch>upper "ACGTUMRYKVHDB" "TGCAAKYRMBDHV" ;
2007-09-20 18:09:08 -04:00
: translate-seq ( seq -- str )
concat dup reverse-here dup trans-map-fast ;
2007-09-20 18:09:08 -04:00
: show-seq ( seq -- )
translate-seq 60 <groups> [ print ] each ;
: do-line ( seq line -- seq )
dup first ">;" memq?
[ over show-seq print dup delete-all ] [ over push ] if ;
2007-09-20 18:09:08 -04:00
HINTS: do-line vector string ;
2007-09-20 18:09:08 -04:00
: (reverse-complement) ( seq -- )
readln [ do-line (reverse-complement) ] [ show-seq ] if* ;
: reverse-complement ( infile outfile -- )
ascii [
ascii [
500000 <vector> (reverse-complement)
] with-file-reader
] with-file-writer ;
2007-09-20 18:09:08 -04:00
: reverse-complement-in ( -- path )
"reverse-complement-in.txt" temp-file ;
2008-02-12 16:51:34 -05:00
: reverse-complement-out ( -- path )
"reverse-complement-out.txt" temp-file ;
2008-02-12 16:51:34 -05:00
2007-09-20 18:09:08 -04:00
: reverse-complement-main ( -- )
2008-02-12 16:51:34 -05:00
reverse-complement-in
reverse-complement-out
2007-09-20 18:09:08 -04:00
reverse-complement ;
MAIN: reverse-complement-main