Commit b512173a authored by Sergio Poppi's avatar Sergio Poppi
Browse files

Initial commit

parents
Loading
Loading
Loading
Loading

src/calibrate_jy.py

0 → 100644
+192 −0
Original line number Diff line number Diff line
from pyclass import comm,gdict
from math import *
import numpy as np
from astropy.time import Time,TimeDelta
from scipy.interpolate import interp1d
import sys
import os







gain_curve_poly=[0.7929185,0.005900533,-4.203179E-5,0]


polarization_index={'LCP':1,'RCP':2}   
 

def gain_curve(el,c):
    return c[0]+c[1]*el+c[2]*el**2
    

def readOpacityFile(taufile):
    
    my_data = np.genfromtxt(taufile,dtype=float)

    print my_data
    return my_data





def findMinDist(time,time_tau,tau):
    indice=0
    minimo=fabs(time.mjd-time_tau[0])
    print minimo
    for idx,val in enumerate(time_tau):
         deltatime=fabs((time.mjd-val))
         
         if (deltatime <minimo):
             minimo=deltatime
             indice=idx
    
    tau_min=tau[indice]
    time_tau_min=time_tau[indice]
    return time_tau_min,tau_min

def readGains(gainfile):
  '''
  Read gains.txt
  
  '''
  my_data = np.genfromtxt(gainfile,dtype=float)
  return my_data

def findPolarizationIndex(polarization='RCP'):
    return polarization_index[polarization]


def gildasFind(polarization='RCP'):
    
    gildas_findpolarization_string='find /line *'+polarization
    return gildas_findpolarization_string






def calibrate(file_in,taufile,gainfile):
    
   #tau=0.09
   gildas_findpolarization_string='find'

   print "gildas:>>>>>>>>>>>",gildas_findpolarization_string 
   tau_list=readOpacityFile(taufile)
   gain_jy=readGains(gainfile)
   
   
   time_int= tau_list[:,0]
   time_gain =gain_jy[:,0]
   
   filename=file_in.split('.')[0]
   
   #################################
   outfile=filename+'_tstar.med'
   
   print filename
   
   comm('file in '+file_in)
   comm('file ou '+outfile + ' single /overwrite')
       

   comm(gildas_findpolarization_string)
   for i in range(0,gdict.found): 
            print i
            comm('get n')

            elevation=gdict.elevation  
            ut=degrees(gdict.r.head.gen.ut)/360. # ut is in radians. Converted to degrees and then in fraction of the day  
            spectrum_polarization=str(gdict.line)
            if 'RCP' in spectrum_polarization:
                tau_int=  tau_list[:,polarization_index['RCP']]
            else:
                tau_int=  tau_list[:,polarization_index['LCP']]
                

            time_scan=Time(gdict.r.head.gen.dobs+2460549.5+ut,format='jd') # .5 of difference because jd starts from midday. 

            time_tau,tau_min=findMinDist(time_scan,time_int,tau_int)            
            coeff=exp(tau_min/sin(elevation))
            print tau_min
            comm('mul '+str(coeff))
            print 'Ta*  mul '+str(coeff),'tau',tau_min,degrees(elevation)
            comm('write')
            
   # 
                 
   file_in=outfile # the tstar output file is the
   filename=file_in.split('.')[0]
   outfile=filename+'_gain.med'
   print "gildas:>>>>>>>>>>>",gildas_findpolarization_string 

   comm('file in ' + file_in)
   comm('file ou '+outfile + ' single /overwrite')
       
   comm(gildas_findpolarization_string)
   for i in range(1,gdict.found+1): 
            print i
            comm('get '+str(i))
            elevation=degrees(gdict.elevation)
            
            coeff=1./ gain_curve(elevation,gain_curve_poly)  
            comm('mul '+str(coeff))
            print 'Gain Curve: mul '+str(coeff),1/coeff,elevation
            
            comm('write')


   
   file_in=outfile # the tstar output file is the
   filename=file_in.split('.')[0]
   outfile=filename+'_jy.med'
   print file_in, outfile
   comm('file in ' + file_in)
   comm('file ou '+outfile + ' single /overwrite')
   
   comm(gildas_findpolarization_string)
   for i in range(1,gdict.found+1): 
            print i
            comm('get '+str(i))
            elevation=gdict.elevation  
            ut=degrees(gdict.r.head.gen.ut)/360. # ut is in radians. Converted to degrees and then in fraction of the day  
            spectrum_polarization=str(gdict.line)
            if 'RCP' in spectrum_polarization:
                gain_int = gain_jy[:,polarization_index['RCP']]
            else:
                gain_int=  gain_jy[:,polarization_index['LCP']]
        
           
           
            time_scan=Time(gdict.r.head.gen.dobs+2460549.5+ut,format='jd') # .5 of difference because jd starts from midday. 
            time_gain_min,gain_min=findMinDist(time_scan,time_gain,gain_int)
            coeff=1./ gain_min 
            comm('mul '+str(coeff))
            print 'Gain: mul '+str(coeff),gain_min
            comm('write')

def printUsage(argv):
    print "Usage:"
    print "python "+argv[0]+" classfile taufile gainfile"
    print "The classfile is the file generated by discos2class"
    
    

def main(argv):
   
   
   if len(argv)==4:
      calibrate(argv[1],argv[2],argv[3])
   else:
      printUsage(argv)


if __name__ == "__main__":
     main(sys.argv)
     
     
 No newline at end of file

src/gains.txt

0 → 100644
+6 −0
Original line number Diff line number Diff line
58008.73098  0.093  0.093
58008.79219  0.097  0.097
58009.68114  0.094  0.098
58009.68824  0.092  0.091
58013.78494  0.095  0.098
 No newline at end of file

src/tau.txt

0 → 100644
+11 −0
Original line number Diff line number Diff line
58008.716983   0.125   0.128
58008.733996   0.125   0.128
58008.778534   0.118   0.120
58008.794852   0.116   0.119
58009.695779   0.154   0.156
58013.796575   0.129   0.140