Skip to content

Latest commit

 

History

History
74 lines (53 loc) · 2.58 KB

README.md

File metadata and controls

74 lines (53 loc) · 2.58 KB

PairwiseListMatrices

Linux, OSX: Build Status

Windows: Build status

Code Coverage: Coverage Status codecov.io

This package allows you to use a paired list as a Matrix.

PairwiseListMatrix{T, diagonal} is a (squared) symmetric matrix that stores a list of values of type T for the pairwise comparison/evaluation of nelements. If diagonal is true the first element of the list is 1, 1 otherwise is 1, 2. If diagonal is false, the diagonal values are stored in a vector on the diag field. Labels can be stored on the field labels as an IndexedArray.

In pairwise calculations like cor() if results are saved as PairwiseListMatrix the space is N(N-1)/2 instead of N*N. This is useful to compare a large number of elements.

PairwiseListMatrix gives the option of save labels and allows to use them for indexing.

Example

julia> # Pkg.add("PairwiseListMatrices")

julia> using PairwiseListMatrices

shell>  cat example.csv
A,B,10
A,C,20
B,C,30

julia> data = readcsv("example.csv")
3x3 Array{Any,2}:
 "A"  "B"  10
 "A"  "C"  20
 "B"  "C"  30

julia> list = from_table(data, Int, false)
3x3 PairwiseListMatrices.PairwiseListMatrix{Int64,false}:
  0  10  20
 10   0  30
 20  30   0

julia> list.list
3-element Array{Int64,1}:
 10
 20
 30

julia> labels(list)
3-element IndexedArrays.IndexedArray{Any}:
 "A"
 "B"
 "C"

julia> getlabel(list, "A", "B")
10

julia> list[1,2]
10

julia> full(list)
3x3 Array{Int64,2}:
  0  10  20
 10   0  30
 20  30   0

Benchmark

PairwiseListMatrix is faster than a full matrix to make operatation like sum and mean in the whole matrix, since it is cache efficient. However it is slower than a full matrix for reducing along dimensions.