{ "cells": [ { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#!/usr/bin/env python\n", "# -*- coding: UTF-8 -*-\n", "from igraph import *\n", "import cairo\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import seaborn as sns" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import sys\n", "import csv\n", "import json\n", "import pprint\n", "from pymongo import MongoClient\n", "import numpy as np\n", "import collections\n", "from bson.son import SON\n", "from time import time" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pprint\n", "\n", "def SaveDict(filename, mode, root):\n", " if filename[-4:]!=\".txt\":\n", " filename+=\".txt\"\n", " with open(filename, mode) as f:\n", " f.write(pprint.pformat(root))\n", "\n", "def LoadDict(filename):\n", " if filename[-4:]!=\".txt\":\n", " filename+=\".txt\"\n", " with open(filename, \"r\") as f:\n", " return eval(f.read())" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "client = MongoClient()\n", "db = client.twitter" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def add_weight_to_user(entry):\n", " if \"weight\" in entry:\n", " return\n", " else:\n", " print entry[\"user\"][\"id\"]\n", " pop = db.posts.find_one({\"id\": entry[\"tweet_id\"]})[\"retweet_count\"]\n", " if pop > 1e-8:\n", " db.users.update({\"_id\": entry[\"_id\"]}, {\"$set\": {\"weight\": 1.0/float(pop)}})\n", " else:\n", " db.users.update({\"_id\": entry[\"_id\"]}, {\"$set\": {\"weight\": 0.0}})\n", " return" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def merge_users():\n", " for entry in db.users.find():\n", " add_weight_to_user(entry)\n", " pipeline = [{\"$group\": {\"_id\": \"$user.id\", \"name\": {\"$first\": \"$user.name\"}, \"tweet_ids\": {\"$addToSet\": \"$tweet_id\"},\n", " \"count\": {\"$sum\": 1}, \"totalvalue\": {\"$sum\": \"$weight\"}}},\n", " {\"$out\": \"user_merge\"}]\n", " db.command('aggregate', 'users', pipeline=pipeline, explain=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def generate_links_from_retweet_list(entry):\n", " retweeters = entry[\"retweeters\"]\n", " tweet_id = entry[\"tweet_id\"]\n", " if db.links.find_one({\"tweet_id\": tweet_id}):\n", " return\n", " else:\n", " documents = []\n", " for user1 in retweeters:\n", " for user2 in retweeters:\n", " if user1 != user2:\n", " if db.active_users.find_one({\"_id\": user1}) and db.active_users.find_one({\"_id\": user2}):\n", " pop = db.posts.find_one({\"id\": tweet_id})[\"retweet_count\"]\n", " if pop > 1e-8:\n", " documents.append({\"user1\": user1, \"user2\": user2, \"tweet_id\": tweet_id, \"weight\": 1.0/float(pop)})\n", " else:\n", " documents.append({\"user1\": user1, \"user2\": user2, \"tweet_id\": tweet_id, \"weight\": 0.0})\n", "\n", " print len(documents)\n", " if len(documents) > 0:\n", " db.links.insert_many(documents)\n", " return" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def build_links(start_over=False):\n", " if start_over:\n", " db.links.drop()\n", " count = 0\n", " for entry in db.retweeter_list.find():\n", " count += 1\n", " if count%1000 == 0:\n", " print count\n", " generate_links_from_retweet_list(entry)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def merge_links(): \n", " db.link_merge.drop()\n", " pipeline = [{\"$group\": {\"_id\": {\"user1\": \"$user1\", \"user2\": \"$user2\"}, \"tweet_ids\": {\"$addToSet\": \"$tweet_id\"}, \"value\": {\"$sum\": \"$weight\"}}},\n", " {\"$addFields\": {\"number_tweets\": {\"$size\": \"$tweet_ids\"}}},\n", " {\"$sort\": SON([(\"value\", -1)])},\n", " {\"$out\": \"link_merge\"}]\n", " db.command('aggregate', 'links', pipeline=pipeline, explain=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def calculate_cosine(entry):\n", " user1 = entry[\"user1\"][0]\n", " user2 = entry[\"user2\"][0]\n", " value = float(entry[\"value\"])/float(user1[\"totalvalue\"])/float(user2[\"totalvalue\"])\n", " db[\"link_merge\"].update({\"_id.user1\": entry[\"_id\"][\"user1\"], \"_id.user2\": entry[\"_id\"][\"user2\"]}, {\"$set\": {\"similarity\": value}})\n", " return" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def cosine_similarity():\n", " count = 0\n", " t0 = time()\n", " for entry in db[\"link_merge\"].find(no_cursor_timeout=True):\n", " if \"similarity\" not in entry:\n", " calculate_cosine(entry)\n", " count += 1\n", " if count%1000 == 0:\n", " print \"count: \", count\n", " print(\"done in %0.3fs.\" % (time() - t0))\n", " t0 = time()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "t0 = time()\n", "print \"create users collections with a list of retweets...\"\n", "merge_users()\n", "print(\"done in %0.3fs.\" % (time() - t0))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "t0 = time()\n", "print \"building links for each retweet...\"\n", "build_links()\n", "print(\"done in %0.3fs.\" % (time() - t0))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "t0 = time()\n", "print \"Merging links together...\"\n", "merge_links()\n", "print(\"done in %0.3fs.\" % (time() - t0))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "t0 = time()\n", "print \"Calculating cosine similarity for the links...\"\n", "cosine_similarity()\n", "print(\"done in %0.3fs.\" % (time() - t0))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "users = db[\"active_users\"]\n", "links = db[\"link_similarity\"]\n", "\n", "nodes = {}\n", "ids = []\n", "i = 0\n", "for user in users.find():\n", " nodes[i] ={\"name\": user[\"name\"], \"value\": user[\"count\"]}\n", " ids.append(user[\"_id\"])\n", " i += 1\n", "print \"number of nodes: \", len(nodes)\n", "print nodes" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number of edges: 178857\n" ] } ], "source": [ "edges = {}\n", "for link in links.find():\n", " if link[\"_id\"][\"user1\"] in ids and link[\"_id\"][\"user2\"] in ids:\n", " if ids.index(link[\"_id\"][\"user1\"]) < ids.index(link[\"_id\"][\"user2\"]) :\n", " edges[(ids.index(link[\"_id\"][\"user1\"]), ids.index(link[\"_id\"][\"user2\"]))] = {\"weight\": link[\"similarity\"], \"number_tweets\": link[\"number_tweets\"]}\n", "print \"number of edges: \", len(edges)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [], "source": [ "graph = {\"nodes\": nodes, \"edges\": edges}\n", "SaveDict(\"./data/network\", \"w\", graph)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [], "source": [ "graph = LoadDict(\"./data/network\")\n", "g = Graph(graph[\"edges\"].keys())\n", "g.vs[\"name\"] = [graph[\"nodes\"][node][\"name\"] for node in graph[\"nodes\"]]\n", "g.vs[\"value\"] = [graph[\"nodes\"][node][\"value\"] for node in graph[\"nodes\"]]\n", "g.es[\"weight\"] = [graph[\"edges\"][edge][\"weight\"] for edge in graph[\"edges\"]]" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "dendrogram_fastgreedy = g.community_fastgreedy(weights=g.es[\"weight\"])" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.14649345063397426, 0.14894234749712693, 0.1490534839990413, 0.14911773935713127, 0.14919804353971822, 0.1492356566022764, 0.14973306971372924, 0.14984012699759602, 0.1499198796312662, 0.14998190419203047, 0.15004842663753826, 0.1501136480530016, 0.1501804795086439, 0.15022868490817162, 0.1509241552951729, 0.0]\n" ] } ], "source": [ "n_list_fastgreedy = [500, 200, 180, 170, 160, 150, 100, 80, 70, 60, 50, 40, 30, 20, 10, 5]\n", "modularity_fastgreedy = []\n", "for n in n_list_fastgreedy:\n", " clusters = dendrogram_fastgreedy.as_clustering(n=n)\n", " membership_fastgreedy = clusters.membership\n", " modularity = g.modularity(membership_fastgreedy)\n", " modularity_fastgreedy.append(modularity)\n", "print modularity_fastgreedy" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "dendrogram_walktrap = g.community_walktrap(weights=g.es[\"weight\"])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "n_list_walktrap = [500, 200, 180, 170, 160, 150]\n", "modularity_walktrap = []\n", "for n in n_list_walktrap:\n", " clusters = dendrogram_walktrap.as_clustering(n=n)\n", " membership_walktrap = clusters.membership\n", " modularity = g.modularity(membership_walktrap)\n", " modularity_walktrap.append(modularity)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.set_context(\"poster\")\n", "plt.figure()\n", "with sns.axes_style(\"darkgrid\"):\n", " plt.plot(n_list_fastgreedy, modularity_fastgreedy, label=\"fast greedy\")\n", " plt.plot(n_list_walktrap, modularity_walktrap, label=\"walktrap\")\n", " plt.ylim(0.1,)\n", " plt.xlabel(\"Number of Clusters\")\n", " plt.ylabel(\"Modularity\")\n", " plt.legend()\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "10 0.150924155295\n" ] } ], "source": [ "n_opt = n_list_fastgreedy[np.argmax(np.array(modularity_fastgreedy))]\n", "print n_opt, np.max(modularity_fastgreedy)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.150924155295\n" ] } ], "source": [ "clusters = dendrogram_fastgreedy.as_clustering(n=n_opt)\n", "membership_fastgreedy = clusters.membership\n", "modularity = g.modularity(membership_fastgreedy)\n", "print modularity" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(array([1144, 1654, 1182, 1377, 575, 549, 1, 1, 1, 1]), array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]))\n" ] }, { "data": { "image/png": "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\n79arr76qESNGSKq8kby8vFyvvPKKnnnmGTkcDl26dElNmjRxHVdcXOx6cpXNZlNxcXGVz76yBgAA\nAIA5Ht9I3q9fP23dulUVFRUm+3Fz+etPt912m9v4HXfcoX/961+yWCxyOp0qKipymy8qKlKnTp0k\nVd40fvr0aZWWllZbAwAAAMAcj690REREaPny5Ro8eLBuu+023XjjjfLzc88sFotFqamptdZceHi4\nJGnPnj0aNWqUa3zfvn0KCAhQTEyMMjMztWnTJj322GOSpAsXLmjXrl1KSEiQJEVGRqq8vFz5+fmu\nR+YWFhbq8OHDrhoAAAAA5ngcOhYtWiRJKikp0caNG69ZU9uho2fPnoqOjtaLL76o8+fPq3Pnztq1\na5fefPNNTZw4Ue3atVNcXJwWLFggPz8/hYeHKzc3VzabTePHj5ckhYWFKTY2VikpKbLb7QoJCVF2\ndra6du2q4cOH11qvAAAAAK7N49Dx9ddfm+yjWgsWLNCrr76q3NxcXbhwQR07dlRycrJ+9atfSZKm\nT58uPz8/LV++XCUlJYqIiFBGRobb/Rrp6elKT09XZmamKioqFBUVpeTkZN5GDgAAANSBf+uRucXF\nxTp58qRuuukmBQYGGv3He7NmzZSUlKSkpKRrzgcEBCgxMVGJiYnVfobValVaWprS0tJMtQkAAACg\nGjV6I/mBAwf061//Wv369dOoUaO0d+9e7dy5U7/4xS+0efNmUz0CAAAA8GEeh44DBw7okUce0T/+\n8Q899NBDrvGgoCD98MMPSkhI0Pbt2400CQAAAMB3eRw6srKy1K5dO33yySdKSEiQ0+mUJPXp00cf\nf/yxbrnlFr3++uvGGgUAAADgmzwOHXv27NEDDzygG264ocqbvIODg/XQQw/pm2++qfUGAQAAAPg2\nj0OHn5/fdW8YLykpcV39AAAAAIDLPA4dd9xxh9auXauysrIqc+fOndMf/vAHRURE1GpzAAAAAHyf\nx4/MnT59uiZMmKCxY8dq8ODBslgs2rp1qwoKCvTBBx/Ibrfr1VdfNdkrAAAAAB/k8ZWObt266d13\n31VwcLDefPNNOZ1OvfXWW1qyZInatm2rZcuWqXfv3iZ7BQAAAOCDavRywO7du+t///d/de7cOR07\ndkwVFRW66aab1LZtW1P9AQAAAPBxNXo54GUnT57UqVOndP78ednt9truCQAAAEADUqMrHR9//LGy\ns7N14sQJt/GOHTsqJSVFAwcOrNXmAAAAAPg+j0PHJ598oueee0633HKLZs6cqbCwMDmdThUWFmrV\nqlV6/PHH9cYbbygyMtJkvwAAAAB8jMehY8mSJerTp49WrlypwMBAt7lHHnlEEyZMUHZ2tj744INa\nbxIAAACA7/L4no6///3vuvfee6sEDklq1qyZxo0bxxvJAQAAAFThcegIDw/XoUOHqp0/efKk2rdv\nXytNAQAAAGg4PA4ds2fP1scff6ycnByVlJS4xh0Ohz744AO99957SkpKMtIkAAAAAN9V7T0dvXv3\nlsVicRu7dOmSFi5cqEWLFqlNmzby8/PTmTNn5HA4dMMNN+jll1/W3XffbbxpAAAAAL6j2tAxcuTI\nKqEDAAAAAGqq2tCRkZFRl30AAAAAaKBq9HJAqfIrVmfOnFFFRcU152+++eb/uCkAAAAADYfHoePY\nsWOaNWuWdu/eLafTWW3dwYMHa6UxAAAAAA2Dx6HjhRde0N69e3X//fcrNDRUfn4eP/gKAAAAQCPm\ncejYt2+fnnjiCT311FMm+wEAAADQwHh8uaJ169YKCgoy2QsAAACABsjj0PHYY49pxYoVOnLkiMl+\nAAAAADQwHn+96v7779enn36qMWPGqGPHjmrZsmWV93hYLBatWLGi1psEAAAA4Ls8Dh2vvPKKtm/f\nrmbNmunSpUs6ffq0yb4AAAAANBAeh461a9cqOjpav/vd73TDDTeY7AkAAABAA+LxPR3l5eUaOnQo\ngQMAAABAjXgcOoYMGaLNmzeb7AUAAABAA+Tx16sefPBBJSYmKj4+XtHR0WrVqpX8/f2r1I0cObJW\nGwQAAADg2zwOHb/+9a8lSSdPnlRBQcE1aywWC6EDAAAAgBuPQ8c777xjsg8AAAAADZTHoaNfv34m\n+wAAAADQQHkcOjZs2OBRHV+vAgAAAHAlj0PH9OnTZbFY5HQ6q8xd+WZyQgcAAACAK/1H93SUl5fr\n7Nmz+vTTT3X48GHl5OTUanMAAAAAfF+t3NMxatQoPfnkk8rNzdW8efNqpTEAAAAADYPHLwf8KUOH\nDlV+fn5tfRwAAACABqLWQsfBgwfd7u0AAAAAAKkGX6964403rjnucDh06NAhbdy4Uffee2+tNQYA\nAACgYfA4dGRlZVX/IQEBuueee/T888/XSlMAAAAAGg6PQ0deXt41x/39/dWiRQs1a9as1pq62o4d\nO5Sdna1Dhw6pVatWGjt2rJ566in5+/vL6XQqNzdXq1at0rlz53T77bdr9uzZ6ty5s+t4h8OhzMxM\nrV+/XiUlJRo0aJCSk5PVtm1bYz0DAAAAqORx6Gjfvr3JPqq1e/duPfbYYxo9erSmT5+u/fv3a8GC\nBfLz81NCQoIWL16spUuXKjExUe3bt1dOTo7i4+O1YcMGBQcHS5JSU1OVn5+vmTNnymq1Kjs7W1Om\nTNGaNWvk7+9fL+cFAAAANBbVhg5P30B+tdp+OWBWVpYGDhyojIwMSVJkZKTOnz+vnTt3Kj4+XsuW\nLVNCQoImTpwoSbrzzjs1ZMgQrV69WpMmTdLRo0e1bt06ZWVluXrr1q2bYmNjlZeXp5iYmFrtFwAA\nAIC7akPH9d5AfqWrn1hVm6Hj7Nmz2rNnjxYvXuw2npiYKEnavn27SkpKNGzYMNdc8+bN1a9fP23b\ntk2TJk1SQUGBJCk6OtpVEx4eri5dumjbtm2EDgAAAMCwakPHtd5AfrXy8nKtWLFCf/7znyVJsbGx\ntdaYJB06dEhOp1NWq1VPPPGEtm/fLpvNpocfflhPPfWUCgsLJUkdOnRwOy40NNT1zpAjR46odevW\nslqtVWouH18TLVpYf7oINcKa/oi1qMQ6VPLmdQgIqHziujf3iLrDfsDV2BO4WrWh43pvIJcq77V4\n6aWX9M033yg8PFwvvPCCoqKiarW5c+fOSZJmzJih0aNHKz4+Xn/5y1+Uk5Ojpk2byul0KjAwUIGB\ngW7HBQUFyW63S5KKi4sVFBRU5bODgoJ04sSJWu0XAAAAQFUe30h+2dmzZ/XKK69o3bp1atq0qX77\n29/qN7/5jZo0aVLrzV26dEmSdNddd2nmzJmSpAEDBujcuXPKycnRlClTqn0h4eVxp9P5kzU1cf58\nSY2PwfWxpj9iLSqxDpW8eR0u//bSm3tE3WE/4GrsicapTZvgaudq9Eby9957TyNGjNDatWsVHR2t\n9evX68knnzQSOCS5rlAMGjTIbTwqKkolJSUKCQmRw+FwhZPLiouLXU+ustlsKi4urvLZV9YAAAAA\nMMejKx1fffWV5syZo/379+vmm29WRkaGhgwZYro3hYWFSVKVUFFWViap8qWETqdTRUVF6tSpk2v+\nyp/Dw8N1+vRplZaWur1LpKioSHfccYfpUwAAAAAavete6bh48aLmzJmjhx56SIcOHdLjjz+uDRs2\n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\n1q9fr9OnT8vT01NFRUWqrq7+VrcdnTp1SqtWrbruutWrV+tHP/qRSkpK9POf/1xTp05VbW2tCgsL\nde7cOUlXCtfVDh06pCVLliggIEDvvvuu3nrrLSUmJpqvkiQmJurNN9/UokWLFBMTo2HDhungwYMq\nKSnRwoULLa6mdBg9erTGjRun559/XmfPntXdd9+tyspK5efna+LEid/5ag4AdFWUDgCwMQMHDlRB\nQYH+9Kc/affu3XrxxRd18eJFubu7KzAwULNnz9aECRP+63569uypvLw8bdq0SW+88YZef/11ff/7\n39fSpUu1YMEC83YDBgxQTk6O0tLStHHjRnl4eGjhwoVqaWlRenq6xT4dHR31wgsvKDU1VTU1NRo9\nerS2bdumgICA/5rn/Pnz2rFjx3XXrV69WvPmzVN9fb0KCwt15MgRubu7KyAgQI8//rjCw8P13nvv\nadKkSebXbNq0SZmZmXruuefk7u6u5cuXdzquHTt2KD09XXv27FFDQ4M8PT21YsUKxcXF3TDn5s2b\nlZGRoeLiYv3hD3+Qm5ub5s2bp8WLF//XYwSA/1d27d80ExAAgNtk2bJl2r9/vz766COjowAAbjHm\ndAAAAACwKkoHAAAAAKuidAAAAACwKuZ0AAAAALAqrnQAAAAAsCpKBwAAAACronQAAAAAsCpKBwAA\nAACronQAAAAAsKr/ANOlHlWPPN+iAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "hist = np.histogram(membership_fastgreedy, bins=range(min(membership_fastgreedy), max(membership_fastgreedy)+2))\n", "print hist\n", "labels = range(min(membership_fastgreedy), max(membership_fastgreedy)+1)\n", "with sns.axes_style(\"darkgrid\"):\n", " plt.bar(labels, hist[0])\n", " plt.xlabel(\"Group Labels\")\n", " plt.ylabel(\"Number of Members\")\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "for i in range(len(membership_fastgreedy)):\n", " if hist[0][membership_fastgreedy[i]] < 10:\n", " membership_fastgreedy[i] = 5" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[1144 1654 1182 1377 575 553]\n" ] }, { "data": { "image/png": "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\nHDmixYsXKyQkREePHtUf/vAHxcXF2a6SxMXF6dChQ5o/f74iIyPVr18/FRQUKD8/X/PmzbO7mtJk\n0KBBGj58uF555RV99tlnuueee3ThwgVlZmbqwQcfvOmrOQBwq6J0AEAH07t3b+3cuVO//e1vtW/f\nPm3dulWff/65fHx8FBoaqmnTpmnkyJHfeJzOnTsrPT1dSUlJOnjwoHbv3q3vfve7WrJkiebOnWvb\nr0ePHkpNTdWGDRv08ssvq1evXpo3b56sVqs2bdpkd0w3Nzdt2bJFq1evVmlpqQYNGqRt27YpJCTk\nG/OUl5crKyvrutvWrFmjxx57TJWVlcrJydHx48fl4+OjkJAQPfHEE5o0aZL++te/avTo0bbPSUpK\n0ubNm7Vu3Tr5+Pjo2WefbXZeWVlZ2rRpk3Jzc1VVVSVfX1+tWLFCUVFRN8z56quvKjk5WXl5efr1\nr38tb29vPfbYY4qPj//GcwSA9srU+HUrAQEA+D9ZtmyZ3nnnHX3wwQdGRwEAtDHWdAAAAABwKEoH\nAAAAAIeidAAAAABwKNZ0AAAAAHAornQAAAAAcChKBwAAAACHonQAAAAAcChKBwAAAACHonQAAAAA\ncKj/Ag4ID2YSYbd5AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "hist = np.histogram(membership_fastgreedy, bins=range(min(membership_fastgreedy), max(membership_fastgreedy)+2))\n", "print hist[0]\n", "labels = range(min(membership_fastgreedy), max(membership_fastgreedy)+1)\n", "with sns.axes_style(\"darkgrid\"):\n", " plt.bar(labels, hist[0])\n", " plt.xlabel(\"Group Labels\")\n", " plt.ylabel(\"Number of Members\")\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "SaveDict(\"./data/label\", \"w\", {\"group\": membership_fastgreedy})" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "group = LoadDict(\"./data/label\")[\"group\"]\n", "g.vs[\"group\"] = group" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "collapsed": false }, "outputs": [], "source": [ "g_sub = g.subgraph_edges([edge for edge in graph[\"edges\"] if graph[\"edges\"][edge][\"weight\"] > 10], delete_vertices=True)" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "IGRAPH UNW- 277 250 -- \n", "+ attr: group (v), name (v), value (v), weight (e)\n" ] } ], "source": [ "summary(g_sub)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "color_dict = {0: \"blue\", 1: \"pink\", 2: \"red\", 3: \"green\", 4: \"yellow\", 5:\"purple\"}\n", "layout = g.layout(\"kk\")\n", "plot(g_sub, layout = layout, vertex_color = [color_dict[group] for group in g.vs[\"group\"]], vertex_size=1)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [], "source": [ "users = db[\"active_users\"]" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [], "source": [ "for i in range(len(membership_fastgreedy)):\n", " users.update_one({\"name\": g.vs[\"name\"][i]}, {\"$set\": {\"label\": membership_fastgreedy[i]}})" ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "collapsed": false }, "outputs": [], "source": [ "db.articles.update_many({}, {\"$unset\": {\"label\":\"\"}}, upsert=True)\n", "for entry in db.retweeter_list.find():\n", " retweets = entry[\"retweeters\"]\n", " votes = {0:0, 1:0, 2:0, 3:0, 4:0, 5:0}\n", " count = 0\n", " for user in retweets:\n", " if db.active_users.find_one({\"_id\":user}):\n", " votes[int(db.active_users.find_one({\"_id\":user})[\"label\"])] += 1\n", " count += 1\n", " new_fields = {}\n", " for i in votes:\n", " new_fields[\"group \"+str(i)] = votes[i]\n", " \n", " label = max(votes.iteritems(), key=operator.itemgetter(1))[0]\n", " if count > 0 and votes[label]/float(count) > 0.5:\n", " new_fields[\"label\"] = label\n", "\n", " db.articles.update_one({\"id\": entry[\"tweet_id\"]}, {\"$set\": new_fields})" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 1 }