]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/benchmark/reverse-complement/reverse-complement.factor
factor: trim using lists
[factor.git] / extra / benchmark / reverse-complement / reverse-complement.factor
old mode 100755 (executable)
new mode 100644 (file)
index 4147ffa..6b1e5bd
@@ -1,32 +1,29 @@
 ! 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
-ascii ;
+USING: ascii grouping hints io io.encodings.ascii io.files
+io.files.temp kernel sequences strings tr vectors ;
 IN: benchmark.reverse-complement
 
 TR: trans-map ch>upper "ACGTUMRYKVHDB" "TGCAAKYRMBDHV" ;
 
 : translate-seq ( seq -- str )
-    concat dup reverse-here dup trans-map-fast ;
+    concat reverse! dup trans-map-fast ;
 
 : show-seq ( seq -- )
-    translate-seq 60 <groups> [ print ] each ;
+    translate-seq 60 group [ print ] each ;
 
 : do-line ( seq line -- seq )
-    dup first ">;" memq?
-    [ over show-seq print dup delete-all ] [ over push ] if ;
+    dup first ">;" member-eq?
+    [ over show-seq print dup delete-all ] [ suffix! ] if ;
 
 HINTS: do-line vector string ;
 
-: (reverse-complement) ( seq -- )
-    readln [ do-line (reverse-complement) ] [ show-seq ] if* ;
-
 : reverse-complement ( infile outfile -- )
     ascii [
         ascii [
-            500000 <vector> (reverse-complement)
+            500,000 <vector>
+            [ do-line ] each-line
+            show-seq
         ] with-file-reader
     ] with-file-writer ;
 
@@ -36,9 +33,9 @@ HINTS: do-line vector string ;
 : reverse-complement-out ( -- path )
     "reverse-complement-out.txt" temp-file ;
 
-: reverse-complement-main ( -- )
+: reverse-complement-benchmark ( -- )
     reverse-complement-in
     reverse-complement-out
     reverse-complement ;
 
-MAIN: reverse-complement-main
+MAIN: reverse-complement-benchmark