Commit a3c7c18b authored by Alexandre Delanoë's avatar Alexandre Delanoë

[FIX] Order 2

parent fa5c63fb
......@@ -5,7 +5,7 @@ cabal-version: 1.12
-- see: https://github.com/sol/hpack
name: gargantext
version: 0.0.6.9.9.6.4
version: 0.0.6.9.9.6.4
synopsis: Search, map, share
description: Please see README.md
category: Data
......
......@@ -31,20 +31,24 @@ import Test.QuickCheck.Arbitrary
import qualified Data.Text as Text
------------------------------------------------------------------------
data Similarity = Conditional | Distributional
data Similarity = Conditional | Distributional_A | Distributional_B
deriving (Show, Eq)
measure :: Similarity -> Matrix Int -> Matrix Double
measure Conditional x = measureConditional x
measure Distributional x = logDistributional2 x
measure Conditional x = measureConditional x
measure Distributional_A x = logDistributional2 1 x
measure Distributional_B x = logDistributional2 0 x
------------------------------------------------------------------------
withMetric :: GraphMetric -> Similarity
withMetric Order1 = Conditional
withMetric Order2 = Distributional
withMetric Order1 = Conditional
withMetric Order2_A = Distributional_A
withMetric _ = Distributional_B
------------------------------------------------------------------------
data GraphMetric = Order1 | Order2
-- Order2 type is for keeping Database json compatibility
-- it is supposed to be removed in the future
data GraphMetric = Order1 | Order2 | Order2_A | Order2_B
deriving (Generic, Eq, Ord, Enum, Bounded, Show)
instance FromJSON GraphMetric
......
......@@ -168,16 +168,16 @@ distributional m' = run $ result
result = termDivNan z_1 z_2
logDistributional2 :: Matrix Int -> Matrix Double
logDistributional2 m = trace ("logDistributional2, dim=" `mappend` show n) . run
$ diagNull n
$ matMaxMini
$ logDistributional' n m
logDistributional2 :: Exp Double -> Matrix Int -> Matrix Double
logDistributional2 o m = trace ("logDistributional2, dim=" `mappend` show n) . run
$ diagNull n
$ matMaxMini
$ logDistributional' o n m
where
n = dim m
logDistributional' :: Int -> Matrix Int -> Acc (Matrix Double)
logDistributional' n m' = trace ("logDistributional'") result
logDistributional' :: Exp Double -> Int -> Matrix Int -> Acc (Matrix Double)
logDistributional' o n m' = trace ("logDistributional'") result
where
-- From Matrix Int to Matrix Double, i.e :
-- m :: Matrix Int -> Matrix Double
......@@ -204,7 +204,7 @@ logDistributional' n m' = trace ("logDistributional'") result
-- m_{i,j} = 0 if n_{i,j} = 0 or i = j,
-- m_{i,j} = log(to * n_{i,j} / s_{i,j}) otherwise.
mi = (.*) (matrixEye n)
(map (lift1 (\x -> cond (x == 0) 0 (log (1 + x * to)))) ((./) m ss))
(map (lift1 (\x -> cond (x == 0) 0 (log (o + x * to)))) ((./) m ss))
-- mi_nnz :: Int
-- mi_nnz = flip indexArray Z . run $
-- foldAll (+) 0 $ map (\a -> ifThenElse (abs a < 10^(-6 :: Exp Int)) 0 1) mi
......
......@@ -73,7 +73,6 @@ defaultClustering x = spinglass 1 x
-------------------------------------------------------------
type Threshold = Double
cooc2graph' :: Ord t => Similarity
-> Double
-> Map (t, t) Int
......@@ -84,7 +83,7 @@ cooc2graph' distance threshold myCooc
$ measure distance
$ case distance of
Conditional -> map2mat Triangle 0 tiSize
Distributional -> map2mat Square 0 tiSize
_ -> map2mat Square 0 tiSize
$ Map.filter (> 1) myCooc'
where
......@@ -93,7 +92,6 @@ cooc2graph' distance threshold myCooc
myCooc' = toIndex ti myCooc
-- coocurrences graph computation
cooc2graphWith :: PartitionMethod
-> BridgenessMethod
......@@ -197,7 +195,7 @@ doSimilarityMap Conditional threshold strength myCooc = (distanceMap, toIndex ti
$ Map.filter (> threshold)
$ similarities `seq` mat2map similarities
doSimilarityMap Distributional threshold strength myCooc = (distanceMap, toIndex ti diag, ti)
doSimilarityMap distriType threshold strength myCooc = (distanceMap, toIndex ti diag, ti)
where
-- TODO remove below
(diag, theMatrix) = Map.partitionWithKey (\(x,y) _ -> x == y)
......@@ -208,7 +206,7 @@ doSimilarityMap Distributional threshold strength myCooc = (distanceMap, toIndex
tiSize = Map.size ti
similarities = (\m -> m `seq` m)
$ (\m -> m `seq` measure Distributional m)
$ (\m -> m `seq` measure distriType m)
$ (\m -> m `seq` map2mat Square 0 tiSize m)
$ theMatrix `seq` toIndex ti theMatrix
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment