Skip to content

Commit

Permalink
Merge pull request #79 from awesome-spectral-indices/fm/imports
Browse files Browse the repository at this point in the history
Fixing imports
  • Loading branch information
MartinuzziFrancesco authored Jan 13, 2025
2 parents f34a0d7 + df7e0f2 commit 4b096dc
Show file tree
Hide file tree
Showing 26 changed files with 519 additions and 408 deletions.
4 changes: 2 additions & 2 deletions .JuliaFormatter.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
style = "blue"
style = "sciml"
format_markdown = false
whitespace_in_kwargs = false
always_use_return = true
margin = 92
indent = 4
format_docstrings = true
Expand Down
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "SpectralIndices"
uuid = "df0093a1-273d-40bc-819a-796ec3476907"
authors = ["MartinuzziFrancesco <[email protected]>"]
version = "0.2.12"
version = "0.2.13"

[deps]
Compat = "34da2185-b29b-5c13-b0c7-acf172513d20"
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
[julia-img]: https://img.shields.io/badge/julia-v1.10+-blue.svg
[julia-url]: https://julialang.org/

[style-img]: https://img.shields.io/badge/code%20style-blue-4495d1.svg
[style-url]: https://github.com/invenia/BlueStyle
[style-img]: https://img.shields.io/static/v1?label=code%20style&message=SciML&color=9558b2&labelColor=389826
[style-url]: https://github.com/SciML/SciMLStyle

[aqua-img]: https://raw.githubusercontent.com/JuliaTesting/Aqua.jl/master/badge.svg
[aqua-url]: https://github.com/JuliaTesting/Aqua.jl
Expand Down
6 changes: 3 additions & 3 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,18 @@ makedocs(;
format=DocumenterVitepress.MarkdownVitepress(;
repo="github.com/awesome-spectral-indices/SpectralIndices.jl", # this must be the full URL!
devbranch="main",
devurl="dev",
devurl="dev"
),
draft=false,
source="src",
build="build",
pages=pages,
pages=pages
)

deploydocs(;
repo="github.com/awesome-spectral-indices/SpectralIndices.jl",
target="build", # this is where Vitepress stores its output
branch="gh-pages",
devbranch="main",
push_preview=true,
push_preview=true
)
2 changes: 1 addition & 1 deletion docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"devDependencies": {
"markdown-it": "^14.0.0",
"markdown-it-mathjax3": "^4.3.2",
"vitepress": "^1.0.0-rc.43",
"vitepress": "1.5.0",
"vitepress-plugin-tabs": "^0.5.0",
"vitest": "^1.3.0"
},
Expand Down
6 changes: 3 additions & 3 deletions docs/pages.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ pages = [
"Tutorials" => [
"Basics" => "tutorials/basic_types.md",
"DataFrames.jl" => "tutorials/dataframes.md",
"YAXArrays.jl" => "tutorials/yaxarrays.md",
"YAXArrays.jl" => "tutorials/yaxarrays.md"
],
"API Documentation" => [
"Axioms" => "api/axioms.md",
"Compute" => "api/compute.md",
"Datasets" => "api/datasets.md",
],
"Datasets" => "api/datasets.md"
]
]
37 changes: 18 additions & 19 deletions ext/SpectralIndicesDataFramesExt.jl
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ module SpectralIndicesDataFramesExt
using SpectralIndices
using DataFrames
import SpectralIndices:
create_params,
AbstractSpectralIndex,
compute_index,
create_indices,
linear,
poly,
RBF,
load_dataset,
load_json

function create_params(kw_args::Pair{Symbol,DataFrame}...)
create_params,
AbstractSpectralIndex,
compute_index,
create_indices,
linear,
poly,
RBF,
load_dataset,
load_json

function create_params(kw_args::Pair{Symbol, DataFrame}...)
combined_df = DataFrame()

for pair in kw_args
Expand All @@ -25,20 +25,19 @@ function create_params(kw_args::Pair{Symbol,DataFrame}...)
end

function compute_index(
index::AbstractSpectralIndex, params::DataFrame; indices = create_indices()
index::AbstractSpectralIndex, params::DataFrame; indices=create_indices()
)
# Convert DataFrame to a dictionary for each row and compute the index
results = [
compute_index(index, Dict(zip(names(params), row)); indices=indices) for
row in eachrow(params)
]
results = [compute_index(index, Dict(zip(names(params), row)); indices=indices)
for
row in eachrow(params)]

# Return the results as a DataFrame with the column named after the index
return DataFrame(Symbol(index.short_name) => results)
end

function compute_index(
index::Vector{<:AbstractSpectralIndex}, params::DataFrame; indices = create_indices()
index::Vector{<:AbstractSpectralIndex}, params::DataFrame; indices=create_indices()
)
# Similar conversion and computation for a vector of indices
result_dfs = DataFrame()
Expand Down Expand Up @@ -68,7 +67,7 @@ function RBF(params::DataFrame)
return result_df
end

function load_dataset(dataset::String, ::Type{T}) where {T<:DataFrame}
function load_dataset(dataset::String, ::Type{T}) where {T <: DataFrame}
datasets = Dict("spectral" => "spectral.json")

if dataset in keys(datasets)
Expand All @@ -88,7 +87,7 @@ function load_dataset(dataset::String, ::Type{T}) where {T<:DataFrame}
df = DataFrame(; index=all_indices)

for col_name in keys(ds)
df[!, col_name] = Vector{Union{Missing,Any}}(missing, length(all_indices))
df[!, col_name] = Vector{Union{Missing, Any}}(missing, length(all_indices))
end

for (col_name, col_data) in ds
Expand Down
40 changes: 20 additions & 20 deletions ext/SpectralIndicesYAXArraysExt.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,25 @@ using SpectralIndices
using YAXArrays
using DimensionalData
import SpectralIndices:
check_params,
create_params,
order_params,
AbstractSpectralIndex,
compute_index,
create_indices,
linear,
poly,
RBF,
load_dataset,
load_json
check_params,
create_params,
order_params,
AbstractSpectralIndex,
compute_index,
create_indices,
linear,
poly,
RBF,
load_dataset,
load_json

function check_params(index::AbstractSpectralIndex, params::YAXArray)
for band in index.bands
if !(band in params.Variables)
throw(
ArgumentError(
"'$band' is missing in the parameters for $index computation!"
),
"'$band' is missing in the parameters for $index computation!"
),
)
end
end
Expand All @@ -37,7 +37,7 @@ function order_params(index::AbstractSpectralIndex, params::YAXArray)
return new_params
end

function create_params(kw_args::Pair{Symbol,<:YAXArray}...)
function create_params(kw_args::Pair{Symbol, <:YAXArray}...)
params_yaxa = []
names_yaxa = []
for (key, value) in kw_args
Expand All @@ -52,7 +52,7 @@ end
## TODO: simplify even further
# this is same function contente as dispatch on Dict
function compute_index(
index::AbstractSpectralIndex, params::YAXArray; indices = create_indices()
index::AbstractSpectralIndex, params::YAXArray; indices=create_indices()
)
check_params(index, params)
params = order_params(index, params)
Expand All @@ -62,7 +62,7 @@ function compute_index(
end

function compute_index(
index::Vector{<:AbstractSpectralIndex}, params::YAXArray; indices = create_indices()
index::Vector{<:AbstractSpectralIndex}, params::YAXArray; indices=create_indices()
)
results = []
for (nidx, idx) in enumerate(index)
Expand All @@ -75,8 +75,8 @@ function compute_index(
end

function _compute_index(
::Type{T}, idx::AbstractSpectralIndex, prms::YAXArray...
) where {T<:Number}
::Type{T}, idx::AbstractSpectralIndex, prms::YAXArray...
) where {T <: Number}
return idx.(T, prms...)
end

Expand All @@ -89,7 +89,7 @@ function poly(params::YAXArray)
params[Variable=At("a")],
params[Variable=At("b")],
params[Variable=At("c")],
params[Variable=At("p")],
params[Variable=At("p")]
)
end

Expand All @@ -99,7 +99,7 @@ function RBF(params::YAXArray)
)
end

function load_dataset(dataset::String, ::Type{T}) where {T<:YAXArray}
function load_dataset(dataset::String, ::Type{T}) where {T <: YAXArray}
datasets = Dict("sentinel" => "S2_10m.json")

if dataset in keys(datasets)
Expand Down
26 changes: 12 additions & 14 deletions src/SpectralIndices.jl
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
module SpectralIndices

using Compat: @compat #for @compat public
using Dates
using Downloads
using JSON

abstract type AbstractSpectralIndex end
abstract type AbstractPlatformBand end
using Compat: @compat
using Dates: Date, @dateformat_str
using Downloads: Downloads
using JSON: parsefile

indices_funcs = Dict()
include("utils.jl")
Expand All @@ -24,13 +21,14 @@ indices = create_indices()
bands = create_bands()
constants = create_constants()

@compat(public, (create_indices,
create_bands,
create_constants,
load_json,
check_params,
create_params,
order_params))
@compat(public,
(create_indices,
create_bands,
create_constants,
load_json,
check_params,
create_params,
order_params))

export get_indices, create_indexfun
export get_datasets, load_dataset
Expand Down
8 changes: 4 additions & 4 deletions src/bands.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
struct Band{S<:String,F<:Number,P<:Dict{String,PlatformBand}}
struct Band{S <: String, F <: Number, P <: Dict{String, PlatformBand}}
short_name::S
long_name::S
common_name::S
Expand Down Expand Up @@ -54,14 +54,14 @@ julia> bands["B"].long_name
```
"""
function Band(band::Dict{String,Any})
function Band(band::Dict{String, Any})
short_name = band["short_name"]
long_name = band["long_name"]
common_name = band["common_name"]
min_wavelength = band["min_wavelength"]
max_wavelength = band["max_wavelength"]

platforms = Dict{String,PlatformBand}()
platforms = Dict{String, PlatformBand}()

for (platform, platform_info) in band["platforms"]
if isa(platform_info, PlatformBand)
Expand All @@ -88,7 +88,7 @@ end

function create_bands()
bands_dict = load_json("bands.json")
bands_class = Dict{String,Band}()
bands_class = Dict{String, Band}()

for (key, value) in bands_dict
bands_class[key] = Band(value)
Expand Down
Loading

2 comments on commit 4b096dc

@MartinuzziFrancesco
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/122901

Tip: Release Notes

Did you know you can add release notes too? Just add markdown formatted text underneath the comment after the text
"Release notes:" and it will be added to the registry PR, and if TagBot is installed it will also be added to the
release that TagBot creates. i.e.

@JuliaRegistrator register

Release notes:

## Breaking changes

- blah

To add them here just re-invoke and the PR will be updated.

Tagging

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:

git tag -a v0.2.13 -m "<description of version>" 4b096dc08535c833ddfae778f89c5dab8b3c49e4
git push origin v0.2.13

Please sign in to comment.