<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Hey,</div><div><br></div>I think this is a very cool idea. I work with long-running (weeks to months) simulations, and we always want to know things like how converged our data collection is. Manually, we might load up the current data, make a "report" like some PCA biplots or what have you, and then decide from there whether to stop data collection or not. Being able to do this type of thing from a script (on a crontab) with the result being a formatted PDF would be awesome.<div><div><br></div><div>As you point out maybe a true templating system like jinja would be more appropriate, but for simple tasks (the reports don't have to be beautiful, they just need to contain some plots and text) this could be quite useful.</div><div><br></div><div>-Robert</div><div><br><div><div><div>On Dec 1, 2012, at 3:17 PM, Zachary Charlop-Powers wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">

<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">

<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
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">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.&nbsp;<span style="text-align: left; ">I have followed Thomas K.'s suggestion to use the&nbsp;</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; ">&nbsp;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='test.png')</div>
</div>
<div style="text-align: left; ">for i in range(3):</div>
<div style="text-align: left; "><span class="Apple-tab-span" style="white-space: pre; "></span>x = Image(filename='/Users/zachpowers/Downloads/pics/Sieve_1.png')&nbsp;</div>
<div style="text-align: left; "><span class="Apple-tab-span" style="white-space: pre; "></span>&nbsp;get_ipython().set_next_input('Thats What I am Talking About!')&nbsp;</div>
<div style="text-align: left; "><span class="Apple-tab-span" style="white-space: pre; "></span>&nbsp;get_ipython().set_next_input(display_png(x))</div>
<div style="text-align: left; "><span class="Apple-tab-span" style="white-space: pre; "></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't create Markdown cells &nbsp;</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. &nbsp;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.&nbsp;</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>
<br>
<br>
<div apple-content-edited="true"><span class="Apple-style-span" style="border-collapse: separate; font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><br class="Apple-interchange-newline">
</span><br class="Apple-interchange-newline">
</div>
<br>
</div>

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