Skip to content

Instantly share code, notes, and snippets.

@lispm
Created January 21, 2017 13:26
Show Gist options
  • Save lispm/d1850eeaeff61d371cd1754e01a798ab to your computer and use it in GitHub Desktop.
Save lispm/d1850eeaeff61d371cd1754e01a798ab to your computer and use it in GitHub Desktop.
; Lispworks
(defun fastq-reader (fname)
(let ((in (open fname)))
#'(lambda ()
(prog2 ; <-- prog1 and prog2 are nifty!
(read-line in nil)
(read-line in nil) ; <-- this is the sequence line
(read-line in nil)
(read-line in nil)))))
(defparameter gen (fastq-reader "../../DATA/sm_r1.fq"))
(loop for seq = (funcall gen) ; <-- Note this
while seq do (format t "~A~%" seq))
(defun kmer-gen (seq &key (kmer-size 30) (discard-N? nil))
(let ((n 0) (n-max (- (length seq) kmer-size)))
#'(lambda ()
(prog1
(if (< n n-max)
(subseq seq n (+ n kmer-size))
nil)
(incf n)))))
(defparameter gen (fastq-reader "../../DATA/sm_r1.fq"))
(loop for seq = (funcall gen)
while seq do
(let ((g (kmer-gen seq :kmer-size 10)))
(loop for s = (funcall g)
while s do (format t "~A~%" s))))
; GNU Emacs / SLIME
(defun fastq-reader (fname)
(let ((in (open fname)))
#'(lambda ()
(prog2 ; <-- prog1 and prog2 are nifty!
(read-line in nil)
(read-line in nil) ; <-- this is the sequence line
(read-line in nil)
(read-line in nil)))))
(defparameter gen (fastq-reader "../../DATA/sm_r1.fq"))
(loop for seq = (funcall gen) ; <-- Note this
while seq do (format t "~A~%" seq))
(defun kmer-gen (seq &key (kmer-size 30) (discard-N? nil))
(let ((n 0) (n-max (- (length seq) kmer-size)))
#'(lambda ()
(prog1
(if (< n n-max)
(subseq seq n (+ n kmer-size))
nil)
(incf n)))))
(defparameter gen (fastq-reader "../../DATA/sm_r1.fq"))
(loop for seq = (funcall gen)
while seq do
(let ((g (kmer-gen seq :kmer-size 10)))
(loop for s = (funcall g)
while s do (format t "~A~%" s))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment