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
)
