classes.py 文件源码

python
阅读 27 收藏 0 点赞 0 评论 0

项目:binet 作者: crisjf 项目源码 文件源码
def _project_AA(self,side):
        """
        Builds the projection of the bipartite network on to the chosen side.
        The projection is done using the ADAMIC-ADAR index.

        Parameters
        ----------
        side : int or str
            Tags for each side of the bipartite network.
        """
        self._check_side(side)
        aside = self.side if side == self.aside else self.aside
        net = self.edges(as_df=True)[[side,aside]]
        AA = merge(net,net,how='inner',left_on=aside,right_on=aside)
        nodes = self.nodes(side,as_df=True)[[side]].reset_index().rename(columns={'index':side+'_index'})

        AA = merge(AA,nodes.rename(columns={side:side+'_x',side+'_index':side+'_index_x'}),how='left',right_on=side+'_x',left_on=side+'_x')
        AA = merge(AA,nodes.rename(columns={side:side+'_y',side+'_index':side+'_index_y'}),how='left',right_on=side+'_y',left_on=side+'_y')
        AA = AA[AA[side+'_index_x']>AA[side+'_index_y']].drop([side+'_index_x',side+'_index_y'],1)
        AA = merge(AA,self.degree(aside,as_df=True))
        AA['AA'] = 1./log(AA['degree'])
        AA = AA[[side+'_x',side+'_y','AA']].groupby([side+'_x',side+'_y']).sum().reset_index()

        self.P[side] = gGraph(node_id=side)
        self.P[side].add_weighted_edges_from([val[1:] for val in AA.itertuples()])
        nodes = merge(self.P[side].nodes(as_df=True),self.nodes(side,as_df=True),how='left')
        properties = nodes.columns.values.tolist()
        properties.remove(side)
        for prop in properties:
            values = dict(zip(nodes[side].values,nodes[prop].values))
            set_node_attributes(self.P[side],prop,values)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号