biohazard-1.0.3: bioinformatics support library

Safe HaskellNone
LanguageHaskell2010

Bio.Bam.Rec

Description

Parsers and Printers for BAM and SAM. We employ an Iteratee interface, and we strive to support everything possible in BAM. So far, the implementation of the nucleotides is somewhat lacking: we do not have support for ambiguity codes, and the "=" symbol is not understood.

Synopsis

Documentation

data BamRaw Source #

Bam record in its native encoding along with virtual address.

Instances
IsBamRec BamRaw Source # 
Instance details

bamRaw :: FileOffset -> Bytes -> BamRaw Source #

Smart constructor. Makes sure we got a at least a full record.

data BamRec Source #

internal representation of a BAM record

Constructors

BamRec 

Fields

Instances
Show BamRec Source # 
Instance details
IsBamRec BamRec Source # 
Instance details

data Cigar Source #

Cigar line in BAM coding Bam encodes an operation and a length into a single integer, we keep those integers in an array.

Constructors

!CigOp :* !Int infix 9 
Instances
Eq Cigar Source # 
Instance details

Methods

(==) :: Cigar -> Cigar -> Bool #

(/=) :: Cigar -> Cigar -> Bool #

Ord Cigar Source # 
Instance details

Methods

compare :: Cigar -> Cigar -> Ordering #

(<) :: Cigar -> Cigar -> Bool #

(<=) :: Cigar -> Cigar -> Bool #

(>) :: Cigar -> Cigar -> Bool #

(>=) :: Cigar -> Cigar -> Bool #

max :: Cigar -> Cigar -> Cigar #

min :: Cigar -> Cigar -> Cigar #

Show Cigar Source # 
Instance details

Methods

showsPrec :: Int -> Cigar -> ShowS #

show :: Cigar -> String #

showList :: [Cigar] -> ShowS #

Storable Cigar Source # 
Instance details

Methods

sizeOf :: Cigar -> Int #

alignment :: Cigar -> Int #

peekElemOff :: Ptr Cigar -> Int -> IO Cigar #

pokeElemOff :: Ptr Cigar -> Int -> Cigar -> IO () #

peekByteOff :: Ptr b -> Int -> IO Cigar #

pokeByteOff :: Ptr b -> Int -> Cigar -> IO () #

peek :: Ptr Cigar -> IO Cigar #

poke :: Ptr Cigar -> Cigar -> IO () #

data CigOp Source #

Constructors

Mat 
Ins 
Del 
Nop 
SMa 
HMa 
Pad 
Instances
Bounded CigOp Source # 
Instance details
Enum CigOp Source # 
Instance details
Eq CigOp Source # 
Instance details

Methods

(==) :: CigOp -> CigOp -> Bool #

(/=) :: CigOp -> CigOp -> Bool #

Ord CigOp Source # 
Instance details

Methods

compare :: CigOp -> CigOp -> Ordering #

(<) :: CigOp -> CigOp -> Bool #

(<=) :: CigOp -> CigOp -> Bool #

(>) :: CigOp -> CigOp -> Bool #

(>=) :: CigOp -> CigOp -> Bool #

max :: CigOp -> CigOp -> CigOp #

min :: CigOp -> CigOp -> CigOp #

Show CigOp Source # 
Instance details

Methods

showsPrec :: Int -> CigOp -> ShowS #

show :: CigOp -> String #

showList :: [CigOp] -> ShowS #

Ix CigOp Source # 
Instance details

alignedLength :: Vector v Cigar => v Cigar -> Int Source #

Extracts the aligned length from a cigar line. This gives the length of an alignment as measured on the reference, which is different from the length on the query or the length of the alignment.

newtype Nucleotides Source #

A nucleotide base in an alignment. Experience says we're dealing with Ns and gaps all the type, so purity be damned, they are included as if they were real bases.

To allow Nucleotidess to be unpacked and incorporated into containers, we choose to represent them the same way as the BAM file format: as a 4 bit wide field. Gaps are encoded as 0 where they make sense, N is 15. The contained Word8 is guaranteed to be 0..15.

Constructors

Ns 

Fields

Instances
Bounded Nucleotides Source # 
Instance details
Enum Nucleotides Source # 
Instance details
Eq Nucleotides Source # 
Instance details
Ord Nucleotides Source # 
Instance details
Read Nucleotides Source # 
Instance details
Show Nucleotides Source # 
Instance details
Ix Nucleotides Source # 
Instance details
Storable Nucleotides Source # 
Instance details
Unbox Nucleotides Source # 
Instance details
Vector Vector Nucleotides Source # 
Instance details

Methods

basicUnsafeFreeze :: PrimMonad m => Mutable Vector (PrimState m) Nucleotides -> m (Vector Nucleotides)

basicUnsafeThaw :: PrimMonad m => Vector Nucleotides -> m (Mutable Vector (PrimState m) Nucleotides)

basicLength :: Vector Nucleotides -> Int

basicUnsafeSlice :: Int -> Int -> Vector Nucleotides -> Vector Nucleotides

basicUnsafeIndexM :: Monad m => Vector Nucleotides -> Int -> m Nucleotides

basicUnsafeCopy :: PrimMonad m => Mutable Vector (PrimState m) Nucleotides -> Vector Nucleotides -> m ()

elemseq :: Vector Nucleotides -> Nucleotides -> b -> b

Vector Vector_Nucs_half Nucleotides 
Instance details
MVector MVector Nucleotides Source # 
Instance details

Methods

basicLength :: MVector s Nucleotides -> Int

basicUnsafeSlice :: Int -> Int -> MVector s Nucleotides -> MVector s Nucleotides

basicOverlaps :: MVector s Nucleotides -> MVector s Nucleotides -> Bool

basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Nucleotides)

basicInitialize :: PrimMonad m => MVector (PrimState m) Nucleotides -> m ()

basicUnsafeReplicate :: PrimMonad m => Int -> Nucleotides -> m (MVector (PrimState m) Nucleotides)

basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Nucleotides -> Int -> m Nucleotides

basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Nucleotides -> Int -> Nucleotides -> m ()

basicClear :: PrimMonad m => MVector (PrimState m) Nucleotides -> m ()

basicSet :: PrimMonad m => MVector (PrimState m) Nucleotides -> Nucleotides -> m ()

basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Nucleotides -> MVector (PrimState m) Nucleotides -> m ()

basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Nucleotides -> MVector (PrimState m) Nucleotides -> m ()

basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Nucleotides -> Int -> m (MVector (PrimState m) Nucleotides)

Show (Vector_Nucs_half Nucleotides) # 
Instance details
data Vector Nucleotides Source # 
Instance details
data Vector Nucleotides = V_Nucleotides (Vector Word8)
data MVector s Nucleotides Source # 
Instance details
data MVector s Nucleotides = MV_Nucleotides (MVector s Word8)

type Extensions = [(BamKey, Ext)] Source #

A collection of extension fields. A BamKey is actually two ASCII characters.

data Ext Source #

Constructors

Int Int 
Float Float 
Text Bytes 
Bin Bytes 
Char Word8 
IntArr (Vector Int) 
FloatArr (Vector Float) 
Instances
Eq Ext Source # 
Instance details

Methods

(==) :: Ext -> Ext -> Bool #

(/=) :: Ext -> Ext -> Bool #

Ord Ext Source # 
Instance details

Methods

compare :: Ext -> Ext -> Ordering #

(<) :: Ext -> Ext -> Bool #

(<=) :: Ext -> Ext -> Bool #

(>) :: Ext -> Ext -> Bool #

(>=) :: Ext -> Ext -> Bool #

max :: Ext -> Ext -> Ext #

min :: Ext -> Ext -> Ext #

Show Ext Source # 
Instance details

Methods

showsPrec :: Int -> Ext -> ShowS #

show :: Ext -> String #

showList :: [Ext] -> ShowS #

deleteE :: BamKey -> Extensions -> Extensions Source #

Deletes all occurences of some extension field.

insertE :: BamKey -> Ext -> Extensions -> Extensions Source #

Blindly inserts an extension field. This can create duplicates (and there is no telling how other tools react to that).

updateE :: BamKey -> Ext -> Extensions -> Extensions Source #

Deletes all occurences of an extension field, then inserts it with a new value. This is safer than insertE, but also more expensive.

adjustE :: (Ext -> Ext) -> BamKey -> Extensions -> Extensions Source #

Adjusts a named extension by applying a function.

progressBam :: MonadIO m => String -> Refs -> Int -> (String -> IO ()) -> Enumeratee [BamRaw] [BamRaw] m a Source #

A simple progress indicator that prints sequence id and position.

data Word32 #

32-bit unsigned integer type

Instances
Bounded Word32

Since: 2.1

Instance details
Enum Word32

Since: 2.1

Instance details
Eq Word32

Since: 2.1

Instance details

Methods

(==) :: Word32 -> Word32 -> Bool #

(/=) :: Word32 -> Word32 -> Bool #

Integral Word32

Since: 2.1

Instance details
Data Word32

Since: 4.0.0.0

Instance details

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Word32 -> c Word32 #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Word32 #

toConstr :: Word32 -> Constr #

dataTypeOf :: Word32 -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Word32) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Word32) #

gmapT :: (forall b. Data b => b -> b) -> Word32 -> Word32 #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Word32 -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Word32 -> r #

gmapQ :: (forall d. Data d => d -> u) -> Word32 -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Word32 -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Word32 -> m Word32 #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Word32 -> m Word32 #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Word32 -> m Word32 #

Num Word32

Since: 2.1

Instance details
Ord Word32

Since: 2.1

Instance details
Read Word32

Since: 2.1

Instance details
Real Word32

Since: 2.1

Instance details
Show Word32

Since: 2.1

Instance details
Ix Word32

Since: 2.1

Instance details
Lift Word32 
Instance details

Methods

lift :: Word32 -> Q Exp #

PrintfArg Word32

Since: 2.1

Instance details
Storable Word32

Since: 2.1

Instance details
Bits Word32

Since: 2.1

Instance details
FiniteBits Word32

Since: 4.6.0.0

Instance details
Unbox Word32 
Instance details
Prim Word32 
Instance details
Hashable Word32 
Instance details

Methods

hashWithSalt :: Int -> Word32 -> Int #

hash :: Word32 -> Int #

Vector Vector Word32 
Instance details

Methods

basicUnsafeFreeze :: PrimMonad m => Mutable Vector (PrimState m) Word32 -> m (Vector Word32)

basicUnsafeThaw :: PrimMonad m => Vector Word32 -> m (Mutable Vector (PrimState m) Word32)

basicLength :: Vector Word32 -> Int

basicUnsafeSlice :: Int -> Int -> Vector Word32 -> Vector Word32

basicUnsafeIndexM :: Monad m => Vector Word32 -> Int -> m Word32

basicUnsafeCopy :: PrimMonad m => Mutable Vector (PrimState m) Word32 -> Vector Word32 -> m ()

elemseq :: Vector Word32 -> Word32 -> b -> b

MVector MVector Word32 
Instance details

Methods

basicLength :: MVector s Word32 -> Int

basicUnsafeSlice :: Int -> Int -> MVector s Word32 -> MVector s Word32

basicOverlaps :: MVector s Word32 -> MVector s Word32 -> Bool

basicUnsafeNew :: PrimMonad m => Int -> m (MVector (PrimState m) Word32)

basicInitialize :: PrimMonad m => MVector (PrimState m) Word32 -> m ()

basicUnsafeReplicate :: PrimMonad m => Int -> Word32 -> m (MVector (PrimState m) Word32)

basicUnsafeRead :: PrimMonad m => MVector (PrimState m) Word32 -> Int -> m Word32

basicUnsafeWrite :: PrimMonad m => MVector (PrimState m) Word32 -> Int -> Word32 -> m ()

basicClear :: PrimMonad m => MVector (PrimState m) Word32 -> m ()

basicSet :: PrimMonad m => MVector (PrimState m) Word32 -> Word32 -> m ()

basicUnsafeCopy :: PrimMonad m => MVector (PrimState m) Word32 -> MVector (PrimState m) Word32 -> m ()

basicUnsafeMove :: PrimMonad m => MVector (PrimState m) Word32 -> MVector (PrimState m) Word32 -> m ()

basicUnsafeGrow :: PrimMonad m => MVector (PrimState m) Word32 -> Int -> m (MVector (PrimState m) Word32)

data Vector Word32 
Instance details
data Vector Word32 = V_Word32 (Vector Word32)
data MVector s Word32 
Instance details
data MVector s Word32 = MV_Word32 (MVector s Word32)