Multigraph software - graph

do you know any good software that manages multigraph? My aim is to display it, compute some metrics on it (when well defined), import/export from common network formats (GraphML...) and so on.
Something like Gephi or NetSocV but with multigraph support.
Linux support would be great.
I found NetworkX for Python and it seems good, but I was wondering if there are alternatives available.
Any recommendations?

Related

Ada/SPARK: should I be using GNATprove? Where can I find it?

On chapter 22.1 of this Learning Ada, trying to build the examples.
It expects GNATprove to be installed. I am using Ubuntu 18.04 LTS, and I don't see any package that provides it. When I tried to find the main repo, all I found was something at Open Do, and when I click the download button, it appears to be a broken link. Google has little to offer about GNATprove, which is a bit worrying.
I'm new to Ada so I don't really know what I should be using, so if GNATprove is not the right thing, then let me know. I'm also generally expecting a free software toolchain -- is that a reasonable expectation or should I expect to need the "pro" version to see what Ada/SPARK are all about?
GNATprove is the tool used for the formal verification of SPARK, i.e. the provable subset of Ada. If you want to build reliable software and be sure that it does the right thing, it's certainly worth looking at SPARK!
The easiest way to get you hands on SPARK it is to download the GNAT Community Edition from https://www.adacore.com/download which includes GNATprove. The community edition has everything you need to get started wit Ada and SPARK. The main difference of "Pro" is the commercial support.

How to analyse large Networks/Graphs with limited amount of RAM

For a current project, I need to analyse a large Protein-Protein-Interaction Network given to me in an >300mb .csv file.
The Graph will have way over 5 Million edges and tens of thousands of nodes.
I allready tried using Cytoscape and Gephi to load and analyse my Data, but both seem to not be capable of handling networks of this size.
While Cytoscape crashes seconds after trying to load the file, Gephi manages to load ~50% until it runs out of memory. (Yes, I set -Xmx to max.)
Note, my PC has 8GB of RAM.
At this point, I'm starting to question myself: Is it even possible to analyse networks of this size with common Network-Analysis Software, or am I forced to write and tweak my own algorithms? Or is there Software available you guys know about?
For now, I don't necessarily need Graph visualisation, just simple Centrality measurements etc.
I really hope my question isn't too unspecific.
Thanks in advance!
Both Cytoscape.js and Cytoscape desktop (Java) support headless mode.
You can use Cytoscape.js directly in Node.js, with direct access to its API. Just require('cytoscape') and you're good to go. Using Cytoscape.js headlessly in Node.js is much less expensive w.r.t. CPU usage and RAM, as compared to visualising. Cytoscape.js supports lots of types of centrality calculations. It's just one API call to calculate the values, so it would be easy to try out even just in the Node.js REPL (and you could write out a JSON file).
You can communicate with Cytoscape desktop headlessly via CyRest -- i.e. HTTP/REST requests. This means you can do your analysis in any language, but everything you do will be async and require constant serialisation and deserialisation. I think you could alternatively write an app for Cytoscape desktop, as long as it's all headless.

List of library versions in stable releases

I am developping a free software, and this software is using a shared library from the system.
Unfortunately, the original author of the library decided to change the API at one point in time, so now I have to maintain two branches of the software.
To make a decision, if maintaining both branches is still justified, I would like to have a list of versions of the library in different OS releases and distributions. Is there a list somewhere?
I have found whohas, which is a tool that does what I was looking for.

Comparison between various ETL tools

Very often I get into the projects that have requirements of transferring file data into table. And almost always I've worked at ODI (Oracle Data Integrator) only.
I want to know what are the different ETL tools available and how are they different from ODI and what are the restrictions in each case (like file size limit or column size restriction or processing time etc).
I wish somebody could help.
If somebody can share personal experience on these tools, that would be welcome too. Thanks!
I'm working on the same type of projects that you're in.
Right now I'm working with IBM DataStage. It seems like a good and powerful tool, but it's lacking a good documentation and a strong community.
There's also Pentaho, I have no experience about it, but it seems pretty popular and it's also open source

Which DVCS is most conducive to experimenting?

I was wondering which DVCS is most conducive to experimentation i.e. branching, etc. I want something where anyone can quickly launch smaller projects and refactor code quickly. I want to create an environment where experimenting is cheap and can be discarded/merged easily.
Git is known for very cheap branching, they made it so that branching was something trivial, so that, like you said, you could create branches for any little thing. I don't have experience with the other DVCSes, but I imagine they're pretty similar given their similar nature. I just know that cheap branching is one of Git's reasons for creation, or something like that. Sorry if I misunderstood your question.
Here's a section of a popular article/site giving details about git over other version control systems.
In response to your comment: On windows I imagine? I've been fine using msysgit, get msysGit-fullinstall-1.6.4-preview20090729. For a detailed walkthrough with screenshots that helped out some friends, I recommend the Git for Windows Developers series.
You could also try Mercurial, it's fast, it's distributed and it's easier to use. If you like working with a GUI try -- TortoiseHg.
Here is an analysis done by google before they integrated mercurial into google code.
Your requirements match Darcs or Git.
If you're a GUI user, why don't you take a look at Plastic SCM? http://codicesoftware.blogspot.com/2010/03/distributed-development-for-windows.html. It's one of the few commercial DVCSs out there and it's focused on ease of use but it has all the features you're looking for:
Excellent branching and merging support (full merge tracking, rename support and all that)
Distributed (and easy to use)
Subtractive merge support (you can do it from the GUI)
Besides:
Very good visualization
Excellent Windows GUI (check it)
Excellent VStudio integration

Resources