next up previous contents
Next: 3.2 FLAG_CMD sub-table vs Up: 3 Frequently Asked Questions Previous: 3 Frequently Asked Questions   Contents

3.1 Obtaining summaries per reason

########################################
#
#   Function to count statistics as a function of 'reason'.
#
######################################
def task_reason_stats(msname='',field='',spw='',writeflags=True):

    # Run the task with rflag
    tf.open(msname=msname,ntime=100.0);
    tf.selectdata(field=field, spw=spw); # loose union...

    # Unflag
    ag0 = {'apply':True, 'sequential':True, 'mode':'unflag'}
    tf.parseagentparameters(ag0);

    # Flag Zeros
    ag1 = {'apply':True,'sequential':True,'mode':'clip', 'clipzeros':True}
    tf.parseagentparameters(ag1);
    # Summary
    ag2 = {'apply':True,'sequential':True,'mode':'summary','name':'Zeros'}
    tf.parseagentparameters(ag2);
    # TFCrop
    ag3 = {'apply':True,'sequential':True,'mode':'tfcrop'}
    tf.parseagentparameters(ag3);
    # Summary
    ag4 = {'apply':True,'sequential':True,'mode':'summary', 'name':'TFCrop'}
    tf.parseagentparameters(ag4);


    # Run all these agents, and get the combined-report.
    tf.init();
    summary_stats_list = tf.run(writeflags=writeflags);
    tf.done();

    # Parse the output summary lists and extract only 'type==summary'
    ## Iterate through the list in the correct order. Do not follow default 'dictionary-key' ordering.
    summary_reps=[];
    for rep in range(0,summary_stats_list['nreport']):
        repname = 'report'+str(rep);
        if(summary_stats_list[repname]['type']=='summary'):
              summary_reps.append(summary_stats_list[repname]);

    # Step through the summary list and print a few things.
    ## SUBTRACT flag counts from previous agents, because the counts are cumulative.
    for ind in range(0,len(summary_reps)):

        flagcount = summary_reps[ind]['flagged'];
        totalcount = summary_reps[ind]['total'];
     
        # From the second summary onwards, subtract counts from the previous one :)
        if ( ind > 0 ):
             flagcount = flagcount - summary_reps[ind-1]['flagged'];

        print "Summary ", ind , "(" , summary_reps[ind]['name']  , ") :  Flagged : " , flagcount , " out 
of " , totalcount ;

    return summary_reps; 


##############################################



R. V. Urvashi 2012-11-01