Pedigree

Description

Pedigree function creates a pedigree object

Usage

1
2
3
4
Pedigree(x, subject="id", ascendant=c("father", "mother"),
  ascendantSex=c(1, 2), ascendantLevel=c(1, 1), unknown=NA, sex=NA,
  dtBirth=NA, generation=NA, family=NA, generationOrder="increasing",
  check=TRUE, sort=FALSE, extend=FALSE, drop=TRUE, codes=FALSE)

Arguments

x

data.frame or matrix

subject

character, column name in x for subjects

ascendant

character, column name(s) in x for ascendants

family

character, column name in x for family

ascendantSex

integer orcharacter, sex of ascendant(s); see details

ascendantLevel

integer, generation level of ascendant(s); see details

unknown

vector or list, uknown representation of identification and other data in the pedigree; see details

sex

character, column name in x for sex

dtBirth

character, column name in x for date of birth

generation

character, column name in x for generation

generationOrder

character, generation value is "increasing" or "decreasing" through generations; see details

check

logical, check for common errors

sort

logical, sort pedigree

extend

logical, extend pedigree

drop

logical, drop unused levels if factors are used

codes

logical, code individuals into integers

Details

FIXME: study geneSet class

Pedigree can be one source of information on genetic relationship between relatives. Take for example the following pedigree:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  paternal    paternal     maternal    maternal
  grandfather grandmother  grandfather grandmother
      |           |            |           |
      -------------            -------------
            |                        |
          father                   mother
            |                        |
            -------------------------
                        |
                     subject
                   

This information can be stored in a data.frame as

mother maternal grandfather maternal grandmother
father paternal grandfather paternal grandmother
subject father mother

There is considerable variability in terminology between as well as within various fields of genetics. We use the following terms throughout the help and code: individual (any individual in a pedigree), subject (individual whose pedigree is given i.e. individuals in the first column in upper data.frame), ascendant and descendant. Additionally, family, sex, dtBirth and generation are used for additional data in the pedigree. Their meaning should be clear. For these, argument col is usually used in function calls.

family TODO

ascendantSex can be used to define sex of ascendant(s); for example c("Male", "Female") or c("M", "F") or even c(1, 2) for father and mother or c(2, 1, 1) for mother and two possible fathers or c(1, 1) for father and maternal father etc. This data is needed only for the structure of the class and defaults should be ok for the majority. But you need to make sure that data defined here must be in accordance with values in sex column.

ascendantLevel can be used to define generation level of ascendant(s) in relation to a subject; for example c(1, 1) for father and mother or c(1, 1, 1) for mother and two possible fathers or c(1, 2) for father and maternal father etc. This data is needed only for the structure of the class and defaults should be ok for the majority.

There is no need for as.integer TODO in arguments ascendantLevel as this is done internally.

unknown TODO

Sex TODO

Date of birth TODO

generationOrder defines in which order are generation values: "increasing" if values increase from ascendants to descendants and "decreasing" if values decrease from ascendants to descendants.

check, sort, extend, and codes are actions on the pedigree and have their own help pages.

Individuals can be stored as either integer, numeric or factor TODO. In any case all id columns must have the same class and this is automatically checked. Argument drop can be used to drop unused levels, if factors are used.

as.Pedigree.* FIXME as.*.Pedigree FIXME

Object of Pedigree class is a data.frame with columns that can be divided into core columns (subject, ascendant(s), sex, dtBirth and generationTODO) and possibly other columns such as data on phenotype and genotype and other subject attributes, for example factors and covariates TODO.

Additionally, the following attributes are set on pedigree:

  • .subjectcharacter, column name of subject identification in pedigree

  • .ascendantcharacter, column name(s) of ascendant(s) identification in pedigree

  • .familycharacter, column name of family identification in pedigree

  • .ascendantSexinteger, sex of ascendant(s)

  • .ascendantLevelinteger, generation level of ascendant(s)

  • .sexcharacter, column name of subject's sex

  • .dtBirthcharacter, column name of subject's date of birth

  • .generationcharacter, column name of subject's generation

  • .generationOrdercharacter, generation value is "increasing" or "decreasing" through generations

  • .colClasscharacter, storage class for id columns: "integer", "numeric" or "factor"

  • .checkedlogical, is pedigree checked for common errors

  • .sortedlogical, is pedigree sorted; by TODO

  • .extendedlogical, is pedigree extended

  • .codedlogical, is pedigree coded

  • .unknownlist, uknown representation for individual identification and other data in the pedigree; names of the list are c(".id", ".family", ".sex", ".dtBirth", ".generation")

Value

Pedigree object as described in the details

Author(s)

Gregor Gorjanc

See Also

check, sort, and extend provide help on pedigree utility functions.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
data(Mrode2.1)
Mrode2.1$dtB <- as.Date(Mrode2.1$dtB)
x2.1 <- Pedigree(x=Mrode2.1, subject="sub", ascendant=c("fat", "mot"),
                 ascendantSex=c("M", "F"), family="fam", sex="sex",
                 generation="gen", dtBirth="dtB")











if (FALSE) {
  ## How to handle different pedigree types
  ## * multiple parents
  ped2 <- ped
  ped2$father1 <- ped$father
  ped2$father2 <- ped$father
  ped2$father <- NULL
  ped2 <- as.data.frame(ped2)
  str(Pedigree(ped2, ascendant=c("father1", "father2", "mother"),
               ascendantSex=c(1, 1, 2), ascendantLevel=c(1, 1, 1)))

  ## * different level of parents
  ped3 <- as.data.frame(ped)
  ped3$m.grandfather <- ped3$mother
  ped3$mother <- NULL
  str(Pedigree(ped3, ascendant=c("father", "m.grandfather"),
               ascendantSex=c(1, 1), ascendantLevel=c(1, 2)))
}