El 15/12/2013 13:30, Alexandre Bergel escribió:
Hi Hernan,

In that case, I suggest you to define your own builder to build the
matrix you need.
I have given a try, but I cannot properly parse your data. The problem
is about separating column (is it 4 or 5 white spaces?). Having a “,”
would help.

That should be a paste problem, matrix elements were delimited by tab.

I was thinking more in terms of re-using the SimilarityMatrix by making it polymorphic with a Matrix, i.e.:

| rawDataMatrix dataMatrix rowArray |
rawDataMatrix := '1,0.130,0.132,0.130
,1,0.195,0.487
,,1,0.195
,,,1'.
" Build an Array for joining all rows in raw data matrix "
rowArray := (NeoCSVReader on: rawDataMatrix readStream) upToEnd gather: [ : c | c ].
" Then create a Matrix "
dataMatrix := Matrix new rows: 4 columns: 4 contents: rowArray.
" Instead of passing a comparison block, let's just take the values in the data matrix "
SimilarityMatrix new on: dataMatrix; viewMatrix



I gave a try, as you can see with the script below. It produces the
following:


Each box gives its value when the mouse is above.

-=-=-=  -=-=-=  -=-=-=  -=-=-=  -=-=-=
| view f blockSize shape values el |
values := '     a1    a2    a3    a4    a5    a6    a7    a8    a9
  a10    a11    a12    a13    a14    a15    a16    a17    a18    a19
  a20    a21
a1    1    0.130    0.132    0.130    0.158    0.189    0.130    0.022
  1.000    0.062    0.083    0.061    0.080    0.059    0.149    1.000
  0.098    0.161    0.109    1.000
a2         1    0.195    0.487    0.220    0.220    1.000    0.060
  0.130    0.118    0.234    0.234    0.224    0.200    0.622    0.130
  0.342    0.235    0.425    0.130    0.000
a3              1    0.195    0.464    0.464    0.195    0.073    0.132
    0.116    0.114    0.256    0.109    0.085    0.133    0.132    0.105
    0.320    0.171    0.132    0.000
a4                   1    0.220    0.190    0.487    0.060    0.130
  0.118    0.160    0.234    0.154    0.132    0.395    0.130    0.342
  0.235    0.425    0.130    0.000
a5                        1    0.500    0.220    0.071    0.158    0.195
    0.220    0.389    0.209    0.182    0.156    0.158    0.162    0.417
    0.225    0.158    0.000
a6                             1    0.220    0.071    0.189    0.114
  0.136    0.282    0.130    0.106    0.156    0.189    0.132    0.360
  0.167    0.189    0.000
a7                                  1    0.060    0.130    0.118
  0.234    0.234    0.224    0.200    0.622    0.130    0.342    0.235
  0.425    0.130    0.000
a8                                       1    0.022    0.156    0.104
  0.082    0.100    0.100    0.019    0.022    0.095    0.088    0.061
  0.022    0.028
a9                                            1    0.062    0.083
  0.061    0.080    0.059    0.149    1.000    0.098    0.161    0.109
  1.000    0.000
a10                                                 1    0.541    0.140
    0.372    0.283    0.073    0.062    0.111    0.139    0.143    0.062
    0.025
a11                                                      1    0.160
  0.714    0.579    0.176    0.083    0.133    0.200    0.163    0.083
  0.024
a12                                                           1    0.154
    0.132    0.176    0.061    0.308    0.235    0.239    0.061    0.000
a13                                                                1
  0.676    0.170    0.080    0.128    0.189    0.157    0.080    0.023
a14
1    0.148    0.059    0.128    0.158    0.135    0.059    0.023
a15
      1    0.149    0.262    0.158    0.341    0.149    0.000
a16
           1    0.098    0.161    0.109    1.000    0.000
a17
                1    0.207    0.316    0.098    0.000
a18
                     1    0.206    0.161    0.000
a19
                          1    0.109    0.000
a20
                               1    0.000
a21
                                    1
' lines collect: [ : line | line trimBoth findTokens: '    ' ].


blockSize := 10.
view := ROView new.
values do: [ :lineOfValues |
lineOfValues do: [ :v |
shape := ROBox new size: blockSize; color: Color white.
f := [Float readFrom: v readStream] ifError: [ -1 ].
f >= 0
ifTrue: [ shape color: (Color gray: f) ].
el := shape elementOn: f.
el @ ROPopup.
view add: el
].

"We fill the remaining of the line with white boxes.
  We need to have the same amount of boxes for all the lines"
(values first size - lineOfValues size)
timesRepeat: [ view add: (ROBox new color: Color white) element ].

].
ROGridLayout new gapSize: 0; lineItemsCount: (values first size); on:
view elements.
view open.
-=-=-=  -=-=-=  -=-=-=  -=-=-=  -=-=-=



Thanks for the script.
Hernán





Cheers,
Alexandre




On Dec 15, 2013, at 12:56 AM, Hernán Morales Durand
<[email protected] <mailto:[email protected]>> wrote:

Hi Alexandre,

Just to provide you some feedback. My similarity matrices sometimes
are calculated by other tools. However I want to display them using
Roassal. For example this is a similarity matrix of 21 lines and 21
columns:

'     a1    a2    a3    a4    a5    a6    a7    a8    a9    a10    a11
   a12    a13    a14    a15    a16    a17    a18    a19    a20    a21
a1    1    0.130    0.132    0.130    0.158    0.189    0.130    0.022
   1.000    0.062    0.083    0.061    0.080    0.059    0.149
 1.000    0.098    0.161    0.109    1.000    0.000
a2         1    0.195    0.487    0.220    0.220    1.000    0.060
 0.130    0.118    0.234    0.234    0.224    0.200    0.622    0.130
   0.342    0.235    0.425    0.130    0.000
a3              1    0.195    0.464    0.464    0.195    0.073
 0.132    0.116    0.114    0.256    0.109    0.085    0.133    0.132
   0.105    0.320    0.171    0.132    0.000
a4                   1    0.220    0.190    0.487    0.060    0.130
 0.118    0.160    0.234    0.154    0.132    0.395    0.130    0.342
   0.235    0.425    0.130    0.000
a5                        1    0.500    0.220    0.071    0.158
 0.195    0.220    0.389    0.209    0.182    0.156    0.158    0.162
   0.417    0.225    0.158    0.000
a6                             1    0.220    0.071    0.189    0.114
 0.136    0.282    0.130    0.106    0.156    0.189    0.132    0.360
   0.167    0.189    0.000
a7                                  1    0.060    0.130    0.118
 0.234    0.234    0.224    0.200    0.622    0.130    0.342    0.235
   0.425    0.130    0.000
a8                                       1    0.022    0.156    0.104
   0.082    0.100    0.100    0.019    0.022    0.095    0.088
 0.061    0.022    0.028
a9                                            1    0.062    0.083
 0.061    0.080    0.059    0.149    1.000    0.098    0.161    0.109
   1.000    0.000
a10                                                 1    0.541
 0.140    0.372    0.283    0.073    0.062    0.111    0.139    0.143
   0.062    0.025
a11                                                      1    0.160
 0.714    0.579    0.176    0.083    0.133    0.200    0.163    0.083
   0.024
a12                                                           1
 0.154    0.132    0.176    0.061    0.308    0.235    0.239    0.061
   0.000
a13                                                                1
 0.676    0.170    0.080    0.128    0.189    0.157    0.080    0.023
a14
  1    0.148    0.059    0.128    0.158    0.135    0.059    0.023
a15
       1    0.149    0.262    0.158    0.341    0.149    0.000
a16
            1    0.098    0.161    0.109    1.000    0.000
a17
                 1    0.207    0.316    0.098    0.000
a18
                      1    0.206    0.161    0.000
a19
                           1    0.109    0.000
a20
                                1    0.000
a21
                                     1
' lines collect: [ : line | line trimBoth findTokens: Character tab ]

May be your Comparison class could be tailored to set manually rhs,
lhs and similarity? What do you recommend for raw matrices?

Cheers,

Hernán



2013/11/29 Alexandre Bergel <[email protected]
<mailto:[email protected]>>
Hi!

I know some of you are working on DSM-kind of matrix. Oscar has been
working on a similarity matrix for Roassal. I just want to share a
self-explanble screenshot with you guys.


On this example, the methods of the subclasses of Set are compared
between themselves.
Black dot is a couple (m1, m2) that are very similar
<Screen Shot 2013-11-29 at 6.12.39 PM.png>

More
on 
https://www.facebook.com/media/set/?set=a.550677725018829.1073741833.340543479365589&type=1

Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.





--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.





Reply via email to