2014-09-21 1 views
1

Рассмотрим эту простую, двудольный граф в GraphML:Простая проекция двудольных (два режима) графика не работает в igraph 0.7.1

<?xml version="1.0" encoding="UTF-8"?> 
    <graphml xmlns="http://graphml.graphdrawing.org/xmlns" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns 
     http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd"> 
    <key id="type" for="node" attr.name="type" attr.type="boolean"> 
    <default>TRUE</default> 
    </key> 
    <graph id="G" edgedefault="directed"> 
    <node id='p1'><data key='type'>FALSE</data></node> 
    <node id='o1'></node> 
    <node id='o2'></node> 
    <edge id='e1' source='p1' target='o1'></edge> 
    <edge id='e2' source='p1' target='o2'></edge> 
    </graph> 
</graphml> 

Теперь рассмотрим эту R сессию:

require("igraph") 
graph <- read.graph(file="bipartitetest.graphml",format="graphml") 
proj <- bipartite.projection(graph) 

Хотя объект граф кажется отлично:

graph 
IGRAPH D--B 3 2 -- 
+ attr: type (v/l), id (v/c), id (e/c) 

мой igraph версия 0.7.1 complains:

Error in .Call("R_igraph_bipartite_projection", graph, types, as.integer(probe1), : 
    At bipartite.c:198 : Non-bipartite edge found in bipartite projection, Invalid value 

Почему это? Простой граф представляется действительным априори.

ответ

1

Это, вероятно, igraph ошибка, но, похоже, он игнорирует значение по умолчанию атрибута type:

V(graph)$type 
# [1] FALSE FALSE FALSE 

Обходной должен указать это в явном виде, пока ошибка не будет устранена.

+2

Связанный отчет об ошибке, который я только что создал: https://github.com/igraph/igraph/issues/684 –