{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "## Generatate Zipf distributed data\n", "\n", "Based on https://arxiv.org/abs/1310.0448:\n", "* David J. Schwab, Ilya Nemenman, Pankaj Mehta: _Zipf's law and criticality in multivariate data without fine-tuning_" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "style.use('ggplot')\n", "from numba import jit, vectorize, float64, int32" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parameter values" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "N = 26 # number of spins (bits) \n", "C = 2**(N-4) # number of draws\n", "h = 2**randn(N) # local magnetic field at each bit ($h_i$ in the paper)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Pack bit vector into an integer for efficient frequency counting." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "@jit(nopython=True)\n", "def pack(xs):\n", " r = 0\n", " for x in xs:\n", " r <<= 1\n", " r |= x\n", " return r" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sample spins at a given inverse temperature." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "@vectorize([int32(float64)])\n", "def sample(beta):\n", " H=h*beta\n", " p = exp(H)/(2*cosh(H))\n", " return pack(rand(N) < p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Sample spins at random inverse temperatures and tally configuration frequencies." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 8.61 s, sys: 523 ms, total: 9.14 s\n", "Wall time: 9.14 s\n" ] } ], "source": [ "%time d = bincount(sample(randn(C)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Rank-frequency log-log plot." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "figure(figsize=(7,7))\n", "loglog(sorted(d[d>0], reverse=True),basex=2,basey=2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "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": 0 }