2008-12-15 02:13:35 -05:00
|
|
|
! Copyright (C) 2006, 2008 Slava Pestov.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
|
|
USING: io io.files io.files.temp io.streams.duplex kernel
|
|
|
|
sequences sequences.private strings vectors words memoize
|
|
|
|
splitting grouping hints tr continuations io.encodings.ascii
|
2009-01-08 20:07:46 -05:00
|
|
|
ascii ;
|
2007-09-20 18:09:08 -04:00
|
|
|
IN: benchmark.reverse-complement
|
|
|
|
|
2008-07-09 20:25:24 -04:00
|
|
|
TR: trans-map ch>upper "ACGTUMRYKVHDB" "TGCAAKYRMBDHV" ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: translate-seq ( seq -- str )
|
2009-10-28 15:40:15 -04:00
|
|
|
concat reverse! dup trans-map-fast ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: show-seq ( seq -- )
|
2013-03-23 16:04:03 -04:00
|
|
|
translate-seq 60 group [ print ] each ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: do-line ( seq line -- seq )
|
2009-10-28 16:02:00 -04:00
|
|
|
dup first ">;" member-eq?
|
2014-11-30 11:38:59 -05:00
|
|
|
[ over show-seq print dup delete-all ] [ suffix! ] if ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2007-12-08 17:47:39 -05:00
|
|
|
HINTS: do-line vector string ;
|
|
|
|
|
2007-09-20 18:09:08 -04:00
|
|
|
: reverse-complement ( infile outfile -- )
|
2008-05-05 03:19:25 -04:00
|
|
|
ascii [
|
|
|
|
ascii [
|
2013-04-07 18:19:58 -04:00
|
|
|
500,000 <vector>
|
|
|
|
[ do-line ] each-line
|
|
|
|
show-seq
|
2008-05-05 03:19:25 -04:00
|
|
|
] with-file-reader
|
|
|
|
] with-file-writer ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-06-09 03:14:14 -04:00
|
|
|
: reverse-complement-in ( -- path )
|
2008-02-21 23:14:08 -05:00
|
|
|
"reverse-complement-in.txt" temp-file ;
|
2008-02-12 16:51:34 -05:00
|
|
|
|
2008-06-09 03:14:14 -04:00
|
|
|
: reverse-complement-out ( -- path )
|
2008-02-21 23:14:08 -05:00
|
|
|
"reverse-complement-out.txt" temp-file ;
|
2008-02-12 16:51:34 -05:00
|
|
|
|
2012-07-19 20:35:47 -04:00
|
|
|
: reverse-complement-benchmark ( -- )
|
2008-02-12 16:51:34 -05:00
|
|
|
reverse-complement-in
|
|
|
|
reverse-complement-out
|
2007-09-20 18:09:08 -04:00
|
|
|
reverse-complement ;
|
|
|
|
|
2012-07-19 20:35:47 -04:00
|
|
|
MAIN: reverse-complement-benchmark
|