diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 75d471a..d55087a 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -23,7 +23,7 @@ jobs: fail-fast: false matrix: version: - - '1.11' + - '1.11.0-rc1' os: - ubuntu-latest - windows-latest @@ -49,7 +49,7 @@ jobs: - uses: actions/checkout@v4 - uses: julia-actions/setup-julia@v2 with: - version: '1.11' + version: '1.11.0-rc1' - uses: julia-actions/cache@v2 - name: Configure doc environment shell: julia --project=docs --color=yes {0} diff --git a/Project.toml b/Project.toml index 4dc63bb..032222d 100644 --- a/Project.toml +++ b/Project.toml @@ -3,5 +3,13 @@ uuid = "03019ade-4524-4ecd-af79-46d4f04a1b56" authors = ["Aaron Kaw and contributors"] version = "1.0.0-DEV" +[deps] +IntervalArithmetic = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" +NaNMath = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" + [compat] +IntervalArithmetic = "0.22.14" +NaNMath = "1.0.2" +Symbolics = "5.34.0" julia = "1.10" diff --git a/docs/make.jl b/docs/make.jl index 16cc233..e24cfa0 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -1,6 +1,35 @@ using OceanSonar using Documenter +sidebar_title(path::String) = if isdir(path) + basename(path)[4:end] +elseif isfile(path) + basename(path)[4:end-3] +else + error("What even is $path?") +end |> OceanSonar.titlecase + +src_dir = joinpath(@__DIR__, "src") + +function populate_pages(current_path) + if isfile(current_path) + current_path[length(src_dir)+2 : end] + elseif isdir(current_path) + [ + sidebar_title(subpath) => populate_pages(joinpath(current_path, subpath)) + for subpath in readdir(current_path, join = true, sort = true) + if !contains(subpath, "index.md") + ] + else + error("What even is $current_path?") + end +end + +pages=[ + "Home" => "index.md", + populate_pages(joinpath(@__DIR__, "src"))... +] + DocMeta.setdocmeta!(OceanSonar, :DocTestSetup, :(using OceanSonar); recursive=true) makedocs(; @@ -10,11 +39,10 @@ makedocs(; format=Documenter.HTML(; canonical="https://kapple19.github.io/OceanSonar.jl", edit_link="main", + collapselevel = 1, assets=String[], ), - pages=[ - "Home" => "index.md", - ], + pages=pages, ) deploydocs(; diff --git a/docs/src/01_new_users_introduction.md b/docs/src/01_new_users_introduction.md new file mode 100644 index 0000000..051309c --- /dev/null +++ b/docs/src/01_new_users_introduction.md @@ -0,0 +1,18 @@ +# New Users Introduction + +"New" could apply to users as some combination of: + +```@contents +Pages = ["01_new_users_introduction.md"] +Depth = 2:2 +``` + +of which this page addresses all three, linked in the above list. + +## New to the Field of Ocean Sonar + +## New to Julia Programming + +## New to Scientific Machine Learning + +## New to this Package diff --git a/docs/src/04_ocean_acoustics/00_introduction.md b/docs/src/04_ocean_acoustics/00_introduction.md new file mode 100644 index 0000000..3f14850 --- /dev/null +++ b/docs/src/04_ocean_acoustics/00_introduction.md @@ -0,0 +1 @@ +# Ocean Acoustics diff --git a/docs/src/04_ocean_acoustics/01_tracing/01_ray_tracing.md b/docs/src/04_ocean_acoustics/01_tracing/01_ray_tracing.md new file mode 100644 index 0000000..04c7907 --- /dev/null +++ b/docs/src/04_ocean_acoustics/01_tracing/01_ray_tracing.md @@ -0,0 +1,5 @@ +# Ray Tracing + +## Literature Fidelity + +## References diff --git a/docs/src/04_ocean_acoustics/01_tracing/02_beam_tracing.md b/docs/src/04_ocean_acoustics/01_tracing/02_beam_tracing.md new file mode 100644 index 0000000..0599e4a --- /dev/null +++ b/docs/src/04_ocean_acoustics/01_tracing/02_beam_tracing.md @@ -0,0 +1 @@ +# Beam Tracing diff --git a/docs/src/04_ocean_acoustics/01_tracing/03_pressure_field.md b/docs/src/04_ocean_acoustics/01_tracing/03_pressure_field.md new file mode 100644 index 0000000..b6b8aa9 --- /dev/null +++ b/docs/src/04_ocean_acoustics/01_tracing/03_pressure_field.md @@ -0,0 +1 @@ +# Pressure Field diff --git a/readme.md b/readme.md index 88096a9..f97b414 100644 --- a/readme.md +++ b/readme.md @@ -8,3 +8,31 @@ ## Citing See [`citation.bib`](CITATION.bib) for the relevant reference(s). + +## Roadmap + +Usage Features: + +* Ocean sonar related environmental metrics (ocean sound speed, life noise, metric conversions, etc). +* Acoustic propagation models with modular components (beam types, coherence, etc). +* The sonar equation and calculation of its many terms. +* Detection performance metrics applied to the signal-to-noise ratio. +* Acausal modelling of the sonar equation and detection algorithms. +* Easy and interactive visualisations of all of the above. +* Graphical user interface for streamlining usage and accessibility. + +Implementation Features: + +* Model name-based dispatch and handling avoids boilerplate and enables user extensibility. +* Modularisation of model components enables easy comparisons and the design of an algorithm for default best choices based on inputs ala `solve` from `DifferentialEquations.jl`. +* Interpolation methods built into the implementations to further enable user extensibility. +* Functor type system keeps external functions safe from this package's implementation design (e.g. `listmodels` will only work on `OceanSonar.AbstractModellingType` types and objects). +* Acausal modelling enabling the single implementation to flexibly apply for declaring different components of the sonar equation as the unknown to compute for. + +## Credits + +TODO. + +## References + +TODO. diff --git a/src/01_preliminary/01_general/01_auxiliary_functions.jl b/src/01_preliminary/01_general/01_auxiliary_functions.jl new file mode 100644 index 0000000..72d629d --- /dev/null +++ b/src/01_preliminary/01_general/01_auxiliary_functions.jl @@ -0,0 +1,35 @@ +export uniquesort! +export efficient_sampling +export output_extrema + +const uniquesort! = unique! ∘ sort! + +const cossin = reverse ∘ sincos +const nan_cossin = reverse ∘ nan_sincos +const cossind = reverse ∘ sincosd +const magang(z::Number) = (abs(z), angle(z)) + +function extract_all_underscored_alphanumeric_bodies(text::AbstractString) + idxs = findall(r"([a-z]|[A-Z]|[0-9]|_)+", text) + return getindex.(text, idxs) +end + +function extract_first_underscored_alphanumeric_bodies(text::AbstractString) + return extract_all_underscored_alphanumeric_bodies(text)[1] +end + +function extract_last_underscored_alphanumeric_bodies(text::AbstractString) + return extract_all_underscored_alphanumeric_bodies(text)[end] +end + +function efficient_sampling(f::Function, x1::Real, xN::Real, N::Integer) + # WIP, to be replaced + range(x1, xN, N) +end + +# function efficient_sampling(f::Function, x1::Real, xN::Real, θmin::Real) +# # WIP +# end + +output_extrema(f::Function, ntv::Interval) = (:lo, :hi) .|> bnd -> getproperty(f(ntv).bareinterval, bnd) +output_extrema(f::Function, x_lo::Real, x_hi::Real) = output_extrema(f, interval(x_lo, x_hi)) diff --git a/src/01_preliminary/01_general/02_flexible_math_functions.jl b/src/01_preliminary/01_general/02_flexible_math_functions.jl new file mode 100644 index 0000000..4d74c79 --- /dev/null +++ b/src/01_preliminary/01_general/02_flexible_math_functions.jl @@ -0,0 +1,19 @@ +export ocnson_sqrt + +num_fcn(fcn::Function, args::Num...) = Term(fcn, [args...]) |> wrap + +for op in (:sqrt, :cos, :sin, :cossin) + op_string = String(op) + ocnson_op = Symbol("ocnson_" * op_string) + nan_op = Symbol("nan_" * op_string) + eval( + quote + $ocnson_op(x::Real) = $nan_op(x) + $ocnson_op(x::Num) = $op(x) + $ocnson_op(x::Interval) = $op(x) + end + ) +end + +ocnson_hypot(args::Number...) = nan_hypot(args...) +ocnson_hypot(args::Union{<:Num, <:Interval}...) = hypot(args...) diff --git a/src/01_preliminary/01_general/02_string_cases.jl b/src/01_preliminary/01_general/02_string_cases.jl new file mode 100644 index 0000000..307defd --- /dev/null +++ b/src/01_preliminary/01_general/02_string_cases.jl @@ -0,0 +1,118 @@ +public stringcase +public titlecase +export snakecase +export kebabcase +export pascalcase + +""" +Storage of all words that need to keep their case as is stored here, +e.g. acronyms, articles, prepositions, coordinating conjunctions, etc. +""" +keepcases = [ + "NSW" + "the" + "a" + "to" +] |> uniquesort! + +delims = ( + snake = "_", + space = " ", + kebab = "-" +) + +_stringcasesep(::Val{C}) where C = delims[C] +_stringcasesep(::Val{:camel}) = "" +_stringcasesep(::Val{:Snake}) = _stringcasesep(:snake |> Val) +_stringcasesep(::Val{:Space}) = _stringcasesep(:space |> Val) +_stringcasesep(::Val{:Kebab}) = _stringcasesep(:kebab |> Val) +_stringcasesep(::Val{:Camel}) = _stringcasesep(:camel |> Val) +_stringcasesep(::Val{:pascal}) = _stringcasesep(:Camel |> Val) +_stringcasesep(::Val{:Pascal}) = _stringcasesep(:Camel |> Val) +_stringcasesep(::Val{:title}) = _stringcasesep(:Space |> Val) + +function _firstcap(::Val{C}, char::Char) where C + return if (C in (:pascal, :title)) || isuppercase(String(C)[1]) + uppercase(char) + else + lowercase(char) + end +end + +function _sepcap(::Val{C}, char::Char) where C + return if (C in (:pascal, :title, :camel)) || isuppercase(String(C)[1]) + uppercase(char) + else + lowercase(char) + end +end + +function _wordseparation(case::Val{C}, text::AbstractString) where C + text = text[1:end-1] * _sepcap(case, text[end]) +end + +function _caseconversions(::Val{C}, text::AbstractString; keepcases) where C + boolkeepcase = lowercase(text) .== lowercase.(keepcases) + iskeepcase = any(boolkeepcase) + keepcase = if iskeepcase + keepcases[boolkeepcase |> findall |> only] + else + "" + end + + iscamel = C in (:pascal, :Pascal, :camel, :Camel) + return if iskeepcase && (iscamel ? isuppercase(keepcase[1]) : true) + keepcase + elseif (C in (:pascal, :title, :camel)) || isuppercase(String(C)[1]) + uppercase(text[1]) * text[2:end] + else + text + end +end + +function stringcase(case::Val{C}, text::AbstractString; keepcases = keepcases) where C + tempsep = delims.snake + + # Convert camel word separations to snake separations + camel_regexes = [ + "[a-z][A-Z]" + "[0-9][A-Z]" + "[a-z][0-9]" + "[A-Z][0-9]" + ] .|> Regex + for camel_regex = camel_regexes + text = replace(text, + [ + text[idxs] => text[idxs[begin]] * tempsep * text[idxs[end]] + for idxs in findall(camel_regex, text, overlap = true) + ]... + ) + end + + text = lowercase(text) + + # Convert any delimiters to snake delimiter + text = replace(text, [sep => tempsep for sep in values(delims)]...) + + texts = split(text, tempsep) + + texts = [_caseconversions(case, text, keepcases = keepcases) for text in texts] + + text = join(texts, _stringcasesep(case)) + + text = _firstcap(case, text[1]) * text[2:end] + + return text +end + +stringcase(::Val{:Pascal}, text::AbstractString; keepcases = keepcases) = stringcase(:Camel |> Val, text; keepcases = keepcases) +stringcase(::Val{:pascal}, text::AbstractString; keepcases = keepcases) = stringcase(:Camel |> Val, text; keepcases = keepcases) +stringcase(::Val{:title}, text::AbstractString; keepcases = keepcases) = stringcase(:Space |> Val, text; keepcases = keepcases) + +stringcase(case::Symbol, text::AbstractString; keepcases = keepcases) = stringcase(case |> Val, text; keepcases = keepcases) +stringcase(case::AbstractString, text::AbstractString; keepcases = keepcases) = stringcase(case |> Symbol, text; keepcases = keepcases) + +titlecase(text::AbstractString; keepcases = keepcases) = stringcase(:Space |> Val, text; keepcases = keepcases) +snakecase(text::AbstractString; keepcases = keepcases) = stringcase(:snake |> Val, text; keepcases = keepcases) +kebabcase(text::AbstractString; keepcases = keepcases) = stringcase(:Kebab |> Val, text; keepcases = keepcases) +pascalcase(text::AbstractString; keepcases = keepcases) = stringcase(:Pascal |> Val, text; keepcases = keepcases) diff --git a/src/01_preliminary/02_modelling/01_model_naming.jl b/src/01_preliminary/02_modelling/01_model_naming.jl new file mode 100644 index 0000000..6d545d1 --- /dev/null +++ b/src/01_preliminary/02_modelling/01_model_naming.jl @@ -0,0 +1,7 @@ +export ModelName + +struct ModelName{m} end + +ModelName(m::Symbol) = ModelName(m |> String) + +ModelName(m::AbstractString) = ModelName{m |> snakecase |> Symbol}() diff --git a/src/01_preliminary/02_modelling/02_model_types.jl b/src/01_preliminary/02_modelling/02_model_types.jl new file mode 100644 index 0000000..6ee0d9b --- /dev/null +++ b/src/01_preliminary/02_modelling/02_model_types.jl @@ -0,0 +1,32 @@ +abstract type AbstractModellingType <: Function end +abstract type ModellingFunction <: AbstractModellingType end +abstract type ModellingFunctor <: AbstractModellingType end +abstract type ModellingFunctor2D <: ModellingFunctor end +abstract type ModellingFunctor3D <: ModellingFunctor end + +function (::Type{Fun})( + model::Union{Symbol, <:AbstractString}, args::Real...; kw... +) where {Fun <: ModellingFunction} + Fun(model |> ModelName, args...; kw...) +end + +function (::Type{Fct})(model::ModelName; pars...) where {Fct <: ModellingFunctor} + Fct(model, pars) +end + +macro implement_modelling_functor(super_type, name) + @eval begin + struct $name <: $super_type + model::ModelName + pars::Pairs + end + + function $name(model::Union{Symbol, <:AbstractString}, args...; pars...) + $name(model |> ModelName, args...; pars...) + end + + function (fct::$name)(args::Real...) + $name(fct.model, args...; fct.pars...) + end + end +end \ No newline at end of file diff --git a/src/01_preliminary/02_modelling/03_model_parsing.jl b/src/01_preliminary/02_modelling/03_model_parsing.jl new file mode 100644 index 0000000..4addb73 --- /dev/null +++ b/src/01_preliminary/02_modelling/03_model_parsing.jl @@ -0,0 +1,8 @@ +listmodels(modelling_function::AbstractModellingType) = [ + modelpretty(modelling_function, type()) + for type in [ + collect(m.sig.types)[2] for m in methods(modelling_function) + ] if type <: ModelName +] + +listmodels(fct::Fct) where {Fct<:ModellingFunctor} = String(Fct) \ No newline at end of file diff --git a/src/02_oceanography/volume/celerity.jl b/src/02_oceanography/volume/celerity.jl new file mode 100644 index 0000000..26dd6f7 --- /dev/null +++ b/src/02_oceanography/volume/celerity.jl @@ -0,0 +1,43 @@ +export ocean_celerity + +""" +``` +ocean_celerity(model, ...) +``` +""" +struct ocean_celerity <: ModellingFunction end + +""" +``` +ocean_celerity("Jensen", T::Real, S::Real, z::Real)::Real +``` +Equation 1.1 of Jensen, et al (2011). +""" +function ocean_celerity(::ModelName{:jensen}, T::Real, S::Real, z::Real) + c = 1449.2 + 4.6T - 0.055T^2 + 0.00029T^3 + (1.34 - 0.01T) * (S - 35) + 0.016z +end + +""" +``` +ocean_celerity("Del Grosso", T::Real, S::Real, P::Real) +``` +""" +function ocean_celerity(::ModelName{:del_grosso}, T::Real, S::Real, P::Real) + T² = T^2 + T³ = T^3 + P² = P^2 + P³ = P^3 + + V_T = 4.5721T − 4.4532e−2T² − 2.6045e−4T³ + 7.9851e−6T^4 + V_P = 1.60272e−1P + 1.0268e−5P² + 3.5216e−9P³ − 3.3603e−12P^4 + V_S = 1.39799(S − 35) + 1.69202e−3(S − 35)^2 + V_STP = (S − 35) * ( + −1.1244e−2T + 7.7711e−7T² + 7.7016e−5P − 1.2943e−7P² + 3.1580e−8P*T + 1.5790e−9P*T² + ) + P * ( + −1.8607e−4T + 7.4812e−6T² + 4.5283e−8T³ + ) + P² * ( + −2.5294e−7T + 1.8563e−9T² + ) + P³ * (−1.9646e−10T) + + V = 1449.14 + V_T + V_P + V_S + V_STP +end \ No newline at end of file diff --git a/src/03_acoustics/01_profiles/attenuation/atmosphere.jl b/src/03_acoustics/01_profiles/attenuation/atmosphere.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/03_acoustics/01_profiles/attenuation/ocean.jl b/src/03_acoustics/01_profiles/attenuation/ocean.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/03_acoustics/01_profiles/attenuation/seabed/compressional.jl b/src/03_acoustics/01_profiles/attenuation/seabed/compressional.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/03_acoustics/01_profiles/attenuation/seabed/shear.jl b/src/03_acoustics/01_profiles/attenuation/seabed/shear.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/03_acoustics/01_profiles/boundary/altimetry.jl b/src/03_acoustics/01_profiles/boundary/altimetry.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/03_acoustics/01_profiles/boundary/bathymetry.jl b/src/03_acoustics/01_profiles/boundary/bathymetry.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/03_acoustics/01_profiles/celerity/atmosphere.jl b/src/03_acoustics/01_profiles/celerity/atmosphere.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/03_acoustics/01_profiles/celerity/ocean.jl b/src/03_acoustics/01_profiles/celerity/ocean.jl new file mode 100644 index 0000000..61817e7 --- /dev/null +++ b/src/03_acoustics/01_profiles/celerity/ocean.jl @@ -0,0 +1,16 @@ +export OceanCelerity + +@implement_modelling_functor ModellingFunctor3D OceanCelerity + +function OceanCelerity(::ModelName{:munk}, x::Real, y::Real, z::Real; ϵ::Real = 7.37e-3) + z̃ = 2(z/1300 - 1) + return 1500( + 1 + ϵ * ( + z̃ - 1 + exp(-z̃) + ) + ) +end + +function OceanCelerity(::ModelName{:square_index}, x::Real, y::Real, z::Real; c₀ = 1550.0) + c₀ / ocnson_sqrt(1 + 2.4z / c₀) +end \ No newline at end of file diff --git a/src/03_acoustics/01_profiles/celerity/seabed/compressional.jl b/src/03_acoustics/01_profiles/celerity/seabed/compressional.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/03_acoustics/01_profiles/celerity/seabed/shear.jl b/src/03_acoustics/01_profiles/celerity/seabed/shear.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/03_acoustics/01_profiles/density/atmosphere.jl b/src/03_acoustics/01_profiles/density/atmosphere.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/03_acoustics/01_profiles/density/ocean.jl b/src/03_acoustics/01_profiles/density/ocean.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/03_acoustics/01_profiles/density/seabed.jl b/src/03_acoustics/01_profiles/density/seabed.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/04_processing/01_sonar_types.jl b/src/04_processing/01_sonar_types.jl new file mode 100644 index 0000000..b4bec59 --- /dev/null +++ b/src/04_processing/01_sonar_types.jl @@ -0,0 +1,24 @@ +export SonarType +export BandType +export BandType +export BandType +export Passive +export Exposure +export Intercept +export Active +export Monostatic +export Bistatic +export NB +export BB + +abstract type BandType end +abstract type NB <: BandType end +abstract type BB <: BandType end + +abstract type SonarType{BS <: BandType} end +abstract type Passive{BS <: BandType} <: SonarType{BS} end +abstract type Exposure{BS <: BandType} <: Passive{BS} end +abstract type Intercept{BS <: BandType} <: Passive{BS} end +abstract type Active{BS <: BandType} <: SonarType{BS} end +abstract type Monostatic{BS <: BandType} <: Active{BS} end +abstract type Bistatic{BS <: BandType} <: Active{BS} end diff --git a/src/04_processing/01_windows.jl b/src/04_processing/01_windows.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/04_processing/02_sonar_terms.jl b/src/04_processing/02_sonar_terms.jl new file mode 100644 index 0000000..e052fa3 --- /dev/null +++ b/src/04_processing/02_sonar_terms.jl @@ -0,0 +1,17 @@ +export signal_to_noise_ratio + +function signal_to_noise_ratio(::Type{<:Passive}, SL, PL, NL, AG) + SNR = SL - PL - NL + AG +end + +function signal_to_noise_ratio(::Type{<:Monostatic}, SL, PL, TS, NL, RL, AG) + SNR = SL - 2PL + TS - (NL ⊕ RL) + AG +end + +function signal_to_noise_ratio(::Type{<:Bistatic}, SL, PLa, PLb, TS, NL, RL, AG) + SNR = SL - PLa - PLb + TS - (NL ⊕ RL) + AG +end + +sonar_terms = ( + SL = signal_to_noise_ratio, +) diff --git a/src/06_postliminary/visualisation.jl b/src/06_postliminary/visualisation.jl new file mode 100644 index 0000000..e69de29 diff --git a/src/OceanSonar.jl b/src/OceanSonar.jl index d04454c..933d6f7 100644 --- a/src/OceanSonar.jl +++ b/src/OceanSonar.jl @@ -1,5 +1,40 @@ module OceanSonar -# Write your package code here. +import Base: extrema, Pairs, show, String, Symbol + +using IntervalArithmetic: Interval, interval +using NaNMath: + cos as nan_cos, + hypot as nan_hypot, + sin as nan_sin, + sincos as nan_sincos, + sqrt as nan_sqrt +using Symbolics: Num, Symbolics, Term, wrap, @register_symbolic + +function include_subroots(current_path) + current_directory = if isfile(current_path) + dirname(current_path) + elseif isdir(current_path) + current_path + else + error("What is ", current_path, "?") + end + + for subpath in readdir(current_directory, join = true, sort = true) + if isdir(subpath) + include_subroots(subpath) + continue + elseif isfile(subpath) + endswith(subpath, "_.jl") && continue + subpath == current_path && continue + @debug "Including: $subpath" + subpath + else + error("What is ", subpath, "?") + end |> include + end +end + +include_subroots(@__FILE__) end diff --git a/test/00_quality/aqua.jl b/test/00_quality/aqua.jl new file mode 100644 index 0000000..e2f9071 --- /dev/null +++ b/test/00_quality/aqua.jl @@ -0,0 +1,6 @@ +using OceanSonar +using Aqua + +Aqua.test_all(OceanSonar, + ambiguities = (broken = true,) +) \ No newline at end of file diff --git a/test/00_quality/docstrings.jl b/test/00_quality/docstrings.jl new file mode 100644 index 0000000..f3f754c --- /dev/null +++ b/test/00_quality/docstrings.jl @@ -0,0 +1,6 @@ +using OceanSonar +using Test +using Base.Docs + +undocs = undocumented_names(OceanSonar, private = true) +@test_broken undocs |> isempty \ No newline at end of file diff --git a/test/00_quality/linting.jl b/test/00_quality/linting.jl new file mode 100644 index 0000000..cb29e54 --- /dev/null +++ b/test/00_quality/linting.jl @@ -0,0 +1,4 @@ +using OceanSonar +using JET + +JET.test_package(OceanSonar; target_defined_modules = true) \ No newline at end of file diff --git a/test/Manifest.toml b/test/Manifest.toml index 3414228..1cfeaa6 100644 --- a/test/Manifest.toml +++ b/test/Manifest.toml @@ -2,7 +2,62 @@ julia_version = "1.11.0-rc1" manifest_format = "2.0" -project_hash = "1f45826613cafa0faebd6512f3b1b9e3efe7eaaf" +project_hash = "69809b1bf2744b5129f101b943f5acc05c33c02f" + +[[deps.ADTypes]] +git-tree-sha1 = "aa4d425271a914d8c4af6ad9fccb6eb3aec662c7" +uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" +version = "1.6.1" + + [deps.ADTypes.extensions] + ADTypesChainRulesCoreExt = "ChainRulesCore" + ADTypesEnzymeCoreExt = "EnzymeCore" + + [deps.ADTypes.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + EnzymeCore = "f151be2c-9106-41f4-ab19-57ee4f262869" + +[[deps.AbstractTrees]] +git-tree-sha1 = "2d9c9a55f9c93e8887ad391fbae72f8ef55e1177" +uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" +version = "0.4.5" + +[[deps.Accessors]] +deps = ["CompositionsBase", "ConstructionBase", "Dates", "InverseFunctions", "LinearAlgebra", "MacroTools", "Markdown", "Test"] +git-tree-sha1 = "f61b15be1d76846c0ce31d3fcfac5380ae53db6a" +uuid = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" +version = "0.1.37" + + [deps.Accessors.extensions] + AccessorsAxisKeysExt = "AxisKeys" + AccessorsIntervalSetsExt = "IntervalSets" + AccessorsStaticArraysExt = "StaticArrays" + AccessorsStructArraysExt = "StructArrays" + AccessorsUnitfulExt = "Unitful" + + [deps.Accessors.weakdeps] + AxisKeys = "94b1ba4f-4ee9-5380-92f1-94cde586c3c5" + IntervalSets = "8197267c-284f-5f27-9208-e0e47529a953" + Requires = "ae029012-a4dd-5104-9daa-d747884805df" + StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" + StructArrays = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" + Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" + +[[deps.Adapt]] +deps = ["LinearAlgebra", "Requires"] +git-tree-sha1 = "6a55b747d1812e699320963ffde36f1ebdda4099" +uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" +version = "4.0.4" +weakdeps = ["StaticArrays"] + + [deps.Adapt.extensions] + AdaptStaticArraysExt = "StaticArrays" + +[[deps.AliasTables]] +deps = ["PtrArrays", "Random"] +git-tree-sha1 = "9876e1e164b144ca45e9e3198d0b689cadfed9ff" +uuid = "66dad0bd-aa9a-41b7-9441-69ab47430ed8" +version = "1.1.3" [[deps.Aqua]] deps = ["Compat", "Pkg", "Test"] @@ -14,6 +69,34 @@ version = "0.8.7" uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" version = "1.1.2" +[[deps.ArrayInterface]] +deps = ["Adapt", "LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "5c9b74c973181571deb6442d41e5c902e6b9f38e" +uuid = "4fba245c-0d91-5ea0-9b3e-6abc04ee57a9" +version = "7.12.0" + + [deps.ArrayInterface.extensions] + ArrayInterfaceBandedMatricesExt = "BandedMatrices" + ArrayInterfaceBlockBandedMatricesExt = "BlockBandedMatrices" + ArrayInterfaceCUDAExt = "CUDA" + ArrayInterfaceCUDSSExt = "CUDSS" + ArrayInterfaceChainRulesExt = "ChainRules" + ArrayInterfaceGPUArraysCoreExt = "GPUArraysCore" + ArrayInterfaceReverseDiffExt = "ReverseDiff" + ArrayInterfaceStaticArraysCoreExt = "StaticArraysCore" + ArrayInterfaceTrackerExt = "Tracker" + + [deps.ArrayInterface.weakdeps] + BandedMatrices = "aae01518-5342-5314-be14-df237901396f" + BlockBandedMatrices = "ffab5731-97b5-5995-9138-79e8c1846df0" + CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba" + CUDSS = "45b445bb-4962-46a0-9369-b4df9d0f772e" + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + GPUArraysCore = "46192b85-c4d5-4398-a991-12ede77f4527" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + StaticArraysCore = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + [[deps.Artifacts]] uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" version = "1.11.0" @@ -22,44 +105,311 @@ version = "1.11.0" uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" version = "1.11.0" +[[deps.Bijections]] +git-tree-sha1 = "95f5c7e2d177b7ba1a240b0518038b975d72a8c0" +uuid = "e2ed5e7c-b2de-5872-ae92-c73ca462fb04" +version = "0.1.7" + +[[deps.CRlibm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e329286945d0cfc04456972ea732551869af1cfc" +uuid = "4e9b3aee-d8a1-5a3d-ad8b-7d824db253f0" +version = "1.0.1+0" + +[[deps.Calculus]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" +uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" +version = "0.5.1" + +[[deps.ChainRulesCore]] +deps = ["Compat", "LinearAlgebra"] +git-tree-sha1 = "71acdbf594aab5bbb2cec89b208c41b4c411e49f" +uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" +version = "1.24.0" +weakdeps = ["SparseArrays"] + + [deps.ChainRulesCore.extensions] + ChainRulesCoreSparseArraysExt = "SparseArrays" + [[deps.CodeTracking]] deps = ["InteractiveUtils", "UUIDs"] git-tree-sha1 = "c0216e792f518b39b22212127d4a84dc31e4e386" uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" version = "1.3.5" +[[deps.Combinatorics]] +git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" +uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" +version = "1.0.2" + +[[deps.CommonSolve]] +git-tree-sha1 = "0eee5eb66b1cf62cd6ad1b460238e60e4b09400c" +uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" +version = "0.2.4" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.0" + +[[deps.CommonWorldInvalidations]] +git-tree-sha1 = "ae52d1c52048455e85a387fbee9be553ec2b68d0" +uuid = "f70d9fcc-98c5-4d4a-abd7-e4cdeebd8ca8" +version = "1.0.0" + [[deps.Compat]] deps = ["TOML", "UUIDs"] git-tree-sha1 = "b1c55339b7c6c350ee89f2c1604299660525b248" uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" version = "4.15.0" +weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] CompatLinearAlgebraExt = "LinearAlgebra" - [deps.Compat.weakdeps] - Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" - LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.1.1+0" + +[[deps.CompositeTypes]] +git-tree-sha1 = "bce26c3dab336582805503bed209faab1c279768" +uuid = "b152e2b5-7a66-4b01-a709-34e65c35f657" +version = "0.1.4" + +[[deps.CompositionsBase]] +git-tree-sha1 = "802bb88cd69dfd1509f6670416bd4434015693ad" +uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" +version = "0.1.2" +weakdeps = ["InverseFunctions"] + + [deps.CompositionsBase.extensions] + CompositionsBaseInverseFunctionsExt = "InverseFunctions" + +[[deps.ConstructionBase]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "d8a9c0b6ac2d9081bf76324b39c78ca3ce4f0c98" +uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" +version = "1.5.6" +weakdeps = ["IntervalSets", "StaticArrays"] + + [deps.ConstructionBase.extensions] + ConstructionBaseIntervalSetsExt = "IntervalSets" + ConstructionBaseStaticArraysExt = "StaticArrays" + +[[deps.DataAPI]] +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.16.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "1d0a14036acb104d9e89698bd408f63ab58cdc82" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.20" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" [[deps.Dates]] deps = ["Printf"] uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" version = "1.11.0" +[[deps.DiffResults]] +deps = ["StaticArraysCore"] +git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.1.0" + +[[deps.DiffRules]] +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.15.1" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" +version = "1.11.0" + +[[deps.Distributions]] +deps = ["AliasTables", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SpecialFunctions", "Statistics", "StatsAPI", "StatsBase", "StatsFuns"] +git-tree-sha1 = "9c405847cc7ecda2dc921ccf18b47ca150d7317e" +uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" +version = "0.25.109" + + [deps.Distributions.extensions] + DistributionsChainRulesCoreExt = "ChainRulesCore" + DistributionsDensityInterfaceExt = "DensityInterface" + DistributionsTestExt = "Test" + + [deps.Distributions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + DensityInterface = "b429d917-457f-4dbc-8f4c-0cc954292b1d" + Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.3" + +[[deps.DomainSets]] +deps = ["CompositeTypes", "IntervalSets", "LinearAlgebra", "Random", "StaticArrays"] +git-tree-sha1 = "490392af2c7d63183bfa2c8aaa6ab981c5ba7561" +uuid = "5b8099bc-c8ec-5219-889f-1d9e522a28bf" +version = "0.7.14" + + [deps.DomainSets.extensions] + DomainSetsMakieExt = "Makie" + + [deps.DomainSets.weakdeps] + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + [[deps.Downloads]] deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" version = "1.6.0" +[[deps.DualNumbers]] +deps = ["Calculus", "NaNMath", "SpecialFunctions"] +git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" +uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" +version = "0.6.8" + +[[deps.DynamicPolynomials]] +deps = ["Future", "LinearAlgebra", "MultivariatePolynomials", "MutableArithmetics", "Pkg", "Reexport", "Test"] +git-tree-sha1 = "30a1848c4f4fc35d1d4bbbd125650f6a11b5bc6c" +uuid = "7c1d4256-1411-5781-91ec-d7bc3513ac07" +version = "0.5.7" + +[[deps.EnumX]] +git-tree-sha1 = "bdb1942cd4c45e3c678fd11569d5cccd80976237" +uuid = "4e289a0a-7415-4d19-859d-a7e5c4648b56" +version = "1.0.4" + +[[deps.ExprTools]] +git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" +uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" +version = "0.1.10" + [[deps.FileWatching]] uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" version = "1.11.0" +[[deps.FillArrays]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "0653c0a2396a6da5bc4766c43041ef5fd3efbe57" +uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" +version = "1.11.0" +weakdeps = ["PDMats", "SparseArrays", "Statistics"] + + [deps.FillArrays.extensions] + FillArraysPDMatsExt = "PDMats" + FillArraysSparseArraysExt = "SparseArrays" + FillArraysStatisticsExt = "Statistics" + +[[deps.Format]] +git-tree-sha1 = "9c68794ef81b08086aeb32eeaf33531668d5f5fc" +uuid = "1fa38f19-a742-5d3f-a2b9-30dd87b9d5f8" +version = "1.3.7" + +[[deps.ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] +git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "0.10.36" +weakdeps = ["StaticArrays"] + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + +[[deps.FunctionWrappers]] +git-tree-sha1 = "d62485945ce5ae9c0c48f124a84998d755bae00e" +uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" +version = "1.1.3" + +[[deps.FunctionWrappersWrappers]] +deps = ["FunctionWrappers"] +git-tree-sha1 = "b104d487b34566608f8b4e1c39fb0b10aa279ff8" +uuid = "77dc65aa-8811-40c2-897b-53d922fa7daf" +version = "0.1.3" + +[[deps.Future]] +deps = ["Random"] +uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" +version = "1.11.0" + +[[deps.GPUArraysCore]] +deps = ["Adapt"] +git-tree-sha1 = "ec632f177c0d990e64d955ccc1b8c04c485a0950" +uuid = "46192b85-c4d5-4398-a991-12ede77f4527" +version = "0.1.6" + +[[deps.HypergeometricFunctions]] +deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions"] +git-tree-sha1 = "f218fe3736ddf977e0e772bc9a586b2383da2685" +uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" +version = "0.3.23" + +[[deps.IfElse]] +git-tree-sha1 = "debdd00ffef04665ccbb3e150747a77560e8fad1" +uuid = "615f187c-cbe4-4ef1-ba3b-2fcf58d6d173" +version = "0.1.1" + [[deps.InteractiveUtils]] deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" version = "1.11.0" +[[deps.IntervalArithmetic]] +deps = ["CRlibm_jll", "MacroTools", "RoundingEmulator"] +git-tree-sha1 = "433b0bb201cd76cb087b017e49244f10394ebe9c" +uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" +version = "0.22.14" +weakdeps = ["DiffRules", "ForwardDiff", "RecipesBase"] + + [deps.IntervalArithmetic.extensions] + IntervalArithmeticDiffRulesExt = "DiffRules" + IntervalArithmeticForwardDiffExt = "ForwardDiff" + IntervalArithmeticRecipesBaseExt = "RecipesBase" + +[[deps.IntervalSets]] +git-tree-sha1 = "dba9ddf07f77f60450fe5d2e2beb9854d9a49bd0" +uuid = "8197267c-284f-5f27-9208-e0e47529a953" +version = "0.7.10" +weakdeps = ["Random", "RecipesBase", "Statistics"] + + [deps.IntervalSets.extensions] + IntervalSetsRandomExt = "Random" + IntervalSetsRecipesBaseExt = "RecipesBase" + IntervalSetsStatisticsExt = "Statistics" + +[[deps.InverseFunctions]] +deps = ["Test"] +git-tree-sha1 = "18c59411ece4838b18cd7f537e56cf5e41ce5bfd" +uuid = "3587e190-3f89-42d0-90ee-14403ec27112" +version = "0.1.15" +weakdeps = ["Dates"] + + [deps.InverseFunctions.extensions] + DatesExt = "Dates" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.2" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + [[deps.JET]] deps = ["CodeTracking", "InteractiveUtils", "JuliaInterpreter", "LoweredCodeUtils", "MacroTools", "Pkg", "PrecompileTools", "Preferences", "Test"] git-tree-sha1 = "1f209ff8dce4cebff6bfebd2da9cdc0e982874a6" @@ -72,12 +422,48 @@ version = "0.9.6" [deps.JET.weakdeps] Revise = "295af30f-e4ad-537b-8983-00126c2a3abe" +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + [[deps.JuliaInterpreter]] deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] git-tree-sha1 = "a6adc2dcfe4187c40dc7c2c9d2128e326360e90a" uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" version = "0.9.32" +[[deps.LaTeXStrings]] +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.1" + +[[deps.LabelledArrays]] +deps = ["ArrayInterface", "ChainRulesCore", "ForwardDiff", "LinearAlgebra", "MacroTools", "PreallocationTools", "RecursiveArrayTools", "StaticArrays"] +git-tree-sha1 = "e459fda6b68ea8684b3fcd513d2fd1e5130c4402" +uuid = "2ee39098-c373-598a-b85f-a56591580800" +version = "1.16.0" + +[[deps.LambertW]] +git-tree-sha1 = "c5ffc834de5d61d00d2b0e18c96267cffc21f648" +uuid = "984bce1d-4616-540c-a9ee-88d1112d94c9" +version = "0.4.6" + +[[deps.Latexify]] +deps = ["Format", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "OrderedCollections", "Requires"] +git-tree-sha1 = "5b0d630f3020b82c0775a51d05895852f8506f50" +uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" +version = "0.16.4" + + [deps.Latexify.extensions] + DataFramesExt = "DataFrames" + SymEngineExt = "SymEngine" + + [deps.Latexify.weakdeps] + DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" + SymEngine = "123dc426-2d89-5057-bbad-38513e3affd8" + [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" @@ -107,6 +493,27 @@ version = "1.11.0+1" uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" version = "1.11.0" +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +version = "1.11.0" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "a2d09619db4e765091ee5c6ffe8872849de0feea" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.28" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" version = "1.11.0" @@ -133,14 +540,71 @@ deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" version = "2.28.6+0" +[[deps.Missings]] +deps = ["DataAPI"] +git-tree-sha1 = "ec4f7fbeab05d7747bdf98eb74d130a2a2ed298d" +uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" +version = "1.2.0" + [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" version = "2023.12.12" +[[deps.MultivariatePolynomials]] +deps = ["ChainRulesCore", "DataStructures", "LinearAlgebra", "MutableArithmetics"] +git-tree-sha1 = "5c1d1d9361e1417e5a065e1f84dc3686cbdaea21" +uuid = "102ac46a-7ee4-5c85-9060-abc95bfdeaa3" +version = "0.5.6" + +[[deps.MutableArithmetics]] +deps = ["LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "898c56fbf8bf71afb0c02146ef26f3a454e88873" +uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" +version = "1.4.5" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" + [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" +[[deps.OceanSonar]] +deps = ["IntervalArithmetic", "NaNMath", "Symbolics"] +path = "C:\\Users\\Aaron\\.julia\\dev\\OceanSonar" +uuid = "03019ade-4524-4ecd-af79-46d4f04a1b56" +version = "1.0.0-DEV" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.27+1" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+2" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.3" + +[[deps.PDMats]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] +git-tree-sha1 = "949347156c25054de2db3b166c52ac4728cbad65" +uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" +version = "0.11.31" + [[deps.Pkg]] deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "Random", "SHA", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" @@ -152,6 +616,18 @@ version = "1.11.0" [deps.Pkg.weakdeps] REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" +[[deps.PreallocationTools]] +deps = ["Adapt", "ArrayInterface", "ForwardDiff"] +git-tree-sha1 = "406c29a7f46706d379a3bce45671b4e3a39ddfbc" +uuid = "d236fae5-4411-538c-8e31-a6e3d9e00b46" +version = "0.4.22" + + [deps.PreallocationTools.extensions] + PreallocationToolsReverseDiffExt = "ReverseDiff" + + [deps.PreallocationTools.weakdeps] + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + [[deps.PrecompileTools]] deps = ["Preferences"] git-tree-sha1 = "5aa36f7049a63a1528fe8f7c3f2113413ffd4e1f" @@ -169,34 +645,299 @@ deps = ["Unicode"] uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" version = "1.11.0" +[[deps.PtrArrays]] +git-tree-sha1 = "f011fbb92c4d401059b2212c05c0601b70f8b759" +uuid = "43287f4e-b6f4-7ad1-bb20-aadabca52c3d" +version = "1.2.0" + +[[deps.QuadGK]] +deps = ["DataStructures", "LinearAlgebra"] +git-tree-sha1 = "9b23c31e76e333e6fb4c1595ae6afa74966a729e" +uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" +version = "2.9.4" + [[deps.Random]] deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" version = "1.11.0" +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.RecursiveArrayTools]] +deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "SparseArrays", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] +git-tree-sha1 = "b450d967a770fb13d0e26358f58375e20361cf9c" +uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" +version = "3.26.0" + + [deps.RecursiveArrayTools.extensions] + RecursiveArrayToolsFastBroadcastExt = "FastBroadcast" + RecursiveArrayToolsForwardDiffExt = "ForwardDiff" + RecursiveArrayToolsMeasurementsExt = "Measurements" + RecursiveArrayToolsMonteCarloMeasurementsExt = "MonteCarloMeasurements" + RecursiveArrayToolsReverseDiffExt = ["ReverseDiff", "Zygote"] + RecursiveArrayToolsTrackerExt = "Tracker" + RecursiveArrayToolsZygoteExt = "Zygote" + + [deps.RecursiveArrayTools.weakdeps] + FastBroadcast = "7034ab61-46d4-4ed7-9d0f-46aef9175898" + ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" + Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" + MonteCarloMeasurements = "0987c9cc-fe09-11e8-30f0-b96dd679fdca" + ReverseDiff = "37e2e3b7-166d-5795-8a7a-e32c996b4267" + Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.Rmath]] +deps = ["Random", "Rmath_jll"] +git-tree-sha1 = "f65dcb5fa46aee0cf9ed6274ccbd597adc49aa7b" +uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" +version = "0.7.1" + +[[deps.Rmath_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "d483cd324ce5cf5d61b77930f0bbd6cb61927d21" +uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" +version = "0.4.2+0" + +[[deps.RoundingEmulator]] +git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" +uuid = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" +version = "0.2.1" + +[[deps.RuntimeGeneratedFunctions]] +deps = ["ExprTools", "SHA", "Serialization"] +git-tree-sha1 = "04c968137612c4a5629fa531334bb81ad5680f00" +uuid = "7e49a35a-f44a-4d26-94aa-eba1b4ca6b47" +version = "0.5.13" + [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" version = "0.7.0" +[[deps.SafeTestsets]] +git-tree-sha1 = "81ec49d645af090901120a1542e67ecbbe044db3" +uuid = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" +version = "0.1.0" + +[[deps.SciMLBase]] +deps = ["ADTypes", "Accessors", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "Printf", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "SciMLStructures", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] +git-tree-sha1 = "ddb59473b85372c4a71b082e6862503e550fd97c" +uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" +version = "2.44.0" + + [deps.SciMLBase.extensions] + SciMLBaseChainRulesCoreExt = "ChainRulesCore" + SciMLBaseMakieExt = "Makie" + SciMLBasePartialFunctionsExt = "PartialFunctions" + SciMLBasePyCallExt = "PyCall" + SciMLBasePythonCallExt = "PythonCall" + SciMLBaseRCallExt = "RCall" + SciMLBaseZygoteExt = "Zygote" + + [deps.SciMLBase.weakdeps] + ChainRules = "082447d4-558c-5d27-93f4-14fc19e9eca2" + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a" + PartialFunctions = "570af359-4316-4cb7-8c74-252c00c2016b" + PyCall = "438e738f-606a-5dbb-bf0a-cddfbfd45ab0" + PythonCall = "6099a3de-0909-46bc-b1f4-468b9a2dfc0d" + RCall = "6f49c342-dc21-5d91-9882-a32aef131414" + Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" + +[[deps.SciMLOperators]] +deps = ["ArrayInterface", "DocStringExtensions", "LinearAlgebra", "MacroTools", "Setfield", "SparseArrays", "StaticArraysCore"] +git-tree-sha1 = "10499f619ef6e890f3f4a38914481cc868689cd5" +uuid = "c0aeaf25-5076-4817-a8d5-81caf7dfa961" +version = "0.3.8" + +[[deps.SciMLStructures]] +deps = ["ArrayInterface"] +git-tree-sha1 = "cfdd1200d150df1d3c055cc72ee6850742e982d7" +uuid = "53ae85a6-f571-4167-b2af-e1d143709226" +version = "1.4.1" + [[deps.Serialization]] uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" version = "1.11.0" +[[deps.Setfield]] +deps = ["ConstructionBase", "Future", "MacroTools", "StaticArraysCore"] +git-tree-sha1 = "e2cc6d8c88613c05e1defb55170bf5ff211fbeac" +uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" +version = "1.1.1" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +version = "1.11.0" + +[[deps.SortingAlgorithms]] +deps = ["DataStructures"] +git-tree-sha1 = "66e0a8e672a0bdfca2c3f5937efb8538b9ddc085" +uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" +version = "1.2.1" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.11.0" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "2f5d4697f21388cbe1ff299430dd169ef97d7e14" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.4.0" +weakdeps = ["ChainRulesCore"] + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "eeafab08ae20c62c44c8399ccb9354a04b80db50" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.9.7" +weakdeps = ["ChainRulesCore", "Statistics"] + + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "192954ef1208c7019899fbf8049e717f92959682" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.3" + +[[deps.Statistics]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "ae3bb1eb3bba077cd276bc5cfc337cc65c3075c0" +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.11.1" +weakdeps = ["SparseArrays"] + + [deps.Statistics.extensions] + SparseArraysExt = ["SparseArrays"] + +[[deps.StatsAPI]] +deps = ["LinearAlgebra"] +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" +uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" +version = "1.7.0" + +[[deps.StatsBase]] +deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] +git-tree-sha1 = "5cf7606d6cef84b543b483848d4ae08ad9832b21" +uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" +version = "0.34.3" + +[[deps.StatsFuns]] +deps = ["HypergeometricFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] +git-tree-sha1 = "cef0472124fab0695b58ca35a77c6fb942fdab8a" +uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" +version = "1.3.1" +weakdeps = ["ChainRulesCore", "InverseFunctions"] + + [deps.StatsFuns.extensions] + StatsFunsChainRulesCoreExt = "ChainRulesCore" + StatsFunsInverseFunctionsExt = "InverseFunctions" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "7.6.0+0" + +[[deps.SymbolicIndexingInterface]] +deps = ["Accessors", "ArrayInterface", "RuntimeGeneratedFunctions", "StaticArraysCore"] +git-tree-sha1 = "9c490ee01823dc443da25bf9225827e3cdd2d7e9" +uuid = "2efcf032-c050-4f8e-a9bb-153293bab1f5" +version = "0.3.26" + +[[deps.SymbolicLimits]] +deps = ["SymbolicUtils"] +git-tree-sha1 = "fb099adbd7504f1e68b4512828e9d94197a8b889" +uuid = "19f23fe9-fdab-4a78-91af-e7b7767979c3" +version = "0.2.1" + +[[deps.SymbolicUtils]] +deps = ["AbstractTrees", "Bijections", "ChainRulesCore", "Combinatorics", "ConstructionBase", "DataStructures", "DocStringExtensions", "DynamicPolynomials", "IfElse", "LabelledArrays", "LinearAlgebra", "MultivariatePolynomials", "NaNMath", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArrays", "SymbolicIndexingInterface", "TermInterface", "TimerOutputs", "Unityper"] +git-tree-sha1 = "9345b7b8a2923abaf6089d9f7306bb712fecb840" +uuid = "d1185830-fcd6-423d-90d6-eec64667417b" +version = "2.1.2" + +[[deps.Symbolics]] +deps = ["ADTypes", "ArrayInterface", "Bijections", "CommonWorldInvalidations", "ConstructionBase", "DataStructures", "DiffRules", "Distributions", "DocStringExtensions", "DomainSets", "DynamicPolynomials", "ForwardDiff", "IfElse", "LaTeXStrings", "LambertW", "Latexify", "Libdl", "LinearAlgebra", "LogExpFunctions", "MacroTools", "Markdown", "NaNMath", "PrecompileTools", "RecipesBase", "Reexport", "Requires", "RuntimeGeneratedFunctions", "SciMLBase", "Setfield", "SparseArrays", "SpecialFunctions", "StaticArraysCore", "SymbolicIndexingInterface", "SymbolicLimits", "SymbolicUtils", "TermInterface"] +git-tree-sha1 = "44356a85991385883acd0f41ef66c6f770d9a2e7" +uuid = "0c5d862f-8b57-4792-8d23-62f2024744c7" +version = "5.34.0" + + [deps.Symbolics.extensions] + SymbolicsGroebnerExt = "Groebner" + SymbolicsLuxCoreExt = "LuxCore" + SymbolicsPreallocationToolsExt = "PreallocationTools" + SymbolicsSymPyExt = "SymPy" + + [deps.Symbolics.weakdeps] + Groebner = "0b43b601-686d-58a3-8a1c-6623616c7cd4" + LuxCore = "bb33d45b-7691-41d6-9220-0943567d0623" + PreallocationTools = "d236fae5-4411-538c-8e31-a6e3d9e00b46" + SymPy = "24249f21-da20-56a4-8eb1-6a02cf4ae2e6" + [[deps.TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" version = "1.0.3" +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "598cd7c1f68d1e205689b1c2fe65a9f85846f297" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.12.0" + [[deps.Tar]] deps = ["ArgTools", "SHA"] uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" version = "1.10.0" +[[deps.TermInterface]] +git-tree-sha1 = "6f0cee95e74d1f6891ba6b35b8b219fd3d11b567" +uuid = "8ea1fca8-c5ef-4a55-8b96-4e9afe9c9a3c" +version = "0.4.1" + [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" version = "1.11.0" +[[deps.TimerOutputs]] +deps = ["ExprTools", "Printf"] +git-tree-sha1 = "5a13ae8a41237cff5ecf34f73eb1b8f42fff6531" +uuid = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" +version = "0.5.24" + [[deps.UUIDs]] deps = ["Random", "SHA"] uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" @@ -206,11 +947,22 @@ version = "1.11.0" uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" version = "1.11.0" +[[deps.Unityper]] +deps = ["ConstructionBase"] +git-tree-sha1 = "25008b734a03736c41e2a7dc314ecb95bd6bbdb0" +uuid = "a7c27f48-0311-42f6-a7f8-2c11e75eb415" +version = "0.1.6" + [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" version = "1.2.13+1" +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+1" + [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" diff --git a/test/Project.toml b/test/Project.toml index 737dfda..ad4ab4f 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -1,4 +1,6 @@ [deps] Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b" +OceanSonar = "03019ade-4524-4ecd-af79-46d4f04a1b56" +SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/test/runtests.jl b/test/runtests.jl index 0933df7..3fcff12 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -1,14 +1,12 @@ -using OceanSonar using Test -using Aqua -using JET +using SafeTestsets -@testset "OceanSonar.jl" begin - @testset "Code quality (Aqua.jl)" begin - Aqua.test_all(OceanSonar) +@testset verbose = true "OceanSonar.jl" begin + name = "Code Quality" + @time @testset "$name" begin + @info "Testing $name" + @safetestset "Aqua" include("00_quality/aqua.jl") + @safetestset "Linting" include("00_quality/linting.jl") + @safetestset "Docstrings" include("00_quality/docstrings.jl") end - @testset "Code linting (JET.jl)" begin - JET.test_package(OceanSonar; target_defined_modules = true) - end - # Write your tests here. end