12 Human Karyotype

Jupyter interactive version:
  Github   Raw

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
)