Python包C/C++文库在保度网随机化中的应用

xswap的Python项目详细描述


xswap:快速保度网络排列

xswap是一种保留度的网络随机化(置换)算法[1]。 置换网络可用于网络分析中的许多目的,包括在仅保持网络的度序列时生成特征的反实际分布,或用于计算仅给定网络的度序列的边缘的先验概率。 总的来说,排列网络允许量化程度对分析和预测方法的影响。 当网络的度序列受到偏差影响时,理解这种影响是很有用的。 由于Hanhij_rvi等人的原因,该实现是算法的修改版本。有两个附加参数(allow_self_loopsallow_antiparallel),这使得二分网络、有向网络和无向网络具有更大的通用性。

  1. 图形随机化技术 Sami Hanhij_rvi、Gemma C.Garriga、Kai Puolam_ki 2009年暹罗国际数据挖掘会议记录(2009-04-30)https://doi.org/f3mn58 doi:10.1137/1.9781611972795.67

用法示例

排列边列表
>>>edges=[(0,1),(1,0)]>>>permuted_edges,permutation_statistics=xswap.permute_edge_list(edges,allow_self_loops=True,allow_antiparallel=True,multiplier=10)>>>permuted_edges[(0,0),(1,1)]>>>permutation_statistics{'swap_attempts':20,'same_edge':10,'self_loop':0,'duplicate':1,'undir_duplicate':0,'excluded':0}

基于计算度序列的边存在概率

>>>edges=[(0,1),(1,0)]>>>prior_prob_df=xswap.prior.compute_xswap_priors(edges,n_permutations=10000,shape=(2,2),allow_self_loops=True,allow_antiparallel=True)>>>prior_prob_dfsource_idtarget_idedgesource_degreetarget_degreexswap_prior000False110.5101True110.5210True110.5311False110.5

参数的选择

二部网络

应使用双邻接矩阵索引二部网络,这意味着边(0, 0)是从源节点0到目标节点0的,并且不是自循环。 此外,应使用allow_self_loops=Falseallow_antiparallel=True排列二分网络。

有向和无向网络

对于非二分网络,allow_self_loopsallow_antiparallel的决策并不总是相同的。 对于无向网络,设置allow_antiparallel=False,否则表示相同边的边(1,0)和(0,1)将被视为独立的。 根据上下文的不同,定向网络可能允许也可能不允许反平行边。 类似地,根据被排列的特定网络,自循环可以允许也可以不允许用于有向或无向网络。

xswap库包括咆哮的位图(https://github.com/RoaringBitmap/CRoaring),在apache 2.0许可证(https://github.com/RoaringBitmap/CRoaring/blob/LICENSE)下提供。

致谢

这个项目的开发主要在宾夕法尼亚大学的Greene Lab进行。然而,作为hetio组织下的一个开源项目,这个存储库感谢它的维护者、贡献者和用户社区。

这项工作的部分资金来自戈登和贝蒂摩尔基金会的数据驱动的发现倡议,通过向凯西·格林提供GBMF4552,向布莱尔·沙利文提供GBMF4560,以及国家卫生研究院的国家人类基因组研究所R01 HG010067。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java:不解析XML的简单XML。例外   KIE Workbench的java自定义UI   java将元素从bucket移动到LinkedList,但有一个元素被完全删除   如何将java stream collect转换为scala   java运行AsynkTask多次不工作   java组织。xml。萨克斯。SAXParseException:cvccomplextype。2.4.c:匹配的通配符是严格的   java是一种计算排序算法所需时间的合适方法   java在O(logn)时间内对排序整数数组中具有相同数字的数字进行计数   xpages从当前数据库javaAgent调用另一个数据库的javaAgent   java如何在instagram中上传特定位置的所有照片   JavaApachePOI可以有效地删除多个列   java创建的对象数   java我可以在关闭连接时关闭Oracle JDBC自动提交吗?