We wanna do a graph to show the Syntenic links between a linkage map and physical map visualized using Circos
source("http://bioconductor.org/biocLite.R")
biocLite("OmicCircos")
Each line will represents a connection between the position of a particular marker in our linkage map (black; scale in cM) and a homologous sequence in physical map (various colors; scale in Mb). The idea is to do something like this picture:
I have a strutured family (parental, F1 and F2) that was sequenced and aligned agains the reference genome. I did a linkage map using r/onemap (CRAN) to check the recombination fraction of the markers in the F2 family (only markers with Mendelian Inheritance). Now I have the groups obtained by the recombination in this format:
> maps
[[7]]
Printing map:
Markers Position Parent 1 Parent 2
4142 MS33_8248325 0.00 a | | b a | | a
4143 MS33_8248326 0.10 a | | b a | | a
4144 MS33_8248327 0.20 a | | b a | | a
4145 MS33_8248328 0.30 a | | b a | | a
4146 MS33_8248329 0.40 a | | b a | | a
4147 MS33_8248330 0.50 a | | b a | | a
6 markers log-likelihood: -49.90696
MS33_8248325 represents the marker where we have the chromossome (M33) and position (8248325 in the chr) informations and the cM postion in the second collum.
How should I show the comparizon between linkage map and physical map to prove that they are in agreement??
looks like that "OmicCircos" is a good idea, but I cannot find a tutorial to generate a graph like this one presented here where is divided into two sides (right: chromossomes and left: linkage groups).
I was working in a script trying to edit this command line that it was provided by OmicCircos totorial:
library (OmicCircos)
options (stringsAsFactors=FALSE) ;
set.seed(1234) ;
# initial
seg.num <-10
ind.num <-20
seg.po<- c(20:50)
link.num <- 10
link.pg.num <-4
sim.out<- sim.circos (seg=seg.num, po=seg.po, ind=ind.num, link=link.num, link.pg=link.pg.num)
seg.f<-sim.out$seg.frame
seg.v<-sim.out$seg.mapping
link.v<-sim.out$seg.link
link.pg.v<-sim.out$seg.link.pg
seg.num<-length(unique(seg.f[,1]))
#namesegment(option)
seg.name<-paste("chr",1:seg.num,sep="")
db<-segAnglePo(seg.f,seg=seg.name)
#settransparentcolors
colors<-rainbow(seg.num,alpha=0.5)
#Togetperfectcircle,theoutputfigureshouldbeinsquare.Theoutputfileisthesamewidthandheight.
#Thesamelinevaluesareinthemarginofthegraphicalparameters.
par(mar=c(2,2,2,2));
plot(c(1,800),c(1,800),type="n",axes=FALSE,xlab="",ylab="",main="")
circos(R=400,cir=db,type="chr",col=colors,print.chr.lab=TRUE,W=4,scale=TRUE)
circos(R=360,cir=db,W=40,mapping=seg.v,col.v=3,type="l",B=TRUE,col=colors[1],lwd=2,scale=TRUE)
circos(R=320,cir=db,W=40,mapping=seg.v,col.v=3,type="ls",B=FALSE,col=colors[9],lwd=2,scale=TRUE)
circos(R=280,cir=db,W=40,mapping=seg.v,col.v=3,type="lh",B=TRUE,col=colors[7],lwd=2,scale=TRUE)
circos(R=240,cir=db,W=40,mapping=seg.v,col.v=19,type="ml",B=FALSE,col=colors,lwd=2,scale=TRUE)
circos(R=200,cir=db,W=40,mapping=seg.v,col.v=19,type="ml2",B=TRUE,col=colors, lwd=2)
circos(R=160,cir=db,W=40,mapping=seg.v,col.v=19,type="ml3",B=FALSE,cutoff=5, lwd=2)
circos(R=150,cir=db,W=40,mapping=link.v,type="link",lwd=2,col=colors[c(1,7)])
circos(R=150,cir=db,W=40,mapping=link.pg.v,type="link.pg",lwd=2,col=sample(colors,link.pg.num))
dev.off()
#graphics.off()
Thank you very much
you have missed a "(" in this sentence (I have no reputation enough to edit):
seg.f <- data.frameseg.name=segs, seg.Start=start, seg.End=end, the.v=runif(length(end)), Note=sample(LETTERS, length(end), rep=T));