【问题标题】:Importing Cytoscape Desktop 3.1 BETA exported JSON file (.cyjs) to Cytoscape.js将 Cytoscape Desktop 3.1 BETA 导出的 JSON 文件 (.cyjs) 导入 Cytoscape.js
【发布时间】:2014-02-12 00:21:44
【问题描述】:

我使用内置导出器从 Cytoscape 3.1 BETA 3 将蛋白质-蛋白质网络导出到 JSON (cyjs) 文件。我尝试使用 Cytoscape.js 库将此 cyjs 文件导入 Web 应用程序,但失败了。

我昨天在这里阅读了 gcpdev (Exporting and importing JSON data to Cytoscape.js) 提出的问题,但它对我没有帮助。

导入的 JavaScript 库:jQuery-1.11、Cytoscape.js、Arbor、Arbor-tween。 我的代码是:

<script type="text/javascript">

$('#cy').cytoscape({
  layout: {
    name: 'arbor',
    liveUpdate: true, 
  },

   ready: function(){

     window.cy = this;
     var jsonfile = "src/inside_sc.cyjs";

     $(document).ready(function() {

       $.getJSON(jsonfile, function(json) {
         cy.add( JSON.parse( json ) );
       });

     });

   }
});

</script>

我总是在 Chrome 控制台上收到这样的错误消息:

Uncaught SyntaxError: Unexpected token o      index.html:38
  (anonymous function)                        index.html:38
  j                                           jquery-1.11.0.min.js:2
  k.fireWith                                  jquery-1.11.0.min.js:2
  x                                           jquery-1.11.0.min.js:4
  b                                           jquery-1.11.0.min.js:4

index.html 是我的文件,第 38 行是:

 cy.add( JSON.parse( json ) );

我收到了相同的错误消息,但发生了更改。如果我添加一些样式和基本节点和边缘,也不管$.parseJSON() 函数。

我尝试将这一行改为cy.add( json ); 结果和上面提到的问题一样:

 An element must be of type `nodes` or `edges`; you specified `undefined`
 Uncaught TypeError: Cannot read property 'single' of undefined

当我尝试向控制台显示 JSON 信息时,例如 console.log( json );,它可以正常工作。

我的脚本有什么问题?我该怎么办?

【问题讨论】:

    标签: javascript jquery json cytoscape.js cytoscape


    【解决方案1】:

    据我所知,从 Cytoscape-desktop 导出的 JS 不是 cy.add() 或 init 选项的直接替代品。您需要检查 Cytoscape-desktop 生成的文件,并在 init 选项 (options.elements) 中指定 JSON 中元素的路径。

    【讨论】:

    • 对不起,我是应用程序开发的初学者,我不太明白。那么我应该编写什么代码来将简单的 CyDesktop 导出转换为真正的 CyJS 网络?如何为元素对象实现新元素?
    • 您需要使用options: { elements: json.path.to.elements } 或类似名称,其中path.to.elements 是从Cytoscape 导出的JSON 中指向元素的路径。
    • @maxkfranz 我有一个变量newdata,其中包含一个指定elements 的字符串。在$('#cy').cytoscape({ 我可以做elements:newdata吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2017-01-02
    相关资源
    最近更新 更多