【复杂网络建模】——XGI库进阶学习:生成随机超图

目录

一、构建随机超图

二、绘制随机超图

三、其他功能

3.1 访问超图的最大阶

3.2 列出所有边尺寸

3.3 边大小的直方图

3.4 节点度直方图 


一、构建随机超图

XGI(eXtensible Graphs and Hypergraphs)是一个Python库,专注于超图(hypergraphs)的创建、操作和分析。它提供了一个灵活的框架来处理超图结构,包括无向和有向超图。XGI扩展了现有图处理库的功能,如NetworkX,通过引入对超边(hyperedges)的支持,这些超边可以连接两个以上的顶点,为研究者和开发者提供了一种强大的工具来探索超图理论以及在各种领域中的应用,如社会网络分析、生物信息学和复杂系统研究。

首先导入相关的python库:

import matplotlib.pyplot as plt
import numpy as np

import xgi

输出XGI的版本。 

xgi.__version__
N = 20
ps = [0.1, 0.01]
H = xgi.random_hypergraph(N, ps, seed=1)

该函数生成一个有N个节点的随机超图,任意d+1个节点与一个超边以概率ps[d-1]相连接。

可以打印超图,并像这样访问节点和边的列表:

print(H)
print(H.nodes)
print(H.edges.members())

二、绘制随机超图

可视化对于理解复杂的数据结构至关重要。要使用默认布局绘制超图,使用以下命令:

pos = xgi.barycenter_spring_layout(H, seed=1)
xgi.draw(H, pos=pos);

XGI还提供了几种方法来个性化高阶结构的绘图。

例如,我们可以将节点放置在一个圆圈上:

pos_circular = xgi.circular_layout(H)
xgi.draw(H, pos=pos_circular);

或者改变超边和链接的颜色: 

xgi.draw(H, dyad_color="tab:red", edge_fc="tab:orange", pos=pos);

xgi.draw(H, node_labels=True, pos=pos);

添加节点标签是另一个方便的功能: 

完整代码:

# — coding: utf-8 –
import matplotlib.pyplot as plt
import numpy as np

import xgi
print(xgi.__version__)

# Creating a Random Hypergraph
N = 20
ps = [0.1, 0.01]
H = xgi.random_hypergraph(N, ps, seed=1)

print(H)
print(H.nodes)
print(H.edges.members())


# Plotting a random hypergraph

pos = xgi.barycenter_spring_layout(H, seed=1)
# xgi.draw(H, pos=pos)

pos_circular = xgi.circular_layout(H)
# xgi.draw(H, pos=pos_circular)
# xgi.draw(H, dyad_color="tab:red", edge_fc="tab:orange", pos=pos)

xgi.draw(H, node_labels=True, pos=pos)

plt.show()

三、其他功能

3.1 访问超图的最大阶

xgi.max_edge_order(H)

这在处理更大、更复杂的结构时尤其有用。

3.2 列出所有边尺寸

要访问超图中所有的边大小,使用下面的命令:

xgi.unique_edge_sizes(H)

3.3 边大小的直方图

让我们更进一步,对超图进行更详细的分析:绘制边缘顺序的直方图。

首先,让我们创建一个更大更复杂的随机超图:

N_new = 50
ps_new = [0.1, 0.01, 0.001, 0.0001]
H_new = xgi.random_hypergraph(N_new, ps_new)

要访问边的顺序,请使用stats函数。要更深入地了解这一点,请查看关于统计的重点教程或查阅文档。可以获得所有边顺序的列表,然后以通常的方式创建直方图。

list_of_orders = H_new.edges.order.aslist()
plt.hist(
    list_of_orders,
    bins=range(min(list_of_orders), max(list_of_orders) + 2, 1),
    align="left",
)
plt.xticks(range(min(list_of_orders), max(list_of_orders) + 1, 1))
plt.xlabel("Order")
plt.ylabel("Number of edges");

3.4 节点度直方图 

类似地,使用stats函数,可以在超图中创建节点度的直方图:

nodes_degrees_list = H_new.nodes.degree.aslist()
plt.hist(
    nodes_degrees_list,
    bins=range(min(nodes_degrees_list), max(nodes_degrees_list) + 1, 1),
    align="left",
)
plt.xticks(range(min(nodes_degrees_list), max(nodes_degrees_list) + 1, 5))
plt.xlabel("Node degree")
plt.ylabel("Number of nodes");

  关于复杂网络建模,我前面写了很多,大家可以学习参考。

【复杂网络建模】——常用绘图软件和库_图论画图软件

【复杂网络建模】——Pytmnet进行多层网络分析与可视化

【复杂网络建模】——Python通过平均度和随机概率构建ER网络

【复杂网络建模】——通过图神经网络来建模分析复杂网络

【复杂网络建模】——Python可视化重要节点识别(PageRank算法)

【复杂网络建模】——基于Pytorch构建图注意力网络模型

【复杂网络建模】——Hypergraphx: 用于高阶网络分析的库

【复杂网络建模】——基于节点相似性的社团划分算法

【复杂网络建模】——链路预测算法及其应用

 【复杂网络建模】——ER网络度分布、无标度网络度分布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/483115.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ARM CPU的总线发展

ARM架构是当今世界上最为广泛应用的嵌入式处理器架构之一,其CPU总线的发展对于系统性能和扩展性具有重要影响。本文将探讨ARM CPU总线的发展历程、关键技术和对系统性能的影响。 以下是我整理的关于嵌入式开发的一些入门级资料,免费分享给大家&#xff…

Flutter学习10 - Json解析与Model使用

对于网络请求返回的 Json 数据&#xff0c;一般会进行如下解析&#xff1a; 将 Json String 解析为 Map<String, dynamic>将 Json String 解析为 Dart Model 发起一个返回 Json String 的网络请求 import package:http/http.dart as http;void main() {_doGet(); }_do…

计算机网络——26通用转发和SDN

通用转发和SDN 网络层功能&#xff1a; 转发&#xff1a; 对于从某个端口 到来的分组转发到合适的 输出端口路由&#xff1a; 决定分组从源端 到目标端的路径 网络层 传统路由器的功能 每个路由器(Per Route)的控制平面 &#xff08;传统&#xff09; 每个路由器上都有实…

本地运行环境工具UPUPWANK(win)和Navicat数据库管理工具

UPUPWANK安装地址&#xff1a;https://www.upupw.net 1.进入UPUPWANK后点击一键开启 2.新增项目 这里请千万注意80端口&#xff0c;如果80端口被占用了&#xff0c;请记住去任务管理器关闭占用80端口的进程。不然就不会成功显示。&#xff08;笔者含泪警告&#xff0c;一晚上的…

2024年C语言最新经典面试题汇总(11-20)

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…

Day44:WEB攻防-PHP应用SQL盲注布尔回显延时判断报错处理增删改查方式

目录 PHP-MYSQL-SQL操作-增删改查 PHP-MYSQL-注入函数-布尔&报错&延迟 基于布尔的SQL盲注-逻辑判断(需要有回显,没回显搞不了)跟union需要的条件差不多 基于时间的SQL盲注-延时判断(不需要任何回显) 基于报错的SQL盲注-报错回显(需要报错回显&#xff0c;没报错回…

算法系列--链表刷题(二)

&#x1f495;"轻舟已过万重山"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;算法系列–链表刷题(二) 今天为大家带来的是算法系列--链表刷题(二),带来了几道经典的有关链表的面试题(合并K个有序列表) 1.两数相加 https://leetcode.cn/problems/a…

短视频素材网站去哪里找?

嘿&#xff0c;各位视频创作者们&#xff01;想知道短视频素材网站去哪里找&#xff1f;今天就来给大家介绍几个必备的视频素材网站&#xff0c;特别是对于入门新手和运营人员来说&#xff0c;这些网站可是必不可少的资源哦&#xff01; 首先&#xff0c;我们来看看那些提供可…

FreeRtos时间管理(一)

FreeRtos的时间管理包括相对延时vTaskDelay、绝对延时vTaskDelayUntil、系统时钟Systick 本篇主要分析相对延时vTaskDelay函数 调用vTaskDelay是一定会触发任务切换的&#xff0c;需要分析下PendSv中断触发的位置。 一、 函数流程 二 、prvAddCurrentTaskToDelayedList 注意&…

Redis中AOF、RDB和复制功能对过期键的处理

AOF、RDB和复制功能对过期键的处理 生成RDB文件 在执行SAVE命令或者BGSAVE命令创建一个新的RDB文件时&#xff0c;程序会对数据库中的键进行检查&#xff0c;已过期的键不会被保存到新创建的RDB文件中。 例子 举个例子&#xff0c;如果数据库中包含三个键k1、k2、k3&#x…

地宫取宝dfs

分析&#xff1a; 矩阵里的每一个位置都有标记&#xff0c;要求的问题是&#xff1a;有几种方法能完成这个规定。 那么&#xff0c;我们只需要计算从开始(1,1)到最后(n,m)的深度优先搜索中&#xff0c;有几个是满足要求的即为正确答案。 有个要求是&#xff0c;如果一个格子中…

删除单链表偶数节点

本题要求实现两个函数&#xff0c;分别将读入的数据存储为单链表、将链表中偶数值的结点删除。链表结点定义如下&#xff1a; struct ListNode {int data;struct ListNode *next; };函数接口定义&#xff1a; struct ListNode *createlist(); struct ListNode *deleteeven( s…

Linux hook系统调用使你文件无法删除

文章目录 前言一、什么是hook技术二、Linux hook种类三、系统调用表hook3.1 查看删除文件用到系统调用3.2 获取系统调用函数3.3 编写hook函数3.4 替换hook函数3.5 测试 参考资料 前言 hook技术在Linux系统安全领域有着广泛的应用&#xff0c;例如通过hook技术可以劫持删除文件…

xilinx的高速接口构成原理和连接结构

本文来源&#xff1a; V3学院 尤老师的培训班笔记【高速收发器】xilinx高速收发器学习记录Xilinx-7Series-FPGA高速收发器使用学习—概述与参考时钟GT Transceiver的总体架构梳理 文章目录 一、概述&#xff1a;二、高速收发器结构&#xff1a;2.1 QUAD2.1.1 时钟2.1.2 CHANNEL…

pytest之fixture结合conftest.py文件使用+断言实战

pytest之fixture结合conftest.py文件使用 conftest.py--存放固件固件的优先级pytest执行流程pytest之断言实战pytest结合allure-pytest插件生成美观的报告 conftest.py–存放固件 在一个项目的测试中&#xff0c;大多数情况下会有多个类、模块、或者包要使用相同的测试夹具。这…

【Node.js】全局变量和全局 API

node 环境中没有 dom 和 bom &#xff0c;此外 es 基本上都是可以正常使用的。 如果一定要使用 dom 和bom&#xff0c;可以借助第三方库 jsdom 帮助我们实现操作。npm i jsdom 实例&#xff1a; const fs require(node:fs) const {JSDOM} require(jsdom)const dom new JS…

命令执行漏洞

绕过技巧&#xff1a; cat 233.txt # 管道符号绕过 # 空格绕过 ${IFS} # %0a、%09 # 重定向绕过 < <> # 变量拼接绕过 kali:$ ac;bat;cfl;dag;$a$b $c$d # 单引号、双引号绕过 cat flag cat"" flag # 编码绕过 $(printf "\x63\x61\x74\x20\x2f\x…

前端学习之css 定位与浮动

定位 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>定位和浮动</title><style>*{/* 将模块紧紧贴着浏览器边框 */margin: 0;}.c{background-color: blueviolet;width: 100px;height: 1…

长安链团队论文入选国际顶会Usenix Security 2024

零知识证明是区块链扩容和隐私保护的关键前沿技术&#xff0c;其天然具备完备性、可靠性和零知识性的特点&#xff0c;是提升区块链交易吞吐量与可扩展性、在验证用户身份的同时保护用户数据隐私&#xff0c;实现复杂计算不可或缺的关键技术。基于零知识证明技术实现高兼容性、…

鸿蒙Harmony应用开发—ArkTS-像素单位

ArkUI为开发者提供4种像素单位&#xff0c;框架采用vp为基准数据单位。 说明&#xff1a; 本模块首批接口从API version 7开始支持&#xff0c;后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 名称描述px屏幕物理像素单位。vp屏幕密度相关像素&#xff0c;…