File:Edit rates by users and bots on wikimedia Commons 2012-07-09 19H33M over three hours.svg

From mediawiki.org

Original file(SVG file, nominally 1,093 × 823 pixels, file size: 67 KB)

Summary

Description
English: Plots showing how edits rates evolve on Wikimedia Commons minute by minute over a course of three hours beginning 2012-07-09 11:33 (UTC). The edit are sorted into user edits and edits by bots. Individual bots, whihc never exceed the default bot edit rate of 6 edits per minute is collapsed as Other bots (accumulated). Bots, which edit at higher edit rates during this period, are plotted individually. The total accumulated edit rate combining bots and users is also shown. The data has been gathered using SlaungerBot to traverse through the last 1850 recent bot changes, accumulate user changes over the same period and then plot the data using matplolib.
Date
Source Own work
Author Slaunger
SVG development
InfoField
 
The source code of this SVG is invalid due to 23 errors.
 
This W3C-invalid plot was created with Matplotlib.
 
The file size of this SVG plot may be irrationally large because its text has been converted to paths inhibiting translations.
Source code
InfoField

Python code

'''
Created on 09/07/2012

@author: Kim
'''

from calendar import timegm
from time import strptime, strftime, gmtime

from numpy import arange
from pylab import plot, xlabel, ylabel, legend, grid, title, show, axhline, figure

import wikipedia as pywikibot

bot_edit_rates = {}
user_edit_rates = {}
secs_per_min = 60
default_max_bot_edit_rate_per_minute = 6
recentedits = 1850

try:
    site = pywikibot.getSite()
    for i, item in enumerate(site.recentchanges(number=recentedits, rcshow="bot")):
        utc_sec = timegm(strptime(item[1], "%Y-%m-%dT%H:%M:%SZ"))
        bot_str = item[4]
        utc_min = utc_sec / secs_per_min
        edit_rates = bot_edit_rates.setdefault(bot_str, {})
        if edit_rates.has_key(utc_min):
            edit_rates[utc_min] += 1
        else:
            edit_rates[utc_min] = 1
        if i == 0:
            last_bot_edit = utc_sec
    first_bot_edit = utc_sec

    for item in site.recentchanges(number=5000, rcshow="!bot"):
        utc_sec = timegm(strptime(item[1], "%Y-%m-%dT%H:%M:%SZ"))
        if utc_sec > last_bot_edit:
            continue
        if utc_sec < first_bot_edit:
            print "BREAK"
            break 
        utc_min = utc_sec / secs_per_min
        if user_edit_rates.has_key(utc_min):
            user_edit_rates[utc_min] += 1
        else:
            user_edit_rates[utc_min] = 1
    
finally:
    pywikibot.stopme()
    
fast_bots = []
for bot_str, edit_rates in bot_edit_rates.iteritems(): 
    if max(edit_rates.itervalues()) > default_max_bot_edit_rate_per_minute:
        fast_bots.append(bot_str)
fast_bots = frozenset(fast_bots)    
    
utc_min_minimum = first_bot_edit / 60 + 1
utc_min_maximum = last_bot_edit / 60 - 1
minutes_after_first_bot_edit = arange(utc_min_maximum + 1 - utc_min_minimum)

accum_edit_rate = []
other_bots_edit_rates = []

figure(figsize=(12,9))

for utc_min in xrange(utc_min_minimum, utc_min_maximum + 1):
    edit_rate = user_edit_rates.get(utc_min, 0)
    other_bots_edit_rate = 0
    for bot_str, ber in bot_edit_rates.iteritems():
        edit_rate += ber.get(utc_min, 0)
        if bot_str not in fast_bots:
            other_bots_edit_rate += ber.get(utc_min, 0)
    accum_edit_rate.append(edit_rate)
    other_bots_edit_rates.append(other_bots_edit_rate)
plot(minutes_after_first_bot_edit, accum_edit_rate, '-', c='green', label="All edits", lw=2, alpha = 0.8)

edit_rate_arr = [user_edit_rates.get(utc_min, 0) for utc_min in xrange(utc_min_minimum, utc_min_maximum + 1)]
plot(minutes_after_first_bot_edit, edit_rate_arr, c='k', label="User edits", lw=1.5, alpha=0.8)

for bot_str in bot_edit_rates:
    if bot_str in fast_bots:
        d = bot_edit_rates[bot_str]
        edit_rate_arr = [d.get(utc_min, 0) for utc_min in xrange(utc_min_minimum, utc_min_maximum + 1)]
        plot(minutes_after_first_bot_edit, edit_rate_arr, ls="-", lw=2.5, label=repr(bot_str)[2:-1], alpha=0.8)

axhline(default_max_bot_edit_rate_per_minute, ls='--', c="red", label="Default max bot edit rate")
plot(minutes_after_first_bot_edit, other_bots_edit_rates, c="b", label="Other bots (accumulated)", alpha=0.8)


xlabel('Elapsed minutes')
ylabel('Edit rate [edits/min]')
title("Edit rates on Wikimedia Commons from %s" % strftime("%Y-%m-%d %H:%M (UTC)", gmtime(utc_min_minimum * secs_per_min)))
legend()
grid()
show()

Licensing

I, the copyright holder of this work, hereby publish it under the following license:
w:en:Creative Commons
attribution share alike
This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license.
You are free:
  • to share – to copy, distribute and transmit the work
  • to remix – to adapt the work
Under the following conditions:
  • attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
  • share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.

Captions

Add a one-line explanation of what this file represents

Items portrayed in this file

depicts

10 July 2012

File history

Click on a date/time to view the file as it appeared at that time.

Date/TimeThumbnailDimensionsUserComment
current22:58, 9 July 2012Thumbnail for version as of 22:58, 9 July 20121,093 × 823 (67 KB)Slaunger

There are no pages that use this file.