packages feed

arff-0.1.0: examples/test.hs

import Data.ByteString.Lazy as B
import Data.Time            (UTCTime, addUTCTime, getCurrentTime)
import Text.ARFF            (date, int, missing, nominal, real, string)
import qualified Text.ARFF  as ARFF
import Prelude              hiding (Show)
import qualified Prelude    as P

data Strength =
    ExtremelyLow
  | Low
  | Medium
  | High
  | ExtremelyHigh
  deriving (Enum, Eq, P.Show)

relation :: UTCTime -> ARFF.Relation
relation t =
    ARFF.relation "Prosemus"
        -- Header
       [ARFF.a_date "onset",
        ARFF.a_real "duration",
        ARFF.a_int  "note",
        ARFF.a_int  "velocity",
        ARFF.a_nominalFromTo ExtremelyLow ExtremelyHigh "metro",
        ARFF.a_string "cluster"]
        -- Data
       [[date (addUTCTime (realToFrac 0.277037) t) , real 0.4774   , int 63 , int 85 , nominal ExtremelyLow , string "C1"],
        [date (addUTCTime (realToFrac 0.556944) t) , real 0.750504 , int 65 , int 73 , nominal Low          , string "C2"],
        [date (addUTCTime (realToFrac 0.750504) t) , real 0.997803 , int 63 , int 81 , nominal ExtremelyLow , string "C2"],
        [date (addUTCTime (realToFrac 0.997803) t) , real 1.7697   , int 65 , int 83 , nominal Medium       , string "C2"],
        [date (addUTCTime (realToFrac 1.7697  ) t) , real 1.99961  , int 63 , int 63 , nominal ExtremelyLow , string "C1"],
        [date (addUTCTime (realToFrac 2.10516 ) t) , real 2.46032  , int 70 , int 84 , nominal High         , string "C2"],
        [date (addUTCTime (realToFrac 2.52704 ) t) , real 3.8507   , int 70 , int 93 , nominal Low          , string "C2"],
        [date (addUTCTime (realToFrac 4.25177 ) t) , real 4.48958  , int 68 , int 69 , nominal ExtremelyLow , string "C1"],
        [date (addUTCTime (realToFrac 4.55694 ) t) , real 4.7505   , int 70 , int 67 , nominal Low          , string "C2"],
        [date (addUTCTime (realToFrac 4.7505  ) t) , real 4.9978   , int 68 , int 81 , nominal ExtremelyLow , string "C2"],
        [date (addUTCTime (realToFrac 4.9978  ) t) , real 5.7505   , int 70 , int 89 , nominal Medium       , string "C2"],
        [date (addUTCTime (realToFrac 5.7505  ) t) , real 6.0139   , int 68 , int 88 , nominal ExtremelyLow , string "C1"],
        [date (addUTCTime (realToFrac 6.1644  ) t) , real 6.50429  , int 75 , int 86 , nominal ExtremelyLow , string "C2"],
        [date (addUTCTime (realToFrac 6.50429 ) t) , real 7.00479  , int 73 , int 74 , nominal Low          , string "C1"],
        [date (addUTCTime (realToFrac 7.01768 ) t) , real 7.45781  , int 72 , int 65 , nominal Medium       , string "C2"],
        [date (addUTCTime (realToFrac 7.50429 ) t) , real 8.00479  , int 70 , int 68 , nominal Low          , string "C1"],
        [date (addUTCTime (realToFrac 8.55694 ) t) , real 8.96425  , int 73 , int 58 , nominal Low          , string "C2"],
        [date (addUTCTime (realToFrac 8.96425 ) t) , real 9.3604   , int 70 , int 91 , nominal Medium       , string "C1"],
        [date (addUTCTime (realToFrac 9.36378 ) t) , real 9.63658  , int 66 , int 70 , nominal ExtremelyLow , string "C2"],
        [date (addUTCTime (realToFrac 9.69892 ) t) , real 9.94381  , int 58 , int 69 , nominal ExtremelyLow , string "C1"],
        [date (addUTCTime (realToFrac 10.1052 ) t) , real 10.9101  , int 65 , int 81 , nominal High         , string "C2"],
        [date (addUTCTime (realToFrac 11.0952 ) t) , real 11.6182  , int 63 , int 62 , nominal Medium       , string "C2"],
        [date (addUTCTime (realToFrac 12.2518 ) t) , real 12.4896  , int 61 , int 71 , nominal ExtremelyLow , string "C2"],
        [date (addUTCTime (realToFrac 12.5569 ) t) , real 12.7522  , int 63 , int 65 , nominal Low          , string "C1"],
        [date (addUTCTime (realToFrac 12.8012 ) t) , real 12.9547  , int 65 , int 76 , nominal ExtremelyLow , missing    ],
        [date (addUTCTime (realToFrac 12.9955 ) t) , real 13.5069  , int 68 , int 11 , nominal Medium       , string "C1"],
        [date (addUTCTime (realToFrac 13.527  ) t) , real 13.4966  , int 68 , int 94 , nominal Low          , string "C2"],
        [date (addUTCTime (realToFrac 13.4966 ) t) , real 13.8325  , int 70 , int 75 , nominal Low          , string "C2"],
        [date (addUTCTime (realToFrac 13.8325 ) t) , real 14.0093  , int 64 , int 73 , nominal ExtremelyLow , string "C1"],
        [date (addUTCTime (realToFrac 14.1052 ) t) , real 15.8096  , int 61 , int 64 , nominal High         , string "C0"] ]

main :: IO ()
main = getCurrentTime >>= B.putStr . ARFF.encode . relation