{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%pylab inline" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "from vizgrimoire.metrics.query_builder import SCRQuery\n", "from vizgrimoire.metrics.metrics_filter import MetricFilters\n", "import vizgrimoire.metrics.scr_metrics as scr" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "#database object\n", "user=\"root\"\n", "password=\"\"\n", "scr_db = \"wikimedia_gerrit_20150224\"\n", "identities_db =\"wikimedia_git_20150224\"\n", "people_out = [\"Translation updater bot\", \"\", \"\", \"\"]\n", "dbcon=SCRQuery(user, password, scr_db, identities_db)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "period = MetricFilters.PERIOD_MONTH\n", "startdate = \"'2013-01-01'\"\n", "enddate = \"'2015-03-01'\"\n", "filters = MetricFilters(period, startdate, enddate)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "participants = scr.Participants(dbcon, filters)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "participants.get_agg()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "{'participants': 921L}" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "participants_ts = participants.get_ts()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "from datetime import datetime\n", "dates = []\n", "unixtime = participants_ts[\"unixtime\"]\n", "for i in unixtime:\n", " dates.append(datetime.fromtimestamp(float(i)))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "fig = plt.figure()\n", "plot(dates, ts[\"participants\"])\n", "fig.autofmt_xdate()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "list_participants = participants.get_list()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "SELECT u.identifier , count(*) as events FROM people_upeople pup , ((SELECT comments.submitted_on as submitted_on , comments.submitted_by as submitted_by FROM comments WHERE comments.submitted_on>='2013-01-01' AND comments.submitted_on<'2015-03-01') union (SELECT ch.changed_by as submitted_by , ch.changed_on as submitted_on FROM changes ch WHERE ch.changed_on>='2013-01-01' AND ch.changed_on<'2015-03-01') union (SELECT i.submitted_on as submitted_on , i.submitted_by as submitted_by FROM issues i WHERE i.submitted_on>='2013-01-01' AND i.submitted_on<'2015-03-01')) t , wikimedia_git_20150224.upeople u WHERE t.submitted_on>='2013-01-01' AND t.submitted_on<'2015-03-01' AND pup.upeople_id = u.id and t.submitted_by = pup.people_id group by u.identifier order by count(*) desc \n" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "#Adding companies affiliation\n", "query = \"\"\"\n", "SELECT u.identifier , c.name as company, count(*) as events \n", "FROM ((SELECT comments.submitted_on as submitted_on , comments.submitted_by as submitted_by \n", " FROM comments \n", " WHERE comments.submitted_on>='2015-01-24' AND comments.submitted_on<'2015-02-24') union \n", " (SELECT ch.changed_by as submitted_by , ch.changed_on as submitted_on \n", " FROM changes ch \n", " WHERE ch.changed_on>='2015-01-24' AND ch.changed_on<'2015-02-24') union \n", " (SELECT i.submitted_on as submitted_on , i.submitted_by as submitted_by \n", " FROM issues i \n", " WHERE i.submitted_on>='2015-01-24' AND i.submitted_on<'2015-02-24')) t , \n", " people_upeople pup , wikimedia_git_20150224.upeople u,\n", " wikimedia_git_20150224.upeople_companies upc, wikimedia_git_20150224.companies c\n", "WHERE t.submitted_on>='2015-01-24' AND t.submitted_on<'2015-02-24' AND pup.upeople_id = u.id and \n", " t.submitted_by = pup.people_id and u.id = upc.upeople_id and upc.company_id = c.id\n", "GROUP by u.identifier \n", "ORDER by count(*) desc \n", "\"\"\"\n", "list_affs = participants.db.ExecuteQuery(query)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "for i in range(0,len(list_affs[\"identifier\"])):\n", " identifier = list_affs[\"identifier\"][i]\n", " company = list_affs[\"company\"][i]\n", " events = list_affs[\"events\"][i]\n", " print identifier.split('@')[0] + \",\" + company + \",\" + str(events)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "jenkins-bot,Unknown,15505\n", "Translation updater bot,Unknown,2459\n", "legoktm,Independent,588\n", "Krinkle,Wikimedia Foundation,499\n", "jforrester,Unknown,481\n", "jayvdb,Unknown,462\n", "Bartosz Dziewo\u0144ski,Independent,437\n", "ori,Unknown,405\n", "paladox,Unknown,396\n", "Fabian Neundorf,Unknown,383\n", "hashar,Unknown,368\n", "Catrope,Wikimedia Foundation,359\n", "dzahn,Unknown,352\n", "hoo,Unknown,342\n", "yuvipanda,Unknown,285\n", "florianschmidtwelzow,Unknown,260\n", "thiemowmde,Wikimedia Deutschland,259\n", "Ed S,Unknown,256\n", "Matthew Flaschen,Wikimedia Foundation,255\n", "ricordisamoa,Unknown,231\n", "Umherirrender,Unknown,228\n", "Adrian Lang,Unknown,217\n", "Bryan Davis,Wikimedia Foundation,216\n", "bblack,Unknown,214\n", "otto,Unknown,211\n", "Niklas Laxstr\u00f6m,Wikimedia Foundation,204\n", "KartikMistry,Unknown,196\n", "nemobis,Independent,195\n", "Sam Reed,Wikimedia Foundation,194\n", "Andrew,Unknown,194\n", "Alexandros Kosiaris,Wikimedia Foundation,194\n", "Anomie,Wikimedia Foundation,194\n", "amire80,Wikimedia Foundation,192\n", "Henning Snater,Unknown,181\n", "ssastry,Unknown,179\n", "Giuseppe Lavagetto,Unknown,176\n", "Adam Roses Wight,Wikimedia Foundation,175\n", "bmansurov,Unknown,173\n", "Santhosh Thottingal,Wikimedia Foundation,170\n", "ebernhardson,Unknown,169\n", "Arlolra,Wikimedia Foundation,168\n", "Jon Robson,Wikimedia Foundation,167\n", "Mooeypoo,Unknown,162\n", "Yaron Koren,WikiWorks,155\n", "MaxSem,Wikimedia Foundation,154\n", "krenair,Unknown,153\n", "filippo,Unknown,151\n", "xqt,Independent,150\n", "Moritz Schubotz,Unknown,148\n", "Gergo Tisza,Unknown,145\n", "Phuedx,Unknown,143\n", "Christopher Johnson,Unknown,142\n", "jhernandez,Unknown,134\n", "mlitn,Wikimedia Foundation,133\n", "Aaron Schulz,Wikimedia Foundation,131\n", "jsahleen,Unknown,129\n", "siebrand,Unknown,126\n", "Chad,Wikimedia Foundation,124\n", "mhurd,Unknown,122\n", "springle,Unknown,121\n", "RobH,Unknown,118\n", "Mpaa,Unknown,112\n", "Gilles Dubuc,Wikimedia Foundation,112\n", "fomafix,Unknown,108\n", "kaldari,Wikimedia Foundation,108\n", "daniel,Unknown,102\n", "Trevor Parscal,Wikimedia Foundation,99\n", "rmoen,Unknown,96\n", "[[mw:User:Valhallasw]],Unknown,96\n", "Chris McMahon,Wikimedia Foundation,93\n", "dbrant,Unknown,91\n", "cscott,Unknown,89\n", "aude,Unknown,88\n", "MarkTraceur,Wikimedia Foundation,87\n", "Robert Vogel,Unknown,87\n", "nuria,Unknown,86\n", "Mjbmr,Unknown,86\n", "Gabriel Wicke,Wikimedia Foundation,85\n", "yurik,Unknown,85\n", "Merlijn van Deen,Independent,82\n", "Christian Aistleitner,Independent,80\n", "Brion Vibber,Wikimedia Foundation,80\n", "ariel,Unknown,78\n", "bsitzmann,Unknown,77\n", "bgerstle,Unknown,74\n", "cfloyd,Unknown,74\n", "TTO,Unknown,73\n", "marcoil,Unknown,72\n", "rush,Unknown,71\n", "zfilipin,Unknown,64\n", "JanZerebecki,Unknown,64\n", "Dan Duvall,Unknown,63\n", "Andrew Green,Wikimedia Foundation,62\n", "jeroendedauw,Wikimedia Deutschland,61\n", "Ejegg,Unknown,61\n", "dr0ptp4kt,Unknown,58\n", "Glaisher,Unknown,57\n", "Tim Starling,Wikimedia Foundation,52\n", "prtksxna,Unknown,51\n", "Faidon,Wikimedia Foundation,50\n", "tonythomas01,Unknown,50\n", "Sn1per,Unknown,43\n", "John F. Lewis,Unknown,42\n", "pastakhov,Unknown,41\n", "Jackmcbarn,Unknown,40\n", "ebrahim,Unknown,36\n", "Vivek Ghaisas,Unknown,34\n", "asthana.sumit23,Unknown,34\n", "ladsgroup,Unknown,33\n", "isarra,Unknown,33\n", "Deskana,Unknown,32\n", "David Chan,Unknown,32\n", "kmenger,Unknown,32\n", "addshore,Independent,31\n", "milimetric,Unknown,31\n", "Cenarium,Unknown,30\n", "Phoenix303,Unknown,30\n", "PleaseStand,Unknown,30\n", "cmjohnson,Unknown,30\n", "Andrew Garrett,Wikimedia Foundation,30\n", "edokter,Unknown,28\n", "ryasmeen,Unknown,28\n", "Marielle Volz,Unknown,27\n", "rillke,Unknown,27\n", "Tyler Anthony Romeo,Independent,27\n", "DavisNT,Unknown,27\n", "Marc A. Pelletier,Unknown,26\n", "priyankajayaswal025,Unknown,26\n", "Mukunda Modell,Unknown,25\n", "Tweichart,Unknown,24\n", "hartman,Unknown,24\n", "ayush.ce13,Unknown,24\n", "matanya,Unknown,23\n", "se4598,Unknown,23\n", "tpt,Independent,23\n", "Raimond Spekking,Independent,23\n", "csteipp,Unknown,21\n", "mgrabovsky,Unknown,20\n", "Malvineous,Unknown,20\n", "steinsplitter,Unknown,19\n", "llbraughler,Unknown,19\n", "JuneHyeon Bae,Unknown,19\n", "Renoir Boulanger,Unknown,19\n", "ecotg,Unknown,17\n", "MZMcBride,Unknown,17\n", "Mobrovac,Unknown,17\n", "wirth,Unknown,16\n", "Tobias Gritschacher,Unknown,16\n", "Manybubbles,Wikimedia Foundation,16\n", "gage,Unknown,15\n", "wctaiwan,Unknown,14\n", "Gerrit Code Review,Wikimedia Foundation,14\n", "Tim Landscheidt,Unknown,14\n", "jagori,Unknown,13\n", "Lewis Cawte,Unknown,13\n", "gerardduenas,Unknown,12\n", "spage,Unknown,12\n", "welterkj,Unknown,11\n", "mpalmer,Unknown,11\n", "Marcel Ruiz Forns,Unknown,11\n", "dan-nl,Unknown,11\n", "jgreen,Unknown,10\n", "qgil,Unknown,10\n", "Jack Phoenix,Unknown,10\n", "jhobs,Unknown,10\n", "tosfos,Unknown,10\n", "he7d3r,Unknown,9\n", "mah,Unknown,9\n", "Greg Grossmeier,Unknown,8\n", "mikael,Unknown,8\n", "Unicodesnowman,Unknown,7\n", "eikes,Unknown,7\n", "gnosygnu,Unknown,7\n", "pginer,Unknown,7\n", "notconfusing,Unknown,7\n", "Mgooley,Unknown,7\n", "lydia.pintscher,Unknown,6\n", "Foxtrott,Unknown,6\n", "mark,Unknown,6\n", "Alexia E. Smith,Unknown,6\n", "RAN1,Unknown,6\n", "kji,Unknown,6\n", "VcamX,Unknown,6\n", "tamaraslosarek,Unknown,6\n", "UltrasonicNXT,Unknown,5\n", "Vikassy,Unknown,5\n", "Felipe Schenone,Unknown,5\n", "raheem,Unknown,5\n", "Calak,Unknown,5\n", "cicalese,Unknown,5\n", "aklapper,Unknown,5\n", "martineznovo,Unknown,5\n", "mwjames,Unknown,4\n", "gvaibhavraj2,Unknown,4\n", "pandiculation,Unknown,4\n", "kunalgrover05,Unknown,4\n", "Daniel Friesen,Unknown,4\n", "public,Unknown,4\n", "chiefwei1989,Unknown,3\n", "george.orwell.iii,Unknown,3\n", "Niharika Kohli,Unknown,3\n", "o0lilu0o1980,Unknown,3\n", "tcipriani,Unknown,3\n", "lucie,Unknown,3\n", "murnatty,Unknown,3\n", "mglaser,Unknown,3\n", "Dschwen,Unknown,2\n", "soeren.oldag,Unknown,2\n", "Linedwell,Unknown,2\n", "Pigpen,Unknown,2\n", "pratikbsp,Unknown,2\n", "Hypergrove,Unknown,2\n", "Southparkfan,Unknown,2\n", "Jarrettmunton,Unknown,2\n", "suchetag,Wikimedia Foundation,2\n", "Katie Horn,Wikimedia Foundation,2\n", "dennerlein,Unknown,2\n", "sjoerddebruin,Unknown,2\n", "jonas.keutel,Unknown,2\n", "pcoombe,Unknown,2\n", "goettlich,Unknown,2\n", "Karsten Hoffmeyer,Unknown,2\n", "541329866,Unknown,2\n", "JoelKP,Unknown,2\n", "Brian Wolff,Independent,2\n", "jkatz,Unknown,2\n", "Kenrick95,Unknown,1\n", "wsklutz,Unknown,1\n", "russblau,Unknown,1\n", "ffs,Unknown,1\n", "bmp2558,Unknown,1\n", "Etonkovidova,Unknown,1\n", "cas222222221,Unknown,1\n", "skizzerz,Unknown,1\n", "mcintire.evan,Unknown,1\n", "rtnpro,Unknown,1\n", "npangarkar,Unknown,1\n", "matx-1997,Unknown,1\n", "Whaterss,Unknown,1\n", "truchiranga,Unknown,1\n", "jarry1250,Unknown,1\n", "Wieland Hoffmann,Unknown,1\n", "Huji,Unknown,1\n", "Jackson Isaac,Unknown,1\n", "Keegan,Unknown,1\n", "dragan.espenschied,Unknown,1\n", "Oliver Keyes,Unknown,1\n", "maverick,Unknown,1\n", "jdouglas,Unknown,1\n", "Jalexander,Wikimedia Foundation,1\n", "dale,Unknown,1\n", "Technical_13,Unknown,1\n", "master.skywalker.88,Unknown,1\n", "Alex S.H. Lin,Unknown,1\n", "Tuxilina,Unknown,1\n", "kahlil.wallace,Unknown,1\n", "namit.ohri,Unknown,1\n", "Harmageddon,Unknown,1\n", "liangent,Unknown,1\n", "Adri\u00e1n Chaves Fern\u00e1ndez (Gallaecio),Unknown,1\n", "Sputniza,Unknown,1\n", "psg.1992,Unknown,1\n", "Sherah Smith,Wikimedia Foundation,1\n", "Petrb,Unknown,1\n" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }