igraph-help
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [igraph] graph.union does not unify as expected


From: Gábor Csárdi
Subject: Re: [igraph] graph.union does not unify as expected
Date: Tue, 11 Feb 2014 15:00:47 -0500

Hi, this is what I get, with igraph 0.7.0.

g <- structure(list(9, FALSE, c(6, 2, 7, 8, 7, 5), c(0, 1, 1, 1, 2, 
3), c(1, 5, 0, 2, 4, 3), c(0, 1, 2, 3, 4, 5), c(0, 0, 0, 1, 1, 
1, 2, 3, 5, 6), c(0, 1, 4, 5, 6, 6, 6, 6, 6, 6), list(c(1, 0, 
1), structure(list(), .Names = character(0)), structure(list(
    name = c("16052361", "16052513", "16052618", "16052962", 
    "rs11703994", "rs62224614", "rs78724352", "rs3013006", "rs55926024"
    ), x = c(16052361L, 16052513L, 16052618L, 16052962L, 16053791L, 
    16053862L, 16053863L, 16054667L, 16054740L), y = c(2.156147, 
    2.547104, 1.587586, 4.037532, 3.734964, 5.026869, 2.514876, 
    1.543943, 0.579408)), .Names = c("name", "x", "y")), structure(list(
    weight = c(0.526203, 0.725426, 0.681783, 0.579408, 0.86216, 
    0.718093), color = c("grey", "blue", "grey", "grey", "red", 
    "blue")), .Names = c("weight", "color")))), class = "igraph")

g

# IGRAPH UNW- 9 6 -- 
# + attr: name (v/c), x (v/n), y (v/n), weight (e/n), color (e/c)

gg <- g
gu <- graph.union(gg, g)
gu

# IGRAPH UN-- 9 6 -- 
# + attr: x_1 (v/n), x_2 (v/n), y_1 (v/n), y_2 (v/n), name (v/c),
#   weight_1 (e/n), weight_2 (e/n), color_1 (e/c), color_2 (e/c)

Your graph has symbolic vertex names. From version 0.7.0 graph.union works on those by default if they are present:

str(g)
# IGRAPH UNW- 9 6 -- 
# + attr: name (v/c), x (v/n), y (v/n), weight (e/n), color (e/c)
# + edges (vertex names):
# [1] 16052361--rs78724352 16052513--16052618   16052513--rs3013006 
# [4] 16052513--rs55926024 16052618--rs3013006  16052962--rs62224614

str(gu)
# IGRAPH UN-- 9 6 -- 
# + attr: x_1 (v/n), x_2 (v/n), y_1 (v/n), y_2 (v/n), name (v/c),
#   weight_1 (e/n), weight_2 (e/n), color_1 (e/c), color_2 (e/c)
# + edges (vertex names):
# [1] 16052962--rs62224614 16052618--rs3013006  16052513--rs55926024
# [4] 16052513--rs3013006  16052513--16052618   16052361--rs78724352

These are the same, only their order is different.

As for weighted graphs, if the two graphs both have an attribute with the same name, it is renamed by adding a _1 and _2 (and _3, etc.) suffix. If you want to keep the first operand's weights, assign them as 'weight', etc.

It is true that it could try and see if the attributes have the same values for all graphs, but currently it does not do that.

This is all discussed in ?graph.union, so please consider reading the manual.

Thanks. Gabor



On Tue, Feb 11, 2014 at 2:49 PM, Hermann Norpois <address@hidden> wrote:
Hello,

I was playing around with graph.union.
I did a copy of my graph g
gg -> g
gu  -> graph.union (gg, g)

I expected a graph identical to g (or gg) but this was not the case.
The same should be the case for
gi -> graph.intersect (gg,g)

And it doesnt work for weighted graphs?

Thanks Hermann

dput (g)
structure(list(9, FALSE, c(6, 2, 7, 8, 7, 5), c(0, 1, 1, 1, 2,
3), c(1, 5, 0, 2, 4, 3), c(0, 1, 2, 3, 4, 5), c(0, 0, 0, 1, 1,
1, 2, 3, 5, 6), c(0, 1, 4, 5, 6, 6, 6, 6, 6, 6), list(c(1, 0,
1), structure(list(), .Names = character(0)), structure(list(
    name = c("16052361", "16052513", "16052618", "16052962",
    "rs11703994", "rs62224614", "rs78724352", "rs3013006", "rs55926024"
    ), x = c(16052361L, 16052513L, 16052618L, 16052962L, 16053791L,
    16053862L, 16053863L, 16054667L, 16054740L), y = c(2.156147,
    2.547104, 1.587586, 4.037532, 3.734964, 5.026869, 2.514876,
    1.543943, 0.579408)), .Names = c("name", "x", "y")), structure(list(
    weight = c(0.526203, 0.725426, 0.681783, 0.579408, 0.86216,
    0.718093), color = c("grey", "blue", "grey", "grey", "red",
    "blue")), .Names = c("weight", "color")))), class = "igraph")
>

_______________________________________________
igraph-help mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/igraph-help



reply via email to

[Prev in Thread] Current Thread [Next in Thread]