def main(): for fy in FISCAL_YEARS: timely_programs = ProgramTimeliness.objects.filter(fiscal_year=fy, avg_lag_rows__lte='45') programs_available = ProgramTimeliness.objects.filter(fiscal_year=fy) pct = len(timely_programs) * 100 / len(programs_available) avg_avg_lag_rows = mean([t.avg_lag_rows for t in programs_available]) print "%d: %d / %d (%.2f%%) programs with avg lag <=45 days, avg program lag: %.2f days" % ( fy, len(timely_programs), len(programs_available), pct, avg_avg_lag_rows ) for fy in FISCAL_YEARS: timely_agencies = AgencyTimeliness.objects.filter(fiscal_year=fy, avg_lag_rows__lte='45') agencies_available = AgencyTimeliness.objects.filter(fiscal_year=fy) pct = len(timely_agencies) * 100 / len(agencies_available) avg_avg_lag_rows = mean([t.avg_lag_rows for t in agencies_available]) print "%d: %d / %d (%.2f%%) agencies with avg lag <=45 days, avg agency lag: %.2f days" % ( fy, len(timely_agencies), len(agencies_available), pct, avg_avg_lag_rows) for fy in FISCAL_YEARS: all_agencies = AgencyTimeliness.objects.filter(fiscal_year=fy) timely_sum = sum([t.total_dollars - t.late_dollars for t in all_agencies]) tardy_sum = sum([t.late_dollars for t in all_agencies]) tardy_pct = tardy_sum * 100 / (timely_sum + tardy_sum) pie = Pie(170, 170, [[('Timely', float(timely_sum))], [('Tardy', float(tardy_sum))]], show_labels=False, stylesheet=MEDIA_ROOT + '/styles/timeliness-charts.css', x_padding=0, y_padding=0) pie.output(MEDIA_ROOT + '/images/charts/program-timeliness-%d.svg' % fy) print "%d: timely %s vs %s tardy, %.2f%% tardy" % (fy, short_money(timely_sum), short_money(tardy_sum), tardy_pct)
def __unicode__(self): if self.completeness_total_dollars in (0, None): failed_pct = None else: failed_pct = "%2.2f%%" % (self.completeness_failed_dollars * 100 / self.completeness_total_dollars) return "%s %s (%d) / %s / $%.1fm" % (self.program.program_title, self.program.program_number, self.fiscal_year, failed_pct, short_money(self.completeness_failed_dollars))
def main(): for fy in FISCAL_YEARS: timely_programs = ProgramTimeliness.objects.filter( fiscal_year=fy, avg_lag_rows__lte='45') programs_available = ProgramTimeliness.objects.filter(fiscal_year=fy) pct = len(timely_programs) * 100 / len(programs_available) avg_avg_lag_rows = mean([t.avg_lag_rows for t in programs_available]) print "%d: %d / %d (%.2f%%) programs with avg lag <=45 days, avg program lag: %.2f days" % ( fy, len(timely_programs), len(programs_available), pct, avg_avg_lag_rows) for fy in FISCAL_YEARS: timely_agencies = AgencyTimeliness.objects.filter( fiscal_year=fy, avg_lag_rows__lte='45') agencies_available = AgencyTimeliness.objects.filter(fiscal_year=fy) pct = len(timely_agencies) * 100 / len(agencies_available) avg_avg_lag_rows = mean([t.avg_lag_rows for t in agencies_available]) print "%d: %d / %d (%.2f%%) agencies with avg lag <=45 days, avg agency lag: %.2f days" % ( fy, len(timely_agencies), len(agencies_available), pct, avg_avg_lag_rows) for fy in FISCAL_YEARS: all_agencies = AgencyTimeliness.objects.filter(fiscal_year=fy) timely_sum = sum( [t.total_dollars - t.late_dollars for t in all_agencies]) tardy_sum = sum([t.late_dollars for t in all_agencies]) tardy_pct = tardy_sum * 100 / (timely_sum + tardy_sum) pie = Pie( 170, 170, [[('Timely', float(timely_sum))], [('Tardy', float(tardy_sum))]], show_labels=False, stylesheet=MEDIA_ROOT + '/styles/timeliness-charts.css', x_padding=0, y_padding=0) pie.output(MEDIA_ROOT + '/images/charts/program-timeliness-%d.svg' % fy) print "%d: timely %s vs %s tardy, %.2f%% tardy" % ( fy, short_money(timely_sum), short_money(tardy_sum), tardy_pct)
consistent_allyears.append(consistency_set) consistent_programs = ProgramObligation.objects.filter(fiscal_year=fy, type=1, program__in=consistency_set) consistent_dollars = sum([o.obligation for o in consistent_programs]) consistent_mean = mean([float(o.obligation) for o in consistent_programs]) all_grant_dollars = sum([o.obligation for o in all_programs]) all_grant_mean = mean([float(o.obligation) for o in all_programs]) print "%d: %d consistent programs, %.2f%% of programs (%d acccurate, %d under, %d over) / %d programs, %.2f%% of grant spending (%s / %s), mean of obligations: %s consistent vs %s all grants" % ( fy, len(consistent_programs), len(consistent_programs) * 100 / len(all_programs), len(accurate_set), len(under_reporting_set), len(over_reporting_set), len(all_programs), consistent_dollars * 100 / all_grant_dollars, short_money(consistent_dollars), short_money(all_grant_dollars), short_money(consistent_mean), short_money(all_grant_mean)) progs = consistent_allyears[0] & consistent_allyears[1] & consistent_allyears[2] for p in progs: program = Program.objects.get(id=p) writer.writerow((program.id, program.program_number, program.program_title)) print "%s programs report consistent for all three years" % len(progs)
get_program_id = attrgetter('program_id') accurate_set = set(map(get_program_id, null_reporting)) & set( map(get_program_id, programs_with_obligations)) under_reporting_set = set(map(get_program_id, under_reporting)) over_reporting_set = set(map(get_program_id, over_reporting)) consistency_set = accurate_set | under_reporting_set | over_reporting_set consistent_allyears.append(consistency_set) consistent_programs = ProgramObligation.objects.filter( fiscal_year=fy, type=1, program__in=consistency_set) consistent_dollars = sum([o.obligation for o in consistent_programs]) consistent_mean = mean([float(o.obligation) for o in consistent_programs]) all_grant_dollars = sum([o.obligation for o in all_programs]) all_grant_mean = mean([float(o.obligation) for o in all_programs]) print "%d: %d consistent programs, %.2f%% of programs (%d acccurate, %d under, %d over) / %d programs, %.2f%% of grant spending (%s / %s), mean of obligations: %s consistent vs %s all grants" % ( fy, len(consistent_programs), len(consistent_programs) * 100 / len(all_programs), len(accurate_set), len(under_reporting_set), len(over_reporting_set), len(all_programs), consistent_dollars * 100 / all_grant_dollars, short_money(consistent_dollars), short_money(all_grant_dollars), short_money(consistent_mean), short_money(all_grant_mean)) progs = consistent_allyears[0] & consistent_allyears[1] & consistent_allyears[2] for p in progs: program = Program.objects.get(id=p) writer.writerow( (program.id, program.program_number, program.program_title)) print "%s programs report consistent for all three years" % len(progs)