在 Cytoscape 中使用不同参数循环调用应用程序

问题描述 投票:0回答:3

我是 Cytoscape 的新手。我想知道如何在 Cytoscape 中使用不同参数多次运行应用程序(例如 MCL 聚类算法)。有没有办法编写一个脚本来执行此操作,而不是针对不同的参数手动运行多次? 谢谢!

while-loop cytoscape.js cytoscape
3个回答
2
投票

谢谢滑板车。 我看到了他的回答。 我仍然对 MCODE 有问题。 我通过阅读这篇论文“Cytoscape Automation:增强基于工作流的网络分析”找到了答案。 我想把脚本放在这里以防有人有疑问。 您需要从 python 导入

import requests, json
import numpy

REST_ENDPOINT = 'http://localhost:1234'

然后假设我们要使用亲和力传播聚类算法,那么您可以转到帮助->自动化->CyRest命令API。您可以在这里找到该应用程序及其所有参数。您首先从 cytoscape 加载输入网络。

counter = 0
ap_clusters = dict()
for i in numpy.arange(-1.0, 1.1, 0.1):
    message_body = {
        "preference": str(round(i,1))
        }
    response = requests.post(REST_ENDPOINT + '/v1/commands/cluster/ap', data = 
    json.dumps(message_body), headers = {'Content-Type': 'application/json'})
    response_data = response.json()['data']
    ap_clusters[counter] = response_data['clusters']
    counter += 1

上面是从python多次调用AP聚类的代码。

对于 AP 和 MCL,代码适用于多个参数。然而,当我尝试使用不同的参数集调用 MCODE 时,它停止了连接并关闭了 cytoscape 应用程序。它只能运行一组参数。 这是错误: “引发连接错误(错误,请求=请求) ConnectionError: ('连接中止。', RemoteDisconnected('远程端关闭连接而无响应'))"

这是mcode算法的代码:

counter = 0
mcode_clusters = dict()
for i in numpy.arange(3,6,1):
    for j in numpy.arange(0.1,0.56,0.05): #----vertex weight percentage
        for h in ["on","off"]:
            for f in ["on","off"]:
                if f=="on":
                    for p in [0,0.1,0.2]: #---fluffing percentage

                        message_body = {
                                "fluff" : f,
                                "fluffNodeDensityCutoff" : str(round(p,1)),
                                "haircut" : h,
                                "maxDepthFromStart" : str(i),
                                "nodeScoreCutoff": str(round(j,1))
                                }
                        response = requests.post(REST_ENDPOINT + '/v1/commands/cluster/mcode', data = json.dumps(message_body), headers = {'Content-Type': 'application/json'})
                        response_data = response.json()['data']
                        mcode_clusters[counter] = response_data['clusters']
                        counter += 1

如果您有任何解决方案,如果您能与我分享,我真的很感激。

谢谢。 莎拉


1
投票

我认为露丝在 cytoscape-helpdesk 中已经非常清楚地回答了这个问题:

您可以执行以上所有操作。无论对你来说最简单的是什么。 有一个库 py2cytoscape,您可以使用它从 > python 向 cytoscape 发出命令。信息可以在这里找到:https://py2cytoscape.readthedocs.io/en/latest/ 有关 cytoscape 自动化的更多信息,请查看:http://manual.cytoscape.org/en/stable/Programmatic_Access_to_Cytoscape_Features_Scripting.html

但您也可以通过自动化来运行它。您可以使用每个命令创建一个文本文件(例如命令列表,如: cluster mcl attribute="correlation" network=1234"),然后转到工具 --> 执行批处理文件 > 执行整个文件。我不确定是否支持循环。如果你想循环任何内容,我建议使用 python。

谢谢, 露丝

我只是补充一下,目前批处理文件不支持循环。


0
投票

对于我的问题,我不得不说:

cytoscape中有两个mcode。一个在 clusterMaker 中,另一个属于 cytoscape。当我尝试调用 mcode 时,我使用了命令“'/v1/commands/cluster/mcode'”,我在 clusterMaker 中调用了该命令,但参数名称是基于 cytoscape 中的命令。我将命令更改为“'/v1/commands/mcode/cluster'”,现在问题已解决。 非常感谢。 莎拉

© www.soinside.com 2019 - 2024. All rights reserved.