Source
print(ct+': calwt='+str(self.cld[ct]['calwt'])+str(' (')+str(len(self.cld[ct])-1)+str(' instance[s]):'))
from __future__ import print_function
class callibrary(object):
def __init__(self):
self.cld={} # as dict
def __repr__(self):
return "<callibrary>"
def cldefinstance(self):
definst={
"field" :"",
"intent":"",
"spw": "",
"obs": "",
"fldmap" : [],
"obsmap" : [],
"spwmap" : [],
"antmap" : [],
#"calwt" : False,
"tinterp" : "",
"finterp" : "",
"reach" : ""
}
return definst
def clear(self):
self.__init__()
def len(self):
return len(self.cld)
def addold(self,field='',spw='',intent='',
gaintable='',gainfield='',interp='',spwmap=[],calwt=False):
if len(gaintable)<1:
raise Exception('Please specify at least a gaintable.')
# insist all cal params are lists
# NB: data selection params are _not_ lists
if (not isinstance(gaintable,list)):
gaintable=[gaintable]
if (not isinstance(gainfield,list)):
gainfield=[gainfield]
if (not isinstance(interp,list)):
interp=[interp]
if (not isinstance(calwt,list)):
calwt=[calwt]
if isinstance(spwmap,list) and len(spwmap)>0:
if (not isinstance(spwmap[0],list)):
spwmap=[spwmap] # nest it
else:
spwmap=[]
for itab in range(len(gaintable)):
tint='linear'
fint=''
sinterp=interp[itab].split(',') if itab<len(interp) else []
if len(sinterp)>0 and len(sinterp[0])>0:
tint=sinterp[0]
fint=sinterp[1] if (len(sinterp)>1) else ''
self.add(caltable=gaintable[itab],
field=field,
spw=spw,
intent=intent,
tinterp=tint,
finterp=fint,
calwt=calwt[itab] if itab<len(calwt) else calwt[len(calwt)-1],
fldmap=gainfield[itab] if itab<len(gainfield) else '',
spwmap=spwmap[itab] if itab<len(spwmap) else []
)
#
def add(self,caltable,
field='',intent='',spw='',obs='',
tinterp='',finterp='',reach='',calwt=True,
obsmap=[],fldmap=[],spwmap=[],antmap=[]):
# if caltable is a list, insist others are, too
if (isinstance(caltable,list)):
if (not isinstance(field,list)):
field=[field]
if (not isinstance(intent,list)):
intent=[intent]