I see, thanks for looking into this. I overlooked the parameter "original model" so I expected the original model to be executed ... May I suggest to set the default value of the "original model" parameter to true?
Underlying algorithm of Watts Strogatz random model
Hi Perry, I followed the discussion you are having with Bruno, allow me to jump in. If I understand well, you are annoyed by the fact that the top level graph contains both the metanode you created and the nodes it contains, and would like to only have the metanode, the contained node being accessible by other means (double clicking the metanode in the GUI for instance). This however is not possible. The highest level graph in the hierarchy will necessarily contain the collection of all nodes that...
General trees are often used to encode a cluster structure, where leaves correspond to clusters and inner nodes correspond to hierarchical merging patterns of clusters. The number of leaves in such a tree thus exactly corresponds to the number of clusters which may be handy to control when generating a tree. While binary trees with a given number of leaves can easily be generated, I am struggling to find a reference for an algorithm that does the same for geenral trees (at first I thought one of...
Random General Tree Algorithm
Extending the GML export plugin?
I'm happy I could help renovate Tulip's dusty and deeper layers ... :-)
inducedSubgraph method adding nodes multiple times ?
Fast & Furious? Thanks.
Typo in tulip-python documentation
Eccentricity Plugin returns -1 diameter when selecting unnormalized values
Hi tidana, I happen to know what's in the paper by van Liere and van de Leeuw (I was their office mate when working at CWI in Amsterdam :-). I believe the graph splatting technique implemented in Tulip is far more general, although the basic principle is the same: go from a discretization of a surface to a surface using gaussian kernels. More generally, colleagues in our team have explored quite a number of rendering approaches more or less inspired from splatting. Hope this helps.
Indeed, make sure you instantiate the property before accessing it. Assuming UrbanAgglomeration stores integer values: graph.getIntegerProperty("UrbanAgglomeration") for n in graph.getNodes(): graph["OriNodeLabel"][n] = graph["UrbanAgglomeration"][n] You may also use a shortcut and store the instantiated property in a variable (to avoid retyping the whole expression): urb = graph.getIntegerProperty("UrbanAgglomeration") for n in graph.getNodes(): graph["OriNodeLabel"][n] = urb[n]
Hi Alain, Patrick will confirm, but the error is you want to access the property using the dot operator which is forbidden (but for the n.id interger id), you need to write: for n in graph.getNodes(): graph["OriNodeLabel"][n] = graph['UrbanAgglomeration'][n] Cheers
Hi Alain, long time no see, I hope you're doing fine -- well, you're still using Tulip which is a good sign :-) Using the export button (on the left behind the Undo/Redo buttons) you get a csv file containing all elements of the graph and all their user defined properties. I believe the simplest thing to do is create a user defined property that stores whatever system defined propery that you need to export, in your case the internal node id: def main(graph): nodeid = graph.getIntegerProperty("InternalNodeId")...
Depends what you mean by "access". For instance, Dijkstra is executed when calling the maxDistance method (which helps you builds the distance matrix in a (undirected) graph. To my knowledge, the Floyd-Warshall algorithm is not readily available. Would be a nice addition to our stock of plugins -- want to contribute?
Depends what you mean by "access". For instance, Dijkstra is executed when calling the maxDistance method (which helps you builds the distance matrix in a (undirected) graph. To my knowledge, the FLoyd-Marshall algorithm is not readily available. Would be a nice addition to our stock of plugins -- want to contribute?
Me again, you write "I think that property-business is more of a hack, and you can't get that implemented really efficiently." I am sorry Oliver, but you are totally wrong. This is not a hack, this is one of the core features of Tulip which allows it to deal with very, very large graphs, and more particularly allows it to efficiently deal with very large hierarchies of graphs. I know no other software with that capabilities, and I know quite a few others. I can expand my thought on this if you loike....
Hi Oliver, ok, let's see if I can help. As a first step, you'd like to color internal nodes of your trees and them only, is that right ? So a way to acheive this wold be to: select all internal nodes make a subgraph out of them color nodes of that subgraph bring that coloring back to the original tree Is that right? I can script this in a few minutes, I juts need to make sure I get things right. ANd probably also define what color non-colored nodes wojuld be (white with a simple black border?) Cheers...
Dear Groucho :-) you might have heard about inheritance in object oriented approaches: this is exactly how properties are dealt with in Tulip. That is, once a property has been defined for a grpah, it becomes available to all its subgraphs. Unless a subgraph (re)defines it (we call that property overridding in OO programming jargon). Now, assume you compute a property for a subgraph while a property with the same name exists at the (super) graph level: the canonical mechanism is that this property...
Hi Oliver, you seem to be a very impatient person :-) I assure you the property-based approahc for grpahs is one of the most mathematically principled, general, multi-purpose and powerful approcah you can imagine. ï really hope you may believe me, I have been working in the area for quite some time. I could list tens of papers our tem has published in the area. The most reasonable thing to do is to stop looking for the right button to press. You need to sit down and write your own (python) script....
Dear Oliver, I need to make sure I understand the problem you are trying to solve. I believe Tulip can help you quite a bit. I would advise to have a real look at it before building your own app -- Tulip benefited (and still benefits) from a significant development effort over more than 10 years. So, I understand you need to visualize trees, small an d large. Tulip offers about 10 different tree layout algorithms adopting different geometrical patterns. Depending on the structure of the trees you...
Dear Oliver, you are not talking to yourself, I am listening carefully :-) Haven't you seen my answer to your first post? I just ran a test, and it seems the R-T algorithm does take node size into account (at least their width). Again, you won't find an already made plugin that will use your k-tuples, you probably have to write a proper script that will do what you exactly need. For instance, applying you color scheme to non leaves nodes can be dealt with by custumizing the colormap using a function...
Ok, will go to github. But the problem is not solved by calling applyIntegerAlgorithm (wiht proper integer proeprty), I get the same error again.
No plugin named Louvain?
Import CSV broken feature
HI Faysal, you need to use TUlip's scripting facilities to access the value. Any plugin (you can trigger using a button and even those you would code yourself) can be triggered from python code. For instance, to run Louvain on your graph, you would do: graph.applyDoubleAlgorithm('Louvain', graph['viewMetric']) Now, the trick is you want to access the modularity parameter so you also give the method a container: dataSet = tlp.getDefaultPluginParameters('Louvain', graph) graph.applyDoubleAlgorithm('Louvain',...
Hi Faysal, Tulip is based on node and edge properties: everything is stored in a property, you can ask a property what value it holds for any node or edge. In the case of Louvain, the result of the algorithm assigns everynode to a class (a cluster). This is stored as an integer, and stored in the viewMetric property (this is the default numerical property, whatever algorithm you run results in values being set in this property, unless you specify a property in which the result should be stored)....
Hi Sébastien, It's actually pretty hard to figure what you are doing (I guess this is a language problem, French might work better ...). In any case, yes, using ulip definitely makes it possible to build a graph in any way you like and then display it using various tpes of algorithms. Sorry for this rather vague answer, please try to be more precise and specific. Sharing an example would certainly help. Guy
Hi Sébastien, It's actually pretty hard to figure what you are doing (I guess this is a language problem, French might work better ...). In any case, yes, using ulip definitely makes it possible to build a graph in any way you like and then display it using various tpes of algorithms. Sorry for this rather vague answer, please try to be more precise and specific, maybe share an exmaepl would help. Guy
Python IDE window too large
I had a look at the poker dataset posted on the Tulip website. The one line documentation says "edges are weighted with the amount of $ a player took to another". However, the only non-null metric on edges in the data is "nbConflicts". I believe the dataset is worth providing a clearer and exact description.
inducedSubGraph inconsistent
Layout plugin strange behavior
Node shape properties dialog out of reach
Weird behavior when rotating a triangle
getEdgesEqualTo and getNodesEqualTo
Hi Quentin, may I ask why you are running the 3.8 version? Seems a bit old. Many...
python binding pip installation with external plugins?
Error assigning vec3f to size property
Great, thanks!
Invoking node metric resets edge values to 0
Induced subgraph from selection (python API)
Yeah, great! Thanks for replying so promptly!
Reachable subgraph stores selection as local property
Hi n0gare, it's nice to see we have new users coming in. Two things you need to distinguish...
Hi n0gare, it's nice to see we have new users coming in. Two things you need to distinguish...
Ah! It seems indeed to solve the problem, I didn't think about it but it actually...
Dear Alain, thanks for sharing your file. I loaded it to try and see what is going...
Hmm. Follow my instructions: 1. Launch Tulip and start from an empty graph. 2. Import...
Great, thanks Patrick.
You missed my point. Take the root graph R. Add a subgraph G. Create a property p...
Clone but only partially
Great, thanks !
addStringVectorParameter?
Yep, Antoine is right, you have to get your head into the tutorial and doc. It's...
Yep, Antoine is right, you have to get your head into the tutorial and doc. It's...
Yep, Antoine is right, youhave to get your head into the tutorial and doc. It's been...
Colormap incoherent through different views
GUI - plugin not showing when using search bar
Hi again Anais, sorry I was not able to reply right away. Thanks for sharing your...
Hi Anais, would be great if you could share at least a sample of your data, so we...
Well, Dijkstra is of course part of Tulip but was not made available as a plugin....
Hi Alain, the edge betweenness is indeed computed on edges as well. The size mapping...
Dear Yannis, what Benjamin is suggesting is to run a few lines of code in a Python...
Hi e, I'm happy you like the software, I like it too and use it quite a lot on an...
Hi David, have you had an answer to your question ? I am precisely trying to do the...
I am invoking the Size Mapping plugin from the python interpreter part of the GUI...
HI Anthony, I'm glad you like Tulip, I am also a big fan. I am not sure I get your...
I got my answer, I thought I should report it. The setAllNodeValue (same for edges)...
setDefaultValue for properties
Scatterplot view on edge metrics?
Switching histogram from nodes to edges crashes Tulip
Hi Thomas, you need to clarify what you mean by "putt labels on a subgraph". Tulip...
Got my answer. I went to see the source code. The plug-in actually computes the "strength"...
Anyone can tell me why the Cluster plug-in return 1.33 as its max node value (with...
Hi Léo, I see a simple way to do it with a little python programming. You may build...
How about checking the node's degree? Using python: if graph.deg(node) == 0: ...
Matrix view ordering using non numerical values
I meant, viewFont is the only metric that is listed as available to compute a Google...
Geographic View not behaving ok
File name does not change after "Save as ..." on window bar
Dear Cyrille, my guess is that there are no better way to work things out. I myself...
Dear Cyrille, my guess is that there are no better to work things out. I myself come...
Searching for null value in IntegerVectorProperty crashes Tulip
Thanks Adam, I really appreciate your help. I just did what you suggested, running...
Yep, I tried setting the PYTHONPATH to /Application/Tulip.app/Contents/lib/python...
I just can't have the python binding work from a script (outside the Tulip GUI)....