def proscore(self): """A modified prognosis score that omits factors associated with uninteresting bills, such as naming post offices. Only truly valid for current bills, and useless to compare across Congresses, but returns a value for all bills.""" # To aid search, especially for non-current bills, add in something to give most recently active bills a boost. type_boost = { BillType.senate_bill: 1.0, BillType.house_bill: 1.0, BillType.senate_resolution: 0.2, BillType.house_resolution: 0.2, BillType.senate_concurrent_resolution: 0.3, BillType.house_concurrent_resolution: 0.3, BillType.senate_joint_resolution: 0.75, BillType.house_joint_resolution: 0.75, } cstart, cend = get_congress_dates(self.congress) csd = self.current_status_date if hasattr(csd, 'date'): csd = csd.date() r = (csd - cstart).days / 365.0 # ranges from 0.0 to about 2.0. if self.is_current: from prognosis import compute_prognosis r += compute_prognosis(self, proscore=True)["prediction"] r *= type_boost[self.bill_type] return r
def get_prognosis(self): if self.congress != settings.CURRENT_CONGRESS: return None import prognosis prog = prognosis.compute_prognosis(self) prog["congressdates"] = get_congress_dates(prog["congress"]) return prog