emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* asynchronous code evaluation
@ 2013-09-04  5:27 Johannes Rainer
  2013-09-04  8:00 ` Suvayu Ali
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Johannes Rainer @ 2013-09-04  5:27 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 327 bytes --]

hi all!

I have some pretty calculation intense R code in a code block and when I
execute the code (C-c C-c) my emacs freezes and waits for the code to
finish. Is there a way to evaluate the code asynchronously, so that I could
edit the file (obviously not the code block itself) while the code is being
evaluated?

thanks, jo

[-- Attachment #2: Type: text/html, Size: 429 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: asynchronous code evaluation
  2013-09-04  5:27 asynchronous code evaluation Johannes Rainer
@ 2013-09-04  8:00 ` Suvayu Ali
  2013-09-04 13:23   ` Johannes Rainer
  2013-09-04 16:08 ` Charles Berry
  2013-09-06 17:54 ` Eric Schulte
  2 siblings, 1 reply; 8+ messages in thread
From: Suvayu Ali @ 2013-09-04  8:00 UTC (permalink / raw)
  To: emacs-orgmode

On Wed, Sep 04, 2013 at 07:27:01AM +0200, Johannes Rainer wrote:
> hi all!
> 
> I have some pretty calculation intense R code in a code block and when I
> execute the code (C-c C-c) my emacs freezes and waits for the code to
> finish. Is there a way to evaluate the code asynchronously, so that I could
> edit the file (obviously not the code block itself) while the code is being
> evaluated?

Not sure that is a possibility yet.  For the moment you could try
asynchronous export as a workaround.

That said, I am curious why you are knowingly tying a computationally
intensive (possibly buggy, during development i.e.) process with your
editor.  I have to work on some fairly computationally intensive
analysis with Python.  I always keep them in separate modules and
scripts run from the shell.

Hope this helps,

-- 
Suvayu

Open source is the future. It sets us free.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: asynchronous code evaluation
  2013-09-04  8:00 ` Suvayu Ali
@ 2013-09-04 13:23   ` Johannes Rainer
  2013-09-04 15:25     ` Suvayu Ali
                       ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Johannes Rainer @ 2013-09-04 13:23 UTC (permalink / raw)
  To: Suvayu Ali; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1870 bytes --]

On Wed, Sep 4, 2013 at 10:00 AM, Suvayu Ali <fatkasuvayu+linux@gmail.com>wrote:

> On Wed, Sep 04, 2013 at 07:27:01AM +0200, Johannes Rainer wrote:
> > hi all!
> >
> > I have some pretty calculation intense R code in a code block and when I
> > execute the code (C-c C-c) my emacs freezes and waits for the code to
> > finish. Is there a way to evaluate the code asynchronously, so that I
> could
> > edit the file (obviously not the code block itself) while the code is
> being
> > evaluated?
>
> Not sure that is a possibility yet.  For the moment you could try
> asynchronous export as a workaround.
>
> yes, I will do that. I just realized that I have to set
ess-ask-for-ess-directory to nil, otherwise the async export hangs because
it tries to ask where to start R.


> That said, I am curious why you are knowingly tying a computationally
> intensive (possibly buggy, during development i.e.) process with your
> editor.  I have to work on some fairly computationally intensive
> analysis with Python.  I always keep them in separate modules and
> scripts run from the shell.
>
> well, I'm using emacs/org for my data analyses in R. I thus combine
documentation (i.e. the conclusions drawn from e.g. plots created in R) and
the R code to perform the analysis in my org file. Since I'm analysing high
throughput data some tasks to handle the data are quite time consuming.

cheers, jo


> Hope this helps,
>
> --
> Suvayu
>
> Open source is the future. It sets us free.
>
>


-- 
Johannes Rainer, PhD
Applied Bioinformatics Group,
Division Molecular Pathophysiology,
Biocenter, Medical University Innsbruck,
Innrain 80/82 II, 6020 Innsbruck, Austria
and
Tyrolean Cancer Research Institute
Innrain 66, 6020 Innsbruck, Austria

Tel.:     +43 (0)512 9003 70961
Email:  johannes.rainer@i-med.ac.at
            johannes.rainer@tcri.at
URL:   http://bioinfo.i-med.ac.at

[-- Attachment #2: Type: text/html, Size: 2946 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: asynchronous code evaluation
  2013-09-04 13:23   ` Johannes Rainer
@ 2013-09-04 15:25     ` Suvayu Ali
  2013-09-04 16:59     ` Allen S. Rout
  2013-09-04 19:20     ` Brett Viren
  2 siblings, 0 replies; 8+ messages in thread
From: Suvayu Ali @ 2013-09-04 15:25 UTC (permalink / raw)
  To: Johannes Rainer; +Cc: emacs-orgmode

On Wed, Sep 04, 2013 at 03:23:03PM +0200, Johannes Rainer wrote:
> On Wed, Sep 4, 2013 at 10:00 AM, Suvayu Ali <fatkasuvayu+linux@gmail.com>wrote:
> 
> > That said, I am curious why you are knowingly tying a computationally
> > intensive (possibly buggy, during development i.e.) process with your
> > editor.  I have to work on some fairly computationally intensive
> > analysis with Python.  I always keep them in separate modules and
> > scripts run from the shell.
> >
> well, I'm using emacs/org for my data analyses in R. I thus combine
> documentation (i.e. the conclusions drawn from e.g. plots created in R) and
> the R code to perform the analysis in my org file. Since I'm analysing high
> throughput data some tasks to handle the data are quite time consuming.

Okay, in that case I would try to achieve the asynchronicity in R.  I
think you would have better luck that way.

-- 
Suvayu

Open source is the future. It sets us free.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: asynchronous code evaluation
  2013-09-04  5:27 asynchronous code evaluation Johannes Rainer
  2013-09-04  8:00 ` Suvayu Ali
@ 2013-09-04 16:08 ` Charles Berry
  2013-09-06 17:54 ` Eric Schulte
  2 siblings, 0 replies; 8+ messages in thread
From: Charles Berry @ 2013-09-04 16:08 UTC (permalink / raw)
  To: emacs-orgmode

Johannes Rainer <johannes.rainer <at> gmail.com> writes:

> 
> 
> hi all!
> 
> I have some pretty calculation intense R code in a code block and when I 
> execute the code (C-c C-c) my emacs freezes and waits for the code to 
> finish. Is there a way to evaluate the code asynchronously, so that I 
> could edit the file (obviously not the code block itself) while the code 
> is being evaluated?
> 
> thanks, jo
>

Try this:

C-c ' in the R src block. 

Then use C-c C-c (ess-eval-region-or-function-or-paragraph-and-step) to 
execute the long running code from the ESS edit buffer.

You may need to select the region if there are several paragraphs, or 
delete any blank lines.

==

Another alternative is to use ravel. 

  https://github.com/chasberry/orgmode-accessories

Create a knitr or Sweave doc from the org doc or a suitable subtree of the 
computationally intensive parts. 

Then you can knit() the doc from the R session and switch back to
the buffer you want to edit. Also, you might want to turn on caching in the
knitr doc to enable a quick restart when you log in again.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: asynchronous code evaluation
  2013-09-04 13:23   ` Johannes Rainer
  2013-09-04 15:25     ` Suvayu Ali
@ 2013-09-04 16:59     ` Allen S. Rout
  2013-09-04 19:20     ` Brett Viren
  2 siblings, 0 replies; 8+ messages in thread
From: Allen S. Rout @ 2013-09-04 16:59 UTC (permalink / raw)
  To: emacs-orgmode

On 09/04/2013 09:23 AM, Johannes Rainer wrote:
>
> well, I'm using emacs/org for my data analyses in R. I thus combine
> documentation (i.e. the conclusions drawn from e.g. plots created in R)
> and the R code to perform the analysis in my org file. Since I'm
> analysing high throughput data some tasks to handle the data are quite
> time consuming.
> 

In the past, I have solved that problem by adding a makefile in the
directory, which produces a separate fragment to be consumed/included by
the org file.  Make based on the updated data, publish based on the
static outuput of the make process.

If you let the sim run "in the background" while you edit, you'll likely
get to a point, whilst tweaking or such, that you have dispatched
several long-running jobs in parallel, and only care about the last
result.  That's probably counterproductive. :)


- Allen S. Rout

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: asynchronous code evaluation
  2013-09-04 13:23   ` Johannes Rainer
  2013-09-04 15:25     ` Suvayu Ali
  2013-09-04 16:59     ` Allen S. Rout
@ 2013-09-04 19:20     ` Brett Viren
  2 siblings, 0 replies; 8+ messages in thread
From: Brett Viren @ 2013-09-04 19:20 UTC (permalink / raw)
  To: Johannes Rainer; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1457 bytes --]

Hi Johannes,

Johannes Rainer <johannes.rainer@i-med.ac.at> writes:

> well, I'm using emacs/org for my data analyses in R. I thus combine
> documentation (i.e. the conclusions drawn from e.g. plots created in
> R) and the R code to perform the analysis in my org file. Since I'm
> analysing high throughput data some tasks to handle the data are quite
> time consuming.

A variation on Allen's Makefile approach, I structure my (Python) code
to be idempotent.  The "real" code never (re)runs unless its output
either doesn't exist or is older than the input.  Normally when org runs
the code's higher level interface it's essentially a no-op and very
fast.  If something does change it's usually because I'm doing
development and will be running the code outside of org enough that it's
reached its "no-op state" before I go back into emacs to refresh/edit
the org document.  Also, I keep things synchronous to avoid having to
multiple, competing processes running at once.

What I want is to take this approach and generalize into a more formal
workflow system.  One which handles caching files and in-memory objects
in a versioned store to provide data provenance and idempotent running
in a general sense.  There's already been some work on this ("bein",
"pyutilib workflow" and "sumatra" to name some Python oriented ones) but
so far nothing that "just fits".  I'm in the middle of trying my hand at
something better, but it's not yet usable.

-Brett.

[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: asynchronous code evaluation
  2013-09-04  5:27 asynchronous code evaluation Johannes Rainer
  2013-09-04  8:00 ` Suvayu Ali
  2013-09-04 16:08 ` Charles Berry
@ 2013-09-06 17:54 ` Eric Schulte
  2 siblings, 0 replies; 8+ messages in thread
From: Eric Schulte @ 2013-09-06 17:54 UTC (permalink / raw)
  To: Johannes Rainer; +Cc: emacs-orgmode

Johannes Rainer <johannes.rainer@gmail.com> writes:

> hi all!
>
> I have some pretty calculation intense R code in a code block and when I
> execute the code (C-c C-c) my emacs freezes and waits for the code to
> finish. Is there a way to evaluate the code asynchronously, so that I could
> edit the file (obviously not the code block itself) while the code is being
> evaluated?
>

Hi Jo,

This is not currently possible, but it would certainly be a nice feature
and is something that has been requested before.

This would require some general Org-mode support before any language
specific code is written (ideally no language specific code would be
required).  For anyone who feels like tackling such a project the first
step would be to look at `org-babel-comint-with-output' and
`org-babel-eval'.  I'm not sure what the best way is to wait until the
external process returns to handle the code block results, I'd guess
we'd either want to pass closures to those functions, or somehow yield
while the external process runs.

Some careful thought of the ramifications of asynchronous code block
evaluation may be required.  E.g., would every piece of code which calls
a code block (from "C-c C-c" to :var resolution) need to be updated to
call the code block in an asynchronous manner?

Best,

-- 
Eric Schulte
https://cs.unm.edu/~eschulte
PGP: 0x614CA05D

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-09-06 17:54 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-04  5:27 asynchronous code evaluation Johannes Rainer
2013-09-04  8:00 ` Suvayu Ali
2013-09-04 13:23   ` Johannes Rainer
2013-09-04 15:25     ` Suvayu Ali
2013-09-04 16:59     ` Allen S. Rout
2013-09-04 19:20     ` Brett Viren
2013-09-04 16:08 ` Charles Berry
2013-09-06 17:54 ` Eric Schulte

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).