I have created an issue for this:
https://github.com/igraph/igraph/issues/807 FYI. Gabor

On Wed, Jan 7, 2015 at 5:44 PM, Tamas Nepusz <[email protected]> wrote:

> 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.
>
> _______________________________________________
> igraph-help mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/igraph-help
>
_______________________________________________
igraph-help mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/igraph-help

Reply via email to