[BioC] Problem with sp.between
Jamain, Adrien J
adrien.jamain at imperial.ac.uk
Wed Nov 30 10:56:31 CET 2005
> Hi Adrien,
> Thanks for sending in the report.
> On 24 Nov 2005, adrien.jamain at imperial.ac.uk wrote:
> > I have a very strange problem with sp.between for some graphs. It
> > runs for a while, then crashes RGui, and returns a textbox saying:
> > 'The instruction at "0x0000002c" referenced memory at "0x0000002c".
> > The memory could not be read.'
> > The strange thing is that it happens only for *some*
> graphs, but for
> > all nodes in those graphs.
> > Has anyone experienced anything similar? SessionInfo and a code
> > snippet (to show you that I'm not doing anything fancy...)
> are below.
> The snip that you sent is useful, but what we really need, in
> addition, is a (hopefully small) example graph object that
> produces the error (or a way to generate the graph object).
> Can you post one on a public website or ftp server or mail me
> privately and I can give you instructions for our ftp server
> (I'd rather avoid large attachements in email if possible).
> >> raw.center.nel
> > A graphNEL graph with undirected edges Number of Nodes =
> 2013 Number
> > of Edges = 4775
> >> nodes(raw.center.nel)
> >  "1415673_at"
> >> adj(raw.center.nel, "1415673_at")
> > $"1415673_at"
> >  "1455238_at" "1418467_at" "1428583_at" "1422558_at"
> > "1422153_a_at"
> >  "1450863_a_at" "1452830_s_at" "1434028_at" "1415822_at"
> > "1428892_at"
> >> sp.between(raw.center.nel, "1415673_at", "1455238_at")
> > that's where it explodes...
> Well, if adj is to be believed one would sure expect an
> answer from sp.between and not an explosion :-)
> + seth
Hi Seth and everyone,
Actually I found the problem a couple of days ago, I was going to send a
reply. It is to do with negative weights in the graph. The graphNEL
object is fine with it, but sp.between doesn't like it *at all* (even if
the shortest path between the 2 nodes in argument only contains positive
weights -that's why the problem isn't easy to find). Of course one
cannot work out distances with negative weights (in general), but
perhaps an all-out crash could be avoided and an error returned?
Here is a example (if your R is fed up with life):
gR = new("graphNEL", nodes=c("A", "B", "C"))
gR = addEdge("A", "B", gR, 1)
gR = addEdge("B", "C", gR, -1)
sp.between(gR, "A", "B")
More information about the Bioconductor