Documentation ¶
Index ¶
- Constants
- Variables
- func Complement(code uint64, k int) (c uint64)
- func Decode(code uint64, k int) []byte
- func Encode(kmer []byte) (code uint64, err error)
- func EncodeFromFormerKmer(kmer []byte, leftKmer []byte, leftCode uint64) (uint64, error)
- func EncodeFromLatterKmer(kmer []byte, rightKmer []byte, rightCode uint64) (uint64, error)
- func MustEncodeFromFormerKmer(kmer []byte, leftKmer []byte, leftCode uint64) (uint64, error)
- func MustEncodeFromLatterKmer(kmer []byte, rightKmer []byte, rightCode uint64) (uint64, error)
- func PutUint64s(buf []byte, v1, v2 uint64) (ctrl byte, n int)
- func RevComp(code uint64, k int) (c uint64)
- func Reverse(code uint64, k int) (c uint64)
- func Uint64s(ctrl byte, buf []byte) (values [2]uint64, n int)
- type CodeSlice
- type Header
- type KmerCode
- type KmerCodeSlice
- type Reader
- type Writer
Constants ¶
const ( // UNIK_COMPACT means Kmers are serialized in fix-length (n = int((K + 3) / 4) ) of byte array. UNIK_COMPACT = 1 << iota // UNIK_CANONICAL means only canonical Kmers kept. UNIK_CANONICAL // UNIK_SORTED means Kmers are sorted UNIK_SORTED // when sorted, the serialization structure is very different )
const MainVersion uint8 = 2
MainVersion is the main version number.
const MinorVersion uint8 = 0
MinorVersion is the minor version number.
Variables ¶
var ErrBrokenFile = errors.New("unikmer: broken file")
ErrBrokenFile means the file is not complete.
var ErrCodeOverflow = errors.New("unikmer: code value overflow")
ErrCodeOverflow means the encode interger is bigger than 4^k
var ErrIllegalBase = errors.New("unikmer: illegal base")
ErrIllegalBase means that base beyond IUPAC symbols are detected.
var ErrInvalidFileFormat = errors.New("unikmer: invalid binary format")
ErrInvalidFileFormat means invalid file format.
var ErrKMismatch = errors.New("unikmer: K mismatch")
ErrKMismatch means K size mismatch.
var ErrKOverflow = errors.New("unikmer: K-mer size (1-32) overflow")
ErrKOverflow means K > 32.
var ErrNotConsecutiveKmers = errors.New("unikmer: not consecutive k-mers")
ErrNotConsecutiveKmers means the two k-mers are not consecutive
var Magic = [8]byte{'.', 'u', 'n', 'i', 'k', 'm', 'e', 'r'}
Magic number of binary file.
var MaxCode []uint64
MaxCode is the maxinum interger for all Ks.
Functions ¶
func Complement ¶
Complement returns code of complement sequence.
func Encode ¶
Encode converts byte slice to bits.
Codes:
A 00 C 01 G 10 T 11
For degenerate bases, only the first base is kept.
M AC A V ACG A H ACT A R AG A D AGT A W AT A S CG C B CGT C Y CT C K GT G N ACGT A
func EncodeFromFormerKmer ¶ added in v0.2.1
EncodeFromFormerKmer encodes from the former k-mer, inspired by ntHash
func EncodeFromLatterKmer ¶ added in v0.2.1
EncodeFromLatterKmer encodes from the former k-mer.
func MustEncodeFromFormerKmer ¶ added in v0.2.1
MustEncodeFromFormerKmer encodes from former the k-mer, assuming the k-mer and leftKmer are both OK.
func MustEncodeFromLatterKmer ¶ added in v0.2.1
MustEncodeFromLatterKmer encodes from the latter k-mer, assuming the k-mer and rightKmer are both OK.
func PutUint64s ¶ added in v0.4.0
PutUint64s endcodes two uint64s into 2-16 bytes, and returns control byte and encoded byte length.
Types ¶
type CodeSlice ¶ added in v0.4.0
type CodeSlice []uint64
CodeSlice is a slice of Kmer code (uint64), for sorting
type Header ¶
type Header struct { MainVersion uint8 MinorVersion uint8 K int Flag uint32 Number int64 // -1 for unknown }
Header contains metadata
type KmerCode ¶
KmerCode is a struct representing a k-mer in 64-bits.
func NewKmerCode ¶
NewKmerCode returns a new KmerCode struct from byte slice.
func NewKmerCodeFromFormerOne ¶ added in v0.2.1
NewKmerCodeFromFormerOne computes KmerCode from the Former consecutive k-mer.
func NewKmerCodeMustFromFormerOne ¶ added in v0.2.1
func NewKmerCodeMustFromFormerOne(kmer []byte, leftKmer []byte, preKcode KmerCode) (KmerCode, error)
NewKmerCodeMustFromFormerOne computes KmerCode from the Former consecutive k-mer, assuming the k-mer and leftKmer are both OK.
type KmerCodeSlice ¶ added in v0.4.0
type KmerCodeSlice []KmerCode
KmerCodeSlice is a slice of KmerCode, for sorting
func (KmerCodeSlice) Len ¶ added in v0.4.0
func (codes KmerCodeSlice) Len() int
Len return length of the slice
func (KmerCodeSlice) Less ¶ added in v0.4.0
func (codes KmerCodeSlice) Less(i, j int) bool
Less simply compare two KmerCode
func (KmerCodeSlice) Swap ¶ added in v0.4.0
func (codes KmerCodeSlice) Swap(i, j int)
Swap swaps two elements
type Reader ¶
type Reader struct { Header // contains filtered or unexported fields }
Reader is for reading KmerCode.