## ----setup, include = FALSE---------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
library(visPedigree)

## ----gettingdataset,eval=FALSE------------------------------------------------
# data(package="visPedigree")

## ----simpleped----------------------------------------------------------------
head(simple_ped)
tail(simple_ped)
# The number of individuals in the pedigree dataset
nrow(simple_ped)
# Individual records with missing parents
simple_ped[Sire %in% c("0", "*", "NA", NA) |
             Dam %in% c("0", "*", "NA", NA)]

## -----------------------------------------------------------------------------
x <- data.table::copy(simple_ped)
x[ID == "J2F588", Sire := "J0Z167"]
y <- tidyped(x)

## ----tidyped------------------------------------------------------------------
tidy_simple_ped <- tidyped(simple_ped)
head(tidy_simple_ped)
tail(tidy_simple_ped)
nrow(tidy_simple_ped)

## -----------------------------------------------------------------------------
tidy_simple_ped_no_gen_num <-
  tidyped(simple_ped, addgen = FALSE, addnum = FALSE)
    head(tidy_simple_ped_no_gen_num)

## ----loop_detection, error=TRUE-----------------------------------------------
try({
# loop_ped contains cycles (e.g., V -> T -> R -> P -> M -> V)
# Attempting to tidy it will result in an error
try(tidyped(loop_ped))
})

## ----writeped,eval=FALSE------------------------------------------------------
# saved_ped <- data.table::copy(tidy_simple_ped)
# saved_ped[is.na(Sire), Sire := "0"]
# saved_ped[is.na(Dam), Dam := "0"]
# data.table::fwrite(
#   x = saved_ped,
#   file = tempfile(fileext = ".csv"),
#   sep = ",",
#   quote = FALSE
# )

## -----------------------------------------------------------------------------
tidy_simple_ped_J5X804_ancestors <-
  tidyped(ped = tidy_simple_ped_no_gen_num, cand = "J5X804")
  tail(tidy_simple_ped_J5X804_ancestors)

## -----------------------------------------------------------------------------
tidy_simple_ped_J5X804_ancestors_2 <-
  tidyped(ped = tidy_simple_ped_no_gen_num,
  cand = "J5X804",
  tracegen = 2)
  print(tidy_simple_ped_J5X804_ancestors_2)

## -----------------------------------------------------------------------------
tidy_simple_ped_J0Z990_offspring <-
  tidyped(ped = tidy_simple_ped_no_gen_num, cand = "J0Z990", trace = "down")
  print(tidy_simple_ped_J0Z990_offspring)

## ----intped-------------------------------------------------------------------
tidy_simple_ped_with_int <-
  tidyped(ped = tidy_simple_ped_no_gen_num, addnum = TRUE)
head(tidy_simple_ped_with_int)

## ----inbreed, fig.width=6.5, fig.height=6.5-----------------------------------
# Create a simple inbred pedigree
library(data.table)
test_ped <- data.table(
  Ind = c("A", "B", "C", "D", "E"),
  Sire = c(NA, NA, "A", "C", "C"),
  Dam = c(NA, NA, "B", "B", "D"),
  Sex = c("male", "female", "male", "female", "male")
)
# Option 1: Calculate during tidying
tidy_test <- tidyped(test_ped, inbreed = TRUE)
head(tidy_test)

# Option 2: Calculate after tidying
tidy_test <- inbreed(tidyped(test_ped))

## ----summary------------------------------------------------------------------
# Summarize the tidied pedigree
summary(tidy_simple_ped)

# Summarize with inbreeding info
summary(tidy_test)

