Example #1
0
def print_info_communities(folder, ego, graph):
    clusters_list_temp = graph.community_multilevel()
    clusters_list = []
    for cluster in clusters_list_temp:
        temp = []
        for index in cluster:
            temp.append(graph.vs[index]['name'].decode('utf-8'))
        clusters_list.append(temp)
        
    info_commenters = main_jsons.calculate_info_commenters(folder, ego)
    info_likers = main_jsons.calculate_info_likers(folder, ego)
    info_likers_of_comment = main_jsons.calculate_info_likers_of_comment(folder, ego)

    info_per_cluster = {}
    for cluster in clusters_list:
        info_per_cluster[str(cluster)] = {'nb_comments' : 0, 'nb_likes' : 0, 'nb_likes_of_comments' : 0}
    for cluster in clusters_list:
        info_current = info_per_cluster[str(cluster)]
        for name in cluster:
            if name in info_commenters:
                info_current['nb_comments'] += info_commenters[name]['nb_of_comments']
            if name in info_likers:
                info_current['nb_likes'] += info_likers[name]
            if name in info_likers_of_comment:
                info_current['nb_likes_of_comments'] += info_likers_of_comment[name]
    index_cluster = 0
    sorted_info = []
    for cluster in clusters_list:
        index_cluster += 1
        info_current = info_per_cluster[str(cluster)]
        sorted_info.append((cluster, 
                            info_current['nb_comments'], 
                            info_current['nb_likes'], 
                            info_current['nb_likes_of_comments'],
                            index_cluster))
    sorted_info.sort(key=lambda tup: 3*tup[1]+2*tup[2]+tup[1], reverse = True)
    csv_file = open('GALLERY/'+folder+'/'+ego+'/CSV/list_of_clusters.csv', 'wb')
    writer = csv.writer(csv_file, delimiter = ';')
    for info in sorted_info:
        temp = [info[4]]
        for name in info[0]:
            friend_info = main_jsons.find_friend(folder, ego, name)
            if 'name' in friend_info:
                temp.append(friend_info['name'])
            else:
                temp.append(friend_info['id'])
        writer.writerow([unicode(elem).encode('utf-8') for elem in temp])
        writer.writerow(['nombre de commentaires', 
                         'nombre de likes', 
                         'nombre de likes de commentaires'])
        to_write = []
        writer.writerow(info[1:len(info)-1])
    csv_file.close()
    return clusters_list
Example #2
0
def print_info_commenters_likers(folder, ego, clusters_list):
    list_of_friends = main_jsons.list_of_friends(folder, ego)
    info_commenters = main_jsons.calculate_info_commenters(folder, ego)
    info_likers = main_jsons.calculate_info_likers(folder, ego)
    info_likers_of_comment = main_jsons.calculate_info_likers_of_comment(folder, ego)
    csv_file = open('GALLERY/'+folder+'/'+ego+'/'+'CSV/list_of_commenters_likers.csv', 'wb')
    writer = csv.writer(csv_file, delimiter=';')
    writer.writerow(['id/nom', 'nombre de commentaires', 'nombre de statuts commentés', 'nombre de likes de statuts', 'nombre de likes de commentaires', 'cluster']) 
    
    sorted_info = []
    for friend in list_of_friends:
        cluster_of_this_friend = 0
        for cluster in clusters_list:
            cluster_of_this_friend += 1
            if friend in cluster:
                break
        if friend in info_commenters:
            info_commenter = info_commenters[friend]
        else:
            info_commenter = {'nb_of_comments' : 0, 'nb_of_statuses' : 0}
        if friend in info_likers:
            info_liker = info_likers[friend]
        else:
            info_liker = 0
        if friend in info_likers_of_comment:
            info_liker_of_comment = info_likers_of_comment[friend]
        else:
            info_liker_of_comment = 0
        friend_info = main_jsons.find_friend(folder, ego, friend)
        if 'name' in friend_info:
            friend = friend_info['name']
        infos_list = ((friend, 
                            info_commenter['nb_of_comments'], 
                            info_commenter['nb_of_statuses'], 
                            info_liker, 
                            info_liker_of_comment,
                            cluster_of_this_friend))
        
        sorted_info.append([unicode(s).encode("utf-8") for s in infos_list])
        
    sorted_info.sort(key=lambda tup: 4*tup[1]+3*tup[3]+2*tup[4]+tup[1], reverse = True) 
    
    for info in sorted_info:
        writer.writerow(info) 
        
    csv_file.close()
Example #3
0
def print_info_qualify(folder, ego):
    csv_file = open('GALLERY/'+folder+'/'+ego+'/CSV/list_of_qualified.csv', 'wb')
    tab_duration = ['toujours (enfance, études)', 'longtemps (+5 ans)', 'quelques temps (1-5 ans)', 'Récemment (-1 an)']
    tab_frequency = ['tous les jours ou presque',
                     'au moins une fois par semaine',
                     'au moins une fois par mois',
                     'au moins une fois tous les trois mois',
                     'au moins une fois tous les six mois',
                     'au moins une fois par an',
                     'moins d\'une fois par an']
        
    writer = csv.writer(csv_file, delimiter = ';')
    writer.writerow(('nom',
                    'durée', 
                    'fréquence des rencontres', 
                    'fréquence des communications', 
                    'proximité affective',  
                    'conaissance', 
                    'famille', 
                    'colègue', 
                    'ami', 
                    'autre info'))                     
    list_of_qualified = main_jsons.list_of_qualified(folder, ego)
    for qualified_data in list_of_qualified:
        qualified = qualified_data['data']
        info = (main_jsons.find_friend(folder, ego, qualified_data['user_id'])['name'],
                tab_duration[int(qualified['since'])-1],
                tab_frequency[int(qualified['close'])-1],
                tab_frequency[int(qualified['begin'])-1],
                qualified['affect'],
                qualified['acquaintance'],
                qualified['family'],
                qualified['coworker'],
                qualified['friend'],
                qualified['other'])
        new_info = []
        for i in info:
            if isinstance(i, str):
                new_info.append(unicode(i.decode('utf-8')).encode('utf-8'))
            elif isinstance(i, unicode):
                new_info.append(i.encode('utf-8'))
            else:
                new_info.append(i)
        writer.writerow(new_info)
    csv_file.close()