Python包C/C++文库在保度网随机化中的应用
xswap的Python项目详细描述
xswap:快速保度网络排列
xswap是一种保留度的网络随机化(置换)算法[1]。
置换网络可用于网络分析中的许多目的,包括在仅保持网络的度序列时生成特征的反实际分布,或用于计算仅给定网络的度序列的边缘的先验概率。
总的来说,排列网络允许量化程度对分析和预测方法的影响。
当网络的度序列受到偏差影响时,理解这种影响是很有用的。
由于Hanhij_rvi等人的原因,该实现是算法的修改版本。有两个附加参数(allow_self_loops
和allow_antiparallel
),这使得二分网络、有向网络和无向网络具有更大的通用性。
- 图形随机化技术 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=False
和allow_antiparallel=True
排列二分网络。
有向和无向网络
对于非二分网络,allow_self_loops
和allow_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。