-- | 'OFeature's which occur in the dataset.
presentOFeats :: [DAG a (X, Y)] -> [Feature]
presentOFeats =
  concatMap sentOFeats
  where
    sentOFeats dag =
      [ C.OFeature o x
      | edgeID <- DAG.dagEdges dag
      , let edgeLabel = DAG.edgeLabel edgeID dag
      , o <- C.unX (fst edgeLabel)
      , x <- lbs (snd edgeLabel) ]


-- | 'TFeature's which occur in the dataset.
presentOFeats :: [DAG a (X, Y)] -> [Feature]
presentOFeats =
  concatMap sentOFeats
  where
    sentOFeats dag =
      [ C.OFeature o x
      | edgeID <- DAG.dagEdges dag
      , let edgeLabel = DAG.edgeLabel edgeID dag
      , o <- C.unX (fst edgeLabel)
      , x <- lbs (snd edgeLabel) ]


-- | 'TFeature's which occur in the dataset.
presentOFeats =
  concatMap sentOFeats
  where
    sentOFeats dag =
      [ C.OFeature o x
      | edgeID <- DAG.dagEdges dag
      , let edgeLabel = DAG.edgeLabel edgeID dag
      , o <- C.unX (fst edgeLabel)
      , x <- lbs (snd edgeLabel) ]


-- | 'TFeature's which occur in the dataset.