Example #1
0
def network_pro_hashtags():
    # Extract interaction networks from proed and pro-recoveryed hashtaged tweeets
    # Select only recovery users who have hashtags from ED hashtag topics
    # rec_tag_users = set(iot.get_values_one_field('fed', 'tag_com', 'id', {'rec_tageted': True}))
    # ped_tag_users = set(iot.get_values_one_field('fed', 'tag_com', 'id', {'ped_tageted': True}))

    # rec_tag_users = set(iot.get_values_one_field('fed', 'prorec_tag', 'user.id'))
    # ped_tag_users = set(iot.get_values_one_field('fed', 'proed_tag', 'user.id'))
    # fedusers = iot.get_values_one_field('fed', 'com', 'id')
    fedusers = pickle.load(open('fed-user-id-str.pick', 'r'))
    print len(fedusers)
    users = [int(uid) for uid in fedusers]

    # only_ped = ped_tag_users - rec_tag_users
    # only_rec = rec_tag_users - ped_tag_users
    # all_users = list(rec_tag_users.union(ped_tag_users))
    for btype in ['communication']:
        # gb = gt.load_beh_network('fed', 'bnet_ed_tag', btype)
        gb = gt.load_beh_network_subset(users, 'fed', 'bnet_ed_tag', btype)
        # for v in gb.vs:
        #     if int(v['name']) in only_ped:
        #         v['set'] = -1
        #     elif int(v['name']) in only_rec:
        #         v['set'] = 1
        #     else:
        #         v['set'] = 0
        gt.summary(gb)
        gb.write_graphml(btype+'-only-fed.graphml')
Example #2
0
def network_analysis():
    # output network among depression users
    # user1 = iot.get_values_one_field('depression', 'users1', 'id')
    # user2 = iot.get_values_one_field('depression', 'users2', 'id')
    # print len(user1), len(user2)
    # alluser = user1 + user2
    alluser = iot.get_values_one_field('depression', 'depressive', 'id')
    follow_net = gt.load_network_subset('depression', 'net', {
        'user': {
            '$in': alluser
        },
        'follower': {
            '$in': alluser
        }
    })
    gt.net_stat(follow_net)
    follow_net.write_graphml('data/follow_net.graphml')

    for beh in ['retweet', 'communication']:
        print beh
        bnetwork = gt.load_beh_network_subset(userlist=alluser,
                                              db_name='depression',
                                              collection='bnet',
                                              btype=beh)
        gt.net_stat(bnetwork)
        bnetwork.write_graphml('data/' + beh + '_net.graphml')
Example #3
0
def generate(dbname, comname, netname, type):
    if type == 'follow':
        g = gt.load_network(dbname, netname)
    else:
        # uids = iot.get_values_one_field(dbname, comname, 'id')
        # pickle.dump(uids, open('data/'+dbname+'-ids.pick', 'w'))
        uids = pickle.load(open('data/'+dbname+'-ids.pick', 'r'))
        g = gt.load_beh_network_subset(uids, dbname, netname, type)

    pickle.dump(g, open('data/'+dbname+type+'.pick', 'w'))
Example #4
0
def generate(dbname, comname, netname, type):
    if type == 'follow':
        g = gt.load_network(dbname, netname)
    else:
        # uids = iot.get_values_one_field(dbname, comname, 'id')
        # pickle.dump(uids, open('data/'+dbname+'-ids.pick', 'w'))
        uids = pickle.load(open('data/' + dbname + '-ids.pick', 'r'))
        g = gt.load_beh_network_subset(uids, dbname, netname, type)

    pickle.dump(g, open('data/' + dbname + type + '.pick', 'w'))
Example #5
0
def diversity_db(dbname, comname, behavior, netname):
    userlist = iot.get_values_one_field(dbname, comname, 'id',
                                        # {'timeline_count': {'$gt': 0}}
                                        )
    g = gt.load_beh_network_subset(userlist, dbname, netname, behavior)
    gt.summary(g)

    # g = bahavior_net(dbname, comname, netname, behavior)
    # pickle.dump(g, open('data/'+dbname+'_'+behavior+'.pick', 'w'))
    print dbname, behavior
    # g = pickle.load(open('data/' + dbname + '_' + behavior + '.pick', 'r'))
    return netstatis(dbname, behavior, g, [str(i) for i in userlist], comname)
Example #6
0
def behavior_network(dbname, colname, filepath):
    '''out retweet and communication network'''
    uids = iot.get_values_one_field(dbname, 'com', 'id')
    print len(uids)
    for beh in ['retweet', 'communication']:
        print beh
        g = gt.load_beh_network_subset(uids, dbname, colname, beh)
        with open(filepath + beh + '.txt', 'wb') as fw:
            for e in g.es:
                source_vertex_id = e.source
                target_vertex_id = e.target
                source_vertex = g.vs[source_vertex_id]
                target_vertex = g.vs[target_vertex_id]

                fw.write('%s\t%s\t%d\n' % ('u' + source_vertex['name'], 'u' +
                                           target_vertex['name'], e['weight']))
Example #7
0
def bahavior_net(dbname, comname, bnetname, btype):
    userlist = iot.get_values_one_field(dbname, comname, 'id',
                                        {'timeline_count': {'$gt': 0}})
    return gt.load_beh_network_subset(userlist, dbname, bnetname, btype)
Example #8
0
def bahavior_net(dbname, comname, bnetname, btype):
    userlist = iot.get_values_one_field(dbname, comname, 'id',
                                        # {'timeline_count': {'$gt': 0}}
                                        )
    return gt.load_beh_network_subset(userlist, dbname, bnetname, btype)
Example #9
0
def recover_proed_community_all_connection():
    '''
    First filter users: pro-recovery and pro-ed, as well as their followings.
    Construct interaction networks among these users, including the outlinks from followings to pro-* users
    :return:
    '''
    # Filtering users
    # prorec, proed = edrelatedcom.rec_proed() ## based on profiles
    # prorec, proed = filter_recovery_sentiment() # based on tweets' sentiments
    # users = iot.get_values_one_field('fed', 'recover', 'user.id') # based on tweet content
    # prorec = [str(i) for i in users]
    # cols = dbt.db_connect_col('fed', 'follownet')

    proed, prorec, proboth = pro_tag_user() # based on hashtags

    cols = dbt.db_connect_col('fed', 'snet')
    name_map, edges, set_map = {}, set(), {}
    for row in cols.find({}, no_cursor_timeout=True):
        n1 = str(row['follower'])
        # if n1 in prorec or n1 in proed:
        n2 = str(row['user'])
        n1id = name_map.get(n1, len(name_map))
        name_map[n1] = n1id
        n2id = name_map.get(n2, len(name_map))
        name_map[n2] = n2id
        edges.add((n1id, n2id))
    g = Graph(len(name_map), directed=True)
    g.vs["name"] = list(sorted(name_map, key=name_map.get)) # return keys ordered by values
    g.add_edges(list(edges))
    g.es["weight"] = 1
    g.vs["set"] = 0
    for v in g.vs:
        if v['name'] in prorec:
            v['set'] = 1
        elif v['name'] in proed:
            v['set'] = 2
        elif v['name'] in proboth:
            v['set'] = 3
    gt.summary(g)

    # g.vs['deg'] = g.indegree()
    # nodes = []
    # for v in g.vs:
    #     if v['set'] == 1 or v['set'] == -1:
    #         nodes.append(v)
    #     elif v['deg'] > 3:
    #         nodes.append(v)
    #     else:
    #         pass
    # print 'Filtered nodes: %d' %len(nodes)
    # g = g.subgraph(nodes)
    # gt.summary(g)

    g.write_graphml('rec-proed-follow-core-hashtag.graphml')


    # sbnet have extended all interactions posted by ED users
    edusers = [int(v['name']) for v in g.vs]
    # gf = gt.load_network_subset('fed', 'net')
    for btype in ['retweet', 'reply', 'mention']:
        gb = gt.load_beh_network_subset(edusers, 'fed', 'sbnet', btype)
        for v in gb.vs:
            v['set'] = g.vs.find(name=v['name'])['set']
        gt.summary(gb)
        gb.write_graphml('rec-proed-'+btype+'-core-hashtag.graphml')