| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | USING: io io.files io.streams.duplex kernel sequences | 
					
						
							|  |  |  | sequences.private strings vectors words memoize splitting | 
					
						
							| 
									
										
										
										
											2008-07-09 20:25:24 -04:00
										 |  |  | grouping hints tr continuations io.encodings.ascii | 
					
						
							|  |  |  | unicode.case ;
 | 
					
						
							| 
									
										
										
										
											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 )
 | 
					
						
							| 
									
										
										
										
											2008-07-09 20:25:24 -04:00
										 |  |  |     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 )
 | 
					
						
							| 
									
										
										
										
											2008-07-09 20:25:24 -04:00
										 |  |  |     dup first ">;" memq? | 
					
						
							|  |  |  |     [ over show-seq print dup delete-all ] [ over push ] 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) ( seq -- )
 | 
					
						
							|  |  |  |     readln [ do-line (reverse-complement) ] [ show-seq ] if* ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : reverse-complement ( infile outfile -- )
 | 
					
						
							| 
									
										
										
										
											2008-05-05 03:19:25 -04:00
										 |  |  |     ascii [ | 
					
						
							|  |  |  |         ascii [ | 
					
						
							|  |  |  |             500000 <vector> (reverse-complement) | 
					
						
							|  |  |  |         ] 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
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 |