stumpwm/bioinf.lisp @ 16331fb57509
default tip
More
author |
Steve Losh <steve@stevelosh.com> |
date |
Wed, 05 Feb 2025 11:30:40 -0500 |
parents |
46c8ae0df6cc |
children |
(none) |
(in-package :stumpwm-user)
(defun random-base ()
(random-elt "GCAT"))
(defun random-dna-string (n)
(let ((result (make-string n)))
(dotimes (i n)
(setf (char result i) (random-base)))
result))
(defcommand random-dna (n) ((:integer "Length: "))
(pbcopy (random-dna-string n)))
(defun random-fasta-string (entries entry-length)
(str:join #\newline
(loop :for i :from 0 :below entries
:collect (format nil ">seq ~D" i)
:collect (random-dna-string entry-length))))
(defcommand random-fasta
(entries entry-length)
((:integer "Entries: ")
(:integer "Entry Length: "))
(check-type entries (integer 1 *))
(check-type entry-length (integer 1 *))
(pbcopy (random-fasta-string entries entry-length)))
(defun kmers-of (k seq)
(loop :for start :from 0
:for end :from k :to (length seq)
:collect (subseq seq start end)))
(defun kmerized-string (k seq)
(with-output-to-string (s)
(loop :for i :from 0
:for kmer :in (kmers-of k seq)
:do (format s "~,,V,@A~%" i kmer))))
(defcommand kmerize (k) ((:integer "k: "))
(pbcopy (kmerized-string k (pbpaste))))
#; Scratch --------------------------------------------------------------------
(random-fasta-string 10 100)
(format nil "~,,99,@A" "hello")
(kmers-of 3 "ACTTAC")