❄️ The Icicle Streaming Query Language ❄️
at master 91 lines 1.6 kB view raw
1module Default where 2 3import Missing 4import Demographics 5 6input injury : { 7 action : Option String 8 , location : String 9 , severity : Double 10 } 11 12is_head : String -> Bool 13is_head l = 14 l == "head" 15 16max_group : Element b -> Aggregate a -> Aggregate (Possibly b) 17max_group k e = 18 group fold (k, e) = (group k in e) 19 in max_by e k 20 21feature actioned_damage = 22 from injury 23 in filter let Some act = action 24 in group act 25 in sum severity 26 27feature age = 28 from age 29 in newest value 30 31feature is_head = 32 from injury 33 in is_head (newest location) 34 35feature any_head = 36 from injury 37 in any (is_head location) 38 39feature sum_severity = 40 from injury 41 in sum severity 42 43feature any_ea = 44 from injury 45 in any (grepl "ea" location) 46 47feature empty = 48 from injury 49 in seq missing 0 50 51feature head_damage = 52 from injury 53 in filter is_head location 54 in sum severity 55 56feature worst_injured = 57 from injury 58 in max_group location (sum severity) 59 60feature most_injured = 61 from injury 62 in max_group location (count severity) 63 64feature sd_injury = 65 from injury 66 in sd severity 67 68feature mean_injury = 69 from injury 70 in mean severity 71 72feature injury_blah = 73 from injury 74 in filter location == "head" || (location == "arm" && is_some action) 75 in sum severity 76 77feature mean_day_of_week = 78 from injury 79 in let 80 tau = 81 2 * pi 82 dow = 83 tau / 7 * double (mod (days time) 7) 84 m = 85 (circular_stats dow).mean 86 in 87 m / tau * 7 88 89feature days_in_location = 90 from injury 91 in days_in location time now