无法使用igraph函数“ all_simple_paths”

时间:2019-07-12 11:52:09

标签: python python-3.x function igraph

我试图在有向图上找到两个顶点之间的路径。我有一个igraph对象,它是有向图。我有一个父节点,以及具有所需属性的节点的顶点序列列表。我希望在此有向图中找到从父节点到具有属性的这些节点的路径。

igraph中唯一相关的命令似乎是“ all_simple_paths”(如果我要使用内置函数来提高效率,而不是编写自己的函数)。然后,我将不得不找到一种方法来处理方向性问题。

但是,即使作为初步方法,我也无法从igraph上使用all_simple_paths!

错误因此是:

  

回溯(最近通话最近):文件   “ /homes/jlada/Documents/omnipath_folder/full_network/vss.py”,第3行,   在       从igraph导入all_simple_paths ImportError:无法从“ igraph”导入名称“ all_simple_paths”   (/nfs/software/software/Linux_x86_64/opt/stow/anaconda3/envs/pypath/lib/python3.7/site-packages/igraph/init.py)

注意:我已检查是否已安装正确版本的igraph,即python-igraph

我正在运行代码:

from pypath import main, data_formats
import igraph
from igraph import all_simple_paths
import time


protein = 'BMP7'

max_order= 3


pa = main.PyPath()
pa.init_network(pfile = '/homes/jlada/Documents/omnipath_folder/mynetwork.pickle')


pa.set_transcription_factors()



#network_graph = pa.gs_neighborhood(protein, order = max_order)



sub_bmp7_2 = pa.get_directed(
    pa.graph.induced_subgraph(
        list(pa.gs_neighborhood(protein, order = max_order).vs()
    )
))




vsparent = [v for v in sub_bmp7_2.vs() if v['name']== protein]



#neighboraffects=set(pa.up_affects('BMP7').up())

tfs_ind=[v for v in sub_bmp7_2.vs() if v['tf']]

print(tfs_ind)


j = all_simple_paths(sub_bmp7_2, vsparent, tfs_ind[1], mode= "out")

print(j)

我想我应该检查函数all_simple_paths是否在igraph中,所以尝试过:

import pypath
import igraph
import inspect

print(inspect.getmembers(igraph))

输出非常长。不幸的是,我不知道如何查询输出以查看其是否包含all_simple_paths。我确实手动进行了操作,据我所知,没有功能all_simple_paths。

有人有没有不包含all_simple_paths的igraph经验吗?这是版本吗?

1 个答案:

答案 0 :(得分:0)

用于Python的

igraph不包含all_simple_paths,但是igraph for R does。您可能混淆了两者。

根据this answer,可以很容易地构筑一个简单的解决方案。