Functions to read and write formats representing sequences such as FASTA and TwoBit. | (ns cljam.io.sequence
(:refer-clojure :exclude [indexed?])
(:require [cljam.io.fasta.core :as fa-core]
[cljam.io.fasta.writer :as fa-writer]
[cljam.io.protocols :as protocols]
[cljam.io.twobit.reader :as tb-reader]
[cljam.io.twobit.writer :as tb-writer]
[cljam.io.util :as io-util])
(:import java.io.Closeable
cljam.io.fasta.reader.FASTAReader
cljam.io.fasta.writer.FASTAWriter
cljam.io.twobit.reader.TwoBitReader
cljam.io.twobit.writer.TwoBitWriter)) |
Reading | |
Returns an open cljam.io.fasta.reader.FASTAReader of f. Should be used inside with-open to ensure the reader is properly closed. | (defn fasta-reader ^FASTAReader [f] (fa-core/reader f)) |
Returns an open cljam.io.twobit.reader.TwoBitReader of f. Should be used inside with-open to ensure the reader is properly closed. | (defn twobit-reader ^TwoBitReader [f] (tb-reader/reader f)) |
Selects suitable reader from f's extension, returning the open reader. Opens a new reader if the arg represents a file such as String path, java.io.File, or java.net.URL. If a reader is given, clones the reader. This function supports FASTA and TwoBit formats. | (defn reader
^Closeable
[f]
(cond
(io-util/fasta-reader? f) (fa-core/clone-reader f)
(io-util/twobit-reader? f) (tb-reader/clone-reader f)
:else (case (try
(io-util/file-type f)
(catch IllegalArgumentException _
(io-util/file-type-from-contents f)))
:fasta (fasta-reader f)
:2bit (twobit-reader f)
(throw (IllegalArgumentException. "Invalid file type"))))) |
Reads sequence in region of FASTA/TwoBit file. | (defn read-sequence ([rdr region] (protocols/read-sequence rdr region)) ([rdr region option] (protocols/read-sequence rdr region option))) |
Reads all sequences of FASTA/TwoBit file. | (defn read-all-sequences ([rdr] (protocols/read-all-sequences rdr)) ([rdr option] (protocols/read-all-sequences rdr option))) |
Returns summaries of sequences in FASTA/TwoBit file. Returns a vector of maps
containing | (defn read-seq-summaries [rdr] (protocols/read-seq-summaries rdr)) |
Reads metadata of indexed sequences. Returns a vector of maps containing
| (defn read-indices [rdr] (protocols/read-indices rdr)) |
Returns true if the reader can be randomly accessed, false if not. Note this function immediately realizes a delayed index. | (defn indexed? [rdr] (protocols/indexed? rdr)) |
Writing | |
Returns an open cljam.io.fasta.writer.FASTAWriter of f with options: :cols - Maximum number of characters written in one row. :create-index? - If true, .fai will be created simultaneously. Should be used inside with-open to ensure the writer is properly closed. | (defn fasta-writer
(^FASTAWriter [f]
(fasta-writer f {}))
(^FASTAWriter [f options]
(fa-writer/writer f options))) |
Returns an open cljam.io.twobit.writer.TwoBitWriter of f with options: :index - metadata of indexed sequences. The amount of memory usage can be reduced if index is supplied. Should be used inside with-open to ensure the writer is properly closed. | (defn twobit-writer
(^TwoBitWriter [f]
(twobit-writer f {}))
(^TwoBitWriter [f options]
(tb-writer/writer f options))) |
Selects suitable writer from f's extension, returning the open writer. This function supports FASTA and TwoBit format. | (defn writer
^Closeable
[f & options]
(case (io-util/file-type f)
:fasta (apply fasta-writer f options)
:2bit (apply twobit-writer f options)
(throw (IllegalArgumentException. "Invalid file type")))) |
Writes all sequences to FASTA/TwoBit file. | (defn write-sequences [wtr seqs] (protocols/write-sequences wtr seqs)) |