Skip to content

Commit

Permalink
adding dktnames to module and adding as default to ADNIDatasets
Browse files Browse the repository at this point in the history
  • Loading branch information
PavanChaggar committed Jan 11, 2024
1 parent 02d4b5c commit c822617
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 95 deletions.
14 changes: 8 additions & 6 deletions src/ADNIDatasets.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ using CSV, DataFrames
using Setfield
using Dates

include("dktnames.jl")

struct ADNIScanData
Date::Date
SUVR::Vector{Float64}
Expand All @@ -24,16 +26,16 @@ struct ADNIDataset
rois::Vector{String}
end

function ADNISubject(subid, df::DataFrame, dktnames, reference_region::String)
function ADNISubject(subid, df::DataFrame, roi_names, reference_region::String)
sub = filter( x -> x.RID == subid, df )

if "EXAMDATE" names(sub)
subdate = sub[!, :EXAMDATE]
elseif "SCANDATE" names(sub)
subdate = sub[!, :SCANDATE]
end
subsuvr = sub[!, suvr_name.(dktnames)] |> dropmissing |> disallowmissing |> Array
subvol = sub[!, vol_name.(dktnames)] |> dropmissing |> disallowmissing |> Array
subsuvr = sub[!, suvr_name.(roi_names)] |> dropmissing |> disallowmissing |> Array
subvol = sub[!, vol_name.(roi_names)] |> dropmissing |> disallowmissing |> Array
subref = sub[!, suvr_name.(reference_region)]
n_scans = length(subdate)
if n_scans == size(subsuvr, 1) == size(subvol, 1)
Expand All @@ -46,23 +48,23 @@ function ADNISubject(subid, df::DataFrame, dktnames, reference_region::String)
end
end

function ADNIDataset(df::DataFrame, dktnames; min_scans=1, max_scans=Inf, reference_region="inferiorcerebellum")
function ADNIDataset(df::DataFrame, roi_names=dktnames; min_scans=1, max_scans=Inf, reference_region="inferiorcerebellum")
subjects = unique(df.RID)

n_scans = [count(==(sub), df.RID) for sub in subjects]
multi_subs = subjects[findall(x -> min_scans <= x <= max_scans, n_scans)]

adnisubjects = Vector{ADNISubject}()
for sub in multi_subs
sub = ADNISubject(sub, df, dktnames, reference_region)
sub = ADNISubject(sub, df, roi_names, reference_region)
if sub isa ADNISubject
push!(adnisubjects, sub)
end
end
ADNIDataset(
length(adnisubjects),
adnisubjects,
dktnames
roi_names
)
end

Expand Down
83 changes: 83 additions & 0 deletions src/dktnames.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
dktnames = ["ctx_rh_lateralorbitofrontal",
"ctx_rh_parsorbitalis",
"ctx_rh_frontalpole",
"ctx_rh_medialorbitofrontal",
"ctx_rh_parstriangularis",
"ctx_rh_parsopercularis",
"ctx_rh_rostralmiddlefrontal",
"ctx_rh_superiorfrontal",
"ctx_rh_caudalmiddlefrontal",
"ctx_rh_precentral",
"ctx_rh_paracentral",
"ctx_rh_rostralanteriorcingulate",
"ctx_rh_caudalanteriorcingulate",
"ctx_rh_posteriorcingulate",
"ctx_rh_isthmuscingulate",
"ctx_rh_postcentral",
"ctx_rh_supramarginal",
"ctx_rh_superiorparietal",
"ctx_rh_inferiorparietal",
"ctx_rh_precuneus",
"ctx_rh_cuneus",
"ctx_rh_pericalcarine",
"ctx_rh_lateraloccipital",
"ctx_rh_lingual",
"ctx_rh_fusiform",
"ctx_rh_parahippocampal",
"ctx_rh_entorhinal",
"ctx_rh_temporalpole",
"ctx_rh_inferiortemporal",
"ctx_rh_middletemporal",
"ctx_rh_bankssts",
"ctx_rh_superiortemporal",
"ctx_rh_transversetemporal",
"ctx_rh_insula",
"Right_Thalamus_Proper",
"Right_Caudate",
"Right_Putamen",
"Right_Pallidum",
"Right_Accumbens_area",
"Right_Hippocampus",
"Right_Amygdala",
"ctx_lh_lateralorbitofrontal",
"ctx_lh_parsorbitalis",
"ctx_lh_frontalpole",
"ctx_lh_medialorbitofrontal",
"ctx_lh_parstriangularis",
"ctx_lh_parsopercularis",
"ctx_lh_rostralmiddlefrontal",
"ctx_lh_superiorfrontal",
"ctx_lh_caudalmiddlefrontal",
"ctx_lh_precentral",
"ctx_lh_paracentral",
"ctx_lh_rostralanteriorcingulate",
"ctx_lh_caudalanteriorcingulate",
"ctx_lh_posteriorcingulate",
"ctx_lh_isthmuscingulate",
"ctx_lh_postcentral",
"ctx_lh_supramarginal",
"ctx_lh_superiorparietal",
"ctx_lh_inferiorparietal",
"ctx_lh_precuneus",
"ctx_lh_cuneus",
"ctx_lh_pericalcarine",
"ctx_lh_lateraloccipital",
"ctx_lh_lingual",
"ctx_lh_fusiform",
"ctx_lh_parahippocampal",
"ctx_lh_entorhinal",
"ctx_lh_temporalpole",
"ctx_lh_inferiortemporal",
"ctx_lh_middletemporal",
"ctx_lh_bankssts",
"ctx_lh_superiortemporal",
"ctx_lh_transversetemporal",
"ctx_lh_insula",
"Left_Thalamus_Proper",
"Left_Caudate",
"Left_Putamen",
"Left_Pallidum",
"Left_Accumbens_area",
"Left_Hippocampus",
"Left_Amygdala",
"brainstem"]
84 changes: 0 additions & 84 deletions test/dktnames.csv

This file was deleted.

8 changes: 3 additions & 5 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,12 @@ using Test

testpath = dirname(relpath(@__FILE__))
datapath = joinpath(testpath, "adni-test.csv")
dktpath = joinpath(testpath, "dktnames.csv")

datadf = CSV.read(datapath, DataFrame)
dktdf = CSV.read(dktpath, DataFrame)

data_scans_3 = ADNIDataset(datadf, dktdf.region; min_scans=3)
data_scans_1 = ADNIDataset(datadf, dktdf.region; min_scans=1)
data_scans_2 = ADNIDataset(datadf, dktdf.region; min_scans=2, max_scans=2)
data_scans_3 = ADNIDataset(datadf; min_scans=3)
data_scans_1 = ADNIDataset(datadf; min_scans=1)
data_scans_2 = ADNIDataset(datadf; min_scans=2, max_scans=2)

@testset "ADNIDatasets.jl" begin
# test number of subjects are correct
Expand Down

0 comments on commit c822617

Please sign in to comment.