tsne 1.1.0 → 1.2.0
raw patch · 2 files changed
+63/−1 lines, 2 filesdep +timedep ~basenew-component:exe:haskell_tsne_timing
Dependencies added: time
Dependency ranges changed: base
Files
- timing/Main.hs +51/−0
- tsne.cabal +12/−1
+ timing/Main.hs view
@@ -0,0 +1,51 @@+module Main where++import System.Environment(getArgs)+import System.Exit+import Control.Monad(when)+import Data.Default(def)+import Data.Time+import Data.Algorithm.TSNE++++main :: IO ()+main = do+ putStrLn "Haskell tSNE Timing"++ args <- getArgs+ let argc = length args+ when (argc < 1 || argc > 2) $ do+ putStrLn "Usage haskell_tsne_timing {input file name} [{num input values}]"+ exitFailure++ let inputFileName = head args+ inputData <- readDataFile inputFileName++ let n = length inputData+ putStrLn $ "total input: " ++ show n++ let n' = if (argc < 2) then n else (read (args !! 1)) ++ putStrLn $ "using: " ++ show n'++ t0 <- getCurrentTime+ forTsne3D (outputResult t0) def $ take n' inputData+ +readDataFile :: FilePath -> IO [[Double]]+readDataFile f = do+ d <- readFile f+ return $ map read (lines d)++outputResult :: UTCTime -> TSNEOutput3D -> IO ()+outputResult t0 s = do+ let i = tsneIteration3D s++ when (i > 0 && (i == 1 || i `mod` 100 == 0)) $ do + putStrLn $ "iteration: " ++ show i+ t <- getCurrentTime+ let dt = diffUTCTime t t0+ ms = round $ 1000.0 * realToFrac dt / realToFrac i+ putStrLn $ " elapsed time: " ++ show dt+ putStrLn $ " average iteration time: " ++ show ms ++ "ms"+
tsne.cabal view
@@ -1,5 +1,5 @@ name: tsne-version: 1.1.0+version: 1.2.0 synopsis: t-SNE description: Pure Haskell implementation of the t-SNE dimension reduction algorithm. homepage: https://bitbucket.org/robagar/haskell-tsne@@ -49,6 +49,17 @@ build-depends: base, data-default, pipes,+ tsne+ ghc-options: -threaded+ default-language: Haskell2010++executable haskell_tsne_timing+ hs-source-dirs: timing+ main-is: Main.hs+ build-depends: base,+ data-default,+ pipes,+ time, tsne ghc-options: -threaded default-language: Haskell2010