<span style='font-family:Verdana'><span style='font-size:12px'>Thanks.<br /><br />The repo for the dynamic notebooks is now on github:<br />https://github.com/Exhibitionist/Bayesian-Methods-for-Hackers<br /><br />There's an initial version of chapter 1 (with just a single interactiveview for now),<br />using a slider to interact with the graph in realtime, and incroporating<br />the "freeze" idea. I'll be adding things gradually, next up is interactive<br />visualization of the MCMC part of chapter1.<br /><br />feedback and bug reports welcome.<br /><br />Much thanks to @CamDavidsonPilon for allowing me to "hijack" his<br />notebooks for experimentation with Exhibitionist.<br /><br />Cheers,<br />Yoval<p style="margin:0px; padding:0px;" > </p><blockquote style="border-left: 1px solid #CCC; padding-left: 5px; margin-left: 5px; margin-bottom: 0px; margin-top: 0px; margin-right: 0px;" type="cite"><p style="margin:0px; padding:0px;" ><span style="font-family:Verdana"><span style="font-size:12px">----- Original Message -----</span></span></p><p style="margin:0px; padding:0px;" ><span style="font-family:Verdana"><span style="font-size:12px">From: Brian Granger</span></span></p><p style="margin:0px; padding:0px;" ><span style="font-family:Verdana"><span style="font-size:12px">Sent: 03/20/13 12:38 AM</span></span></p><p style="margin:0px; padding:0px;" ><span style="font-family:Verdana"><span style="font-size:12px">To: Discussions about using IPython. http://ipython.org</span></span></p><p style="margin:0px; padding:0px;" ><span style="font-family:Verdana"><span style="font-size:12px">Subject: Re: [IPython-User] [IPython-dev] "Freezing" dynamic content with nbconvert, was ANN: Exhibitionist</span></span></p> <div><div><pre style="white-space: pre-wrap; word-wrap: break-word; font-size:11;pre">I really like this idea.  And libs like d3 make it easy - it already 
produces svg and the notebook already knows how to store svg output in 
the JSON data.  I think the usage of iframes is not needed in general 
for this to work though, but I can see how you need it for now... 

We will keep this in our minds as we start to work on the interactive 
widgets later this year. 

Cheers, 

Brian 

On Tue, Mar 19, 2013 at 11:06 AM, yoval p. &lt;y-p@gmx.com&gt; wrote: 
&gt; Hi, 
&gt; 
&gt; I've been looking for a way to showcase (and dogfood) the 
&gt; library I released a couple of weeks ago, Exhibitionist 
&gt; 
&gt; Yesterday, I started work enhancing the wonderful notebooks on 
&gt; MCMC released by @CamDavidsonPilon at: 
&gt; https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers 
&gt; 
&gt; with interactive views of various kinds. 
&gt; 
&gt; I wanted to share a pleasent success I had in "freezing" a dynamic 
&gt; Exhibitionist 
&gt; based on d3 and data streaming via AJAX, into a static view which is stored 
&gt; with 
&gt; the notebook, and viewable in nbviewer. 
&gt; 
&gt; Here's a screenshot: 
&gt; https://f.cloud.github.com/assets/1820866/277146/5e11823a-90be-11e2-917a-a317e7702318.png 
&gt; 
&gt; the upper view is dyanmic, and you can control the lambda parameter of the 
&gt; exponential distribution plotted in realtime. 
&gt; 
&gt; The lower view is the result of hitting the "freeze" button in the upper 
&gt; right corner, 
&gt; and is saved with the notebook, viewable even without exhibitionist 
&gt; installed 
&gt; - completely reproducable. 
&gt; 
&gt; A nice feature of this, is that you can interactively "tweak" your plot 
&gt; parameters 
&gt; until you're satisfied, and then freeze the plot for "publication". 
&gt; 
&gt; I plan to working on gradually enhancing all the book chapters in this way, 
&gt; and release the notebooks on github. 
&gt; 
&gt; If anyone has a need to do something similar, here are the technical bullet 
&gt; points for how this works: 
&gt; 
&gt; - the dynamic view lives in an embedded iframe 
&gt; - the HTML5 postmessage API is used for exchanging messages between 
&gt; the iframe and the IPPython main window. 
&gt; - when the "freeze" button is clicked, the svg blob generated by d3 (using 
&gt; json data fetched over AJAX, from an exhibitioinst server running n the 
&gt; IPython 
&gt; kernel process) is sent over to the IPython window. 
&gt; - the listener catching the message introspects the cells using the IPython 
&gt; js object, and jquery to replace the IFrame with the svg blob, and to 
&gt; overwrite 
&gt; the cell output area so that the svg data is serialized when the notebook 
&gt; is saved. 
&gt; - Styiing the svg is an interesting problem. You can include the css ctyles 
&gt; for the plot in the IPython notebook, or, if you inline the styles as svg 
&gt; element 
&gt; attributes, the plot becomes completely self-contained. I'm using the latter 
&gt; for now. 
&gt; 
&gt; This was really excited to get working, I wasn't even sure it's possible. It 
&gt; is. 
&gt; 
&gt; Cheers, 
&gt; Yoval 
&gt; 
&gt; 
&gt; 
&gt; 
&gt; ----- Original Message ----- 
&gt; 
&gt; From: Matthias BUSSONNIER 
&gt; 
&gt; Sent: 03/07/13 07:39 PM 
&gt; 
&gt; To: IPython developers list 
&gt; 
&gt; Subject: Re: [IPython-dev] "Freezing" dynamic content with nbconvert, was 
&gt; ANN: Exhibitionist 
&gt; 
&gt; 
&gt; Hi Yoval, 
&gt; Le 7 mars 2013 à 17:48, yoval p. a écrit : 
&gt; 
&gt; 
&gt; Hi, 
&gt; 
&gt; 
&gt; My suggestion is that the display protocol be modified  so that the 
&gt; semantics of 
&gt; `_repr_html_` would mean static HTML only, and a new `_repr_jshtml_` 
&gt; (however named) 
&gt; magic method would be supported, under which objects would implement 
&gt; dynamic views. 
&gt; 
&gt; 
&gt; Thoughts? 
&gt; 
&gt; 
&gt; What you describe look IMHO to much to the current 
&gt; _repr_html_/_repr_javascript_, we had quite some time to think about it, 
&gt; and something in those line was my first idea, but dealing with displaying 
&gt; javascript is both much more complicated than it looks. 
&gt; We are also  certain that we can have a more general approach. 
&gt; 
&gt; (Keep in mind that, thinking of the display protocol as only html/js 
&gt; notebook/qtconsole is also much too restrictive) 
&gt; 
&gt; In short, we believe using _display_json_ is the right way and is enough. 
&gt; 
&gt; Most of the time, when you display js, the only thing you want to send are 
&gt; data that need to be interpreted. 
&gt; Javascript plugin should be js files loaded as extension, you shouldn't need 
&gt; to display generated code. 
&gt; This allow also to depend on other installed plugin without having to embed 
&gt; lib like jQuery etc at every call. 
&gt; 
&gt; In framework like chromium embeded, you cannot in any way execute code that 
&gt; are in script tag. The js 
&gt; **have to** be part of the application at launch time. 
&gt; 
&gt; With the architecture we planed, rewriting _display_javascript_ should be 
&gt; totally possible as simple small plugin 
&gt; it will just not be supported. 
&gt; 
&gt; As for nbviewer, if there is a _repr_json_ , nothing prevent it from using 
&gt; it in html to have dynamic represent, 
&gt; but the same json could be use to make a Tikz representation in latex, or 
&gt; even multiple plugin could be able to interpret the same json. 
&gt; 
&gt; So after long repletion, I am convince that json-repr is the way to go. 
&gt; 
&gt; We'll still consider the suggestion of course, and discussion are welcomed. 
&gt; 
&gt; -- 
&gt; Matthias 
&gt; 
&gt; 
&gt; _______________________________________________ 
&gt; 
&gt; IPython-dev mailing list 
&gt; IPython-dev@scipy.org 
&gt; http://mail.scipy.org/mailman/listinfo/ipython-dev 
&gt; 
&gt; 
&gt; 
&gt; 
&gt; _______________________________________________ 
&gt; IPython-User mailing list 
&gt; IPython-User@scipy.org 
&gt; http://mail.scipy.org/mailman/listinfo/ipython-user 
&gt; 



-- 
Brian E. Granger 
Cal Poly State University, San Luis Obispo 
bgranger@calpoly.edu and ellisonbg@gmail.com 
_______________________________________________ 
IPython-User mailing list 
IPython-User@scipy.org 
http://mail.scipy.org/mailman/listinfo/ipython-user</pre></div></div></blockquote><p style="margin:0px; padding:0px;" > </p></span></span>