우리가 IDL에서 작업을 하는데 있어서는 IDL에 기본적으로 내장되어 있는 루틴들(PRINT, PLOT 등)을 사용하게 됩니다. 대개의 경우는 기본 루틴들만으로도 충분하지만 작업의 분야나 특성에 따라서는 기본 루틴들 외에 별도의 외부 루틴들을 사용해야 하는 경우들이 간혹 발생합니다. 대표적인 예들 중 하나가 FITS 포맷의 파일을 읽어야 할 경우인데요. 이 FITS 포맷은 물론 모든 분야에서 널리 사용되지는 않지만 천문학과 같은 특정 분야에서는 많이 사용되는 포맷이기도 합니다. 하여간 이 FITS 포맷의 파일을 읽는 작업을 IDL에서 하려면 기본 루틴들만 갖고는 안되고 별도의 외부 루틴들을 받아서 따로 설치한 다음 경로 설정이라는 것을 해줘야 합니다. 즉 다른 누군가가 이러한 목적을 위하여 작성해놓은 IDL 프로그램 파일들(.pro 파일들)을 받아와서 설치하는 과정이 필요합니다. 대개의 경우 이런 목적으로 받아와야 하는 파일이 하나만 있기 보다는 여러 파일들의 묶음으로 존재하는 경우가 많습니다. 이러한 묶음을 흔히 라이브러리(Library)라고 부릅니다.
IDL 분야에서 유명한 외부 라이브러리들을 꼽는다면, NASA의 GSFC라는 기관에서 배포하는 IDL Astro 라이브러리, IDL 분야의 권위자인 David Fanning이 배포하는 Coyote Library, IDL에서 수치계산 작업시 데이터 포인트 근사(Fitting)에 많이 이용되는 MPFit 라이브러리 등이 있습니다. 오늘은 이 중 IDL Astro 라이브러리를 받아서 설치하는 과정을 설명하고자 합니다. 이 라이브러리는 이름 자체만 보면 천문학에서만 사용될만한 것처럼 보이지만, 이 안에 있는 많은 루틴들 중에는 일반 IDL 유저들에게도 유용한 루틴들도 꽤 있습니다. 컬럼 기반의 데이터 구조를 갖는 텍스트 파일을 읽을 때 편리하게 사용할 수 있는, 아마 아시는 분들은 이미 많이들 사용하고 계실 READCOL이라는 루틴도 이 안에 포함되어 있습니다. 따라서 천문학 분야 뿐 아니라 일반 IDL 유저들에게도 사용을 권장할만한 외부 라이브러리이기도 합니다. 이 라이브러리를 받을 수 있는 링크는 여기입니다. 이 웹페이지를 가보면 중간에 download site라는 링크가 보이는데, 이걸 누르면 파일 목록이 뜹니다. 여기서 astron.zip 또는 astron.tar.gz 파일을 받아서 압축을 풀면 됩니다. 어차피 폴더 째 묶여 있는 파일이기 때문에, 압축을 풀면 astron이라는 이름의 폴더가 나오고 그 안을 보면 하위 폴더들이 더 보일 겁니다. 어쨌든 이 astron 폴더 자체를 어딘가에 갖다 놓으면 되겠지요.
그 다음에는 이 폴더에 대하여 IDL에서 경로 설정이란 것을 해줘야 합니다. 이것은 IDL이 뜰 때 이 astron 폴더 안에 있는 루틴들(.pro 파일들)을 알아서 컴파일을 해두고 항상 사용 가능하도록 준비하게끔 하기 위한 작업입니다. 만약 IDL을 설치한 후 IDL Astro 라이브러리의 설치 및 경로 설정 등이 완료되지 않은 상태라면, 다음과 같이 콘솔창에서 READCOL 명령을 실행해봐도 에러만 날 뿐 입니다. 그 이유는 READCOL은 IDL에 기본 내장된 루틴이 아니며 이 루틴이 포함된 라이브러리의 설치 및 경로 설정 등이 안되어 있기 때문입니다. 따라서 앞에서 하던 작업을 마저 진행을 해야 합니다.
앞에서 하던 작업은 라이브러리의 다운로드 및 설치였습니다. 그런데 이것만으로는 안되고 경로(Path) 설정이라는 작업을 반드시 해줘야 합니다. 경로 설정을 위해서는 IDL의 환경설정으로 들어가야 하는데요. 환경설정 창을 띄우려면 윈도우즈용 IDL에서는 상단의 메뉴바에서 창->환경설정 버튼을 눌러야 합니다. Mac OS용 IDL의 경우에는 위치가 약간 다른데 상단 메뉴바에서 IDL->Preferences 버튼을 누르면 됩니다. 이어지는 설명 및 관련 스크린샷들은 윈도우즈용 IDL에 해당되지만 다른 OS용 IDL에서도 요령은 동일합니다.
환경설정 창의 모습은 다음 그림과 같습니다. 이 창에서 왼쪽 부분의 항목들 중 IDL->경로를 선택해야 오른쪽 부분과 같은 경로설정 화면이 보이게 된다는 점을 유의해야 합니다. IDL 설치 후 외부 라이브러리의 설치가 전혀 되어있지 않은 경우라면 이 화면처럼 IDL_DEFAULT라는 항목만 보일 것입니다. 참고로 이 항목은 IDL이 이미 자체적으로 내장하고 있는 기본 라이브러리를 뜻하는데, 좀 더 구체적으로 말하면 IDL의 설치 폴더 구조에서 lib라는 폴더안에 존재하는 루틴 파일들을 의미한다고 보면 됩니다. 물론 이 IDL_DEFAULT라는 항목은 절대 지워지지 않습니다. 그래야만 하겠지요.
이제 좀전에 받았던 astron 폴더를 이 경로 항목에 추가해야 하는데, 이를 위하여 추가 버튼을 눌러야 합니다. 이 버튼을 누르면 다음과 같이 폴더를 선택할 수 있는 창이 뜹니다. 이미 받아놓은 astron 폴더를 찾아서 선택한 다음 확인 버튼을 누르면 됩니다. 아래 그림은 제 컴퓨터에서 이 작업을 진행하는 모습입니다.
이 작업이 끝난다면 경로설정 화면에 변화가 생기게 됩니다. 아마 다음과 같이 IDL_DEFAULT외에 astron 폴더가 추가된 모습을 볼 수 있을 것입니다.
단 여기서 하나 더 유의할 점은, 이 aston 항목의 왼쪽에 보이는 체크박스를 꼭 체크해야 한다는 것입니다. 이 체크를 해야 astron 폴더의 안에 있는 하위 폴더 안에 있는 파일들까지 추적하게 됩니다. 이 체크를 하지 않으면 하위 폴더 추적을 하지 않습니다. 물론 바로 위의 단계에서 경로 항목 추가를 할 때 하위 폴더까지 찾아들어가서 추가하고 이후 체크박스 체크를 안하는 방법도 있긴 합니다. 이 부분은 유저의 선택에 달린 부분이므로 알아서 판단하시면 됩니다. 어쨌든 astron 폴더를 경로에 추가하는 작업이 다 되었다면 적용 및 확인 버튼을 눌러서 환경설정 창을 닫으면 됩니다. 이제 다시 IDL로 돌아와서 콘솔창에서 아까처럼 READCOL 명령을 입력해봅시다. 그러면 아까와는 달리 READCOL 글자 자체의 색상이 초록색이 된다는 것을 확인할 수 있습니다(이 초록색의 의미에 대해서는 제가 바로 이전에 올렸던 게시글의 내용을 참조하시기 바랍니다).
이제 IDL Astro 라이브러리 설치가 되었고 사용 준비도 완료되었습니다. 향후에 IDL을 다시 실행하더라도 이 라이브러리의 각종 루틴들은 별도의 컴파일 없이 바로 사용 가능하게 됩니다. 물론 외부 라이브러리의 경우에는 IDL에 기본 설치된 것이 아니기 때문에 각 루틴에 관한 설명을 IDL 도움말에서 찾을 수는 없습니다. 대개의 경우 이 라이브러리를 제공하는 측에서 관련 문서들을 제공합니다. IDL Astro의 경우도 해당 웹페이지를 보면 참조할만한 문서 파일이나 링크 페이지를 제공하기 때문에, 원활한 활용을 위해서는 이러한 내용들을 별도로 들여다 봐야 합니다. 물론 READCOL의 경우는 간단한 테스트가 가능합니다. 예를 들어 다음과 같이 세 개의 컬럼들로 구성된 scores.txt라는 파일을 READCOL을 사용하여 읽어야 할 경우, 다음과 같이 해볼 수 있습니다.
이렇게 하면 세 컬럼에 대한 값들을 배열로 읽은 num, name, value를 얻게 되며 각각은 10개의 값들로 구성된 정수, 문자, 정수 배열이 됩니다. READCOL에 대한 더 자세한 사용법은 여기서는 다루지 않겠습니다. 소스코드의 내용 또는 관련 문서의 내용을 참조하시면 됩니다. 그리고 IDL Astro 라이브러리의 설치 목적 중 또 하나가 FITS 포맷의 파일을 읽는 것이었는데요. 이를 위해서는 라이브러리 내에 있는 READFITS라는 것을 사용하면 됩니다. 샘플 FITS 파일 하나만 읽어본다면 그 요령은 다음과 같습니다.
이와 같이 READFITS는 함수형으로 사용됩니다. 여기서 사용된 FITS 파일의 경우 2048X2048 크기의 배열을 담고 있기 때문에, 좌변의 img라는 배열은 이와 같은 구조를 갖게 됩니다. 그리고 header라는 변수는 값을 담아오는 역할을 하는데, 이와 같이 이 위치에 변수를 하나 주게 되면 이 변수를 통하여 이 FITS 파일의 헤더 정보들이 문자 배열의 형태로 전달됩니다. READFITS 및 기타 FITS 관련 루틴들에 대한 더 자세한 내용은 역시 관련 문서 및 코드상의 설명들을 참조하시기 바랍니다.
그리고 이와 같은 외부 라이브러리 파일들을 설치하는데 있어서 유의를 해야 할 점을 하나 더 언급하고 마치고자 합니다. 제가 설명드린 방법은 외부 라이브러리를 컴퓨터상에서 독립된 폴더로 받아놓고 이에 대한 경로 설정을 해주는 방식이었습니다. 그런데 이러한 라이브러리 내에 있는 루틴 파일들(.pro)을 IDL의 lib 폴더 안에 직접 카피해넣는 방법도 있긴 합니다. 이 lib 폴더가 경로 설정 화면상에 보였던 IDL_DEFAULT에 해당되기 때문에, 이와 같은 방법을 사용하면 환경설정에서 경로 추가를 안해도 된다는 특성은 있습니다. 그래서 이런 특성을 편리함으로 생각하고 이 방법을 사용하는 유저들도 꽤 많은 것으로 알고 있습니다. 그런데 이 방법은 저는 개인적으로는 권장하고 싶지 않습니다. 여러 종류의 외부 라이브러리를 사용하게 될 때 그 파일들을 매번 이 lib 폴더안에 넣게 되면, 나중에는 이 lib 폴더안에서 어떤 것이 기본 루틴이었고 어떤 것이 추가된 루틴인지 구분하는 것이 매우 어려워집니다. 물론 나 혼자만의 작업만 하게 될 경우라면 모르겠습니다. 하지만 예를 들어 내가 만든 프로그램을 다른 사람에게 줬는데 이 프로그램이 외부 라이브러리의 어떤 루틴을 부프로그램으로 사용하는 경우 그 파일도 함께 줘야 할 수도 있습니다. 그런데 이러한 파일이 한두개도 아니고 여러 개가 된다면 찾기도 어려워지고, 그 외에 여러가지 면에서 타인과의 원활한 협업이 어려울 수도 있습니다. 어쨌든 이 부분에 대한 최종적인 판단은 유저 자신에게 달려 있으므로 각자의 상황에 맞게 운용하면 되겠습니다.
* 이 게시물에서 사용한 샘플 txt 및 fits 파일은 아래 첨부합니다.
'IDL > General' 카테고리의 다른 글
IDL on Mac OS X Sierra (0) | 2016.10.14 |
---|---|
IDL 관련 주요 웹 링크 정리 (2016년 7월 기준) (0) | 2016.07.19 |
64비트 IDL에서 32비트 IDL의 기능을 사용하는 방법 (0) | 2016.06.16 |
Windows 10용 IDL에서 그림 저장 문제 (0) | 2016.04.18 |
IDL on Mac OS X 10.11 (El Capitan) (0) | 2015.11.27 |