Skip to content

Commit

Permalink
Merge pull request #671 from open-AIMS/handle_cluster_ids
Browse files Browse the repository at this point in the history
Fix erroneous handling of location IDs
  • Loading branch information
Zapiano authored Feb 5, 2024
2 parents ce48436 + 9b6808f commit 5704288
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 26 deletions.
2 changes: 1 addition & 1 deletion src/ADRIA.jl
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ export ReefModDomain
# export dims, ndims

# List out compatible domain datapackages
const COMPAT_DPKG = ["0.4.0-rc", "0.4.0", "0.5.0-rc", "0.5.0"]
const COMPAT_DPKG = ["0.5.0-rc", "0.5.0"]

# This adds ~30 seconds to package load times
if ccall(:jl_generating_output, Cint, ()) == 1
Expand Down
4 changes: 2 additions & 2 deletions src/Domain.jl
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ mutable struct EnvLayer{S<:AbstractString,TF}
dpkg_path::S
site_data_fn::S
const site_id_col::S
const unique_site_id_col::S
const cluster_id_col::S
init_coral_cov_fn::S
connectivity_fn::S
DHW_fn::S
Expand All @@ -31,7 +31,7 @@ function load_domain(path::String)::Domain
end

function unique_sites(d::Domain)::Vector{String}
return d.site_data[:, d.unique_site_id_col]
return d.site_data[:, d.cluster_id_col]
end

"""
Expand Down
24 changes: 13 additions & 11 deletions src/ExtInterface/ADRIA/Domain.jl
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ mutable struct ADRIADomain{
const strong_pred::Vector{Int64} # strongest predecessor
site_data::D # table of site data (depth, carrying capacity, etc)
const site_id_col::String # column to use as site ids, also used by the connectivity dataset (indicates order of `conn`)
const unique_site_id_col::String # column of unique site ids
const cluster_id_col::String # column of unique site ids
init_coral_cover::M # initial coral cover dataset
const coral_growth::CoralGrowth # coral
const site_ids::Vector{String} # Site IDs that are represented (i.e., subset of site_data[:, site_id_col], after missing sites are filtered)
Expand All @@ -47,7 +47,7 @@ function Domain(
strongest_predecessor::Vector{Int64},
site_data::DataFrame,
site_id_col::String,
unique_site_id_col::String,
cluster_id_col::String,
init_coral_cover::NamedDimsArray,
coral_growth::CoralGrowth,
site_ids::Vector{String},
Expand Down Expand Up @@ -91,7 +91,7 @@ function Domain(
strongest_predecessor,
site_data,
site_id_col,
unique_site_id_col,
cluster_id_col,
init_coral_cover,
coral_growth,
site_ids,
Expand All @@ -105,7 +105,7 @@ function Domain(
end

"""
Domain(name::String, rcp::String, timeframe::Vector, site_data_fn::String, site_id_col::String, unique_site_id_col::String, init_coral_fn::String, conn_path::String, dhw_fn::String, wave_fn::String, cyclone_mortality_fn::String)::Domain
Domain(name::String, rcp::String, timeframe::Vector, site_data_fn::String, site_id_col::String, cluster_id_col::String, init_coral_fn::String, conn_path::String, dhw_fn::String, wave_fn::String, cyclone_mortality_fn::String)::Domain
Convenience constructor for Domain.
Expand All @@ -116,7 +116,7 @@ Convenience constructor for Domain.
- `timeframe` : Time steps represented
- `site_data_fn` : File name of spatial data used
- `site_id_col` : Column holding name of reef the site is associated with (non-unique)
- `unique_site_id_col` : Column holding unique site names/ids
- `cluster_id_col` : Column holding unique site names/ids
- `init_coral_fn` : Name of file holding initial coral cover values
- `conn_path` : Path to directory holding connectivity data
- `dhw_fn` : Filename of DHW data cube in use
Expand All @@ -130,7 +130,7 @@ function Domain(
timeframe::Vector,
site_data_fn::String,
site_id_col::String,
unique_site_id_col::String,
cluster_id_col::String,
init_coral_fn::String,
conn_path::String,
dhw_fn::String,
Expand All @@ -148,16 +148,18 @@ function Domain(
end
end

if unique_site_id_col names(site_data)
@warn "Unique location ID column $(unique_site_id_col) not found. Defaulting to UNIQUE_ID."
unique_site_id_col = "UNIQUE_ID"
if cluster_id_col names(site_data)
@warn "Cluster ID column $(cluster_id_col) not found. Defaulting to UNIQUE_ID."
cluster_id_col = "UNIQUE_ID"
end

site_data[!, cluster_id_col] .= string.(Int64.(site_data[:, cluster_id_col]))

env_layer_md::EnvLayer = EnvLayer(
dpkg_path,
site_data_fn,
site_id_col,
unique_site_id_col,
cluster_id_col,
init_coral_fn,
conn_path,
dhw_fn,
Expand Down Expand Up @@ -247,7 +249,7 @@ function Domain(
conns.strongest_predecessor,
site_data,
site_id_col,
unique_site_id_col,
cluster_id_col,
coral_cover,
coral_growth,
site_conn.site_ids,
Expand Down
10 changes: 5 additions & 5 deletions src/ExtInterface/ReefMod/Domain.jl
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ mutable struct ReefModDomain <: Domain
const strong_pred
const site_data
const site_id_col
const unique_site_id_col
const cluster_id_col
init_coral_cover
const coral_growth::CoralGrowth
const site_ids
Expand Down Expand Up @@ -56,8 +56,8 @@ function load_domain(::Type{ReefModDomain}, fn_path::String, RCP::String)::ReefM
site_data_path = joinpath(data_files, "region", "reefmod_gbr.gpkg")
site_data = GDF.read(site_data_path)
site_id_col = "LOC_NAME_S"
unique_site_id_col = "LOC_NAME_S"
site_ids = site_data[:, unique_site_id_col]
cluster_id_col = "LOC_NAME_S"
site_ids = site_data[:, site_id_col]

id_list = CSV.read(
joinpath(data_files, "id", "id_list_2023_03_30.csv"),
Expand Down Expand Up @@ -132,7 +132,7 @@ function load_domain(::Type{ReefModDomain}, fn_path::String, RCP::String)::ReefM
fn_path,
site_data_path,
site_id_col,
unique_site_id_col,
cluster_id_col,
"",
"",
"",
Expand All @@ -158,7 +158,7 @@ function load_domain(::Type{ReefModDomain}, fn_path::String, RCP::String)::ReefM
strong_pred,
site_data,
site_id_col,
unique_site_id_col,
cluster_id_col,
init_coral_cover,
CoralGrowth(nrow(site_data)),
site_ids,
Expand Down
8 changes: 4 additions & 4 deletions src/io/ResultSet.jl
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ function combine_results(result_sets...)::ResultSet
envlayer.dpkg_path,
envlayer.site_data_fn,
envlayer.site_id_col,
envlayer.unique_site_id_col,
envlayer.cluster_id_col,
envlayer.init_coral_cov_fn,
envlayer.connectivity_fn,
dirname(envlayer.DHW_fn),
Expand Down Expand Up @@ -458,15 +458,15 @@ function Base.show(io::IO, mime::MIME"text/plain", rs::ResultSet)

println("""
Domain: $(rs.name)
Run with ADRIA $(vers_id) on $(rs.invoke_time)
Results stored at: $(result_location(rs))
RCP(s) represented: $(rcps)
Scenarios run: $(scens)
Number of sites: $(sites)
Timesteps: $(tf)
Input layers
------------""")

Expand Down
6 changes: 3 additions & 3 deletions src/io/result_io.jl
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ function scenario_attributes(
:ADRIA_VERSION => "v" * string(PkgVersion.Version(@__MODULE__)),
:site_data_file => env_layer.site_data_fn,
:site_id_col => env_layer.site_id_col,
:unique_site_id_col => env_layer.unique_site_id_col,
:cluster_id_col => env_layer.cluster_id_col,
:init_coral_cover_file => env_layer.init_coral_cov_fn,
:connectivity_file => env_layer.connectivity_fn,
:DHW_file => env_layer.DHW_fn,
Expand Down Expand Up @@ -607,7 +607,7 @@ function load_results(result_loc::String)::ResultSet

# Spatial data
site_data = GDF.read(joinpath(result_loc, SITE_DATA, input_set.attrs["name"] * ".gpkg"))
sort!(site_data, [Symbol(input_set.attrs["unique_site_id_col"])])
sort!(site_data, [Symbol(input_set.attrs["site_id_col"])])

# Model specification
model_spec = CSV.read(
Expand Down Expand Up @@ -642,7 +642,7 @@ function load_results(result_loc::String)::ResultSet
result_loc,
input_set.attrs["site_data_file"],
input_set.attrs["site_id_col"],
input_set.attrs["unique_site_id_col"],
input_set.attrs["cluster_id_col"],
input_set.attrs["init_coral_cover_file"],
input_set.attrs["connectivity_file"],
input_set.attrs["DHW_file"],
Expand Down

0 comments on commit 5704288

Please sign in to comment.