Changeset 1589


Ignore:
Timestamp:
07/02/09 12:17:20 (15 years ago)
Author:
Malte Marquarding
Message:

Introduced print_log_dec(orator)

Location:
trunk/python
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/python/__init__.py

    r1588 r1589  
    44"""
    55import os,sys,shutil, platform
     6import functools
    67
    78# Set up AIPSPATH and first time use of asap i.e. ~/.asap/*
     
    351352    asaplog.disable()
    352353
     354
     355def print_log_dec(f):
     356    @functools.wraps(f)
     357    def wrap_it(*args, **kw):
     358        val = f(*args, **kw)
     359        print_log()
     360        return val
     361    return wrap_it
     362
    353363def print_log():
    354     log = asaplog.pop()
     364    log = asaplog.pop().strip()
    355365    if len(log) and rcParams['verbose']: print log
    356366    return
     
    395405def is_ipython():
    396406    return '__IP' in dir(sys.modules["__main__"])
    397    
     407
    398408if is_ipython():
    399409    def version(): print  "ASAP %s(%s)"% (__version__, __date__)
  • trunk/python/asapfitter.py

    r1536 r1589  
    11import _asap
    22from asap import rcParams
    3 from asap import print_log
     3from asap import print_log_dec
    44from asap import _n_bools
    55from asap import mask_and
     
    7676        Set the function to be fit.
    7777        Parameters:
    78             poly:    use a polynomial of the order given with nonlinear least squares fit 
     78            poly:    use a polynomial of the order given with nonlinear least squares fit
    7979            lpoly:   use polynomial of the order given with linear least squares fit
    8080            gauss:   fit the number of gaussian specified
     
    9090            n = kwargs.get('poly')
    9191            self.components = [n]
    92             self.uselinear = False 
     92            self.uselinear = False
    9393        elif kwargs.has_key('lpoly'):
    9494            self.fitfunc = 'poly'
     
    101101            self.fitfuncs = [ 'gauss' for i in range(n) ]
    102102            self.components = [ 3 for i in range(n) ]
    103             self.uselinear = False 
     103            self.uselinear = False
    104104        else:
    105105            msg = "Invalid function type."
     
    114114        return
    115115
     116    @print_log_dec
    116117    def fit(self, row=0, estimate=False):
    117118        """
     
    150151                                                                      self.data.getbeam(i),
    151152                                                                      self.data.getif(i),
    152                                                                       self.data.getpol(i), 
     153                                                                      self.data.getpol(i),
    153154                                                                      self.data.getcycle(i))
    154155                asaplog.push(out,False)
     
    175176        self._fittedrow = row
    176177        self.fitted = True
    177         print_log()
    178178        return
    179179
     
    204204                self.data._addfit(fit,self._fittedrow)
    205205
    206     #def set_parameters(self, params, fixed=None, component=None):
     206    @print_log_dec
    207207    def set_parameters(self,*args,**kwargs):
    208208        """
     
    247247        if fixed is not None:
    248248            self.fitter.setfixedparameters(fixed)
    249         print_log()
    250249        return
    251250
     
    461460        return self.fitter.getfit()
    462461
     462    @print_log_dec
    463463    def commit(self):
    464464        """
     
    482482        scan = self.data.copy()
    483483        scan._setspectrum(self.fitter.getresidual())
    484         print_log()
    485484        return scan
    486485
     486    @print_log_dec
    487487    def plot(self, residual=False, components=None, plotparms=False, filename=None):
    488488        """
     
    520520                             array(self.data._getmask(self._fittedrow),
    521521                                   copy=False))
    522                              
     522
    523523            ylab = self.data._get_ordinate_label()
    524524
     
    570570        if (not rcParams['plotter.gui']):
    571571            self._p.save(filename)
    572         print_log()
    573 
     572
     573    @print_log_dec
    574574    def auto_fit(self, insitu=None, plot=False):
    575575        """
     
    598598                                                                   scan.getbeam(r),
    599599                                                                   scan.getif(r),
    600                                                                    scan.getpol(r), 
     600                                                                   scan.getpol(r),
    601601                                                                   scan.getcycle(r))
    602602            asaplog.push(out, False)
     
    616616            self._p.unmap()
    617617            self._p = None
    618         print_log()
    619618        return scan
    620 
  • trunk/python/asapmath.py

    r1391 r1589  
    11from asap.scantable import scantable
    22from asap import rcParams
    3 from asap import print_log
     3from asap import print_log_dec
    44from asap import selector
    55
     6@print_log_dec
    67def average_time(*args, **kwargs):
    78    """
     
    2728        # without using a mask
    2829        scanav = average_time(scana,scanb)
    29         # or equivalent
    30         # scanav = average_time([scana, scanb])
     30        # or equivalent
     31        # scanav = average_time([scana, scanb])
    3132        # return the (time) averaged scan, i.e. the average of
    3233        # all correlator cycles
     
    8889        s = scantable(stm._average(alignedlst, mask, weight.upper(), scanav))
    8990    s._add_history("average_time",varlist)
    90     print_log()
    9191    return s
    9292
     
    111111    s = scantable(stm._quotient(source, reference, preserve))
    112112    s._add_history("quotient",varlist)
    113     print_log()
    114113    return s
    115114
     115@print_log_dec
    116116def dototalpower(calon, caloff, tcalval=0.0):
    117117    """
     
    129129    s = scantable(stm._dototalpower(calon, caloff, tcalval))
    130130    s._add_history("dototalpower",varlist)
    131     print_log()
    132131    return s
    133132
     133@print_log_dec
    134134def dosigref(sig, ref, smooth, tsysval=0.0, tauval=0.0):
    135135    """
     
    149149    s = scantable(stm._dosigref(sig, ref, smooth, tsysval, tauval))
    150150    s._add_history("dosigref",varlist)
    151     print_log()
    152151    return s
    153152
     153@print_log_dec
    154154def calps(scantab, scannos, smooth=1, tsysval=0.0, tauval=0.0, tcalval=0.0):
    155155    """
     
    237237    ress = dosigref(sig, ref, smooth, tsysval, tauval)
    238238    ress._add_history("calps", varlist)
    239     print_log()
    240239    return ress
    241240
     241@print_log_dec
    242242def calnod(scantab, scannos=[], smooth=1, tsysval=0.0, tauval=0.0, tcalval=0.0):
    243243    """
     
    308308    resspec = scantable(stm._donod(scantab, pairScans, smooth, tsysval,tauval,tcalval))
    309309    resspec._add_history("calnod",varlist)
    310     print_log()
    311310    return resspec
    312311
     312@print_log_dec
    313313def calfs(scantab, scannos=[], smooth=1, tsysval=0.0, tauval=0.0, tcalval=0.0):
    314314    """
     
    349349    resspec = scantable(stm._dofs(s, scannos, smooth, tsysval,tauval,tcalval))
    350350    resspec._add_history("calfs",varlist)
    351     print_log()
    352351    return resspec
    353352
     
    367366    print "simple_math is deprecated use +=/* instead."
    368367
     368@print_log_dec
    369369def merge(*args):
    370370    """
     
    375375    Example:
    376376        myscans = [scan1, scan2]
    377         allscans = merge(myscans)
    378         # or equivalent
    379         sameallscans = merge(scan1, scan2)
     377        allscans = merge(myscans)
     378        # or equivalent
     379        sameallscans = merge(scan1, scan2)
    380380    """
    381381    varlist = vars()
     
    400400    s = scantable(stm._merge(lst))
    401401    s._add_history("merge", varlist)
    402     print_log()
    403402    return s
    404 
  • trunk/python/scantable.py

    r1588 r1589  
    11from asap._asap import Scantable
    22from asap import rcParams
    3 from asap import print_log
     3from asap import print_log, print_log_dec
    44from asap import asaplog
    55from asap import selector
     
    1111        The ASAP container for scans
    1212    """
    13 
     13    @print_log_dec
    1414    def __init__(self, filename, average=None, unit=None, parallactify=None):
    1515        """
     
    5353                    if rcParams['verbose']:
    5454                        asaplog.push(s)
    55                         print asaplog.pop().strip()
     55                        #print asaplog.pop().strip()
    5656                        return
    5757                    raise IOError(s)
     
    8080        self.parallactify(parallactify)
    8181        self._add_history("scantable", varlist)
    82         print_log()
    83 
     82
     83    @print_log_dec
    8484    def save(self, name=None, format=None, overwrite=False):
    8585        """
     
    129129            writer = stw(format2)
    130130            writer.write(self, name)
    131         print_log()
    132131        return
    133132
     
    587586        self._add_history("set_unit", varlist)
    588587
     588    @print_log_dec
    589589    def set_instrument(self, instr):
    590590        """
     
    596596        self._setInstrument(instr)
    597597        self._add_history("set_instument", vars())
    598         print_log()
    599 
     598
     599    @print_log_dec
    600600    def set_feedtype(self, feedtype):
    601601        """
     
    606606        self._setfeedtype(feedtype)
    607607        self._add_history("set_feedtype", vars())
    608         print_log()
    609 
     608
     609    @print_log_dec
    610610    def set_doppler(self, doppler='RADIO'):
    611611        """
     
    619619        self._setcoordinfo(inf)
    620620        self._add_history("set_doppler", vars())
    621         print_log()
    622 
     621
     622    @print_log_dec
    623623    def set_freqframe(self, frame=None):
    624624        """
     
    647647            else:
    648648                raise TypeError(msg)
    649         print_log()
    650649
    651650    def set_dirframe(self, frame=""):
     
    691690        abc = self._getabcissa(rowno)
    692691        lbl = self._getabcissalabel(rowno)
    693         print_log()
    694692        return abc, lbl
    695693
     
    713711        self._add_history("flag", varlist)
    714712
     713    @print_log_dec
    715714    def lag_flag(self, start, end, unit="MHz", insitu=None):
    716715        """
     
    746745            else: raise
    747746        s._add_history("lag_flag", varlist)
    748         print_log()
    749747        if insitu:
    750748            self._assign(s)
     
    752750            return s
    753751
    754 
     752    @print_log_dec
    755753    def create_mask(self, *args, **kwargs):
    756754        """
     
    814812            if kwargs.get('invert'):
    815813                msk = mask_not(msk)
    816         print_log()
    817814        return msk
    818815
     
    915912
    916913    def shift_refpix(self, delta):
    917         """
    918         Shift the reference pixel of the Spectra Coordinate by an
    919         integer amount.
    920         Parameters:
    921             delta:   the amount to shift by
     914        """
     915        Shift the reference pixel of the Spectra Coordinate by an
     916        integer amount.
     917        Parameters:
     918            delta:   the amount to shift by
    922919        Note:
    923             Be careful using this with broadband data.
    924         """
    925         Scantable.shift(self, delta)
     920            Be careful using this with broadband data.
     921        """
     922        Scantable.shift(self, delta)
    926923
    927924    def history(self, filename=None):
     
    974971    # Maths business
    975972    #
    976 
     973    @print_log_dec
    977974    def average_time(self, mask=None, scanav=False, weight='tint', align=False):
    978975        """
     
    10211018            else: raise
    10221019        s._add_history("average_time", varlist)
    1023         print_log()
    10241020        return s
    10251021
     1022    @print_log_dec
    10261023    def convert_flux(self, jyperk=None, eta=None, d=None, insitu=None):
    10271024        """
     
    10481045        s = scantable(self._math._convertflux(self, d, eta, jyperk))
    10491046        s._add_history("convert_flux", varlist)
    1050         print_log()
    10511047        if insitu: self._assign(s)
    10521048        else: return s
    10531049
     1050    @print_log_dec
    10541051    def gain_el(self, poly=None, filename="", method="linear", insitu=None):
    10551052        """
     
    11011098        s = scantable(self._math._gainel(self, poly, filename, method))
    11021099        s._add_history("gain_el", varlist)
    1103         print_log()
    11041100        if insitu: self._assign(s)
    11051101        else: return s
    11061102
     1103    @print_log_dec
    11071104    def freq_align(self, reftime=None, method='cubic', insitu=None):
    11081105        """
     
    11261123        s = scantable(self._math._freq_align(self, reftime, method))
    11271124        s._add_history("freq_align", varlist)
    1128         print_log()
    11291125        if insitu: self._assign(s)
    11301126        else: return s
    11311127
     1128    @print_log_dec
    11321129    def opacity(self, tau, insitu=None):
    11331130        """
     
    11471144        s = scantable(self._math._opacity(self, tau))
    11481145        s._add_history("opacity", varlist)
    1149         print_log()
    11501146        if insitu: self._assign(s)
    11511147        else: return s
    11521148
     1149    @print_log_dec
    11531150    def bin(self, width=5, insitu=None):
    11541151        """
     
    11651162        s = scantable(self._math._bin(self, width))
    11661163        s._add_history("bin", varlist)
    1167         print_log()
    1168         if insitu: self._assign(s)
    1169         else: return s
    1170 
    1171 
     1164        if insitu:
     1165            self._assign(s)
     1166        else:
     1167            return s
     1168
     1169    @print_log_dec
    11721170    def resample(self, width=5, method='cubic', insitu=None):
    11731171        """
     
    11881186        s = scantable(self._math._resample(self, method, width))
    11891187        s._add_history("resample", varlist)
    1190         print_log()
    11911188        if insitu: self._assign(s)
    11921189        else: return s
    11931190
    1194 
     1191    @print_log_dec
    11951192    def average_pol(self, mask=None, weight='none'):
    11961193        """
     
    12081205        s = scantable(self._math._averagepol(self, mask, weight.upper()))
    12091206        s._add_history("average_pol", varlist)
    1210         print_log()
    12111207        return s
    12121208
     1209    @print_log_dec
    12131210    def average_beam(self, mask=None, weight='none'):
    12141211        """
     
    12261223        s = scantable(self._math._averagebeams(self, mask, weight.upper()))
    12271224        s._add_history("average_beam", varlist)
    1228         print_log()
    12291225        return s
    12301226
     
    12341230        self._add_history("parallactify", varlist)
    12351231
     1232    @print_log_dec
    12361233    def convert_pol(self, poltype=None):
    12371234        """
     
    12521249                raise
    12531250        s._add_history("convert_pol", varlist)
    1254         print_log()
    12551251        return s
    12561252
     1253    @print_log_dec
    12571254    def smooth(self, kernel="hanning", width=5.0, order=2, insitu=None):
    12581255        """
     
    12811278        s = scantable(self._math._smooth(self, kernel.lower(), width, order))
    12821279        s._add_history("smooth", varlist)
    1283         print_log()
    12841280        if insitu: self._assign(s)
    12851281        else: return s
    12861282
    1287 
     1283    @print_log_dec
    12881284    def poly_baseline(self, mask=None, order=0, plot=False, uselin=False, insitu=None):
    12891285        """
     
    13191315            s = f.auto_fit(insitu, plot=plot)
    13201316            s._add_history("poly_baseline", varlist)
    1321             print_log()
    13221317            if insitu: self._assign(s)
    13231318            else: return s
     
    13291324            else:
    13301325                raise RuntimeError(msg)
    1331 
    13321326
    13331327    def auto_poly_baseline(self, mask=[], edge=(0, 0), order=0,
     
    14481442            return workscan
    14491443
     1444    @print_log_dec
    14501445    def rotate_linpolphase(self, angle):
    14511446        """
     
    14611456        self._math._rotate_linpolphase(self, angle)
    14621457        self._add_history("rotate_linpolphase", varlist)
    1463         print_log()
    14641458        return
    14651459
    1466 
     1460    @print_log_dec
    14671461    def rotate_xyphase(self, angle):
    14681462        """
     
    14781472        self._math._rotate_xyphase(self, angle)
    14791473        self._add_history("rotate_xyphase", varlist)
    1480         print_log()
    14811474        return
    14821475
     1476    @print_log_dec
    14831477    def swap_linears(self):
    14841478        """
     
    14891483        self._math._swap_linears(self)
    14901484        self._add_history("swap_linears", varlist)
    1491         print_log()
    14921485        return
    14931486
     1487    @print_log_dec
    14941488    def invert_phase(self):
    14951489        """
     
    14991493        self._math._invert_phase(self)
    15001494        self._add_history("invert_phase", varlist)
    1501         print_log()
    15021495        return
    15031496
     1497    @print_log_dec
    15041498    def add(self, offset, insitu=None):
    15051499        """
     
    15161510        s = scantable(self._math._unaryop(self, offset, "ADD", False))
    15171511        s._add_history("add", varlist)
    1518         print_log()
    15191512        if insitu:
    15201513            self._assign(s)
     
    15221515            return s
    15231516
     1517    @print_log_dec
    15241518    def scale(self, factor, tsys=True, insitu=None):
    15251519        """
     
    15381532        s = scantable(self._math._unaryop(self, factor, "MUL", tsys))
    15391533        s._add_history("scale", varlist)
    1540         print_log()
    15411534        if insitu:
    15421535            self._assign(s)
     
    15801573        self._add_history("set_sourcetype", varlist)
    15811574
     1575    @print_log_dec
    15821576    def auto_quotient(self, preserve=True, mode='paired'):
    15831577        """
     
    16201614            s = scantable(self._math._auto_quotient(self, mode, preserve))
    16211615        s._add_history("auto_quotient", varlist)
    1622         print_log()
    16231616        return s
    16241617
     1618    @print_log_dec
    16251619    def mx_quotient(self, mask = None, weight='median', preserve=True):
    16261620        """
     
    16421636        q = quotient(on, off, preserve)
    16431637        q._add_history("mx_quotient", varlist)
    1644         print_log()
    16451638        return q
    16461639
     1640    @print_log_dec
    16471641    def freq_switch(self, insitu=None):
    16481642        """
     
    16601654        s = scantable(self._math._freqswitch(self))
    16611655        s._add_history("freq_switch", varlist)
    1662         print_log()
    16631656        if insitu: self._assign(s)
    16641657        else: return s
    16651658
     1659    @print_log_dec
    16661660    def recalc_azel(self):
    16671661        """
     
    16741668        self._recalcazel()
    16751669        self._add_history("recalc_azel", varlist)
    1676         print_log()
    16771670        return
    16781671
     1672    @print_log_dec
    16791673    def __add__(self, other):
    16801674        varlist = vars()
     
    16871681            raise TypeError("Other input is not a scantable or float value")
    16881682        s._add_history("operator +", varlist)
    1689         print_log()
    16901683        return s
    16911684
     1685    @print_log_dec
    16921686    def __sub__(self, other):
    16931687        """
     
    17031697            raise TypeError("Other input is not a scantable or float value")
    17041698        s._add_history("operator -", varlist)
    1705         print_log()
    17061699        return s
    17071700
     1701    @print_log_dec
    17081702    def __mul__(self, other):
    17091703        """
     
    17191713            raise TypeError("Other input is not a scantable or float value")
    17201714        s._add_history("operator *", varlist)
    1721         print_log()
    17221715        return s
    17231716
    17241717
     1718    @print_log_dec
    17251719    def __div__(self, other):
    17261720        """
     
    17301724        s = None
    17311725        if isinstance(other, scantable):
    1732             s = scantable(self._math._binaryop(self, other, "DIV"))
     1726            s = scantable(self._math._binaryop(self, other, "DIV"))
    17331727        elif isinstance(other, float):
    17341728            if other == 0.0:
     
    17381732            raise TypeError("Other input is not a scantable or float value")
    17391733        s._add_history("operator /", varlist)
    1740         print_log()
    17411734        return s
    17421735
     
    17641757        basesel = self.get_selection()
    17651758        for i in range(self.nrow()):
    1766             sel = selector()+basesel
    1767             sel.set_scans(self.getscan(i))
    1768             sel.set_beams(self.getbeam(i))
    1769             sel.set_ifs(self.getif(i))
    1770             sel.set_polarisations(self.getpol(i))
    1771             self.set_selection(sel)
     1759            sel = self.get_row_selector(i)
     1760            self.set_selection(basesel+sel)
    17721761            nans = numpy.isnan(self._getspectrum(0))
    17731762        if numpy.any(nans):
Note: See TracChangeset for help on using the changeset viewer.