天道酬勤,学无止境

Need help for OpenCPU and igraph output format

My data Adjancy array is

var g = [[10, 2], [15, 0], [18, 3], [19, 6], [20, 8.5], [25, 10], [30, 9], [35, 8], [40, 5], [45, 6], [50, 2.5]]

and my OpenCPU code is

            ocpu.call("centralization.closeness", {graph: g}, function(res){
            // console.log(ocpu.seturl(res.output[0]));
            $http.get("//public.opencpu.org/"+res.output[0]+"/json").success(function(data) {
                console.log(data);
            });
        });

this is giving error

OpenCPU error HTTP 400 Not a graph object

In call: centralization.closeness(graph = g)

评论

centralization.closeness takes a graph object and not an array

Suggestion:

  • convert the array to an adjacency matrix
  • convert matrix to graph using graph_from_adjacency_matrix.
  • pass resulting graph to centralization.closeness

EDIT: solution here: https://jsfiddle.net/bowofola/pskezhLq/2/

var graph = [
  [0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1],
  [1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1],
  [1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1],
  [0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0],
  [1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0],
  [1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1],
  [0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1],
  [0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1],
  [0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0],
  [1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1],
  [1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1],
  [1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1],
  [1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0],
  [1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0]
];

//set CORS to call igraph package
ocpu.seturl("https://public.opencpu.org/ocpu/library/igraph/R");

var graphSession;

$('#output').text(graph.toString());

$('#adjMatrix').click(function() {
  ocpu.call("graph_from_adjacency_matrix", {
    adjmatrix: graph,
    mode: 'directed',
    weighted: true
  }, function(session) {
    graphSession = session;
    //retrieve session console (async)
    graphSession.getConsole(function(outtxt) {
      $("#output").text(outtxt);
      $("#centralize").prop('disabled', false);
    });
  }).fail(function() {
    alert("Error: " + req.responseText);
  });
});

$('#centralize').click(function() {
  var centralizeReq = ocpu.call("centralization.closeness", {
    graph: graphSession,
    mode: "all",
    normalized: true
  }, function(centralizeSession) {
    centralizeSession.getConsole(function(outtxt) {
      $("#output").text(outtxt);
    });
  }).fail(function() {
    alert("Error: " + req.responseText);
  });

});
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://cdn.opencpu.org/opencpu-0.4.js"></script>

<div>
  <textarea name="" id="output" cols="60" rows="10"></textarea>
  <br />
  <button id="adjMatrix">Graph From Adj</button>
  <button id="centralize" disabled>Centralize</button>
</div>

for more examples on using open cpu, head here: http://jsfiddle.net/user/opencpu/fiddles/

What exactly is it you expect OpenCPU to run? Currently you are running this code:

library(igraph)
g <- jsonlite::fromJSON('[[10, 2], [15, 0], [18, 3], [19, 6], [20, 8.5], [25, 10], [30, 9], [35, 8], [40, 5], [45, 6], [50, 2.5]]')
igraph::centralization.closeness(g)

When running this in R you will get the same error. You need to write a wrapper function which transforms the matrix into a type which can then be passed to centralization.closeness.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • OpenCPU error HTTP 400 Not a graph object
    I m using Angularjs and OpenCPU to calculate some data through Igraph R Package Graph is a adjacency matrix/Array generate by java script [[0,1,1,0,1,1,0,0,0,1,1,1,1,1],[1,0,1,1,1,1,1,1,1,1,0,1,1,1],[1,1,0,1,0,1,1,1,1,1,1,1,1,1],[0,1,1,0,1,0,0,0,0,1,0,1,0,0],[1,1,0,1,0,1,0,0,0,1,1,0,1,0],[1,1,1,0,1,0,0,1,0,1,1,1,1,1],[0,1,1,0,0,0,0,1,0,0,1,1,1,1],[0,1,1,0,0,1,1,1,1,1,0,1,0,1],[0,1,1,0,0,0,0,1,0,1,1,0,0,0],[1,1,1,1,1,1,0,1,1,0,0,0,0,1],[1,0,1,0,1,1,1,0,1,0,0,0,1,1],[1,1,1,1,0,1,1,1,0,0,0,0,1,1],[1,1,1,0,1,1,1,0,0,0,1,1,0,0],[1,1,1,0,0,1,1,1,0,1,1,1,0,0]] My code is ocpu.call("graph_from
  • rJava fails while invoking RJDBC library from OpenCPU API
    Goal : To use RJDBC with OpenCPU AJAX Post call. Use case : I need to connect with Apache phoenix database and get some data. And on that data I am supposed to do analytics. So to connect with Phoenix i am using rjdbc(phoenix doesn't support any other option to connect). Environment : public.opencpu.org Here is what I am trying: html <textarea> library(RJDBC) .. do some data fetching and then r statistics </textarea> <br /> <button id="submitbutton" >Execute</button> <br /> <br /> <div id="output"> </div> javascript <script type="text/javascript"> //When Document is Ready $(function () { var
  • 如何使用igraph获取最短路径上的顶点?(How do I get the vertices on the shortest path using igraph?)
    问题 我正在使用igraph生成成对的顶点之间的最短路径距离的矩阵,但是我不知道如何返回顶点。 到目前为止,我有: path_length_matrix = ig_graph.shortest_paths_dijkstra(None,None,"distance", "ALL") 我正在寻找一个返回路径矩阵(如距离矩阵)的函数,但是在igraph文档中看不到任何显示如何获取路径的函数。 回答1 您需要的功能是我相信的get_shortest_paths 。 参见https://igraph.org/python/doc/igraph.GraphBase-class.html#get_shortest_paths 您需要为每个源顶点分别调用它,并且它将为每对节点仅提供一条(任意)最短路径。 如果您需要所有最短路径,请参阅get_all_shortest_paths :https: get_all_shortest_paths 回答2 我做这个 from igraph import * g = Graph([(0,1), (0,2), (2,3), (3,4), (4,2), (2,5), (5,0), (6,3), (5,6)]) g.vs["name"] = ["Alice", "Bob", "Claire", "Dennis", "Esther", "Frank",
  • 从 OpenCPU API 调用 RJDBC 库时 rJava 失败(rJava fails while invoking RJDBC library from OpenCPU API)
    问题 目标:将 RJDBC 与 OpenCPU AJAX Post 调用一起使用。 用例:我需要连接 Apache phoenix 数据库并获取一些数据。 我应该对这些数据进行分析。 因此,为了与 Phoenix 连接,我使用的是 rjdbc(phoenix 不支持任何其他连接选项)。 环境: public.opencpu.org 这是我正在尝试的: html <textarea> library(RJDBC) .. do some data fetching and then r statistics </textarea> <br /> <button id="submitbutton" >Execute</button> <br /> <br /> <div id="output"> </div> javascript <script type="text/javascript"> //When Document is Ready $(function () { var baseurl = "https://public.opencpu.org"; //because identity is in base ocpu.seturl(baseurl+"/ocpu/library/base/R"); //actual handler $("#submitbutton").on(
  • 如何在 CentOS6 上启动/停止/刷新 OpenCPU?(How to start/stop/flush OpenCPU on CentOS6?)
    问题 我已经在 CentOS6 上成功构建并安装了 OpenCPU 和 RStudio 服务器。 一切都按预期工作,我确实获得了本地 R 包的成功 GET/POST 响应。 然而,有几件事似乎不起作用: 我想不出一种干净的方法来启动/停止/刷新 OpenCPU。 我目前正在使用apachectl restart但我什至不确定是否会按预期重新加载 R 包。 我在/usr/lib/opencpu/scripts尝试了 Jeroen 的 bash 脚本,但它们似乎需要相当多的调整才能在 CentOS 上工作。 (可能与上述有关)我在/etc/opencpu/Renviron文件中使用load()和readRDS() (也在/etc/opencpu/Rprofile尝试过)将持久性数据集加载到全局环境中——但这并没有似乎工作。 我没有收到任何错误日志,但这些对象在后续请求中不可用。 在 Ubuntu OpenCPU 上似乎配置为在opencpu用户下运行。 在 CentOS6 上,它似乎在安装后在root下运行。 我想修改它,但不知道如何修改。 只是想知道是否有人在 CentOS6 上成功配置了 OpenCPU。 非常感谢,--梅尔。 回答1 一些答案 运行sudo apachectl restart将重新启动。 目前,rpm 中没有包含用于 opencpu 的特殊 init 或
  • Rmpi、OpenCPU 和 Apparmor:拒绝对“/”的请求(Rmpi, OpenCPU, and Apparmor: DENIED request for "/")
    问题 我有一个 R 包,它向我通过 Rmpi​​ 包运行的 OpenMPI 集群发送作业。 在从控制台运行的 R 会话中,一切都按预期工作。 但是,当我尝试像这样从我的 OpenCPU 服务器执行相关功能时(细节已更改以保护无辜者): curl -XPOST http://99.999.999.99/ocpu/library/MyPackage/R/my_cluster_function 我收到此错误: R call failed: process died. (包中的其他非集群调用函数通过 OpenCPU 按预期工作)。 我注意到在/var/log/kern.log ,apparmor DENIED了各种请求,并且通过向/etc/apparmor.d/opencpu.d/custom添加条目以允许 OpenMPI访问它需要的文件。 但是,我无法解决与位置"/" “打开”请求相关的这两个问题(同样,IP 地址已更改): Oct 26 03:49:58 99.999.999.99 kernel: [142952.551234] type=1400 audit(1414295398.849:957): apparmor="DENIED" operation="open" profile="opencpu-main" name="/" pid=22486 comm="orted"
  • 使用R构建RESTful API(Building RESTful API using R)
    问题 我正在考虑使用编程语言R构建RESTful API,主要是为了以API格式向用户展示我的机器学习模型。 我知道有一些选项,例如导出到PMML,PFA并使用其他语言来处理API部分。 但是,我想坚持使用相同的编程语言,并且想知道R中是否有类似Flask / Django / Springbook的框架? 我看了一下servr / shiny,但是我真的不认为RESTful是他们设计的。 R中是否有更易于使用的更好的解决方案? 回答1 我有两种选择供您选择: 水管工 plumber允许您通过使用特殊注释修饰现有R源代码来创建REST API。 一个小的示例文件: # myfile.R #* @get /mean normalMean <- function(samples=10){ data <- rnorm(samples) mean(data) } #* @post /sum addTwo <- function(a, b){ as.numeric(a) + as.numeric(b) } 在R命令行中: > library(plumber) > r <- plumb("myfile.R") # Where 'myfile.R' is the location of the file shown above > r$run(port=8000) 这样,您将获得如下结果: $
  • 如何在C中可视化用igraph制作的图形?(How to visualize a graph made with igraph in C?)
    问题 我开始在 C 中学习 igraph,我想知道如何可视化用这个库制作的图形。 我已经看到使用 igraph R 只需使用 plot 函数并绘制图形,但是如果我使用 C,我应该将图形打印在文件中,然后使用另一个程序对其进行可视化还是通常的方法? 谢谢! 编辑:这种图表。 回答1 要绘制有向图,请尝试使用 GraphViz (https://www.graphviz.org)。 或者,如果您愿意以符合其支持格式之一的方式将数据写入文件(https://gephi.org/users/supported -图形格式/)。 GML 看起来非常简单。 回答2 遵循 Unix 哲学,让你的程序输出图形的描述(以文本格式,或者如果没有容易获得的纯文本格式,则以易于处理的形式输出)。 (请注意,这也适用于图像格式;NetPBM(.pnm,或 .pbm、.pgm 和 .ppm)格式很容易在纯 C 中生成(例如标准输出),如有必要,NetPBM 工具可以用于转换为您可能希望的任何其他图像格式。) 例如,如果您的程序输出 graph { rankdir=LR; "6" -- "4"; "4" -- "5"; "3" -- "4"; "3" -- "2"; "5" -- "2"; "5" -- "1"; "2" -- "1"; } 然后将输出重定向到例如output.dot并运行dot -Tx11
  • How to chain two function calls in opencpu
    OpenCPU is said to support chaining of function calls to calculate e.g. f(g(x), h(y)) The docs about argument formats: https://public.opencpu.org/api.html#api-arguments includes an example that illustrates this by calculating summary(read.csv("mydata.csv")) In this example f is the generic function summary that takes as an argument an object. I need to calculate something like: mycalc(read.csv("mydata.csv")) or myplot(read.csv("my data.csv")) where f takes as an argument a dataframe. This doesn't seem to work when giving as object argument the sessionid or hash key returned by the read.csv
  • 中移4G模块-ML302-OpenCpu开发-CJSON
    中移4G模块-ML302-OpenCpu开发-CJSONJSON转字符串 cJSON *root=NULL; cJSON *sub_js=NULL; char *out=NULL; root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "version", "V1.1.0"); cJSON_AddStringToObject(root, "imei", "1xxxxxxxxxxxxxxxx"); cJSON_AddItemToObject(root, "data", sub_js = cJSON_CreateObject()); cJSON_AddNumberToObject(sub_js, "status", 1); cJSON_AddTrueToObject(sub_js, "material"); cJSON_AddTrueToObject(sub_js, "power_on"); cJSON_AddNumberToObject(sub_js, "qty", 123); cJSON_AddStringToObject(root, "dt", "2020-01-07T05:15:52"); out=cJSON_Print(root); cJSON_Delete(root); cm_printf("[CJSON]
  • 如何在opencpu中链接两个函数调用(How to chain two function calls in opencpu)
    问题 据说 OpenCPU 支持链接函数调用以计算例如 f(g(x), h(y)) 关于参数格式的文档:https://public.opencpu.org/api.html#api-arguments 包含一个示例,通过计算来说明这一点 summary(read.csv("mydata.csv")) 在这个例子中,f 是通用函数摘要,它将一个对象作为参数。 我需要计算类似的东西: mycalc(read.csv("mydata.csv")) 或者 myplot(read.csv("my data.csv")) 其中 f 将数据帧作为参数。 当将 read.csv 函数返回的 sessionid 或哈希键作为对象参数提供时,这似乎不起作用。 如何解决这种两个非泛型函数的链接? 这是一个完整的例子: 准备包在 R 中测试 f(g(x)) 这里的 plotcars(dfcars()) dfcars<-function(){ data(cars); cars } plotcars<-function(df){ matplot(1:nrow(df),df) } plotcars(dfcars()) # test the two chained functions are working package.skeleton(list = c("dfcars", "plotcars")
  • 在 ipython 中使用 igraph 绘制顶点标签的问题(Issue plotting vertex labels using igraph in ipython)
    问题 我通常在 IPython notebook 中工作,我在 Windows 上使用以下命令打开它 ipython qtconsole --matplotlib inline 我目前正在使用 IPython QtConsole 3.0.0、Python 2.7.9 和 IPython 3.0.0。 我想绘制一个图形及其标签 from igraph import * g = Graph.Lattice([4,4],nei=1,circular=False) g.vs["label"]=[str(i) for i in xrange(16)] plot(g, layout="kk") 通过这种方式,我获得了图形的内联图,但没有标签,并且对于每个缺失的标签,我都收到以下消息错误 link glyph0-x hasn't been detected! 其中 x 是某个整数。 我还尝试使用vertex_label = ...直接在plot()命令中指定标签,但没有任何效果。 在我看来,标签定义正确,问题出在 ipython 笔记本和/或用于绘制图形的模块中。 任何人都可以帮助我解决这个问题吗? 我还使用以下命令尝试了所有可能的图形格式 SVG 和 PNG,但问题仍然存在。 %config InlineBackend.figure_format = 'svg' %config
  • Rmpi, OpenCPU, and Apparmor: DENIED request for "/"
    I have an R package that sends out a job to the OpenMPI cluster I have running by means of the Rmpi package. All works as expected within an R session run from the console. However, when I try to execute the relevant function with from my OpenCPU server like this (details changed to protect the innocent): curl -XPOST http://99.999.999.99/ocpu/library/MyPackage/R/my_cluster_function I get this error: R call failed: process died. (Other, non-cluster calling functions within the package work as expected via OpenCPU). I noticed in /var/log/kern.log a variety of requests being DENIED by apparmor
  • 我应该使用哪种布局来获得igraph中的不重叠边缘?(Which layout should I use to get non-overlapping edges in igraph?)
    问题 我正在尝试使用树状数据构建图形,其中节点通常会分成> 2条边。 我尝试了各种布局,但我发现layout.reingold.tilford参数将生成具有无分支数据的树状图。 但是,输出并不特别吸引人。 我宁愿使用诸如layout.lgl或layout.kamada.kawai之类的东西,因为它们会产生更多的径向结构。 我看不到如何更改R中的参数,以使这些树没有重叠的边缘。 这可能吗? 我以Pajek格式导入了一个简单的数据文件,其中包含355个节点和354个边。 我目前正在使用以下命令进行打印: plot.igraph(g,vertex.size=3,vertex.label=NA,layout=layout.lgl) 这给了我这样的输出,虽然不错,但仍然有重叠的边缘。 我读过您可以使用tkplot或诸如cytoscape之类的其他程序来手动修复此问题,但是我要构建许多这样的文件,并且它们的大小使手动校正变得很麻烦。 非常感谢。 回答1 layout.reingold.tilford有一个称为参数circular 。 将此设置为TRUE可以通过将X坐标视为角度(在适当缩放后)并将Y坐标视为半径,将最终布局转换为径向布局。 具有讽刺意味的是,这不能保证最终不会有边缘交叉,但是如果您的子树与图的其余部分相比不是太宽,那将很好地工作: > g <- barabasi.game(100
  • 将 R 作为带有参数的 Web 服务调用并加载 JSON?(Calling R as a web service with parameters and load a JSON?)
    问题 我对R很陌生。 我想要做的是能够从另一个应用程序 (Java) 加载 URL,该应用程序将运行R脚本并输出JSON以便我的应用程序可以使用它。 我知道有一些像shiny这样的框架充当 R 的 Web 服务器,但是我找不到关于如何通过 URL 传递参数以便 R 可以使用它们的这些框架的文档。 理想情况下,我需要调用如下 URL: http://127.0.0.1/R/param1/param2 该 URL 将调用一个 R 脚本,该脚本将使用param1和param2执行一些功能并返回一个JSON ,然后我将从我的应用程序中读取该JSON 。 回答1 如果您还没有这样做,请检查 [DeployR]。 您还可以向DeployR Google Group 发帖寻求帮助。 为了充分披露,我是DeployR的作者之一 概述 DeployR 是一种集成技术,用于在 Web、桌面、移动和仪表板应用程序以及后端系统中部署 R 分析。 DeployR 将您的 R 脚本转换为分析 Web 服务,因此 R 代码可以由运行在安全服务器上的应用程序轻松执行。 使用分析 Web 服务,DeployR 还解决了那些采用基于 R 的分析以及现有 IT 基础设施的人所面临的关键集成问题。 这些服务使应用程序开发人员可以轻松地与数据科学家合作,将 R 分析集成到他们的应用程序中,而无需任何 R 编程知识。
  • 在 R 中读取有向图(Read a directed graph in R)
    问题 我在阅读/创建有向图时遇到问题。 我按照我在这里找到的步骤进行了操作。 这是我的文本文件graph.txt : 1 2 1 3 2 5 3 4 3 5 4 5 5 6 5 10 6 7 7 8 7 9 7 12 8 9 9 10 9 11 9 12 10 11 11 7 11 12 现在我读了这个graph.txt : library("igraph") xlist<-read.graph("graph.txt", format="edgelist") 然后我绘制它: plot(xlist) 但这不是我读入 xlist 的图表: 如您所见,1->2、1->3、5->10 等之间没有边缘。 如何正确读取有向图? 完成此操作后,如何显示两个节点之间的所有最短路径? 回答1 这对我来说似乎很好用: xlist<-read.table("graph.txt") xlist <- graph.data.frame(xlist) plot(xlist) 注意R更改节点并将它们从零向上索引(不在最近的igraph更新中,如下面的@Sacha Epskamp 评论)。 使用: plot(xlist, vertex.label= V(xlist)$name) 你会看到你想要的名字。 即 1 和 2 之间的边。 绘制最短路径的一种方法是使用get.all.shortest.paths
  • 在python中使用iGraph进行社区检测并将每个节点的社区编号写入CSV(Using iGraph in python for community detection and writing community number for each node to CSV)
    问题 我有一个网络,我想使用edge_betweenness社区检测算法进行分析。 我熟悉 NetworkX,但我正在尝试学习 iGraph,因为它是 NetworkX 上的其他社区检测方法。 我的最终目标是运行edge_betweenness社区检测并找到最佳社区数量,并为图中的每个节点编写一个带有社区成员资格的 CSV。 以下是我目前的代码。 非常感谢任何帮助确定社区成员身份。 输入数据('network.txt'): 1 2 2 3 2 7 3 1 4 2 4 6 5 4 5 6 7 4 7 8 8 9 9 7 10 7 10 8 10 9 图形代码 import igraph # load data into a graph g = igraph.Graph.Read_Ncol('network.txt') # plot graph igraph.plot(g) # identify communities communities = igraph.community_edge_betweenness() # not really sure what to do next num_communities = communities.optimal_count communities.as_clustering(num_communities)
  • 在python中将边列表导入igraph的格式(Format for importing edgelist into igraph in python)
    问题 igraph接受导入到python中的边列表格式是什么? 包含我的加权边缘的文本文件应该是什么样? 我以前将igraph与R一起使用,但是在我需要使用的计算机上没有可正常工作的R安装---所以我陷入了python的困境。 我有一个egelist.txt像这样的东西: 123123, 321321, 1 222222, 333333, 2 123123, 333333, 3 222222, 321321, 4 ...这些值的格式为(来源,目标,重量)形式。 我将如何在python中导入呢? 还是应该重新格式化我的输入? 我正在尝试 import igraph g = igraph.Graph.Read_Edgelist() 我不知道如何设置如何告诉import语句期望的列顺序是什么,以及我对文档的理解(http://hal.elte.hu/~nepusz/development/igraph/tutorial/ tutorial.html)是假设我在玩321,321个节点,而不是将“ 321321”作为该节点的标记ID。 回答1 除去文件中的所有逗号(即仅使用空格作为分隔符),然后使用Graph.Read_Ncol 。 这应该可以解决问题。 文件中的数字ID将分配给name顶点属性,并且边缘权重将存储在weight edge属性中。
  • Format for importing edgelist into igraph in python
    What is the edgelist format accepted by igraph for import into python? What should the textfile that contains my weighted edges look like? I've used igraph with R before, but don't have a working R installation on the machine I need to use---so I'm stuck in python. I have an egelist.txt something like this: 123123, 321321, 1 222222, 333333, 2 123123, 333333, 3 222222, 321321, 4 ...where the values are in (source, target, weight) form. How would I import this in python? Or should I reformat my input? I'm tentatively trying import igraph g = igraph.Graph.Read_Edgelist() I can't tell how to set
  • 与igraph或其他库重叠进行社区检测(Overlapping community detection with igraph or other libaries)
    问题 我想在小型网络/图中发现重叠的社区。 通过重叠,我的意思是一个节点可以包含在检测算法的输出中的多个社区/集群中。 我已经看过由curretly提供各种社区检测算法igraph ,但我认为他们没有处理重叠的社区。 理想情况下,我希望能够以编程方式利用Python中此类算法的某些实现。 但是,其他语言的实现也可以。 回答1 不久前,我已经使用igraph的Python接口实现了Ahn等人的分层链接聚类算法; 在此处查看其源代码。 另外,使用igraph在Python中实现CFinder相当容易。 这是我想出的: #!/usr/bin/env python from itertools import combinations import igraph import optparse parser = optparse.OptionParser(usage="%prog [options] infile") parser.add_option("-k", metavar="K", default=3, type=int, help="use a clique size of K") options, args = parser.parse_args() if not args: parser.error("Required input file as first argument"