emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Complex numbers
@ 2011-04-12 15:09 Renier Marchand
  2011-04-13  3:52 ` Eric Schulte
  0 siblings, 1 reply; 7+ messages in thread
From: Renier Marchand @ 2011-04-12 15:09 UTC (permalink / raw)
  To: emacs-orgmode

Hi.

I have been playing around with complex data that has been returned
from Python. This is obviously not in calc.el format but if I change
them to the correct format I can manipulate them using calc.

but

When I want to pass the complex numbers (python format) to python I
get an error. If I pass real number everything works as expected

For example:

      #+source: parameter-variation(data=0)
      #+begin_src python :result values
        return 'text'
      #+end_src


      |   |  hmin |                                     |
      |---+-------+-------------------------------------|
      |   |       |                                     |
      |   |  0.05 | (0.0331901438056,0.000535222885197) |
      |   |   0.1 | (0.0333434157791,0.000537930174356) |
      |   |   0.3 | (0.0345727512157,0.000559346040457) |
      |   |   0.6 | (0.0353146483908,0.000571501584524) |
      |   |   0.9 | (0.0355522909393,0.000574387067408) |
      |   |   1.2 | (0.0356575682336,0.000574851263615) |
      |   |  10.0 | (0.0357806926897,0.000575051685084) |
      | $ | x=0.1 | y=0.1                               |
      |   |  text |                                     |
      #+TBLFM: @11$2='(sbe "parameter-variation" (data
@3$2..@9$2))::@11$3='(sbe "parameter-variation" (data @3$3..@9$3))

i.e. I get the word 'text' returned for column 2 where there are real
numbers but I don't get anything returned where there are complex
numbers. As you can see, there are no actual calculation performed on
the data I am just returning 'text' so I am expecting it to work in
both instances.

The debug sessions show the following for the real column:

Substitution history of formula
Orig:   '(sbe "parameter-variation" (data @3$2..@9$2))
$xyz->  '(sbe "parameter-variation" (data @3$2..@9$2))
@r$c->  '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
(fontified t face org-table)) #("0.6" 0 3 (fontified t face
org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
(fontified t face org-table)) #("10.0" 0 4 (fontified t face
org-table))))
$1->    '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
(fontified t face org-table)) #("0.6" 0 3 (fontified t face
org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
(fontified t face org-table)) #("10.0" 0 4 (fontified t face
org-table))))
Result: text
Format: NONE
Final:  text

and for the complex column:

Substitution history of formula
Orig:   '(sbe "parameter-variation" (data @3$3..@9$3))
$xyz->  '(sbe "parameter-variation" (data @3$3..@9$3))
@r$c->  '(sbe "parameter-variation" (data
#("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
(fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
0 35 (fontified t face org-table))
#("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
(fontified t face org-table))))
$1->    '(sbe "parameter-variation" (data
#("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
(fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
0 35 (fontified t face org-table))
#("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
(fontified t face org-table))))
Result:
Format: NONE
Final:


Thank you very much for your help.

Renier

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

* Re: Complex numbers
  2011-04-12 15:09 Complex numbers Renier Marchand
@ 2011-04-13  3:52 ` Eric Schulte
  2011-04-13  6:37   ` Renier Marchand
  2011-04-13  9:16   ` Renier Marchand
  0 siblings, 2 replies; 7+ messages in thread
From: Eric Schulte @ 2011-04-13  3:52 UTC (permalink / raw)
  To: Renier Marchand; +Cc: emacs-orgmode

Hi Renier,

The Org-mode table machinery is interpreting the values of your table
cells as emacs lisp (given that the table formula is an elisp, rather
than a calc formula).  Due to the "," the result is a weird nested list
which confuses your python code block.  Some options here include...

1. wrapping these cells in quotes so that they are passed to the python
   block as strings...

   #+source: parameter-variation(data=0)
   #+begin_src python :result values
     return 'text'
   #+end_src

   |---------------------------------------|
   | "(0.0331901438056,0.000535222885197)" |
   | "(0.0333434157791,0.000537930174356)" |
   | "(0.0345727512157,0.000559346040457)" |
   | "(0.0353146483908,0.000571501584524)" |
   | "(0.0355522909393,0.000574387067408)" |
   | "(0.0356575682336,0.000574851263615)" |
   | "(0.0357806926897,0.000575051685084)" |
   |---------------------------------------|
   | text                                  |
   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))

2. referencing the table from an external code block, rather than inside
   of a table formula.  This is probably the easier solution, but it
   doesn't insert the result into your table, unless you do something
   tricky like give the code block and the table the same name so that
   the results of the code block replace the table...

   #+results: complex-data
   |-------------------------------------|
   | (0.0331901438056,0.000535222885197) |
   | (0.0333434157791,0.000537930174356) |
   | (0.0345727512157,0.000559346040457) |
   | (0.0353146483908,0.000571501584524) |
   | (0.0355522909393,0.000574387067408) |
   | (0.0356575682336,0.000574851263615) |
   | (0.0357806926897,0.000575051685084) |
   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))

   #+begin_src python :var data=complex-data
     return data
   #+end_src

Hope this helps -- Eric

Renier Marchand <renierm@gmail.com> writes:

> Hi.
>
> I have been playing around with complex data that has been returned
> from Python. This is obviously not in calc.el format but if I change
> them to the correct format I can manipulate them using calc.
>
> but
>
> When I want to pass the complex numbers (python format) to python I
> get an error. If I pass real number everything works as expected
>
> For example:
>
>       #+source: parameter-variation(data=0)
>       #+begin_src python :result values
>         return 'text'
>       #+end_src
>
>
>       |   |  hmin |                                     |
>       |---+-------+-------------------------------------|
>       |   |       |                                     |
>       |   |  0.05 | (0.0331901438056,0.000535222885197) |
>       |   |   0.1 | (0.0333434157791,0.000537930174356) |
>       |   |   0.3 | (0.0345727512157,0.000559346040457) |
>       |   |   0.6 | (0.0353146483908,0.000571501584524) |
>       |   |   0.9 | (0.0355522909393,0.000574387067408) |
>       |   |   1.2 | (0.0356575682336,0.000574851263615) |
>       |   |  10.0 | (0.0357806926897,0.000575051685084) |
>       | $ | x=0.1 | y=0.1                               |
>       |   |  text |                                     |
>       #+TBLFM: @11$2='(sbe "parameter-variation" (data
> @3$2..@9$2))::@11$3='(sbe "parameter-variation" (data @3$3..@9$3))
>
> i.e. I get the word 'text' returned for column 2 where there are real
> numbers but I don't get anything returned where there are complex
> numbers. As you can see, there are no actual calculation performed on
> the data I am just returning 'text' so I am expecting it to work in
> both instances.
>
> The debug sessions show the following for the real column:
>
> Substitution history of formula
> Orig:   '(sbe "parameter-variation" (data @3$2..@9$2))
> $xyz->  '(sbe "parameter-variation" (data @3$2..@9$2))
> @r$c->  '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
> org-table))))
> $1->    '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
> org-table))))
> Result: text
> Format: NONE
> Final:  text
>
> and for the complex column:
>
> Substitution history of formula
> Orig:   '(sbe "parameter-variation" (data @3$3..@9$3))
> $xyz->  '(sbe "parameter-variation" (data @3$3..@9$3))
> @r$c->  '(sbe "parameter-variation" (data
> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
> 0 35 (fontified t face org-table))
> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
> (fontified t face org-table))))
> $1->    '(sbe "parameter-variation" (data
> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
> 0 35 (fontified t face org-table))
> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
> (fontified t face org-table))))
> Result:
> Format: NONE
> Final:
>
>
> Thank you very much for your help.
>
> Renier
>
>

-- 
Eric Schulte
http://cs.unm.edu/~eschulte/

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

* Re: Complex numbers
  2011-04-13  3:52 ` Eric Schulte
@ 2011-04-13  6:37   ` Renier Marchand
  2011-04-13  9:16   ` Renier Marchand
  1 sibling, 0 replies; 7+ messages in thread
From: Renier Marchand @ 2011-04-13  6:37 UTC (permalink / raw)
  To: Eric Schulte; +Cc: emacs-orgmode

Hi Eric

Thank you, that clarifies it quite a bit. Forgot about the lispyness
of the numbers in brackets.

Renier

On Wed, Apr 13, 2011 at 5:52 AM, Eric Schulte <schulte.eric@gmail.com> wrote:
> Hi Renier,
>
> The Org-mode table machinery is interpreting the values of your table
> cells as emacs lisp (given that the table formula is an elisp, rather
> than a calc formula).  Due to the "," the result is a weird nested list
> which confuses your python code block.  Some options here include...
>
> 1. wrapping these cells in quotes so that they are passed to the python
>   block as strings...
>
>   #+source: parameter-variation(data=0)
>   #+begin_src python :result values
>     return 'text'
>   #+end_src
>
>   |---------------------------------------|
>   | "(0.0331901438056,0.000535222885197)" |
>   | "(0.0333434157791,0.000537930174356)" |
>   | "(0.0345727512157,0.000559346040457)" |
>   | "(0.0353146483908,0.000571501584524)" |
>   | "(0.0355522909393,0.000574387067408)" |
>   | "(0.0356575682336,0.000574851263615)" |
>   | "(0.0357806926897,0.000575051685084)" |
>   |---------------------------------------|
>   | text                                  |
>   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))
>
> 2. referencing the table from an external code block, rather than inside
>   of a table formula.  This is probably the easier solution, but it
>   doesn't insert the result into your table, unless you do something
>   tricky like give the code block and the table the same name so that
>   the results of the code block replace the table...
>
>   #+results: complex-data
>   |-------------------------------------|
>   | (0.0331901438056,0.000535222885197) |
>   | (0.0333434157791,0.000537930174356) |
>   | (0.0345727512157,0.000559346040457) |
>   | (0.0353146483908,0.000571501584524) |
>   | (0.0355522909393,0.000574387067408) |
>   | (0.0356575682336,0.000574851263615) |
>   | (0.0357806926897,0.000575051685084) |
>   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))
>
>   #+begin_src python :var data=complex-data
>     return data
>   #+end_src
>
> Hope this helps -- Eric
>
> Renier Marchand <renierm@gmail.com> writes:
>
>> Hi.
>>
>> I have been playing around with complex data that has been returned
>> from Python. This is obviously not in calc.el format but if I change
>> them to the correct format I can manipulate them using calc.
>>
>> but
>>
>> When I want to pass the complex numbers (python format) to python I
>> get an error. If I pass real number everything works as expected
>>
>> For example:
>>
>>       #+source: parameter-variation(data=0)
>>       #+begin_src python :result values
>>         return 'text'
>>       #+end_src
>>
>>
>>       |   |  hmin |                                     |
>>       |---+-------+-------------------------------------|
>>       |   |       |                                     |
>>       |   |  0.05 | (0.0331901438056,0.000535222885197) |
>>       |   |   0.1 | (0.0333434157791,0.000537930174356) |
>>       |   |   0.3 | (0.0345727512157,0.000559346040457) |
>>       |   |   0.6 | (0.0353146483908,0.000571501584524) |
>>       |   |   0.9 | (0.0355522909393,0.000574387067408) |
>>       |   |   1.2 | (0.0356575682336,0.000574851263615) |
>>       |   |  10.0 | (0.0357806926897,0.000575051685084) |
>>       | $ | x=0.1 | y=0.1                               |
>>       |   |  text |                                     |
>>       #+TBLFM: @11$2='(sbe "parameter-variation" (data
>> @3$2..@9$2))::@11$3='(sbe "parameter-variation" (data @3$3..@9$3))
>>
>> i.e. I get the word 'text' returned for column 2 where there are real
>> numbers but I don't get anything returned where there are complex
>> numbers. As you can see, there are no actual calculation performed on
>> the data I am just returning 'text' so I am expecting it to work in
>> both instances.
>>
>> The debug sessions show the following for the real column:
>>
>> Substitution history of formula
>> Orig:   '(sbe "parameter-variation" (data @3$2..@9$2))
>> $xyz->  '(sbe "parameter-variation" (data @3$2..@9$2))
>> @r$c->  '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
>> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
>> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
>> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
>> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
>> org-table))))
>> $1->    '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
>> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
>> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
>> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
>> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
>> org-table))))
>> Result: text
>> Format: NONE
>> Final:  text
>>
>> and for the complex column:
>>
>> Substitution history of formula
>> Orig:   '(sbe "parameter-variation" (data @3$3..@9$3))
>> $xyz->  '(sbe "parameter-variation" (data @3$3..@9$3))
>> @r$c->  '(sbe "parameter-variation" (data
>> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
>> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
>> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
>> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
>> 0 35 (fontified t face org-table))
>> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
>> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
>> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
>> (fontified t face org-table))))
>> $1->    '(sbe "parameter-variation" (data
>> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
>> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
>> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
>> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
>> 0 35 (fontified t face org-table))
>> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
>> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
>> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
>> (fontified t face org-table))))
>> Result:
>> Format: NONE
>> Final:
>>
>>
>> Thank you very much for your help.
>>
>> Renier
>>
>>
>
> --
> Eric Schulte
> http://cs.unm.edu/~eschulte/
>

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

* Re: Complex numbers
  2011-04-13  3:52 ` Eric Schulte
  2011-04-13  6:37   ` Renier Marchand
@ 2011-04-13  9:16   ` Renier Marchand
  2011-04-13 16:35     ` Eric Schulte
  1 sibling, 1 reply; 7+ messages in thread
From: Renier Marchand @ 2011-04-13  9:16 UTC (permalink / raw)
  To: Eric Schulte; +Cc: emacs-orgmode

I have found the following way to reference my data correctly without
having to quote it or have data rewritten.

I do:

      #+tblname: my-data
      | hmin |
      |------|
      |      |
      | 0.05 |
      |  0.2 |
      |  0.2 |
      #+TBLFM: @5$1='(sbe "myfunc" (data "my-data[3:4,0]"))

This also works for complex data as you suggested.

But is there a way to refer in the formula to the current table
instead of a specific table? Because this would obviously not work for
multiple tables with the same name. (i.e. copy and paste for another
dataset)

Regards,

Renier

On Wed, Apr 13, 2011 at 5:52 AM, Eric Schulte <schulte.eric@gmail.com> wrote:
> Hi Renier,
>
> The Org-mode table machinery is interpreting the values of your table
> cells as emacs lisp (given that the table formula is an elisp, rather
> than a calc formula).  Due to the "," the result is a weird nested list
> which confuses your python code block.  Some options here include...
>
> 1. wrapping these cells in quotes so that they are passed to the python
>   block as strings...
>
>   #+source: parameter-variation(data=0)
>   #+begin_src python :result values
>     return 'text'
>   #+end_src
>
>   |---------------------------------------|
>   | "(0.0331901438056,0.000535222885197)" |
>   | "(0.0333434157791,0.000537930174356)" |
>   | "(0.0345727512157,0.000559346040457)" |
>   | "(0.0353146483908,0.000571501584524)" |
>   | "(0.0355522909393,0.000574387067408)" |
>   | "(0.0356575682336,0.000574851263615)" |
>   | "(0.0357806926897,0.000575051685084)" |
>   |---------------------------------------|
>   | text                                  |
>   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))
>
> 2. referencing the table from an external code block, rather than inside
>   of a table formula.  This is probably the easier solution, but it
>   doesn't insert the result into your table, unless you do something
>   tricky like give the code block and the table the same name so that
>   the results of the code block replace the table...
>
>   #+results: complex-data
>   |-------------------------------------|
>   | (0.0331901438056,0.000535222885197) |
>   | (0.0333434157791,0.000537930174356) |
>   | (0.0345727512157,0.000559346040457) |
>   | (0.0353146483908,0.000571501584524) |
>   | (0.0355522909393,0.000574387067408) |
>   | (0.0356575682336,0.000574851263615) |
>   | (0.0357806926897,0.000575051685084) |
>   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))
>
>   #+begin_src python :var data=complex-data
>     return data
>   #+end_src
>
> Hope this helps -- Eric
>
> Renier Marchand <renierm@gmail.com> writes:
>
>> Hi.
>>
>> I have been playing around with complex data that has been returned
>> from Python. This is obviously not in calc.el format but if I change
>> them to the correct format I can manipulate them using calc.
>>
>> but
>>
>> When I want to pass the complex numbers (python format) to python I
>> get an error. If I pass real number everything works as expected
>>
>> For example:
>>
>>       #+source: parameter-variation(data=0)
>>       #+begin_src python :result values
>>         return 'text'
>>       #+end_src
>>
>>
>>       |   |  hmin |                                     |
>>       |---+-------+-------------------------------------|
>>       |   |       |                                     |
>>       |   |  0.05 | (0.0331901438056,0.000535222885197) |
>>       |   |   0.1 | (0.0333434157791,0.000537930174356) |
>>       |   |   0.3 | (0.0345727512157,0.000559346040457) |
>>       |   |   0.6 | (0.0353146483908,0.000571501584524) |
>>       |   |   0.9 | (0.0355522909393,0.000574387067408) |
>>       |   |   1.2 | (0.0356575682336,0.000574851263615) |
>>       |   |  10.0 | (0.0357806926897,0.000575051685084) |
>>       | $ | x=0.1 | y=0.1                               |
>>       |   |  text |                                     |
>>       #+TBLFM: @11$2='(sbe "parameter-variation" (data
>> @3$2..@9$2))::@11$3='(sbe "parameter-variation" (data @3$3..@9$3))
>>
>> i.e. I get the word 'text' returned for column 2 where there are real
>> numbers but I don't get anything returned where there are complex
>> numbers. As you can see, there are no actual calculation performed on
>> the data I am just returning 'text' so I am expecting it to work in
>> both instances.
>>
>> The debug sessions show the following for the real column:
>>
>> Substitution history of formula
>> Orig:   '(sbe "parameter-variation" (data @3$2..@9$2))
>> $xyz->  '(sbe "parameter-variation" (data @3$2..@9$2))
>> @r$c->  '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
>> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
>> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
>> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
>> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
>> org-table))))
>> $1->    '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
>> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
>> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
>> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
>> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
>> org-table))))
>> Result: text
>> Format: NONE
>> Final:  text
>>
>> and for the complex column:
>>
>> Substitution history of formula
>> Orig:   '(sbe "parameter-variation" (data @3$3..@9$3))
>> $xyz->  '(sbe "parameter-variation" (data @3$3..@9$3))
>> @r$c->  '(sbe "parameter-variation" (data
>> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
>> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
>> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
>> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
>> 0 35 (fontified t face org-table))
>> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
>> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
>> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
>> (fontified t face org-table))))
>> $1->    '(sbe "parameter-variation" (data
>> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
>> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
>> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
>> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
>> 0 35 (fontified t face org-table))
>> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
>> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
>> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
>> (fontified t face org-table))))
>> Result:
>> Format: NONE
>> Final:
>>
>>
>> Thank you very much for your help.
>>
>> Renier
>>
>>
>
> --
> Eric Schulte
> http://cs.unm.edu/~eschulte/
>

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

* Re: Complex numbers
  2011-04-13  9:16   ` Renier Marchand
@ 2011-04-13 16:35     ` Eric Schulte
  2011-04-15 15:03       ` Renier Marchand
  0 siblings, 1 reply; 7+ messages in thread
From: Eric Schulte @ 2011-04-13 16:35 UTC (permalink / raw)
  To: Renier Marchand; +Cc: emacs-orgmode

Renier Marchand <renierm@gmail.com> writes:

> I have found the following way to reference my data correctly without
> having to quote it or have data rewritten.
>
> I do:
>
>       #+tblname: my-data
>       | hmin |
>       |------|
>       |      |
>       | 0.05 |
>       |  0.2 |
>       |  0.2 |
>       #+TBLFM: @5$1='(sbe "myfunc" (data "my-data[3:4,0]"))
>
> This also works for complex data as you suggested.
>

Very cool, I would never have thought to use a reference within a table
formula.

>
> But is there a way to refer in the formula to the current table
> instead of a specific table? Because this would obviously not work for
> multiple tables with the same name. (i.e. copy and paste for another
> dataset)
>

No, there is no support for that sort of usage, and adding such a
position dependent reference would be a fairly large change from the
existing reference resolution mechanisms.

Best -- Eric

>
> Regards,
>
> Renier
>
> On Wed, Apr 13, 2011 at 5:52 AM, Eric Schulte <schulte.eric@gmail.com> wrote:
>> Hi Renier,
>>
>> The Org-mode table machinery is interpreting the values of your table
>> cells as emacs lisp (given that the table formula is an elisp, rather
>> than a calc formula).  Due to the "," the result is a weird nested list
>> which confuses your python code block.  Some options here include...
>>
>> 1. wrapping these cells in quotes so that they are passed to the python
>>   block as strings...
>>
>>   #+source: parameter-variation(data=0)
>>   #+begin_src python :result values
>>     return 'text'
>>   #+end_src
>>
>>   |---------------------------------------|
>>   | "(0.0331901438056,0.000535222885197)" |
>>   | "(0.0333434157791,0.000537930174356)" |
>>   | "(0.0345727512157,0.000559346040457)" |
>>   | "(0.0353146483908,0.000571501584524)" |
>>   | "(0.0355522909393,0.000574387067408)" |
>>   | "(0.0356575682336,0.000574851263615)" |
>>   | "(0.0357806926897,0.000575051685084)" |
>>   |---------------------------------------|
>>   | text                                  |
>>   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))
>>
>> 2. referencing the table from an external code block, rather than inside
>>   of a table formula.  This is probably the easier solution, but it
>>   doesn't insert the result into your table, unless you do something
>>   tricky like give the code block and the table the same name so that
>>   the results of the code block replace the table...
>>
>>   #+results: complex-data
>>   |-------------------------------------|
>>   | (0.0331901438056,0.000535222885197) |
>>   | (0.0333434157791,0.000537930174356) |
>>   | (0.0345727512157,0.000559346040457) |
>>   | (0.0353146483908,0.000571501584524) |
>>   | (0.0355522909393,0.000574387067408) |
>>   | (0.0356575682336,0.000574851263615) |
>>   | (0.0357806926897,0.000575051685084) |
>>   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))
>>
>>   #+begin_src python :var data=complex-data
>>     return data
>>   #+end_src
>>
>> Hope this helps -- Eric
>>
>> Renier Marchand <renierm@gmail.com> writes:
>>
>>> Hi.
>>>
>>> I have been playing around with complex data that has been returned
>>> from Python. This is obviously not in calc.el format but if I change
>>> them to the correct format I can manipulate them using calc.
>>>
>>> but
>>>
>>> When I want to pass the complex numbers (python format) to python I
>>> get an error. If I pass real number everything works as expected
>>>
>>> For example:
>>>
>>>       #+source: parameter-variation(data=0)
>>>       #+begin_src python :result values
>>>         return 'text'
>>>       #+end_src
>>>
>>>
>>>       |   |  hmin |                                     |
>>>       |---+-------+-------------------------------------|
>>>       |   |       |                                     |
>>>       |   |  0.05 | (0.0331901438056,0.000535222885197) |
>>>       |   |   0.1 | (0.0333434157791,0.000537930174356) |
>>>       |   |   0.3 | (0.0345727512157,0.000559346040457) |
>>>       |   |   0.6 | (0.0353146483908,0.000571501584524) |
>>>       |   |   0.9 | (0.0355522909393,0.000574387067408) |
>>>       |   |   1.2 | (0.0356575682336,0.000574851263615) |
>>>       |   |  10.0 | (0.0357806926897,0.000575051685084) |
>>>       | $ | x=0.1 | y=0.1                               |
>>>       |   |  text |                                     |
>>>       #+TBLFM: @11$2='(sbe "parameter-variation" (data
>>> @3$2..@9$2))::@11$3='(sbe "parameter-variation" (data @3$3..@9$3))
>>>
>>> i.e. I get the word 'text' returned for column 2 where there are real
>>> numbers but I don't get anything returned where there are complex
>>> numbers. As you can see, there are no actual calculation performed on
>>> the data I am just returning 'text' so I am expecting it to work in
>>> both instances.
>>>
>>> The debug sessions show the following for the real column:
>>>
>>> Substitution history of formula
>>> Orig:   '(sbe "parameter-variation" (data @3$2..@9$2))
>>> $xyz->  '(sbe "parameter-variation" (data @3$2..@9$2))
>>> @r$c->  '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
>>> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
>>> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
>>> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
>>> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
>>> org-table))))
>>> $1->    '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
>>> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
>>> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
>>> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
>>> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
>>> org-table))))
>>> Result: text
>>> Format: NONE
>>> Final:  text
>>>
>>> and for the complex column:
>>>
>>> Substitution history of formula
>>> Orig:   '(sbe "parameter-variation" (data @3$3..@9$3))
>>> $xyz->  '(sbe "parameter-variation" (data @3$3..@9$3))
>>> @r$c->  '(sbe "parameter-variation" (data
>>> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
>>> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
>>> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
>>> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
>>> 0 35 (fontified t face org-table))
>>> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
>>> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
>>> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
>>> (fontified t face org-table))))
>>> $1->    '(sbe "parameter-variation" (data
>>> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
>>> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
>>> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
>>> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
>>> 0 35 (fontified t face org-table))
>>> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
>>> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
>>> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
>>> (fontified t face org-table))))
>>> Result:
>>> Format: NONE
>>> Final:
>>>
>>>
>>> Thank you very much for your help.
>>>
>>> Renier
>>>
>>>
>>
>> --
>> Eric Schulte
>> http://cs.unm.edu/~eschulte/
>>
>

-- 
Eric Schulte
http://cs.unm.edu/~eschulte/

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

* Re: Complex numbers
  2011-04-13 16:35     ` Eric Schulte
@ 2011-04-15 15:03       ` Renier Marchand
  2011-04-15 15:50         ` Eric Schulte
  0 siblings, 1 reply; 7+ messages in thread
From: Renier Marchand @ 2011-04-15 15:03 UTC (permalink / raw)
  To: Eric Schulte; +Cc: emacs-orgmode

It is a cool idea yes, but I quickly learned that it also have its
problems, i.e. you cant really create nice column formulas because the
reference is not aware of "the current row" etc.

The biggest problem as I see it is that emacs-lisp does not support
the complex data type as lisp (natively) do. I am going to look into a
way of representing it.. maybe a two element lisp list (re im). I am
not really versed in lisp so it is a bit of a problem to modify code,
but I am looking into it.

One problem that I have encountered is that when a two element list is
referenced in the following scenario

| (1 2) | #ERROR |
#+TBLFM: $2='(sbe "myfunc" (data $1))

an error is caused because lisp is trying to execute this list
appearing struct, but when I do

| (1 2) |
| (2 3) |
| resul |
#+TBLFM: $1@3='(sbe "myfunc" (data @1$1..@2$1))

no error is reported because it is assumed to be a list of data for my
python code. i.e. it is sent as [[1,2],[2,3]] which is what I want. Is
there a way to get more consistent behavior?

Thank you.
Renier

On Wed, Apr 13, 2011 at 6:35 PM, Eric Schulte <schulte.eric@gmail.com> wrote:
> Renier Marchand <renierm@gmail.com> writes:
>
>> I have found the following way to reference my data correctly without
>> having to quote it or have data rewritten.
>>
>> I do:
>>
>>       #+tblname: my-data
>>       | hmin |
>>       |------|
>>       |      |
>>       | 0.05 |
>>       |  0.2 |
>>       |  0.2 |
>>       #+TBLFM: @5$1='(sbe "myfunc" (data "my-data[3:4,0]"))
>>
>> This also works for complex data as you suggested.
>>
>
> Very cool, I would never have thought to use a reference within a table
> formula.
>
>>
>> But is there a way to refer in the formula to the current table
>> instead of a specific table? Because this would obviously not work for
>> multiple tables with the same name. (i.e. copy and paste for another
>> dataset)
>>
>
> No, there is no support for that sort of usage, and adding such a
> position dependent reference would be a fairly large change from the
> existing reference resolution mechanisms.
>
> Best -- Eric
>
>>
>> Regards,
>>
>> Renier
>>
>> On Wed, Apr 13, 2011 at 5:52 AM, Eric Schulte <schulte.eric@gmail.com> wrote:
>>> Hi Renier,
>>>
>>> The Org-mode table machinery is interpreting the values of your table
>>> cells as emacs lisp (given that the table formula is an elisp, rather
>>> than a calc formula).  Due to the "," the result is a weird nested list
>>> which confuses your python code block.  Some options here include...
>>>
>>> 1. wrapping these cells in quotes so that they are passed to the python
>>>   block as strings...
>>>
>>>   #+source: parameter-variation(data=0)
>>>   #+begin_src python :result values
>>>     return 'text'
>>>   #+end_src
>>>
>>>   |---------------------------------------|
>>>   | "(0.0331901438056,0.000535222885197)" |
>>>   | "(0.0333434157791,0.000537930174356)" |
>>>   | "(0.0345727512157,0.000559346040457)" |
>>>   | "(0.0353146483908,0.000571501584524)" |
>>>   | "(0.0355522909393,0.000574387067408)" |
>>>   | "(0.0356575682336,0.000574851263615)" |
>>>   | "(0.0357806926897,0.000575051685084)" |
>>>   |---------------------------------------|
>>>   | text                                  |
>>>   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))
>>>
>>> 2. referencing the table from an external code block, rather than inside
>>>   of a table formula.  This is probably the easier solution, but it
>>>   doesn't insert the result into your table, unless you do something
>>>   tricky like give the code block and the table the same name so that
>>>   the results of the code block replace the table...
>>>
>>>   #+results: complex-data
>>>   |-------------------------------------|
>>>   | (0.0331901438056,0.000535222885197) |
>>>   | (0.0333434157791,0.000537930174356) |
>>>   | (0.0345727512157,0.000559346040457) |
>>>   | (0.0353146483908,0.000571501584524) |
>>>   | (0.0355522909393,0.000574387067408) |
>>>   | (0.0356575682336,0.000574851263615) |
>>>   | (0.0357806926897,0.000575051685084) |
>>>   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))
>>>
>>>   #+begin_src python :var data=complex-data
>>>     return data
>>>   #+end_src
>>>
>>> Hope this helps -- Eric
>>>
>>> Renier Marchand <renierm@gmail.com> writes:
>>>
>>>> Hi.
>>>>
>>>> I have been playing around with complex data that has been returned
>>>> from Python. This is obviously not in calc.el format but if I change
>>>> them to the correct format I can manipulate them using calc.
>>>>
>>>> but
>>>>
>>>> When I want to pass the complex numbers (python format) to python I
>>>> get an error. If I pass real number everything works as expected
>>>>
>>>> For example:
>>>>
>>>>       #+source: parameter-variation(data=0)
>>>>       #+begin_src python :result values
>>>>         return 'text'
>>>>       #+end_src
>>>>
>>>>
>>>>       |   |  hmin |                                     |
>>>>       |---+-------+-------------------------------------|
>>>>       |   |       |                                     |
>>>>       |   |  0.05 | (0.0331901438056,0.000535222885197) |
>>>>       |   |   0.1 | (0.0333434157791,0.000537930174356) |
>>>>       |   |   0.3 | (0.0345727512157,0.000559346040457) |
>>>>       |   |   0.6 | (0.0353146483908,0.000571501584524) |
>>>>       |   |   0.9 | (0.0355522909393,0.000574387067408) |
>>>>       |   |   1.2 | (0.0356575682336,0.000574851263615) |
>>>>       |   |  10.0 | (0.0357806926897,0.000575051685084) |
>>>>       | $ | x=0.1 | y=0.1                               |
>>>>       |   |  text |                                     |
>>>>       #+TBLFM: @11$2='(sbe "parameter-variation" (data
>>>> @3$2..@9$2))::@11$3='(sbe "parameter-variation" (data @3$3..@9$3))
>>>>
>>>> i.e. I get the word 'text' returned for column 2 where there are real
>>>> numbers but I don't get anything returned where there are complex
>>>> numbers. As you can see, there are no actual calculation performed on
>>>> the data I am just returning 'text' so I am expecting it to work in
>>>> both instances.
>>>>
>>>> The debug sessions show the following for the real column:
>>>>
>>>> Substitution history of formula
>>>> Orig:   '(sbe "parameter-variation" (data @3$2..@9$2))
>>>> $xyz->  '(sbe "parameter-variation" (data @3$2..@9$2))
>>>> @r$c->  '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
>>>> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
>>>> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
>>>> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
>>>> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
>>>> org-table))))
>>>> $1->    '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
>>>> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
>>>> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
>>>> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
>>>> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
>>>> org-table))))
>>>> Result: text
>>>> Format: NONE
>>>> Final:  text
>>>>
>>>> and for the complex column:
>>>>
>>>> Substitution history of formula
>>>> Orig:   '(sbe "parameter-variation" (data @3$3..@9$3))
>>>> $xyz->  '(sbe "parameter-variation" (data @3$3..@9$3))
>>>> @r$c->  '(sbe "parameter-variation" (data
>>>> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
>>>> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
>>>> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
>>>> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
>>>> 0 35 (fontified t face org-table))
>>>> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
>>>> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
>>>> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
>>>> (fontified t face org-table))))
>>>> $1->    '(sbe "parameter-variation" (data
>>>> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
>>>> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
>>>> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
>>>> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
>>>> 0 35 (fontified t face org-table))
>>>> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
>>>> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
>>>> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
>>>> (fontified t face org-table))))
>>>> Result:
>>>> Format: NONE
>>>> Final:
>>>>
>>>>
>>>> Thank you very much for your help.
>>>>
>>>> Renier
>>>>
>>>>
>>>
>>> --
>>> Eric Schulte
>>> http://cs.unm.edu/~eschulte/
>>>
>>
>
> --
> Eric Schulte
> http://cs.unm.edu/~eschulte/
>

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

* Re: Complex numbers
  2011-04-15 15:03       ` Renier Marchand
@ 2011-04-15 15:50         ` Eric Schulte
  0 siblings, 0 replies; 7+ messages in thread
From: Eric Schulte @ 2011-04-15 15:50 UTC (permalink / raw)
  To: Renier Marchand; +Cc: emacs-orgmode

Renier Marchand <renierm@gmail.com> writes:

> It is a cool idea yes, but I quickly learned that it also have its
> problems, i.e. you cant really create nice column formulas because the
> reference is not aware of "the current row" etc.
>
> The biggest problem as I see it is that emacs-lisp does not support
> the complex data type as lisp (natively) do. I am going to look into a
> way of representing it.. maybe a two element lisp list (re im). I am
> not really versed in lisp so it is a bit of a problem to modify code,
> but I am looking into it.
>
> One problem that I have encountered is that when a two element list is
> referenced in the following scenario
>
> | (1 2) | #ERROR |
> #+TBLFM: $2='(sbe "myfunc" (data $1))
>
> an error is caused because lisp is trying to execute this list
> appearing struct, but when I do
>
> | (1 2) |
> | (2 3) |
> | resul |
> #+TBLFM: $1@3='(sbe "myfunc" (data @1$1..@2$1))
>
> no error is reported because it is assumed to be a list of data for my
> python code. i.e. it is sent as [[1,2],[2,3]] which is what I want. Is
> there a way to get more consistent behavior?
>

If you represent the complex number as a vector instead of a list, then
elisp will not assume that the first element is a function and try to
evaluate the data, e.g.

| [1 2]            |
|------------------|
| real:1 complex:2 |
#+TBLFM: @2$1='(sbe real (it @1$1))

#+source: real(it='())
#+begin_src emacs-lisp
  (format "real:%d complex:%d" (aref it 0) (aref it 1))
#+end_src

also, a quoted list '(1 2) would work...

Best -- Eric

>
> Thank you.
> Renier
>
> On Wed, Apr 13, 2011 at 6:35 PM, Eric Schulte <schulte.eric@gmail.com> wrote:
>> Renier Marchand <renierm@gmail.com> writes:
>>
>>> I have found the following way to reference my data correctly without
>>> having to quote it or have data rewritten.
>>>
>>> I do:
>>>
>>>       #+tblname: my-data
>>>       | hmin |
>>>       |------|
>>>       |      |
>>>       | 0.05 |
>>>       |  0.2 |
>>>       |  0.2 |
>>>       #+TBLFM: @5$1='(sbe "myfunc" (data "my-data[3:4,0]"))
>>>
>>> This also works for complex data as you suggested.
>>>
>>
>> Very cool, I would never have thought to use a reference within a table
>> formula.
>>
>>>
>>> But is there a way to refer in the formula to the current table
>>> instead of a specific table? Because this would obviously not work for
>>> multiple tables with the same name. (i.e. copy and paste for another
>>> dataset)
>>>
>>
>> No, there is no support for that sort of usage, and adding such a
>> position dependent reference would be a fairly large change from the
>> existing reference resolution mechanisms.
>>
>> Best -- Eric
>>
>>>
>>> Regards,
>>>
>>> Renier
>>>
>>> On Wed, Apr 13, 2011 at 5:52 AM, Eric Schulte <schulte.eric@gmail.com> wrote:
>>>> Hi Renier,
>>>>
>>>> The Org-mode table machinery is interpreting the values of your table
>>>> cells as emacs lisp (given that the table formula is an elisp, rather
>>>> than a calc formula).  Due to the "," the result is a weird nested list
>>>> which confuses your python code block.  Some options here include...
>>>>
>>>> 1. wrapping these cells in quotes so that they are passed to the python
>>>>   block as strings...
>>>>
>>>>   #+source: parameter-variation(data=0)
>>>>   #+begin_src python :result values
>>>>     return 'text'
>>>>   #+end_src
>>>>
>>>>   |---------------------------------------|
>>>>   | "(0.0331901438056,0.000535222885197)" |
>>>>   | "(0.0333434157791,0.000537930174356)" |
>>>>   | "(0.0345727512157,0.000559346040457)" |
>>>>   | "(0.0353146483908,0.000571501584524)" |
>>>>   | "(0.0355522909393,0.000574387067408)" |
>>>>   | "(0.0356575682336,0.000574851263615)" |
>>>>   | "(0.0357806926897,0.000575051685084)" |
>>>>   |---------------------------------------|
>>>>   | text                                  |
>>>>   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))
>>>>
>>>> 2. referencing the table from an external code block, rather than inside
>>>>   of a table formula.  This is probably the easier solution, but it
>>>>   doesn't insert the result into your table, unless you do something
>>>>   tricky like give the code block and the table the same name so that
>>>>   the results of the code block replace the table...
>>>>
>>>>   #+results: complex-data
>>>>   |-------------------------------------|
>>>>   | (0.0331901438056,0.000535222885197) |
>>>>   | (0.0333434157791,0.000537930174356) |
>>>>   | (0.0345727512157,0.000559346040457) |
>>>>   | (0.0353146483908,0.000571501584524) |
>>>>   | (0.0355522909393,0.000574387067408) |
>>>>   | (0.0356575682336,0.000574851263615) |
>>>>   | (0.0357806926897,0.000575051685084) |
>>>>   #+TBLFM: @8$1='(sbe parameter-variation (nums @1$1..@7$1))
>>>>
>>>>   #+begin_src python :var data=complex-data
>>>>     return data
>>>>   #+end_src
>>>>
>>>> Hope this helps -- Eric
>>>>
>>>> Renier Marchand <renierm@gmail.com> writes:
>>>>
>>>>> Hi.
>>>>>
>>>>> I have been playing around with complex data that has been returned
>>>>> from Python. This is obviously not in calc.el format but if I change
>>>>> them to the correct format I can manipulate them using calc.
>>>>>
>>>>> but
>>>>>
>>>>> When I want to pass the complex numbers (python format) to python I
>>>>> get an error. If I pass real number everything works as expected
>>>>>
>>>>> For example:
>>>>>
>>>>>       #+source: parameter-variation(data=0)
>>>>>       #+begin_src python :result values
>>>>>         return 'text'
>>>>>       #+end_src
>>>>>
>>>>>
>>>>>       |   |  hmin |                                     |
>>>>>       |---+-------+-------------------------------------|
>>>>>       |   |       |                                     |
>>>>>       |   |  0.05 | (0.0331901438056,0.000535222885197) |
>>>>>       |   |   0.1 | (0.0333434157791,0.000537930174356) |
>>>>>       |   |   0.3 | (0.0345727512157,0.000559346040457) |
>>>>>       |   |   0.6 | (0.0353146483908,0.000571501584524) |
>>>>>       |   |   0.9 | (0.0355522909393,0.000574387067408) |
>>>>>       |   |   1.2 | (0.0356575682336,0.000574851263615) |
>>>>>       |   |  10.0 | (0.0357806926897,0.000575051685084) |
>>>>>       | $ | x=0.1 | y=0.1                               |
>>>>>       |   |  text |                                     |
>>>>>       #+TBLFM: @11$2='(sbe "parameter-variation" (data
>>>>> @3$2..@9$2))::@11$3='(sbe "parameter-variation" (data @3$3..@9$3))
>>>>>
>>>>> i.e. I get the word 'text' returned for column 2 where there are real
>>>>> numbers but I don't get anything returned where there are complex
>>>>> numbers. As you can see, there are no actual calculation performed on
>>>>> the data I am just returning 'text' so I am expecting it to work in
>>>>> both instances.
>>>>>
>>>>> The debug sessions show the following for the real column:
>>>>>
>>>>> Substitution history of formula
>>>>> Orig:   '(sbe "parameter-variation" (data @3$2..@9$2))
>>>>> $xyz->  '(sbe "parameter-variation" (data @3$2..@9$2))
>>>>> @r$c->  '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
>>>>> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
>>>>> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
>>>>> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
>>>>> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
>>>>> org-table))))
>>>>> $1->    '(sbe "parameter-variation" (data #("0.05" 0 4 (fontified t
>>>>> face org-table)) #("0.1" 0 3 (fontified t face org-table)) #("0.3" 0 3
>>>>> (fontified t face org-table)) #("0.6" 0 3 (fontified t face
>>>>> org-table)) #("0.9" 0 3 (fontified t face org-table)) #("1.2" 0 3
>>>>> (fontified t face org-table)) #("10.0" 0 4 (fontified t face
>>>>> org-table))))
>>>>> Result: text
>>>>> Format: NONE
>>>>> Final:  text
>>>>>
>>>>> and for the complex column:
>>>>>
>>>>> Substitution history of formula
>>>>> Orig:   '(sbe "parameter-variation" (data @3$3..@9$3))
>>>>> $xyz->  '(sbe "parameter-variation" (data @3$3..@9$3))
>>>>> @r$c->  '(sbe "parameter-variation" (data
>>>>> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
>>>>> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
>>>>> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
>>>>> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
>>>>> 0 35 (fontified t face org-table))
>>>>> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
>>>>> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
>>>>> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
>>>>> (fontified t face org-table))))
>>>>> $1->    '(sbe "parameter-variation" (data
>>>>> #("(0.0331901438056,0.000535222885197)" 0 35 (fontified t face
>>>>> org-table)) #("(0.0333434157791,0.000537930174356)" 0 35 (fontified t
>>>>> face org-table)) #("(0.0345727512157,0.000559346040457)" 0 35
>>>>> (fontified t face org-table)) #("(0.0353146483908,0.000571501584524)"
>>>>> 0 35 (fontified t face org-table))
>>>>> #("(0.0355522909393,0.000574387067408)" 0 35 (fontified t face
>>>>> org-table)) #("(0.0356575682336,0.000574851263615)" 0 35 (fontified t
>>>>> face org-table)) #("(0.0357806926897,0.000575051685084)" 0 35
>>>>> (fontified t face org-table))))
>>>>> Result:
>>>>> Format: NONE
>>>>> Final:
>>>>>
>>>>>
>>>>> Thank you very much for your help.
>>>>>
>>>>> Renier
>>>>>
>>>>>
>>>>
>>>> --
>>>> Eric Schulte
>>>> http://cs.unm.edu/~eschulte/
>>>>
>>>
>>
>> --
>> Eric Schulte
>> http://cs.unm.edu/~eschulte/
>>
>

-- 
Eric Schulte
http://cs.unm.edu/~eschulte/

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

end of thread, other threads:[~2011-04-15 16:26 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-04-12 15:09 Complex numbers Renier Marchand
2011-04-13  3:52 ` Eric Schulte
2011-04-13  6:37   ` Renier Marchand
2011-04-13  9:16   ` Renier Marchand
2011-04-13 16:35     ` Eric Schulte
2011-04-15 15:03       ` Renier Marchand
2011-04-15 15:50         ` 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).