cobot-io-0.1.3.20: Biological data file formats and IO
Safe HaskellNone
LanguageHaskell2010

Bio.Sequence.Functions.Marking

Synopsis

Documentation

getMarking :: (ContainsMarking s, MonadError Text m) => s -> Marking s -> m (NonEmpty [Element s]) Source #

Function that retrieves all elements in IsSequence s that are covered by given Marking' s. Returns NonEmpty list, because if Marking is present in s, then list of all Markings for s can't be empty. If given 'Marking is not found in s, an error will be thrown.

sequ = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4)), ("Letter B", (2, 3))] mempty
getMarking sequ "Letter A" == ['a', 'a'] :| [['a']]

toMarked :: (IsBareSequence s, IsMarkedSequence s', Marking s' ~ mk, Element s ~ Element s', MonadError Text m) => s -> [(mk, Range)] -> m s' Source #

Converts IsBareSequence s to IsMarkedSequence s' that is marked using provided list of Markings. If at least one of ranges in given list of Markings is out of bounds, an error will be thrown.

sequBare = Sequence ['a', 'a', 'b', 'a'] mempty mempty :: BareSequence Char
toMarked sequ [("Letter A", (0, 2)), ("Letter A", (3, 4))] :: MarkedSequence String Char

unsafeToMarked :: (IsBareSequence s, IsMarkedSequence s', Marking s' ~ mk, Element s ~ Element s') => s -> [(mk, Range)] -> s' Source #

addMarkings :: (ContainsMarking s, Marking s ~ mk, MonadError Text m) => s -> [(mk, Range)] -> m s Source #

Adds new Markings to given IsSequence s. Type of new Markings must match type of Markings that s is already marked with. If at least one of ranges in given list of Markings is out of bounds, an error will be thrown.

sequ = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4)), ("Letter B", (2, 3))] mempty
sequ' = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4))] mempty
addMarkings sequ' [("Letter B", (2, 3))] == sequ

unsafeAddMarkings :: (ContainsMarking s, Marking s ~ mk) => s -> [(mk, Range)] -> s Source #

listMarkings :: ContainsMarking s => s -> [Marking s] Source #

Retrieves all Markings from given sequence that ContainsMarking. Result is list of Markings without dublicates.

sequ = Sequence ['a', 'a', 'b', 'a'] [("Letter A", (0, 2)), ("Letter A", (3, 4)), ("Letter B", (2, 3))] mempty
listMarkings sequ == ["Letter A", "Letter B"]