emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Torsten Wagner <torsten.wagner@gmail.com>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: Org Mode Mailing List <emacs-orgmode@gnu.org>
Subject: Re: [babel] Problems assigning tables as variables using #+CALL and using properties in code blocks and sbe calls
Date: Fri, 19 Jul 2013 13:06:23 +0200	[thread overview]
Message-ID: <CAPaq-gO=a+2AY0dJnw_6YdcGnj3-9O596D_AZeA1Jrfy=Zc88Q@mail.gmail.com> (raw)
In-Reply-To: <871u6ve4tr.fsf@gmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 5601 bytes --]

Hi Eric,

thanks you so much for always being so responsive to my silly questions :)
I apologize, I wrote that mail 2 am after fiddling around with that problem
for about 3 hours.
Trying to reduce the problem to a minimal example, I almost built in stupid
errors.
I was holding back to send examples as org-file attachment because I
believe that attachments can't be parsed by the different mailing list
archives and thus, any infos there are not searchable. However, I guess in
the future I will simple paste the example and attach a org-file (which in
turn I can really test before sending).

Ok back on track. My problem seems to be quite strange. It is not exactly
related to babel but more about the interface babel + python. Taking your
example, I modified it to reflect my problem

//-------------------------- content of
table-calls.org--------------------------------------------------------

#+TBLNAME: tablename
|   | Name | StudentID | 1.1 | 1.2 | 1.3 | 1.4 | 2.1 | 2.2 | 2.3 | 2.4 |
2.5 | Sum 1 | Sum 2 | Total Sum | Mark | Remark |
|---+------+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-------+-------+-----------+------+--------|
| # | Mr A |     11111 |   0 |  12 |   0 |   0 |  17 |   8 |  10 |   0 |
0 |    12 |    35 |        47 |    5 |        |
| # | Ms B |     22222 |   1 |   2 |   3 |   4 |   5 |   2 |   3 |   4 |
5 |    10 |    19 |        29 |    5 | second |

I have the following code block

#+name: test
#+begin_src python :var table=tablename :exports results
  return type(table[1])
#+end_src

#+RESULTS: test
: <class 'list'>

If I call that function the result is correct

However using

#+CALL: test[:var table=tablename]() :exports results

#+RESULTS: test[:var table=tablename]():exports results
: <class 'NoneType'>

#+CALL: test(table=tablename) :exports results

#+RESULTS: test(table=tablename):exports results
: <class 'NoneType'>

//
------------------------------------------------------end----------------------------------------------------------------

I think I get a bit further with the trouble shooting. As you can see, the
problem seems to be
Calling the source code block directly table seems to be of type list which
is (I guess) correct
However, calling the code via a #+CALL line, the input data (table) is of
type 'NoneType'.
This hoax the later operation in a very strange way. E.g. plan return of
the table is fine, even table[i] works,
more complex operations don't.

The question for me is, why is there a difference of the data (table) type
depending on the call?


As for the second part of the email, again sorry I was kind of tired.
Take I have this property drawer

*** Exam evaluation :intern:
    :PROPERTIES:
    :passscore: 50
    :extrapoints: 1
    :END:

and within a table formula line e.g.
'(sbe score2mark (score $15) (passscore "$PROP_passscore")

This works well, now I want to use the same property as value of a source
code block

Those fail:
#+CALL: createscoretable(passscore=passscore) :exports results
#+CALL: createscoretable(passscore) :exports results
#+CALL: createscoretable($PROP_passscore) :exports results
#+CALL: createscoretable(passscore=$PROPpassscore) :exports results

I can see how to assign a property defined variable to a code block call.
I tried modifications like
*** Exam evaluation :intern:
    :PROPERTIES:
    :var: passscore=50
    :extrapoints: 1
    :END:
and
#+PROPERTY: var  passscore=50

But none of them seem to work for me. Even if one work, would it work
together with the way sbe calls property values?


Basically, I want to use a variable defined in a Property-Drawer for both
the sbe function within table formulars and as value for functions calls of
source code blocks


Thanks again for all your help!

All the best

Torsten








On 19 July 2013 03:06, Eric Schulte <schulte.eric@gmail.com> wrote:

> Torsten Wagner <torsten.wagner@gmail.com> writes:
>
> > Hi,
> > I have a tables like this:
> >
> > #+TBLNAME: tablename
> > | a | b |c | d |
> > | 1 | 2 |3  |4 |
> > | z | x | y |w|
> >
> > #+TBLNAME: othertablename
> > | a | b |c | d |
> > | 1 | 2 |3  |4 |
> > | z | x | y |w|
> >
> > I have the following code block
> >
> > #+name: test
> > #+begin_src python :var table=tablename :exports results
> > import numpy as np
> > tab = np.array(table)
> > return np.array([tab[:,1], tab[:,-1]]).T
> > #+end_src
> >
> > If I call that function the result is correct
> >
> > However using
> >
> > #+CALL: aushang[:var table=othertablename]() :exports results
> > or
> > #+CALL: aushang(table=othertablename) :exports results
> >
> > does not work. It seem the babel block does not get the table but
> something
> > else in case its called by #+CALL:.
> > In general, how-to refer to a table in #+CALL blocks?
> >
>
> Your tables are identical, and you're not calling the test function in
> your call blocks.  A more reasonable (to me) version of your example
> works as expected.
>
>
>
> >
> > On a similar line: I used $PROP_name to use property values within the
> > sbe function.  However, how to use the same property as input to a
> > code-block?
> >
> > +begin_src python :var x=$PROP_name :exports results
> > and
> > +begin_src python :var x=name :exports results
> >
> > did not work
> >
> > Any ideas?
> >
>
> I don't understand the later part of this email, perhaps an example
> would clarify.  Also, it might be worth looking in the following to see
> if something matching your use case appears.
>
>   http://eschulte.github.io/org-scraps/
>
> Cheers,
>
> >
> > Thanks
> >
> > Torsten
>
> --
> Eric Schulte
> http://cs.unm.edu/~eschulte
>
>

[-- Attachment #1.2: Type: text/html, Size: 7267 bytes --]

[-- Attachment #2: table-calls.org --]
[-- Type: application/octet-stream, Size: 1032 bytes --]

#+TBLNAME: tablename
|   | Name | StudentID | 1.1 | 1.2 | 1.3 | 1.4 | 2.1 | 2.2 | 2.3 | 2.4 | 2.5 | Sum 1 | Sum 2 | Total Sum | Mark | Remark |
|---+------+-----------+-----+-----+-----+-----+-----+-----+-----+-----+-----+-------+-------+-----------+------+--------|
| # | Mr A |     11111 |   0 |  12 |   0 |   0 |  17 |   8 |  10 |   0 |   0 |    12 |    35 |        47 |    5 |        |
| # | Ms B |     22222 |   1 |   2 |   3 |   4 |   5 |   2 |   3 |   4 |   5 |    10 |    19 |        29 |    5 | second |

I have the following code block

#+name: test
#+begin_src python :var table=tablename :exports results
  return type(table[1])
#+end_src

#+RESULTS: test
: <class 'list'>

If I call that function the result is correct

However using

#+CALL: test[:var table=tablename]() :exports results

#+RESULTS: test[:var table=tablename]():exports results
: <class 'NoneType'>

#+CALL: test(table=tablename) :exports results

#+RESULTS: test(table=tablename):exports results
: <class 'NoneType'>



  reply	other threads:[~2013-07-19 11:06 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-19  0:34 [babel] Problems assigning tables as variables using #+CALL and using properties in code blocks and sbe calls Torsten Wagner
2013-07-19  1:06 ` Eric Schulte
2013-07-19 11:06   ` Torsten Wagner [this message]
2013-07-19 15:57     ` Torsten Wagner
2013-07-19 17:56       ` Rick Frankel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAPaq-gO=a+2AY0dJnw_6YdcGnj3-9O596D_AZeA1Jrfy=Zc88Q@mail.gmail.com' \
    --to=torsten.wagner@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=schulte.eric@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).