A package for simulating the quoter model of information flow on networks
Project description
Quoter Model
This repository is a packaged version of code using to simulate the quoter model as a model for social information flow [1]. The model was further explored and this code was further developed by Tyson Pond [2,3].
The quoter model offers an idealistic mechanism for how people communicate written information in online social contexts (i.e. tweets on Twitter or posts on Facebook). The model runs on a social network, where each node (user) takes turns generating a sequence of words by one of two mechanisms:
- (i) copying a segment of a random neighbor's past text with probability $q$
- (ii) randomly generating new text according to a vocabulary distribution.
We can then apply the cross-entropy (an information-theoretic measure which satisfies temporal precedence, referred to as hx in the code) to quantify information flow between each pair of users text.
Installation and usage
Currently: clone the repository, and in the project root run
pip install .
This will appear in your list of installed packages as quoter-model, but included in a python script by import quoter. The package will soon be added to pypi as quoter-model to avoid any conflicts with similar-sounding package names.
The most relevant usage of this package, as shown in the examples, would be to run something like
from quoter.quoter_model import quoter_model_sim
and then run that function with relevant arguments.
Currently the simulation is dependent on the ProcessEntropy package which can have C-related install issues; a workaround for this (as detailed at that repo) is to first run
pip install --no-dependencies ProcessEntropy
pip install numba numpy nltk
Alternatively you can modify the source code inside quoter/quoter_model to use the local version of CrossEntropy.
Once you have run a reasonable number of simulations (in modules with a -sims suffix), you can run the corresponding -process scripts to generate some summary csv output (these and other helper modules are found in examples/processing/). Currently, all simulation and processing output will go into a folder output/ relative to your running directory (which you may need to create - I had some exceptions raised during testing), this is likely to change in future versions.
Example networks
Inside src/quoter/real_networks are many examples of real networks, along with a module for parsing them into an appropriate format, that can be used to run simulations on.
These have been compiled from different sources and are intended only as a starting point; other networks could be found, for example, at the online network repository.
An example usage of the real networks is calculating their so-called edge clustering coefficient in examples/edge_clustering.py.
Documentation
There are autogenerated html docs in docs/_build/html/index.html, produced by running make html inside docs/ (the makefile itself being auto-generate by after sphinx-quickstart).
Many of the docstrings are produced using docify so may need double checking. We intend to make these docs available online too.
Common abbreviations
- ER = Erdős–Rényi random graph
- BA = Barabási–Albert random graph
- WS = Watts–Strogatz (small-world) graph
- SBM = Stochastic Block Model
Requirements
Works with
- Python 3.6+
- [Networkx 1.11] Initially ran on this; now on 3.1 but in case you have any issues this would be why
See the requirements.txt file for further dependencies.
TODO
- Make sure all docstrings are in reST/sphinx format
- Add more helpful comments
- Make documentation better and available online
- Upload to PyPI
- Add more typing to function args
- Add verbose output to quoter_model_sim()
- Better syncing between simulation and processing scripts in the examples
- get_modularity is currently defined in two different files [redundant]
References
[1] Bagrow, J. P., & Mitchell, L. (2018). The quoter model: A paradigmatic model of the social flow of written information. Chaos: An Interdisciplinary Journal of Nonlinear Science, 28(7), 075304.
[2] Pond, T. C. (2020). Measuring and Modeling Information Flow on Social Networks (Doctoral dissertation, The University of Vermont and State Agricultural College).
[3] Pond, T., Magsarjav, S., South, T., Mitchell, L., & Bagrow, J. P. (2020). Complex contagion features without social reinforcement in a model of social information flow. Entropy, 22(3), 265.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quoter-model-1.0.tar.gz.
File metadata
- Download URL: quoter-model-1.0.tar.gz
- Upload date:
- Size: 39.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1036f23326f2ded8dc60deb127fdd697632d188994322d10730647b4bc9668cf
|
|
| MD5 |
9c976f62fb1614b74e50758c93948768
|
|
| BLAKE2b-256 |
3eead55182cbfa9ffe0ecbb3e51b35aae2cbd8ad7cfcf5c8c6e864dd7e49a976
|
File details
Details for the file quoter_model-1.0-py3-none-any.whl.
File metadata
- Download URL: quoter_model-1.0-py3-none-any.whl
- Upload date:
- Size: 52.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9568182a4e3757ff177b8eef4e36e156784a69341c7118bfe35ae95cad4ccd1e
|
|
| MD5 |
cb247cf77d6d71f9e47c47b4cd8308e3
|
|
| BLAKE2b-256 |
cde048e043b6361bf3ef8a1035c1768afb5b112af1863ce3d73b4396ee1e8711
|