Integrate AutoGP transforms for enhanced composition and forecasting pipeline#34
Draft
Integrate AutoGP transforms for enhanced composition and forecasting pipeline#34
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #34 +/- ##
=======================================
Coverage 93.02% 93.02%
=======================================
Files 5 5
Lines 86 86
=======================================
Hits 80 80
Misses 6 6 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Co-authored-by: SamuelBrand1 <48288458+SamuelBrand1@users.noreply.github.com>
Co-authored-by: SamuelBrand1 <48288458+SamuelBrand1@users.noreply.github.com>
…mples Co-authored-by: SamuelBrand1 <48288458+SamuelBrand1@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Exploring extending
Integrate AutoGP transforms for enhanced composition and forecasting pipeline
Sep 23, 2025
AutoGP transformations
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR extends NowcastAutoGP's transformation system to integrate with AutoGP's native transform infrastructure, enabling sophisticated transform composition while maintaining full backward compatibility.
Key Changes
New AutoGP-Compatible Transform Structs
PercentageTransform{F}: Logit-based transformation for 0-100 bounded data (e.g., vaccination rates, test positivity)PositiveTransform{F}: Log transformation with offset handling for positive epidemiological dataBoxCoxTransform{F,B}: Auto-fitted Box-Cox transformation with robust inverse handlingEnhanced API
get_autogp_transform(): Creates AutoGP.Transforms.Transform objects compatible with AutoGP's composition systemautogp_inverse_transform(): Utility function for seamless forecasting pipeline integrationTransform Composition Capabilities
Forecasting Integration
Benefits
Enhanced Composition: Native support for AutoGP's transform chains enables more sophisticated data preprocessing for epidemiological time series.
Better Integration: Direct compatibility with AutoGP's prediction pipeline reduces friction and potential inconsistencies.
Type Safety: Parameterized structs with full AutoGP interface compliance ensure invertibility guarantees.
Backward Compatibility: The existing
get_transformations()function remains unchanged - all current code continues to work without modification.Validation
Example Use Cases
This enhancement particularly benefits epidemiological nowcasting scenarios where:
The implementation maintains the familiar NowcastAutoGP API while unlocking AutoGP's powerful transform composition system for more sophisticated epidemiological data preprocessing pipelines.
Fixes #33.
Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
https://api.github.com/repos/FluxML/MacroTools.jl/tarball/1e0228a030642014fe5cfe68c2c0a818f9e3f522julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/GunnarFarneback/RegistryInstances.jl/tarball/ffd19052caf598b8653b99404058fce14828be51julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaArrays/FillArrays.jl/tarball/173e4d8f14230a7523ae11b9a3fa9edb3e0efd78julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaArrays/StaticArrays.jl/tarball/b8693004b385c842357406e3af647701fe783f98julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaArrays/StaticArraysCore.jl/tarball/192954ef1208c7019899fbf8049e717f92959682julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaBinaryWrappers/Expat_jll.jl/tarball/7bb1361afdb33c7f2b085aa49ea8fe1b0fb14e58julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaBinaryWrappers/Git_LFS_jll.jl/tarball/bb8471f313ed941f299aa53d32a94ab3bee08844julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaBinaryWrappers/Git_jll.jl/tarball/e2aef26f7d273f1e5b1daba56837c47b49b4388fjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaBinaryWrappers/Libiconv_jll.jl/tarball/be484f5c92fad0bd8acfef35fe017900b0b73809julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaBinaryWrappers/NLopt_jll.jl/tarball/b0154a615d5b2b6cf7a2501123b793577d0b9950julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaBinaryWrappers/OpenSSH_jll.jl/tarball/1f2f0911e1c02f28a390bb720f97f3349c4dcefbjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaBinaryWrappers/OpenSSL_jll.jl/tarball/2ae7d4ddec2e13ad3bddf5c0796f7547cf682391julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaBinaryWrappers/OpenSpecFun_jll.jl/tarball/1346c9208249809840c91b26703912dff463d335julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaBinaryWrappers/Rmath_jll.jl/tarball/58cdd8fb2201a6267e1db87ff148dd6c1dbd8ad8julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaCollections/AbstractTrees.jl/tarball/2d9c9a55f9c93e8887ad391fbae72f8ef55e1177julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaCollections/DataStructures.jl/tarball/4e1fe97fdaed23e9dc21d4d664bea76b65fc50a0julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaCollections/FunctionalCollections.jl/tarball/04cb9cfaa6ba5311973994fe3496ddec19b6292ajulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaCollections/OrderedCollections.jl/tarball/05868e21324cede2207c6f0f466b4bfef6d5e7eejulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaCollections/SortingAlgorithms.jl/tarball/64d974c2e6fdf07f8155b5b2ca2ffa9069b608d9julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaData/CSV.jl/tarball/deddd8725e5e1cc49ee205a1964256043720a6c3julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaData/DataAPI.jl/tarball/abe83f3a2f1b857aac70ef8b269080af17764bbejulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaData/DataFrames.jl/tarball/c967271c27a95160e30432e011b58f42cd7501b5julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaData/InvertedIndices.jl/tarball/6da3c4316095de0f5ee2ebd875df8721e7e0bdbejulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaData/Missings.jl/tarball/ec4f7fbeab05d7747bdf98eb74d130a2a2ed298djulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaData/Parsers.jl/tarball/7d2f8f21da5db6a806faf7b9b292296da42b2810julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaData/PooledArrays.jl/tarball/36d8b4b899628fb92c2749eb488d884a926614d3julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaData/SentinelArrays.jl/tarball/712fb0231ee6f9120e005ccd56297abbc053e7e0julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaData/Tables.jl/tarball/f2c1efbc8f3a609aadf318094f8fc5204bdaf344julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaData/WeakRefStrings.jl/tarball/b1be2855ed9ed8eac54e5caff2afcdb442d52c23julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaDiff/ChainRulesCore.jl/tarball/e4c6a16e77171a5f5e25e9646617ab1c276c5607julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaDiff/DiffResults.jl/tarball/782dd5f4561f5d267313f23853baaaa4c52ea621julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaDiff/DiffRules.jl/tarball/23163d55f885173722d1e4cf0f6110cdbaf7e272julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaDiff/ForwardDiff.jl/tarball/afb7c51ac63e40708a3071f80f5e84a752299d4fjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaDiff/ReverseDiff.jl/tarball/3ab8eee3620451b09f0272c271875b4bc02146d9julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaDocs/ANSIColoredPrinters.jl/tarball/574baf8110975760d391c710b6341da1afa48d8cjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaDocs/DocStringExtensions.jl/tarball/7442a5dfe1ebb773c29cc2962a8980f47221d76cjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaDocs/Documenter.jl/tarball/47ffb8f27ffc01e2e57e7ae5365ae5ceef87b03djulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaDocs/IOCapture.jl/tarball/b6d6bfdd7ce25b0f9b2f6b3dd56b2673a66c8770julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaDocs/MarkdownAST.jl/tarball/465a70f0fc7d443a00dcdc3267a497397b8a3899julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaIO/CodecZlib.jl/tarball/962834c22b66e32aa10f7611c08c8ca4e20749a9julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaIO/JSON.jl/tarball/31e996f0a15c7b280ba9f76636b3ff9e2ae58c9ajulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaIO/TranscodingStreams.jl/tarball/0c45878dcfdcfa8480052b6ab162cdd138781742julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaInterop/CEnum.jl/tarball/389ad5c84de1ae7cf0e28e381131c98ea87d54fcjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaLang/Compat.jl/tarball/0037835448781bb46feb39866934e243886d756ajulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaLang/FunctionWrappers.jl/tarball/d62485945ce5ae9c0c48f124a84998d755bae00ejulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaLang/PrecompileTools.jl/tarball/5aa36f7049a63a1528fe8f7c3f2113413ffd4e1fjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaMath/HypergeometricFunctions.jl/tarball/68c173f4f449de5b438ee67ed0c9c748dc31a2ecjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaMath/IrrationalConstants.jl/tarball/e2222959fbc6c19554dc15174c81bf7bf3aa691cjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaMath/NaNMath.jl/tarball/9b8215b1ee9e78a293f99797cd31375471b2bcaejulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaMath/QuadGK.jl/tarball/9da16da70037ba9d701192e27befedefb91ec284julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaMath/SpecialFunctions.jl/tarball/41852b8679f78c8d8961eeadc8f62cef861a52e3julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaPackaging/JLLWrappers.jl/tarball/0533e564aae234aff59ab625543145446d8b6ec2julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaPackaging/Preferences.jl/tarball/0f27480397253da18fe2c12a4ba4eb9eb208bf3djulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaServices/Match.jl/tarball/1d9bc5c1a6e7ee24effb93f175c9342f9154d97fjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaServices/WorkerUtilities.jl/tarball/cd1659ba0d57b71a464a29e64dbc67cfe83d54e7julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaStats/Distributions.jl/tarball/3e6d038b77f22791b8e3472b7c633acea1ecac06julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaStats/LogExpFunctions.jl/tarball/13ca9e2586b89836fd20cccf56e57e2b9ae7f38fjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaStats/PDMats.jl/tarball/f07c06228a1c670ae4c87d1276b92c7c597fdda0julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaStats/Rmath.jl/tarball/852bd0f55565a9e973fcfee83a84413270224dc4julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaStats/Statistics.jl/tarball/ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaStats/StatsAPI.jl/tarball/9d72a13a3f4dd3795a195ac5a44d7d6ff5f552ffjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaStats/StatsBase.jl/tarball/2c962245732371acd51700dbb268af311bddd719julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaStats/StatsFuns.jl/tarball/8e45cecc66f3b42633b8ce14d431e8e57a3e242ejulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaStrings/InlineStrings.jl/tarball/8f3d257792a522b4601c24a577954b0a8cd7334djulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaStrings/LaTeXStrings.jl/tarball/dda21b8cbd6a6c40d9d02a73230f9d70fed6918cjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaTesting/Aqua.jl/tarball/d57fd255a8932b6509baf43284c416fc44d0b903julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/JuliaVersionControl/Git.jl/tarball/824a1890086880696fc908fe12a17bcf61738bd8julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/KristofferC/Crayons.jl/tarball/249fe38abf76d48563e2f4556bebd215aa317e15julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/KristofferC/LazilyInitializedFields.jl/tarball/0f2da712350b020bc3957f269c9caad516383ee0julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/LilithHafner/AliasTables.jl/tarball/9876e1e164b144ca45e9e3198d0b689cadfed9ffjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/LilithHafner/PtrArrays.jl/tarball/1d36ef11a9aaf1e8b74dacc6a731dd1de8fd493djulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/julia-vscode/TestItemRunner.jl/tarball/068c8f3e8d2f3b5948a85f11412f047cbab4e6c0julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/julia-vscode/TestItems.jl/tarball/42fd9023fef18b9b78c8343a4e2f3813ffbcefcbjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/jump-dev/NLopt.jl/tarball/624785b15005a0e0f4e462b27ee745dbe5941863julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/mauro3/Parameters.jl/tarball/34c0e9ad262e5f7fc75b10a9952ca7692cfc5fbejulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/mauro3/UnPack.jl/tarball/387c1f73762231e86e0c9c5443ce3b4a0a9a0c2bjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/palday/BoxCox.jl/tarball/41eef1cbedda3078b1d042bc23c91c64ff4ad21bjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/probcomp/Gen.jl/tarball/2c87c7885d3ea7637847e3b7682abefde6eae45ejulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/probsys/AutoGP.jl/tarball/ea4a16adec5957f593821376a42e66b2265fe587julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/queryverse/DataValueInterfaces.jl/tarball/bfc1187b79289637fa0ef6d4436ebdfe6905cbd6julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/queryverse/IteratorInterfaceExtensions.jl/tarball/a3f24677c21f5bbe9d2a714f95dcd58337fb2856julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/queryverse/TableTraits.jl/tarball/c06b2f539df1c6efa794486abfb6ed2022561a39julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/rdeits/CommonSubexpressions.jl/tarball/cda2cfaebb4be89c9084adaca7dd7333369715c5julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/rofinn/FilePathsBase.jl/tarball/3bab2c5aa25e7840a4b065805c0cdfc01f3068d2julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/ronisbr/PrettyTables.jl/tarball/60f23271568238b236899d00fc290e43d1f2658fjulia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/ronisbr/StringManipulation.jl/tarball/725421ae8e530ec29bcbdddbe91ff8053421d023julia --project -e using Pkg; Pkg.instantiate()(http block)https://api.github.com/repos/simonster/Reexport.jl/tarball/45e428421666073eab6f2da5c9d310d99bb12f9bjulia --project -e using Pkg; Pkg.instantiate()(http block)pkg.julialang.orgjulia --project -e using Pkg; Pkg.status()(dns block)julia --project -e using Pkg; Pkg.instantiate()(dns block)julia --project -e using Pkg; Pkg.add("BoxCox")(dns block)If you need me to access, download, or install something from one of these locations, you can either:
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.