archivesunleashed / aut-viz

Archives Unleashed Visualization Tools
1 stars 2 forks source link

Look into sigma.js #1

Open lintool opened 7 years ago

lintool commented 7 years ago

We should look into sigma.js

In particular, site says:

You can just instanciate (sic) sigma by giving it the data and the DOM container, and it works. And for JSON or GEXF encoded graphs, the related plugin will deal with loading and parsing the file.

ianmilligan1 commented 7 years ago

This is great. Right now we export GDF natively in the Toolkit, but if we could tweak it to export GEXF files.

Could be a good discrete project for a URA if we're in need of projects for them?

ianmilligan1 commented 7 years ago

For GEXF, thoughts on this approach?

https://stackoverflow.com/questions/38735413/graphx-visualization

ianmilligan1 commented 7 years ago

OK, let's assume we have GEXF output.

@greebie – can you explore taking GEXF files and visualizing them using Sigma.js? If possible, can you use this repo and issue ticket.

ianmilligan1 commented 6 years ago

This is underway, we've seen great progress on this front so far.

greebie commented 6 years ago

Things have been going well. Based on examining sigma, I've come to the conclusion that 1) It's an amazing visualisation tool and has great potential for us. A short demo is here: https://greebie.github.io/aut-client/networks

2) It's not a very good analysis tool, with only limited specs. It does not have many algorithms beyond simple degree. It does have a force atlas algorithm, that I will try and implement this soon. However, if there is data in the GexF that has already been produced, Sigma can use that easily.

Seems to me that we have two choices:

a) use aut to produce summary network data.

I am hoping dataframe support would give us great power to do some calculations, as per this issue: https://github.com/archivesunleashed/aut/issues/13. I'd like to at least give this a try with some of the easier calculations anyway. A network calculation like eigenvector centrality could be used to filter out / shrink the network to manageable data files. We could have some preset calculations built in to a client (eg. shrink based on 68–95–99.7 rule or 1, 9, 90 rule using eigenvector, betweenness, connected components or whatnot.).

b) produce some middleware that does the calculations for us programmatically. This is trivial to produce given the libraries in python and R that are available, but it means another suite of tools to manage. There are some other tools available in node.js. I have less experience in node, but it would fit nicely into an Angular setup.

I'd like to try a) just for the aut practice. Producing the algorithm in scala should not take too much. Using it to filter would probably require dataframe support, however.

ianmilligan1 commented 6 years ago

Thanks for the update, this is a useful summary.

Agreed, let's do a). The only thing to look out for is that we're moving to Python over the next few weeks, so we should perhaps hold off until Python and Dataframes are implemented?