IDL–PYTHON Bridge 기능 살펴보기(1)

IDL 8.5가 출시되면서 IDL에는 IDL–PYTHON Bridge 라는 새로운 기능이 생겼습니다. 이 기능은 IDL과 PYTHON을 서로 불러와 사용할 수 있도록 지원하는 기능입니다. IDL –PYTHON Bridge에 대한 기본적인 내용은 이상우 박사님께서 작성하신 블로그를 참조해주세요.

오늘부터 제가 하고자 하는 IDL–PYTHON Bridge 기능 살펴보기에서는 몇 개의 파트를 거쳐서 IDL과 파이썬에서 각각 구현되어있는 모듈과 함수를 사용해보고, IDL에서 유저가 작성한 클래스를 이용해보는 과정을 거치고자 합니다. 이 내용을 보시고 IDL 유저 여러분께서 IDL–PYTHON Bridge를 사용하시는 데 도움이 되기를 바랍니다.

오늘은 IDL에서 파이썬의 기능들을 사용해 보겠습니다. 처음으로는 간단한 여러가지 방법으로 파이썬에 있는 math 모듈을 불러와 원주율을 출력해보려고 합니다. 아래와 같이 작업해보세요.

서로 다르게 불렀지만, pymath1, pymath2, python.math는 동일한 객체로 보입니다. 하지만 원주율은 이미 math 모듈에 저장되어 있는 상수지요. 그러니 정말 같은지 pymath1에 idlval1이라는 변수를 추가한 다음 pymath1, pymath2, python.math의 idlval1 변수를 다시 확인해보도록 하겠습니다.

보시면 알겠지만, pymath1의 변수만 변경되어도, 모든 모듈객체에서 나오는 값이 동일한 것을 알 수 있습니다. 이처럼 생성 방식에 상관없이 IDL의 파이썬 모듈 객체는 동일한 것을 확인 할 수 있었습니다.

Bridge를 통해서 파이썬 내부에 변수가 생성되었을 때는 어떻게 해야 할까요? 이번에는 파이썬 numpy에 있는 random을 통해서 random array를 파이썬 콘솔에 생성하고 이 것을 IDL로 불러보도록 하겠습니다.

위의 코드를 실행시키면, 파이썬 콘솔에서 생성된 10개의 random array가 python 객체를 통해서 IDL로 옮겨지는 것을 확인할 수 있습니다.

마지막으로 IDL에서 파이썬 함수를 직접 이용해보고자 합니다. 이번에는 파이썬에서 자주 쓰이는 함수인 range 함수를 이용해보았습니다.

파이썬의 range 함수는 range(a,b,c)의 형태를 가지며, a 부터 b보다 작은 숫자까지 c의 크기로 list를 생성하게 됩니다. 제가 넣은 숫자를 보면 1, 10, 2를 인자로 넣었으니, 1부터 시작해서 10보다 작은 숫자까지 2의 크기로 생성되어야 하니 값은 1, 3, 5, 7, 9인것을 알 수 있습니다. 따라서 함수가 잘 실행이 되었다고 볼 수 있겠죠.

오늘의 내용은 여기까지로 하려고 합니다. 다음 시간에는 python에서 IDL의 함수를 사용하는 내용으로 찾아뵙겠습니다.