#!/usr/bin/env tclsh # carcat: xplore support script by tyu, for importing carma catalog data # ported from csh to tclsh set this_process [pid] if {$argv != {}} { foreach i $argv { if {[llength [split $i =]] == 2} { set command [concat set [split $i =]] eval $command } } } proc Load_Data { filename obj args } { set data "" if {[file exists $filename]} { set fileid [open $filename "r"] switch -exact -- $obj \ list { set list "" while {[gets $fileid data] >= 0} { if {![string match #* $data]} { lappend list $data } } } close $fileid if {$obj == "list"} { return $list } } } cd $working_pth set ypix_per_deg $xpix_per_deg set ra_filter {[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9]*} set dec_filter {[+-]?[0-9][0-9]:[0-9][0-9]:[0-9][0-9]\.[0-9]*} set lambda_filter {1cm|1mm|3mm} set carcat_org_list [Load_Data $data list] foreach i $carcat_org_list { if {![regexp {#} $i]} { if {[llength $i] >= 3} { if {([regexp $ra_filter [lindex $i 1]] && [regexp $dec_filter [lindex $i 2]])} { lappend carcat_mod_list $i } else { set fileid [open carcat_coords_err "w"] close $fileid exit 1 } } } } if {![info exists carcat_mod_list]} { set fileid [open carcat_nodata_err "w"] close $fileid exit 1 } else { set indx 0 set imax [llength $carcat_mod_list] incr imax -1 while {$indx <= $imax} { set x [lindex $carcat_mod_list $indx] if {[llength $x] > 3} { if {[regexp $lambda_filter [lindex $x 3]]} { if {[lindex $x 3] == $lambda} { lappend carcat_out_list $x } } else { lappend carcat_out_list $x } } else { lappend carcat_out_list $x } incr indx 1 } } set fileid [open carcat_goto_catlog.txt "w"] if {[info exists carcat_out_list]} { set carcat_mod_list [lsort -unique $carcat_out_list] set carcat_out_list $carcat_mod_list set carcat_count [llength $carcat_out_list] } else { close $fileid exit 0 } foreach i $carcat_out_list { lappend carcat_nam_list [lindex $i 0] set j [split [lindex $i 1] :] lappend carcat_ra_list \ [expr {15*([scan [lindex $j 0] %d]+ \ ([scan [lindex $j 1] %d]+[scan [lindex $j 2] %f]/60)/60)}] } foreach i $carcat_out_list { set j [split [lindex $i 2] :] if {[scan [lindex $j 0] %d] < 0} { lappend carcat_dec_list \ [expr {-(-[scan [lindex $j 0] %d]+ \ ([scan [lindex $j 1] %d]+[scan [lindex $j 2] %f]/60)/60)}] } else { lappend carcat_dec_list \ [expr {([scan [lindex $j 0] %d]+ \ ([scan [lindex $j 1] %d]+[scan [lindex $j 2] %f]/60)/60)}] } } set indx 0 set imax [incr carcat_count -1] while {$indx <= $imax} { puts $fileid "[lindex $carcat_nam_list $indx] \ [lindex $carcat_ra_list $indx] [lindex $carcat_dec_list $indx]" incr indx 1 } close $fileid set indx 0 while {$indx <= $imax} { set x [lindex $carcat_ra_list $indx] if {$x < 60} { lappend carcat_ra_list [expr {360+$x}] lappend carcat_dec_list [lindex $carcat_dec_list $indx] lappend carcat_nam_list [lindex $carcat_nam_list $indx] } if {$x > 300} { lappend carcat_ra_list [expr {$x-360}] lappend carcat_dec_list [lindex $carcat_dec_list $indx] lappend carcat_nam_list [lindex $carcat_nam_list $indx] } incr indx 1 } set fileid1 [open carcat_flxdat "w"] set fileid2 [open carcat_posdat "w"] set fileid3 [open carcat_visual "w"] set indx 0 set imax [llength $carcat_ra_list] incr imax -1 while {$indx <= $imax} { set x [lindex $carcat_ra_list $indx] set y [lindex $carcat_dec_list $indx] set a \ [expr {$canvas_pix_xmax-$xpix_per_deg*($x-$canvas_deg_xmin)}] set b \ [expr {$canvas_pix_ymax-$ypix_per_deg*($y-$canvas_deg_ymin)}] puts $fileid1 "[lindex $carcat_nam_list $indx] NA $date NA" puts $fileid2 "$x $y" puts $fileid3 "[expr {$a-4}] [expr {$b+8}] [expr {$a+4}] [expr {$b-8}] -fill yellow1" incr indx 1 } close $fileid1 close $fileid2 close $fileid3 exit 0