module Bio.Location.SeqLocation ( SeqPos, displaySeqPos
, ContigSeqLoc, withinContigSeqLoc, displayContigSeqLoc
, SeqLoc
, isWithin, overlaps, seqData
, display
)
where
import Control.Monad.Error
import qualified Data.ByteString.Lazy.Char8 as LBS
import qualified Bio.Location.ContigLocation as CLoc
import qualified Bio.Location.Location as Loc
import Bio.Location.OnSeq
import qualified Bio.Location.Position as Pos
import Bio.Sequence.SeqData
type SeqPos = OnSeq Pos.Pos
displaySeqPos :: SeqPos -> String
displaySeqPos (OnSeq refname pos) = LBS.unpack refname ++ "@" ++ Pos.display pos
type ContigSeqLoc = OnSeq CLoc.ContigLoc
withinContigSeqLoc :: SeqPos -> ContigSeqLoc -> Bool
withinContigSeqLoc = andSameSeq CLoc.isWithin
displayContigSeqLoc :: ContigSeqLoc -> String
displayContigSeqLoc (OnSeq refname cloc) = LBS.unpack refname ++ "@" ++ CLoc.display cloc
type SeqLoc = OnSeq Loc.Loc
isWithin :: SeqPos -> SeqLoc -> Bool
isWithin = andSameSeq Loc.isWithin
overlaps :: SeqLoc -> SeqLoc -> Bool
overlaps = andSameSeq Loc.overlaps
seqData :: (Error e, MonadError e m) => (SeqName -> m SeqData) -> SeqLoc -> m SeqData
seqData = withSeqData Loc.seqData
display :: SeqLoc -> String
display (OnSeq refname loc) = LBS.unpack refname ++ "@" ++ Loc.display loc