<div dir="ltr"><div><div>Hey all,<br><br></div>As part of my research into capturing the data analysis process in documents, I have been working on some extensions to the IPython Notebook as a way of implementing proof-of-concepts for certain ideas my advisors and I have had. I think the subscribers of this list might find them interesting and would love to hear what you guys think.<br>
<br>I have posted a screencast showcasing and explaining the work here: <a href="https://www.youtube.com/watch?v=iQPagwhad_8">https://www.youtube.com/watch?v=iQPagwhad_8</a> and will "briefly" describe it in text below.<br>
<br></div>I've implemented 3 fundamentally different new cell types in a fork of the IPython codebase: interactive code cells, task cells, and alternatives set cells. To be clear, my goal is absolutely not to replace IPython Notebook. I am simply leveraging their excellent core application to explore some new ideas about representing data analyses in documents. Descriptions of the cell types follow.<br>
<div><div><div><br></div><div><i><b>interactivecode cells:</b></i> Interactive code cells are code cells which have additional information attached to them allowing them to render a UI control which controls one (or more) values within the code and re-executes the code when the control is used to change the value. Example: controlling the bandwidth of a kernel regression estimator via a slider.<br>
<br></div><div><i><b>task cells</b></i>: Task cells are cells that can contain other cells (including nested task cells or altset cells). They are used to group conceptually linked content and can be executed in order to execute all the cells they contain with a single command. They are primarily for organization. Example:  the data cleaning task during a data analysis would likely contain multiple code and exposition blocks which fit conceptually within a single goal.<br>
<br></div><div><i><b>altset cells: </b></i>Alternatives set (altset) cells represent a point in an analysis where multiple approaches were tried before the analyst decided on a final strategy. An altset contains two or more branches representing these different approaches, only one of which can be active at a time. This allows an analyst to capture the entire research process in their IPython notebook in a structurally meaningful way, rather than just the final approach.<br>
<br></div><div>Finally, when the structure of a document actually contains information about the research process, there are a bunch of really cool things we can do when querying, processing, executing, and rendering the document which are difficult or impossible without this extra information. This email has already gotten quite long, however, so I will leave discussion of those to another time.<br>
<br></div><div>I'd love to hear what people think of these concepts, so please share your thoughts.<br><br>Thanks for reading and thanks to the IPython core team for their great work.<br></div><div>~G<br></div><div><br>
<br>Gabriel Becker<br>Graduate Student<br>Statistics Department<br>University of California, Davis<br>
</div></div></div></div>