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

이전 포스팅을 통해서 IDL에서 PYTHON을 사용하는 내용에 대해서 확인을 했었습니다. 이번에는 PYTHON에서 IDL을 사용하는 방법을 보여드리겠습니다.

우선 이 과정에 앞서 파이썬에 Bridge를 연동하는 것은 이미 완료하셨다고 생각하고 진행을 하도록 하겠습니다. 이 내용은 이전 포스팅에도 있는 이상우 박사님의 블로그 혹은 IDL Help를 통해서 자세히 확인할 수 있습니다.

모든 준비가 완료되었다면, Bridge 연동을 위해서 우선 IDL Bridge 모듈을 가져오도록 합시다.

IDL Bridge가 잘 설정되었으면 다음과 같은 익숙한 메시지가 출력이 됩니다.

여기까지 왔으면 파이썬에서 IDL을 사용할 모든 준비는 완료됐습니다. 이제 IDL의 기능을  하나하나 확인하도록 하겠습니다.

우선 PLOT을 한번 해보도록 하겠습니다. 방법은 이전 포스팅의 IDL에서 파이썬 함수를 불러오는 것과 동일한 방법입니다. 우선 숫자 배열을 만드는 range함수를 이용하도록 하죠.

수상쩍은 메시지와 함께 PLOT이 실패한 것을 알 수 있습니다. 이것은 파이썬의 range 함수의 출력이 LIST 형태의 데이터 형을 가지고 있기 때문인데요. 이것을 확인하기 위해 IDL 의 HELP를 이용해보겠습니다.

IDL의 HELP를 이용해 파이썬 range 함수 결과를 확인하니, IDL에서는 LIST의 데이터 형태로 입력이 되네요. 그렇다면, 파이썬에서의 배열자료는 IDL에서 사용하지 못할까요?

사실 IDL의 ARRAY에 해당하는 배열은 따로 있습니다. numpy 라이브러리에 존재하는 array입니다. 다시 한 번 작업을 진행해봅시다.

numpy 라이브러리의 array 함수를 통해서 우리가 실제로 사용하는 ARRAY가 생성된 것을 알 수 있습니다. 그러면 이 ARRAY를 이용해서 다시한번 PLOT을 그려보겠습니다.

Screenshot 2016-01-21 14.46.41

numpy로 생성된 array를 이용한 plot함수는 잘 그려지는 것을 확인 할 수 있습니다. 여기서 제가 설명하지 않았던 내용이 있는데요. 바로 파이썬에서 IDL을 사용할 때 IDL ARRAY들은 파이썬의 numpy 라이브러리의 array와 연결이 된다는 점입니다.

사실 이 부분이 당연할 수 밖에 없는 것은 PYTHON에서 제공하는 기본적인 LIST는 LIST의 구성요소로 다양한 형태의 변수를 넣을 수 있습니다. 이러한 특징 때문에 IDL에서 동일한 특징을 가지는 구조인 LIST 구조로 변환되어 출력되었죠. 또한 파이썬의 기본적인 데이터 구조에는 ARRAY에 해당하는 데이터 구조가 없기 때문에 이 부분을 채워줄 수 있는 파이썬 라이브러리인 numpy를 이용하여 Bridge를 연동한 것으로 보입니다.

위에서 이미 idl의 plot함수를 그대로 썼기 때문에, 이번에는 run함수를 이용해 작업을 해보겠습니다. 동일한 plot인데, 이번에는 아래와 같이 작업해보세요.

이번에도 위의 이미지와 동일하게 나오게 될 것입니다.

사실 파이썬에서 IDL을 사용하는 것은 처음에 IDL모듈과 numpy 라이브러리를 적재해서 시작하는 것을 빼면 IDL에서 파이썬을 사용하는 것과 별 차이가 없는 것을 알 수 있습니다. 이 부분이 IDL 8.X 버전의 언어적 변화의 지향으로 보이네요.

다음에 살펴볼 내용은 사용자가 직접 작업한 내용을 Bridge를 통해서 연동하는 실전적인 내용을 보려고 합니다. 에스이랩 사내에서는 이미 몇몇 분들이 실제로 작업을 하셨고 매우 만족하셨는데요. 과연 Bridge가 실제로 얼마나 유용하게 쓰이는지 기대해주세요.

그럼 다음 포스팅에서 뵙겠습니다.