<p>Hi zach,</p>
<p>The same mail has been received by the mailing list yesterday and have received some answers.<br>
If you did not get the answers they shoul be accessible from the ML archive.</p>
<p>Thanks,<br>
-- <br>
Matthias.</p>
<div class="gmail_quote">Le 3 déc. 2012 04:29, &quot;zach charlop-powers&quot; &lt;<a href="mailto:zach.charlop.powers@gmail.com">zach.charlop.powers@gmail.com</a>&gt; a écrit :<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">I recently posted a question to Stack Overflow about the possibility of using iPython to generate reproducible, repetitive reports. (<a href="http://stackoverflow.com/questions/13614783/programatically-add-cells-to-an-ipython-notebook-for-report-generation" target="_blank">http://stackoverflow.com/questions/13614783/programatically-add-cells-to-an-ipython-notebook-for-report-generation</a>) Lets say that I have a number of Pandas data frames and for each data frame I want to generate a series of tables , graphs and text, and then combine these into a report. I could use a templating system like Jinja but I am curious to know if I could use the iPython framework of ipython-notebook ---&gt; nbconverter ---&gt; pdf/html/etc for the purpose of generating all of the data analyses and the report into a single document.<span style="text-align:left">I have followed Thomas K.&#39;s suggestion to use the </span><span style="text-align:left;background-color:rgb(238,238,238)"><font face="Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif" size="4"><span style="line-height:18px">get_ipython().set_next_input()</span></font></span><span style="text-align:left"> function to add text to the next code block. For my idea to work, a few things would need to work:</span><div style="text-align:left">
<br></div><div style="text-align:left">example code.</div><div style="text-align:left"><br></div><div style="text-align:left"><div>from IPython.core.display import Image, display_png</div><div>x = Image(filename=&#39;test.png&#39;)</div>
</div><div style="text-align:left">for i in range(3):</div><div style="text-align:left"><span style="white-space:pre-wrap">        </span>x = Image(filename=&#39;/Users/zachpowers/Downloads/pics/Sieve_1.png&#39;) </div><div style="text-align:left">
<span style="white-space:pre-wrap">        </span> get_ipython().set_next_input(&#39;Thats What I am Talking About!&#39;) </div><div style="text-align:left"><span style="white-space:pre-wrap">        </span> get_ipython().set_next_input(display_png(x))</div>
<div style="text-align:left"><span style="white-space:pre-wrap">        </span></div><div style="text-align:left"><br></div><div style="text-align:left">if you run this you will see that there are a few different problems that you encounter.</div>
<div style="text-align:left"><br></div><div style="text-align:left">1) you can&#39;t create Markdown cells  </div><div style="text-align:left">2) the display_png() function does not respect the .set_next_input() function so they are all displayed in the same output block in which they are called</div>
<div style="text-align:left">3) the .set_next_input() function would need to be modified to track which code blocks it insert.  It iterates over the loop and inserts a code block below the code block it sits in with the result that the code blocks are added in reverse order from expected.</div>
<div style="text-align:left">4) there would need to be a way to hide the code-block that calls the rest of the functions.</div><div style="text-align:left">5) you would probably still need a templating engine to generate interesting text of each markdown block</div>
<div style="text-align:left"><br></div><div style="text-align:left"><br></div><div style="text-align:left">So in closing I think the python ---&gt; nbconvert is a great tool and that it might potentially be useful for reproducible research of repetitive reports (say that five times fast). I think that a few tweaks to the ipython notebook might make this possible and that the benefit would be the creation of a single file from which analyses could be rerun and from which reports could be generated. However, upon writing up my thoughts I am not sure that this is easier than doing the analysis in one file and outputting the results via a separate templating system. </div>
<div style="text-align:left"><br></div><div style="text-align:left">I hope some of the iPython community might find this line of thought to be useful and if so we could try to implement some of these ideas.</div><div style="text-align:left">
<br></div><div style="text-align:left"><br></div><div style="text-align:left">thanks,</div><div style="text-align:left">zach cp</div><div style="text-align:left"><br></div></div><br>_______________________________________________<br>

IPython-User mailing list<br>
<a href="mailto:IPython-User@scipy.org">IPython-User@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-user" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br>
<br></blockquote></div>