Re: [O] Tangle including code generating graphics for :results graphics

2015-09-24 Thread Andreas Leha
Hi Rainer,

Rainer M Krug  writes:
> Hi
>
> Is it possible to tangle an R code block including the code which is
> generating the graphs when using =:results graphics= ?
>
> I would like to tangle these code blocks generating the graphs as I
> would like to have a script which I can use to easily update all graphs
> when the simulated input data is updated. I have this for the actual
> analysis which works perfectly, but would like to have the same for the
> graphs. At the same time, I like the clarity of specifying :width and
> :height and other parameter for the plotting as header arguments.
>
> I have
>
> ,
> | :PROPERTIES:
> | :header-args+: :prologue "env <- fitBFGS; attach(env)"
> | :header-args+: :epilogue "detach(env); rm(env)"
> | :END:
> `
>
> and this is tangled perfectly - but obviously not the code for
> plotting. Is there an argument / setting to enable this?
>
> Thanks,
>
> Rainer

That is a very relevant question and I'd be interested in the answer as
well.  But I am not aware of any support by Org mode for this.

I guess calling `org-babel-expand-src-block' prior to tangling would
answer your needs?

This would be desirable not only for plotting code blocks, also data
passed to code block is 'lost' during tangling.

I think it would be good to have a source block header argument, say
`:tangleexpanded', controlling such functionality.

WDYT?

Regards,
Andreas




[O] Tangle including code generating graphics for :results graphics

2015-09-24 Thread Rainer M Krug
Hi

Is it possible to tangle an R code block including the code which is
generating the graphs when using =:results graphics= ?

I would like to tangle these code blocks generating the graphs as I
would like to have a script which I can use to easily update all graphs
when the simulated input data is updated. I have this for the actual
analysis which works perfectly, but would like to have the same for the
graphs. At the same time, I like the clarity of specifying :width and
:height and other parameter for the plotting as header arguments.

I have

,
| :PROPERTIES:
| :header-args+: :prologue "env <- fitBFGS; attach(env)"
| :header-args+: :epilogue "detach(env); rm(env)"
| :END:
`

and this is tangled perfectly - but obviously not the code for
plotting. Is there an argument / setting to enable this?

Thanks,

Rainer

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature


Re: [O] Tangle including code generating graphics for :results graphics

2015-09-24 Thread Rainer M Krug
Andreas Leha  writes:

> Hi Rainer,
>
> Rainer M Krug  writes:
>> Hi
>>
>> Is it possible to tangle an R code block including the code which is
>> generating the graphs when using =:results graphics= ?
>>
>> I would like to tangle these code blocks generating the graphs as I
>> would like to have a script which I can use to easily update all graphs
>> when the simulated input data is updated. I have this for the actual
>> analysis which works perfectly, but would like to have the same for the
>> graphs. At the same time, I like the clarity of specifying :width and
>> :height and other parameter for the plotting as header arguments.
>>
>> I have
>>
>> ,
>> | :PROPERTIES:
>> | :header-args+: :prologue "env <- fitBFGS; attach(env)"
>> | :header-args+: :epilogue "detach(env); rm(env)"
>> | :END:
>> `
>>
>> and this is tangled perfectly - but obviously not the code for
>> plotting. Is there an argument / setting to enable this?
>>
>> Thanks,
>>
>> Rainer
>
> That is a very relevant question and I'd be interested in the answer as
> well.  But I am not aware of any support by Org mode for this.
>
> I guess calling `org-babel-expand-src-block' prior to tangling would
> answer your needs?

I don't think so - as this is doing the same as C-c.

The graphics code is only added in the call of org-babel-execute:R so
some refactoring would be necessary. 

In org-babel-execute:R there is the following code:

#+begin_src emacs-lisp 
(full-body
(let ((inside
   (list (org-babel-expand-body:R body params graphics-file
  (mapconcat 'identity
 (if graphics-file
 (append
  (list (org-babel-R-construct-graphics-device-call
 graphics-file params))
  inside
  (list "},error=function(e){plot(x=-1:1, y=-1:1, 
type='n', xlab='', ylab='', axes=FALSE); text(x=0, y=0, labels=e$message, 
col='red'); paste('ERROR', e$message, sep=' : ')}); dev.off()"))
   inside)
 "\n")))
 #+end_src

If this expansion is moved into org-babel-expand-body:R, it should
work and *always* expand the graphics code (as org-babel-expand-body:R
adds the :epilogue and :prologue).

Then one would just need a new header argument and it should work.

>
> This would be desirable not only for plotting code blocks, also data
> passed to code block is 'lost' during tangling.

Yes - debugging the whole process of evaluation would also be much easier.

>
> I think it would be good to have a source block header argument, say
> `:tangleexpanded', controlling such functionality.
>
> WDYT?

Yes - that would be an ideal solution. But expanded is already used in a
different context (noweb), so something like :tangleaseval would make
sense, making clear that the code is tangled as it would be evaluated.

Unfortunately, I have no time for looking into this at the moment.

But it should be possible without to much hassle.

Thanks,

Rainer

>
> Regards,
> Andreas
>
>

-- 
Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, 
UCT), Dipl. Phys. (Germany)

Centre of Excellence for Invasion Biology
Stellenbosch University
South Africa

Tel :   +33 - (0)9 53 10 27 44
Cell:   +33 - (0)6 85 62 59 98
Fax :   +33 - (0)9 58 10 27 44

Fax (D):+49 - (0)3 21 21 25 22 44

email:  rai...@krugs.de

Skype:  RMkrug

PGP: 0x0F52F982


signature.asc
Description: PGP signature