π vignettes has the vignettes of the package
β’ π introduction.Rmd β installing the package and estimating age from your own 3D models
β’ π articles/population-affinity.Rmd β the fully reproducible source of the manuscript
π man contains the description and example of the code and
data
βββ’ π Apex.Rd
βββ’ π WholeSurface.Rd
βββ’ π RawData.Rd
βββ’ π ThaiData.Rd
βββ’ π MultiData.Rd
βββ’ π Distribution.Rd
βββ’ π TrendLine.Rd
βββ’ π FirstObservation.Rd
βββ’ π SecondObservation.Rd
βββ’ π PCLR_Test.Rd
βββ’ π PCLR_Train.Rd
βββ’ π PCLR_result.Rd
βββ’ π PCR_Test.Rd
βββ’ π PCR_Train.Rd
βββ’ π PCR_result.Rd
βββ’ π PCQDA_Test.Rd
βββ’ π PCQDA_Train.Rd
βββ’ π PCQDA_result.Rd
βββ’ π A_PCR_Test.Rd
βββ’ π A_PCR_Train.Rd
βββ’ π A_PCR_result.Rd
βββ’ π M_PCR_Test.Rd
βββ’ π M_PCR_Train.Rd
βββ’ π M_PCR_result.Rd
π data contains the raw data to develop the models and obtain
the findings in the manuscript, and example 3D models
βββ’ π Apex.rda is the loaded example data of apex
βββ’ π WholeSurface.rdais loaded example data
of Whole surface
βββ’ π RawData.rda
βββ’ π ThaiData.rda
βββ’ π MultiData.rda
βββ’ π Distribution.rda
βββ’ π TrendLine.rda
βββ’ π FirstObservation.rda
βββ’ π SecondObservation.rda
βββ’ π PCLR_Test.rda
βββ’ π PCLR_Train.rda
βββ’ π PCR_Test.rda βββ’ π
PCR_Train.rda
βββ’ π PCQDA_Test.rda
βββ’ π PCQDA_Train.rda
βββ’ π PCQDA_Test.rda
βββ’ π PCLR_Train.rda
βββ’ π A_PCR_Test.rda
βββ’ π A_PCR_Train.rda
βββ’ π M_PCR_Test.rda
βββ’ π M_PCR_Train.rda
π R contains code for developing the age estimation models, the
example 3D models, and raw data to develop the estimation models
βββ’ π Apex.R
βββ’ π WholeSurface.R
βββ’ π RawData.R
βββ’ π ThaiData.R
βββ’ π MultiData.R
βββ’ π Distribution.R
βββ’ π TrendLine.R
βββ’ π FirstObservation.R
βββ’ π SecondObservation.R
βββ’ π PCLR_Test.R
βββ’ π PCLR_Train.R
βββ’ π PCR_Test.R βββ’ π
PCR_Train.R βββ’ π PCQDA_Test.R
βββ’ π PCQDA_Train.R βββ’ π
PCLR_Test.R
βββ’ π PCLR_Train.R
βββ’ π A_PCR_Test.R
βββ’ π A_PCR_Train.R
βββ’ π M_PCR_Test.R
βββ’ π M_PCR_Train.R
βββ’ π PCLR_result.R is the PCLR model for age
estimation
βββ’ π PCR_result.R is the PCR model for age
estimation βββ’ π PCQDA_result.R is the PCQDA model
for age estimation
βββ’ π A_PCR_result.R is the A_PCR model for age
estimation
βββ’ π M_PCR_result.R is the M_PCR model for age
estimation
The goal of JSDNE is to estimate the age with the auricular surface. Widely-used traditional age estimation methods involving macroscopic observation suffer from subjectivity. The present package aims to minimize both issues by applying computational and mathematical approaches. Dirichlet Normal Energy (DNE) was applied to assess the curvature of the 3D reconstructed auricular surface models. Ten DNE variables had high correlations, including total DNE per Total polygon faces, Mean value of DNE on apex, proportion of polygon faces with DNE of less than 0.0001 and proportion of polygon faces with DNE of over 0.6. JSDNE includes five functions: principal component quadratic discriminant analysis (PCQDA), principal component regression analysis (PCR), principal component logistic regression analysis with European (PCLR), principal component logistic regression analysis with Southeast Asian (A_PCLR), and principal component logistic regression analysis with multi-population (M_PCLR). JSDNE predicts age mathematically, objectively, and user-independently. The PCQDA function involves four age phases: phase 1(22-44yrs), phase 2(31-74yrs), phase 3(63-93yrs), and phase 4 (Over 76). The PCLR function has two age phases: phase 1 (under 67), phase 2(over 63)). It offers an output of estimated age phase and the age range. Both functions provides an output of estimated age phase and the age range. The PCR, A_PCR, and M_PCR functions provide an output of estimated age in years and the standard error (8.8yrs, 9.0 yrs, and 10.2 yrs, respectively).
The raw data obtained the findings of this study are openly available at https://github.com/jisunjang19/cran-JSDNE, doi: 10.5281/zenodo.12708779 or βJSDNEβ package
The raw datas of this study (PCLR_Train, PCLR_Test, PCQDA_Test, PCQDA_Train, PCR_Train, PCR_Test, A_PCR_Train, A_PCR_Test, and M_PCR_Train, and M_PCR_Test) could be loaded with JSDNE package. For example,
library(JSDNE)
data(PCLR_Train)
All of the data preparation and analysis in the reproducible manuscript
(vignettes/articles/population-affinity.Rmd) can be re-run. For example,
model_PCQDA <- subset(PCQDA_Train, select = -c(Cluster2, Age))
PCQDA_df <- scale(model_PCQDA)
PCQDA_df.pca <- prcomp(PCQDA_df)
PCQDA_pca <- PCQDA_df.pca$x[, 1:2]
PCQDA_df2 <- data.frame(Cluster = PCQDA_Train$Cluster2, PCQDA_pca)
PCQDA <- MASS::qda(Cluster ~ ., data = PCQDA_df2)
You can install the development version of JSDNE like so: install.packages(βJSDNEβ)
library(JSDNE)
PCQDA_result(WholeSurface,Apex)
PCLR_result(WholeSurface,Apex)
PCR_result(WholeSurface,Apex)
A_PCR_result(WholeSurface,Apex)
M_PCR_result(WholeSurface,Apex)
When importing the .ply files, I highly recommend use the vcgPlyRead function. If use different function to import the ply files, the function might not be able to read correctly.
After importing the .ply files with the vcgPlyRead function, the auricular surface .ply file should be replaced with x and the apical area with y. If oppositely applied, incorrect results will be calculated. It is recommended to check the location of both ply file.
The reproducible source for the population-affinity study (Jang et al., JAS) is in vignettes/articles/population-affinity.Rmd. It loads all datasets directly from the installed package (library(JSDNE)), so it knits from start to finish without any external files.