2013-05-23 2 views
0

나는 섹스 트랙터를 파이썬에서 실행하는 코드 조각을 작성했으나 하나의 파일에 대해서만 이것을 수행하는 방법을 알고 있으며 62 개 이상의 파일을 반복해야합니다. 나는 이것을 어떻게 할 것인지 확실하지 않다. 나는 울부 짖는 소리 내 코드를 첨부 : 그래서이 코드는, 섹스 /home/fitsfiles/01.fits의 내 주요 터미널에서 명령을 생산 하나 이상의 이미지 파일과 함께 섹슈 트렉터를 사용하는

# build a catalog using sextractor on des image here

sys.path.append('/home/fitsfiles')  #not sure if this does anything/is correct 

def sex(image, output, sexdir='/home/sextractor-2.5.0', check_img=None,config=None, l=None) : 
    '''Construct a sextractor command and run it.''' 
    #creates a sextractor line e.g sex img.fits -catalog_name -checkimage_name 
    q="/home/fitsfiles/"+ "01" +".fits" 
    com = [ "sex ", q, " -CATALOG_NAME " + output] 
    s0='' 
    com = s0.join(com) 
    res = os.system(com) 
    return res 

img_name=sys.argv[0] 
output=img_name[0:1]+'_star_catalog.fits' 
t=sex(img_name,output) 

print '----done !---' 

#!/usr/bin/env python 
는 -CATALOG_NAME는

을 g_star_catalog.fits

내가 원하는대로 성공적으로 별표를 만듭니다.

그러나 62 개의 파일에 대해이 코드를 사용하고 어떤 fitsfile이 사용되는지에 따라 star_catalog.fits의 이름을 변경하고 싶습니다. 어떤 도움을 주시면 감사하겠습니다.

+1

, 당신은 무엇을 개발하고있다? – enginefree

+0

메신저 여러 이미지 파일을 가지고 Sextractor를 실행할 파이썬 코드를 만들려고합니다. 그래서 망원경에 관한 데이터를 해석하는 다른 코드에서 사용할 수있는 다양한 별 카탈로그를 가질 수 있습니다. 불행히도 나는 너무 많은 이미지 파일을 가지고 있는데, 나는 그것을 실행할 때마다 수동으로 코드를 바꾼다. 나는 코드를 파일로 가져 오는 것에 익숙하지 않다. – astrochris

답변

1

여기에 접근 할 수있는 방법은 많이 있습니다. 이 같은 것을 시도 할 수의 당신이 그런

python extract_stars.py /home/fitsfiles/*.fits 

처럼 무언가로 스크립트를 실행하려면 가정 해 봅시다 :

for arg in len(sys.argv): 
    filename = arg.split('/')[-1].strip('.fits') 
    t = sex(arg, filename +'_star_catalog.fits') 
    # Whatever else 

이것은 당신이 입력 파일 이름을 다시 포맷 sex에 줄을 제거한다고 가정합니다. 또한 경로에 fits 디렉토리를 추가하지 않아도됩니다.

다른 접근법은 파이썬에서 다른 작업을 계획하지 않는다면 정말 간단하게 작업을 수행 할 수있는 bash 스크립트를 작성할 수 있다는 것입니다.

그리고이 질문을 좀 더 일반적으로 (예 : 입력 파일에 작성한 함수를 적용하고 싶습니다.) 자주 사용하지 않는 응용 프로그램에 대한 참조없이 질문한다면 가능성이 훨씬 더 신속하게 답변을 받았습니다.

+0

고맙습니다. 위의 도움을 받으려면 코드를 변경해야합니다. 온라인으로 문제를 게시하는 것이 처음이므로 조언을 주셔서 감사 드리며 다음 번에 좀 더 일반적으로 알려 드리겠습니다. :) – astrochris

0

커뮤니티에서 섹토 트렉터를 파이썬 명령처럼 실행할 수있는 파이썬 랩퍼가 개발되었습니다. 이들은 : pysex, sewpy 및 astromatic_wrapper입니다.

섹슈 트렉터 래퍼에 대한 좋은 점은 추가 기능을 정의하거나 os 명령을 호출하거나 구성 파일과 출력 파일을 시스템에 설치하지 않고 훨씬 깨끗한 코드를 작성할 수 있다는 것입니다. 또한, 출력은 astropy 테이블, pandas 데이터 프레임 또는 numpy 배열이 될 수 있습니다. 특정 사례를 들어

, 당신은 pysex을 사용할 수 있고 수행합니다 총입니다

import pysex 
import glob 

filelist = glob.glob('/directory/*.fits') 

for fitsfile in filelist: 
    cat = pysex.run(fitsfile, params=['X_IMAGE', 'Y_IMAGE', 'FLUX_APER'], 
    conf_args={'PHOT_APERTURES':5}) 
    print cat['FLUX_APER'] 
관련 문제