当前位置:首页 > 行业动态 > 正文

cytoscape js 实例

html,,,,,,,,, var cy = cytoscape({, container: document.getElementById('cy'),, elements: [, { data: { id: 'a', parent: 'b' } },, { data: { id: 'b' } },, { data: { id: 'c' } },, { data: { id: 'd', source: 'a', target: 'c' } }, ],, style: [, { selector: 'node', style: { 'background-color': '#666' } },, { selector: 'edge', style: { 'width': 3, 'line-color': '#ccc' } },, { selector: '#a', style: { 'background-color': 'red' } },, { selector: '#b', style: { 'background-color': 'blue' } },, { selector: '#c', style: { 'background-color': 'green' } }, ], });,,,,

Cytoscape.js 实例:构建交互式生物分子网络图

在现代生物信息学研究中,可视化复杂的生物分子网络对于理解基因表达、蛋白质相互作用以及疾病机制至关重要,Cytoscape.js 是一个强大的开源JavaScript库,它提供了丰富的功能来创建、操作和展示这些复杂的网络图,下面将通过一个具体的实例,详细介绍如何使用 Cytoscape.js 构建一个交互式的生物分子网络图。

项目准备

确保你的开发环境中已经安装了Node.js和npm(Node包管理器),创建一个新的项目目录并初始化一个新的npm项目:

mkdir bio-network-visualization
cd bio-network-visualization
npm init -y

安装 Cytoscape.js 及其依赖项:

npm install cytoscape cytoscape-cose-bilkent

创建基本的HTML结构

在项目目录中创建一个index.html 文件,并添加以下基本HTML结构:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bio Network Visualization</title>
    <style>
        #cy {
            width: 100%;
            height: 600px;
            border: 1px solid #ccc;
        }
    </style>
</head>
<body>
    <div id="cy"></div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.20.0/cytoscape.min.js"></script>
    <script src="app.js"></script>
</body>
</html>

3. 编写 Cytoscape.js 脚本

在项目目录中创建一个app.js 文件,并编写以下 Cytoscape.js 脚本:

document.addEventListener('DOMContentLoaded', function() {
    // 初始化 Cytoscape 实例
    var cy = cytoscape({
        container: document.getElementById('cy'), // 容器元素
        elements: [ // 初始元素集
            { data: { id: 'a', label: 'Gene A' } },
            { data: { id: 'b', label: 'Gene B' } },
            { data: { id: 'c', label: 'Protein C' } },
            { data: { id: 'ab', source: 'a', target: 'b' } },
            { data: { id: 'bc', source: 'b', target: 'c' } }
        ],
        style: [ // 样式定义
            {
                selector: 'node',
                style: {
                    'background-color': '#666',
                    'label': 'data(label)'
                }
            },
            {
                selector: 'edge',
                style: {
                    'width': 3,
                    'line-color': '#ccc',
                    'target-arrow-color': '#ccc',
                    'target-arrow-shape': 'triangle'
                }
            }
        ],
        layout: {
            name: 'cose-bilkent' // 使用 COSE-Bilkent 布局算法
        }
    });
    // 添加交互功能:点击节点显示详细信息
    cy.on('tap', 'node', function(evt){
        var node = evt.target;
        var nodeId = node.id();
        var nodeLabel = node.data('label');
        alert('Node ID: ' + nodeId + '
Label: ' + nodeLabel);
    });
});

运行项目

在终端中运行以下命令来启动一个简单的HTTP服务器:

npx http-server .

打开浏览器,访问http://localhost:8080,你应该能够看到一个包含三个节点和两条边的简单生物分子网络图,点击节点时,会弹出一个对话框显示节点的ID和标签。

扩展功能

为了进一步增强这个实例的功能,你可以:

加载外部数据:从服务器或本地文件中加载更复杂的生物分子网络数据,例如使用fetch API 从后端API获取JSON格式的数据。

添加更多样式:根据不同的节点和边类型应用不同的颜色、形状和大小,以更好地区分不同的生物分子。

实现筛选和搜索功能:允许用户通过输入框筛选特定的基因或蛋白质,或者通过关键字搜索整个网络。

集成其他工具:结合其他生物信息学工具或数据库,如NCBI、UniProt等,提供更丰富的上下文信息和分析功能。

FAQs

Q1: 如何更改节点的颜色和形状?

A1: 可以通过修改style 数组中的样式规则来更改节点的颜色和形状,要将所有节点的背景颜色更改为蓝色,并将形状更改为圆形,可以这样写:

{
    selector: 'node',
    style: {
        'background-color': '#00f',
        'shape': 'ellipse'
    }
}

Q2: 如何实现筛选功能?

A2: 可以实现一个文本输入框,让用户输入筛选条件,然后根据输入的条件过滤网络图中的元素,如果用户输入一个基因名称,可以使用 Cytoscape.js 的filter 方法来隐藏不匹配该名称的节点和相关的边,这需要结合事件监听器和数据处理逻辑来实现。

小编有话说

通过这个实例,我们展示了如何使用 Cytoscape.js 构建一个基本的生物分子网络图,并介绍了一些基础的交互功能,Cytoscape.js 的强大之处在于它的灵活性和可扩展性,可以根据具体的需求进行定制和扩展,希望这个实例能够帮助你入门 Cytoscape.js,并激发你进一步探索生物信息学可视化的兴趣!如果你有任何问题或需要进一步的帮助,请随时留言讨论。

0