data/filter.py
author Eugen Sawin <sawine@me73.com>
Tue, 29 Mar 2011 19:26:07 +0200
changeset 15 0d2daf4fcb99
permissions -rwxr-xr-x
Stuff.
sawine@0
     1
#!/usr/bin/python
sawine@0
     2
sawine@0
     3
import dflowlog
sawine@0
     4
from dflowlog import dflow_fields as fields
sawine@0
     5
sawine@0
     6
import sys
sawine@0
     7
from optparse import OptionParser
sawine@0
     8
sawine@0
     9
def purge_zero(plans):
sawine@0
    10
	new_plans = []
sawine@0
    11
	for plan in plans:
sawine@0
    12
		if int(plan[10]) != 0:
sawine@0
    13
			new_plans.append(plan)
sawine@0
    14
	return new_plans
sawine@0
    15
	
sawine@0
    16
def purge_empty(plans):
sawine@0
    17
	new_plans = []
sawine@0
    18
	for plan in plans:
sawine@0
    19
		if len(plan) >= len(fields) and len(plan[fields["flow_point"]]) > 1:
sawine@0
    20
			new_plans.append(plan)
sawine@0
    21
	return new_plans
sawine@0
    22
sawine@0
    23
def purge_duplicates(plans):
sawine@0
    24
	new_plans = dict()
sawine@0
    25
	for plan in plans:
sawine@0
    26
		if len(plan) >= len(fields):
sawine@0
    27
			new_plans[(plan[fields["call_sign"]], plan[fields["atd"]])] = plan
sawine@0
    28
	return new_plans.itervalues()
sawine@0
    29
sawine@0
    30
def filter(column, value, plans):
sawine@0
    31
	new_plans = []
sawine@0
    32
	for plan in plans:
sawine@0
    33
		if len(plan) >= fields[column] and plan[fields[column]] == value:
sawine@0
    34
			new_plans.append(plan)
sawine@0
    35
	return new_plans			
sawine@0
    36
sawine@0
    37
if __name__ == "__main__":
sawine@0
    38
	option_map = {str(purge_duplicates): purge_duplicates,
sawine@0
    39
					str(purge_empty): purge_empty,
sawine@0
    40
					str(purge_zero): purge_zero}
sawine@0
    41
	arg_parser = OptionParser(usage="usage: %prog [options] csv_logs ...")
sawine@0
    42
	arg_parser.add_option("-d", "--duplicate",
sawine@0
    43
				action="store_true", dest=str(purge_duplicates),
sawine@0
    44
				help="remove duplicate entries")
sawine@0
    45
	arg_parser.add_option("-e", "--empty",
sawine@0
    46
				action="store_true", dest=str(purge_empty),
sawine@0
    47
				help="remove entries with empty flow points")
sawine@0
    48
	arg_parser.add_option("-z", "--zero",
sawine@0
    49
				action="store_true", dest=str(purge_zero),
sawine@0
    50
				help="remove entries with empty flow points")
sawine@0
    51
	arg_parser.add_option("-f", "--files",
sawine@0
    52
				action="store_true", dest="files_mode",
sawine@0
    53
				help="arguments (csv_logs) are files")
sawine@0
    54
	arg_parser.set_defaults(purge_duplicates=False)
sawine@0
    55
	arg_parser.set_defaults(purge_empty=False)
sawine@0
    56
	arg_parser.set_defaults(purge_zero=False)
sawine@0
    57
	arg_parser.set_defaults(files_mode=False)
sawine@0
    58
	(options, args) = arg_parser.parse_args()
sawine@0
    59
sawine@0
    60
	plans = []
sawine@0
    61
sawine@0
    62
	if options.files_mode:
sawine@0
    63
		plans =	dflowlog.parse_files(args)
sawine@0
    64
		options.files_mode = False
sawine@0
    65
	else:
sawine@0
    66
		plans = dflowlog.parse_pipe(args)
sawine@0
    67
sawine@0
    68
	for option in options.__dict__:
sawine@0
    69
		if getattr(options, option):
sawine@0
    70
			 plans = option_map[option](plans)
sawine@0
    71
	dflowlog.print_logs(plans)
sawine@0
    72
	
sawine@0
    73