From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andreas Leha Subject: Re: Out of Order Evaluation Date: Fri, 21 Mar 2014 09:15:43 +0100 Message-ID: <87d2hgc6hc.fsf@med.uni-goettingen.de> References: <8AE0B11E-8EA2-41A8-8D0C-CDB610785239@gmail.com> <87lhw4cyd5.fsf@med.uni-goettingen.de> <87ha6sc75h.fsf@med.uni-goettingen.de> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52323) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WQucW-0008ES-13 for emacs-orgmode@gnu.org; Fri, 21 Mar 2014 04:16:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WQucO-0008PI-T3 for emacs-orgmode@gnu.org; Fri, 21 Mar 2014 04:16:03 -0400 Received: from plane.gmane.org ([80.91.229.3]:57739) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WQucO-0008PD-Lh for emacs-orgmode@gnu.org; Fri, 21 Mar 2014 04:15:56 -0400 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1WQucM-0002QH-Gz for emacs-orgmode@gnu.org; Fri, 21 Mar 2014 09:15:54 +0100 Received: from vpn-2080.gwdg.de ([134.76.2.80]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 21 Mar 2014 09:15:54 +0100 Received: from andreas.leha by vpn-2080.gwdg.de with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 21 Mar 2014 09:15:54 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org Andreas Leha writes: > Charles Berry writes: > >> Andreas Leha med.uni-goettingen.de> writes: >> >>> >>> Hi Michael, >>> >>> Michael Weylandt gmail.com> writes: >>> >>> > Hi, >>> > >>> > I want to put a summary of my analysis at the beginning of a document >>> > using results calculated at the end of the document. Is this possible? >> >> [snip] >> >>> > >>> > Is this possible in a single pass? >> >> >> Not quite. The method suggested by Andreas computes the result twice. If >> there is any randomness in the results (as in the example) you will get a >> different answer in the summary than when the block is later evaluated. >> > > Well, you could enter the ':cache yes' world here. Although, for me, > that produced more problems than it solved (since there is no tracking > of dependencies among code blocks in :session mode). > > My typical workflow now is something 'less literate': My typical > project Org file will look like this: > > * Execution > This is full of #+call: lines. By (my own) convention, this subtree has > to be evaluated before exporting the next subsection. > > * Report > This is the report / presentation. > > * Analysis > This contains all the code block to be called from the Execution > subtree. > (Plus usually quite a lot of code blocks from dead ends of the > project...) > > > This solves your problem (and is along the lines Charles suggests as > well), but requires more work than just export the document and is, > thus, less literate. I should add here, that working with #+call lines is not too convenient. These are missing some functionality compared to source blocks. Most importantly 'C-c C-v v' and 'C-c C-v n' are missing. I wanted to have a look at those for quite some time, but have not gotten around to do so. Regards, Andreas > > Regards, > Andreas > > > >>> > I've played with #+NAME and >>> > <> but haven't gotten the out-of-order evaluation quite >>> > right. >> >> You can use >> >> #+results: the-mean >> >> before >> >> #+NAME: the-mean >> #+begin_src R >> mean(x) >> #+end_src >> >> which is after 'theanalysis' block. >> >> And if the format is not pleasing add a filter that reformats the result. >> >> >>> > >>> > Michael >>> > >>> >>> How about something along: >>> >>> --8<---------------cut here---------------start------------->8--- >>> #+TITLE: Test >>> #+AUTHOR: Michael Weylandt >>> #+PROPERTY: header-args:R :session *__R__* :exports both >>> >>> * Summary >>> The mean result was src_R[:exports results :var >> analysisresults=theanalysis()]{mean(unlist(analysisresults))} >>> >>> * Analysis, >>> We do some complicated calculations: >>> >>> #+name: theanalysis >>> #+BEGIN_SRC R >>> x <- rnorm(5) >>> #+END_SRC >>> --8<---------------cut here---------------end--------------->8--- >> >> >> It might be better to mark all the blocks in the doc ':eval never' >> and ':exports code' or ':exports none' and put blocks before the first >> headline that do all the calcs from noweb references, and put the #+results >> lines (if you need them) wherever you want them in the doc. Like so: >> >> >> >> #+TITLE: Test >> #+AUTHOR: Michael Weylandt >> #+PROPERTY: header-args:R :session *__R__* :exports both >> >> >> #+NAME: master >> #+BEGIN_SRC R :noweb yes :results silent :exports results >> <> >> #+END_SRC >> >> * Summary >> >> >> The mean result was src_R[:exports results]{mean(x)} >> >> * Analysis, >> We do some complicated calculations: >> >> #+name: theanalysis >> #+BEGIN_SRC R :eval never :exports code >> x <- rnorm(5) >> #+END_SRC >> >> >> IMO, needing ':exports results' for inline src blocks is a bug not a >> feature. >> >> HTH, >> >> Chuck