Functions to read and write the SAM (Sequence Alignment/Map) format and BAM (its binary equivalent). See https://samtools.github.io/hts-specs/ for the detail SAM/BAM specifications. | (ns cljam.io.sam
(:refer-clojure :exclude [indexed?])
(:require [cljam.io.sam.reader :as sam-reader]
[cljam.io.sam.writer :as sam-writer]
[cljam.io.bam.core :as bam-core]
[cljam.io.protocols :as protocols]
[cljam.io.util :as io-util])
(:import java.io.Closeable
cljam.io.sam.reader.SAMReader
cljam.io.sam.writer.SAMWriter
cljam.io.bam.reader.BAMReader
cljam.io.bam.writer.BAMWriter)) |
Reading | |
Returns an open cljam.io.sam.reader.SAMReader of f. Should be used inside with-open to ensure the reader is properly closed. | (defn sam-reader ^SAMReader [f] (sam-reader/reader f)) |
Returns an open cljam.io.bam.reader.BAMReader of f. Should be used inside with-open to ensure the reader is properly closed. | (defn bam-reader ^BAMReader [f] (bam-core/reader f)) |
Clones bam reader sharing persistent objects. | (defn clone-bam-reader ^BAMReader [r] (bam-core/clone-reader r)) |
Selects suitable reader from f's extension, returning the 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 SAM and BAM formats. | (defn reader
^Closeable
[f]
(if (io-util/bam-reader? f)
(clone-bam-reader f)
(case (try
(io-util/file-type f)
(catch IllegalArgumentException _
(io-util/file-type-from-contents f)))
:sam (sam-reader f)
:bam (bam-reader f)
(throw (IllegalArgumentException. "Invalid source type"))))) |
Returns header of the SAM/BAM file. | (defn read-header [rdr] (protocols/read-header rdr)) |
Returns references of the SAM/BAM file. | (defn read-refs [rdr] (protocols/read-refs rdr)) |
Reads alignments of the SAM/BAM file, returning the alignments as an eduction. | (defn read-alignments ([rdr] (protocols/read-alignments rdr)) ([rdr region] (protocols/read-alignments rdr region))) |
Reads alignment blocks of the SAM/BAM file, returning the blocks as an eduction. | (defn read-blocks ([rdr] (protocols/read-blocks rdr)) ([rdr region] (protocols/read-blocks rdr region)) ([rdr region option] (protocols/read-blocks rdr region option))) |
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.sam.writer.SAMWriter of f. Should be used inside with-open to ensure the writer is properly closed. | (defn sam-writer ^SAMWriter [f] (sam-writer/writer f)) |
Returns an open cljam.io.bam.writer.BAMWriter of f. Should be used inside with-open to ensure the writer is properly closed. | (defn bam-writer (^BAMWriter [f] (bam-writer f false)) (^BAMWriter [f create-index?] (bam-core/writer f create-index?))) |
Selects suitable writer from f's extension, returning the writer. This function supports SAM and BAM format. | (defn writer
(^Closeable [f]
(writer f false))
(^Closeable [f create-index?]
(case (io-util/file-type f)
:sam (if create-index?
(throw (ex-info "SAM file indexing is not implemented." {}))
(sam-writer f))
:bam (bam-writer f create-index?)
(throw (IllegalArgumentException. "Invalid file type"))))) |
Writes header to the SAM/BAM file. | (defn write-header [wtr header] (protocols/write-header wtr header)) |
Writes references to the SAM/BAM file. | (defn write-refs [wtr header] (protocols/write-refs wtr header)) |
Writes alignments to the SAM/BAM file. | (defn write-alignments [wtr alignments header] (protocols/write-alignments wtr alignments header)) |
Writes alignment blocks of the SAM/BAM file. | (defn write-blocks [wtr blocks] (protocols/write-blocks wtr blocks)) |