224 lines (223 with data), 4.6 kB
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Show Matplotlib plots inline with the content in the notebooks:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Enable auto-reloading of python scripts for faster development:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Load Python-R interface, enabling `%R` and `%%R` magics:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import rpy2"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"%load_ext rpy2.ipython"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And load the frequently used R packages:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"%R require(ggplot2)\n",
"%R require(patchwork)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And set seed (for reproducible graphics):"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"%R set.seed(0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Add top directory to Python path, make all paths relative to root:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import paths"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Caching:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from IPython.core.magic import register_cell_magic\n",
"from pathlib import Path\n",
"from datetime import datetime\n",
"import pickle\n",
"\n",
"\n",
"@register_cell_magic\n",
"def cache(line, cell):\n",
" assert line\n",
" path, variable = line.split(' ')\n",
" path = Path('cache/' + path + '.pickle')\n",
" path.parent.mkdir(parents=True, exist_ok=True)\n",
" if path.exists():\n",
" date = datetime.fromtimestamp(path.stat().st_mtime)\n",
" print(\n",
" f'Reusing the results from {path}'\n",
" f' (last modified on {date:%Y-%m-%d %H:%M%z})'\n",
" )\n",
" with open(path, 'rb') as f:\n",
" result = pickle.load(f)\n",
" else:\n",
" exec(cell)\n",
" result = locals()[variable]\n",
" print(f'Storing results in {path}')\n",
" with open(path, 'wb') as f:\n",
" pickle.dump(result, f)\n",
"\n",
" globals()[variable] = result"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Data archive:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import data_vault\n",
"%open_vault --path data/storage.zip --secure False"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Add custom pandas methods for more efficient coding and more reproducible diffs:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from pandas import Series\n",
"from helpers.frames import value_counts\n",
"\n",
"# if used instead of value_counts() returns value_counts()\n",
"# with equal counts predictably sorted which reduces diffs\n",
"Series.sorted_value_counts = value_counts"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 4
}