Search
Question: How to represent a relationship between physical map and linkage map of a sequenced data using OmicCircos or another similar
1
gravatar for pertille
21 months ago by
pertille0
Sweden
pertille0 wrote:

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

 

ADD COMMENTlink modified 20 months ago by Hu, Ying NIH/NCI [E]50 • written 21 months ago by pertille0
2
gravatar for Hu, Ying NIH/NCI [E]
20 months ago by
United States
Hu, Ying NIH/NCI [E]50 wrote:

## please try the following codes

library (OmicCircos)

options (stringsAsFactors=FALSE) ;
set.seed(1234) ;

seg1   <- rep(paste0("Dr", 1:25), each=70);
seg2   <- rep(paste0("LG", 1:25), each=70);
segs   <- c(seg1, seg2);
end    <- rep(1:70, 50);
start  <- end - 1;

seg.f <- data.frameseg.name=segs, seg.Start=start, seg.End=end, 
                    the.v=runif(length(end)), Note=sample(LETTERS, length(end), rep=T));

db    <- segAnglePo(seg.f,seg=unique(segs));

## colors
col1  <- rainbow(25);
col2  <- rainbow(25, alpha=0.3);
chr.c <- c(col1, rep("black", 25));

## links
link.num <- 100;
link.i   <- sample(1:length(seg1), link.num, rep=T);
LG1      <- length(seg1) + 1;
link.j   <- sample(LG1:length(end), link.num, rep=T);
link.df  <- cbind(seg.f[link.i,c(1,2,5)], seg.f[link.j,c(1,2,5)]);
link.n   <- gsub("Dr", "", link.df[,1]);
link.c   <- col2[as.numeric(link.n)]

pdf("2016_03_27.pdf", 8, 8);
par(mar=c(2,2,2,2));
plot(c(1,800),c(1,800),type="n",axes=FALSE,xlab="",ylab="",main="")
circos(R=360, cir=db, type="chr",col=chr.c, print.chr.lab=TRUE, W=40, scale=TRUE)
circos(R=350, cir=db, W=4, mapping=link.df, type="link", lwd=3, col=link.c);
dev.off();

ADD COMMENTlink written 20 months ago by Hu, Ying NIH/NCI [E]50

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

ADD REPLYlink written 20 months ago by pertille0
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.2.0
Traffic: 101 users visited in the last hour