]> gitweb.factorcode.org Git - factor.git/blob - extra/benchmark/reverse-complement/reverse-complement.factor
factor: trim using lists
[factor.git] / extra / benchmark / reverse-complement / reverse-complement.factor
1 ! Copyright (C) 2006, 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: ascii grouping hints io io.encodings.ascii io.files
4 io.files.temp kernel sequences strings tr vectors ;
5 IN: benchmark.reverse-complement
6
7 TR: trans-map ch>upper "ACGTUMRYKVHDB" "TGCAAKYRMBDHV" ;
8
9 : translate-seq ( seq -- str )
10     concat reverse! dup trans-map-fast ;
11
12 : show-seq ( seq -- )
13     translate-seq 60 group [ print ] each ;
14
15 : do-line ( seq line -- seq )
16     dup first ">;" member-eq?
17     [ over show-seq print dup delete-all ] [ suffix! ] if ;
18
19 HINTS: do-line vector string ;
20
21 : reverse-complement ( infile outfile -- )
22     ascii [
23         ascii [
24             500,000 <vector>
25             [ do-line ] each-line
26             show-seq
27         ] with-file-reader
28     ] with-file-writer ;
29
30 : reverse-complement-in ( -- path )
31     "reverse-complement-in.txt" temp-file ;
32
33 : reverse-complement-out ( -- path )
34     "reverse-complement-out.txt" temp-file ;
35
36 : reverse-complement-benchmark ( -- )
37     reverse-complement-in
38     reverse-complement-out
39     reverse-complement ;
40
41 MAIN: reverse-complement-benchmark