[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [igraph] Suggestion?
From: |
Tamas Nepusz |
Subject: |
Re: [igraph] Suggestion? |
Date: |
Wed, 7 Jan 2015 23:44:33 +0100 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
Hi,
> There is an ambiguity. You get the same warning if the two nodes are the
> same.
So I've tested this a little bit and here is how it works right now. First
I set up a simple test graph:
>>> g = Graph.Formula("A --> B -->C")
Then let's see what happens when I call get_shortest_paths() with two nodes for
which there exists a path:
>>> g.get_shortest_paths("A", "C")
[[0, 1, 2]]
Calling get_shortest_paths() with two nodes without a corresponding path yields
a warning (which you can suppress) AND you get the empty list as a result:
>>> g.get_shortest_paths("C", "A")
/Users/ntamas/.pyenv/versions/default-venv/bin/igraph:1: RuntimeWarning:
Couldn't reach some vertices at ../../src/structural_properties.c:740
[[]]
So, the result includes the empty list that you proposed as a logical outcome
-- the only thing that could be confusing is the warning. (Also, if you happen
to have configured Python to turn all warnings into exceptions, then you have
a problem here because you won't get the empty list, but as far as I know this
is not the default in Python).
Finally, this is what happens when you call get_shortest_paths() with the same
node:
>>> g.get_shortest_paths("A", "A")
[[0]]
I think this is correct even though "A" does not have a loop edge since you
are already "at" node A when you start the walk.
Let's ignore the warnings for the time being; my question is: do you have any
objections against the *results* of the above calls or do you think it's
logical this way?
Going back to the warnings: my personal opinion is that I don't like them
either, and I also suspect that the warning is there only because it is more
common in R to print warnings for conditions like this, and Gabor found it more
logical in the early days to implement such a warning in the C layer. The only
easy thing I can do about it in the Python layer is to add a function called
set_warning_handler() (similarly to set_progress_handler() and
set_status_handler(), which are used to draw progress bars for certain
operations in IPython). set_warning_handler() would allow you to specify
a Python function that handles warnings coming from the C layer. The default
warning handler would be the same as what we have now: it will convert the
igraph warning into a Python warning. However, you could then be able to call
set_warning_handler(None) to suppress any warnings coming from igraph while
still keeping warnings coming from any other part of Python.
All the best,
T.
- Re: [igraph] Suggestion?, (continued)
- Re: [igraph] Suggestion?, Tamas Nepusz, 2015/01/03
- Re: [igraph] Suggestion?, Herb Roseman, 2015/01/03
- [igraph] Shortest path with highest weights, Ragia Ibrahim, 2015/01/04
- Re: [igraph] Shortest path with highest weights, Chris Watson, 2015/01/04
- Re: [igraph] Shortest path with highest weights, Tamas Nepusz, 2015/01/04
- Re: [igraph] Shortest path with highest weights, Ragia Ibrahim, 2015/01/04
- Re: [igraph] Shortest path with highest weights, Matteo Fortini, 2015/01/05
- Re: [igraph] Shortest path with highest weights, Tamas Nepusz, 2015/01/05
- Re: [igraph] Shortest path with highest weights, Matteo Fortini, 2015/01/05
- Re: [igraph] Suggestion?,
Tamas Nepusz <=
- Re: [igraph] Suggestion?, Gábor Csárdi, 2015/01/14