12 Human Karyotype

Jupyter interactive version:

12.1 Karyotype of 400 bands

Organize chr. in rows using column OTU. (Adler, 1994)

data.frame of chr. size

library(idiogramFISH)

FstRow <- length(which(humChr$group %in% c("A", "B")))        # groups in 1st row
SndRow <- length(which(humChr$group %in% "C"))               # groups in second row
TrdRow <- length(which(humChr$group %in% c("D", "E")))        # groups in third row
FrtRow <- length(which(humChr$group %in% c("F", "G", "sex")))  # groups in forth row

OTUdf <- data.frame(OTU = c(rep("row1", FstRow),
  rep("row2", SndRow),
  rep("row3", TrdRow),
  rep("row4", FrtRow)
), stringsAsFactors = FALSE
)

OTUdf$chrName <- humChr$chrName

humChr$OTU <- OTUdf$OTU
# Chromosome sizes for human
head(humChr) 
chrName group shortArmSize longArmSize OTU
1 A 5.600 5.890 row1
2 A 4.245 6.715 row1
3 A 4.220 4.720 row1
4 B 2.240 6.165 row1
5 B 2.110 5.920 row1
6 C 2.880 4.835 row2

Add OTU info. to data.frame of marks’ position

humMarkPos$OTU <- OTUdf$OTU[ match(humMarkPos$chrName, OTUdf$chrName) ]
head(humMarkPos)  
chrName markName chrRegion markDistCen markSize OTU
2 1 chr1p36.3 p 5.290 0.310 row1
3 1 chr1p36.2 p 5.100 0.190 row1
4 1 chr1p36.1 p 4.680 0.420 row1
5 1 chr1p35 p 4.435 0.245 row1
6 1 chr1p34.3 p 4.270 0.165 row1
7 1 chr1p34.2 p 4.110 0.160 row1

This is the data.frame of mark characteristics

head(humMarkColor)
markName markColor style
2 chr1p36.3 white square
3 chr1p36.2 black square
4 chr1p36.1 white square
5 chr1p35 black square
6 chr1p34.3 white square
7 chr1p34.2 black square

Plot

# fig.width = 10, fig.height = 28
par(mar = rep(0, 4))
plotIdiograms(humChr,         # data.frame of chromosome size (in package)
  dfMarkPos   = humMarkPos,   # df of mark positions  (in package)
  dfMarkColor = humMarkColor, # df of mark characteristics (in package)

  addOTUName  = FALSE,        # do not add name of OTU
  karHeight   = 6,            # vertical size of kar.
  karHeiSpace = 7,            # vertical spacing among OTU
  chrWidth    = .4,           # chr. width
  chrSpacing  = .6,           # space among chr.
  classChrName = "",          # string for naming chr.
  orderChr    = "group",      # order chr. by group name

  amoSepar    = 2,            # reduce distance among OTUs
  karIndex    = FALSE,        # do not add karyotype indices
  distTextChr = 1.5,          # distance from chr. to text.

  chrColor    = "black",      # chr. color
  chrIndex    = "",           # do not add chromosome indices
  morpho      = "",           # do not add morphological categories

  autoCenSize = FALSE,        # required for centromereSize
  centromereSize = 0,         # apparent centromere size

  squareness  = 10,           # squareness of chr. and marks
  legend      = "inline",     # mark labels next to chr.
  markLabelSize   = .5,       # size of legend font
  colorBorderMark = "black",  # force color of border of marks
  pattern         = "chr[0-9XY]+", # REGEX pattern to remove from name of marks
  indexIdTextSize = 2,         # font size of chr name and indices
  lwd.chr         = .5,        # width of chr and mark borders

  ruler        = FALSE,

  xlimRightMod = 0,           # space to the right of karyotype
  ylimBotMod   = -.6          # modify ylim of bottom
)

12.2 Robertsonian Translocations

This procedure transforms the data of long arms of the chromosomes 13 and 21 from data.frames of chr. and marks in a derivative (Robertson, 1916).

# extract 13 data
humChr13     <- humChr[which(humChr$chrName %in% 13), ]
humMarkPos13 <- humMarkPos[which(humMarkPos$chrName %in% 13), ]

# extract 21 data
humChr21     <- humChr[which(humChr$chrName %in% 21), ]
humMarkPos21 <- humMarkPos[which(humMarkPos$chrName %in% 21), ]

# Making derivative data.frame of Marks

# remove p arm from 21
humMarkPos21Der <- humMarkPos21[humMarkPos21$chrRegion == "q", ]
humMarkPos21Der$chrRegion <- "p"

# remove p arm from 13
humMarkPos13Der <- humMarkPos13[humMarkPos13$chrRegion == "q", ]

# rename fragments
humMarkPos21Der$chrName <- "t(13;21)"
humMarkPos13Der$chrName <- "t(13;21)"

# merge fragments of Marks
humMarkPosDer <- rbind(humMarkPos21Der, humMarkPos13Der)

# Making derivative data.frame of chr. size

humChrDer <- humChr13
humChrDer$shortArmSize <- humChr21$longArmSize
humChrDer$chrName <- "t(13;21)"

# Make data.frame of chr. to plot
humChr1321der <- rbind(humChr13, humChrDer, humChr21)
humChr1321der <- humChr1321der[, c("chrName", "shortArmSize", "longArmSize"), ]

# marks for them, together:
humMarkPos1321Der     <- rbind(humMarkPos13, humMarkPos21, humMarkPosDer)
humMarkPos1321Der$OTU <- NULL

plot of t(13;21)

plotIdiograms(humChr1321der,     # data.frame of size of chr.
  dfMarkPos = humMarkPos1321Der, # d.f of position of marks
  dfMarkColor = humMarkColor,    # d.f of style of marks

  addOTUName = FALSE,          # do not add OTU name

  autoCenSize = FALSE,         # required for centromereSize
  centromereSize = 0,          # apparent size of centromere
  roundness = 5,               # roundness of vertices of chr. and marks
  chrColor = "black",        # chr. color
  classChrName = "",           # string for naming chr.
  karHeight = 4,               # karyotype height without spacing

  chrIndex = "",               # do not add chr. indices
  morpho = "",                 # do not add chr. morphology
  karIndex = FALSE,            # do not add karyotype indices
  distTextChr = 2,             # distance from chr. to text.

  markLabelSize = .5,          # font size of chr. mark labels
  legend = "inline",           # mark labels next to chr.
  pattern = "chr[0-9]+",       # REGEX pattern to remove from mark names
  lwd.chr = .9,                # width of chr and mark borders

  ruler = FALSE,

  ylimBotMod = -.15             # modify ylim bottom argument
  , asp = 1                     # y x aspect ratio
)

12.3 function robert

This procedure transforms the data of long arms of the chromosomes 13 and 14 from data.frames of chr. and marks in a derivative (Robertson, 1916).

We can do any Robertsonian translocation using:

chrt13q14q <- robert(humChr, humMarkPos, 13, 14, "q", "q")

# which produces a list of two data.frames:

# 1. chr. sizes
dfChrSizeDer <- chrt13q14q$dfChrSizeDer
# remove the group column
dfChrSizeDer <- dfChrSizeDer[, !(names(dfChrSizeDer) %in% "group")]

# 2. marks' positions
dfMarkPosDer <- chrt13q14q$dfMarkPosDer

head(dfMarkPosDer)
chrName markName chrRegion markDistCen markSize OTU
613 t(13;14)(q10:q10) chr14q11.1 p 0.000 0.125 row3
713 t(13;14)(q10:q10) chr14q11.2 p 0.125 0.330 row3
813 t(13;14)(q10:q10) chr14q12 p 0.455 0.335 row3
913 t(13;14)(q10:q10) chr14q13 p 0.790 0.305 row3
1013 t(13;14)(q10:q10) chr14q21 p 1.095 0.600 row3
1113 t(13;14)(q10:q10) chr14q22 p 1.695 0.330 row3

plot of t(13;14)

par(mar = c(0, 2, .5, 0))

plotIdiograms(dfChrSizeDer,               # data.frame of chromosome size
  dfMarkPos = dfMarkPosDer,   # df of mark positions
  dfMarkColor = humMarkColor, # df of mark characteristics (in package)

  addOTUName = FALSE,         # do not add name of OTU
  karIndex = FALSE,           # do not add karyotype indices
  morpho = "",                # do not add morphological categories
  chrIndex = "",              # do not add chromosome indices
  classChrName = "",          # string for naming chr.

  chrColor = "black",         # chr. color
  chrWidth = 1,               # chromosome width
  karHeight = 9,              # kar. height without space

  autoCenSize = FALSE,        # required for centromereSize
  centromereSize = 0,         # apparent centromere size
  squareness = 7,             # squareness of chr. and marks

  markLabelSize = .5,         # size of legend font
  legend = "inline",          # mark labels next to chr.
  pattern = "chr[0-9XY]+",    # REGEX pattern to remove from name of marks
  distTextChr = 6,            # distance from chr. to text.
  indexIdTextSize = 2,        # font size of chr name and indices
  lwd.chr = .5,               # width of chr and mark borders
  colorBorderMark = "black",  # force color of border of marks

  ruler = FALSE,
  xlimLeftMod = 4             # space to the right of karyotype
)