diff --git a/R/as_curve_params.R b/R/as_curve_params.R index ed776812..3dd8f478 100644 --- a/R/as_curve_params.R +++ b/R/as_curve_params.R @@ -12,7 +12,6 @@ #' as_curve_params() #' #' print(curve_data) - as_curve_params <- function(data, antigen_isos = NULL) { curve_data <- data %>% @@ -23,7 +22,10 @@ as_curve_params <- function(data, antigen_isos = NULL) { # check if object is curve (with columns) if (!all(is.element(curve_cols, curve_data %>% names()))) { - cli::cli_abort("Please provide curve data") + cli::cli_abort( + class = "not curve_params", + message = c("Please provide curve data.") # TO DO: 'or check variable names' (message) + ) } # assign curve class diff --git a/tests/testthat/_snaps/as_curve_params.md b/tests/testthat/_snaps/as_curve_params.md new file mode 100644 index 00000000..5d1b1bd5 --- /dev/null +++ b/tests/testthat/_snaps/as_curve_params.md @@ -0,0 +1,124 @@ +# `as_curve_params()` produces expected results + + Code + test_data + Output + # A tibble: 100 x 7 + antigen_iso iter y0 y1 t1 alpha r + + 1 HlyE_IgA 1 2.48 63.5 9.52 0.000581 1.75 + 2 HlyE_IgG 1 3.04 164. 6.55 0.00457 1.17 + 3 LPS_IgA 1 0.748 103. 4.98 0.00308 1.58 + 4 LPS_IgG 1 0.941 320. 6.14 0.00166 1.41 + 5 Vi_IgG 1 8.46 4348. 3.07 0.0000340 1.06 + 6 HlyE_IgA 2 3.86 288. 1.27 0.000459 2.66 + 7 HlyE_IgG 2 1.82 154. 10.8 0.000921 1.30 + 8 LPS_IgA 2 1.76 852. 2.49 0.000126 2.91 + 9 LPS_IgG 2 0.434 20.6 4.29 0.00122 1.37 + 10 Vi_IgG 2 18.8 345. 3.48 0.000142 1.02 + # i 90 more rows + +--- + + WAoAAAACAAQEAQACAwAAAAMTAAAABwAAAw0AAABkAAAAAQAAAAIAAAADAAAABAAAAAUAAAAB + AAAAAgAAAAMAAAAEAAAABQAAAAEAAAACAAAAAwAAAAQAAAAFAAAAAQAAAAIAAAADAAAABAAA + AAUAAAABAAAAAgAAAAMAAAAEAAAABQAAAAEAAAACAAAAAwAAAAQAAAAFAAAAAQAAAAIAAAAD + AAAABAAAAAUAAAABAAAAAgAAAAMAAAAEAAAABQAAAAEAAAACAAAAAwAAAAQAAAAFAAAAAQAA + AAIAAAADAAAABAAAAAUAAAABAAAAAgAAAAMAAAAEAAAABQAAAAEAAAACAAAAAwAAAAQAAAAF + AAAAAQAAAAIAAAADAAAABAAAAAUAAAABAAAAAgAAAAMAAAAEAAAABQAAAAEAAAACAAAAAwAA + AAQAAAAFAAAAAQAAAAIAAAADAAAABAAAAAUAAAABAAAAAgAAAAMAAAAEAAAABQAAAAEAAAAC + AAAAAwAAAAQAAAAFAAAAAQAAAAIAAAADAAAABAAAAAUAAAABAAAAAgAAAAMAAAAEAAAABQAA + BAIAAAABAAQACQAAAAZsZXZlbHMAAAAQAAAABQAEAAkAAAAISGx5RV9JZ0EABAAJAAAACEhs + eUVfSWdHAAQACQAAAAdMUFNfSWdBAAQACQAAAAdMUFNfSWdHAAQACQAAAAZWaV9JZ0cAAAQC + AAAAAQAEAAkAAAAFY2xhc3MAAAAQAAAAAQAEAAkAAAAGZmFjdG9yAAAA/gAAAA0AAABkAAAA + AQAAAAEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAMAAAADAAAAAwAAAAMA + AAADAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAAAABQAAAAYAAAAGAAAA + BgAAAAYAAAAGAAAABwAAAAcAAAAHAAAABwAAAAcAAAAIAAAACAAAAAgAAAAIAAAACAAAAAkA + AAAJAAAACQAAAAkAAAAJAAAACgAAAAoAAAAKAAAACgAAAAoAAAALAAAACwAAAAsAAAALAAAA + CwAAAAwAAAAMAAAADAAAAAwAAAAMAAAADQAAAA0AAAANAAAADQAAAA0AAAAOAAAADgAAAA4A + AAAOAAAADgAAAA8AAAAPAAAADwAAAA8AAAAPAAAAEAAAABAAAAAQAAAAEAAAABAAAAARAAAA + EQAAABEAAAARAAAAEQAAABIAAAASAAAAEgAAABIAAAASAAAAEwAAABMAAAATAAAAEwAAABMA + AAAUAAAAFAAAABQAAAAUAAAAFAAAAA4AAABkQAPbrSq7F3VACEq3srmKSz/n8U8uT4ipP+4Y + nl0cvO1AIOz0BhrK70AO2d/xG81iP/0T5l3z/6c//CXy22hjDz/bxOe54uABQDLV3yWd7fZA + AA0fk2VwbEATv+c9QnB7P/j5Cjjinq1AFsEaIwFIW0A7vTBCC2n8QAJZd+N7rig/9flr6slZ + wT/2/qGYs2B2P+POdSS6PxU/9ul+vD9Cnz/qHa5S+zJuP/rG1SMYivw/5fqPG7/PiD/kukOp + 9eFpP+h5OOe5StpAEgADEiX0rUAAt891tbAFP+T0oi/CV/8/8y+dijYzpkAbUR43F0LVP+6N + nhE/sktADUFwBi9wu0AMgA3sV4+yQCEL6febJaFAIVMkBqAWHUABeMPAC5RHP/kSrReFMpI/ + /orEY3YdyUABp+K9nAWqQEgdbrCNfdlAWBwnS7JPL0ARacK1BLW6P/5pACoRAlw/4Q7CSKgX + NUBAUbedszUlQAp5iWCm3upAAIOCD+T5hj/RxpUfWW99P/g17uisRLNAcVX0NKQe9T/X0V/X + ToP6P/NoETlu0ec/5AST0jxhtUAj9rcUQdbmQC2k/w8ZoO5ACGTkH9ODJUAFOwBCd1cgQABx + 8g2mScVALnsWHXN8ZkAdLZAvYcLWP+oNdg1gHfc/+2/U5sqtoT/qtcCXh5jGP+KYYMHwKTA/ + /h9ygoURxT/7ufht3EEaQAg4tZwuC7BAC6UGjhBf7D/1C8AKehCDQCTsfgnGdyI/1L/FTf+K + W0ABmRSMEk+YP/Pcy78A3dtALKp2Y4hLIkAHzBrv4didQA9a8U2qQLg/9LhdMn71/D/69TfB + RHbUP+5luUQV1yFAAY3AMIBp8EAHu71Oqb+4P/X8s76tm5RAB6j+knqHMUAOTf5J0OtjQDdU + PZdsBxhAKV/SrFeASz/yReJS+cl+QAS5YFbG7JY/8lT+npcUoUAhkuJH8EA/P+RE3uGK4sc/ + 4dW/JtPe0T/yzzTPfJKfP/R0Z0Tq+JxAOfYL5vHdc0Av9Qpf1urJQA7SdEpL8U5AAA4Z91rH + Bz/n4HoTK/3mP+p6ezFcpsMAAAAOAAAAZEBPvZ8cWhGVQGR8j88UjJFAWcfNlONpsEBz+rS2 + CeFqQLD7/K7mEjdAcgKX0WJtVUBjNCAUq0f3QIqfQUqY6pRANJcoNZkyAUB1kT3uP9gMQHr9 + G+OcRHJAYe6SXP99pkBjVs4k9iIjQFt+l6E2e9tAmP8OjaljSUA+jWaabWPuQEqndHRrClpA + dR+0X7VgQ0BZOW2y1q+kQH/iSZgVF6RAZAfz5DItgkCBaHYdLtYxQD8VMrHVCBlAeXdIfAvr + 7UCWIjPS+g9OQIBmAJf+g/NAjel4yDqIE0BDldoaTMBFQGRrbAOzUjtAhOJehb3NrkA+xpRw + VCCRQIXHFd+G4n1AgH9i+dvkfkBRcW9ZCuqIQH6q87gfm/JARKrlYQhMPkBI2SCDyPSNQIIf + ZFEYWTBAVz0F4g4WD0ByX8c+b4aQQG8OgxIillxAccPRX3CQs0CBkWpMuj6cQEAICEmzDVpA + l03QrzfMH0Bz9CEho8JwQEuZQWZLC8VAED84lAhd5UBcf+Ix9spEQHhPX53dSlZAI7Y5UGly + U0Bhz3COpKDPQIf6UyjcPbBAeF5N0pYq5UCYblRoUoJuQE1I15WuJVBAX0afOVi4KUCL9ngv + yMkpQHSHFjM6QipAjJ75flnURkA3lACvTrOBQGNEUHfCsW9AIYjtsdRpV0BLC1QPvmPuQH93 + TC5Ico9AaGi08mW8D0CABXxifAodQFxasN9IlAlAYZ8pwLGQB0CAQoJbNXYyQC56fhfvSphA + dvrO8CLwWUAb1n6tG1ooQHbZuvlHZtlAgIzjDmRx+EBhUyGJ2VrfQFeDfOsqWflAXI8Mjpkt + qEBaxvwIpeFTQIa4cTV5ItlAMbNESzoUmEB6SFPoBEASQLKAgQqfBQZAd6f0eR5ef0Beiq22 + 49WhQEFQm9GqvkpAXUd1GXi1N0B/OgE0UBQLQGt6JdX2XJtAhS/uxYtaVkCE9kJEByRuQGF3 + 04doIRdApLmBjAgIhkBRIxR5leTrQIFFKGWaws1AdeY6t9Sou0BxjF7A0MEJQCBJDbEknbRA + XticHwj5fkCGUBhA1KBoAAAADgAAAGRAIwoFeopkjUAaMn7VrlehQBPpLOF8kL9AGI1hpFsz + Z0AIknT3ZUi0P/Q/KkJCvA9AJZLS+cQj3UAD8jdolPbSQBEqd90W8jNAC9ipvgsAYUAV3AZn + QsbyQCEsgKYGoFZAB/k7NHz4gz/xdW9X24GRQAZlxcieRbRAG2hfrvDNKkAmIBuI9AGEQAA9 + brtNLLpAFnTUuzhFQEAqVvZchTjFQBuSGr53p7xAHXVQjmaeAUAJtU8uOrSIQAdtJWc+l/1A + Nkrvc+usJT/3ka29+DZaQDftcxwRdr9AEWgci87rTj//Rl2EQ3bKQAn6+gUjSqxAMQk4sHU+ + FUASM5XsxjYdP/nV7dZt1FM/5d8myKowjT/9ov1Xfl5QQA/EyY0M2ZNAHSW5a5P/9UAERLE8 + +b4vP+4sLRdhs7c/4hJ5ZdSwcT/f1JnXR9vpQA+2fHcMGAZABWx/rz0MqUANU+Jg5Q8sP/li + 8fkFo8U/9Izzj+wXoEAf2mQJUNUfQAvLD3Ab+Vc/80uXvjUPgD/QnywaNihLQCZcENQhtGVA + JFuPggvasUAH8nvpMD0XP+j29rP/zQpAA2GNdFdujD/z/lqaoL7sQCLhGylunGJAA34BBMYp + 2D/f56iH4Kn4QBHACkoSm/RAIjpoIbaDkEAqLcEhwoxIQAh/7WncYEBAErkxFtYM4UAfymx/ + EoEbQBHcHizICmtAIP2frcfkkUABWSWqvtbIQAFeKf1tQd4/+7IEn44wW0AgSs5h66NMQDAJ + elpxqEhABIY3KyQgID/ckNntFamwQCqPbw5t6j5AFvG126UHz0AV1EB/Q7sSQAP7clRL00NA + APA3/nZd9UAhpmgEIWQVQChPS0KPnuZAO1nnhQ+DQUABKP4itzRiP/Cise78LCRABGtUlNEa + qUATe3V1lF2qQCNndqdqWlFAAGBL8Gha9kAB13ihkJGXQBUp4/WGO7lAJZA6oCZXgkA1G8x2 + SQJ6QAp2A2LroYNABD7aaIITCz/3YMIF/5tPQAyS+cTpTplAEc2xWij1DkADfdRPGlRVQAiJ + N3sPlfhAJvZAX1fPNAAAAA4AAABkP0MHr1xmZUE/crs2xyZbsD9pN9ekx4ZTP1tD0SR5cwI/ + Adgybi2iTj8+HNW411sKP04qW+Ci+6w/IIvvhl9teD9T7nWmyrbGPyKjIpNnAlg/MivcDv8c + TD9oDjTBBctjP0RHiZINVl0/GsPv7ICoQj8kvqZlQRiAP1TGgeKd1ow/KEF2PGNc3j8WINsM + yT1VP3G5yCztlvw+7gJA883ncD9W5k3QPSgnP0CP8XXTDV0/OKaDdb/fID9I6A6Ufa9PPulD + AQ0J08c/M0W9GmmFWD9Fc8QWiNHcP0pWFuGZLfA/QG6JnKyzmj8HFdbLb3TfP3LQT61w9Qc/ + TRZ35jcm8j7/7T44wv6WPyAmM55kfV4+/6TS7U8Z3T9jJ1WrFAlOPyuCFait7gk/Iq2YZWZz + BT9IIKxw9D6aPwL/ToN1DkM/CHwCCl2AKD9RCjoY1J4VPy7b7sKdTJQ/brwXY75MDz8WLkwb + coXvPz1hNc75GWg/KzCo2UkZfz+kw1bIXXmxP0YLFEZr9/U/I/eO1Afcnj9eNeVFkySqP0HA + vLAe7WY/cHvt2vOidT8SC4XX/sIKPvmQxFCH9No/JcBvoYKpXj9qZNddU+EXPxCTYq+PS4U/ + BH9TbsJmaj8B8sT/ZlYkP0pEYYgBlbg/UzNl2II39D9n07xy+tEOP2IF9Jrujyc/A6kDDS5n + uj9hYynYP3MiP1ABxOD2Waw/GUifdEpRtD9V9QR5Z7u+Pw99knnn2ck/YOQFGzlfNz85NCxs + DBl8P1afczO0AQ0/Bs2X3tYDzj7ss+NjgQRfP0ERl9AIbzw/UH2ixpLlQT864g2mF6s9P0JS + RMnSKew/ACCEtFwbrj9SG5YaQ32hPygDAB8ObKk/Hj5R+2UJpz8xCAWT28UJPwm7Irb6aTs/ + QIMH9L/4dz8t60BT+D5bPzn6/7glpZo/PmRlA1zK1D8lY+MFQ0lFP1/SiPsGYlY/JnqghiUx + VD8Useee3cVbP0PiUNjywXo/GewUdZpSOj84Ond0Pav2P1Et4WCrm3Q/QLVKgWSO7D9OGDuP + lfxdPuzHwRyWnyAAAAAOAAAAZD/7660CTjBKP/LJZUjqRN4/+VfCL+wHWD/2lqyxbnoSP/Dr + QaZCibRABU3WQctIVD/0wna70RIXQAdDQOfZ8W0/9es5MNT1TT/wYu7ukiO1P/nE1J10pGQ/ + 8hlTnkpwGUADC45Q/bk2QAVmxDmy2Mw/8IAcDugU7z/97BVUgBz6QAEIA/+5F6RAAWDnCg7S + ND/3+bboW8CMP/2VIr72Iw4/9lv2rENMlD//mVeQ1BVgP/r16aoZTSY/9UtySu1grD/4eMqB + k9xYQAIVa5FPVT8/+9UQj1UmHz/3LPl0XnvDP/Otoi8iMXU/8SdImGOTqD/4xjYRf4mYP/Sh + plI5A6NACZEprLXK6kAGkHgTsaDyP/D/5bUG5KA/96JJtJsJlD/5vTg3xrp5QAMDwoLWNYJA + A7DAxhmKbj/wSov2clvTQCD+JUlAtYw/86VWO0YjfUAB/KmbTtjWP/Ks/ccmkow/8KEdWRq6 + CT/7/SNxmbyvQAC5X7i0r1w/+HmX+NjUTD/8YJzgE32PP/AKkHn2b4E/9AZCenC0nD/6XfqI + Kp0+QAB60/AQ8kNAA1iYILFq0j/xROShYielP/4N64IP3EM/8rNnwIwMeUAFtv0h/XA8QAVh + HSQuvuU/8jCwWkw8jT/0YiHrJW9eP/bCOq0hI0Y//c535Mxvqj/0x0xpmlEHP/ts/s6k0yM/ + +blbrLZXWj/zlCoqqaWZQAWSWsCyVkY/94Oaz2HMST/wzTPH2NwhP/Iq0NhEYFQ/9z7FNaSi + /j/+QH3pPRWGQBNKuwuhMck/8/QqDh+ZuD/9ZfKAQRPaP/YoWFMfEglAAqaXA6A5Qz/4dJZx + IGCwP/ZccM0T1sY/9VnuhCymUEABvqpnN0tEQAWUjQ2bcdM/+E24fmQLxj/winainbFvQAcH + QhFvIeZAB6WqVyowCkABzoJsYoXSP/lox/vSuBo/84fVm8S5ID/2C0Vv2A9xP/yabpid0npA + AkiF5Du5qT/373K2lK7oP/By7+5oG4xAC2bhEJpDoz/zdkYlYLLPQABjLSzXpMg/9kV4DGLW + bz//mn9BoV6WAAAEAgAAAv8AAAAQAAAABAAEAAkAAAAMY3VydmVfcGFyYW1zAAQACQAAAAZ0 + YmxfZGYABAAJAAAAA3RibAAEAAkAAAAKZGF0YS5mcmFtZQAABAIAAAABAAQACQAAAAlyb3cu + bmFtZXMAAAANAAAAAoAAAAD///+cAAAEAgAAAAEABAAJAAAABW5hbWVzAAAAEAAAAAcABAAJ + AAAAC2FudGlnZW5faXNvAAQACQAAAARpdGVyAAQACQAAAAJ5MAAEAAkAAAACeTEABAAJAAAA + AnQxAAQACQAAAAVhbHBoYQAEAAkAAAABcgAABAIAAAABAAQACQAAAAxhbnRpZ2VuX2lzb3MA + AAMNAAAABQAAAAEAAAACAAAAAwAAAAQAAAAFAAAEAgAAAf8AAAAQAAAABQAEAAkAAAAISGx5 + RV9JZ0EABAAJAAAACEhseUVfSWdHAAQACQAAAAdMUFNfSWdBAAQACQAAAAdMUFNfSWdHAAQA + CQAAAAZWaV9JZ0cAAAQCAAAC/wAAABAAAAABAAQACQAAAAZmYWN0b3IAAAD+AAAA/g== + diff --git a/tests/testthat/test-as_curve_params.R b/tests/testthat/test-as_curve_params.R new file mode 100644 index 00000000..bf095ef9 --- /dev/null +++ b/tests/testthat/test-as_curve_params.R @@ -0,0 +1,27 @@ +test_that("`as_curve_params()` produces an error when non-curve data is provided", { + library(magrittr) + expect_error( + object = curve_data <- + "https://osf.io/download//n6cp3/" %>% # pop data + readr::read_rds() %>% + as_curve_params(), + class = "not curve_params" + ) +}) + +test_that("`as_curve_params()` produces expected results", { + library(dplyr) + test_data <- "https://osf.io/download/rtw5k/" %>% # curve data + readr::read_rds() %>% + slice_head(n = 100) %>% + as_curve_params() + + expect_snapshot(test_data) + + expect_snapshot_value( + x = test_data, + style = "serialize" + ) + + +})