use s3.nu export def latest-daily [] { let latest = (s3 files xs-dev xs-reg-result/basic | sort-by lastModified | reverse | where key =~ "daily" | first) [ "xs-dev", ($latest.url | url parse | get path | str trim -c '/'), $latest.key ] | path join | s3 get-csv } export def latest-daily-detail [] { let latest = (s3 files xs-dev xs-reg-result/detail | sort-by lastModified | reverse | where key =~ "daily" | first) [ "xs-dev", ($latest.url | url parse | get path | str trim -c '/'), $latest.key ] | path join | s3 get-csv } export def prop-fields [] { get proposedFields.fields | flatten | flatten | select name type value } export def "detail worst" [type:string,--limit:int=3,--error-category=["FP", "FN"]] { where Fieldtype =~ $type | group-by Filename | transpose filename data | each { |f| $f | insert errors ($f.data | where Classification in $error_category | get Count | default 0 ) } | sort-by errors | reverse | take $limit } export def delta [list1, list2] { $list1 | zip $list2 | each {|r| $r.0 - $r.1 } } # compares a report.csv with a baseline export def "compare daily" [] { let report = ($in) let f1_report = $report | get "F1 Score" let f1_latest = (latest-daily | get "F1 Score") let f1_delta = (delta $f1_report $f1_latest) let f1_delta_row = ($f1_delta | wrap "F1 Score Delta") $report | merge $f1_delta_row }