Chapter 12 Human Karyotype


Jupyter interactive version:

Colab (online) Github   Raw
12 Human Karyotype link Raw


12.1 Karyotype of 400 bands

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

library(idiogramFISH)
# Chromosome sizes for human
head(humChr) 
chrName group shortArmSize longArmSize
1 A 5.600 5.890
2 A 4.245 6.715
3 A 4.220 4.720
4 B 2.240 6.165
5 B 2.110 5.920
6 C 2.880 4.835
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("otu1",FstRow),
                        rep("otu2",SndRow),
                        rep("otu3",TrdRow),
                        rep("otu4",FrtRow)
), stringsAsFactors=FALSE # c
) # df

OTUdf$chrName<-humChr$chrName

humChr$OTU<-OTUdf$OTU

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

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

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

              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
              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 otu3
713 t(13;14)(q10:q10) chr14q11.2 p 0.125 0.330 otu3
813 t(13;14)(q10:q10) chr14q12 p 0.455 0.335 otu3
913 t(13;14)(q10:q10) chr14q13 p 0.790 0.305 otu3
1013 t(13;14)(q10:q10) chr14q21 p 1.095 0.600 otu3
1113 t(13;14)(q10:q10) chr14q22 p 1.695 0.330 otu3

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
              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
)