Skip to content

Commit

Permalink
Update notebooks to use alex_jointplot()
Browse files Browse the repository at this point in the history
  • Loading branch information
tritemio committed Jan 3, 2015
1 parent e2c6a4b commit 3df6d17
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 196 deletions.
205 changes: 10 additions & 195 deletions notebooks/Example - usALEX histogram.ipynb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:f0dc63d3716f383dfe908a0995b1a3a7b2196235d8fdb2965e939aa14aa0040c"
"signature": "sha256:9b41ada29ed52e10690e64445528d86a355a3df42eb43b7c5c6a98b312438163"
},
"nbformat": 3,
"nbformat_minor": 0,
Expand Down Expand Up @@ -239,183 +239,6 @@
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Helper functions"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def _alex_plot_style(g):\n",
" \"\"\"Set plot style and colorbar for an ALEX joint plot.\n",
" \"\"\"\n",
" g.set_axis_labels(xlabel=\"E\", ylabel=\"S\")\n",
" g.ax_marg_x.grid(True)\n",
" g.ax_marg_y.grid(True)\n",
" plt.setp(g.ax_marg_y.get_xticklabels(), visible=True)\n",
" plt.setp(g.ax_marg_x.get_yticklabels(), visible=True)\n",
" g.ax_marg_x.locator_params(axis='y', tight=True, nbins=3)\n",
" g.ax_marg_y.locator_params(axis='x', tight=True, nbins=3)\n",
" pos = g.ax_joint.get_position().get_points()\n",
" X, Y = pos[:, 0], pos[:, 1]\n",
" cax = plt.axes([1., Y[0], (X[1] - X[0])*0.045, Y[1]-Y[0]])\n",
" plt.colorbar(cax=cax)\n",
" \n",
"def _hist_bursts(arr, dx, **kwargs):\n",
" \"\"\"Wrapper function for calling hist_burst_data() from seaborn plot_marginals().\n",
" \"\"\"\n",
" vertical = kwargs.get('vertical', False)\n",
" data_name = 'S' if vertical else 'E'\n",
" hist_burst_data(dx, data_name=data_name, **kwargs)\n",
"\n",
"def _alex_hexbin_vmax(patches, vmax_fret=True, Smax=0.8):\n",
" \"\"\"Return max count E-S hexbin plot in `patches`.\n",
" \n",
" When `vmax_fret` is True, returns the max count for S < Smax.\n",
" Otherwise returns the max count in all the histogram.\n",
" \"\"\"\n",
" counts = patches.get_array()\n",
" if vmax_fret:\n",
" offset = patches.get_offsets()\n",
" xoffset, yoffset = offset[:, 0], offset[:, 1]\n",
" mask = yoffset < Smax\n",
" vmax = counts[mask].max()\n",
" else:\n",
" vmax = counts.max()\n",
" return vmax\n",
"\n",
"def _calc_vmin(vmax, vmax_threshold, vmin_default):\n",
" if vmax <= vmax_threshold:\n",
" vmin = vmin_default - 0.5*vmax\n",
" elif vmax_threshold < vmax < 2*vmax_threshold:\n",
" vmin = vmin_default - 0.5*vmax*((2*vmax_threshold - vmax)/(1.*vmax_threshold))\n",
" else:\n",
" vmin = vmin_default\n",
" return vmin\n",
"\n",
"def alex_jointplot(d, i=0, gridsize=50, cmap='YlGnBu_crop', zero_transparent=True, vmax_fret=True,\n",
" vmax_threshold=10, vmin_default=0, vmin=None, cmap_compensate=False,\n",
" joint_kws = {},\n",
" marginal_kws = dict(show_kde=True, bandwidth=0.03, binwidth=0.03)):\n",
" \"\"\"Plot an ALEX join plot: E-S 2-D histograms and marginal plots.\n",
" \"\"\"\n",
" g = sns.JointGrid(x=d.E[i], y=d.S[i], ratio=3, space=0.2, xlim=(-0.2, 1.2), ylim=(-0.2, 1.2))\n",
" joint_kws.update(gridsize=gridsize, cmap=cmap, extent=(-0.2, 1.2, -0.2, 1.2))\n",
" jplot = g.plot_joint(plt.hexbin, mincnt=zero_transparent, **joint_kws)\n",
"\n",
" poly = jplot.ax_joint.get_children()[2]\n",
" vmax = _alex_hexbin_vmax(poly, vmax_fret=vmax_fret)\n",
" if vmin is None:\n",
" if cmap_compensate:\n",
" #vmin = _calc_vmin(vmax, vmax_threshold, vmin_default)\n",
" vmin = -vmax/3\n",
" else:\n",
" vmin = vmin_default\n",
" poly.set_clim(vmin, vmax)\n",
"\n",
" g.plot_marginals(_hist_bursts, dx=d, **marginal_kws)\n",
" g.annotate(lambda x, y: x.size, stat='# Bursts', template='{stat}: {val}')\n",
" _alex_plot_style(g)"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Tweak colomaps\n",
"\n",
"As an example let's create a cutom colormap and plot a plain 2D ALEX histogram:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sns.palplot(sns.color_palette('nipy_spectral', 64))"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"c = sns.color_palette('nipy_spectral', 64)[2:43]\n",
"sns.palplot(c)"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import matplotlib as mpl\n",
"cmap = mpl.colors.LinearSegmentedColormap.from_list('alex', c)\n",
"cmap.set_under(alpha=0)\n",
"mpl.cm.register_cmap(name='alex_lv', cmap=cmap)\n",
"cmap"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"squarehist, _, _ = np.histogram2d(ds.E_, ds.S_, range=((-0.2, 1.2), (-0.2, 1.2)), bins=np.arange(-0.2, 1.2, 0.018))\n",
"im = plt.imshow(squarehist[:,::-1].T, extent=(-0.2, 1.2, -0.2, 1.2), vmin=1, cmap='alex_lv', zorder=10)\n",
"gca().set_axisbelow(True)\n",
"plt.colorbar()"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sns.palplot(sns.color_palette('YlGnBu', 64))"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"c = sns.color_palette('YlGnBu', 64)[16:]\n",
"sns.palplot(c)"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"cmap = mpl.colors.LinearSegmentedColormap.from_list('YlGnBu_crop', c)\n",
"cmap.set_under(alpha=0)\n",
"mpl.cm.register_cmap(name='YlGnBu_crop', cmap=cmap)\n",
"cmap"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
Expand All @@ -439,7 +262,7 @@
"cell_type": "code",
"collapsed": false,
"input": [
"sns.set_style('whitegrid')"
"#sns.set_style('darkgrid')"
],
"language": "python",
"metadata": {},
Expand All @@ -459,8 +282,9 @@
"cell_type": "code",
"collapsed": false,
"input": [
"alex_jointplot(ds, \n",
" joint_kws = dict(edgecolor='grey'))"
"alex_jointplot(ds, joint_kws = dict(edgecolor='none'))\n",
"\n",
"alex_jointplot(ds, joint_kws = {})"
],
"language": "python",
"metadata": {},
Expand All @@ -470,7 +294,7 @@
"cell_type": "code",
"collapsed": false,
"input": [
"sns.set_style('darkgrid')"
"sns.set_style('whitegrid')"
],
"language": "python",
"metadata": {},
Expand All @@ -490,8 +314,9 @@
"cell_type": "code",
"collapsed": false,
"input": [
"alex_jointplot(ds,\n",
" joint_kws = dict(edgecolor='grey'))"
"alex_jointplot(ds, joint_kws = dict(edgecolor='none'))\n",
"\n",
"alex_jointplot(ds, joint_kws = {})"
],
"language": "python",
"metadata": {},
Expand All @@ -514,16 +339,6 @@
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sns.set_style('darkgrid')"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "code",
"collapsed": false,
Expand Down Expand Up @@ -559,7 +374,7 @@
" else:\n",
" marginal_kws = dict(binwidth=binwidth, show_kde=True, bandwidth=bandwidth)\n",
" alex_jointplot(dx, cmap=cmap, gridsize=gridsize, zero_transparent=zero_transparent, vmax_fret=vmax_fret, \n",
" cmap_compensate=cmap_compensate, marginal_kws=marginal_kws, joint_kws=dict(edgecolor='grey'))\n",
" cmap_compensate=cmap_compensate, marginal_kws=marginal_kws, joint_kws=dict(edgecolor='grey', lw=0.2))\n",
" \n",
" fig = gcf()\n",
" plt.close()\n",
Expand Down
19 changes: 18 additions & 1 deletion notebooks/FRETBursts - us-ALEX smFRET burst analysis.ipynb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"metadata": {
"name": "",
"signature": "sha256:c473fa5ed1dc2f82baea10a974f55dacc7021077ab7cc57ed245cf9a9b23fa0a"
"signature": "sha256:a5fa71a9a4766fe3909ad8ea1e7cdcad42b5bbd86e01d922937c292c14abfa53"
},
"nbformat": 3,
"nbformat_minor": 0,
Expand Down Expand Up @@ -1056,6 +1056,23 @@
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally we can also plot an ALEX histogram and marginals (joint plot) as follow (for more options see: [Example - usALEX histogram](Example - usALEX histogram.ipynb)):"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"alex_jointplot(ds)"
],
"language": "python",
"metadata": {},
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {},
Expand Down

0 comments on commit 3df6d17

Please sign in to comment.