[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)[2]
> > [1] "1415673_at"
> >
> >> adj(raw.center.nel, "1415673_at")
> > $"1415673_at"
> > [1] "1455238_at"   "1418467_at"   "1428583_at"   "1422558_at"
> > "1422153_a_at"
> > [6] "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")

Adrien



More information about the Bioconductor mailing list