nu-modules/regression.nu

46 lines
1.4 KiB
Plaintext

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
}