Calling an IDL script in Python

2019-07-18 08:53发布

I would like to run an IDL script in a python code, since I need to analyse the results of IDL code later in the python script but I have no idea how it works. I want to call this IDL script for example in a python code:

pro plotgaussian, center, sigma, X=x, Y=y
x = findgen(1000) / 999; numbers running 0 to 1 in steps of 0.001
x = x * 6 * sigma - 3 * sigma; widen x to range over 6 sigma
x = x + center; center the x range on the bell curve center
arg = ((x – center)/sigma)^2
y = exp(-arg)
plot, x, y
end

How could I do it?

3条回答
戒情不戒烟
2楼-- · 2019-07-18 09:30

Try pyIDL. Google for it, I'm not sure where the most recent version lives. It seems to be fairly old, you might have to do some work to convert from numarray to NumPy.

查看更多
Juvenile、少年°
3楼-- · 2019-07-18 09:33

More recently maintained than pyIDL seems to be pIDLy. I have not tried it (I am not an IDL user).

查看更多
可以哭但决不认输i
4楼-- · 2019-07-18 09:46

The newest version of IDL (8.5) supports this natively, they provide their own bidirectional bridge for calling Python from IDL, and IDL from Python. Their docs are here: http://www.exelisvis.com/docs/pythontoidl.html

Some example code from their docs:

>>> from idlpy import IDL
>>> arr = IDL.findgen(100)/50*3.14159
>>> x = 50*IDL.sin(arr)
>>> y = 50*IDL.cos(arr)
>>> m = IDL.map(test=1)
% Compiled module: MAP.
>>> p = IDL.plot(x - 90, y, 'r-o2', overplot=1)
% Compiled module: PLOT.
>>> p = IDL.plot(x + 90, y, 'b-o2', overplot=1)
>>> m.save('map.png', resolution=96, border=0, transparent=1)
查看更多
登录 后发表回答