RCircos包繪製染色體模式圖_2020-04-01

## 1.設置當前工作目錄

setwd("./RCircos")

## 2.安裝和導入R包:RCircos

# install.packages("RCircos")

library("RCircos")

## 3.RCircos包簡要信息

### 3.1 DESCRIPTION

# Package: RCircos

# Type: Package

# Title: Circos 2D Track Plot

# Version: 1.2.1

# Date: 2019-03-10

# Author: Hongen Zhang

# Maintainer: Hongen Zhang <[email protected]>

#  Description: A simple and flexible way to generate Circos 2D track plot images for genomic data visualization is implemented in this package. The types of plots include: heatmap, histogram, lines, scatterplot, tiles and plot items for further decorations include connector, link (lines and ribbons), and text (gene) label. All functions require only R graphics package that comes with R base installation. 

# License: GPL (>= 2)

# Depends: R (>= 2.10)

# URL: http://bitbucket.org/henryhzhang/rcircos

# NeedsCompilation: no

# Packaged: 2019-03-12 16:32:41 UTC; hzhang

# Repository: CRAN

# Date/Publication: 2019-03-12 21:06:27 UTC

# Built: R 3.6.0; ; 2019-05-28 21:23:44 UTC; windows

### 3.2 MAIN FUNCTION

ls(package:RCircos)

# [1] "RCircos.Adjust.Scatter.Values"         

# [2] "RCircos.Area.Highlight"                 

# [3] "RCircos.Area.Plot"                     

# [4] "RCircos.Chromosome.Ideogram.Plot"       

# [5] "RCircos.Clear.Track"                   

# [6] "RCircos.Clear.Zoom.Area"               

# [7] "RCircos.Customized.Connection.Plot"     

# [8] "RCircos.Customized.Shape.Plot"         

# [9] "RCircos.Data.Point"                     

# [10] "RCircos.defaultBasePerUnits"           

# [11] "RCircos.defaultCharWidth"               

# [12] "RCircos.defaultChromPadding"           

# [13] "RCircos.defaultCircosUnits"             

# [14] "RCircos.defaultTextSize"               

# [15] "RCircos.Draw.Chromosome.Ideogram"       

# [16] "RCircos.Env"                           

# [17] "RCircos.Gene.Connector.Plot"           

# [18] "RCircos.Gene.Name.Plot"                 

# [19] "RCircos.Get.Arrow.Shape"               

# [20] "RCircos.Get.Chromosome.Order"           

# [21] "RCircos.Get.Data.Point.Height"         

# [22] "RCircos.Get.Default.Base.Per.Units"     

# [23] "RCircos.Get.Default.Char.Width"         

# [24] "RCircos.Get.Default.Chrom.Padding"     

# [25] "RCircos.Get.Default.Circos.Units"       

# [26] "RCircos.Get.Default.Text.Size"         

# [27] "RCircos.Get.Gene.Label.Locations"       

# [28] "RCircos.Get.Gene.Name.Plot.Parameters" 

# [29] "RCircos.Get.Heatmap.Color.Scale"       

# [30] "RCircos.Get.Heatmap.Color.Scale.Location"

# [31] "RCircos.Get.Heatmap.Data.Colors"       

# [32] "RCircos.Get.Link.Colors"               

# [33] "RCircos.Get.Padding.Constant"           

# [34] "RCircos.Get.Paired.Points.Positions"   

# [35] "RCircos.Get.Plot.Boundary"             

# [36] "RCircos.Get.Plot.Colors"               

# [37] "RCircos.Get.Plot.Ideogram"             

# [38] "RCircos.Get.Plot.Layers"               

# [39] "RCircos.Get.Plot.Parameters"           

# [40] "RCircos.Get.Plot.Positions"             

# [41] "RCircos.Get.Polygon.Height"             

# [42] "RCircos.Get.Single.Point.Positions"     

# [43] "RCircos.Get.Start.End.Locations"       

# [44] "RCircos.Get.Supported.HeatmapColors"   

# [45] "RCircos.Get.Supported.Plot.Types"       

# [46] "RCircos.Get.Track.Positions"           

# [47] "RCircos.Get.Zoom.Data"                 

# [48] "RCircos.Get.Zoom.Range"                 

# [49] "RCircos.Heatmap.Plot"                   

# [50] "RCircos.heatmapColors"                 

# [51] "RCircos.Highligh.Chromosome.Ideogram"   

# [52] "RCircos.Histogram.Plot"                 

# [53] "RCircos.Ideogram.Tick.Plot"             

# [54] "RCircos.Initialize.Plot.Parameters"     

# [55] "RCircos.Label.Chromosome.Names"         

# [56] "RCircos.Label.Zoom.Region"             

# [57] "RCircos.Line.Plot"                     

# [58] "RCircos.Link.Line"                     

# [59] "RCircos.Link.Plot"                     

# [60] "RCircos.List.Plot.Parameters"           

# [61] "RCircos.Mark.Zoom.Area"                 

# [62] "RCircos.Multiple.Species.Core.Components"

# [63] "RCircos.Multiple.Species.Dataset"       

# [64] "RCircos.paddingConst"                   

# [65] "RCircos.Parallel.Line.Plot"             

# [66] "RCircos.Plot.Heatmap.Color.Scale"       

# [67] "RCircos.Plot.Zoomed.Area"               

# [68] "RCircos.Plot.Zoomed.Continue.Lines"     

# [69] "RCircos.Plot.Zoomed.Gene.Connectors"   

# [70] "RCircos.Plot.Zoomed.Heatmap"           

# [71] "RCircos.Plot.Zoomed.Histogram"         

# [72] "RCircos.Plot.Zoomed.Ideogram.Ticks"     

# [73] "RCircos.Plot.Zoomed.Parallel.Lines"     

# [74] "RCircos.Plot.Zoomed.Polygons"           

# [75] "RCircos.Plot.Zoomed.Scatters"           

# [76] "RCircos.Plot.Zoomed.Tiles"             

# [77] "RCircos.Plot.Zoomed.Vertical.Lines"     

# [78] "RCircos.plotTypes"                     

# [79] "RCircos.Point.Plot"                     

# [80] "RCircos.Polygon.Plot"                   

# [81] "RCircos.Pseudo.Ideogram.From.Labels"   

# [82] "RCircos.Pseudo.Ideogram.From.Table"     

# [83] "RCircos.Reset.Plot.Ideogram"           

# [84] "RCircos.Reset.Plot.Parameters"         

# [85] "RCircos.Reset.Plot.Positions"           

# [86] "RCircos.Ribbon.Plot"                   

# [87] "RCircos.Scatter.Plot"                   

# [88] "RCircos.Set.Base.Plot.Positions"       

# [89] "RCircos.Set.Core.Components"           

# [90] "RCircos.Set.Cytoband.Data"             

# [91] "RCircos.Set.Plot.Area"                 

# [92] "RCircos.Set.Zoom.Plot.Positions"       

# [93] "RCircos.Sort.Genomic.Data"             

# [94] "RCircos.Tile.Plot"                     

# [95] "RCircos.Track.Outline"                 

# [96] "RCircos.Validate.Cyto.Info"             

# [97] "RCircos.Validate.Genomic.Data"         

# [98] "RCircos.Validate.Genomic.Info"         

# [99] "RCircos.Validate.Plot.Parameters"       

# [100] "RCircos.Validate.Track.Positions"       

# [101] "RCircos.Vertical.Line.Plot"             

# [102] "RCircos.Workflow"                       

# [103] "RCircos.Zoom.Area.Outline"             

# [104] "RCircos.Zoom.Paired.Plot.Positions"     

# [105] "RCircos.Zoom.Single.Plot.Positions"     

# [106] "RCircos.ZoomIn.Chromosome"             

# [107] "RCircos.ZoomOut.Chromosome"

## 4.導入測試數據以及繪製複合染色體模式圖(Circos)

#@ 導入測試數據

data(RCircos.Histogram.Data)

head(RCircos.Histogram.Data)

# Chromosome chromStart chromEnd    Data

# 1      chr1  45000000 49999999 0.070859

# 2      chr1  55000000 59999999 0.300460

# 3      chr1  60000000 64999999 0.125421

# 4      chr1  70000000 74999999 0.158156

# 5      chr1  75000000 79999999 0.163540

# 6      chr1  80000000 84999999 0.342921

data(RCircos.Heatmap.Data)

head(RCircos.Heatmap.Data)

# Chromosome chromStart chromEnd GeneName  X786.O    A498

# 1      chr1    934341  935552    HES4 6.75781  7.38773

# 2      chr1    948846  949919    ISG15 7.56297 10.49590

# 3      chr1    1138887  1142089 TNFRSF18 4.69775  4.55593

# 4      chr1    1270657  1284492    DVL1 7.76886  7.52194

# 5      chr1    1288070  1293915    MXRA8 4.49805  4.72032

# 6      chr1    1592938  1624243 SLC35E2B 8.73104  8.10229

# A549.ATCC    ACHN  BT.549  CAKI.1

# 1  6.47890 6.05517  8.85062 7.00307

# 2  5.89893 7.58095 12.08470 7.81459

# 3  4.38970 4.50064  4.47525 4.47721

# 4  6.87125 7.03517  7.65386 7.69733

# 5  4.62207 4.58575  5.66389 4.93499

# 6  8.36599 9.04116  9.24175 9.89727

data(RCircos.Link.Data)

head(RCircos.Link.Data)

# Chromosome chromStart  chromEnd Chromosome.1 chromStart.1

# 1      chr1    8284703  8285399        chr1      8285752

# 2      chr1  85980143  85980624        chr7    123161313

# 3      chr1  118069850 118070319        chr1    118070329

# 4      chr1  167077258 167077658        chr1    169764630

# 5      chr1  171671272 171671550        chr1    179790879

# 6      chr1  174333479 174333875        chr6    101861516

# chromEnd.1

# 1    8286389

# 2  123161687

# 3  118070689

# 4  169764965

# 5  179791292

# 6  101861840

data(UCSC.HG19.Human.CytoBandIdeogram);

head(UCSC.HG19.Human.CytoBandIdeogram);

# Chromosome ChromStart ChromEnd  Band  Stain

# 1      chr1          0  2300000 p36.33  gneg

# 2      chr1    2300000  5400000 p36.32 gpos25

# 3      chr1    5400000  7200000 p36.31  gneg

# 4      chr1    7200000  9200000 p36.23 gpos25

# 5      chr1    9200000 12700000 p36.22  gneg

# 6      chr1  12700000 16200000 p36.21 gpos50

data(UCSC.Mouse.GRCm38.CytoBandIdeogram);

head(UCSC.Mouse.GRCm38.CytoBandIdeogram);

# Chromosome ChromStart ChromEnd Band  Stain

# 1      chr1          0  8840440  qA1 gpos100

# 2      chr1    8840440 12278390  qA2    gneg

# 3      chr1  12278390 20136559  qA3  gpos33

# 4      chr1  20136559 22101102  qA4    gneg

# 5      chr1  22101102 30941543  qA5 gpos100

# 6      chr1  30941543 43219933  qB    gneg

data(UCSC.Baylor.3.4.Rat.cytoBandIdeogram);

head(UCSC.Baylor.3.4.Rat.cytoBandIdeogram);

# Chromosome ChromStart ChromEnd Band Stain

# 1      chr1          0 10142096  p13  gneg

# 2      chr1  10142096 24272657  p12  gvar

# 3      chr1  24272657 38517175  p11  gneg

# 4      chr1  38517175 48659271  q11  gpos

# 5      chr1  48659271 69741157  q12  gneg

# 6      chr1  69741157 90025350  q21  gpos

chr.exclude <- NULL;

cyto.info <- UCSC.HG19.Human.CytoBandIdeogram;

tracks.inside <- 10;

tracks.outside <- 0;

RCircos.Set.Core.Components(cyto.info, chr.exclude, tracks.inside, tracks.outside);

?RCircos.Reset.Plot.Parameters

rcircos.params <- RCircos.Get.Plot.Parameters();

rcircos.cyto <- RCircos.Get.Plot.Ideogram();

rcircos.position <- RCircos.Get.Plot.Positions();

RCircos.List.Plot.Parameters()

rcircos.params <- RCircos.Get.Plot.Parameters();

rcircos.params$base.per.unit <- 3000;

RCircos.Reset.Plot.Parameters(rcircos.params);

RCircos.List.Plot.Parameters();

### 4.1 Initialize Graphic Device

#@ RCircos provides a set of graphic plot functions but does not handle graphic devices. To make RCircos plots, a graphic device has to be opened first. Currently, RCircos works with files supported by R graphics package such as tiff, png, pdf images as well as GUI windows. For example, to make a pdf file with RCircos plot image:

out.file <- "RCircosDemoHumanGenome.pdf";

pdf(file=out.file, height=8, width=8, compress=TRUE);

RCircos.Set.Plot.Area();

#@ RCircos.Set.Plot.Area() will setup plot area base on total number of tracks inside and outside of chromosome ideogram. User can also setup plot area by summit the R plot commands for user defined plot  area, for example:

par(mai=c(0.25, 0.25, 0.25, 0.25));

plot.new();

frame()

plot.window(c(-2.5,2.5), c(-2.5, 2.5));

#@ After everything is done, the graphic device needs to be closed with dev.off()

### 4.2 Plot Chromosome Ideogram

#@ For RCircos plot, a common first step is to draw chromosome ideograms and label chromosomes with names and highlights. After the RCircos core components were initialized and graphic device was open, simply call the function of RCircos.Chromosome.Ideogram.Plot() will add the chromosome ideogram to the current plot.

RCircos.Chromosome.Ideogram.Plot();

### 4.3 Gene Labels and connectors on RCircos Plot

#@ Due to the resolution issues, only limited number of gene names can be labeled. For best visualization, cex should be no less than 0.4 when draw gene labels.

data(RCircos.Gene.Label.Data);

name.col <- 4;

side <- "in";

track.num <- 1;

RCircos.Gene.Connector.Plot(RCircos.Gene.Label.Data, track.num, side);

track.num <- 2;

RCircos.Gene.Name.Plot(RCircos.Gene.Label.Data, name.col,track.num, side);

### 4.4 Heatmap, Histogram, Line, Scatter, and Tile Plot

#@ Heatmap, histogram, line, scatter, and tile plot with RCircos require that the first three columns of input data are genomic position information in the order of chromosome name, start, and end position.

data(RCircos.Heatmap.Data);

data.col <- 6;

track.num <- 5;

side <- "in";

RCircos.Heatmap.Plot(RCircos.Heatmap.Data, data.col, track.num, side);

data(RCircos.Scatter.Data);

data.col <- 5;

track.num <- 6;

side <- "in";

by.fold <- 1;

RCircos.Scatter.Plot(RCircos.Scatter.Data, data.col, track.num, side, by.fold);

data(RCircos.Line.Data);

data.col <- 5;

track.num <- 7;

side <- "in";

RCircos.Line.Plot(RCircos.Line.Data, data.col, track.num, side);

data(RCircos.Histogram.Data);

data.col <- 4;

track.num <- 8;

side <- "in";

RCircos.Histogram.Plot(RCircos.Histogram.Data, data.col, track.num, side);

data(RCircos.Tile.Data);

track.num <- 9;

side <- "in";

RCircos.Tile.Plot(RCircos.Tile.Data, track.num, side);

### 4.5 Links: A Special Plot

#@ Links presents relationship of two genomic positions and it is always the last track inside chromosome ideogram. Different from other data plots, input data for links plot is a data frame with paired genomic positions in the order of chromosome, start, and end position for each one genomic position.

data(RCircos.Link.Data);

track.num <- 11;

RCircos.Link.Plot(RCircos.Link.Data, track.num, TRUE);

data(RCircos.Ribbon.Data);

RCircos.Ribbon.Plot(ribbon.data=RCircos.Ribbon.Data, track.num=11, by.chromosome=FALSE, twist=FALSE);

dev.off();

 

### 4.6 More Information

demo("RCircos.Demo.Human");

 

demo("RCircos.Demo.Mouse.And.Rat");

 

## 5.結束

sessionInfo()

# R version 3.6.3 (2020-02-29)

# Platform: x86_64-w64-mingw32/x64 (64-bit)

# Running under: Windows 10 x64 (build 18363)

#

# Matrix products: default

#

# locale:

#  [1] LC_COLLATE=Chinese (Simplified)_China.936

# [2] LC_CTYPE=Chinese (Simplified)_China.936 

# [3] LC_MONETARY=Chinese (Simplified)_China.936

# [4] LC_NUMERIC=C                             

# [5] LC_TIME=Chinese (Simplified)_China.936   

#

# attached base packages:

#  [1] stats    graphics  grDevices utils    datasets  methods 

# [7] base   

#

# other attached packages:

#  [1] RCircos_1.2.1

#

# loaded via a namespace (and not attached):

#  [1] compiler_3.6.3 tools_3.6.3    packrat_0.5.0