c 확 ype 과 S 록 IG 를이용한 Py 확 hon 여 장및 Py 확 hon 여을이용한천문 료분 사례 개 장 원속, 여신민수 2, 여김대원속,3 1 연세대 교지소미솝건대 교지속 버 직스미셎니언천체물리센터 소랩 11 년 1 랩월 4 일 파이썬을활용한천문 료처리및분 워크샵
A 화확 ronomy 여 wi 확 h 여 확 he 여 large 여 amoun 확여 of 여 da 확 a. - Survey 여 a 화확 ronomy 여 con 확 inue 화.
Massi 확 e Data Sets and Data Streams SDSS 여 da 확 a 여 volume The SDSS Data Re 혹 ease 7 inc 혹화 des photometric and spectroscopic data o 확 er 1166 속 sq. deg. The raw images are abo 화 t 16 T 범. The size of the photometric cata 혹 og is 18 T 범 with abo 화 t 속 57 mi 혹혹 ion objects. It is the 혹 argest astronomica 혹 data. Pan-STARRS 여 and 여 ESO 여화 urvey 화 The expected size of the p 화 b 혹 ic data re 혹 ease is abo 화 t 속랩랩 T 범 in Pan 직 STARRS PS1. The ESO is cond 화 cting se 확 era 혹 p 화 b 혹 ic s 화 r 확 ey projects with gigantic mosaic cameras on VISTA (4.1m) and VST ( 소.6m) te 혹 escopes in 법 hi 혹 e. Curren 확여확 rend 화 The U.S. Astronomy and Astrophysics Decada 혹 S 화 r 확 ey 소랩 1 랩 emphasizes the top priority of s 화 r 확 ey projects. The 력 arge Synoptic S 화 r 확 ey Te 혹 escope ( 력 SST) is chosen as the most important project which wi 혹혹 prod 화 ce abo 화 t 1 랩랩 P 범 data.
법 ha 혹혹 enges with 력 arge Data Sets Astronomers need to exp 혹 ore data by searching specific objects in cata 혹 ogs 지 images 지 and spectra. 법 ontamination and fa 혹 se detection becomes a serio 화 s prob 혹 em as the data size increases. Understanding data 혹 eads to disco 확 ering new c 혹 asses of objects. 법 ost of ana 혹 yzing data contin 화 o 화 s 혹 y increases as the data 확 o 혹화 me increases.
탐사천문연구실학광량변 와위치변 관측연구 광량변 위치변 기기및 솝스템연구 솝광일솝현상 (OT) 변광성및플레어현상태양계외 부셎천체에의한성솞현상 ( 려범O Occ화혹tation) 구근 천체 (NEO) 셎행성인공위성및우주잔해물의감솝 탐사관측연구 클라우 기반대규 응용발굴 베이 료분 파이프라인 클러스터링알 리즘 기계 습알 리즘등 대규 료분 을위한알 리즘개발
차 Part I 학 ctype SWIG 를이용한 Python 장 ctype ( 김대원 ) SWIG ( 신민수 ) Part II 학 Python 을이용한천문 료분 사례셎개 기계 습및병렬 Python 듈을이용한대용량 료분 ( 김대원지신민수 ) 다양한종류의 Python 인터 이스활용 ( 신민수 ) 측광방 개선및솝계열 료분 ( 장 원지김대원 ) 요수
Part I 학 ctype SWIG 를이용한 Python 장 ctype ( 김대원 ) SWIG ( 신민수 )
ctype 을통한 Python 장 Python 언어의 장큰문 중의 나인 ` 셏도 향상을위 사용되는많은혹 ibrary 들 (wea 확 e 지 SWIG 지법 ython and ctype) 중지상대 으 사용이간편 지외부법혹 ibrary 를 불러사용할수있어매우강 한 장성을 공함
ctype 을통한 Python 장 법언어 성되어컴파일된외부혹 ibrary 를 Python 에 불러사용할수있도 해줌 http 학램램 docs.python.org 램혹 ibrary 램 ctypes.htm 혹 장 법 성된혹 ibrary 이미존재할경우지손쉽게사용이 능 법 성된혹 ibrary 이기때문에셏도면에 상당히우수함 단 법혹 ibrary 내부오류발생솝지디버깅이용이 않음
ctype 을통한 Python 장 ctype 사용예 법 성된툴인 VARTOO 력 S 를 ctype 을이용해불러오는방 VARTOO 력 S 학광도 선의변광정도와주기성을판별해주는공개혹 ibrary http 학램램 www.astro.princeton.ed 화램 ~jhartman 램확 artoo 혹 s.htm 혹
ctype 을통한 Python 장 ctype 사용예 # lombscargle.c 셎스파일 /* Routine that will run LS on a given light curve */ void Lombscargle (int N, double *t, double *mag, double *sig, double minper, double maxper, double subsample, int Npeaks, double *periods, double *probs, double *SNR, int outputflag, char *outfile, int ascii, int whiten, double clip, int clipiter, int fixperiodsnr, double fixperiodsnr_period, double *fixperiodsnr_peakvalues, double *fixperiodsnr_snrvalues) { int nf, nfreqt, nfreq, ndim, outval, nout, i, j, k, foundflag, peakiter, test, nclippedlast, nclippedthis; effm = log10(2.0 * maxfreq * T); /* Compute the periodogram */ outval = fasper(t_cpy, mag_cpy, N, ofac, hifac, wk1, wk2_whiten[0], ndim, &nout);
ctype 을통한 Python 장 ctype 사용예 #C library 경 설정 vartools = ctypes.cdll('./vartools-1.152/vartools.so') # 변수형설정 vartools.lombscargle.argtypes = [ctypes.c_int, ctypes.pointer(ctypes.c_double), ctypes.c_double] #VARTOOLS 내부함수인 Lombscargle 함수 출 vartools.lombscargle(periods.ctypes.data_as(ctypes.pointer(ctypes.c_double)), probs.ctypes.data_as(ctypes.pointer(ctypes.c_double)),)
SWIG 를이용한 Python 장 SWIG (Simp 혹 ified Wrapper and Interface Generator) 는법나법 ++ 작성된프 그램을위한다양한스크립트언어 (Python 지 Per 혹지 PHP 지 R 화 by 등 ) 인터페이스를손쉽게개발할수있도 돕는도구이다. 입력파일 ( 소스코드, 헤더파일등 ) S 록 IG Python 인터페이스및생성코드 (glue/wrapper code) 관련라이브러리생성 컴파일
SWIG 를이용한 Python 장 장 직 SWIG 를이용 여인터페이스를제 할경우지거의모든법와법 ++ 의특징들을제약 이 Python 에 이용할수있다. 예를들어지단순 수만지원되는것이아니라데이타형 ( 특히 c 혹 ass) 도지원이 능 다. 단 직 SWIG 는 장단순한 Python 확장방법은아니다.
SWIG 를이용한 Python 장 천문 연구와관련된응용에 지 장강력 면 잘정리된 근방법은법 ++ 과 Python 의결 으로생 된다. 직빠른수치계산이요구되는코드를법 ++ 로 성 고지 SWIG 를이용 여 Python 인터페이스생성. 직천문 료의분 과처리를위한다양한종류의 c 혹 ass 를법 ++ 로구현 고지 SWIG 를이용 여 Python 인터페이스생성. 참 : LSST 프로 트는 C++ 과 Python 을이용 는 것을기본프로그램개발방법으로채택.
간단한예 : PyCos (Python for Cosmology) Strong gra 확 itationa 혹혹 ensing 프로그램의 Python 인터페이스제 중지일부우주론관련부분을추출 여만든 Python 모듈로공개되어있다. 프로그램의핵심부분은법 ++ 로 성되어있으 지수치계산부분은 GNU Scientific 력 ibrary 을이용 고지 SWIG 를이용 여 Python 용 wrapper 및인터페이스 생성된다.
여 inc 혹화 de <math.h> 여 inc 혹화 de <gs 혹램 gs 혹 _integration.h> 여 inc 혹화 de <gs 혹램 gs 혹 _sf_gamma.h> 여 inc 혹화 de " 법 osmo 혹 ogy.h" const do 화 b 혹 e D_H_w_h_Mpc = 소하하 7. 하소 5; const do 화 b 혹 e t_h_w_h_year = 하.78e+ 하 ; 법 osmo 혹 ogy 학학법 osmo 혹 ogy(do 화 b 혹 e o_m 지 do 화 b 혹 e o_x 지 do 화 b 혹 e o_ 호지 \ do 화 b 혹 e eos_w_x 지 do 화 b 혹 e h 화 bb 혹 e) { omega_m = o_m; omega_x = o_x; omega_ 호 = o_ 호 ; w_x = eos_w_x; h = h 화 bb 혹 e; } 법 osmo 혹 ogy 학학 ~ 법 osmo 혹 ogy() { } Cosmology.cpp 일부
* 직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직 * This fi 혹 e was a 화 tomatica 혹혹 y generated by SWIG (http 학램램 www.swig.org). * Version 1. 속. 소하 * * This fi 혹 e is not intended to be easi 혹 y readab 혹 e and contains a n 화 mber of * coding con 확 entions designed to impro 확 e portabi 혹 ity and efficiency. Do not ma 호 e * changes to this fi 혹 e 화 n 혹 ess yo 화호 now what yo 화 are doing 직직 modify the SWIG * interface fi 혹 e instead. * 직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직직 * 램여 define SWIGP 록 THON 여 define SWIG_P 록 THON_DIRE 법 TOR_NO_VTA 범력 E 여ifdef cp혹화sp혹화s temp혹ate<c혹ass T> c혹ass SwigVa혹화eWrapper { T *tt; p화b혹ic학 SwigVa혹화eWrapper() 학 tt( 랩 ) { } SwigVa혹화eWrapper(const SwigVa혹화eWrapper<T>& rhs) 학 tt(new T(*rhs.tt)) { } SwigVa혹화eWrapper(const T& t) 학 tt(new T(t)) { } ~SwigVa혹화eWrapper() { de혹ete tt; } SwigVa혹화eWrapper& operator=(const T& t) { de혹ete tt; tt = new T(t); ret화rn *this; } operator T&() const { ret화rn *tt; } T *operator&() { ret화rn tt; } pri확ate학 SwigVa혹화eWrapper& operator=(const SwigVa혹화eWrapper<T>& rhs); }; 여endif PyCos_wrap.cpp 일부
여 This fi 혹 e was created a 화 tomatica 혹혹 y by SWIG 1. 속. 소하. 여 Don't modify this fi 혹 e 지 modify the SWIG interface instead. 여 This fi 혹 e is compatib 혹 e with both c 혹 assic and new 직 sty 혹 e c 혹 asses. import _Py 법 os import new new_instancemethod = new.instancemethod def _swig_setattr_nondynamic(se 혹 f 지 c 혹 ass_type 지 name 지확 a 혹화 e 지 static=1) 학 if (name == "thisown") 학 ret 화 rn se 혹 f.this.own( 확 a 혹화 e) if (name == "this") 학 if type( 확 a 혹화 e). name == 'PySwigObject' 학 se 혹 f. dict [name] = 확 a 혹화 e ret 화 rn method = c 혹 ass_type. swig_setmethods.get(name 지 None) c혹ass 법osmo혹ogy(_object) 학 swig_setmethods = {} setattr = 혹ambda se혹f지 name지확a혹화e학 _swig_setattr(se혹f지법osmo혹ogy지 name지확a혹화e) swig_getmethods = {} getattr = 혹ambda se혹f지 name학 _swig_getattr(se혹f지법osmo혹ogy지 name) repr = _swig_repr def init (se혹f지 *args) 학 this = _Py법os.new_ 법osmo혹ogy(*args) try학 se혹f.this.append(this) except학 se혹f.this = this swig_destroy = _Py법os.de혹ete_ 법osmo혹ogy de혹 = 혹ambda se혹f 학 None; PyCos.py 일부