2009.11/17
SExtractorで天体検出
     ↓
xyxymatchでマッチング
     ↓
geomapで変換規則の算出
     ↓
geotranで画像変換。位置合わせ

の一連の位置合わせの作業を今リストdis1027odd,evenの中にある80枚ずつの画像に対して一気に行ってしまう。
xyxymatch,geomap,geotranは@リストで80枚一気にできるが、SExtractorはcshスクリプトというスクリプト用いて80枚繰り返しかけるプログラムをつくる。

・cshスクリプト・・・コマンド端末上で動かすプログラムスクリプト。大体c-like


☆複数枚に対する位置合わせ

◎SExtractorを繰り返しかける
・cshスクリプトをつくる
右のようなdis1027odd+dis1027evenにあわせたcshスクリプトを組む→1117sext.csh
(1行目以外の#で始まる行はコメント行)

1117sext.cshを実行させれば、dis1027odd,even内の計160枚分の天体検出リスト38???.catと位置合わせに使う用に厳選されたselect38???.catができるはず。

・cshスクリプトを実行する
まずcshに入り
$ csh
ユーザーに実行権限を持たせる
$ chmod u+x 1117sext.csh
実行
$ ./1117sext.csh
これで出来たselect38???.catには順に「番号,x座標,y座標,Auto flux(明るさ)」が記載されてる。

select38???.catを偶奇に分けてリスト化
$ ls select38??[1,3,5,7,9].cat > select1117odd
$ ls select38??[0,2,4,6,8].cat > select1117even

◎xyxymatchを繰り返しかける
xyxymatchの出力ファイルを先に用意しとく。中身はmatch38???.catという名前にしとく。
$ awk '{print "match"substr($1,7,20)}' select1117odd > match1117odd
$ awk '{print "match"substr($1,7,20)}' select1117even > match1117even
xyxymatchのreferenceもリストじゃないといけないので、select38537.catが81枚入ったリストをつくる
$ awk '{print substr($1,0,8)"537.cat"}' select1117odd > ref1117odd
偶数リスト分のリファレンスリストもつくっとく(select38544.catが81枚)
$ awk '{print substr($1,0,8)"542.cat"}' select1117even > ref1117even

cl> epar xyxy
                   I R A F
           Image Reduction and Analysis Facility
PACKAGE = immatch
  TASK = xyxymatch
input  =    @select1117odd The input lists
referenc=    @ref1117odd The reference lists
output =    @match1117odd The output matched coordinate lists
toleranc=           3. The matching tolerance in pixels
(refpoin=            ) Optional list of reference points
(xin  =          INDEF) X origin of input list
(yin  =          INDEF) Y origin of input list
(xmag  =         INDEF) X magnification required to match input to refer
(ymag  =         INDEF) Y magnification required to match input to refer
(xrotati=         INDEF) X rotation required to match input to reference
(yrotati=         INDEF) Y rotation required to match input to reference
(xref  =         INDEF) X origin of reference list
(yref  =         INDEF) Y origin of reference list
(xcolumn=            2) Input list column containing the x coordinate
(ycolumn=            3) Input list column containing the y coordinate
(xrcolum=            2) Reference list column containing the x coordinat
(yrcolum=            3) Reference list column containing the y coordinat
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・(略)・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
(:go)

同様に偶数リスト分もxyxymatch
cl> epar xyxy
                   I R A F
           Image Reduction and Analysis Facility
PACKAGE = immatch
  TASK = xyxymatch
input  =    @select1117even The input lists
referenc=    @ref1117even The reference lists
output =    @match1117even The output matched coordinate lists
toleranc=           3. The matching tolerance in pixels
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・(略)・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
(:go)

とにかくこのタスクはコケやすく、ここにのせたのも5回失敗した末に成功した一例に過ぎない。失敗しても、1117sext.cshやxyxymatchのパラメータをいじって何度も繰り返すこと。

◎対応表@match1117odd,@match1117evenのリファレンスフォーマットを広げる
この先geomap,geotranといきたいが、このまま進むと出来上がりの位置合わせした80枚が全部リファレンスファイルと重なる部分のみのフォーマットになってしまう。それはもったいないので重ならない余白の部分までフォーマットを広げたい。現在2048*2048のフォーマットを2848*2848くらいにまですれば安心。
とりあえず右のようなcshスクリプト作って今あるmatch38???.catのリファレンスのフォーマットを広げる→xygeoaida.csh
説明しづらいがこれでリファレンスファイルについて余計なフォーマット作ってるのと等価になってるので各々よく考えてもらいたい。

これを実行させれば
$ chmod u+x xygeoaida.csh
$ ./xygeoaida.csh
フォーマット広くなったformatch38???.catというのが162枚出来てるはず
$ ls formatch38*
formatch38397.cat formatch38438.cat formatch38515.cat formatch38556.cat
formatch38398.cat formatch38439.cat formatch38516.cat formatch38557.cat
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

これを新しくリスト化
$ ls formatch38??[1,3,5,7,9].cat > formatch1117odd
$ ls formatch38??[0,2,4,6,8].cat > formatch1117even

@formatch1117〜にgeomapかける
cl> epar geomap
                   I R A F
           Image Reduction and Analysis Facility
PACKAGE = immatch
  TASK = geomap
input  =   @formatch1117odd The input coordinate files
database=   database1117odd.cat The output database file //対応表formatch1117odd.catから作る変換規則のDatabaseを指定//
xmin  =           1. Minimum x reference coordinate value
xmax  =          2848. Maximum x reference coordinate value //今リファレンスのフォーマットは2848*2848になってる//
ymin  =           1. Minimum y reference coordinate value
ymax  =          2048. Maximum y reference coordinate value
(transfo=            ) The output transform records names
(results=            ) The optional results summary files
(fitgeom=        general) Fitting geometry
(functio=      polynomial) Surface type
(xxorder=           2) Order of x fit in x //一次変換したい場合は2にしとく??//
(xyorder=           2) Order of x fit in y //同じく一次変換なので2??//
(xxterms=          half) X fit cross terms type
(yxorder=            2) Order of y fit in x
(yyorder=            2) Order of y fit in y
(yxterms=          half) Y fit cross terms type
(maxiter=           50) Maximum number of rejection iterations
(reject =           3.) Rejection limit in sigma units
(calctyp=          real) Computation type
(verbose=           yes) Print messages about progress of task ?
(interac=           no) Fit transformation interactively ?
(graphic=        stdgraph) Default graphics device
(cursor =            ) Graphics cursor
(mode  =          ql)
(:go)
これで奇数ファイル81枚分の変換規則の入ったデータベースdatabase1117odd.catができたはず

同様に偶数リストにもxyxymatchかける
cl> epar geomap
                   I R A F
           Image Reduction and Analysis Facility
PACKAGE = immatch
  TASK = geomap
input  =   @formatch1117even The input coordinate files
database=   database1117even.cat The output database file //対応表formatch1117odd.catから作る変換規則のDatabaseを指定//
xmin  =           1. Minimum x reference coordinate value
xmax  =          2848. Maximum x reference coordinate value //今リファレンスのフォーマットは2848*2848になってる//
ymin  =           1. Minimum y reference coordinate value
ymax  =          2048. Maximum y reference coordinate value
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
(:go)

◎database1117odd,evenを元にgeotran
いよいよdis1027odd,even内の81枚ずつにたいして幾何変換をかけ一枚のreferenceファイル(oddはdisMCSA38537.fits、evenはdisMCSA38542.fits)に位置合わせしてやる。
まずはgeotran後の出来上がりリストを用意しとく。中身はdisshift38???.fits
$ awk '{print "disshift"substr($1,8,20)}' dis1027odd > disshift1117odd
$ awk '{print "disshift"substr($1,8,20)}' dis1027even > disshift1117even

cl> epar geotran
                 I R A F
         Image Reduction and Analysis Facility
PACKAGE = immatch
  TASK = geotran
input  =  @dis1027odd Input data
output =@disshift1117odd Output data
database= database1117odd.cat Name of GEOMAP database file           //多数の変換の入ったファイル//
transfor=  @formatch1117odd Names of coordinate transforms in database file //databaseの中にある各変換//
(geometr=       geometric) Transformation type (linear,geometric)
(xin  =          INDEF) X origin of input frame in pixels
(yin  =          INDEF) Y origin of input frame in pixels
(xshift =         INDEF) X origin shift in pixels
(yshift =         INDEF) Y origin shift in pixels
(xout  =         INDEF) X origin of output frame in reference units
(yout  =         INDEF) Y origin of output frame in reference units
(xmag  =         INDEF) X scale of input picture in pixels per reference
(ymag  =         INDEF) Y scale of input picture in pixels per reference
(xrotati=         INDEF) X axis rotation in degrees
(yrotati=         INDEF) Y axis rotation in degrees
(xmin  =         INDEF) Minimum reference x value of output picture
(xmax  =         INDEF) Maximum reference x value of output picture
(ymin  =         INDEF) Minimum reference y value of output picture
(ymax  =         INDEF) Maximum reference y value of output picture
(xscale =           1.) X scale of output picture in reference units per
(yscale =           1.) Y scale of output picture in reference units per
(ncols =          2848) Number of columns in the output picture     //今2848*2848にする//
(nlines =          2848) Number of lines in the output picture      
(xsample=           1.) Coordinate surface sampling interval in x
(ysample=           1.) Coordinate surface sampling interval in y
(interpo=         linear) Interpolant
(boundar=        constant) Boundary extension (nearest,constant,reflect,wra //余白となる所に何を入れるか//
(constan=        -1000000.) Constant boundary extension              //今はへりをはっきりさせるためにcountを-1000000にしてしまう//
(fluxcon=           yes) Preserve image flux?
(nxblock=           512) X dimension of working block size in pixels
(nyblock=           512) Y dimension of working block size in pixels
(verbose=           yes) Print messages about the progress of the task
(mode  =           ql)
(:go)

これでdisshift38???.fitsは何を見ても全部位置合わせがされてるはず!→確認
cl> display disshift38409.fits 1 zr- zs- z1=0 z2=200
cl> display disshift38411.fits 2 zr- zs- z1=0 z2=200
cl> display disshift38413.fits 3 zr- zs- z1=0 z2=200
cl> display disshift38415.fits 4 zr- zs- z1=0 z2=200

Tab連打で天体かぶってるのが確認できる!

同様に偶数もgeotran
cl> epar geotran
                 I R A F
         Image Reduction and Analysis Facility
PACKAGE = immatch
  TASK = geotran
input  =  @dis1027even Input data
output =@disshift1117even Output data
database= database1117even.cat Name of GEOMAP database file           //多数の変換の入ったファイル//
transfor=  @formatch1117even Names of coordinate transforms in database file //databaseの中にある各変換//
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
(:go)

こちらも適当な画像を選んでdisplayさせて重なってることを確認する。


これで80枚分位置合わせが出来たリストdisshift1117oddやdisshift1117evenが出来上がった!


目次に戻る