diff --git a/Gallery.html b/Gallery.html
index 891ccdb..4b1cd7c 100644
--- a/Gallery.html
+++ b/Gallery.html
@@ -10,18 +10,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
shinyCircos
This is the repository for the Shiny application presented in “shinyCircos: an R/shiny application for creation of Circos plot interactively” (Yu et al. 2017).
@@ -68,18 +126,25 @@
shinyCircos
Use shinyCircos online
-
shinyCircos is deployed at https://yimingyu.shinyapps.io/shinycircos/ for online use.
shinyCircos is idle until you activate it by accessing this URL.
So it may take some time when you access this URL for the first time.
Once it was activated, shinyCircos could be used smoothly and easily.
+
shinyCircos is deployed at https://yimingyu.shinyapps.io/shinycircos/ and http://shinycircos.ncpgr.cn/ for online use.
+shinyCircos is idle until you activate it by accessing the two URLs.
+So it may take some time when you access this URL for the first time.
+Once it was activated, shinyCircos could be used smoothly and easily.
-
-
Launch shinyCircos directly from R and GitHub
+
+
+
@@ -146,7 +223,7 @@
Deploy shinyCircos on local or web Linux server
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
- script.src = "https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
+ script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
document.getElementsByTagName("head")[0].appendChild(script);
})();
diff --git a/README.md b/README.md
index 84cbf64..3683945 100644
--- a/README.md
+++ b/README.md
@@ -7,14 +7,16 @@ This is the repository for the Shiny application presented in "shinyCircos: an R
# Use shinyCircos online
-shinyCircos is deployed at https://yimingyu.shinyapps.io/shinycircos/ for online use.
-shinyCircos is idle until you activate it by accessing this URL.
+shinyCircos is deployed at https://yimingyu.shinyapps.io/shinycircos/ and http://shinycircos.ncpgr.cn/ for online use.
+shinyCircos is idle until you activate it by accessing the two URLs.
So it may take some time when you access this URL for the first time.
Once it was activated, shinyCircos could be used smoothly and easily.
*****
-# Launch shinyCircos directly from R and GitHub
+#
Launch shinyCircos directly from R and GitHub (preferred approach)
+
+User can choose to run shinyCircos installed locally for a more preferable experience.
**Step 1: Install R and RStudio**
@@ -28,7 +30,8 @@ Start an R session using RStudio and run these lines:
```
install.packages("shiny")
install.packages("circlize")
-install.packages("RColorBrewer")
+install.packages("RColorBrewer")
+install.packages("data.table")
# try http:// if https:// URLs are not supported
source("https://bioconductor.org/biocLite.R")
biocLite("GenomicRanges")
@@ -57,7 +60,8 @@ Start an R session and run these lines in R:
```
install.packages("shiny")
install.packages("circlize")
-install.packages("RColorBrewer")
+install.packages("RColorBrewer")
+install.packages("data.table")
## try http:// if https:// URLs are not supported
source("https://bioconductor.org/biocLite.R")
biocLite("GenomicRanges")
diff --git a/track5.csv b/example_data/barplot.csv
similarity index 96%
rename from track5.csv
rename to example_data/barplot.csv
index ff9094f..b408da0 100644
--- a/track5.csv
+++ b/example_data/barplot.csv
@@ -1,326 +1,326 @@
-chr,start,end,value1
-chr1,10382554,26901963,0.374
-chr1,26901963,30511288,0.084
-chr1,30956226,33621691,0.89
-chr1,35113388,36674459,0.988
-chr1,36674459,47502070,-0.441
-chr1,48540858,64361678,0.484
-chr1,65550459,66334983,0.431
-chr1,74813538,77752525,-0.121
-chr1,80541551,81859886,-0.119
-chr1,84079906,85120547,0.452
-chr1,85291141,94792370,-0.646
-chr1,95160076,108709613,-0.667
-chr1,109285679,114859917,0.636
-chr1,117313660,119014785,-0.432
-chr1,123700754,125409230,-0.078
-chr1,131156460,131169452,-0.051
-chr1,134277731,136975627,-0.578
-chr1,139844093,148713264,0.111
-chr1,153913087,163728863,0.63
-chr1,170222715,173286266,-1.067
-chr1,184836064,185718332,-0.214
-chr1,189215472,190784699,-0.509
-chr1,195730588,197405794,0.365
-chr1,197998204,200452740,-0.085
-chr1,212178954,214983546,-0.27
-chr1,221833224,241624927,-0.557
-chr2,2129395,9774923,0.237
-chr2,14718126,15320740,0.529
-chr2,15892347,18168752,-0.862
-chr2,24210072,26870490,0.644
-chr2,32517685,38259940,-0.074
-chr2,48441515,54690541,-0.408
-chr2,57006782,63899375,0.677
-chr2,72737106,72869924,0.8
-chr2,74775247,83352843,-0.576
-chr2,85071611,86824864,-0.814
-chr2,92983201,101748572,0.32
-chr2,103044683,108925043,0.034
-chr2,109209533,110275634,-0.415
-chr2,117780937,138600212,-0.99
-chr2,138975235,142066119,-0.696
-chr2,150953077,151025458,-0.819
-chr2,160886740,161369940,0.029
-chr2,164267753,165071506,-1.518
-chr2,172329805,180474789,-0.19
-chr2,182025908,182080457,0.177
-chr2,215902954,219869869,-0.456
-chr2,222747294,223087814,-0.551
-chr2,225459896,225545592,0.365
-chr2,227672764,235415820,-0.442
-chr2,235575497,242746555,-0.339
-chr3,472933,7160480,0.477
-chr3,10972902,11789212,0.636
-chr3,16098391,31244985,0.013
-chr3,38228217,40488541,-0.526
-chr3,46741005,47982976,-0.01
-chr3,55398501,57716447,0.422
-chr3,60019318,60923873,-0.447
-chr3,61355054,78193848,-0.013
-chr3,82784452,85804015,0.956
-chr3,103235012,103600795,0.812
-chr3,105022802,108342796,0.057
-chr3,110598458,113841834,0.048
-chr3,115180148,128918401,0.292
-chr3,138056940,139174637,-0.177
-chr3,151092948,152269392,-0.331
-chr3,153964050,156467271,0.026
-chr3,156785692,163621743,0.773
-chr3,171304429,171481762,-0.277
-chr3,176691839,177765688,-0.544
-chr3,178670830,181240760,0.665
-chr3,186771730,191261660,0.336
-chr4,8617827,16885659,-0.831
-chr4,18135416,25567929,0.239
-chr4,28807109,32277018,0.289
-chr4,37243872,48019885,-0.076
-chr4,49521604,51177146,-1.098
-chr4,54512792,67295240,0.72
-chr4,67402717,75328063,-0.001
-chr4,78706332,79416576,0.149
-chr4,92007062,100685570,-0.593
-chr4,102148805,105403307,0.482
-chr4,113083992,114676513,-0.683
-chr4,117569665,122741018,-0.744
-chr4,124465720,128262006,0.446
-chr4,136263783,136704997,0.457
-chr4,137006027,145619806,0.369
-chr4,155813350,159636189,-0.104
-chr4,160052696,164253999,0.368
-chr4,165475689,168588193,0.394
-chr4,172992292,180234026,-0.225
-chr4,182663364,187153582,0.035
-chr5,926394,2461362,-0.071
-chr5,7028438,14627522,0.174
-chr5,18695375,22796412,0.114
-chr5,35746218,36944345,0.32
-chr5,44362010,53608867,-0.045
-chr5,59540377,60167450,0.345
-chr5,68897249,70902950,-0.857
-chr5,77763879,80508635,0.224
-chr5,81003301,83939921,0.952
-chr5,84341244,93367290,-0.144
-chr5,107729751,112004788,0.58
-chr5,115092061,116014805,0.506
-chr5,122796508,123755257,0.062
-chr5,128212367,143190445,-0.153
-chr5,144837438,150011987,0.462
-chr5,153173993,154719442,0.421
-chr5,157758550,161839769,0.42
-chr5,174257503,177473823,0.044
-chr5,179353541,179355785,0.42
-chr6,6656943,15095867,-0.116
-chr6,15984841,18220877,-0.824
-chr6,30826393,34381689,-0.282
-chr6,37455538,41643895,-0.508
-chr6,45903353,53742447,-0.176
-chr6,55407551,56014361,-0.106
-chr6,57050057,75985582,-0.747
-chr6,79627410,80386719,0.246
-chr6,83860104,83965175,-1.027
-chr6,88473932,100674041,-1.262
-chr6,112950823,119312527,0.911
-chr6,128026505,128300330,0.628
-chr6,138531792,140411817,0.071
-chr6,154517911,154577931,-0.307
-chr6,155180343,157686769,-0.073
-chr6,159245760,162260759,0.335
-chr6,163498384,167490294,0.878
-chr6,168377802,169637591,-0.031
-chr7,3717722,11341539,0.104
-chr7,11939095,21307039,0.188
-chr7,22429333,23919101,-0.106
-chr7,26951652,27460470,0.141
-chr7,28005007,36408475,-0.845
-chr7,37828954,45510261,0.212
-chr7,46603089,49459652,-0.708
-chr7,53379468,55151227,0.238
-chr7,56055211,65079657,-0.296
-chr7,77156513,79038981,-0.155
-chr7,86215222,98185827,-0.686
-chr7,100093475,113037491,-0.7
-chr7,119096136,120039191,-0.283
-chr7,123461106,128803487,1.057
-chr7,132947982,134371644,0.327
-chr7,140010766,140017296,-0.844
-chr7,150581963,158645948,1.232
-chr8,16635690,17078726,0.085
-chr8,28493218,31056007,-0.009
-chr8,58891366,71682760,0.856
-chr8,77798448,78691017,-0.433
-chr8,79093374,82890571,-0.651
-chr8,83024879,83134991,0.354
-chr8,83281096,89736885,0.916
-chr8,91848785,93882499,-0.187
-chr8,96700994,98035003,0.888
-chr8,101831283,103071855,0.27
-chr8,109045298,111321674,-1.027
-chr8,119763743,120221037,-0.447
-chr8,124878967,126472196,0.134
-chr8,134025343,138548858,-0.242
-chr8,138611393,138822204,-0.382
-chr9,4828275,11438119,0.402
-chr9,12250636,13618315,-0.319
-chr9,24750216,24786318,0.96
-chr9,26694991,31364313,-0.726
-chr9,46100002,51444987,0.086
-chr9,56773084,58391580,1.302
-chr9,59024024,61445115,-0.828
-chr9,72996454,76976326,-0.101
-chr9,77221071,77604504,-0.734
-chr9,83778665,101395450,0.58
-chr9,103440648,106868837,-0.335
-chr9,109678054,117611546,0.703
-chr9,125498308,133242489,-0.52
-chr9,133886946,138000064,0.54
-chr9,139887943,140911964,0.144
-chr10,6847158,8651480,0.106
-chr10,11851778,22769761,-0.158
-chr10,23704731,41978461,0.159
-chr10,46625455,51556666,-0.027
-chr10,56732367,56956126,-0.401
-chr10,58353774,68119558,-1.428
-chr10,68169798,73942294,-0.787
-chr10,82331432,83234356,-0.786
-chr10,86099987,92753813,-0.314
-chr10,94282133,97711390,0.285
-chr10,98018276,98601238,-0.05
-chr10,98976703,99176909,-0.408
-chr10,108219190,117818247,0.409
-chr10,118180389,126364974,-0.005
-chr11,1057662,3121490,-0.827
-chr11,4788689,19397661,0.572
-chr11,23879410,29627657,-0.078
-chr11,33476098,38433495,-0.687
-chr11,42155238,46215441,0.319
-chr11,58433803,63667911,-0.034
-chr11,64751477,68332974,0.02
-chr11,79451694,81142433,-0.005
-chr11,83105168,85024701,0.701
-chr11,90210442,103054933,0.607
-chr11,116063941,117638498,-0.04
-chr11,118420115,118952389,0.542
-chr11,120566580,120800103,-0.336
-chr11,127623336,129388945,-0.042
-chr12,1941140,9733877,-0.113
-chr12,10177282,10976500,-0.096
-chr12,11405870,12061368,0.498
-chr12,12760674,22241803,0.16
-chr12,36640953,40642085,0.318
-chr12,45587682,48835100,0.552
-chr12,50438252,50602819,-0.217
-chr12,63723821,68038613,-0.3
-chr12,68405603,74073536,-0.35
-chr12,74750458,75084120,-1.016
-chr12,105769939,107670627,-0.45
-chr12,111267596,114151400,-0.781
-chr12,115172399,115291698,0.265
-chr12,119482998,128761567,-0.1
-chr13,4810091,21180378,0.478
-chr13,21284704,23025267,-0.289
-chr13,26728972,29804118,0.278
-chr13,34234707,38395980,-0.131
-chr13,39968906,48134425,0.386
-chr13,56206532,60329263,-0.705
-chr13,62071394,64490387,-0.267
-chr13,64922614,66745971,-0.462
-chr13,82066627,85709093,0.158
-chr13,93185183,98882743,0.207
-chr13,100021766,101880877,0.438
-chr13,105433788,110692913,-0.428
-chr14,1464317,2875625,-0.733
-chr14,11511975,12626041,-0.281
-chr14,17198014,24554557,0.283
-chr14,28905461,30435933,0.401
-chr14,31809483,40550195,0.31
-chr14,45816054,47595547,-0.31
-chr14,70527824,72132671,-0.338
-chr14,76357311,80010521,-0.53
-chr14,81155476,83284934,-0.475
-chr14,87888162,91696962,-0.048
-chr14,101789921,105828584,0.419
-chr15,4172339,8981726,0.693
-chr15,15277069,18807415,-0.44
-chr15,24372921,27153389,0.027
-chr15,31901288,34315773,0.197
-chr15,43064130,44689398,-0.683
-chr15,47213394,75520281,1.037
-chr15,77059491,82022853,-0.35
-chr15,83091212,88470087,-0.004
-chr15,91026149,91930067,-0.405
-chr15,92344972,96228445,0.645
-chr15,99617418,102270939,0.073
-chr16,392504,2511608,0.477
-chr16,10389388,11386569,0.281
-chr16,20038073,28904276,0.24
-chr16,43192425,44864200,-0.351
-chr16,48362912,49992301,-0.657
-chr16,57863823,64294473,0.039
-chr16,67121121,75814473,-0.297
-chr16,77634832,79119914,1.085
-chr16,84765778,85452994,0.115
-chr16,87403043,87568366,-0.451
-chr17,2685121,3399556,0.673
-chr17,3846437,15405115,-0.297
-chr17,18960196,20577955,-0.655
-chr17,26557702,39564269,-0.749
-chr17,39729710,39773979,-0.256
-chr17,40472235,41867117,0.235
-chr17,42361422,55793590,-0.114
-chr17,57366313,57775091,0.667
-chr17,61057584,65804969,-0.027
-chr18,1386336,2493004,0.008
-chr18,11188616,23411046,0.287
-chr18,24450837,28461994,-1.193
-chr18,31254137,32928202,0.459
-chr18,42764825,45727824,0.92
-chr18,57975751,60514041,0.039
-chr18,61839052,62091944,-0.983
-chr18,63058018,70684075,-0.063
-chr19,7218821,10358875,0.181
-chr19,14169310,17663300,-0.586
-chr19,18546001,24961012,-0.899
-chr19,32058836,49914868,0.717
-chr19,54355066,54602771,0.638
-chr19,56506473,57234210,-0.233
-chr20,980190,14006363,-0.102
-chr20,17043456,21258814,0.516
-chr20,22439471,28010331,-0.715
-chr20,30885103,32340800,-0.402
-chr20,33278571,33394107,-0.136
-chr20,37909526,39179664,0.008
-chr20,47861035,50162134,-0.064
-chr21,3574374,7148248,-0.549
-chr21,9561835,12796067,-0.413
-chr21,18234287,30672390,0.054
-chr21,31119482,33041484,0.385
-chr21,37345287,42031711,-0.639
-chr22,17003277,19403346,-0.127
-chr22,20504857,25065638,-0.027
-chr22,26636147,28112072,-0.622
-chr22,39327898,39514268,-0.675
-chr22,48765228,48955439,-0.964
-chr22,51045863,51267874,-0.272
-chrX,25313576,27264408,-1.493
-chrX,28170034,29361881,-0.765
-chrX,32565796,38928164,0.248
-chrX,45931737,52798085,-0.008
-chrX,52993632,56167475,0.611
-chrX,57305275,63326144,-0.137
-chrX,65609931,67386181,0.208
-chrX,67739004,71517945,0.58
-chrX,75565847,77527463,0.33
-chrX,81020834,81854793,0.397
-chrX,81929837,85375876,0.479
-chrX,97893697,104193774,0.091
-chrX,110414567,114188053,-0.396
-chrX,115050384,115712292,-0.9
-chrX,136568901,140410024,-0.205
-chrX,141944291,142179540,0.081
-chrY,891250,12509721,-0.169
-chrY,15499225,23510723,0.394
-chrY,32467702,37653727,0.004
-chrY,46256270,47359996,-0.31
-chrY,47392730,51431595,-0.22
-chrY,51796266,58996547,-0.009
+chr,start,end,value
+chr1,10382554,26901963,0.374
+chr1,26901963,30511288,0.084
+chr1,30956226,33621691,0.89
+chr1,35113388,36674459,0.988
+chr1,36674459,47502070,-0.441
+chr1,48540858,64361678,0.484
+chr1,65550459,66334983,0.431
+chr1,74813538,77752525,-0.121
+chr1,80541551,81859886,-0.119
+chr1,84079906,85120547,0.452
+chr1,85291141,94792370,-0.646
+chr1,95160076,108709613,-0.667
+chr1,109285679,114859917,0.636
+chr1,117313660,119014785,-0.432
+chr1,123700754,125409230,-0.078
+chr1,131156460,131169452,-0.051
+chr1,134277731,136975627,-0.578
+chr1,139844093,148713264,0.111
+chr1,153913087,163728863,0.63
+chr1,170222715,173286266,-1.067
+chr1,184836064,185718332,-0.214
+chr1,189215472,190784699,-0.509
+chr1,195730588,197405794,0.365
+chr1,197998204,200452740,-0.085
+chr1,212178954,214983546,-0.27
+chr1,221833224,241624927,-0.557
+chr2,2129395,9774923,0.237
+chr2,14718126,15320740,0.529
+chr2,15892347,18168752,-0.862
+chr2,24210072,26870490,0.644
+chr2,32517685,38259940,-0.074
+chr2,48441515,54690541,-0.408
+chr2,57006782,63899375,0.677
+chr2,72737106,72869924,0.8
+chr2,74775247,83352843,-0.576
+chr2,85071611,86824864,-0.814
+chr2,92983201,101748572,0.32
+chr2,103044683,108925043,0.034
+chr2,109209533,110275634,-0.415
+chr2,117780937,138600212,-0.99
+chr2,138975235,142066119,-0.696
+chr2,150953077,151025458,-0.819
+chr2,160886740,161369940,0.029
+chr2,164267753,165071506,-1.518
+chr2,172329805,180474789,-0.19
+chr2,182025908,182080457,0.177
+chr2,215902954,219869869,-0.456
+chr2,222747294,223087814,-0.551
+chr2,225459896,225545592,0.365
+chr2,227672764,235415820,-0.442
+chr2,235575497,242746555,-0.339
+chr3,472933,7160480,0.477
+chr3,10972902,11789212,0.636
+chr3,16098391,31244985,0.013
+chr3,38228217,40488541,-0.526
+chr3,46741005,47982976,-0.01
+chr3,55398501,57716447,0.422
+chr3,60019318,60923873,-0.447
+chr3,61355054,78193848,-0.013
+chr3,82784452,85804015,0.956
+chr3,103235012,103600795,0.812
+chr3,105022802,108342796,0.057
+chr3,110598458,113841834,0.048
+chr3,115180148,128918401,0.292
+chr3,138056940,139174637,-0.177
+chr3,151092948,152269392,-0.331
+chr3,153964050,156467271,0.026
+chr3,156785692,163621743,0.773
+chr3,171304429,171481762,-0.277
+chr3,176691839,177765688,-0.544
+chr3,178670830,181240760,0.665
+chr3,186771730,191261660,0.336
+chr4,8617827,16885659,-0.831
+chr4,18135416,25567929,0.239
+chr4,28807109,32277018,0.289
+chr4,37243872,48019885,-0.076
+chr4,49521604,51177146,-1.098
+chr4,54512792,67295240,0.72
+chr4,67402717,75328063,-0.001
+chr4,78706332,79416576,0.149
+chr4,92007062,100685570,-0.593
+chr4,102148805,105403307,0.482
+chr4,113083992,114676513,-0.683
+chr4,117569665,122741018,-0.744
+chr4,124465720,128262006,0.446
+chr4,136263783,136704997,0.457
+chr4,137006027,145619806,0.369
+chr4,155813350,159636189,-0.104
+chr4,160052696,164253999,0.368
+chr4,165475689,168588193,0.394
+chr4,172992292,180234026,-0.225
+chr4,182663364,187153582,0.035
+chr5,926394,2461362,-0.071
+chr5,7028438,14627522,0.174
+chr5,18695375,22796412,0.114
+chr5,35746218,36944345,0.32
+chr5,44362010,53608867,-0.045
+chr5,59540377,60167450,0.345
+chr5,68897249,70902950,-0.857
+chr5,77763879,80508635,0.224
+chr5,81003301,83939921,0.952
+chr5,84341244,93367290,-0.144
+chr5,107729751,112004788,0.58
+chr5,115092061,116014805,0.506
+chr5,122796508,123755257,0.062
+chr5,128212367,143190445,-0.153
+chr5,144837438,150011987,0.462
+chr5,153173993,154719442,0.421
+chr5,157758550,161839769,0.42
+chr5,174257503,177473823,0.044
+chr5,179353541,179355785,0.42
+chr6,6656943,15095867,-0.116
+chr6,15984841,18220877,-0.824
+chr6,30826393,34381689,-0.282
+chr6,37455538,41643895,-0.508
+chr6,45903353,53742447,-0.176
+chr6,55407551,56014361,-0.106
+chr6,57050057,75985582,-0.747
+chr6,79627410,80386719,0.246
+chr6,83860104,83965175,-1.027
+chr6,88473932,100674041,-1.262
+chr6,112950823,119312527,0.911
+chr6,128026505,128300330,0.628
+chr6,138531792,140411817,0.071
+chr6,154517911,154577931,-0.307
+chr6,155180343,157686769,-0.073
+chr6,159245760,162260759,0.335
+chr6,163498384,167490294,0.878
+chr6,168377802,169637591,-0.031
+chr7,3717722,11341539,0.104
+chr7,11939095,21307039,0.188
+chr7,22429333,23919101,-0.106
+chr7,26951652,27460470,0.141
+chr7,28005007,36408475,-0.845
+chr7,37828954,45510261,0.212
+chr7,46603089,49459652,-0.708
+chr7,53379468,55151227,0.238
+chr7,56055211,65079657,-0.296
+chr7,77156513,79038981,-0.155
+chr7,86215222,98185827,-0.686
+chr7,100093475,113037491,-0.7
+chr7,119096136,120039191,-0.283
+chr7,123461106,128803487,1.057
+chr7,132947982,134371644,0.327
+chr7,140010766,140017296,-0.844
+chr7,150581963,158645948,1.232
+chr8,16635690,17078726,0.085
+chr8,28493218,31056007,-0.009
+chr8,58891366,71682760,0.856
+chr8,77798448,78691017,-0.433
+chr8,79093374,82890571,-0.651
+chr8,83024879,83134991,0.354
+chr8,83281096,89736885,0.916
+chr8,91848785,93882499,-0.187
+chr8,96700994,98035003,0.888
+chr8,101831283,103071855,0.27
+chr8,109045298,111321674,-1.027
+chr8,119763743,120221037,-0.447
+chr8,124878967,126472196,0.134
+chr8,134025343,138548858,-0.242
+chr8,138611393,138822204,-0.382
+chr9,4828275,11438119,0.402
+chr9,12250636,13618315,-0.319
+chr9,24750216,24786318,0.96
+chr9,26694991,31364313,-0.726
+chr9,46100002,51444987,0.086
+chr9,56773084,58391580,1.302
+chr9,59024024,61445115,-0.828
+chr9,72996454,76976326,-0.101
+chr9,77221071,77604504,-0.734
+chr9,83778665,101395450,0.58
+chr9,103440648,106868837,-0.335
+chr9,109678054,117611546,0.703
+chr9,125498308,133242489,-0.52
+chr9,133886946,138000064,0.54
+chr9,139887943,140911964,0.144
+chr10,6847158,8651480,0.106
+chr10,11851778,22769761,-0.158
+chr10,23704731,41978461,0.159
+chr10,46625455,51556666,-0.027
+chr10,56732367,56956126,-0.401
+chr10,58353774,68119558,-1.428
+chr10,68169798,73942294,-0.787
+chr10,82331432,83234356,-0.786
+chr10,86099987,92753813,-0.314
+chr10,94282133,97711390,0.285
+chr10,98018276,98601238,-0.05
+chr10,98976703,99176909,-0.408
+chr10,108219190,117818247,0.409
+chr10,118180389,126364974,-0.005
+chr11,1057662,3121490,-0.827
+chr11,4788689,19397661,0.572
+chr11,23879410,29627657,-0.078
+chr11,33476098,38433495,-0.687
+chr11,42155238,46215441,0.319
+chr11,58433803,63667911,-0.034
+chr11,64751477,68332974,0.02
+chr11,79451694,81142433,-0.005
+chr11,83105168,85024701,0.701
+chr11,90210442,103054933,0.607
+chr11,116063941,117638498,-0.04
+chr11,118420115,118952389,0.542
+chr11,120566580,120800103,-0.336
+chr11,127623336,129388945,-0.042
+chr12,1941140,9733877,-0.113
+chr12,10177282,10976500,-0.096
+chr12,11405870,12061368,0.498
+chr12,12760674,22241803,0.16
+chr12,36640953,40642085,0.318
+chr12,45587682,48835100,0.552
+chr12,50438252,50602819,-0.217
+chr12,63723821,68038613,-0.3
+chr12,68405603,74073536,-0.35
+chr12,74750458,75084120,-1.016
+chr12,105769939,107670627,-0.45
+chr12,111267596,114151400,-0.781
+chr12,115172399,115291698,0.265
+chr12,119482998,128761567,-0.1
+chr13,4810091,21180378,0.478
+chr13,21284704,23025267,-0.289
+chr13,26728972,29804118,0.278
+chr13,34234707,38395980,-0.131
+chr13,39968906,48134425,0.386
+chr13,56206532,60329263,-0.705
+chr13,62071394,64490387,-0.267
+chr13,64922614,66745971,-0.462
+chr13,82066627,85709093,0.158
+chr13,93185183,98882743,0.207
+chr13,100021766,101880877,0.438
+chr13,105433788,110692913,-0.428
+chr14,1464317,2875625,-0.733
+chr14,11511975,12626041,-0.281
+chr14,17198014,24554557,0.283
+chr14,28905461,30435933,0.401
+chr14,31809483,40550195,0.31
+chr14,45816054,47595547,-0.31
+chr14,70527824,72132671,-0.338
+chr14,76357311,80010521,-0.53
+chr14,81155476,83284934,-0.475
+chr14,87888162,91696962,-0.048
+chr14,101789921,105828584,0.419
+chr15,4172339,8981726,0.693
+chr15,15277069,18807415,-0.44
+chr15,24372921,27153389,0.027
+chr15,31901288,34315773,0.197
+chr15,43064130,44689398,-0.683
+chr15,47213394,75520281,1.037
+chr15,77059491,82022853,-0.35
+chr15,83091212,88470087,-0.004
+chr15,91026149,91930067,-0.405
+chr15,92344972,96228445,0.645
+chr15,99617418,102270939,0.073
+chr16,392504,2511608,0.477
+chr16,10389388,11386569,0.281
+chr16,20038073,28904276,0.24
+chr16,43192425,44864200,-0.351
+chr16,48362912,49992301,-0.657
+chr16,57863823,64294473,0.039
+chr16,67121121,75814473,-0.297
+chr16,77634832,79119914,1.085
+chr16,84765778,85452994,0.115
+chr16,87403043,87568366,-0.451
+chr17,2685121,3399556,0.673
+chr17,3846437,15405115,-0.297
+chr17,18960196,20577955,-0.655
+chr17,26557702,39564269,-0.749
+chr17,39729710,39773979,-0.256
+chr17,40472235,41867117,0.235
+chr17,42361422,55793590,-0.114
+chr17,57366313,57775091,0.667
+chr17,61057584,65804969,-0.027
+chr18,1386336,2493004,0.008
+chr18,11188616,23411046,0.287
+chr18,24450837,28461994,-1.193
+chr18,31254137,32928202,0.459
+chr18,42764825,45727824,0.92
+chr18,57975751,60514041,0.039
+chr18,61839052,62091944,-0.983
+chr18,63058018,70684075,-0.063
+chr19,7218821,10358875,0.181
+chr19,14169310,17663300,-0.586
+chr19,18546001,24961012,-0.899
+chr19,32058836,49914868,0.717
+chr19,54355066,54602771,0.638
+chr19,56506473,57234210,-0.233
+chr20,980190,14006363,-0.102
+chr20,17043456,21258814,0.516
+chr20,22439471,28010331,-0.715
+chr20,30885103,32340800,-0.402
+chr20,33278571,33394107,-0.136
+chr20,37909526,39179664,0.008
+chr20,47861035,50162134,-0.064
+chr21,3574374,7148248,-0.549
+chr21,9561835,12796067,-0.413
+chr21,18234287,30672390,0.054
+chr21,31119482,33041484,0.385
+chr21,37345287,42031711,-0.639
+chr22,17003277,19403346,-0.127
+chr22,20504857,25065638,-0.027
+chr22,26636147,28112072,-0.622
+chr22,39327898,39514268,-0.675
+chr22,48765228,48955439,-0.964
+chr22,51045863,51267874,-0.272
+chrX,25313576,27264408,-1.493
+chrX,28170034,29361881,-0.765
+chrX,32565796,38928164,0.248
+chrX,45931737,52798085,-0.008
+chrX,52993632,56167475,0.611
+chrX,57305275,63326144,-0.137
+chrX,65609931,67386181,0.208
+chrX,67739004,71517945,0.58
+chrX,75565847,77527463,0.33
+chrX,81020834,81854793,0.397
+chrX,81929837,85375876,0.479
+chrX,97893697,104193774,0.091
+chrX,110414567,114188053,-0.396
+chrX,115050384,115712292,-0.9
+chrX,136568901,140410024,-0.205
+chrX,141944291,142179540,0.081
+chrY,891250,12509721,-0.169
+chrY,15499225,23510723,0.394
+chrY,32467702,37653727,0.004
+chrY,46256270,47359996,-0.31
+chrY,47392730,51431595,-0.22
+chrY,51796266,58996547,-0.009
diff --git a/track8.csv b/example_data/barplot_bidirectional.csv
similarity index 95%
rename from track8.csv
rename to example_data/barplot_bidirectional.csv
index 699302c..1c7c357 100644
--- a/track8.csv
+++ b/example_data/barplot_bidirectional.csv
@@ -1,651 +1,651 @@
-chr,start,end,value1
-chr1,5622039,9110831,0.095
-chr1,5622039,9110831,-0.405
-chr1,16816819,18551718,0.247
-chr1,16816819,18551718,-0.253
-chr1,22908603,24839868,0.077
-chr1,22908603,24839868,-0.423
-chr1,38101291,38796611,0.896
-chr1,38101291,38796611,-0.396
-chr1,40374045,43918413,0.238
-chr1,40374045,43918413,-0.262
-chr1,47699922,49988733,0.039
-chr1,47699922,49988733,-0.461
-chr1,55363446,60076207,0.267
-chr1,55363446,60076207,-0.233
-chr1,60213989,66921798,0.003
-chr1,60213989,66921798,-0.497
-chr1,69830871,69885523,0.437
-chr1,69830871,69885523,-0.063
-chr1,73253242,75204142,0.638
-chr1,73253242,75204142,-0.138
-chr1,76457272,80237883,1.014
-chr1,76457272,80237883,-0.514
-chr1,81416983,92294847,0.089
-chr1,81416983,92294847,-0.411
-chr1,102240236,102754514,0.044
-chr1,102240236,102754514,-0.456
-chr1,114543216,126611956,0.103
-chr1,114543216,126611956,-0.397
-chr1,137794358,140110029,1.198
-chr1,137794358,140110029,-0.698
-chr1,143544690,148231626,0.823
-chr1,143544690,148231626,-0.323
-chr1,152504087,152865029,0.455
-chr1,152504087,152865029,-0.045
-chr1,170569483,175932896,0.565
-chr1,170569483,175932896,-0.0649999999999999
-chr1,184406901,186541640,0.203
-chr1,184406901,186541640,-0.297
-chr1,192562052,195432585,0.253
-chr1,192562052,195432585,-0.247
-chr1,197813459,199488327,0.2
-chr1,197813459,199488327,-0.3
-chr1,207168466,207856038,0.185
-chr1,207168466,207856038,-0.315
-chr1,210231550,214413714,0.379
-chr1,210231550,214413714,-0.121
-chr1,218330023,225775116,0.388
-chr1,218330023,225775116,-0.112
-chr1,226165374,226709902,1.322
-chr1,226165374,226709902,-0.822
-chr1,226981573,231172434,0.358
-chr1,226981573,231172434,-0.142
-chr2,13669568,16275459,0.936
-chr2,13669568,16275459,-0.436
-chr2,23600383,35903753,1.128
-chr2,23600383,35903753,-0.628
-chr2,38690763,51602785,0.034
-chr2,38690763,51602785,-0.466
-chr2,52787638,53106494,0.189
-chr2,52787638,53106494,-0.311
-chr2,62473604,63853002,0.142
-chr2,62473604,63853002,-0.358
-chr2,63883311,68622624,0.103
-chr2,63883311,68622624,-0.397
-chr2,84164305,94918993,0.246
-chr2,84164305,94918993,-0.254
-chr2,96174898,97634683,0.768
-chr2,96174898,97634683,-0.268
-chr2,97774382,98810729,0.573
-chr2,97774382,98810729,-0.073
-chr2,119458216,124860987,0.815
-chr2,119458216,124860987,-0.315
-chr2,133486083,144701126,0.762
-chr2,133486083,144701126,-0.262
-chr2,150015500,169884441,0.368
-chr2,150015500,169884441,-0.132
-chr2,171650710,173748245,0.394
-chr2,171650710,173748245,-0.106
-chr2,175189867,176558337,0.055
-chr2,175189867,176558337,-0.445
-chr2,179068622,179503046,0.852
-chr2,179068622,179503046,-0.352
-chr2,181919389,185009703,0.13
-chr2,181919389,185009703,-0.37
-chr2,187178423,194548826,0.328
-chr2,187178423,194548826,-0.172
-chr2,195733504,196579187,0.782
-chr2,195733504,196579187,-0.282
-chr2,199648543,200013509,0.634
-chr2,199648543,200013509,-0.134
-chr2,201372598,212007510,0.631
-chr2,201372598,212007510,-0.131
-chr2,216395938,218679646,0.04
-chr2,216395938,218679646,-0.46
-chr2,224472483,224808455,0.053
-chr2,224472483,224808455,-0.447
-chr2,226280058,227493192,0.01
-chr2,226280058,227493192,-0.49
-chr2,230034200,235052204,0.739
-chr2,230034200,235052204,-0.239
-chr2,236943351,240910483,0.133
-chr2,236943351,240910483,-0.367
-chr3,4777699,8367346,0.174
-chr3,4777699,8367346,-0.326
-chr3,12569294,19206235,0.309
-chr3,12569294,19206235,-0.191
-chr3,22242421,28218437,0.045
-chr3,22242421,28218437,-0.455
-chr3,31597173,46117629,0.794
-chr3,31597173,46117629,-0.294
-chr3,47880623,48541196,0.435
-chr3,47880623,48541196,-0.065
-chr3,53337177,53715146,0.159
-chr3,53337177,53715146,-0.341
-chr3,60385837,63551224,0.077
-chr3,60385837,63551224,-0.423
-chr3,64565127,66426258,0.361
-chr3,64565127,66426258,-0.139
-chr3,68661306,69564857,0.178
-chr3,68661306,69564857,-0.322
-chr3,76979484,79834878,0.481
-chr3,76979484,79834878,-0.019
-chr3,84771269,89382584,0.926
-chr3,84771269,89382584,-0.426
-chr3,96130891,97846739,0.332
-chr3,96130891,97846739,-0.168
-chr3,99479327,103126883,0.213
-chr3,99479327,103126883,-0.287
-chr3,104158068,112198039,0.201
-chr3,104158068,112198039,-0.299
-chr3,112370587,119058671,0.426
-chr3,112370587,119058671,-0.074
-chr3,122867063,126407460,0.572
-chr3,122867063,126407460,-0.072
-chr3,133689965,138490771,0.112
-chr3,133689965,138490771,-0.388
-chr3,146490251,146895938,0.213
-chr3,146490251,146895938,-0.287
-chr3,159407360,162383107,0.193
-chr3,159407360,162383107,-0.307
-chr3,179906999,184919248,0.771
-chr3,179906999,184919248,-0.271
-chr3,193465284,195297152,0.342
-chr3,193465284,195297152,-0.158
-chr4,4969470,11023301,0.664
-chr4,4969470,11023301,-0.164
-chr4,15810431,18044300,0.054
-chr4,15810431,18044300,-0.446
-chr4,23752627,31933493,0.253
-chr4,23752627,31933493,-0.247
-chr4,41897259,42274153,0.395
-chr4,41897259,42274153,-0.105
-chr4,50012715,51395792,0.254
-chr4,50012715,51395792,-0.246
-chr4,54222052,58931449,0.616
-chr4,54222052,58931449,-0.116
-chr4,60841364,71110120,0.282
-chr4,60841364,71110120,-0.218
-chr4,82779834,83511983,0.512
-chr4,82779834,83511983,-0.012
-chr4,85301854,93066700,0.56
-chr4,85301854,93066700,-0.0600000000000001
-chr4,95647786,97523743,0.111
-chr4,95647786,97523743,-0.389
-chr4,98920796,101026262,0.686
-chr4,98920796,101026262,-0.186
-chr4,102413258,106908707,0.151
-chr4,102413258,106908707,-0.349
-chr4,111239952,120119320,0.085
-chr4,111239952,120119320,-0.415
-chr4,121361380,123251839,0.847
-chr4,121361380,123251839,-0.347
-chr4,125220746,139509479,0.21
-chr4,125220746,139509479,-0.29
-chr4,143873061,149720069,0.591
-chr4,143873061,149720069,-0.091
-chr4,158791476,165400447,0.239
-chr4,158791476,165400447,-0.261
-chr4,171124502,175620144,0.303
-chr4,171124502,175620144,-0.197
-chr4,176390684,177856907,0.057
-chr4,176390684,177856907,-0.443
-chr4,187116362,190638522,0.537
-chr4,187116362,190638522,-0.037
-chr5,6253192,6446117,0.229
-chr5,6253192,6446117,-0.271
-chr5,12010312,23800697,0.1
-chr5,12010312,23800697,-0.4
-chr5,24939130,26886910,0.246
-chr5,24939130,26886910,-0.254
-chr5,28711229,34346786,0.865
-chr5,28711229,34346786,-0.365
-chr5,42703550,51800850,0.2
-chr5,42703550,51800850,-0.3
-chr5,55512235,56268975,0.215
-chr5,55512235,56268975,-0.285
-chr5,59208752,64222237,0.439
-chr5,59208752,64222237,-0.061
-chr5,71806137,72743577,0.146
-chr5,71806137,72743577,-0.354
-chr5,73145096,74099719,0.385
-chr5,73145096,74099719,-0.115
-chr5,82826400,91040068,0.527
-chr5,82826400,91040068,-0.027
-chr5,94316286,97138112,0.324
-chr5,94316286,97138112,-0.176
-chr5,103442383,112944012,0.593
-chr5,103442383,112944012,-0.093
-chr5,113517342,116953300,0.023
-chr5,113517342,116953300,-0.477
-chr5,124410305,127670668,0.687
-chr5,124410305,127670668,-0.187
-chr5,132356930,137525309,0.269
-chr5,132356930,137525309,-0.231
-chr5,144228031,153487398,0.083
-chr5,144228031,153487398,-0.417
-chr5,154267066,157655564,0.418
-chr5,154267066,157655564,-0.082
-chr5,165299530,166352138,0.469
-chr5,165299530,166352138,-0.031
-chr5,171828641,175837854,0.524
-chr5,171828641,175837854,-0.024
-chr6,1687733,5295848,0.05
-chr6,1687733,5295848,-0.45
-chr6,12091854,20663531,0.197
-chr6,12091854,20663531,-0.303
-chr6,21974123,22810333,0.788
-chr6,21974123,22810333,-0.288
-chr6,26326468,30822215,0.364
-chr6,26326468,30822215,-0.136
-chr6,33853638,38643980,0.853
-chr6,33853638,38643980,-0.353
-chr6,39395396,41787437,0.14
-chr6,39395396,41787437,-0.36
-chr6,53467493,57162634,0.187
-chr6,53467493,57162634,-0.313
-chr6,58772849,71197036,0.031
-chr6,58772849,71197036,-0.469
-chr6,75457368,79107591,0.531
-chr6,75457368,79107591,-0.031
-chr6,88402487,94675178,0.145
-chr6,88402487,94675178,-0.355
-chr6,95586310,98665679,0.313
-chr6,95586310,98665679,-0.187
-chr6,100079224,118914812,0.276
-chr6,100079224,118914812,-0.224
-chr6,119031055,123307706,0
-chr6,119031055,123307706,-0.5
-chr6,126889252,135252271,0.264
-chr6,126889252,135252271,-0.236
-chr6,135419882,138250875,0.43
-chr6,135419882,138250875,-0.07
-chr6,139670053,140314629,0.709
-chr6,139670053,140314629,-0.209
-chr6,144082891,150400840,0.102
-chr6,144082891,150400840,-0.398
-chr6,150924909,152583920,0.163
-chr6,150924909,152583920,-0.337
-chr7,5238889,6479683,0.526
-chr7,5238889,6479683,-0.026
-chr7,6840720,7713889,0.619
-chr7,6840720,7713889,-0.119
-chr7,10649990,12008824,0.156
-chr7,10649990,12008824,-0.344
-chr7,19277617,24418581,0.751
-chr7,19277617,24418581,-0.251
-chr7,31321654,37619029,0.276
-chr7,31321654,37619029,-0.224
-chr7,38624388,51588252,0.326
-chr7,38624388,51588252,-0.174
-chr7,52164831,60019123,0.018
-chr7,52164831,60019123,-0.482
-chr7,66211206,69571735,0.417
-chr7,66211206,69571735,-0.083
-chr7,71152519,75370308,0.29
-chr7,71152519,75370308,-0.21
-chr7,76133185,83831294,0.534
-chr7,76133185,83831294,-0.034
-chr7,83987122,86454636,0.619
-chr7,83987122,86454636,-0.119
-chr7,92231497,97544651,0.001
-chr7,92231497,97544651,-0.499
-chr7,100785280,102686034,0.022
-chr7,100785280,102686034,-0.478
-chr7,122873025,131683132,0.545
-chr7,122873025,131683132,-0.045
-chr7,136706794,137001108,0.416
-chr7,136706794,137001108,-0.084
-chr7,142476263,146251084,0.082
-chr7,142476263,146251084,-0.418
-chr7,151096412,155787406,0.124
-chr7,151096412,155787406,-0.376
-chr8,2085091,2161948,0.049
-chr8,2085091,2161948,-0.451
-chr8,2599499,6711296,0.642
-chr8,2599499,6711296,-0.142
-chr8,10184660,16030136,0.334
-chr8,10184660,16030136,-0.166
-chr8,18065545,21913842,0.509
-chr8,18065545,21913842,-0.00900000000000001
-chr8,22404366,27916383,0.342
-chr8,22404366,27916383,-0.158
-chr8,33031137,35280865,0.346
-chr8,33031137,35280865,-0.154
-chr8,48319525,49708124,0.563
-chr8,48319525,49708124,-0.0629999999999999
-chr8,51945578,53758012,0.158
-chr8,51945578,53758012,-0.342
-chr8,60829393,63201536,0.478
-chr8,60829393,63201536,-0.022
-chr8,63221007,78956811,0.751
-chr8,63221007,78956811,-0.251
-chr8,80958421,92559262,0.204
-chr8,80958421,92559262,-0.296
-chr8,101390655,103881487,0.03
-chr8,101390655,103881487,-0.47
-chr8,113579851,120830039,0.733
-chr8,113579851,120830039,-0.233
-chr8,129016212,131169698,0.283
-chr8,129016212,131169698,-0.217
-chr8,133669333,134011101,0.352
-chr8,133669333,134011101,-0.148
-chr9,14304710,15371772,0.147
-chr9,14304710,15371772,-0.353
-chr9,16403622,17682163,0.609
-chr9,16403622,17682163,-0.109
-chr9,18038598,21882704,0.604
-chr9,18038598,21882704,-0.104
-chr9,22281411,22880149,1.523
-chr9,22281411,22880149,-1.023
-chr9,23226282,23911833,0.483
-chr9,23226282,23911833,-0.017
-chr9,28083886,32706714,0.562
-chr9,28083886,32706714,-0.0620000000000001
-chr9,37283556,59262609,0.737
-chr9,37283556,59262609,-0.237
-chr9,60025093,61347647,0.783
-chr9,60025093,61347647,-0.283
-chr9,82214944,83312370,0.25
-chr9,82214944,83312370,-0.25
-chr9,90517029,91575969,0.046
-chr9,90517029,91575969,-0.454
-chr9,95158118,104283974,0.129
-chr9,95158118,104283974,-0.371
-chr9,106235115,109348058,0.255
-chr9,106235115,109348058,-0.245
-chr9,111585086,114007907,0.38
-chr9,111585086,114007907,-0.12
-chr9,115859843,120021726,0.059
-chr9,115859843,120021726,-0.441
-chr9,132541570,133235434,0.075
-chr9,132541570,133235434,-0.425
-chr10,3173278,7633304,0.407
-chr10,3173278,7633304,-0.093
-chr10,8208492,24332032,0.005
-chr10,8208492,24332032,-0.495
-chr10,26730416,39567979,0
-chr10,26730416,39567979,-0.5
-chr10,41645528,42054182,0.168
-chr10,41645528,42054182,-0.332
-chr10,42669648,43186956,0.246
-chr10,42669648,43186956,-0.254
-chr10,48055976,48649524,0.742
-chr10,48055976,48649524,-0.242
-chr10,48677348,55601607,0.746
-chr10,48677348,55601607,-0.246
-chr10,61839845,62134932,0.24
-chr10,61839845,62134932,-0.26
-chr10,64286667,70749317,0.39
-chr10,64286667,70749317,-0.11
-chr10,85214859,88682018,0.689
-chr10,85214859,88682018,-0.189
-chr10,98072440,99495933,0.282
-chr10,98072440,99495933,-0.218
-chr10,103969097,107255099,0.068
-chr10,103969097,107255099,-0.432
-chr10,110040375,110272238,0.099
-chr10,110040375,110272238,-0.401
-chr10,112217698,132530231,1.355
-chr10,112217698,132530231,-0.855
-chr11,5157877,7206094,0.038
-chr11,5157877,7206094,-0.462
-chr11,11291661,16236380,0.101
-chr11,11291661,16236380,-0.399
-chr11,18440292,23831380,0.078
-chr11,18440292,23831380,-0.422
-chr11,27237203,37436084,0.151
-chr11,27237203,37436084,-0.349
-chr11,41261452,45649778,0.332
-chr11,41261452,45649778,-0.168
-chr11,49659572,51534004,0.733
-chr11,49659572,51534004,-0.233
-chr11,62942055,66687331,1.04
-chr11,62942055,66687331,-0.54
-chr11,73028379,77153663,0.704
-chr11,73028379,77153663,-0.204
-chr11,87771058,97613456,0.148
-chr11,87771058,97613456,-0.352
-chr11,101039153,103407174,0.337
-chr11,101039153,103407174,-0.163
-chr11,103637722,110658492,0.501
-chr11,103637722,110658492,-0.001
-chr11,113921381,115584186,0.141
-chr11,113921381,115584186,-0.359
-chr11,118409461,129108572,0.456
-chr11,118409461,129108572,-0.044
-chr11,132323191,134074284,0.468
-chr11,132323191,134074284,-0.032
-chr12,894341,3273263,0.553
-chr12,894341,3273263,-0.053
-chr12,7440257,8098160,0.266
-chr12,7440257,8098160,-0.234
-chr12,14448178,17872187,1.204
-chr12,14448178,17872187,-0.704
-chr12,20979759,25787432,0.475
-chr12,20979759,25787432,-0.025
-chr12,26840552,29093593,0.149
-chr12,26840552,29093593,-0.351
-chr12,49341449,65960748,0.047
-chr12,49341449,65960748,-0.453
-chr12,67487136,72669625,0.182
-chr12,67487136,72669625,-0.318
-chr12,79726206,80892762,0.714
-chr12,79726206,80892762,-0.214
-chr12,82251329,84541257,0.281
-chr12,82251329,84541257,-0.219
-chr12,89265210,92580792,0.551
-chr12,89265210,92580792,-0.051
-chr12,97839191,98477513,0.67
-chr12,97839191,98477513,-0.17
-chr12,109016044,109568464,0.347
-chr12,109016044,109568464,-0.153
-chr12,110743995,114885345,0.839
-chr12,110743995,114885345,-0.339
-chr12,125299287,126568147,0.683
-chr12,125299287,126568147,-0.183
-chr13,2457116,2686441,0.777
-chr13,2457116,2686441,-0.277
-chr13,4891372,8257853,0.593
-chr13,4891372,8257853,-0.093
-chr13,14828609,17974530,0.139
-chr13,14828609,17974530,-0.361
-chr13,26782268,32922986,0.284
-chr13,26782268,32922986,-0.216
-chr13,36122736,41347928,0.002
-chr13,36122736,41347928,-0.498
-chr13,41510340,45551146,0.149
-chr13,41510340,45551146,-0.351
-chr13,53663027,56139523,0.371
-chr13,53663027,56139523,-0.129
-chr13,65964157,66002089,0.589
-chr13,65964157,66002089,-0.089
-chr13,66400279,69723554,0.253
-chr13,66400279,69723554,-0.247
-chr13,76182243,83509096,0.344
-chr13,76182243,83509096,-0.156
-chr13,84538346,86037682,0.137
-chr13,84538346,86037682,-0.363
-chr13,91448121,109531262,0.407
-chr13,91448121,109531262,-0.093
-chr14,5185116,13515139,0.597
-chr14,5185116,13515139,-0.097
-chr14,22476448,29625041,0.072
-chr14,22476448,29625041,-0.428
-chr14,30572127,32893561,0.073
-chr14,30572127,32893561,-0.427
-chr14,44609816,50519252,0.511
-chr14,44609816,50519252,-0.011
-chr14,57729090,64051541,0.581
-chr14,57729090,64051541,-0.081
-chr14,71595055,76574410,0.358
-chr14,71595055,76574410,-0.142
-chr14,78183197,78466419,0.794
-chr14,78183197,78466419,-0.294
-chr14,79895419,80468624,0.928
-chr14,79895419,80468624,-0.428
-chr14,81465894,86090983,0.045
-chr14,81465894,86090983,-0.455
-chr14,86232163,92548164,0.151
-chr14,86232163,92548164,-0.349
-chr14,98816257,104123490,0.205
-chr14,98816257,104123490,-0.295
-chr15,828666,3060756,0.661
-chr15,828666,3060756,-0.161
-chr15,4528352,7133036,0.059
-chr15,4528352,7133036,-0.441
-chr15,10013889,11672148,0.168
-chr15,10013889,11672148,-0.332
-chr15,13377203,16168188,0.211
-chr15,13377203,16168188,-0.289
-chr15,29145230,40726130,0.222
-chr15,29145230,40726130,-0.278
-chr15,42235576,48275388,0.372
-chr15,42235576,48275388,-0.128
-chr15,49070819,53580609,0.632
-chr15,49070819,53580609,-0.132
-chr15,55505588,70271493,0.215
-chr15,55505588,70271493,-0.285
-chr15,77850829,78795307,0.239
-chr15,77850829,78795307,-0.261
-chr15,80217286,87480701,0.383
-chr15,80217286,87480701,-0.117
-chr15,90915157,98732148,0.453
-chr15,90915157,98732148,-0.047
-chr16,5659739,22084502,0.059
-chr16,5659739,22084502,-0.441
-chr16,23338302,24759741,0.099
-chr16,23338302,24759741,-0.401
-chr16,32461077,32742764,0.382
-chr16,32461077,32742764,-0.118
-chr16,37478891,39919727,0.031
-chr16,37478891,39919727,-0.469
-chr16,49474792,49835796,0.216
-chr16,49474792,49835796,-0.284
-chr16,53606634,57679388,0.023
-chr16,53606634,57679388,-0.477
-chr16,58255433,59006903,0.207
-chr16,58255433,59006903,-0.293
-chr16,59533274,65400249,0.587
-chr16,59533274,65400249,-0.087
-chr16,66290466,71800035,0.464
-chr16,66290466,71800035,-0.036
-chr16,79040659,86736464,1.292
-chr16,79040659,86736464,-0.792
-chr17,12422263,20886597,0.525
-chr17,12422263,20886597,-0.025
-chr17,35355662,37318139,0.347
-chr17,35355662,37318139,-0.153
-chr17,40892786,41301410,0.605
-chr17,40892786,41301410,-0.105
-chr17,44730072,47561151,0.601
-chr17,44730072,47561151,-0.101
-chr17,47613357,49678103,0.147
-chr17,47613357,49678103,-0.353
-chr17,55250767,57826756,1.015
-chr17,55250767,57826756,-0.515
-chr17,58720824,59882450,0.487
-chr17,58720824,59882450,-0.013
-chr17,64015955,66341488,0.027
-chr17,64015955,66341488,-0.473
-chr17,70279357,79975798,0.169
-chr17,70279357,79975798,-0.331
-chr18,6355528,7529537,0.154
-chr18,6355528,7529537,-0.346
-chr18,8595117,10505507,1.13
-chr18,8595117,10505507,-0.63
-chr18,16057363,25629488,0.809
-chr18,16057363,25629488,-0.309
-chr18,31446114,33065540,0.005
-chr18,31446114,33065540,-0.495
-chr18,34168621,37681876,0.244
-chr18,34168621,37681876,-0.256
-chr18,41723182,42076079,0.221
-chr18,41723182,42076079,-0.279
-chr18,46202995,67498623,0.99
-chr18,46202995,67498623,-0.49
-chr18,69790174,72459644,0.361
-chr18,69790174,72459644,-0.139
-chr19,964927,2406352,0.351
-chr19,964927,2406352,-0.149
-chr19,18123160,18961266,0.319
-chr19,18123160,18961266,-0.181
-chr19,22782239,24782961,0.444
-chr19,22782239,24782961,-0.056
-chr19,27099092,27559558,0.215
-chr19,27099092,27559558,-0.285
-chr19,31616575,34713302,0.002
-chr19,31616575,34713302,-0.498
-chr19,39124194,55788114,0.678
-chr19,39124194,55788114,-0.178
-chr20,1142735,1780641,0.871
-chr20,1142735,1780641,-0.371
-chr20,2486633,4159500,0.47
-chr20,2486633,4159500,-0.03
-chr20,14932935,15511698,0.522
-chr20,14932935,15511698,-0.022
-chr20,23508552,23991271,0.772
-chr20,23508552,23991271,-0.272
-chr20,26923015,30337898,0.168
-chr20,26923015,30337898,-0.332
-chr20,38093245,59272600,0.03
-chr20,38093245,59272600,-0.47
-chr20,61354884,62778213,0.549
-chr20,61354884,62778213,-0.049
-chr21,5139750,8068027,0.146
-chr21,5139750,8068027,-0.354
-chr21,10911287,20377859,0.228
-chr21,10911287,20377859,-0.272
-chr21,23537626,25230894,0.38
-chr21,23537626,25230894,-0.12
-chr21,39652345,41528256,0.775
-chr21,39652345,41528256,-0.275
-chr21,45260680,47358430,0.25
-chr21,45260680,47358430,-0.25
-chr22,14130337,14430434,0.318
-chr22,14130337,14430434,-0.182
-chr22,18110242,21010457,0.351
-chr22,18110242,21010457,-0.149
-chr22,21033071,24727434,0.272
-chr22,21033071,24727434,-0.228
-chr22,25375647,26580146,0.293
-chr22,25375647,26580146,-0.207
-chr22,28681574,37984179,0.298
-chr22,28681574,37984179,-0.202
-chr22,40560000,50220245,0.17
-chr22,40560000,50220245,-0.33
-chrX,3502875,4332519,0.288
-chrX,3502875,4332519,-0.212
-chrX,16307602,22058494,0.671
-chrX,16307602,22058494,-0.171
-chrX,22742053,30474234,0.022
-chrX,22742053,30474234,-0.478
-chrX,34269539,43465166,0.077
-chrX,34269539,43465166,-0.423
-chrX,44770955,46895736,0.164
-chrX,44770955,46895736,-0.336
-chrX,51158683,51586771,0.036
-chrX,51158683,51586771,-0.464
-chrX,52411969,56428460,0.083
-chrX,52411969,56428460,-0.417
-chrX,58526808,66372852,1.129
-chrX,58526808,66372852,-0.629
-chrX,94180293,95213121,0.525
-chrX,94180293,95213121,-0.025
-chrX,97530174,99028129,0.503
-chrX,97530174,99028129,-0.003
-chrX,102203047,102533311,0.439
-chrX,102203047,102533311,-0.061
-chrX,102689639,102717931,0.559
-chrX,102689639,102717931,-0.0590000000000001
-chrX,109727665,111060645,0.162
-chrX,109727665,111060645,-0.338
-chrX,112598761,115847528,0.04
-chrX,112598761,115847528,-0.46
-chrX,136919386,138841566,0.592
-chrX,136919386,138841566,-0.092
-chrX,145231554,154778985,0.132
-chrX,145231554,154778985,-0.368
-chrY,9866640,14029540,0.21
-chrY,9866640,14029540,-0.29
-chrY,22941040,26617741,0.489
-chrY,22941040,26617741,-0.011
-chrY,28753376,31855235,0.555
-chrY,28753376,31855235,-0.055
-chrY,36742921,37010285,0.055
-chrY,36742921,37010285,-0.445
-chrY,37214900,41010792,0.045
-chrY,37214900,41010792,-0.455
-chrY,51723010,55083518,0.352
-chrY,51723010,55083518,-0.148
+chr,start,end,value
+chr1,5622039,9110831,0.095
+chr1,5622039,9110831,-0.405
+chr1,16816819,18551718,0.247
+chr1,16816819,18551718,-0.253
+chr1,22908603,24839868,0.077
+chr1,22908603,24839868,-0.423
+chr1,38101291,38796611,0.896
+chr1,38101291,38796611,-0.396
+chr1,40374045,43918413,0.238
+chr1,40374045,43918413,-0.262
+chr1,47699922,49988733,0.039
+chr1,47699922,49988733,-0.461
+chr1,55363446,60076207,0.267
+chr1,55363446,60076207,-0.233
+chr1,60213989,66921798,0.003
+chr1,60213989,66921798,-0.497
+chr1,69830871,69885523,0.437
+chr1,69830871,69885523,-0.063
+chr1,73253242,75204142,0.638
+chr1,73253242,75204142,-0.138
+chr1,76457272,80237883,1.014
+chr1,76457272,80237883,-0.514
+chr1,81416983,92294847,0.089
+chr1,81416983,92294847,-0.411
+chr1,102240236,102754514,0.044
+chr1,102240236,102754514,-0.456
+chr1,114543216,126611956,0.103
+chr1,114543216,126611956,-0.397
+chr1,137794358,140110029,1.198
+chr1,137794358,140110029,-0.698
+chr1,143544690,148231626,0.823
+chr1,143544690,148231626,-0.323
+chr1,152504087,152865029,0.455
+chr1,152504087,152865029,-0.045
+chr1,170569483,175932896,0.565
+chr1,170569483,175932896,-0.065
+chr1,184406901,186541640,0.203
+chr1,184406901,186541640,-0.297
+chr1,192562052,195432585,0.253
+chr1,192562052,195432585,-0.247
+chr1,197813459,199488327,0.2
+chr1,197813459,199488327,-0.3
+chr1,207168466,207856038,0.185
+chr1,207168466,207856038,-0.315
+chr1,210231550,214413714,0.379
+chr1,210231550,214413714,-0.121
+chr1,218330023,225775116,0.388
+chr1,218330023,225775116,-0.112
+chr1,226165374,226709902,1.322
+chr1,226165374,226709902,-0.822
+chr1,226981573,231172434,0.358
+chr1,226981573,231172434,-0.142
+chr2,13669568,16275459,0.936
+chr2,13669568,16275459,-0.436
+chr2,23600383,35903753,1.128
+chr2,23600383,35903753,-0.628
+chr2,38690763,51602785,0.034
+chr2,38690763,51602785,-0.466
+chr2,52787638,53106494,0.189
+chr2,52787638,53106494,-0.311
+chr2,62473604,63853002,0.142
+chr2,62473604,63853002,-0.358
+chr2,63883311,68622624,0.103
+chr2,63883311,68622624,-0.397
+chr2,84164305,94918993,0.246
+chr2,84164305,94918993,-0.254
+chr2,96174898,97634683,0.768
+chr2,96174898,97634683,-0.268
+chr2,97774382,98810729,0.573
+chr2,97774382,98810729,-0.073
+chr2,119458216,124860987,0.815
+chr2,119458216,124860987,-0.315
+chr2,133486083,144701126,0.762
+chr2,133486083,144701126,-0.262
+chr2,150015500,169884441,0.368
+chr2,150015500,169884441,-0.132
+chr2,171650710,173748245,0.394
+chr2,171650710,173748245,-0.106
+chr2,175189867,176558337,0.055
+chr2,175189867,176558337,-0.445
+chr2,179068622,179503046,0.852
+chr2,179068622,179503046,-0.352
+chr2,181919389,185009703,0.13
+chr2,181919389,185009703,-0.37
+chr2,187178423,194548826,0.328
+chr2,187178423,194548826,-0.172
+chr2,195733504,196579187,0.782
+chr2,195733504,196579187,-0.282
+chr2,199648543,200013509,0.634
+chr2,199648543,200013509,-0.134
+chr2,201372598,212007510,0.631
+chr2,201372598,212007510,-0.131
+chr2,216395938,218679646,0.04
+chr2,216395938,218679646,-0.46
+chr2,224472483,224808455,0.053
+chr2,224472483,224808455,-0.447
+chr2,226280058,227493192,0.01
+chr2,226280058,227493192,-0.49
+chr2,230034200,235052204,0.739
+chr2,230034200,235052204,-0.239
+chr2,236943351,240910483,0.133
+chr2,236943351,240910483,-0.367
+chr3,4777699,8367346,0.174
+chr3,4777699,8367346,-0.326
+chr3,12569294,19206235,0.309
+chr3,12569294,19206235,-0.191
+chr3,22242421,28218437,0.045
+chr3,22242421,28218437,-0.455
+chr3,31597173,46117629,0.794
+chr3,31597173,46117629,-0.294
+chr3,47880623,48541196,0.435
+chr3,47880623,48541196,-0.065
+chr3,53337177,53715146,0.159
+chr3,53337177,53715146,-0.341
+chr3,60385837,63551224,0.077
+chr3,60385837,63551224,-0.423
+chr3,64565127,66426258,0.361
+chr3,64565127,66426258,-0.139
+chr3,68661306,69564857,0.178
+chr3,68661306,69564857,-0.322
+chr3,76979484,79834878,0.481
+chr3,76979484,79834878,-0.019
+chr3,84771269,89382584,0.926
+chr3,84771269,89382584,-0.426
+chr3,96130891,97846739,0.332
+chr3,96130891,97846739,-0.168
+chr3,99479327,103126883,0.213
+chr3,99479327,103126883,-0.287
+chr3,104158068,112198039,0.201
+chr3,104158068,112198039,-0.299
+chr3,112370587,119058671,0.426
+chr3,112370587,119058671,-0.074
+chr3,122867063,126407460,0.572
+chr3,122867063,126407460,-0.072
+chr3,133689965,138490771,0.112
+chr3,133689965,138490771,-0.388
+chr3,146490251,146895938,0.213
+chr3,146490251,146895938,-0.287
+chr3,159407360,162383107,0.193
+chr3,159407360,162383107,-0.307
+chr3,179906999,184919248,0.771
+chr3,179906999,184919248,-0.271
+chr3,193465284,195297152,0.342
+chr3,193465284,195297152,-0.158
+chr4,4969470,11023301,0.664
+chr4,4969470,11023301,-0.164
+chr4,15810431,18044300,0.054
+chr4,15810431,18044300,-0.446
+chr4,23752627,31933493,0.253
+chr4,23752627,31933493,-0.247
+chr4,41897259,42274153,0.395
+chr4,41897259,42274153,-0.105
+chr4,50012715,51395792,0.254
+chr4,50012715,51395792,-0.246
+chr4,54222052,58931449,0.616
+chr4,54222052,58931449,-0.116
+chr4,60841364,71110120,0.282
+chr4,60841364,71110120,-0.218
+chr4,82779834,83511983,0.512
+chr4,82779834,83511983,-0.012
+chr4,85301854,93066700,0.56
+chr4,85301854,93066700,-0.06
+chr4,95647786,97523743,0.111
+chr4,95647786,97523743,-0.389
+chr4,98920796,101026262,0.686
+chr4,98920796,101026262,-0.186
+chr4,102413258,106908707,0.151
+chr4,102413258,106908707,-0.349
+chr4,111239952,120119320,0.085
+chr4,111239952,120119320,-0.415
+chr4,121361380,123251839,0.847
+chr4,121361380,123251839,-0.347
+chr4,125220746,139509479,0.21
+chr4,125220746,139509479,-0.29
+chr4,143873061,149720069,0.591
+chr4,143873061,149720069,-0.091
+chr4,158791476,165400447,0.239
+chr4,158791476,165400447,-0.261
+chr4,171124502,175620144,0.303
+chr4,171124502,175620144,-0.197
+chr4,176390684,177856907,0.057
+chr4,176390684,177856907,-0.443
+chr4,187116362,190638522,0.537
+chr4,187116362,190638522,-0.037
+chr5,6253192,6446117,0.229
+chr5,6253192,6446117,-0.271
+chr5,12010312,23800697,0.1
+chr5,12010312,23800697,-0.4
+chr5,24939130,26886910,0.246
+chr5,24939130,26886910,-0.254
+chr5,28711229,34346786,0.865
+chr5,28711229,34346786,-0.365
+chr5,42703550,51800850,0.2
+chr5,42703550,51800850,-0.3
+chr5,55512235,56268975,0.215
+chr5,55512235,56268975,-0.285
+chr5,59208752,64222237,0.439
+chr5,59208752,64222237,-0.061
+chr5,71806137,72743577,0.146
+chr5,71806137,72743577,-0.354
+chr5,73145096,74099719,0.385
+chr5,73145096,74099719,-0.115
+chr5,82826400,91040068,0.527
+chr5,82826400,91040068,-0.027
+chr5,94316286,97138112,0.324
+chr5,94316286,97138112,-0.176
+chr5,103442383,112944012,0.593
+chr5,103442383,112944012,-0.093
+chr5,113517342,116953300,0.023
+chr5,113517342,116953300,-0.477
+chr5,124410305,127670668,0.687
+chr5,124410305,127670668,-0.187
+chr5,132356930,137525309,0.269
+chr5,132356930,137525309,-0.231
+chr5,144228031,153487398,0.083
+chr5,144228031,153487398,-0.417
+chr5,154267066,157655564,0.418
+chr5,154267066,157655564,-0.082
+chr5,165299530,166352138,0.469
+chr5,165299530,166352138,-0.031
+chr5,171828641,175837854,0.524
+chr5,171828641,175837854,-0.024
+chr6,1687733,5295848,0.05
+chr6,1687733,5295848,-0.45
+chr6,12091854,20663531,0.197
+chr6,12091854,20663531,-0.303
+chr6,21974123,22810333,0.788
+chr6,21974123,22810333,-0.288
+chr6,26326468,30822215,0.364
+chr6,26326468,30822215,-0.136
+chr6,33853638,38643980,0.853
+chr6,33853638,38643980,-0.353
+chr6,39395396,41787437,0.14
+chr6,39395396,41787437,-0.36
+chr6,53467493,57162634,0.187
+chr6,53467493,57162634,-0.313
+chr6,58772849,71197036,0.031
+chr6,58772849,71197036,-0.469
+chr6,75457368,79107591,0.531
+chr6,75457368,79107591,-0.031
+chr6,88402487,94675178,0.145
+chr6,88402487,94675178,-0.355
+chr6,95586310,98665679,0.313
+chr6,95586310,98665679,-0.187
+chr6,100079224,118914812,0.276
+chr6,100079224,118914812,-0.224
+chr6,119031055,123307706,0
+chr6,119031055,123307706,-0.5
+chr6,126889252,135252271,0.264
+chr6,126889252,135252271,-0.236
+chr6,135419882,138250875,0.43
+chr6,135419882,138250875,-0.07
+chr6,139670053,140314629,0.709
+chr6,139670053,140314629,-0.209
+chr6,144082891,150400840,0.102
+chr6,144082891,150400840,-0.398
+chr6,150924909,152583920,0.163
+chr6,150924909,152583920,-0.337
+chr7,5238889,6479683,0.526
+chr7,5238889,6479683,-0.026
+chr7,6840720,7713889,0.619
+chr7,6840720,7713889,-0.119
+chr7,10649990,12008824,0.156
+chr7,10649990,12008824,-0.344
+chr7,19277617,24418581,0.751
+chr7,19277617,24418581,-0.251
+chr7,31321654,37619029,0.276
+chr7,31321654,37619029,-0.224
+chr7,38624388,51588252,0.326
+chr7,38624388,51588252,-0.174
+chr7,52164831,60019123,0.018
+chr7,52164831,60019123,-0.482
+chr7,66211206,69571735,0.417
+chr7,66211206,69571735,-0.083
+chr7,71152519,75370308,0.29
+chr7,71152519,75370308,-0.21
+chr7,76133185,83831294,0.534
+chr7,76133185,83831294,-0.034
+chr7,83987122,86454636,0.619
+chr7,83987122,86454636,-0.119
+chr7,92231497,97544651,0.001
+chr7,92231497,97544651,-0.499
+chr7,100785280,102686034,0.022
+chr7,100785280,102686034,-0.478
+chr7,122873025,131683132,0.545
+chr7,122873025,131683132,-0.045
+chr7,136706794,137001108,0.416
+chr7,136706794,137001108,-0.084
+chr7,142476263,146251084,0.082
+chr7,142476263,146251084,-0.418
+chr7,151096412,155787406,0.124
+chr7,151096412,155787406,-0.376
+chr8,2085091,2161948,0.049
+chr8,2085091,2161948,-0.451
+chr8,2599499,6711296,0.642
+chr8,2599499,6711296,-0.142
+chr8,10184660,16030136,0.334
+chr8,10184660,16030136,-0.166
+chr8,18065545,21913842,0.509
+chr8,18065545,21913842,-0.009
+chr8,22404366,27916383,0.342
+chr8,22404366,27916383,-0.158
+chr8,33031137,35280865,0.346
+chr8,33031137,35280865,-0.154
+chr8,48319525,49708124,0.563
+chr8,48319525,49708124,-0.063
+chr8,51945578,53758012,0.158
+chr8,51945578,53758012,-0.342
+chr8,60829393,63201536,0.478
+chr8,60829393,63201536,-0.022
+chr8,63221007,78956811,0.751
+chr8,63221007,78956811,-0.251
+chr8,80958421,92559262,0.204
+chr8,80958421,92559262,-0.296
+chr8,101390655,103881487,0.03
+chr8,101390655,103881487,-0.47
+chr8,113579851,120830039,0.733
+chr8,113579851,120830039,-0.233
+chr8,129016212,131169698,0.283
+chr8,129016212,131169698,-0.217
+chr8,133669333,134011101,0.352
+chr8,133669333,134011101,-0.148
+chr9,14304710,15371772,0.147
+chr9,14304710,15371772,-0.353
+chr9,16403622,17682163,0.609
+chr9,16403622,17682163,-0.109
+chr9,18038598,21882704,0.604
+chr9,18038598,21882704,-0.104
+chr9,22281411,22880149,1.523
+chr9,22281411,22880149,-1.023
+chr9,23226282,23911833,0.483
+chr9,23226282,23911833,-0.017
+chr9,28083886,32706714,0.562
+chr9,28083886,32706714,-0.062
+chr9,37283556,59262609,0.737
+chr9,37283556,59262609,-0.237
+chr9,60025093,61347647,0.783
+chr9,60025093,61347647,-0.283
+chr9,82214944,83312370,0.25
+chr9,82214944,83312370,-0.25
+chr9,90517029,91575969,0.046
+chr9,90517029,91575969,-0.454
+chr9,95158118,104283974,0.129
+chr9,95158118,104283974,-0.371
+chr9,106235115,109348058,0.255
+chr9,106235115,109348058,-0.245
+chr9,111585086,114007907,0.38
+chr9,111585086,114007907,-0.12
+chr9,115859843,120021726,0.059
+chr9,115859843,120021726,-0.441
+chr9,132541570,133235434,0.075
+chr9,132541570,133235434,-0.425
+chr10,3173278,7633304,0.407
+chr10,3173278,7633304,-0.093
+chr10,8208492,24332032,0.005
+chr10,8208492,24332032,-0.495
+chr10,26730416,39567979,0
+chr10,26730416,39567979,-0.5
+chr10,41645528,42054182,0.168
+chr10,41645528,42054182,-0.332
+chr10,42669648,43186956,0.246
+chr10,42669648,43186956,-0.254
+chr10,48055976,48649524,0.742
+chr10,48055976,48649524,-0.242
+chr10,48677348,55601607,0.746
+chr10,48677348,55601607,-0.246
+chr10,61839845,62134932,0.24
+chr10,61839845,62134932,-0.26
+chr10,64286667,70749317,0.39
+chr10,64286667,70749317,-0.11
+chr10,85214859,88682018,0.689
+chr10,85214859,88682018,-0.189
+chr10,98072440,99495933,0.282
+chr10,98072440,99495933,-0.218
+chr10,103969097,107255099,0.068
+chr10,103969097,107255099,-0.432
+chr10,110040375,110272238,0.099
+chr10,110040375,110272238,-0.401
+chr10,112217698,132530231,1.355
+chr10,112217698,132530231,-0.855
+chr11,5157877,7206094,0.038
+chr11,5157877,7206094,-0.462
+chr11,11291661,16236380,0.101
+chr11,11291661,16236380,-0.399
+chr11,18440292,23831380,0.078
+chr11,18440292,23831380,-0.422
+chr11,27237203,37436084,0.151
+chr11,27237203,37436084,-0.349
+chr11,41261452,45649778,0.332
+chr11,41261452,45649778,-0.168
+chr11,49659572,51534004,0.733
+chr11,49659572,51534004,-0.233
+chr11,62942055,66687331,1.04
+chr11,62942055,66687331,-0.54
+chr11,73028379,77153663,0.704
+chr11,73028379,77153663,-0.204
+chr11,87771058,97613456,0.148
+chr11,87771058,97613456,-0.352
+chr11,101039153,103407174,0.337
+chr11,101039153,103407174,-0.163
+chr11,103637722,110658492,0.501
+chr11,103637722,110658492,-0.001
+chr11,113921381,115584186,0.141
+chr11,113921381,115584186,-0.359
+chr11,118409461,129108572,0.456
+chr11,118409461,129108572,-0.044
+chr11,132323191,134074284,0.468
+chr11,132323191,134074284,-0.032
+chr12,894341,3273263,0.553
+chr12,894341,3273263,-0.053
+chr12,7440257,8098160,0.266
+chr12,7440257,8098160,-0.234
+chr12,14448178,17872187,1.204
+chr12,14448178,17872187,-0.704
+chr12,20979759,25787432,0.475
+chr12,20979759,25787432,-0.025
+chr12,26840552,29093593,0.149
+chr12,26840552,29093593,-0.351
+chr12,49341449,65960748,0.047
+chr12,49341449,65960748,-0.453
+chr12,67487136,72669625,0.182
+chr12,67487136,72669625,-0.318
+chr12,79726206,80892762,0.714
+chr12,79726206,80892762,-0.214
+chr12,82251329,84541257,0.281
+chr12,82251329,84541257,-0.219
+chr12,89265210,92580792,0.551
+chr12,89265210,92580792,-0.051
+chr12,97839191,98477513,0.67
+chr12,97839191,98477513,-0.17
+chr12,109016044,109568464,0.347
+chr12,109016044,109568464,-0.153
+chr12,110743995,114885345,0.839
+chr12,110743995,114885345,-0.339
+chr12,125299287,126568147,0.683
+chr12,125299287,126568147,-0.183
+chr13,2457116,2686441,0.777
+chr13,2457116,2686441,-0.277
+chr13,4891372,8257853,0.593
+chr13,4891372,8257853,-0.093
+chr13,14828609,17974530,0.139
+chr13,14828609,17974530,-0.361
+chr13,26782268,32922986,0.284
+chr13,26782268,32922986,-0.216
+chr13,36122736,41347928,0.002
+chr13,36122736,41347928,-0.498
+chr13,41510340,45551146,0.149
+chr13,41510340,45551146,-0.351
+chr13,53663027,56139523,0.371
+chr13,53663027,56139523,-0.129
+chr13,65964157,66002089,0.589
+chr13,65964157,66002089,-0.089
+chr13,66400279,69723554,0.253
+chr13,66400279,69723554,-0.247
+chr13,76182243,83509096,0.344
+chr13,76182243,83509096,-0.156
+chr13,84538346,86037682,0.137
+chr13,84538346,86037682,-0.363
+chr13,91448121,109531262,0.407
+chr13,91448121,109531262,-0.093
+chr14,5185116,13515139,0.597
+chr14,5185116,13515139,-0.097
+chr14,22476448,29625041,0.072
+chr14,22476448,29625041,-0.428
+chr14,30572127,32893561,0.073
+chr14,30572127,32893561,-0.427
+chr14,44609816,50519252,0.511
+chr14,44609816,50519252,-0.011
+chr14,57729090,64051541,0.581
+chr14,57729090,64051541,-0.081
+chr14,71595055,76574410,0.358
+chr14,71595055,76574410,-0.142
+chr14,78183197,78466419,0.794
+chr14,78183197,78466419,-0.294
+chr14,79895419,80468624,0.928
+chr14,79895419,80468624,-0.428
+chr14,81465894,86090983,0.045
+chr14,81465894,86090983,-0.455
+chr14,86232163,92548164,0.151
+chr14,86232163,92548164,-0.349
+chr14,98816257,104123490,0.205
+chr14,98816257,104123490,-0.295
+chr15,828666,3060756,0.661
+chr15,828666,3060756,-0.161
+chr15,4528352,7133036,0.059
+chr15,4528352,7133036,-0.441
+chr15,10013889,11672148,0.168
+chr15,10013889,11672148,-0.332
+chr15,13377203,16168188,0.211
+chr15,13377203,16168188,-0.289
+chr15,29145230,40726130,0.222
+chr15,29145230,40726130,-0.278
+chr15,42235576,48275388,0.372
+chr15,42235576,48275388,-0.128
+chr15,49070819,53580609,0.632
+chr15,49070819,53580609,-0.132
+chr15,55505588,70271493,0.215
+chr15,55505588,70271493,-0.285
+chr15,77850829,78795307,0.239
+chr15,77850829,78795307,-0.261
+chr15,80217286,87480701,0.383
+chr15,80217286,87480701,-0.117
+chr15,90915157,98732148,0.453
+chr15,90915157,98732148,-0.047
+chr16,5659739,22084502,0.059
+chr16,5659739,22084502,-0.441
+chr16,23338302,24759741,0.099
+chr16,23338302,24759741,-0.401
+chr16,32461077,32742764,0.382
+chr16,32461077,32742764,-0.118
+chr16,37478891,39919727,0.031
+chr16,37478891,39919727,-0.469
+chr16,49474792,49835796,0.216
+chr16,49474792,49835796,-0.284
+chr16,53606634,57679388,0.023
+chr16,53606634,57679388,-0.477
+chr16,58255433,59006903,0.207
+chr16,58255433,59006903,-0.293
+chr16,59533274,65400249,0.587
+chr16,59533274,65400249,-0.087
+chr16,66290466,71800035,0.464
+chr16,66290466,71800035,-0.036
+chr16,79040659,86736464,1.292
+chr16,79040659,86736464,-0.792
+chr17,12422263,20886597,0.525
+chr17,12422263,20886597,-0.025
+chr17,35355662,37318139,0.347
+chr17,35355662,37318139,-0.153
+chr17,40892786,41301410,0.605
+chr17,40892786,41301410,-0.105
+chr17,44730072,47561151,0.601
+chr17,44730072,47561151,-0.101
+chr17,47613357,49678103,0.147
+chr17,47613357,49678103,-0.353
+chr17,55250767,57826756,1.015
+chr17,55250767,57826756,-0.515
+chr17,58720824,59882450,0.487
+chr17,58720824,59882450,-0.013
+chr17,64015955,66341488,0.027
+chr17,64015955,66341488,-0.473
+chr17,70279357,79975798,0.169
+chr17,70279357,79975798,-0.331
+chr18,6355528,7529537,0.154
+chr18,6355528,7529537,-0.346
+chr18,8595117,10505507,1.13
+chr18,8595117,10505507,-0.63
+chr18,16057363,25629488,0.809
+chr18,16057363,25629488,-0.309
+chr18,31446114,33065540,0.005
+chr18,31446114,33065540,-0.495
+chr18,34168621,37681876,0.244
+chr18,34168621,37681876,-0.256
+chr18,41723182,42076079,0.221
+chr18,41723182,42076079,-0.279
+chr18,46202995,67498623,0.99
+chr18,46202995,67498623,-0.49
+chr18,69790174,72459644,0.361
+chr18,69790174,72459644,-0.139
+chr19,964927,2406352,0.351
+chr19,964927,2406352,-0.149
+chr19,18123160,18961266,0.319
+chr19,18123160,18961266,-0.181
+chr19,22782239,24782961,0.444
+chr19,22782239,24782961,-0.056
+chr19,27099092,27559558,0.215
+chr19,27099092,27559558,-0.285
+chr19,31616575,34713302,0.002
+chr19,31616575,34713302,-0.498
+chr19,39124194,55788114,0.678
+chr19,39124194,55788114,-0.178
+chr20,1142735,1780641,0.871
+chr20,1142735,1780641,-0.371
+chr20,2486633,4159500,0.47
+chr20,2486633,4159500,-0.03
+chr20,14932935,15511698,0.522
+chr20,14932935,15511698,-0.022
+chr20,23508552,23991271,0.772
+chr20,23508552,23991271,-0.272
+chr20,26923015,30337898,0.168
+chr20,26923015,30337898,-0.332
+chr20,38093245,59272600,0.03
+chr20,38093245,59272600,-0.47
+chr20,61354884,62778213,0.549
+chr20,61354884,62778213,-0.049
+chr21,5139750,8068027,0.146
+chr21,5139750,8068027,-0.354
+chr21,10911287,20377859,0.228
+chr21,10911287,20377859,-0.272
+chr21,23537626,25230894,0.38
+chr21,23537626,25230894,-0.12
+chr21,39652345,41528256,0.775
+chr21,39652345,41528256,-0.275
+chr21,45260680,47358430,0.25
+chr21,45260680,47358430,-0.25
+chr22,14130337,14430434,0.318
+chr22,14130337,14430434,-0.182
+chr22,18110242,21010457,0.351
+chr22,18110242,21010457,-0.149
+chr22,21033071,24727434,0.272
+chr22,21033071,24727434,-0.228
+chr22,25375647,26580146,0.293
+chr22,25375647,26580146,-0.207
+chr22,28681574,37984179,0.298
+chr22,28681574,37984179,-0.202
+chr22,40560000,50220245,0.17
+chr22,40560000,50220245,-0.33
+chrX,3502875,4332519,0.288
+chrX,3502875,4332519,-0.212
+chrX,16307602,22058494,0.671
+chrX,16307602,22058494,-0.171
+chrX,22742053,30474234,0.022
+chrX,22742053,30474234,-0.478
+chrX,34269539,43465166,0.077
+chrX,34269539,43465166,-0.423
+chrX,44770955,46895736,0.164
+chrX,44770955,46895736,-0.336
+chrX,51158683,51586771,0.036
+chrX,51158683,51586771,-0.464
+chrX,52411969,56428460,0.083
+chrX,52411969,56428460,-0.417
+chrX,58526808,66372852,1.129
+chrX,58526808,66372852,-0.629
+chrX,94180293,95213121,0.525
+chrX,94180293,95213121,-0.025
+chrX,97530174,99028129,0.503
+chrX,97530174,99028129,-0.003
+chrX,102203047,102533311,0.439
+chrX,102203047,102533311,-0.061
+chrX,102689639,102717931,0.559
+chrX,102689639,102717931,-0.059
+chrX,109727665,111060645,0.162
+chrX,109727665,111060645,-0.338
+chrX,112598761,115847528,0.04
+chrX,112598761,115847528,-0.46
+chrX,136919386,138841566,0.592
+chrX,136919386,138841566,-0.092
+chrX,145231554,154778985,0.132
+chrX,145231554,154778985,-0.368
+chrY,9866640,14029540,0.21
+chrY,9866640,14029540,-0.29
+chrY,22941040,26617741,0.489
+chrY,22941040,26617741,-0.011
+chrY,28753376,31855235,0.555
+chrY,28753376,31855235,-0.055
+chrY,36742921,37010285,0.055
+chrY,36742921,37010285,-0.445
+chrY,37214900,41010792,0.045
+chrY,37214900,41010792,-0.455
+chrY,51723010,55083518,0.352
+chrY,51723010,55083518,-0.148
diff --git a/example_data/barplot_color.csv b/example_data/barplot_color.csv
new file mode 100644
index 0000000..af245ed
--- /dev/null
+++ b/example_data/barplot_color.csv
@@ -0,0 +1,206 @@
+chr,start,end,value,color
+chr1,2321390,22775301,-0.525358698,a
+chr1,43812694,44287183,0.101162224,a
+chr1,52481565,53897427,0.372158324,a
+chr1,59354150,74860235,0.160938248,a
+chr1,81748375,111694704,0.449661291,a
+chr1,126910480,128054594,-0.38462853,a
+chr1,135549697,141566099,-0.025073432,a
+chr1,143714289,144032636,1.002599271,a
+chr1,157023268,176383360,0.451607511,a
+chr1,176588113,178318552,-0.630868149,a
+chr1,179231752,202859841,-0.71925303,a
+chr1,206433098,209970709,-0.408037402,a
+chr1,212762083,212926576,0.628256307,a
+chr1,218228276,222162833,0.44480768,a
+chr1,223873574,229033986,0.075148749,a
+chr1,233438096,244475701,0.281372795,a
+chr2,1691732,6945264,-0.083741872,a
+chr2,23466862,25486592,-0.672021935,a
+chr2,38838720,56138858,-0.454103678,a
+chr2,60143146,62288177,-0.054766218,a
+chr2,67736710,75958690,0.845777849,a
+chr2,83225565,84445109,0.798484893,a
+chr2,84687961,86377233,0.552809441,a
+chr2,125267579,130291687,0.261709053,a
+chr2,131473327,131544787,-0.468463114,a
+chr2,133885968,137308712,0.215101629,a
+chr2,145864717,160009822,0.788354303,a
+chr2,173003668,186313933,-0.102545573,a
+chr2,187336729,209869670,0.1491198,a
+chr2,209965171,211433768,0.368978949,a
+chr2,226507658,235170282,0.105069764,a
+chr2,237272301,239605679,0.326815126,a
+chr3,10094726,13041378,-0.117686062,a
+chr3,17700130,17853399,0.229028492,a
+chr3,36029410,47202868,0.107003937,a
+chr3,50389807,56706103,-0.410602374,a
+chr3,66090649,81959526,0.769177027,a
+chr3,86313232,87585313,-0.003290878,a
+chr3,100999794,106317200,0.108091235,a
+chr3,110573287,120904002,1.167222609,a
+chr3,127837741,128571162,0.56906846,a
+chr3,142810131,148939805,0.926047189,a
+chr3,150332655,155542186,0.140216956,a
+chr3,162733606,178021942,0.233847299,a
+chr3,181176845,193508284,0.721753671,a
+chr4,6696000,10152473,-0.235925431,a
+chr4,17821377,25531898,0.778831133,a
+chr4,29746031,30959227,0.528100538,a
+chr4,39129526,50151439,-0.476865781,a
+chr4,50947030,52256467,0.251823541,a
+chr4,58783476,66246991,-0.866641798,a
+chr4,77375595,79033629,-0.313168927,b
+chr4,90494553,103036342,0.425073009,b
+chr4,109081226,109896904,-0.664361821,b
+chr4,113805439,129304782,-0.206855724,b
+chr4,139588997,154474940,-0.163954027,b
+chr4,175651787,177397920,0.387525896,b
+chr4,190631413,190865306,-0.060438132,b
+chr5,4035634,14835115,-0.632501475,b
+chr5,42281834,53726423,-0.291188087,b
+chr5,68776819,79245916,0.290576173,b
+chr5,82464048,82689202,-0.090172798,b
+chr5,88751795,100963230,0.769127343,b
+chr5,113800261,114022964,0.449389265,b
+chr5,117801972,124287977,1.150707411,b
+chr5,128126932,133645202,-0.329425537,b
+chr5,137390180,140275083,-0.456591287,b
+chr5,145626785,147894410,0.218216134,b
+chr5,153408841,153954892,-0.739371295,b
+chr5,165638667,175257311,-0.285651201,b
+chr6,7028522,9786339,-0.589183853,b
+chr6,22388127,31016363,-0.477458215,b
+chr6,43478770,46254363,-0.224705635,b
+chr6,47796920,65413220,0.626704963,b
+chr6,67008543,68482908,0.002982159,b
+chr6,74056175,84358567,-0.762038819,b
+chr6,106666281,108888660,-0.438932268,b
+chr6,111362581,131775341,-0.434917373,b
+chr6,136474475,149976624,0.307802249,b
+chr6,152409398,152476642,-0.36948648,b
+chr6,154443119,161618046,-0.744934378,b
+chr7,7803544,8573283,0.027043458,b
+chr7,16350068,19791303,1.109383259,b
+chr7,28717010,51047874,-0.201168463,b
+chr7,58198405,67200230,0.448944932,b
+chr7,77428120,82523812,-0.830448808,b
+chr7,84131814,88958855,0.396748896,b
+chr7,103078844,105058788,-0.737547862,b
+chr7,111077923,118433600,0.197835823,b
+chr7,123715931,126738134,0.224231965,b
+chr7,130262036,135038373,-0.143440331,b
+chr7,145236372,153962065,-0.557576049,b
+chr8,9148235,12450804,0.22607262,b
+chr8,19994001,23006303,0.800826888,b
+chr8,24820374,25733970,0.547987771,b
+chr8,27072311,45178862,-0.382812968,b
+chr8,48104876,55627485,-0.005798991,b
+chr8,64089548,68117722,-1.01031087,b
+chr8,92784302,100329898,0.255839864,b
+chr8,116357981,121338054,-0.045835549,b
+chr8,123996985,125269105,0.698256072,b
+chr8,125398937,129617408,0.081142268,b
+chr9,5488989,10117165,-0.309662277,c
+chr9,14069596,45956401,0.111702254,c
+chr9,53426819,60369919,-0.556287483,c
+chr9,65088830,81573030,0.551417318,c
+chr9,84819440,86019932,-0.286494833,c
+chr9,88268838,92176447,0.173145868,c
+chr9,101213993,134837092,-0.179463404,c
+chr9,136344120,137701399,-0.338343646,c
+chr9,139475167,139999424,0.389042026,c
+chr10,6691266,12436756,0.209492163,c
+chr10,17431101,19109176,-0.005435336,c
+chr10,26435711,29553379,0.168526052,c
+chr10,38377832,57167370,-0.076488112,c
+chr10,59637505,76889322,-0.302604932,c
+chr10,81108541,84916839,0.041457077,c
+chr10,92177349,99385749,-0.301667275,c
+chr10,101062890,113139465,0.299721949,c
+chr10,122206875,133423926,-0.150925005,c
+chr11,9725295,10243690,0.241086232,c
+chr11,15155708,18366230,0.103802108,c
+chr11,20727017,35144682,0.331455155,c
+chr11,37607282,38859818,-0.263199027,c
+chr11,45691943,46731412,-0.077609266,c
+chr11,56940666,78226860,-0.338133588,c
+chr11,78572682,79164854,-0.811146175,c
+chr11,90158681,98385089,-1.223537822,c
+chr11,109076623,119066000,-0.106295358,c
+chr12,12317698,13757798,0.095226647,c
+chr12,17194568,35133814,-0.000708771,c
+chr12,46460191,54883476,0.110390983,c
+chr12,57962577,61953450,0.215606576,c
+chr12,65568586,67219043,-0.750553876,c
+chr12,73521734,78143260,-0.260079441,c
+chr12,80041983,104875184,-0.03315111,c
+chr12,117368515,119436093,-0.088795676,c
+chr12,129323029,129995272,-0.00520967,c
+chr13,13494895,20921729,0.522285607,c
+chr13,24665651,27794802,-0.270678691,c
+chr13,31097843,42431572,0.06839491,c
+chr13,52028914,55763870,0.52696947,c
+chr13,61876490,65340089,0.258545413,c
+chr13,74774988,74806909,-0.020656219,c
+chr13,97946735,109706947,0.20865891,c
+chr13,113215192,113710757,0.410461071,c
+chr14,7507053,12670799,-0.057928652,c
+chr14,14397588,24911614,-0.184319726,c
+chr14,26824488,34539582,-0.044012306,c
+chr14,40838478,61736485,0.214632624,c
+chr14,71161216,81397537,-0.0245359,c
+chr14,83858329,89234126,-0.760742313,c
+chr14,91829570,103821615,-0.188442409,c
+chr15,3238339,4997099,0.16413108,d
+chr15,14456178,18477259,0.589055928,d
+chr15,37750663,39541794,-0.133057046,d
+chr15,42468142,42929236,0.373070975,d
+chr15,43462767,46399454,-0.350160828,d
+chr15,51805384,67004797,0.41871987,d
+chr15,73562667,100471439,0.215046503,d
+chr16,5518107,5890088,0.959006821,d
+chr16,16141201,17603415,-0.457798668,d
+chr16,25942699,39554913,0.40081017,d
+chr16,42608146,59672236,0.025682917,d
+chr16,68433021,71028779,-0.470590705,d
+chr16,83550177,85689057,-0.426798617,d
+chr17,6368690,24973730,-0.371613858,d
+chr17,26641063,31189733,-0.481346243,d
+chr17,32092582,39254489,-0.932569522,d
+chr17,49513937,64598074,0.013883192,d
+chr17,73789537,76509818,0.879405501,d
+chr18,6504644,8314445,0.776679874,d
+chr18,15990082,27870521,0.455598441,d
+chr18,33674062,34933554,-0.356262385,d
+chr18,36691001,63281239,-0.364731078,d
+chr18,65492786,65913435,-0.518946171,d
+chr19,2235465,3326947,0.030460404,d
+chr19,10498203,13314459,-0.191002283,d
+chr19,16749218,27425502,0.389615004,d
+chr19,45019261,52687076,0.66815599,d
+chr20,11500269,29412671,-0.235492986,d
+chr20,31751079,51095395,-0.654173482,d
+chr20,57281958,61066483,0.242356001,d
+chr20,61476489,63009270,0.614676575,d
+chr21,716185,8445714,0.062538133,d
+chr21,14950966,22689005,-0.519716709,d
+chr21,37761806,40724198,0.733727963,d
+chr22,2772763,4997865,-0.479017403,d
+chr22,17608284,23262871,-0.402441119,d
+chr22,32279539,36322143,0.9324086,d
+chr22,43888320,47682818,-0.630207221,d
+chrX,7294137,14585913,-0.236972508,d
+chrX,15153209,16841503,0.07246526,d
+chrX,38592092,59262110,0.868997787,d
+chrX,62538957,65114528,0.029099862,d
+chrX,66059566,81429727,-0.662129375,d
+chrX,118768851,127033094,-0.594293239,d
+chrX,127234631,128082131,1.017744978,d
+chrX,132196693,133461326,0.744649229,d
+chrX,133611862,139056419,-0.408563098,d
+chrX,143167487,145910472,-0.381570347,d
+chrY,2197506,5112922,-0.69941413,d
+chrY,11911253,28504188,-0.36461945,d
+chrY,32832860,46193501,-1.090149441,d
+chrY,47828922,57014774,0.227155962,d
diff --git a/cytoband.csv b/example_data/chromosome_cytoband.csv
similarity index 97%
rename from cytoband.csv
rename to example_data/chromosome_cytoband.csv
index 9f99e66..270cdb7 100644
--- a/cytoband.csv
+++ b/example_data/chromosome_cytoband.csv
@@ -1,863 +1,863 @@
-chr,start,end,value1,value2
-chr1,1,2300000,p36.33,gneg
-chr1,2300000,5400000,p36.32,gpos25
-chr1,5400000,7200000,p36.31,gneg
-chr1,7200000,9200000,p36.23,gpos25
-chr1,9200000,12700000,p36.22,gneg
-chr1,12700000,16200000,p36.21,gpos50
-chr1,16200000,20400000,p36.13,gneg
-chr1,20400000,23900000,p36.12,gpos25
-chr1,23900000,28000000,p36.11,gneg
-chr1,28000000,30200000,p35.3,gpos25
-chr1,30200000,32400000,p35.2,gneg
-chr1,32400000,34600000,p35.1,gpos25
-chr1,34600000,40100000,p34.3,gneg
-chr1,40100000,44100000,p34.2,gpos25
-chr1,44100000,46800000,p34.1,gneg
-chr1,46800000,50700000,p33,gpos75
-chr1,50700000,56100000,p32.3,gneg
-chr1,56100000,59000000,p32.2,gpos50
-chr1,59000000,61300000,p32.1,gneg
-chr1,61300000,68900000,p31.3,gpos50
-chr1,68900000,69700000,p31.2,gneg
-chr1,69700000,84900000,p31.1,gpos100
-chr1,84900000,88400000,p22.3,gneg
-chr1,88400000,92000000,p22.2,gpos75
-chr1,92000000,94700000,p22.1,gneg
-chr1,94700000,99700000,p21.3,gpos75
-chr1,99700000,102200000,p21.2,gneg
-chr1,102200000,107200000,p21.1,gpos100
-chr1,107200000,111800000,p13.3,gneg
-chr1,111800000,116100000,p13.2,gpos50
-chr1,116100000,117800000,p13.1,gneg
-chr1,117800000,120600000,p12,gpos50
-chr1,120600000,121500000,p11.2,gneg
-chr1,121500000,125000000,p11.1,acen
-chr1,125000000,128900000,q11,acen
-chr1,128900000,142600000,q12,gvar
-chr1,142600000,147000000,q21.1,gneg
-chr1,147000000,150300000,q21.2,gpos50
-chr1,150300000,155000000,q21.3,gneg
-chr1,155000000,156500000,q22,gpos50
-chr1,156500000,159100000,q23.1,gneg
-chr1,159100000,160500000,q23.2,gpos50
-chr1,160500000,165500000,q23.3,gneg
-chr1,165500000,167200000,q24.1,gpos50
-chr1,167200000,170900000,q24.2,gneg
-chr1,170900000,172900000,q24.3,gpos75
-chr1,172900000,176000000,q25.1,gneg
-chr1,176000000,180300000,q25.2,gpos50
-chr1,180300000,185800000,q25.3,gneg
-chr1,185800000,190800000,q31.1,gpos100
-chr1,190800000,193800000,q31.2,gneg
-chr1,193800000,198700000,q31.3,gpos100
-chr1,198700000,207200000,q32.1,gneg
-chr1,207200000,211500000,q32.2,gpos25
-chr1,211500000,214500000,q32.3,gneg
-chr1,214500000,224100000,q41,gpos100
-chr1,224100000,224600000,q42.11,gneg
-chr1,224600000,227000000,q42.12,gpos25
-chr1,227000000,230700000,q42.13,gneg
-chr1,230700000,234700000,q42.2,gpos50
-chr1,234700000,236600000,q42.3,gneg
-chr1,236600000,243700000,q43,gpos75
-chr1,243700000,249250621,q44,gneg
-chr2,1,4400000,p25.3,gneg
-chr2,4400000,7100000,p25.2,gpos50
-chr2,7100000,12200000,p25.1,gneg
-chr2,12200000,16700000,p24.3,gpos75
-chr2,16700000,19200000,p24.2,gneg
-chr2,19200000,24000000,p24.1,gpos75
-chr2,24000000,27900000,p23.3,gneg
-chr2,27900000,30000000,p23.2,gpos25
-chr2,30000000,32100000,p23.1,gneg
-chr2,32100000,36600000,p22.3,gpos75
-chr2,36600000,38600000,p22.2,gneg
-chr2,38600000,41800000,p22.1,gpos50
-chr2,41800000,47800000,p21,gneg
-chr2,47800000,52900000,p16.3,gpos100
-chr2,52900000,55000000,p16.2,gneg
-chr2,55000000,61300000,p16.1,gpos100
-chr2,61300000,64100000,p15,gneg
-chr2,64100000,68600000,p14,gpos50
-chr2,68600000,71500000,p13.3,gneg
-chr2,71500000,73500000,p13.2,gpos50
-chr2,73500000,75000000,p13.1,gneg
-chr2,75000000,83300000,p12,gpos100
-chr2,83300000,90500000,p11.2,gneg
-chr2,90500000,93300000,p11.1,acen
-chr2,93300000,96800000,q11.1,acen
-chr2,96800000,102700000,q11.2,gneg
-chr2,102700000,106000000,q12.1,gpos50
-chr2,106000000,107500000,q12.2,gneg
-chr2,107500000,110200000,q12.3,gpos25
-chr2,110200000,114400000,q13,gneg
-chr2,114400000,118800000,q14.1,gpos50
-chr2,118800000,122400000,q14.2,gneg
-chr2,122400000,129900000,q14.3,gpos50
-chr2,129900000,132500000,q21.1,gneg
-chr2,132500000,135100000,q21.2,gpos25
-chr2,135100000,136800000,q21.3,gneg
-chr2,136800000,142200000,q22.1,gpos100
-chr2,142200000,144100000,q22.2,gneg
-chr2,144100000,148700000,q22.3,gpos100
-chr2,148700000,149900000,q23.1,gneg
-chr2,149900000,150500000,q23.2,gpos25
-chr2,150500000,154900000,q23.3,gneg
-chr2,154900000,159800000,q24.1,gpos75
-chr2,159800000,163700000,q24.2,gneg
-chr2,163700000,169700000,q24.3,gpos75
-chr2,169700000,178000000,q31.1,gneg
-chr2,178000000,180600000,q31.2,gpos50
-chr2,180600000,183000000,q31.3,gneg
-chr2,183000000,189400000,q32.1,gpos75
-chr2,189400000,191900000,q32.2,gneg
-chr2,191900000,197400000,q32.3,gpos75
-chr2,197400000,203300000,q33.1,gneg
-chr2,203300000,204900000,q33.2,gpos50
-chr2,204900000,209000000,q33.3,gneg
-chr2,209000000,215300000,q34,gpos100
-chr2,215300000,221500000,q35,gneg
-chr2,221500000,225200000,q36.1,gpos75
-chr2,225200000,226100000,q36.2,gneg
-chr2,226100000,231000000,q36.3,gpos100
-chr2,231000000,235600000,q37.1,gneg
-chr2,235600000,237300000,q37.2,gpos50
-chr2,237300000,243199373,q37.3,gneg
-chr3,1,2800000,p26.3,gpos50
-chr3,2800000,4000000,p26.2,gneg
-chr3,4000000,8700000,p26.1,gpos50
-chr3,8700000,11800000,p25.3,gneg
-chr3,11800000,13300000,p25.2,gpos25
-chr3,13300000,16400000,p25.1,gneg
-chr3,16400000,23900000,p24.3,gpos100
-chr3,23900000,26400000,p24.2,gneg
-chr3,26400000,30900000,p24.1,gpos75
-chr3,30900000,32100000,p23,gneg
-chr3,32100000,36500000,p22.3,gpos50
-chr3,36500000,39400000,p22.2,gneg
-chr3,39400000,43700000,p22.1,gpos75
-chr3,43700000,44100000,p21.33,gneg
-chr3,44100000,44200000,p21.32,gpos50
-chr3,44200000,50600000,p21.31,gneg
-chr3,50600000,52300000,p21.2,gpos25
-chr3,52300000,54400000,p21.1,gneg
-chr3,54400000,58600000,p14.3,gpos50
-chr3,58600000,63700000,p14.2,gneg
-chr3,63700000,69800000,p14.1,gpos50
-chr3,69800000,74200000,p13,gneg
-chr3,74200000,79800000,p12.3,gpos75
-chr3,79800000,83500000,p12.2,gneg
-chr3,83500000,87200000,p12.1,gpos75
-chr3,87200000,87900000,p11.2,gneg
-chr3,87900000,91000000,p11.1,acen
-chr3,91000000,93900000,q11.1,acen
-chr3,93900000,98300000,q11.2,gvar
-chr3,98300000,100000000,q12.1,gneg
-chr3,100000000,100900000,q12.2,gpos25
-chr3,100900000,102800000,q12.3,gneg
-chr3,102800000,106200000,q13.11,gpos75
-chr3,106200000,107900000,q13.12,gneg
-chr3,107900000,111300000,q13.13,gpos50
-chr3,111300000,113500000,q13.2,gneg
-chr3,113500000,117300000,q13.31,gpos75
-chr3,117300000,119000000,q13.32,gneg
-chr3,119000000,121900000,q13.33,gpos75
-chr3,121900000,123800000,q21.1,gneg
-chr3,123800000,125800000,q21.2,gpos25
-chr3,125800000,129200000,q21.3,gneg
-chr3,129200000,133700000,q22.1,gpos25
-chr3,133700000,135700000,q22.2,gneg
-chr3,135700000,138700000,q22.3,gpos25
-chr3,138700000,142800000,q23,gneg
-chr3,142800000,148900000,q24,gpos100
-chr3,148900000,152100000,q25.1,gneg
-chr3,152100000,155000000,q25.2,gpos50
-chr3,155000000,157000000,q25.31,gneg
-chr3,157000000,159000000,q25.32,gpos50
-chr3,159000000,160700000,q25.33,gneg
-chr3,160700000,167600000,q26.1,gpos100
-chr3,167600000,170900000,q26.2,gneg
-chr3,170900000,175700000,q26.31,gpos75
-chr3,175700000,179000000,q26.32,gneg
-chr3,179000000,182700000,q26.33,gpos75
-chr3,182700000,184500000,q27.1,gneg
-chr3,184500000,186000000,q27.2,gpos25
-chr3,186000000,187900000,q27.3,gneg
-chr3,187900000,192300000,q28,gpos75
-chr3,192300000,198022430,q29,gneg
-chr4,1,4500000,p16.3,gneg
-chr4,4500000,6000000,p16.2,gpos25
-chr4,6000000,11300000,p16.1,gneg
-chr4,11300000,15200000,p15.33,gpos50
-chr4,15200000,17800000,p15.32,gneg
-chr4,17800000,21300000,p15.31,gpos75
-chr4,21300000,27700000,p15.2,gneg
-chr4,27700000,35800000,p15.1,gpos100
-chr4,35800000,41200000,p14,gneg
-chr4,41200000,44600000,p13,gpos50
-chr4,44600000,48200000,p12,gneg
-chr4,48200000,50400000,p11,acen
-chr4,50400000,52700000,q11,acen
-chr4,52700000,59500000,q12,gneg
-chr4,59500000,66600000,q13.1,gpos100
-chr4,66600000,70500000,q13.2,gneg
-chr4,70500000,76300000,q13.3,gpos75
-chr4,76300000,78900000,q21.1,gneg
-chr4,78900000,82400000,q21.21,gpos50
-chr4,82400000,84100000,q21.22,gneg
-chr4,84100000,86900000,q21.23,gpos25
-chr4,86900000,88000000,q21.3,gneg
-chr4,88000000,93700000,q22.1,gpos75
-chr4,93700000,95100000,q22.2,gneg
-chr4,95100000,98800000,q22.3,gpos75
-chr4,98800000,101100000,q23,gneg
-chr4,101100000,107700000,q24,gpos50
-chr4,107700000,114100000,q25,gneg
-chr4,114100000,120800000,q26,gpos75
-chr4,120800000,123800000,q27,gneg
-chr4,123800000,128800000,q28.1,gpos50
-chr4,128800000,131100000,q28.2,gneg
-chr4,131100000,139500000,q28.3,gpos100
-chr4,139500000,141500000,q31.1,gneg
-chr4,141500000,146800000,q31.21,gpos25
-chr4,146800000,148500000,q31.22,gneg
-chr4,148500000,151100000,q31.23,gpos25
-chr4,151100000,155600000,q31.3,gneg
-chr4,155600000,161800000,q32.1,gpos100
-chr4,161800000,164500000,q32.2,gneg
-chr4,164500000,170100000,q32.3,gpos100
-chr4,170100000,171900000,q33,gneg
-chr4,171900000,176300000,q34.1,gpos75
-chr4,176300000,177500000,q34.2,gneg
-chr4,177500000,183200000,q34.3,gpos100
-chr4,183200000,187100000,q35.1,gneg
-chr4,187100000,191154276,q35.2,gpos25
-chr5,1,4500000,p15.33,gneg
-chr5,4500000,6300000,p15.32,gpos25
-chr5,6300000,9800000,p15.31,gneg
-chr5,9800000,15000000,p15.2,gpos50
-chr5,15000000,18400000,p15.1,gneg
-chr5,18400000,23300000,p14.3,gpos100
-chr5,23300000,24600000,p14.2,gneg
-chr5,24600000,28900000,p14.1,gpos100
-chr5,28900000,33800000,p13.3,gneg
-chr5,33800000,38400000,p13.2,gpos25
-chr5,38400000,42500000,p13.1,gneg
-chr5,42500000,46100000,p12,gpos50
-chr5,46100000,48400000,p11,acen
-chr5,48400000,50700000,q11.1,acen
-chr5,50700000,58900000,q11.2,gneg
-chr5,58900000,62900000,q12.1,gpos75
-chr5,62900000,63200000,q12.2,gneg
-chr5,63200000,66700000,q12.3,gpos75
-chr5,66700000,68400000,q13.1,gneg
-chr5,68400000,73300000,q13.2,gpos50
-chr5,73300000,76900000,q13.3,gneg
-chr5,76900000,81400000,q14.1,gpos50
-chr5,81400000,82800000,q14.2,gneg
-chr5,82800000,92300000,q14.3,gpos100
-chr5,92300000,98200000,q15,gneg
-chr5,98200000,102800000,q21.1,gpos100
-chr5,102800000,104500000,q21.2,gneg
-chr5,104500000,109600000,q21.3,gpos100
-chr5,109600000,111500000,q22.1,gneg
-chr5,111500000,113100000,q22.2,gpos50
-chr5,113100000,115200000,q22.3,gneg
-chr5,115200000,121400000,q23.1,gpos100
-chr5,121400000,127300000,q23.2,gneg
-chr5,127300000,130600000,q23.3,gpos100
-chr5,130600000,136200000,q31.1,gneg
-chr5,136200000,139500000,q31.2,gpos25
-chr5,139500000,144500000,q31.3,gneg
-chr5,144500000,149800000,q32,gpos75
-chr5,149800000,152700000,q33.1,gneg
-chr5,152700000,155700000,q33.2,gpos50
-chr5,155700000,159900000,q33.3,gneg
-chr5,159900000,168500000,q34,gpos100
-chr5,168500000,172800000,q35.1,gneg
-chr5,172800000,176600000,q35.2,gpos25
-chr5,176600000,180915260,q35.3,gneg
-chr6,1,2300000,p25.3,gneg
-chr6,2300000,4200000,p25.2,gpos25
-chr6,4200000,7100000,p25.1,gneg
-chr6,7100000,10600000,p24.3,gpos50
-chr6,10600000,11600000,p24.2,gneg
-chr6,11600000,13400000,p24.1,gpos25
-chr6,13400000,15200000,p23,gneg
-chr6,15200000,25200000,p22.3,gpos75
-chr6,25200000,27000000,p22.2,gneg
-chr6,27000000,30400000,p22.1,gpos50
-chr6,30400000,32100000,p21.33,gneg
-chr6,32100000,33500000,p21.32,gpos25
-chr6,33500000,36600000,p21.31,gneg
-chr6,36600000,40500000,p21.2,gpos25
-chr6,40500000,46200000,p21.1,gneg
-chr6,46200000,51800000,p12.3,gpos100
-chr6,51800000,52900000,p12.2,gneg
-chr6,52900000,57000000,p12.1,gpos100
-chr6,57000000,58700000,p11.2,gneg
-chr6,58700000,61000000,p11.1,acen
-chr6,61000000,63300000,q11.1,acen
-chr6,63300000,63400000,q11.2,gneg
-chr6,63400000,70000000,q12,gpos100
-chr6,70000000,75900000,q13,gneg
-chr6,75900000,83900000,q14.1,gpos50
-chr6,83900000,84900000,q14.2,gneg
-chr6,84900000,88000000,q14.3,gpos50
-chr6,88000000,93100000,q15,gneg
-chr6,93100000,99500000,q16.1,gpos100
-chr6,99500000,100600000,q16.2,gneg
-chr6,100600000,105500000,q16.3,gpos100
-chr6,105500000,114600000,q21,gneg
-chr6,114600000,118300000,q22.1,gpos75
-chr6,118300000,118500000,q22.2,gneg
-chr6,118500000,126100000,q22.31,gpos100
-chr6,126100000,127100000,q22.32,gneg
-chr6,127100000,130300000,q22.33,gpos75
-chr6,130300000,131200000,q23.1,gneg
-chr6,131200000,135200000,q23.2,gpos50
-chr6,135200000,139000000,q23.3,gneg
-chr6,139000000,142800000,q24.1,gpos75
-chr6,142800000,145600000,q24.2,gneg
-chr6,145600000,149000000,q24.3,gpos75
-chr6,149000000,152500000,q25.1,gneg
-chr6,152500000,155500000,q25.2,gpos50
-chr6,155500000,161000000,q25.3,gneg
-chr6,161000000,164500000,q26,gpos50
-chr6,164500000,171115067,q27,gneg
-chr7,1,2800000,p22.3,gneg
-chr7,2800000,4500000,p22.2,gpos25
-chr7,4500000,7300000,p22.1,gneg
-chr7,7300000,13800000,p21.3,gpos100
-chr7,13800000,16500000,p21.2,gneg
-chr7,16500000,20900000,p21.1,gpos100
-chr7,20900000,25500000,p15.3,gneg
-chr7,25500000,28000000,p15.2,gpos50
-chr7,28000000,28800000,p15.1,gneg
-chr7,28800000,35000000,p14.3,gpos75
-chr7,35000000,37200000,p14.2,gneg
-chr7,37200000,43300000,p14.1,gpos75
-chr7,43300000,45400000,p13,gneg
-chr7,45400000,49000000,p12.3,gpos75
-chr7,49000000,50500000,p12.2,gneg
-chr7,50500000,54000000,p12.1,gpos75
-chr7,54000000,58000000,p11.2,gneg
-chr7,58000000,59900000,p11.1,acen
-chr7,59900000,61700000,q11.1,acen
-chr7,61700000,67000000,q11.21,gneg
-chr7,67000000,72200000,q11.22,gpos50
-chr7,72200000,77500000,q11.23,gneg
-chr7,77500000,86400000,q21.11,gpos100
-chr7,86400000,88200000,q21.12,gneg
-chr7,88200000,91100000,q21.13,gpos75
-chr7,91100000,92800000,q21.2,gneg
-chr7,92800000,98000000,q21.3,gpos75
-chr7,98000000,103800000,q22.1,gneg
-chr7,103800000,104500000,q22.2,gpos50
-chr7,104500000,107400000,q22.3,gneg
-chr7,107400000,114600000,q31.1,gpos75
-chr7,114600000,117400000,q31.2,gneg
-chr7,117400000,121100000,q31.31,gpos75
-chr7,121100000,123800000,q31.32,gneg
-chr7,123800000,127100000,q31.33,gpos75
-chr7,127100000,129200000,q32.1,gneg
-chr7,129200000,130400000,q32.2,gpos25
-chr7,130400000,132600000,q32.3,gneg
-chr7,132600000,138200000,q33,gpos50
-chr7,138200000,143100000,q34,gneg
-chr7,143100000,147900000,q35,gpos75
-chr7,147900000,152600000,q36.1,gneg
-chr7,152600000,155100000,q36.2,gpos25
-chr7,155100000,159138663,q36.3,gneg
-chr8,1,2200000,p23.3,gneg
-chr8,2200000,6200000,p23.2,gpos75
-chr8,6200000,12700000,p23.1,gneg
-chr8,12700000,19000000,p22,gpos100
-chr8,19000000,23300000,p21.3,gneg
-chr8,23300000,27400000,p21.2,gpos50
-chr8,27400000,28800000,p21.1,gneg
-chr8,28800000,36500000,p12,gpos75
-chr8,36500000,38300000,p11.23,gneg
-chr8,38300000,39700000,p11.22,gpos25
-chr8,39700000,43100000,p11.21,gneg
-chr8,43100000,45600000,p11.1,acen
-chr8,45600000,48100000,q11.1,acen
-chr8,48100000,52200000,q11.21,gneg
-chr8,52200000,52600000,q11.22,gpos75
-chr8,52600000,55500000,q11.23,gneg
-chr8,55500000,61600000,q12.1,gpos50
-chr8,61600000,62200000,q12.2,gneg
-chr8,62200000,66000000,q12.3,gpos50
-chr8,66000000,68000000,q13.1,gneg
-chr8,68000000,70500000,q13.2,gpos50
-chr8,70500000,73900000,q13.3,gneg
-chr8,73900000,78300000,q21.11,gpos100
-chr8,78300000,80100000,q21.12,gneg
-chr8,80100000,84600000,q21.13,gpos75
-chr8,84600000,86900000,q21.2,gneg
-chr8,86900000,93300000,q21.3,gpos100
-chr8,93300000,99000000,q22.1,gneg
-chr8,99000000,101600000,q22.2,gpos25
-chr8,101600000,106200000,q22.3,gneg
-chr8,106200000,110500000,q23.1,gpos75
-chr8,110500000,112100000,q23.2,gneg
-chr8,112100000,117700000,q23.3,gpos100
-chr8,117700000,119200000,q24.11,gneg
-chr8,119200000,122500000,q24.12,gpos50
-chr8,122500000,127300000,q24.13,gneg
-chr8,127300000,131500000,q24.21,gpos50
-chr8,131500000,136400000,q24.22,gneg
-chr8,136400000,139900000,q24.23,gpos75
-chr8,139900000,146364022,q24.3,gneg
-chr9,1,2200000,p24.3,gneg
-chr9,2200000,4600000,p24.2,gpos25
-chr9,4600000,9000000,p24.1,gneg
-chr9,9000000,14200000,p23,gpos75
-chr9,14200000,16600000,p22.3,gneg
-chr9,16600000,18500000,p22.2,gpos25
-chr9,18500000,19900000,p22.1,gneg
-chr9,19900000,25600000,p21.3,gpos100
-chr9,25600000,28000000,p21.2,gneg
-chr9,28000000,33200000,p21.1,gpos100
-chr9,33200000,36300000,p13.3,gneg
-chr9,36300000,38400000,p13.2,gpos25
-chr9,38400000,41000000,p13.1,gneg
-chr9,41000000,43600000,p12,gpos50
-chr9,43600000,47300000,p11.2,gneg
-chr9,47300000,49000000,p11.1,acen
-chr9,49000000,50700000,q11,acen
-chr9,50700000,65900000,q12,gvar
-chr9,65900000,68700000,q13,gneg
-chr9,68700000,72200000,q21.11,gpos25
-chr9,72200000,74000000,q21.12,gneg
-chr9,74000000,79200000,q21.13,gpos50
-chr9,79200000,81100000,q21.2,gneg
-chr9,81100000,84100000,q21.31,gpos50
-chr9,84100000,86900000,q21.32,gneg
-chr9,86900000,90400000,q21.33,gpos50
-chr9,90400000,91800000,q22.1,gneg
-chr9,91800000,93900000,q22.2,gpos25
-chr9,93900000,96600000,q22.31,gneg
-chr9,96600000,99300000,q22.32,gpos25
-chr9,99300000,102600000,q22.33,gneg
-chr9,102600000,108200000,q31.1,gpos100
-chr9,108200000,111300000,q31.2,gneg
-chr9,111300000,114900000,q31.3,gpos25
-chr9,114900000,117700000,q32,gneg
-chr9,117700000,122500000,q33.1,gpos75
-chr9,122500000,125800000,q33.2,gneg
-chr9,125800000,130300000,q33.3,gpos25
-chr9,130300000,133500000,q34.11,gneg
-chr9,133500000,134000000,q34.12,gpos25
-chr9,134000000,135900000,q34.13,gneg
-chr9,135900000,137400000,q34.2,gpos25
-chr9,137400000,141213431,q34.3,gneg
-chr10,1,3000000,p15.3,gneg
-chr10,3000000,3800000,p15.2,gpos25
-chr10,3800000,6600000,p15.1,gneg
-chr10,6600000,12200000,p14,gpos75
-chr10,12200000,17300000,p13,gneg
-chr10,17300000,18600000,p12.33,gpos75
-chr10,18600000,18700000,p12.32,gneg
-chr10,18700000,22600000,p12.31,gpos75
-chr10,22600000,24600000,p12.2,gneg
-chr10,24600000,29600000,p12.1,gpos50
-chr10,29600000,31300000,p11.23,gneg
-chr10,31300000,34400000,p11.22,gpos25
-chr10,34400000,38000000,p11.21,gneg
-chr10,38000000,40200000,p11.1,acen
-chr10,40200000,42300000,q11.1,acen
-chr10,42300000,46100000,q11.21,gneg
-chr10,46100000,49900000,q11.22,gpos25
-chr10,49900000,52900000,q11.23,gneg
-chr10,52900000,61200000,q21.1,gpos100
-chr10,61200000,64500000,q21.2,gneg
-chr10,64500000,70600000,q21.3,gpos100
-chr10,70600000,74900000,q22.1,gneg
-chr10,74900000,77700000,q22.2,gpos50
-chr10,77700000,82000000,q22.3,gneg
-chr10,82000000,87900000,q23.1,gpos100
-chr10,87900000,89500000,q23.2,gneg
-chr10,89500000,92900000,q23.31,gpos75
-chr10,92900000,94100000,q23.32,gneg
-chr10,94100000,97000000,q23.33,gpos50
-chr10,97000000,99300000,q24.1,gneg
-chr10,99300000,101900000,q24.2,gpos50
-chr10,101900000,103000000,q24.31,gneg
-chr10,103000000,104900000,q24.32,gpos25
-chr10,104900000,105800000,q24.33,gneg
-chr10,105800000,111900000,q25.1,gpos100
-chr10,111900000,114900000,q25.2,gneg
-chr10,114900000,119100000,q25.3,gpos75
-chr10,119100000,121700000,q26.11,gneg
-chr10,121700000,123100000,q26.12,gpos50
-chr10,123100000,127500000,q26.13,gneg
-chr10,127500000,130600000,q26.2,gpos50
-chr10,130600000,135534747,q26.3,gneg
-chr11,1,2800000,p15.5,gneg
-chr11,2800000,10700000,p15.4,gpos50
-chr11,10700000,12700000,p15.3,gneg
-chr11,12700000,16200000,p15.2,gpos50
-chr11,16200000,21700000,p15.1,gneg
-chr11,21700000,26100000,p14.3,gpos100
-chr11,26100000,27200000,p14.2,gneg
-chr11,27200000,31000000,p14.1,gpos75
-chr11,31000000,36400000,p13,gneg
-chr11,36400000,43500000,p12,gpos100
-chr11,43500000,48800000,p11.2,gneg
-chr11,48800000,51600000,p11.12,gpos75
-chr11,51600000,53700000,p11.11,acen
-chr11,53700000,55700000,q11,acen
-chr11,55700000,59900000,q12.1,gpos75
-chr11,59900000,61700000,q12.2,gneg
-chr11,61700000,63400000,q12.3,gpos25
-chr11,63400000,65900000,q13.1,gneg
-chr11,65900000,68400000,q13.2,gpos25
-chr11,68400000,70400000,q13.3,gneg
-chr11,70400000,75200000,q13.4,gpos50
-chr11,75200000,77100000,q13.5,gneg
-chr11,77100000,85600000,q14.1,gpos100
-chr11,85600000,88300000,q14.2,gneg
-chr11,88300000,92800000,q14.3,gpos100
-chr11,92800000,97200000,q21,gneg
-chr11,97200000,102100000,q22.1,gpos100
-chr11,102100000,102900000,q22.2,gneg
-chr11,102900000,110400000,q22.3,gpos100
-chr11,110400000,112500000,q23.1,gneg
-chr11,112500000,114500000,q23.2,gpos50
-chr11,114500000,121200000,q23.3,gneg
-chr11,121200000,123900000,q24.1,gpos50
-chr11,123900000,127800000,q24.2,gneg
-chr11,127800000,130800000,q24.3,gpos50
-chr11,130800000,135006516,q25,gneg
-chr12,1,3300000,p13.33,gneg
-chr12,3300000,5400000,p13.32,gpos25
-chr12,5400000,10100000,p13.31,gneg
-chr12,10100000,12800000,p13.2,gpos75
-chr12,12800000,14800000,p13.1,gneg
-chr12,14800000,20000000,p12.3,gpos100
-chr12,20000000,21300000,p12.2,gneg
-chr12,21300000,26500000,p12.1,gpos100
-chr12,26500000,27800000,p11.23,gneg
-chr12,27800000,30700000,p11.22,gpos50
-chr12,30700000,33300000,p11.21,gneg
-chr12,33300000,35800000,p11.1,acen
-chr12,35800000,38200000,q11,acen
-chr12,38200000,46400000,q12,gpos100
-chr12,46400000,49100000,q13.11,gneg
-chr12,49100000,51500000,q13.12,gpos25
-chr12,51500000,54900000,q13.13,gneg
-chr12,54900000,56600000,q13.2,gpos25
-chr12,56600000,58100000,q13.3,gneg
-chr12,58100000,63100000,q14.1,gpos75
-chr12,63100000,65100000,q14.2,gneg
-chr12,65100000,67700000,q14.3,gpos50
-chr12,67700000,71500000,q15,gneg
-chr12,71500000,75700000,q21.1,gpos75
-chr12,75700000,80300000,q21.2,gneg
-chr12,80300000,86700000,q21.31,gpos100
-chr12,86700000,89000000,q21.32,gneg
-chr12,89000000,92600000,q21.33,gpos100
-chr12,92600000,96200000,q22,gneg
-chr12,96200000,101600000,q23.1,gpos75
-chr12,101600000,103800000,q23.2,gneg
-chr12,103800000,109000000,q23.3,gpos50
-chr12,109000000,111700000,q24.11,gneg
-chr12,111700000,112300000,q24.12,gpos25
-chr12,112300000,114300000,q24.13,gneg
-chr12,114300000,116800000,q24.21,gpos50
-chr12,116800000,118100000,q24.22,gneg
-chr12,118100000,120700000,q24.23,gpos50
-chr12,120700000,125900000,q24.31,gneg
-chr12,125900000,129300000,q24.32,gpos50
-chr12,129300000,133851895,q24.33,gneg
-chr13,1,4500000,p13,gvar
-chr13,4500000,10000000,p12,stalk
-chr13,10000000,16300000,p11.2,gvar
-chr13,16300000,17900000,p11.1,acen
-chr13,17900000,19500000,q11,acen
-chr13,19500000,23300000,q12.11,gneg
-chr13,23300000,25500000,q12.12,gpos25
-chr13,25500000,27800000,q12.13,gneg
-chr13,27800000,28900000,q12.2,gpos25
-chr13,28900000,32200000,q12.3,gneg
-chr13,32200000,34000000,q13.1,gpos50
-chr13,34000000,35500000,q13.2,gneg
-chr13,35500000,40100000,q13.3,gpos75
-chr13,40100000,45200000,q14.11,gneg
-chr13,45200000,45800000,q14.12,gpos25
-chr13,45800000,47300000,q14.13,gneg
-chr13,47300000,50900000,q14.2,gpos50
-chr13,50900000,55300000,q14.3,gneg
-chr13,55300000,59600000,q21.1,gpos100
-chr13,59600000,62300000,q21.2,gneg
-chr13,62300000,65700000,q21.31,gpos75
-chr13,65700000,68600000,q21.32,gneg
-chr13,68600000,73300000,q21.33,gpos100
-chr13,73300000,75400000,q22.1,gneg
-chr13,75400000,77200000,q22.2,gpos50
-chr13,77200000,79000000,q22.3,gneg
-chr13,79000000,87700000,q31.1,gpos100
-chr13,87700000,90000000,q31.2,gneg
-chr13,90000000,95000000,q31.3,gpos100
-chr13,95000000,98200000,q32.1,gneg
-chr13,98200000,99300000,q32.2,gpos25
-chr13,99300000,101700000,q32.3,gneg
-chr13,101700000,104800000,q33.1,gpos100
-chr13,104800000,107000000,q33.2,gneg
-chr13,107000000,110300000,q33.3,gpos100
-chr13,110300000,115169878,q34,gneg
-chr14,1,3700000,p13,gvar
-chr14,3700000,8100000,p12,stalk
-chr14,8100000,16100000,p11.2,gvar
-chr14,16100000,17600000,p11.1,acen
-chr14,17600000,19100000,q11.1,acen
-chr14,19100000,24600000,q11.2,gneg
-chr14,24600000,33300000,q12,gpos100
-chr14,33300000,35300000,q13.1,gneg
-chr14,35300000,36600000,q13.2,gpos50
-chr14,36600000,37800000,q13.3,gneg
-chr14,37800000,43500000,q21.1,gpos100
-chr14,43500000,47200000,q21.2,gneg
-chr14,47200000,50900000,q21.3,gpos100
-chr14,50900000,54100000,q22.1,gneg
-chr14,54100000,55500000,q22.2,gpos25
-chr14,55500000,58100000,q22.3,gneg
-chr14,58100000,62100000,q23.1,gpos75
-chr14,62100000,64800000,q23.2,gneg
-chr14,64800000,67900000,q23.3,gpos50
-chr14,67900000,70200000,q24.1,gneg
-chr14,70200000,73800000,q24.2,gpos50
-chr14,73800000,79300000,q24.3,gneg
-chr14,79300000,83600000,q31.1,gpos100
-chr14,83600000,84900000,q31.2,gneg
-chr14,84900000,89800000,q31.3,gpos100
-chr14,89800000,91900000,q32.11,gneg
-chr14,91900000,94700000,q32.12,gpos25
-chr14,94700000,96300000,q32.13,gneg
-chr14,96300000,101400000,q32.2,gpos50
-chr14,101400000,103200000,q32.31,gneg
-chr14,103200000,104000000,q32.32,gpos50
-chr14,104000000,107349540,q32.33,gneg
-chr15,1,3900000,p13,gvar
-chr15,3900000,8700000,p12,stalk
-chr15,8700000,15800000,p11.2,gvar
-chr15,15800000,19000000,p11.1,acen
-chr15,19000000,20700000,q11.1,acen
-chr15,20700000,25700000,q11.2,gneg
-chr15,25700000,28100000,q12,gpos50
-chr15,28100000,30300000,q13.1,gneg
-chr15,30300000,31200000,q13.2,gpos50
-chr15,31200000,33600000,q13.3,gneg
-chr15,33600000,40100000,q14,gpos75
-chr15,40100000,42800000,q15.1,gneg
-chr15,42800000,43600000,q15.2,gpos25
-chr15,43600000,44800000,q15.3,gneg
-chr15,44800000,49500000,q21.1,gpos75
-chr15,49500000,52900000,q21.2,gneg
-chr15,52900000,59100000,q21.3,gpos75
-chr15,59100000,59300000,q22.1,gneg
-chr15,59300000,63700000,q22.2,gpos25
-chr15,63700000,67200000,q22.31,gneg
-chr15,67200000,67300000,q22.32,gpos25
-chr15,67300000,67500000,q22.33,gneg
-chr15,67500000,72700000,q23,gpos25
-chr15,72700000,75200000,q24.1,gneg
-chr15,75200000,76600000,q24.2,gpos25
-chr15,76600000,78300000,q24.3,gneg
-chr15,78300000,81700000,q25.1,gpos50
-chr15,81700000,85200000,q25.2,gneg
-chr15,85200000,89100000,q25.3,gpos50
-chr15,89100000,94300000,q26.1,gneg
-chr15,94300000,98500000,q26.2,gpos50
-chr15,98500000,102531392,q26.3,gneg
-chr16,1,7900000,p13.3,gneg
-chr16,7900000,10500000,p13.2,gpos50
-chr16,10500000,12600000,p13.13,gneg
-chr16,12600000,14800000,p13.12,gpos50
-chr16,14800000,16800000,p13.11,gneg
-chr16,16800000,21200000,p12.3,gpos50
-chr16,21200000,24200000,p12.2,gneg
-chr16,24200000,28100000,p12.1,gpos50
-chr16,28100000,34600000,p11.2,gneg
-chr16,34600000,36600000,p11.1,acen
-chr16,36600000,38600000,q11.1,acen
-chr16,38600000,47000000,q11.2,gvar
-chr16,47000000,52600000,q12.1,gneg
-chr16,52600000,56700000,q12.2,gpos50
-chr16,56700000,57400000,q13,gneg
-chr16,57400000,66700000,q21,gpos100
-chr16,66700000,70800000,q22.1,gneg
-chr16,70800000,72900000,q22.2,gpos50
-chr16,72900000,74100000,q22.3,gneg
-chr16,74100000,79200000,q23.1,gpos75
-chr16,79200000,81700000,q23.2,gneg
-chr16,81700000,84200000,q23.3,gpos50
-chr16,84200000,87100000,q24.1,gneg
-chr16,87100000,88700000,q24.2,gpos25
-chr16,88700000,90354753,q24.3,gneg
-chr17,1,3300000,p13.3,gneg
-chr17,3300000,6500000,p13.2,gpos50
-chr17,6500000,10700000,p13.1,gneg
-chr17,10700000,16000000,p12,gpos75
-chr17,16000000,22200000,p11.2,gneg
-chr17,22200000,24000000,p11.1,acen
-chr17,24000000,25800000,q11.1,acen
-chr17,25800000,31800000,q11.2,gneg
-chr17,31800000,38100000,q12,gpos50
-chr17,38100000,38400000,q21.1,gneg
-chr17,38400000,40900000,q21.2,gpos25
-chr17,40900000,44900000,q21.31,gneg
-chr17,44900000,47400000,q21.32,gpos25
-chr17,47400000,50200000,q21.33,gneg
-chr17,50200000,57600000,q22,gpos75
-chr17,57600000,58300000,q23.1,gneg
-chr17,58300000,61100000,q23.2,gpos75
-chr17,61100000,62600000,q23.3,gneg
-chr17,62600000,64200000,q24.1,gpos50
-chr17,64200000,67100000,q24.2,gneg
-chr17,67100000,70900000,q24.3,gpos75
-chr17,70900000,74800000,q25.1,gneg
-chr17,74800000,75300000,q25.2,gpos25
-chr17,75300000,81195210,q25.3,gneg
-chr18,1,2900000,p11.32,gneg
-chr18,2900000,7100000,p11.31,gpos50
-chr18,7100000,8500000,p11.23,gneg
-chr18,8500000,10900000,p11.22,gpos25
-chr18,10900000,15400000,p11.21,gneg
-chr18,15400000,17200000,p11.1,acen
-chr18,17200000,19000000,q11.1,acen
-chr18,19000000,25000000,q11.2,gneg
-chr18,25000000,32700000,q12.1,gpos100
-chr18,32700000,37200000,q12.2,gneg
-chr18,37200000,43500000,q12.3,gpos75
-chr18,43500000,48200000,q21.1,gneg
-chr18,48200000,53800000,q21.2,gpos75
-chr18,53800000,56200000,q21.31,gneg
-chr18,56200000,59000000,q21.32,gpos50
-chr18,59000000,61600000,q21.33,gneg
-chr18,61600000,66800000,q22.1,gpos100
-chr18,66800000,68700000,q22.2,gneg
-chr18,68700000,73100000,q22.3,gpos25
-chr18,73100000,78077248,q23,gneg
-chr19,1,6900000,p13.3,gneg
-chr19,6900000,13900000,p13.2,gpos25
-chr19,13900000,14000000,p13.13,gneg
-chr19,14000000,16300000,p13.12,gpos25
-chr19,16300000,20000000,p13.11,gneg
-chr19,20000000,24400000,p12,gvar
-chr19,24400000,26500000,p11,acen
-chr19,26500000,28600000,q11,acen
-chr19,28600000,32400000,q12,gvar
-chr19,32400000,35500000,q13.11,gneg
-chr19,35500000,38300000,q13.12,gpos25
-chr19,38300000,38700000,q13.13,gneg
-chr19,38700000,43400000,q13.2,gpos25
-chr19,43400000,45200000,q13.31,gneg
-chr19,45200000,48000000,q13.32,gpos25
-chr19,48000000,51400000,q13.33,gneg
-chr19,51400000,53600000,q13.41,gpos25
-chr19,53600000,56300000,q13.42,gneg
-chr19,56300000,59128983,q13.43,gpos25
-chr20,1,5100000,p13,gneg
-chr20,5100000,9200000,p12.3,gpos75
-chr20,9200000,12100000,p12.2,gneg
-chr20,12100000,17900000,p12.1,gpos75
-chr20,17900000,21300000,p11.23,gneg
-chr20,21300000,22300000,p11.22,gpos25
-chr20,22300000,25600000,p11.21,gneg
-chr20,25600000,27500000,p11.1,acen
-chr20,27500000,29400000,q11.1,acen
-chr20,29400000,32100000,q11.21,gneg
-chr20,32100000,34400000,q11.22,gpos25
-chr20,34400000,37600000,q11.23,gneg
-chr20,37600000,41700000,q12,gpos75
-chr20,41700000,42100000,q13.11,gneg
-chr20,42100000,46400000,q13.12,gpos25
-chr20,46400000,49800000,q13.13,gneg
-chr20,49800000,55000000,q13.2,gpos75
-chr20,55000000,56500000,q13.31,gneg
-chr20,56500000,58400000,q13.32,gpos50
-chr20,58400000,63025520,q13.33,gneg
-chr21,1,2800000,p13,gvar
-chr21,2800000,6800000,p12,stalk
-chr21,6800000,10900000,p11.2,gvar
-chr21,10900000,13200000,p11.1,acen
-chr21,13200000,14300000,q11.1,acen
-chr21,14300000,16400000,q11.2,gneg
-chr21,16400000,24000000,q21.1,gpos100
-chr21,24000000,26800000,q21.2,gneg
-chr21,26800000,31500000,q21.3,gpos75
-chr21,31500000,35800000,q22.11,gneg
-chr21,35800000,37800000,q22.12,gpos50
-chr21,37800000,39700000,q22.13,gneg
-chr21,39700000,42600000,q22.2,gpos50
-chr21,42600000,48129895,q22.3,gneg
-chr22,1,3800000,p13,gvar
-chr22,3800000,8300000,p12,stalk
-chr22,8300000,12200000,p11.2,gvar
-chr22,12200000,14700000,p11.1,acen
-chr22,14700000,17900000,q11.1,acen
-chr22,17900000,22200000,q11.21,gneg
-chr22,22200000,23500000,q11.22,gpos25
-chr22,23500000,25900000,q11.23,gneg
-chr22,25900000,29600000,q12.1,gpos50
-chr22,29600000,32200000,q12.2,gneg
-chr22,32200000,37600000,q12.3,gpos50
-chr22,37600000,41000000,q13.1,gneg
-chr22,41000000,44200000,q13.2,gpos50
-chr22,44200000,48400000,q13.31,gneg
-chr22,48400000,49400000,q13.32,gpos50
-chr22,49400000,51304566,q13.33,gneg
-chrX,1,4300000,p22.33,gneg
-chrX,4300000,6000000,p22.32,gpos50
-chrX,6000000,9500000,p22.31,gneg
-chrX,9500000,17100000,p22.2,gpos50
-chrX,17100000,19300000,p22.13,gneg
-chrX,19300000,21900000,p22.12,gpos50
-chrX,21900000,24900000,p22.11,gneg
-chrX,24900000,29300000,p21.3,gpos100
-chrX,29300000,31500000,p21.2,gneg
-chrX,31500000,37600000,p21.1,gpos100
-chrX,37600000,42400000,p11.4,gneg
-chrX,42400000,46400000,p11.3,gpos75
-chrX,46400000,49800000,p11.23,gneg
-chrX,49800000,54800000,p11.22,gpos25
-chrX,54800000,58100000,p11.21,gneg
-chrX,58100000,60600000,p11.1,acen
-chrX,60600000,63000000,q11.1,acen
-chrX,63000000,64600000,q11.2,gneg
-chrX,64600000,67800000,q12,gpos50
-chrX,67800000,71800000,q13.1,gneg
-chrX,71800000,73900000,q13.2,gpos50
-chrX,73900000,76000000,q13.3,gneg
-chrX,76000000,84600000,q21.1,gpos100
-chrX,84600000,86200000,q21.2,gneg
-chrX,86200000,91800000,q21.31,gpos100
-chrX,91800000,93500000,q21.32,gneg
-chrX,93500000,98300000,q21.33,gpos75
-chrX,98300000,102600000,q22.1,gneg
-chrX,102600000,103700000,q22.2,gpos50
-chrX,103700000,108700000,q22.3,gneg
-chrX,108700000,116500000,q23,gpos75
-chrX,116500000,120900000,q24,gneg
-chrX,120900000,128700000,q25,gpos100
-chrX,128700000,130400000,q26.1,gneg
-chrX,130400000,133600000,q26.2,gpos25
-chrX,133600000,138000000,q26.3,gneg
-chrX,138000000,140300000,q27.1,gpos75
-chrX,140300000,142100000,q27.2,gneg
-chrX,142100000,147100000,q27.3,gpos100
-chrX,147100000,155270560,q28,gneg
-chrY,1,2500000,p11.32,gneg
-chrY,2500000,3000000,p11.31,gpos50
-chrY,3000000,11600000,p11.2,gneg
-chrY,11600000,12500000,p11.1,acen
-chrY,12500000,13400000,q11.1,acen
-chrY,13400000,15100000,q11.21,gneg
-chrY,15100000,19800000,q11.221,gpos50
-chrY,19800000,22100000,q11.222,gneg
-chrY,22100000,26200000,q11.223,gpos50
-chrY,26200000,28800000,q11.23,gneg
-chrY,28800000,59373566,q12,gvar
+chr,start,end,value1,value2
+chr1,1,2300000,p36.33,gneg
+chr1,2300000,5400000,p36.32,gpos25
+chr1,5400000,7200000,p36.31,gneg
+chr1,7200000,9200000,p36.23,gpos25
+chr1,9200000,12700000,p36.22,gneg
+chr1,12700000,16200000,p36.21,gpos50
+chr1,16200000,20400000,p36.13,gneg
+chr1,20400000,23900000,p36.12,gpos25
+chr1,23900000,28000000,p36.11,gneg
+chr1,28000000,30200000,p35.3,gpos25
+chr1,30200000,32400000,p35.2,gneg
+chr1,32400000,34600000,p35.1,gpos25
+chr1,34600000,40100000,p34.3,gneg
+chr1,40100000,44100000,p34.2,gpos25
+chr1,44100000,46800000,p34.1,gneg
+chr1,46800000,50700000,p33,gpos75
+chr1,50700000,56100000,p32.3,gneg
+chr1,56100000,59000000,p32.2,gpos50
+chr1,59000000,61300000,p32.1,gneg
+chr1,61300000,68900000,p31.3,gpos50
+chr1,68900000,69700000,p31.2,gneg
+chr1,69700000,84900000,p31.1,gpos100
+chr1,84900000,88400000,p22.3,gneg
+chr1,88400000,92000000,p22.2,gpos75
+chr1,92000000,94700000,p22.1,gneg
+chr1,94700000,99700000,p21.3,gpos75
+chr1,99700000,102200000,p21.2,gneg
+chr1,102200000,107200000,p21.1,gpos100
+chr1,107200000,111800000,p13.3,gneg
+chr1,111800000,116100000,p13.2,gpos50
+chr1,116100000,117800000,p13.1,gneg
+chr1,117800000,120600000,p12,gpos50
+chr1,120600000,121500000,p11.2,gneg
+chr1,121500000,125000000,p11.1,acen
+chr1,125000000,128900000,q11,acen
+chr1,128900000,142600000,q12,gvar
+chr1,142600000,147000000,q21.1,gneg
+chr1,147000000,150300000,q21.2,gpos50
+chr1,150300000,155000000,q21.3,gneg
+chr1,155000000,156500000,q22,gpos50
+chr1,156500000,159100000,q23.1,gneg
+chr1,159100000,160500000,q23.2,gpos50
+chr1,160500000,165500000,q23.3,gneg
+chr1,165500000,167200000,q24.1,gpos50
+chr1,167200000,170900000,q24.2,gneg
+chr1,170900000,172900000,q24.3,gpos75
+chr1,172900000,176000000,q25.1,gneg
+chr1,176000000,180300000,q25.2,gpos50
+chr1,180300000,185800000,q25.3,gneg
+chr1,185800000,190800000,q31.1,gpos100
+chr1,190800000,193800000,q31.2,gneg
+chr1,193800000,198700000,q31.3,gpos100
+chr1,198700000,207200000,q32.1,gneg
+chr1,207200000,211500000,q32.2,gpos25
+chr1,211500000,214500000,q32.3,gneg
+chr1,214500000,224100000,q41,gpos100
+chr1,224100000,224600000,q42.11,gneg
+chr1,224600000,227000000,q42.12,gpos25
+chr1,227000000,230700000,q42.13,gneg
+chr1,230700000,234700000,q42.2,gpos50
+chr1,234700000,236600000,q42.3,gneg
+chr1,236600000,243700000,q43,gpos75
+chr1,243700000,249250621,q44,gneg
+chr2,1,4400000,p25.3,gneg
+chr2,4400000,7100000,p25.2,gpos50
+chr2,7100000,12200000,p25.1,gneg
+chr2,12200000,16700000,p24.3,gpos75
+chr2,16700000,19200000,p24.2,gneg
+chr2,19200000,24000000,p24.1,gpos75
+chr2,24000000,27900000,p23.3,gneg
+chr2,27900000,30000000,p23.2,gpos25
+chr2,30000000,32100000,p23.1,gneg
+chr2,32100000,36600000,p22.3,gpos75
+chr2,36600000,38600000,p22.2,gneg
+chr2,38600000,41800000,p22.1,gpos50
+chr2,41800000,47800000,p21,gneg
+chr2,47800000,52900000,p16.3,gpos100
+chr2,52900000,55000000,p16.2,gneg
+chr2,55000000,61300000,p16.1,gpos100
+chr2,61300000,64100000,p15,gneg
+chr2,64100000,68600000,p14,gpos50
+chr2,68600000,71500000,p13.3,gneg
+chr2,71500000,73500000,p13.2,gpos50
+chr2,73500000,75000000,p13.1,gneg
+chr2,75000000,83300000,p12,gpos100
+chr2,83300000,90500000,p11.2,gneg
+chr2,90500000,93300000,p11.1,acen
+chr2,93300000,96800000,q11.1,acen
+chr2,96800000,102700000,q11.2,gneg
+chr2,102700000,106000000,q12.1,gpos50
+chr2,106000000,107500000,q12.2,gneg
+chr2,107500000,110200000,q12.3,gpos25
+chr2,110200000,114400000,q13,gneg
+chr2,114400000,118800000,q14.1,gpos50
+chr2,118800000,122400000,q14.2,gneg
+chr2,122400000,129900000,q14.3,gpos50
+chr2,129900000,132500000,q21.1,gneg
+chr2,132500000,135100000,q21.2,gpos25
+chr2,135100000,136800000,q21.3,gneg
+chr2,136800000,142200000,q22.1,gpos100
+chr2,142200000,144100000,q22.2,gneg
+chr2,144100000,148700000,q22.3,gpos100
+chr2,148700000,149900000,q23.1,gneg
+chr2,149900000,150500000,q23.2,gpos25
+chr2,150500000,154900000,q23.3,gneg
+chr2,154900000,159800000,q24.1,gpos75
+chr2,159800000,163700000,q24.2,gneg
+chr2,163700000,169700000,q24.3,gpos75
+chr2,169700000,178000000,q31.1,gneg
+chr2,178000000,180600000,q31.2,gpos50
+chr2,180600000,183000000,q31.3,gneg
+chr2,183000000,189400000,q32.1,gpos75
+chr2,189400000,191900000,q32.2,gneg
+chr2,191900000,197400000,q32.3,gpos75
+chr2,197400000,203300000,q33.1,gneg
+chr2,203300000,204900000,q33.2,gpos50
+chr2,204900000,209000000,q33.3,gneg
+chr2,209000000,215300000,q34,gpos100
+chr2,215300000,221500000,q35,gneg
+chr2,221500000,225200000,q36.1,gpos75
+chr2,225200000,226100000,q36.2,gneg
+chr2,226100000,231000000,q36.3,gpos100
+chr2,231000000,235600000,q37.1,gneg
+chr2,235600000,237300000,q37.2,gpos50
+chr2,237300000,243199373,q37.3,gneg
+chr3,1,2800000,p26.3,gpos50
+chr3,2800000,4000000,p26.2,gneg
+chr3,4000000,8700000,p26.1,gpos50
+chr3,8700000,11800000,p25.3,gneg
+chr3,11800000,13300000,p25.2,gpos25
+chr3,13300000,16400000,p25.1,gneg
+chr3,16400000,23900000,p24.3,gpos100
+chr3,23900000,26400000,p24.2,gneg
+chr3,26400000,30900000,p24.1,gpos75
+chr3,30900000,32100000,p23,gneg
+chr3,32100000,36500000,p22.3,gpos50
+chr3,36500000,39400000,p22.2,gneg
+chr3,39400000,43700000,p22.1,gpos75
+chr3,43700000,44100000,p21.33,gneg
+chr3,44100000,44200000,p21.32,gpos50
+chr3,44200000,50600000,p21.31,gneg
+chr3,50600000,52300000,p21.2,gpos25
+chr3,52300000,54400000,p21.1,gneg
+chr3,54400000,58600000,p14.3,gpos50
+chr3,58600000,63700000,p14.2,gneg
+chr3,63700000,69800000,p14.1,gpos50
+chr3,69800000,74200000,p13,gneg
+chr3,74200000,79800000,p12.3,gpos75
+chr3,79800000,83500000,p12.2,gneg
+chr3,83500000,87200000,p12.1,gpos75
+chr3,87200000,87900000,p11.2,gneg
+chr3,87900000,91000000,p11.1,acen
+chr3,91000000,93900000,q11.1,acen
+chr3,93900000,98300000,q11.2,gvar
+chr3,98300000,100000000,q12.1,gneg
+chr3,100000000,100900000,q12.2,gpos25
+chr3,100900000,102800000,q12.3,gneg
+chr3,102800000,106200000,q13.11,gpos75
+chr3,106200000,107900000,q13.12,gneg
+chr3,107900000,111300000,q13.13,gpos50
+chr3,111300000,113500000,q13.2,gneg
+chr3,113500000,117300000,q13.31,gpos75
+chr3,117300000,119000000,q13.32,gneg
+chr3,119000000,121900000,q13.33,gpos75
+chr3,121900000,123800000,q21.1,gneg
+chr3,123800000,125800000,q21.2,gpos25
+chr3,125800000,129200000,q21.3,gneg
+chr3,129200000,133700000,q22.1,gpos25
+chr3,133700000,135700000,q22.2,gneg
+chr3,135700000,138700000,q22.3,gpos25
+chr3,138700000,142800000,q23,gneg
+chr3,142800000,148900000,q24,gpos100
+chr3,148900000,152100000,q25.1,gneg
+chr3,152100000,155000000,q25.2,gpos50
+chr3,155000000,157000000,q25.31,gneg
+chr3,157000000,159000000,q25.32,gpos50
+chr3,159000000,160700000,q25.33,gneg
+chr3,160700000,167600000,q26.1,gpos100
+chr3,167600000,170900000,q26.2,gneg
+chr3,170900000,175700000,q26.31,gpos75
+chr3,175700000,179000000,q26.32,gneg
+chr3,179000000,182700000,q26.33,gpos75
+chr3,182700000,184500000,q27.1,gneg
+chr3,184500000,186000000,q27.2,gpos25
+chr3,186000000,187900000,q27.3,gneg
+chr3,187900000,192300000,q28,gpos75
+chr3,192300000,198022430,q29,gneg
+chr4,1,4500000,p16.3,gneg
+chr4,4500000,6000000,p16.2,gpos25
+chr4,6000000,11300000,p16.1,gneg
+chr4,11300000,15200000,p15.33,gpos50
+chr4,15200000,17800000,p15.32,gneg
+chr4,17800000,21300000,p15.31,gpos75
+chr4,21300000,27700000,p15.2,gneg
+chr4,27700000,35800000,p15.1,gpos100
+chr4,35800000,41200000,p14,gneg
+chr4,41200000,44600000,p13,gpos50
+chr4,44600000,48200000,p12,gneg
+chr4,48200000,50400000,p11,acen
+chr4,50400000,52700000,q11,acen
+chr4,52700000,59500000,q12,gneg
+chr4,59500000,66600000,q13.1,gpos100
+chr4,66600000,70500000,q13.2,gneg
+chr4,70500000,76300000,q13.3,gpos75
+chr4,76300000,78900000,q21.1,gneg
+chr4,78900000,82400000,q21.21,gpos50
+chr4,82400000,84100000,q21.22,gneg
+chr4,84100000,86900000,q21.23,gpos25
+chr4,86900000,88000000,q21.3,gneg
+chr4,88000000,93700000,q22.1,gpos75
+chr4,93700000,95100000,q22.2,gneg
+chr4,95100000,98800000,q22.3,gpos75
+chr4,98800000,101100000,q23,gneg
+chr4,101100000,107700000,q24,gpos50
+chr4,107700000,114100000,q25,gneg
+chr4,114100000,120800000,q26,gpos75
+chr4,120800000,123800000,q27,gneg
+chr4,123800000,128800000,q28.1,gpos50
+chr4,128800000,131100000,q28.2,gneg
+chr4,131100000,139500000,q28.3,gpos100
+chr4,139500000,141500000,q31.1,gneg
+chr4,141500000,146800000,q31.21,gpos25
+chr4,146800000,148500000,q31.22,gneg
+chr4,148500000,151100000,q31.23,gpos25
+chr4,151100000,155600000,q31.3,gneg
+chr4,155600000,161800000,q32.1,gpos100
+chr4,161800000,164500000,q32.2,gneg
+chr4,164500000,170100000,q32.3,gpos100
+chr4,170100000,171900000,q33,gneg
+chr4,171900000,176300000,q34.1,gpos75
+chr4,176300000,177500000,q34.2,gneg
+chr4,177500000,183200000,q34.3,gpos100
+chr4,183200000,187100000,q35.1,gneg
+chr4,187100000,191154276,q35.2,gpos25
+chr5,1,4500000,p15.33,gneg
+chr5,4500000,6300000,p15.32,gpos25
+chr5,6300000,9800000,p15.31,gneg
+chr5,9800000,15000000,p15.2,gpos50
+chr5,15000000,18400000,p15.1,gneg
+chr5,18400000,23300000,p14.3,gpos100
+chr5,23300000,24600000,p14.2,gneg
+chr5,24600000,28900000,p14.1,gpos100
+chr5,28900000,33800000,p13.3,gneg
+chr5,33800000,38400000,p13.2,gpos25
+chr5,38400000,42500000,p13.1,gneg
+chr5,42500000,46100000,p12,gpos50
+chr5,46100000,48400000,p11,acen
+chr5,48400000,50700000,q11.1,acen
+chr5,50700000,58900000,q11.2,gneg
+chr5,58900000,62900000,q12.1,gpos75
+chr5,62900000,63200000,q12.2,gneg
+chr5,63200000,66700000,q12.3,gpos75
+chr5,66700000,68400000,q13.1,gneg
+chr5,68400000,73300000,q13.2,gpos50
+chr5,73300000,76900000,q13.3,gneg
+chr5,76900000,81400000,q14.1,gpos50
+chr5,81400000,82800000,q14.2,gneg
+chr5,82800000,92300000,q14.3,gpos100
+chr5,92300000,98200000,q15,gneg
+chr5,98200000,102800000,q21.1,gpos100
+chr5,102800000,104500000,q21.2,gneg
+chr5,104500000,109600000,q21.3,gpos100
+chr5,109600000,111500000,q22.1,gneg
+chr5,111500000,113100000,q22.2,gpos50
+chr5,113100000,115200000,q22.3,gneg
+chr5,115200000,121400000,q23.1,gpos100
+chr5,121400000,127300000,q23.2,gneg
+chr5,127300000,130600000,q23.3,gpos100
+chr5,130600000,136200000,q31.1,gneg
+chr5,136200000,139500000,q31.2,gpos25
+chr5,139500000,144500000,q31.3,gneg
+chr5,144500000,149800000,q32,gpos75
+chr5,149800000,152700000,q33.1,gneg
+chr5,152700000,155700000,q33.2,gpos50
+chr5,155700000,159900000,q33.3,gneg
+chr5,159900000,168500000,q34,gpos100
+chr5,168500000,172800000,q35.1,gneg
+chr5,172800000,176600000,q35.2,gpos25
+chr5,176600000,180915260,q35.3,gneg
+chr6,1,2300000,p25.3,gneg
+chr6,2300000,4200000,p25.2,gpos25
+chr6,4200000,7100000,p25.1,gneg
+chr6,7100000,10600000,p24.3,gpos50
+chr6,10600000,11600000,p24.2,gneg
+chr6,11600000,13400000,p24.1,gpos25
+chr6,13400000,15200000,p23,gneg
+chr6,15200000,25200000,p22.3,gpos75
+chr6,25200000,27000000,p22.2,gneg
+chr6,27000000,30400000,p22.1,gpos50
+chr6,30400000,32100000,p21.33,gneg
+chr6,32100000,33500000,p21.32,gpos25
+chr6,33500000,36600000,p21.31,gneg
+chr6,36600000,40500000,p21.2,gpos25
+chr6,40500000,46200000,p21.1,gneg
+chr6,46200000,51800000,p12.3,gpos100
+chr6,51800000,52900000,p12.2,gneg
+chr6,52900000,57000000,p12.1,gpos100
+chr6,57000000,58700000,p11.2,gneg
+chr6,58700000,61000000,p11.1,acen
+chr6,61000000,63300000,q11.1,acen
+chr6,63300000,63400000,q11.2,gneg
+chr6,63400000,70000000,q12,gpos100
+chr6,70000000,75900000,q13,gneg
+chr6,75900000,83900000,q14.1,gpos50
+chr6,83900000,84900000,q14.2,gneg
+chr6,84900000,88000000,q14.3,gpos50
+chr6,88000000,93100000,q15,gneg
+chr6,93100000,99500000,q16.1,gpos100
+chr6,99500000,100600000,q16.2,gneg
+chr6,100600000,105500000,q16.3,gpos100
+chr6,105500000,114600000,q21,gneg
+chr6,114600000,118300000,q22.1,gpos75
+chr6,118300000,118500000,q22.2,gneg
+chr6,118500000,126100000,q22.31,gpos100
+chr6,126100000,127100000,q22.32,gneg
+chr6,127100000,130300000,q22.33,gpos75
+chr6,130300000,131200000,q23.1,gneg
+chr6,131200000,135200000,q23.2,gpos50
+chr6,135200000,139000000,q23.3,gneg
+chr6,139000000,142800000,q24.1,gpos75
+chr6,142800000,145600000,q24.2,gneg
+chr6,145600000,149000000,q24.3,gpos75
+chr6,149000000,152500000,q25.1,gneg
+chr6,152500000,155500000,q25.2,gpos50
+chr6,155500000,161000000,q25.3,gneg
+chr6,161000000,164500000,q26,gpos50
+chr6,164500000,171115067,q27,gneg
+chr7,1,2800000,p22.3,gneg
+chr7,2800000,4500000,p22.2,gpos25
+chr7,4500000,7300000,p22.1,gneg
+chr7,7300000,13800000,p21.3,gpos100
+chr7,13800000,16500000,p21.2,gneg
+chr7,16500000,20900000,p21.1,gpos100
+chr7,20900000,25500000,p15.3,gneg
+chr7,25500000,28000000,p15.2,gpos50
+chr7,28000000,28800000,p15.1,gneg
+chr7,28800000,35000000,p14.3,gpos75
+chr7,35000000,37200000,p14.2,gneg
+chr7,37200000,43300000,p14.1,gpos75
+chr7,43300000,45400000,p13,gneg
+chr7,45400000,49000000,p12.3,gpos75
+chr7,49000000,50500000,p12.2,gneg
+chr7,50500000,54000000,p12.1,gpos75
+chr7,54000000,58000000,p11.2,gneg
+chr7,58000000,59900000,p11.1,acen
+chr7,59900000,61700000,q11.1,acen
+chr7,61700000,67000000,q11.21,gneg
+chr7,67000000,72200000,q11.22,gpos50
+chr7,72200000,77500000,q11.23,gneg
+chr7,77500000,86400000,q21.11,gpos100
+chr7,86400000,88200000,q21.12,gneg
+chr7,88200000,91100000,q21.13,gpos75
+chr7,91100000,92800000,q21.2,gneg
+chr7,92800000,98000000,q21.3,gpos75
+chr7,98000000,103800000,q22.1,gneg
+chr7,103800000,104500000,q22.2,gpos50
+chr7,104500000,107400000,q22.3,gneg
+chr7,107400000,114600000,q31.1,gpos75
+chr7,114600000,117400000,q31.2,gneg
+chr7,117400000,121100000,q31.31,gpos75
+chr7,121100000,123800000,q31.32,gneg
+chr7,123800000,127100000,q31.33,gpos75
+chr7,127100000,129200000,q32.1,gneg
+chr7,129200000,130400000,q32.2,gpos25
+chr7,130400000,132600000,q32.3,gneg
+chr7,132600000,138200000,q33,gpos50
+chr7,138200000,143100000,q34,gneg
+chr7,143100000,147900000,q35,gpos75
+chr7,147900000,152600000,q36.1,gneg
+chr7,152600000,155100000,q36.2,gpos25
+chr7,155100000,159138663,q36.3,gneg
+chr8,1,2200000,p23.3,gneg
+chr8,2200000,6200000,p23.2,gpos75
+chr8,6200000,12700000,p23.1,gneg
+chr8,12700000,19000000,p22,gpos100
+chr8,19000000,23300000,p21.3,gneg
+chr8,23300000,27400000,p21.2,gpos50
+chr8,27400000,28800000,p21.1,gneg
+chr8,28800000,36500000,p12,gpos75
+chr8,36500000,38300000,p11.23,gneg
+chr8,38300000,39700000,p11.22,gpos25
+chr8,39700000,43100000,p11.21,gneg
+chr8,43100000,45600000,p11.1,acen
+chr8,45600000,48100000,q11.1,acen
+chr8,48100000,52200000,q11.21,gneg
+chr8,52200000,52600000,q11.22,gpos75
+chr8,52600000,55500000,q11.23,gneg
+chr8,55500000,61600000,q12.1,gpos50
+chr8,61600000,62200000,q12.2,gneg
+chr8,62200000,66000000,q12.3,gpos50
+chr8,66000000,68000000,q13.1,gneg
+chr8,68000000,70500000,q13.2,gpos50
+chr8,70500000,73900000,q13.3,gneg
+chr8,73900000,78300000,q21.11,gpos100
+chr8,78300000,80100000,q21.12,gneg
+chr8,80100000,84600000,q21.13,gpos75
+chr8,84600000,86900000,q21.2,gneg
+chr8,86900000,93300000,q21.3,gpos100
+chr8,93300000,99000000,q22.1,gneg
+chr8,99000000,101600000,q22.2,gpos25
+chr8,101600000,106200000,q22.3,gneg
+chr8,106200000,110500000,q23.1,gpos75
+chr8,110500000,112100000,q23.2,gneg
+chr8,112100000,117700000,q23.3,gpos100
+chr8,117700000,119200000,q24.11,gneg
+chr8,119200000,122500000,q24.12,gpos50
+chr8,122500000,127300000,q24.13,gneg
+chr8,127300000,131500000,q24.21,gpos50
+chr8,131500000,136400000,q24.22,gneg
+chr8,136400000,139900000,q24.23,gpos75
+chr8,139900000,146364022,q24.3,gneg
+chr9,1,2200000,p24.3,gneg
+chr9,2200000,4600000,p24.2,gpos25
+chr9,4600000,9000000,p24.1,gneg
+chr9,9000000,14200000,p23,gpos75
+chr9,14200000,16600000,p22.3,gneg
+chr9,16600000,18500000,p22.2,gpos25
+chr9,18500000,19900000,p22.1,gneg
+chr9,19900000,25600000,p21.3,gpos100
+chr9,25600000,28000000,p21.2,gneg
+chr9,28000000,33200000,p21.1,gpos100
+chr9,33200000,36300000,p13.3,gneg
+chr9,36300000,38400000,p13.2,gpos25
+chr9,38400000,41000000,p13.1,gneg
+chr9,41000000,43600000,p12,gpos50
+chr9,43600000,47300000,p11.2,gneg
+chr9,47300000,49000000,p11.1,acen
+chr9,49000000,50700000,q11,acen
+chr9,50700000,65900000,q12,gvar
+chr9,65900000,68700000,q13,gneg
+chr9,68700000,72200000,q21.11,gpos25
+chr9,72200000,74000000,q21.12,gneg
+chr9,74000000,79200000,q21.13,gpos50
+chr9,79200000,81100000,q21.2,gneg
+chr9,81100000,84100000,q21.31,gpos50
+chr9,84100000,86900000,q21.32,gneg
+chr9,86900000,90400000,q21.33,gpos50
+chr9,90400000,91800000,q22.1,gneg
+chr9,91800000,93900000,q22.2,gpos25
+chr9,93900000,96600000,q22.31,gneg
+chr9,96600000,99300000,q22.32,gpos25
+chr9,99300000,102600000,q22.33,gneg
+chr9,102600000,108200000,q31.1,gpos100
+chr9,108200000,111300000,q31.2,gneg
+chr9,111300000,114900000,q31.3,gpos25
+chr9,114900000,117700000,q32,gneg
+chr9,117700000,122500000,q33.1,gpos75
+chr9,122500000,125800000,q33.2,gneg
+chr9,125800000,130300000,q33.3,gpos25
+chr9,130300000,133500000,q34.11,gneg
+chr9,133500000,134000000,q34.12,gpos25
+chr9,134000000,135900000,q34.13,gneg
+chr9,135900000,137400000,q34.2,gpos25
+chr9,137400000,141213431,q34.3,gneg
+chr10,1,3000000,p15.3,gneg
+chr10,3000000,3800000,p15.2,gpos25
+chr10,3800000,6600000,p15.1,gneg
+chr10,6600000,12200000,p14,gpos75
+chr10,12200000,17300000,p13,gneg
+chr10,17300000,18600000,p12.33,gpos75
+chr10,18600000,18700000,p12.32,gneg
+chr10,18700000,22600000,p12.31,gpos75
+chr10,22600000,24600000,p12.2,gneg
+chr10,24600000,29600000,p12.1,gpos50
+chr10,29600000,31300000,p11.23,gneg
+chr10,31300000,34400000,p11.22,gpos25
+chr10,34400000,38000000,p11.21,gneg
+chr10,38000000,40200000,p11.1,acen
+chr10,40200000,42300000,q11.1,acen
+chr10,42300000,46100000,q11.21,gneg
+chr10,46100000,49900000,q11.22,gpos25
+chr10,49900000,52900000,q11.23,gneg
+chr10,52900000,61200000,q21.1,gpos100
+chr10,61200000,64500000,q21.2,gneg
+chr10,64500000,70600000,q21.3,gpos100
+chr10,70600000,74900000,q22.1,gneg
+chr10,74900000,77700000,q22.2,gpos50
+chr10,77700000,82000000,q22.3,gneg
+chr10,82000000,87900000,q23.1,gpos100
+chr10,87900000,89500000,q23.2,gneg
+chr10,89500000,92900000,q23.31,gpos75
+chr10,92900000,94100000,q23.32,gneg
+chr10,94100000,97000000,q23.33,gpos50
+chr10,97000000,99300000,q24.1,gneg
+chr10,99300000,101900000,q24.2,gpos50
+chr10,101900000,103000000,q24.31,gneg
+chr10,103000000,104900000,q24.32,gpos25
+chr10,104900000,105800000,q24.33,gneg
+chr10,105800000,111900000,q25.1,gpos100
+chr10,111900000,114900000,q25.2,gneg
+chr10,114900000,119100000,q25.3,gpos75
+chr10,119100000,121700000,q26.11,gneg
+chr10,121700000,123100000,q26.12,gpos50
+chr10,123100000,127500000,q26.13,gneg
+chr10,127500000,130600000,q26.2,gpos50
+chr10,130600000,135534747,q26.3,gneg
+chr11,1,2800000,p15.5,gneg
+chr11,2800000,10700000,p15.4,gpos50
+chr11,10700000,12700000,p15.3,gneg
+chr11,12700000,16200000,p15.2,gpos50
+chr11,16200000,21700000,p15.1,gneg
+chr11,21700000,26100000,p14.3,gpos100
+chr11,26100000,27200000,p14.2,gneg
+chr11,27200000,31000000,p14.1,gpos75
+chr11,31000000,36400000,p13,gneg
+chr11,36400000,43500000,p12,gpos100
+chr11,43500000,48800000,p11.2,gneg
+chr11,48800000,51600000,p11.12,gpos75
+chr11,51600000,53700000,p11.11,acen
+chr11,53700000,55700000,q11,acen
+chr11,55700000,59900000,q12.1,gpos75
+chr11,59900000,61700000,q12.2,gneg
+chr11,61700000,63400000,q12.3,gpos25
+chr11,63400000,65900000,q13.1,gneg
+chr11,65900000,68400000,q13.2,gpos25
+chr11,68400000,70400000,q13.3,gneg
+chr11,70400000,75200000,q13.4,gpos50
+chr11,75200000,77100000,q13.5,gneg
+chr11,77100000,85600000,q14.1,gpos100
+chr11,85600000,88300000,q14.2,gneg
+chr11,88300000,92800000,q14.3,gpos100
+chr11,92800000,97200000,q21,gneg
+chr11,97200000,102100000,q22.1,gpos100
+chr11,102100000,102900000,q22.2,gneg
+chr11,102900000,110400000,q22.3,gpos100
+chr11,110400000,112500000,q23.1,gneg
+chr11,112500000,114500000,q23.2,gpos50
+chr11,114500000,121200000,q23.3,gneg
+chr11,121200000,123900000,q24.1,gpos50
+chr11,123900000,127800000,q24.2,gneg
+chr11,127800000,130800000,q24.3,gpos50
+chr11,130800000,135006516,q25,gneg
+chr12,1,3300000,p13.33,gneg
+chr12,3300000,5400000,p13.32,gpos25
+chr12,5400000,10100000,p13.31,gneg
+chr12,10100000,12800000,p13.2,gpos75
+chr12,12800000,14800000,p13.1,gneg
+chr12,14800000,20000000,p12.3,gpos100
+chr12,20000000,21300000,p12.2,gneg
+chr12,21300000,26500000,p12.1,gpos100
+chr12,26500000,27800000,p11.23,gneg
+chr12,27800000,30700000,p11.22,gpos50
+chr12,30700000,33300000,p11.21,gneg
+chr12,33300000,35800000,p11.1,acen
+chr12,35800000,38200000,q11,acen
+chr12,38200000,46400000,q12,gpos100
+chr12,46400000,49100000,q13.11,gneg
+chr12,49100000,51500000,q13.12,gpos25
+chr12,51500000,54900000,q13.13,gneg
+chr12,54900000,56600000,q13.2,gpos25
+chr12,56600000,58100000,q13.3,gneg
+chr12,58100000,63100000,q14.1,gpos75
+chr12,63100000,65100000,q14.2,gneg
+chr12,65100000,67700000,q14.3,gpos50
+chr12,67700000,71500000,q15,gneg
+chr12,71500000,75700000,q21.1,gpos75
+chr12,75700000,80300000,q21.2,gneg
+chr12,80300000,86700000,q21.31,gpos100
+chr12,86700000,89000000,q21.32,gneg
+chr12,89000000,92600000,q21.33,gpos100
+chr12,92600000,96200000,q22,gneg
+chr12,96200000,101600000,q23.1,gpos75
+chr12,101600000,103800000,q23.2,gneg
+chr12,103800000,109000000,q23.3,gpos50
+chr12,109000000,111700000,q24.11,gneg
+chr12,111700000,112300000,q24.12,gpos25
+chr12,112300000,114300000,q24.13,gneg
+chr12,114300000,116800000,q24.21,gpos50
+chr12,116800000,118100000,q24.22,gneg
+chr12,118100000,120700000,q24.23,gpos50
+chr12,120700000,125900000,q24.31,gneg
+chr12,125900000,129300000,q24.32,gpos50
+chr12,129300000,133851895,q24.33,gneg
+chr13,1,4500000,p13,gvar
+chr13,4500000,10000000,p12,stalk
+chr13,10000000,16300000,p11.2,gvar
+chr13,16300000,17900000,p11.1,acen
+chr13,17900000,19500000,q11,acen
+chr13,19500000,23300000,q12.11,gneg
+chr13,23300000,25500000,q12.12,gpos25
+chr13,25500000,27800000,q12.13,gneg
+chr13,27800000,28900000,q12.2,gpos25
+chr13,28900000,32200000,q12.3,gneg
+chr13,32200000,34000000,q13.1,gpos50
+chr13,34000000,35500000,q13.2,gneg
+chr13,35500000,40100000,q13.3,gpos75
+chr13,40100000,45200000,q14.11,gneg
+chr13,45200000,45800000,q14.12,gpos25
+chr13,45800000,47300000,q14.13,gneg
+chr13,47300000,50900000,q14.2,gpos50
+chr13,50900000,55300000,q14.3,gneg
+chr13,55300000,59600000,q21.1,gpos100
+chr13,59600000,62300000,q21.2,gneg
+chr13,62300000,65700000,q21.31,gpos75
+chr13,65700000,68600000,q21.32,gneg
+chr13,68600000,73300000,q21.33,gpos100
+chr13,73300000,75400000,q22.1,gneg
+chr13,75400000,77200000,q22.2,gpos50
+chr13,77200000,79000000,q22.3,gneg
+chr13,79000000,87700000,q31.1,gpos100
+chr13,87700000,90000000,q31.2,gneg
+chr13,90000000,95000000,q31.3,gpos100
+chr13,95000000,98200000,q32.1,gneg
+chr13,98200000,99300000,q32.2,gpos25
+chr13,99300000,101700000,q32.3,gneg
+chr13,101700000,104800000,q33.1,gpos100
+chr13,104800000,107000000,q33.2,gneg
+chr13,107000000,110300000,q33.3,gpos100
+chr13,110300000,115169878,q34,gneg
+chr14,1,3700000,p13,gvar
+chr14,3700000,8100000,p12,stalk
+chr14,8100000,16100000,p11.2,gvar
+chr14,16100000,17600000,p11.1,acen
+chr14,17600000,19100000,q11.1,acen
+chr14,19100000,24600000,q11.2,gneg
+chr14,24600000,33300000,q12,gpos100
+chr14,33300000,35300000,q13.1,gneg
+chr14,35300000,36600000,q13.2,gpos50
+chr14,36600000,37800000,q13.3,gneg
+chr14,37800000,43500000,q21.1,gpos100
+chr14,43500000,47200000,q21.2,gneg
+chr14,47200000,50900000,q21.3,gpos100
+chr14,50900000,54100000,q22.1,gneg
+chr14,54100000,55500000,q22.2,gpos25
+chr14,55500000,58100000,q22.3,gneg
+chr14,58100000,62100000,q23.1,gpos75
+chr14,62100000,64800000,q23.2,gneg
+chr14,64800000,67900000,q23.3,gpos50
+chr14,67900000,70200000,q24.1,gneg
+chr14,70200000,73800000,q24.2,gpos50
+chr14,73800000,79300000,q24.3,gneg
+chr14,79300000,83600000,q31.1,gpos100
+chr14,83600000,84900000,q31.2,gneg
+chr14,84900000,89800000,q31.3,gpos100
+chr14,89800000,91900000,q32.11,gneg
+chr14,91900000,94700000,q32.12,gpos25
+chr14,94700000,96300000,q32.13,gneg
+chr14,96300000,101400000,q32.2,gpos50
+chr14,101400000,103200000,q32.31,gneg
+chr14,103200000,104000000,q32.32,gpos50
+chr14,104000000,107349540,q32.33,gneg
+chr15,1,3900000,p13,gvar
+chr15,3900000,8700000,p12,stalk
+chr15,8700000,15800000,p11.2,gvar
+chr15,15800000,19000000,p11.1,acen
+chr15,19000000,20700000,q11.1,acen
+chr15,20700000,25700000,q11.2,gneg
+chr15,25700000,28100000,q12,gpos50
+chr15,28100000,30300000,q13.1,gneg
+chr15,30300000,31200000,q13.2,gpos50
+chr15,31200000,33600000,q13.3,gneg
+chr15,33600000,40100000,q14,gpos75
+chr15,40100000,42800000,q15.1,gneg
+chr15,42800000,43600000,q15.2,gpos25
+chr15,43600000,44800000,q15.3,gneg
+chr15,44800000,49500000,q21.1,gpos75
+chr15,49500000,52900000,q21.2,gneg
+chr15,52900000,59100000,q21.3,gpos75
+chr15,59100000,59300000,q22.1,gneg
+chr15,59300000,63700000,q22.2,gpos25
+chr15,63700000,67200000,q22.31,gneg
+chr15,67200000,67300000,q22.32,gpos25
+chr15,67300000,67500000,q22.33,gneg
+chr15,67500000,72700000,q23,gpos25
+chr15,72700000,75200000,q24.1,gneg
+chr15,75200000,76600000,q24.2,gpos25
+chr15,76600000,78300000,q24.3,gneg
+chr15,78300000,81700000,q25.1,gpos50
+chr15,81700000,85200000,q25.2,gneg
+chr15,85200000,89100000,q25.3,gpos50
+chr15,89100000,94300000,q26.1,gneg
+chr15,94300000,98500000,q26.2,gpos50
+chr15,98500000,102531392,q26.3,gneg
+chr16,1,7900000,p13.3,gneg
+chr16,7900000,10500000,p13.2,gpos50
+chr16,10500000,12600000,p13.13,gneg
+chr16,12600000,14800000,p13.12,gpos50
+chr16,14800000,16800000,p13.11,gneg
+chr16,16800000,21200000,p12.3,gpos50
+chr16,21200000,24200000,p12.2,gneg
+chr16,24200000,28100000,p12.1,gpos50
+chr16,28100000,34600000,p11.2,gneg
+chr16,34600000,36600000,p11.1,acen
+chr16,36600000,38600000,q11.1,acen
+chr16,38600000,47000000,q11.2,gvar
+chr16,47000000,52600000,q12.1,gneg
+chr16,52600000,56700000,q12.2,gpos50
+chr16,56700000,57400000,q13,gneg
+chr16,57400000,66700000,q21,gpos100
+chr16,66700000,70800000,q22.1,gneg
+chr16,70800000,72900000,q22.2,gpos50
+chr16,72900000,74100000,q22.3,gneg
+chr16,74100000,79200000,q23.1,gpos75
+chr16,79200000,81700000,q23.2,gneg
+chr16,81700000,84200000,q23.3,gpos50
+chr16,84200000,87100000,q24.1,gneg
+chr16,87100000,88700000,q24.2,gpos25
+chr16,88700000,90354753,q24.3,gneg
+chr17,1,3300000,p13.3,gneg
+chr17,3300000,6500000,p13.2,gpos50
+chr17,6500000,10700000,p13.1,gneg
+chr17,10700000,16000000,p12,gpos75
+chr17,16000000,22200000,p11.2,gneg
+chr17,22200000,24000000,p11.1,acen
+chr17,24000000,25800000,q11.1,acen
+chr17,25800000,31800000,q11.2,gneg
+chr17,31800000,38100000,q12,gpos50
+chr17,38100000,38400000,q21.1,gneg
+chr17,38400000,40900000,q21.2,gpos25
+chr17,40900000,44900000,q21.31,gneg
+chr17,44900000,47400000,q21.32,gpos25
+chr17,47400000,50200000,q21.33,gneg
+chr17,50200000,57600000,q22,gpos75
+chr17,57600000,58300000,q23.1,gneg
+chr17,58300000,61100000,q23.2,gpos75
+chr17,61100000,62600000,q23.3,gneg
+chr17,62600000,64200000,q24.1,gpos50
+chr17,64200000,67100000,q24.2,gneg
+chr17,67100000,70900000,q24.3,gpos75
+chr17,70900000,74800000,q25.1,gneg
+chr17,74800000,75300000,q25.2,gpos25
+chr17,75300000,81195210,q25.3,gneg
+chr18,1,2900000,p11.32,gneg
+chr18,2900000,7100000,p11.31,gpos50
+chr18,7100000,8500000,p11.23,gneg
+chr18,8500000,10900000,p11.22,gpos25
+chr18,10900000,15400000,p11.21,gneg
+chr18,15400000,17200000,p11.1,acen
+chr18,17200000,19000000,q11.1,acen
+chr18,19000000,25000000,q11.2,gneg
+chr18,25000000,32700000,q12.1,gpos100
+chr18,32700000,37200000,q12.2,gneg
+chr18,37200000,43500000,q12.3,gpos75
+chr18,43500000,48200000,q21.1,gneg
+chr18,48200000,53800000,q21.2,gpos75
+chr18,53800000,56200000,q21.31,gneg
+chr18,56200000,59000000,q21.32,gpos50
+chr18,59000000,61600000,q21.33,gneg
+chr18,61600000,66800000,q22.1,gpos100
+chr18,66800000,68700000,q22.2,gneg
+chr18,68700000,73100000,q22.3,gpos25
+chr18,73100000,78077248,q23,gneg
+chr19,1,6900000,p13.3,gneg
+chr19,6900000,13900000,p13.2,gpos25
+chr19,13900000,14000000,p13.13,gneg
+chr19,14000000,16300000,p13.12,gpos25
+chr19,16300000,20000000,p13.11,gneg
+chr19,20000000,24400000,p12,gvar
+chr19,24400000,26500000,p11,acen
+chr19,26500000,28600000,q11,acen
+chr19,28600000,32400000,q12,gvar
+chr19,32400000,35500000,q13.11,gneg
+chr19,35500000,38300000,q13.12,gpos25
+chr19,38300000,38700000,q13.13,gneg
+chr19,38700000,43400000,q13.2,gpos25
+chr19,43400000,45200000,q13.31,gneg
+chr19,45200000,48000000,q13.32,gpos25
+chr19,48000000,51400000,q13.33,gneg
+chr19,51400000,53600000,q13.41,gpos25
+chr19,53600000,56300000,q13.42,gneg
+chr19,56300000,59128983,q13.43,gpos25
+chr20,1,5100000,p13,gneg
+chr20,5100000,9200000,p12.3,gpos75
+chr20,9200000,12100000,p12.2,gneg
+chr20,12100000,17900000,p12.1,gpos75
+chr20,17900000,21300000,p11.23,gneg
+chr20,21300000,22300000,p11.22,gpos25
+chr20,22300000,25600000,p11.21,gneg
+chr20,25600000,27500000,p11.1,acen
+chr20,27500000,29400000,q11.1,acen
+chr20,29400000,32100000,q11.21,gneg
+chr20,32100000,34400000,q11.22,gpos25
+chr20,34400000,37600000,q11.23,gneg
+chr20,37600000,41700000,q12,gpos75
+chr20,41700000,42100000,q13.11,gneg
+chr20,42100000,46400000,q13.12,gpos25
+chr20,46400000,49800000,q13.13,gneg
+chr20,49800000,55000000,q13.2,gpos75
+chr20,55000000,56500000,q13.31,gneg
+chr20,56500000,58400000,q13.32,gpos50
+chr20,58400000,63025520,q13.33,gneg
+chr21,1,2800000,p13,gvar
+chr21,2800000,6800000,p12,stalk
+chr21,6800000,10900000,p11.2,gvar
+chr21,10900000,13200000,p11.1,acen
+chr21,13200000,14300000,q11.1,acen
+chr21,14300000,16400000,q11.2,gneg
+chr21,16400000,24000000,q21.1,gpos100
+chr21,24000000,26800000,q21.2,gneg
+chr21,26800000,31500000,q21.3,gpos75
+chr21,31500000,35800000,q22.11,gneg
+chr21,35800000,37800000,q22.12,gpos50
+chr21,37800000,39700000,q22.13,gneg
+chr21,39700000,42600000,q22.2,gpos50
+chr21,42600000,48129895,q22.3,gneg
+chr22,1,3800000,p13,gvar
+chr22,3800000,8300000,p12,stalk
+chr22,8300000,12200000,p11.2,gvar
+chr22,12200000,14700000,p11.1,acen
+chr22,14700000,17900000,q11.1,acen
+chr22,17900000,22200000,q11.21,gneg
+chr22,22200000,23500000,q11.22,gpos25
+chr22,23500000,25900000,q11.23,gneg
+chr22,25900000,29600000,q12.1,gpos50
+chr22,29600000,32200000,q12.2,gneg
+chr22,32200000,37600000,q12.3,gpos50
+chr22,37600000,41000000,q13.1,gneg
+chr22,41000000,44200000,q13.2,gpos50
+chr22,44200000,48400000,q13.31,gneg
+chr22,48400000,49400000,q13.32,gpos50
+chr22,49400000,51304566,q13.33,gneg
+chrX,1,4300000,p22.33,gneg
+chrX,4300000,6000000,p22.32,gpos50
+chrX,6000000,9500000,p22.31,gneg
+chrX,9500000,17100000,p22.2,gpos50
+chrX,17100000,19300000,p22.13,gneg
+chrX,19300000,21900000,p22.12,gpos50
+chrX,21900000,24900000,p22.11,gneg
+chrX,24900000,29300000,p21.3,gpos100
+chrX,29300000,31500000,p21.2,gneg
+chrX,31500000,37600000,p21.1,gpos100
+chrX,37600000,42400000,p11.4,gneg
+chrX,42400000,46400000,p11.3,gpos75
+chrX,46400000,49800000,p11.23,gneg
+chrX,49800000,54800000,p11.22,gpos25
+chrX,54800000,58100000,p11.21,gneg
+chrX,58100000,60600000,p11.1,acen
+chrX,60600000,63000000,q11.1,acen
+chrX,63000000,64600000,q11.2,gneg
+chrX,64600000,67800000,q12,gpos50
+chrX,67800000,71800000,q13.1,gneg
+chrX,71800000,73900000,q13.2,gpos50
+chrX,73900000,76000000,q13.3,gneg
+chrX,76000000,84600000,q21.1,gpos100
+chrX,84600000,86200000,q21.2,gneg
+chrX,86200000,91800000,q21.31,gpos100
+chrX,91800000,93500000,q21.32,gneg
+chrX,93500000,98300000,q21.33,gpos75
+chrX,98300000,102600000,q22.1,gneg
+chrX,102600000,103700000,q22.2,gpos50
+chrX,103700000,108700000,q22.3,gneg
+chrX,108700000,116500000,q23,gpos75
+chrX,116500000,120900000,q24,gneg
+chrX,120900000,128700000,q25,gpos100
+chrX,128700000,130400000,q26.1,gneg
+chrX,130400000,133600000,q26.2,gpos25
+chrX,133600000,138000000,q26.3,gneg
+chrX,138000000,140300000,q27.1,gpos75
+chrX,140300000,142100000,q27.2,gneg
+chrX,142100000,147100000,q27.3,gpos100
+chrX,147100000,155270560,q28,gneg
+chrY,1,2500000,p11.32,gneg
+chrY,2500000,3000000,p11.31,gpos50
+chrY,3000000,11600000,p11.2,gneg
+chrY,11600000,12500000,p11.1,acen
+chrY,12500000,13400000,q11.1,acen
+chrY,13400000,15100000,q11.21,gneg
+chrY,15100000,19800000,q11.221,gpos50
+chrY,19800000,22100000,q11.222,gneg
+chrY,22100000,26200000,q11.223,gpos50
+chrY,26200000,28800000,q11.23,gneg
+chrY,28800000,59373566,q12,gvar
diff --git a/general.csv b/example_data/chromosome_general.csv
similarity index 94%
rename from general.csv
rename to example_data/chromosome_general.csv
index f0016e1..06c0661 100644
--- a/general.csv
+++ b/example_data/chromosome_general.csv
@@ -1,25 +1,25 @@
-chr,start,end
-chr1,1,249250621
-chr2,1,243199373
-chr3,1,198022430
-chr4,1,191154276
-chr5,1,180915260
-chr6,1,171115067
-chr7,1,159138663
-chr8,1,146364022
-chr9,1,141213431
-chr10,1,135534747
-chr11,1,135006516
-chr12,1,133851895
-chr13,1,115169878
-chr14,1,107349540
-chr15,1,102531392
-chr16,1,90354753
-chr17,1,81195210
-chr18,1,78077248
-chr19,1,59128983
-chr20,1,63025520
-chr21,1,48129895
-chr22,1,51304566
-chrX,1,155270560
-chrY,1,59373566
+chr,start,end
+chr1,1,249250621
+chr2,1,243199373
+chr3,1,198022430
+chr4,1,191154276
+chr5,1,180915260
+chr6,1,171115067
+chr7,1,159138663
+chr8,1,146364022
+chr9,1,141213431
+chr10,1,135534747
+chr11,1,135006516
+chr12,1,133851895
+chr13,1,115169878
+chr14,1,107349540
+chr15,1,102531392
+chr16,1,90354753
+chr17,1,81195210
+chr18,1,78077248
+chr19,1,59128983
+chr20,1,63025520
+chr21,1,48129895
+chr22,1,51304566
+chrX,1,155270560
+chrY,1,59373566
diff --git a/example_data/chromosome_ideogram.csv b/example_data/chromosome_ideogram.csv
new file mode 100644
index 0000000..270cdb7
--- /dev/null
+++ b/example_data/chromosome_ideogram.csv
@@ -0,0 +1,863 @@
+chr,start,end,value1,value2
+chr1,1,2300000,p36.33,gneg
+chr1,2300000,5400000,p36.32,gpos25
+chr1,5400000,7200000,p36.31,gneg
+chr1,7200000,9200000,p36.23,gpos25
+chr1,9200000,12700000,p36.22,gneg
+chr1,12700000,16200000,p36.21,gpos50
+chr1,16200000,20400000,p36.13,gneg
+chr1,20400000,23900000,p36.12,gpos25
+chr1,23900000,28000000,p36.11,gneg
+chr1,28000000,30200000,p35.3,gpos25
+chr1,30200000,32400000,p35.2,gneg
+chr1,32400000,34600000,p35.1,gpos25
+chr1,34600000,40100000,p34.3,gneg
+chr1,40100000,44100000,p34.2,gpos25
+chr1,44100000,46800000,p34.1,gneg
+chr1,46800000,50700000,p33,gpos75
+chr1,50700000,56100000,p32.3,gneg
+chr1,56100000,59000000,p32.2,gpos50
+chr1,59000000,61300000,p32.1,gneg
+chr1,61300000,68900000,p31.3,gpos50
+chr1,68900000,69700000,p31.2,gneg
+chr1,69700000,84900000,p31.1,gpos100
+chr1,84900000,88400000,p22.3,gneg
+chr1,88400000,92000000,p22.2,gpos75
+chr1,92000000,94700000,p22.1,gneg
+chr1,94700000,99700000,p21.3,gpos75
+chr1,99700000,102200000,p21.2,gneg
+chr1,102200000,107200000,p21.1,gpos100
+chr1,107200000,111800000,p13.3,gneg
+chr1,111800000,116100000,p13.2,gpos50
+chr1,116100000,117800000,p13.1,gneg
+chr1,117800000,120600000,p12,gpos50
+chr1,120600000,121500000,p11.2,gneg
+chr1,121500000,125000000,p11.1,acen
+chr1,125000000,128900000,q11,acen
+chr1,128900000,142600000,q12,gvar
+chr1,142600000,147000000,q21.1,gneg
+chr1,147000000,150300000,q21.2,gpos50
+chr1,150300000,155000000,q21.3,gneg
+chr1,155000000,156500000,q22,gpos50
+chr1,156500000,159100000,q23.1,gneg
+chr1,159100000,160500000,q23.2,gpos50
+chr1,160500000,165500000,q23.3,gneg
+chr1,165500000,167200000,q24.1,gpos50
+chr1,167200000,170900000,q24.2,gneg
+chr1,170900000,172900000,q24.3,gpos75
+chr1,172900000,176000000,q25.1,gneg
+chr1,176000000,180300000,q25.2,gpos50
+chr1,180300000,185800000,q25.3,gneg
+chr1,185800000,190800000,q31.1,gpos100
+chr1,190800000,193800000,q31.2,gneg
+chr1,193800000,198700000,q31.3,gpos100
+chr1,198700000,207200000,q32.1,gneg
+chr1,207200000,211500000,q32.2,gpos25
+chr1,211500000,214500000,q32.3,gneg
+chr1,214500000,224100000,q41,gpos100
+chr1,224100000,224600000,q42.11,gneg
+chr1,224600000,227000000,q42.12,gpos25
+chr1,227000000,230700000,q42.13,gneg
+chr1,230700000,234700000,q42.2,gpos50
+chr1,234700000,236600000,q42.3,gneg
+chr1,236600000,243700000,q43,gpos75
+chr1,243700000,249250621,q44,gneg
+chr2,1,4400000,p25.3,gneg
+chr2,4400000,7100000,p25.2,gpos50
+chr2,7100000,12200000,p25.1,gneg
+chr2,12200000,16700000,p24.3,gpos75
+chr2,16700000,19200000,p24.2,gneg
+chr2,19200000,24000000,p24.1,gpos75
+chr2,24000000,27900000,p23.3,gneg
+chr2,27900000,30000000,p23.2,gpos25
+chr2,30000000,32100000,p23.1,gneg
+chr2,32100000,36600000,p22.3,gpos75
+chr2,36600000,38600000,p22.2,gneg
+chr2,38600000,41800000,p22.1,gpos50
+chr2,41800000,47800000,p21,gneg
+chr2,47800000,52900000,p16.3,gpos100
+chr2,52900000,55000000,p16.2,gneg
+chr2,55000000,61300000,p16.1,gpos100
+chr2,61300000,64100000,p15,gneg
+chr2,64100000,68600000,p14,gpos50
+chr2,68600000,71500000,p13.3,gneg
+chr2,71500000,73500000,p13.2,gpos50
+chr2,73500000,75000000,p13.1,gneg
+chr2,75000000,83300000,p12,gpos100
+chr2,83300000,90500000,p11.2,gneg
+chr2,90500000,93300000,p11.1,acen
+chr2,93300000,96800000,q11.1,acen
+chr2,96800000,102700000,q11.2,gneg
+chr2,102700000,106000000,q12.1,gpos50
+chr2,106000000,107500000,q12.2,gneg
+chr2,107500000,110200000,q12.3,gpos25
+chr2,110200000,114400000,q13,gneg
+chr2,114400000,118800000,q14.1,gpos50
+chr2,118800000,122400000,q14.2,gneg
+chr2,122400000,129900000,q14.3,gpos50
+chr2,129900000,132500000,q21.1,gneg
+chr2,132500000,135100000,q21.2,gpos25
+chr2,135100000,136800000,q21.3,gneg
+chr2,136800000,142200000,q22.1,gpos100
+chr2,142200000,144100000,q22.2,gneg
+chr2,144100000,148700000,q22.3,gpos100
+chr2,148700000,149900000,q23.1,gneg
+chr2,149900000,150500000,q23.2,gpos25
+chr2,150500000,154900000,q23.3,gneg
+chr2,154900000,159800000,q24.1,gpos75
+chr2,159800000,163700000,q24.2,gneg
+chr2,163700000,169700000,q24.3,gpos75
+chr2,169700000,178000000,q31.1,gneg
+chr2,178000000,180600000,q31.2,gpos50
+chr2,180600000,183000000,q31.3,gneg
+chr2,183000000,189400000,q32.1,gpos75
+chr2,189400000,191900000,q32.2,gneg
+chr2,191900000,197400000,q32.3,gpos75
+chr2,197400000,203300000,q33.1,gneg
+chr2,203300000,204900000,q33.2,gpos50
+chr2,204900000,209000000,q33.3,gneg
+chr2,209000000,215300000,q34,gpos100
+chr2,215300000,221500000,q35,gneg
+chr2,221500000,225200000,q36.1,gpos75
+chr2,225200000,226100000,q36.2,gneg
+chr2,226100000,231000000,q36.3,gpos100
+chr2,231000000,235600000,q37.1,gneg
+chr2,235600000,237300000,q37.2,gpos50
+chr2,237300000,243199373,q37.3,gneg
+chr3,1,2800000,p26.3,gpos50
+chr3,2800000,4000000,p26.2,gneg
+chr3,4000000,8700000,p26.1,gpos50
+chr3,8700000,11800000,p25.3,gneg
+chr3,11800000,13300000,p25.2,gpos25
+chr3,13300000,16400000,p25.1,gneg
+chr3,16400000,23900000,p24.3,gpos100
+chr3,23900000,26400000,p24.2,gneg
+chr3,26400000,30900000,p24.1,gpos75
+chr3,30900000,32100000,p23,gneg
+chr3,32100000,36500000,p22.3,gpos50
+chr3,36500000,39400000,p22.2,gneg
+chr3,39400000,43700000,p22.1,gpos75
+chr3,43700000,44100000,p21.33,gneg
+chr3,44100000,44200000,p21.32,gpos50
+chr3,44200000,50600000,p21.31,gneg
+chr3,50600000,52300000,p21.2,gpos25
+chr3,52300000,54400000,p21.1,gneg
+chr3,54400000,58600000,p14.3,gpos50
+chr3,58600000,63700000,p14.2,gneg
+chr3,63700000,69800000,p14.1,gpos50
+chr3,69800000,74200000,p13,gneg
+chr3,74200000,79800000,p12.3,gpos75
+chr3,79800000,83500000,p12.2,gneg
+chr3,83500000,87200000,p12.1,gpos75
+chr3,87200000,87900000,p11.2,gneg
+chr3,87900000,91000000,p11.1,acen
+chr3,91000000,93900000,q11.1,acen
+chr3,93900000,98300000,q11.2,gvar
+chr3,98300000,100000000,q12.1,gneg
+chr3,100000000,100900000,q12.2,gpos25
+chr3,100900000,102800000,q12.3,gneg
+chr3,102800000,106200000,q13.11,gpos75
+chr3,106200000,107900000,q13.12,gneg
+chr3,107900000,111300000,q13.13,gpos50
+chr3,111300000,113500000,q13.2,gneg
+chr3,113500000,117300000,q13.31,gpos75
+chr3,117300000,119000000,q13.32,gneg
+chr3,119000000,121900000,q13.33,gpos75
+chr3,121900000,123800000,q21.1,gneg
+chr3,123800000,125800000,q21.2,gpos25
+chr3,125800000,129200000,q21.3,gneg
+chr3,129200000,133700000,q22.1,gpos25
+chr3,133700000,135700000,q22.2,gneg
+chr3,135700000,138700000,q22.3,gpos25
+chr3,138700000,142800000,q23,gneg
+chr3,142800000,148900000,q24,gpos100
+chr3,148900000,152100000,q25.1,gneg
+chr3,152100000,155000000,q25.2,gpos50
+chr3,155000000,157000000,q25.31,gneg
+chr3,157000000,159000000,q25.32,gpos50
+chr3,159000000,160700000,q25.33,gneg
+chr3,160700000,167600000,q26.1,gpos100
+chr3,167600000,170900000,q26.2,gneg
+chr3,170900000,175700000,q26.31,gpos75
+chr3,175700000,179000000,q26.32,gneg
+chr3,179000000,182700000,q26.33,gpos75
+chr3,182700000,184500000,q27.1,gneg
+chr3,184500000,186000000,q27.2,gpos25
+chr3,186000000,187900000,q27.3,gneg
+chr3,187900000,192300000,q28,gpos75
+chr3,192300000,198022430,q29,gneg
+chr4,1,4500000,p16.3,gneg
+chr4,4500000,6000000,p16.2,gpos25
+chr4,6000000,11300000,p16.1,gneg
+chr4,11300000,15200000,p15.33,gpos50
+chr4,15200000,17800000,p15.32,gneg
+chr4,17800000,21300000,p15.31,gpos75
+chr4,21300000,27700000,p15.2,gneg
+chr4,27700000,35800000,p15.1,gpos100
+chr4,35800000,41200000,p14,gneg
+chr4,41200000,44600000,p13,gpos50
+chr4,44600000,48200000,p12,gneg
+chr4,48200000,50400000,p11,acen
+chr4,50400000,52700000,q11,acen
+chr4,52700000,59500000,q12,gneg
+chr4,59500000,66600000,q13.1,gpos100
+chr4,66600000,70500000,q13.2,gneg
+chr4,70500000,76300000,q13.3,gpos75
+chr4,76300000,78900000,q21.1,gneg
+chr4,78900000,82400000,q21.21,gpos50
+chr4,82400000,84100000,q21.22,gneg
+chr4,84100000,86900000,q21.23,gpos25
+chr4,86900000,88000000,q21.3,gneg
+chr4,88000000,93700000,q22.1,gpos75
+chr4,93700000,95100000,q22.2,gneg
+chr4,95100000,98800000,q22.3,gpos75
+chr4,98800000,101100000,q23,gneg
+chr4,101100000,107700000,q24,gpos50
+chr4,107700000,114100000,q25,gneg
+chr4,114100000,120800000,q26,gpos75
+chr4,120800000,123800000,q27,gneg
+chr4,123800000,128800000,q28.1,gpos50
+chr4,128800000,131100000,q28.2,gneg
+chr4,131100000,139500000,q28.3,gpos100
+chr4,139500000,141500000,q31.1,gneg
+chr4,141500000,146800000,q31.21,gpos25
+chr4,146800000,148500000,q31.22,gneg
+chr4,148500000,151100000,q31.23,gpos25
+chr4,151100000,155600000,q31.3,gneg
+chr4,155600000,161800000,q32.1,gpos100
+chr4,161800000,164500000,q32.2,gneg
+chr4,164500000,170100000,q32.3,gpos100
+chr4,170100000,171900000,q33,gneg
+chr4,171900000,176300000,q34.1,gpos75
+chr4,176300000,177500000,q34.2,gneg
+chr4,177500000,183200000,q34.3,gpos100
+chr4,183200000,187100000,q35.1,gneg
+chr4,187100000,191154276,q35.2,gpos25
+chr5,1,4500000,p15.33,gneg
+chr5,4500000,6300000,p15.32,gpos25
+chr5,6300000,9800000,p15.31,gneg
+chr5,9800000,15000000,p15.2,gpos50
+chr5,15000000,18400000,p15.1,gneg
+chr5,18400000,23300000,p14.3,gpos100
+chr5,23300000,24600000,p14.2,gneg
+chr5,24600000,28900000,p14.1,gpos100
+chr5,28900000,33800000,p13.3,gneg
+chr5,33800000,38400000,p13.2,gpos25
+chr5,38400000,42500000,p13.1,gneg
+chr5,42500000,46100000,p12,gpos50
+chr5,46100000,48400000,p11,acen
+chr5,48400000,50700000,q11.1,acen
+chr5,50700000,58900000,q11.2,gneg
+chr5,58900000,62900000,q12.1,gpos75
+chr5,62900000,63200000,q12.2,gneg
+chr5,63200000,66700000,q12.3,gpos75
+chr5,66700000,68400000,q13.1,gneg
+chr5,68400000,73300000,q13.2,gpos50
+chr5,73300000,76900000,q13.3,gneg
+chr5,76900000,81400000,q14.1,gpos50
+chr5,81400000,82800000,q14.2,gneg
+chr5,82800000,92300000,q14.3,gpos100
+chr5,92300000,98200000,q15,gneg
+chr5,98200000,102800000,q21.1,gpos100
+chr5,102800000,104500000,q21.2,gneg
+chr5,104500000,109600000,q21.3,gpos100
+chr5,109600000,111500000,q22.1,gneg
+chr5,111500000,113100000,q22.2,gpos50
+chr5,113100000,115200000,q22.3,gneg
+chr5,115200000,121400000,q23.1,gpos100
+chr5,121400000,127300000,q23.2,gneg
+chr5,127300000,130600000,q23.3,gpos100
+chr5,130600000,136200000,q31.1,gneg
+chr5,136200000,139500000,q31.2,gpos25
+chr5,139500000,144500000,q31.3,gneg
+chr5,144500000,149800000,q32,gpos75
+chr5,149800000,152700000,q33.1,gneg
+chr5,152700000,155700000,q33.2,gpos50
+chr5,155700000,159900000,q33.3,gneg
+chr5,159900000,168500000,q34,gpos100
+chr5,168500000,172800000,q35.1,gneg
+chr5,172800000,176600000,q35.2,gpos25
+chr5,176600000,180915260,q35.3,gneg
+chr6,1,2300000,p25.3,gneg
+chr6,2300000,4200000,p25.2,gpos25
+chr6,4200000,7100000,p25.1,gneg
+chr6,7100000,10600000,p24.3,gpos50
+chr6,10600000,11600000,p24.2,gneg
+chr6,11600000,13400000,p24.1,gpos25
+chr6,13400000,15200000,p23,gneg
+chr6,15200000,25200000,p22.3,gpos75
+chr6,25200000,27000000,p22.2,gneg
+chr6,27000000,30400000,p22.1,gpos50
+chr6,30400000,32100000,p21.33,gneg
+chr6,32100000,33500000,p21.32,gpos25
+chr6,33500000,36600000,p21.31,gneg
+chr6,36600000,40500000,p21.2,gpos25
+chr6,40500000,46200000,p21.1,gneg
+chr6,46200000,51800000,p12.3,gpos100
+chr6,51800000,52900000,p12.2,gneg
+chr6,52900000,57000000,p12.1,gpos100
+chr6,57000000,58700000,p11.2,gneg
+chr6,58700000,61000000,p11.1,acen
+chr6,61000000,63300000,q11.1,acen
+chr6,63300000,63400000,q11.2,gneg
+chr6,63400000,70000000,q12,gpos100
+chr6,70000000,75900000,q13,gneg
+chr6,75900000,83900000,q14.1,gpos50
+chr6,83900000,84900000,q14.2,gneg
+chr6,84900000,88000000,q14.3,gpos50
+chr6,88000000,93100000,q15,gneg
+chr6,93100000,99500000,q16.1,gpos100
+chr6,99500000,100600000,q16.2,gneg
+chr6,100600000,105500000,q16.3,gpos100
+chr6,105500000,114600000,q21,gneg
+chr6,114600000,118300000,q22.1,gpos75
+chr6,118300000,118500000,q22.2,gneg
+chr6,118500000,126100000,q22.31,gpos100
+chr6,126100000,127100000,q22.32,gneg
+chr6,127100000,130300000,q22.33,gpos75
+chr6,130300000,131200000,q23.1,gneg
+chr6,131200000,135200000,q23.2,gpos50
+chr6,135200000,139000000,q23.3,gneg
+chr6,139000000,142800000,q24.1,gpos75
+chr6,142800000,145600000,q24.2,gneg
+chr6,145600000,149000000,q24.3,gpos75
+chr6,149000000,152500000,q25.1,gneg
+chr6,152500000,155500000,q25.2,gpos50
+chr6,155500000,161000000,q25.3,gneg
+chr6,161000000,164500000,q26,gpos50
+chr6,164500000,171115067,q27,gneg
+chr7,1,2800000,p22.3,gneg
+chr7,2800000,4500000,p22.2,gpos25
+chr7,4500000,7300000,p22.1,gneg
+chr7,7300000,13800000,p21.3,gpos100
+chr7,13800000,16500000,p21.2,gneg
+chr7,16500000,20900000,p21.1,gpos100
+chr7,20900000,25500000,p15.3,gneg
+chr7,25500000,28000000,p15.2,gpos50
+chr7,28000000,28800000,p15.1,gneg
+chr7,28800000,35000000,p14.3,gpos75
+chr7,35000000,37200000,p14.2,gneg
+chr7,37200000,43300000,p14.1,gpos75
+chr7,43300000,45400000,p13,gneg
+chr7,45400000,49000000,p12.3,gpos75
+chr7,49000000,50500000,p12.2,gneg
+chr7,50500000,54000000,p12.1,gpos75
+chr7,54000000,58000000,p11.2,gneg
+chr7,58000000,59900000,p11.1,acen
+chr7,59900000,61700000,q11.1,acen
+chr7,61700000,67000000,q11.21,gneg
+chr7,67000000,72200000,q11.22,gpos50
+chr7,72200000,77500000,q11.23,gneg
+chr7,77500000,86400000,q21.11,gpos100
+chr7,86400000,88200000,q21.12,gneg
+chr7,88200000,91100000,q21.13,gpos75
+chr7,91100000,92800000,q21.2,gneg
+chr7,92800000,98000000,q21.3,gpos75
+chr7,98000000,103800000,q22.1,gneg
+chr7,103800000,104500000,q22.2,gpos50
+chr7,104500000,107400000,q22.3,gneg
+chr7,107400000,114600000,q31.1,gpos75
+chr7,114600000,117400000,q31.2,gneg
+chr7,117400000,121100000,q31.31,gpos75
+chr7,121100000,123800000,q31.32,gneg
+chr7,123800000,127100000,q31.33,gpos75
+chr7,127100000,129200000,q32.1,gneg
+chr7,129200000,130400000,q32.2,gpos25
+chr7,130400000,132600000,q32.3,gneg
+chr7,132600000,138200000,q33,gpos50
+chr7,138200000,143100000,q34,gneg
+chr7,143100000,147900000,q35,gpos75
+chr7,147900000,152600000,q36.1,gneg
+chr7,152600000,155100000,q36.2,gpos25
+chr7,155100000,159138663,q36.3,gneg
+chr8,1,2200000,p23.3,gneg
+chr8,2200000,6200000,p23.2,gpos75
+chr8,6200000,12700000,p23.1,gneg
+chr8,12700000,19000000,p22,gpos100
+chr8,19000000,23300000,p21.3,gneg
+chr8,23300000,27400000,p21.2,gpos50
+chr8,27400000,28800000,p21.1,gneg
+chr8,28800000,36500000,p12,gpos75
+chr8,36500000,38300000,p11.23,gneg
+chr8,38300000,39700000,p11.22,gpos25
+chr8,39700000,43100000,p11.21,gneg
+chr8,43100000,45600000,p11.1,acen
+chr8,45600000,48100000,q11.1,acen
+chr8,48100000,52200000,q11.21,gneg
+chr8,52200000,52600000,q11.22,gpos75
+chr8,52600000,55500000,q11.23,gneg
+chr8,55500000,61600000,q12.1,gpos50
+chr8,61600000,62200000,q12.2,gneg
+chr8,62200000,66000000,q12.3,gpos50
+chr8,66000000,68000000,q13.1,gneg
+chr8,68000000,70500000,q13.2,gpos50
+chr8,70500000,73900000,q13.3,gneg
+chr8,73900000,78300000,q21.11,gpos100
+chr8,78300000,80100000,q21.12,gneg
+chr8,80100000,84600000,q21.13,gpos75
+chr8,84600000,86900000,q21.2,gneg
+chr8,86900000,93300000,q21.3,gpos100
+chr8,93300000,99000000,q22.1,gneg
+chr8,99000000,101600000,q22.2,gpos25
+chr8,101600000,106200000,q22.3,gneg
+chr8,106200000,110500000,q23.1,gpos75
+chr8,110500000,112100000,q23.2,gneg
+chr8,112100000,117700000,q23.3,gpos100
+chr8,117700000,119200000,q24.11,gneg
+chr8,119200000,122500000,q24.12,gpos50
+chr8,122500000,127300000,q24.13,gneg
+chr8,127300000,131500000,q24.21,gpos50
+chr8,131500000,136400000,q24.22,gneg
+chr8,136400000,139900000,q24.23,gpos75
+chr8,139900000,146364022,q24.3,gneg
+chr9,1,2200000,p24.3,gneg
+chr9,2200000,4600000,p24.2,gpos25
+chr9,4600000,9000000,p24.1,gneg
+chr9,9000000,14200000,p23,gpos75
+chr9,14200000,16600000,p22.3,gneg
+chr9,16600000,18500000,p22.2,gpos25
+chr9,18500000,19900000,p22.1,gneg
+chr9,19900000,25600000,p21.3,gpos100
+chr9,25600000,28000000,p21.2,gneg
+chr9,28000000,33200000,p21.1,gpos100
+chr9,33200000,36300000,p13.3,gneg
+chr9,36300000,38400000,p13.2,gpos25
+chr9,38400000,41000000,p13.1,gneg
+chr9,41000000,43600000,p12,gpos50
+chr9,43600000,47300000,p11.2,gneg
+chr9,47300000,49000000,p11.1,acen
+chr9,49000000,50700000,q11,acen
+chr9,50700000,65900000,q12,gvar
+chr9,65900000,68700000,q13,gneg
+chr9,68700000,72200000,q21.11,gpos25
+chr9,72200000,74000000,q21.12,gneg
+chr9,74000000,79200000,q21.13,gpos50
+chr9,79200000,81100000,q21.2,gneg
+chr9,81100000,84100000,q21.31,gpos50
+chr9,84100000,86900000,q21.32,gneg
+chr9,86900000,90400000,q21.33,gpos50
+chr9,90400000,91800000,q22.1,gneg
+chr9,91800000,93900000,q22.2,gpos25
+chr9,93900000,96600000,q22.31,gneg
+chr9,96600000,99300000,q22.32,gpos25
+chr9,99300000,102600000,q22.33,gneg
+chr9,102600000,108200000,q31.1,gpos100
+chr9,108200000,111300000,q31.2,gneg
+chr9,111300000,114900000,q31.3,gpos25
+chr9,114900000,117700000,q32,gneg
+chr9,117700000,122500000,q33.1,gpos75
+chr9,122500000,125800000,q33.2,gneg
+chr9,125800000,130300000,q33.3,gpos25
+chr9,130300000,133500000,q34.11,gneg
+chr9,133500000,134000000,q34.12,gpos25
+chr9,134000000,135900000,q34.13,gneg
+chr9,135900000,137400000,q34.2,gpos25
+chr9,137400000,141213431,q34.3,gneg
+chr10,1,3000000,p15.3,gneg
+chr10,3000000,3800000,p15.2,gpos25
+chr10,3800000,6600000,p15.1,gneg
+chr10,6600000,12200000,p14,gpos75
+chr10,12200000,17300000,p13,gneg
+chr10,17300000,18600000,p12.33,gpos75
+chr10,18600000,18700000,p12.32,gneg
+chr10,18700000,22600000,p12.31,gpos75
+chr10,22600000,24600000,p12.2,gneg
+chr10,24600000,29600000,p12.1,gpos50
+chr10,29600000,31300000,p11.23,gneg
+chr10,31300000,34400000,p11.22,gpos25
+chr10,34400000,38000000,p11.21,gneg
+chr10,38000000,40200000,p11.1,acen
+chr10,40200000,42300000,q11.1,acen
+chr10,42300000,46100000,q11.21,gneg
+chr10,46100000,49900000,q11.22,gpos25
+chr10,49900000,52900000,q11.23,gneg
+chr10,52900000,61200000,q21.1,gpos100
+chr10,61200000,64500000,q21.2,gneg
+chr10,64500000,70600000,q21.3,gpos100
+chr10,70600000,74900000,q22.1,gneg
+chr10,74900000,77700000,q22.2,gpos50
+chr10,77700000,82000000,q22.3,gneg
+chr10,82000000,87900000,q23.1,gpos100
+chr10,87900000,89500000,q23.2,gneg
+chr10,89500000,92900000,q23.31,gpos75
+chr10,92900000,94100000,q23.32,gneg
+chr10,94100000,97000000,q23.33,gpos50
+chr10,97000000,99300000,q24.1,gneg
+chr10,99300000,101900000,q24.2,gpos50
+chr10,101900000,103000000,q24.31,gneg
+chr10,103000000,104900000,q24.32,gpos25
+chr10,104900000,105800000,q24.33,gneg
+chr10,105800000,111900000,q25.1,gpos100
+chr10,111900000,114900000,q25.2,gneg
+chr10,114900000,119100000,q25.3,gpos75
+chr10,119100000,121700000,q26.11,gneg
+chr10,121700000,123100000,q26.12,gpos50
+chr10,123100000,127500000,q26.13,gneg
+chr10,127500000,130600000,q26.2,gpos50
+chr10,130600000,135534747,q26.3,gneg
+chr11,1,2800000,p15.5,gneg
+chr11,2800000,10700000,p15.4,gpos50
+chr11,10700000,12700000,p15.3,gneg
+chr11,12700000,16200000,p15.2,gpos50
+chr11,16200000,21700000,p15.1,gneg
+chr11,21700000,26100000,p14.3,gpos100
+chr11,26100000,27200000,p14.2,gneg
+chr11,27200000,31000000,p14.1,gpos75
+chr11,31000000,36400000,p13,gneg
+chr11,36400000,43500000,p12,gpos100
+chr11,43500000,48800000,p11.2,gneg
+chr11,48800000,51600000,p11.12,gpos75
+chr11,51600000,53700000,p11.11,acen
+chr11,53700000,55700000,q11,acen
+chr11,55700000,59900000,q12.1,gpos75
+chr11,59900000,61700000,q12.2,gneg
+chr11,61700000,63400000,q12.3,gpos25
+chr11,63400000,65900000,q13.1,gneg
+chr11,65900000,68400000,q13.2,gpos25
+chr11,68400000,70400000,q13.3,gneg
+chr11,70400000,75200000,q13.4,gpos50
+chr11,75200000,77100000,q13.5,gneg
+chr11,77100000,85600000,q14.1,gpos100
+chr11,85600000,88300000,q14.2,gneg
+chr11,88300000,92800000,q14.3,gpos100
+chr11,92800000,97200000,q21,gneg
+chr11,97200000,102100000,q22.1,gpos100
+chr11,102100000,102900000,q22.2,gneg
+chr11,102900000,110400000,q22.3,gpos100
+chr11,110400000,112500000,q23.1,gneg
+chr11,112500000,114500000,q23.2,gpos50
+chr11,114500000,121200000,q23.3,gneg
+chr11,121200000,123900000,q24.1,gpos50
+chr11,123900000,127800000,q24.2,gneg
+chr11,127800000,130800000,q24.3,gpos50
+chr11,130800000,135006516,q25,gneg
+chr12,1,3300000,p13.33,gneg
+chr12,3300000,5400000,p13.32,gpos25
+chr12,5400000,10100000,p13.31,gneg
+chr12,10100000,12800000,p13.2,gpos75
+chr12,12800000,14800000,p13.1,gneg
+chr12,14800000,20000000,p12.3,gpos100
+chr12,20000000,21300000,p12.2,gneg
+chr12,21300000,26500000,p12.1,gpos100
+chr12,26500000,27800000,p11.23,gneg
+chr12,27800000,30700000,p11.22,gpos50
+chr12,30700000,33300000,p11.21,gneg
+chr12,33300000,35800000,p11.1,acen
+chr12,35800000,38200000,q11,acen
+chr12,38200000,46400000,q12,gpos100
+chr12,46400000,49100000,q13.11,gneg
+chr12,49100000,51500000,q13.12,gpos25
+chr12,51500000,54900000,q13.13,gneg
+chr12,54900000,56600000,q13.2,gpos25
+chr12,56600000,58100000,q13.3,gneg
+chr12,58100000,63100000,q14.1,gpos75
+chr12,63100000,65100000,q14.2,gneg
+chr12,65100000,67700000,q14.3,gpos50
+chr12,67700000,71500000,q15,gneg
+chr12,71500000,75700000,q21.1,gpos75
+chr12,75700000,80300000,q21.2,gneg
+chr12,80300000,86700000,q21.31,gpos100
+chr12,86700000,89000000,q21.32,gneg
+chr12,89000000,92600000,q21.33,gpos100
+chr12,92600000,96200000,q22,gneg
+chr12,96200000,101600000,q23.1,gpos75
+chr12,101600000,103800000,q23.2,gneg
+chr12,103800000,109000000,q23.3,gpos50
+chr12,109000000,111700000,q24.11,gneg
+chr12,111700000,112300000,q24.12,gpos25
+chr12,112300000,114300000,q24.13,gneg
+chr12,114300000,116800000,q24.21,gpos50
+chr12,116800000,118100000,q24.22,gneg
+chr12,118100000,120700000,q24.23,gpos50
+chr12,120700000,125900000,q24.31,gneg
+chr12,125900000,129300000,q24.32,gpos50
+chr12,129300000,133851895,q24.33,gneg
+chr13,1,4500000,p13,gvar
+chr13,4500000,10000000,p12,stalk
+chr13,10000000,16300000,p11.2,gvar
+chr13,16300000,17900000,p11.1,acen
+chr13,17900000,19500000,q11,acen
+chr13,19500000,23300000,q12.11,gneg
+chr13,23300000,25500000,q12.12,gpos25
+chr13,25500000,27800000,q12.13,gneg
+chr13,27800000,28900000,q12.2,gpos25
+chr13,28900000,32200000,q12.3,gneg
+chr13,32200000,34000000,q13.1,gpos50
+chr13,34000000,35500000,q13.2,gneg
+chr13,35500000,40100000,q13.3,gpos75
+chr13,40100000,45200000,q14.11,gneg
+chr13,45200000,45800000,q14.12,gpos25
+chr13,45800000,47300000,q14.13,gneg
+chr13,47300000,50900000,q14.2,gpos50
+chr13,50900000,55300000,q14.3,gneg
+chr13,55300000,59600000,q21.1,gpos100
+chr13,59600000,62300000,q21.2,gneg
+chr13,62300000,65700000,q21.31,gpos75
+chr13,65700000,68600000,q21.32,gneg
+chr13,68600000,73300000,q21.33,gpos100
+chr13,73300000,75400000,q22.1,gneg
+chr13,75400000,77200000,q22.2,gpos50
+chr13,77200000,79000000,q22.3,gneg
+chr13,79000000,87700000,q31.1,gpos100
+chr13,87700000,90000000,q31.2,gneg
+chr13,90000000,95000000,q31.3,gpos100
+chr13,95000000,98200000,q32.1,gneg
+chr13,98200000,99300000,q32.2,gpos25
+chr13,99300000,101700000,q32.3,gneg
+chr13,101700000,104800000,q33.1,gpos100
+chr13,104800000,107000000,q33.2,gneg
+chr13,107000000,110300000,q33.3,gpos100
+chr13,110300000,115169878,q34,gneg
+chr14,1,3700000,p13,gvar
+chr14,3700000,8100000,p12,stalk
+chr14,8100000,16100000,p11.2,gvar
+chr14,16100000,17600000,p11.1,acen
+chr14,17600000,19100000,q11.1,acen
+chr14,19100000,24600000,q11.2,gneg
+chr14,24600000,33300000,q12,gpos100
+chr14,33300000,35300000,q13.1,gneg
+chr14,35300000,36600000,q13.2,gpos50
+chr14,36600000,37800000,q13.3,gneg
+chr14,37800000,43500000,q21.1,gpos100
+chr14,43500000,47200000,q21.2,gneg
+chr14,47200000,50900000,q21.3,gpos100
+chr14,50900000,54100000,q22.1,gneg
+chr14,54100000,55500000,q22.2,gpos25
+chr14,55500000,58100000,q22.3,gneg
+chr14,58100000,62100000,q23.1,gpos75
+chr14,62100000,64800000,q23.2,gneg
+chr14,64800000,67900000,q23.3,gpos50
+chr14,67900000,70200000,q24.1,gneg
+chr14,70200000,73800000,q24.2,gpos50
+chr14,73800000,79300000,q24.3,gneg
+chr14,79300000,83600000,q31.1,gpos100
+chr14,83600000,84900000,q31.2,gneg
+chr14,84900000,89800000,q31.3,gpos100
+chr14,89800000,91900000,q32.11,gneg
+chr14,91900000,94700000,q32.12,gpos25
+chr14,94700000,96300000,q32.13,gneg
+chr14,96300000,101400000,q32.2,gpos50
+chr14,101400000,103200000,q32.31,gneg
+chr14,103200000,104000000,q32.32,gpos50
+chr14,104000000,107349540,q32.33,gneg
+chr15,1,3900000,p13,gvar
+chr15,3900000,8700000,p12,stalk
+chr15,8700000,15800000,p11.2,gvar
+chr15,15800000,19000000,p11.1,acen
+chr15,19000000,20700000,q11.1,acen
+chr15,20700000,25700000,q11.2,gneg
+chr15,25700000,28100000,q12,gpos50
+chr15,28100000,30300000,q13.1,gneg
+chr15,30300000,31200000,q13.2,gpos50
+chr15,31200000,33600000,q13.3,gneg
+chr15,33600000,40100000,q14,gpos75
+chr15,40100000,42800000,q15.1,gneg
+chr15,42800000,43600000,q15.2,gpos25
+chr15,43600000,44800000,q15.3,gneg
+chr15,44800000,49500000,q21.1,gpos75
+chr15,49500000,52900000,q21.2,gneg
+chr15,52900000,59100000,q21.3,gpos75
+chr15,59100000,59300000,q22.1,gneg
+chr15,59300000,63700000,q22.2,gpos25
+chr15,63700000,67200000,q22.31,gneg
+chr15,67200000,67300000,q22.32,gpos25
+chr15,67300000,67500000,q22.33,gneg
+chr15,67500000,72700000,q23,gpos25
+chr15,72700000,75200000,q24.1,gneg
+chr15,75200000,76600000,q24.2,gpos25
+chr15,76600000,78300000,q24.3,gneg
+chr15,78300000,81700000,q25.1,gpos50
+chr15,81700000,85200000,q25.2,gneg
+chr15,85200000,89100000,q25.3,gpos50
+chr15,89100000,94300000,q26.1,gneg
+chr15,94300000,98500000,q26.2,gpos50
+chr15,98500000,102531392,q26.3,gneg
+chr16,1,7900000,p13.3,gneg
+chr16,7900000,10500000,p13.2,gpos50
+chr16,10500000,12600000,p13.13,gneg
+chr16,12600000,14800000,p13.12,gpos50
+chr16,14800000,16800000,p13.11,gneg
+chr16,16800000,21200000,p12.3,gpos50
+chr16,21200000,24200000,p12.2,gneg
+chr16,24200000,28100000,p12.1,gpos50
+chr16,28100000,34600000,p11.2,gneg
+chr16,34600000,36600000,p11.1,acen
+chr16,36600000,38600000,q11.1,acen
+chr16,38600000,47000000,q11.2,gvar
+chr16,47000000,52600000,q12.1,gneg
+chr16,52600000,56700000,q12.2,gpos50
+chr16,56700000,57400000,q13,gneg
+chr16,57400000,66700000,q21,gpos100
+chr16,66700000,70800000,q22.1,gneg
+chr16,70800000,72900000,q22.2,gpos50
+chr16,72900000,74100000,q22.3,gneg
+chr16,74100000,79200000,q23.1,gpos75
+chr16,79200000,81700000,q23.2,gneg
+chr16,81700000,84200000,q23.3,gpos50
+chr16,84200000,87100000,q24.1,gneg
+chr16,87100000,88700000,q24.2,gpos25
+chr16,88700000,90354753,q24.3,gneg
+chr17,1,3300000,p13.3,gneg
+chr17,3300000,6500000,p13.2,gpos50
+chr17,6500000,10700000,p13.1,gneg
+chr17,10700000,16000000,p12,gpos75
+chr17,16000000,22200000,p11.2,gneg
+chr17,22200000,24000000,p11.1,acen
+chr17,24000000,25800000,q11.1,acen
+chr17,25800000,31800000,q11.2,gneg
+chr17,31800000,38100000,q12,gpos50
+chr17,38100000,38400000,q21.1,gneg
+chr17,38400000,40900000,q21.2,gpos25
+chr17,40900000,44900000,q21.31,gneg
+chr17,44900000,47400000,q21.32,gpos25
+chr17,47400000,50200000,q21.33,gneg
+chr17,50200000,57600000,q22,gpos75
+chr17,57600000,58300000,q23.1,gneg
+chr17,58300000,61100000,q23.2,gpos75
+chr17,61100000,62600000,q23.3,gneg
+chr17,62600000,64200000,q24.1,gpos50
+chr17,64200000,67100000,q24.2,gneg
+chr17,67100000,70900000,q24.3,gpos75
+chr17,70900000,74800000,q25.1,gneg
+chr17,74800000,75300000,q25.2,gpos25
+chr17,75300000,81195210,q25.3,gneg
+chr18,1,2900000,p11.32,gneg
+chr18,2900000,7100000,p11.31,gpos50
+chr18,7100000,8500000,p11.23,gneg
+chr18,8500000,10900000,p11.22,gpos25
+chr18,10900000,15400000,p11.21,gneg
+chr18,15400000,17200000,p11.1,acen
+chr18,17200000,19000000,q11.1,acen
+chr18,19000000,25000000,q11.2,gneg
+chr18,25000000,32700000,q12.1,gpos100
+chr18,32700000,37200000,q12.2,gneg
+chr18,37200000,43500000,q12.3,gpos75
+chr18,43500000,48200000,q21.1,gneg
+chr18,48200000,53800000,q21.2,gpos75
+chr18,53800000,56200000,q21.31,gneg
+chr18,56200000,59000000,q21.32,gpos50
+chr18,59000000,61600000,q21.33,gneg
+chr18,61600000,66800000,q22.1,gpos100
+chr18,66800000,68700000,q22.2,gneg
+chr18,68700000,73100000,q22.3,gpos25
+chr18,73100000,78077248,q23,gneg
+chr19,1,6900000,p13.3,gneg
+chr19,6900000,13900000,p13.2,gpos25
+chr19,13900000,14000000,p13.13,gneg
+chr19,14000000,16300000,p13.12,gpos25
+chr19,16300000,20000000,p13.11,gneg
+chr19,20000000,24400000,p12,gvar
+chr19,24400000,26500000,p11,acen
+chr19,26500000,28600000,q11,acen
+chr19,28600000,32400000,q12,gvar
+chr19,32400000,35500000,q13.11,gneg
+chr19,35500000,38300000,q13.12,gpos25
+chr19,38300000,38700000,q13.13,gneg
+chr19,38700000,43400000,q13.2,gpos25
+chr19,43400000,45200000,q13.31,gneg
+chr19,45200000,48000000,q13.32,gpos25
+chr19,48000000,51400000,q13.33,gneg
+chr19,51400000,53600000,q13.41,gpos25
+chr19,53600000,56300000,q13.42,gneg
+chr19,56300000,59128983,q13.43,gpos25
+chr20,1,5100000,p13,gneg
+chr20,5100000,9200000,p12.3,gpos75
+chr20,9200000,12100000,p12.2,gneg
+chr20,12100000,17900000,p12.1,gpos75
+chr20,17900000,21300000,p11.23,gneg
+chr20,21300000,22300000,p11.22,gpos25
+chr20,22300000,25600000,p11.21,gneg
+chr20,25600000,27500000,p11.1,acen
+chr20,27500000,29400000,q11.1,acen
+chr20,29400000,32100000,q11.21,gneg
+chr20,32100000,34400000,q11.22,gpos25
+chr20,34400000,37600000,q11.23,gneg
+chr20,37600000,41700000,q12,gpos75
+chr20,41700000,42100000,q13.11,gneg
+chr20,42100000,46400000,q13.12,gpos25
+chr20,46400000,49800000,q13.13,gneg
+chr20,49800000,55000000,q13.2,gpos75
+chr20,55000000,56500000,q13.31,gneg
+chr20,56500000,58400000,q13.32,gpos50
+chr20,58400000,63025520,q13.33,gneg
+chr21,1,2800000,p13,gvar
+chr21,2800000,6800000,p12,stalk
+chr21,6800000,10900000,p11.2,gvar
+chr21,10900000,13200000,p11.1,acen
+chr21,13200000,14300000,q11.1,acen
+chr21,14300000,16400000,q11.2,gneg
+chr21,16400000,24000000,q21.1,gpos100
+chr21,24000000,26800000,q21.2,gneg
+chr21,26800000,31500000,q21.3,gpos75
+chr21,31500000,35800000,q22.11,gneg
+chr21,35800000,37800000,q22.12,gpos50
+chr21,37800000,39700000,q22.13,gneg
+chr21,39700000,42600000,q22.2,gpos50
+chr21,42600000,48129895,q22.3,gneg
+chr22,1,3800000,p13,gvar
+chr22,3800000,8300000,p12,stalk
+chr22,8300000,12200000,p11.2,gvar
+chr22,12200000,14700000,p11.1,acen
+chr22,14700000,17900000,q11.1,acen
+chr22,17900000,22200000,q11.21,gneg
+chr22,22200000,23500000,q11.22,gpos25
+chr22,23500000,25900000,q11.23,gneg
+chr22,25900000,29600000,q12.1,gpos50
+chr22,29600000,32200000,q12.2,gneg
+chr22,32200000,37600000,q12.3,gpos50
+chr22,37600000,41000000,q13.1,gneg
+chr22,41000000,44200000,q13.2,gpos50
+chr22,44200000,48400000,q13.31,gneg
+chr22,48400000,49400000,q13.32,gpos50
+chr22,49400000,51304566,q13.33,gneg
+chrX,1,4300000,p22.33,gneg
+chrX,4300000,6000000,p22.32,gpos50
+chrX,6000000,9500000,p22.31,gneg
+chrX,9500000,17100000,p22.2,gpos50
+chrX,17100000,19300000,p22.13,gneg
+chrX,19300000,21900000,p22.12,gpos50
+chrX,21900000,24900000,p22.11,gneg
+chrX,24900000,29300000,p21.3,gpos100
+chrX,29300000,31500000,p21.2,gneg
+chrX,31500000,37600000,p21.1,gpos100
+chrX,37600000,42400000,p11.4,gneg
+chrX,42400000,46400000,p11.3,gpos75
+chrX,46400000,49800000,p11.23,gneg
+chrX,49800000,54800000,p11.22,gpos25
+chrX,54800000,58100000,p11.21,gneg
+chrX,58100000,60600000,p11.1,acen
+chrX,60600000,63000000,q11.1,acen
+chrX,63000000,64600000,q11.2,gneg
+chrX,64600000,67800000,q12,gpos50
+chrX,67800000,71800000,q13.1,gneg
+chrX,71800000,73900000,q13.2,gpos50
+chrX,73900000,76000000,q13.3,gneg
+chrX,76000000,84600000,q21.1,gpos100
+chrX,84600000,86200000,q21.2,gneg
+chrX,86200000,91800000,q21.31,gpos100
+chrX,91800000,93500000,q21.32,gneg
+chrX,93500000,98300000,q21.33,gpos75
+chrX,98300000,102600000,q22.1,gneg
+chrX,102600000,103700000,q22.2,gpos50
+chrX,103700000,108700000,q22.3,gneg
+chrX,108700000,116500000,q23,gpos75
+chrX,116500000,120900000,q24,gneg
+chrX,120900000,128700000,q25,gpos100
+chrX,128700000,130400000,q26.1,gneg
+chrX,130400000,133600000,q26.2,gpos25
+chrX,133600000,138000000,q26.3,gneg
+chrX,138000000,140300000,q27.1,gpos75
+chrX,140300000,142100000,q27.2,gneg
+chrX,142100000,147100000,q27.3,gpos100
+chrX,147100000,155270560,q28,gneg
+chrY,1,2500000,p11.32,gneg
+chrY,2500000,3000000,p11.31,gpos50
+chrY,3000000,11600000,p11.2,gneg
+chrY,11600000,12500000,p11.1,acen
+chrY,12500000,13400000,q11.1,acen
+chrY,13400000,15100000,q11.21,gneg
+chrY,15100000,19800000,q11.221,gpos50
+chrY,19800000,22100000,q11.222,gneg
+chrY,22100000,26200000,q11.223,gpos50
+chrY,26200000,28800000,q11.23,gneg
+chrY,28800000,59373566,q12,gvar
diff --git a/example_data/gene_label.csv b/example_data/gene_label.csv
new file mode 100644
index 0000000..95f4b77
--- /dev/null
+++ b/example_data/gene_label.csv
@@ -0,0 +1,37 @@
+chr,start,end,label
+chr1,3698046,3736201,TP73
+chr1,156114670,156140089,LMNA
+chr2,202206180,202238599,SUMO1
+chr2,55865967,55924139,EFEMP1
+chr3,187668906,187670413,SST
+chr3,53161207,53192717,PRKCD
+chr4,41256881,41268429,UCHL1
+chr4,122451471,122456495,IL2
+chr5,42423775,42721878,GHR
+chr5,150113839,150155859,PDGFRB
+chr6,108560866,108684768,FOXO3
+chr6,33572546,33580293,BAK1
+chr7,95298357,95324572,PON1
+chr7,30964021,30979531,GHRHR
+chr8,42338455,42371813,POLB
+chr8,127736069,127741434,MYC
+chr9,116153792,116402321,PAPPA
+chr9,21967752,21975133,CDKN2A
+chr10,87863438,87971930,PTEN
+chr10,43077069,43130349,RET
+chr11,34438925,34472060,CAT
+chr11,108222832,108369099,ATM
+chr12,93569822,93576745,SOCS2
+chr12,15620141,15789576,EPS8
+chr13,48303747,48481890,RB1
+chr14,75278778,75282234,FOS
+chr15,73994673,74047814,PML
+chr16,56961923,56983844,CETP
+chr17,48048324,48061545,NFE2L1
+chr18,63123346,63319380,BCL2
+chr19,45351391,45370587,ERCC2
+chr20,34928433,34955798,GSS
+chr21,25880550,26170820,APP
+chr22,23894378,23895222,MIF
+chrX,130129363,130165887,AIFM1
+chrX,24693947,24996985,POLA1
diff --git a/example_data/heatmap.csv b/example_data/heatmap.csv
new file mode 100644
index 0000000..a0188b4
--- /dev/null
+++ b/example_data/heatmap.csv
@@ -0,0 +1,138 @@
+chr,start,end,value1,value2,value3,value4,value5,value6,value7,value8,value9,value10
+chr1,20621957,21209624,-0.672,-0.271,-0.001,0.486,-0.986,-0.37,0.48,0.38,0.158,0.108
+chr1,42967726,53028972,-0.147,0.387,1.332,0.182,0.16,-0.132,0.234,-0.089,-0.918,0.397
+chr1,58915991,65942365,-0.214,-0.059,-0.332,0.654,-0.402,-0.953,-0.046,0.449,-0.615,-0.07
+chr1,67474486,70468059,-0.314,-0.67,0.24,-0.221,0.582,-0.536,-0.438,0.153,-0.14,0.242
+chr1,70834716,93392812,0.372,-0.812,0.129,0.087,-1.307,0.846,-1.062,-0.653,0.345,0.315
+chr1,98646692,105744994,-0.437,0.245,-0.422,0.273,-0.374,-0.522,-0.147,0.924,0.057,0.483
+chr1,110109858,113819044,-0.264,-0.466,0.309,0.057,-0.118,0.829,0.709,-0.537,-0.625,-0.126
+chr1,115732306,128645989,0.267,0.444,-0.629,-0.38,0.296,-0.496,0.425,-0.431,-0.576,0.006
+chr1,159485418,165705329,0.117,-0.206,0.445,0.374,0.621,0.038,1.037,0.562,-0.636,0.424
+chr1,170639925,207158920,-0.662,0.817,0.12,-1.231,-0.75,0.302,0.287,0.058,0.434,0.547
+chr1,211177522,221180815,0.354,-0.324,0.086,0.514,0.395,0.494,-0.089,0.003,-0.655,-0.56
+chr2,1946862,9867764,0.809,0.2,0.274,-0.162,1.404,-0.06,-0.258,0.278,-0.126,-0.763
+chr2,16793624,32362421,0.111,0.445,0.01,0.389,-0.288,-0.227,0.632,-0.461,0.091,0.546
+chr2,35793985,56362663,1.292,0.124,0.967,0.527,-0.183,-0.151,0.427,-0.444,-1.506,-0.238
+chr2,57100510,62934372,-1.27,-0.553,-0.534,0.892,0.723,-0.418,0.178,-0.54,0.478,-0.537
+chr2,75607671,76708807,0.171,-0.267,-0.259,-0.72,-0.201,0.548,0.057,-0.042,-0.188,-0.958
+chr2,98746147,109221426,0.815,0.21,0.007,-0.07,-0.158,0.489,-0.017,0.168,-0.121,1.28
+chr2,153518589,154622539,-1.102,-0.391,-0.754,-0.65,0.52,-0.196,0.331,0.439,-0.307,-0.36
+chr2,189090727,191652199,1.128,-0.405,-0.049,0.506,-0.003,0.905,-0.612,-0.363,0.318,-0.186
+chr2,203807321,224080536,0.426,-0.09,-1.061,0.356,-0.3,1.07,-0.103,-0.66,0.953,-0.383
+chr2,229236849,234118300,0.061,0.679,-0.244,0.374,-0.114,-0.345,-0.568,-0.254,0.522,0.264
+chr3,17138030,40796035,0.046,0.028,-0.691,-0.341,1.011,-0.242,-0.027,-0.273,0.276,-1.028
+chr3,57219142,60650338,-0.514,0.429,0.29,-0.356,-0.025,0.537,-0.368,0.486,0.392,-0.085
+chr3,81447694,85242511,-0.027,-0.159,0.718,0.266,-0.005,-0.542,0.105,0.55,-0.285,0.376
+chr3,90470354,96592699,0.206,0.598,0.137,0.366,0.688,-0.208,0.513,-0.25,-0.612,-0.258
+chr3,104153637,148077781,-1.129,0.361,0.795,0.475,-0.425,0.257,0.065,-0.378,-0.237,-0.055
+chr3,160153088,170703309,0.444,0.667,0.412,-0.487,-0.318,-0.795,0.674,0.195,0.8,-0.016
+chr3,171685857,177768610,0.13,-0.119,-0.494,-0.281,0.109,-0.623,-0.323,0.227,-0.604,-0.601
+chr3,181669050,182098858,0.232,0.402,0.405,-0.671,-0.118,-0.275,0.222,0.277,-0.335,0.568
+chr3,189857163,190338779,-0.146,-0.408,-0.287,0.357,0.173,0.317,-0.411,-0.748,0.95,-0.256
+chr4,23364532,24994750,-0.522,-0.527,-0.395,-0.244,0.009,-0.077,0.135,-1.109,-0.971,-0.564
+chr4,26037087,30535112,-0.084,0.323,0.788,-0.125,0.458,-1.263,-0.485,0.292,-0.036,-0.536
+chr4,36805545,56289462,-1.236,-0.751,-0.291,0.309,-0.053,-0.175,0.229,-0.229,0.071,0.678
+chr4,69523448,82112433,0.436,0.388,-0.989,-0.724,0.311,-0.201,-0.168,-0.007,0.739,0.495
+chr4,113297313,127592873,-0.766,0.309,-0.478,0.6,0.43,-0.273,-0.137,-0.754,-0.604,-1.128
+chr4,130522192,142686922,0.56,0.185,-0.72,0.234,0.515,0.624,0.288,-0.32,-0.427,-0.329
+chr4,147625838,161001840,0.905,-0.807,-0.085,-0.423,0.086,-0.506,0.318,-0.512,0.002,0.599
+chr4,164270207,176657538,-0.26,0.339,0.514,-0.629,0.951,-0.174,-0.695,-0.199,0.187,-0.325
+chr5,8910650,10080670,0.175,-0.855,0.934,-0.914,0.879,-0.181,-0.512,-0.074,0.302,0.04
+chr5,13535538,32715550,0.088,0.005,1.005,-0.076,-0.007,0.371,0.494,-0.236,0.219,-0.422
+chr5,38688182,60199113,0.731,-0.334,-0.266,-0.519,0.279,0.181,-0.212,0.06,0.647,0.337
+chr5,69335125,69526214,0.564,-0.399,0.821,0.719,0.376,0.791,-0.016,-0.088,-0.332,0.31
+chr5,72377154,96107044,0.163,0.299,0.188,-0.609,0.799,1.025,0.112,0.137,0.095,-0.482
+chr5,102386543,121803230,1.173,0.758,0.029,0.032,-0.748,0.165,-0.357,0.064,0.256,-0.329
+chr5,129478175,130405783,0.217,0.144,0.461,-0.243,-0.842,0.504,-0.026,-0.525,1.165,0.167
+chr5,165098381,169336984,0.565,-0.76,-0.96,-0.006,-0.963,0.46,0.231,-0.383,0.115,-0.827
+chr6,1610866,13143822,0.405,-0.438,-0.972,-0.374,0.125,-0.567,-0.077,0.178,0.427,-0.324
+chr6,52452279,57599571,-0.683,0.913,0.379,-0.072,0.193,0.369,0.369,-0.704,-0.384,-0.321
+chr6,62565594,67307434,-0.2,-0.011,-0.773,0.081,0.033,-0.321,0.111,-0.786,0.228,-0.011
+chr6,91250843,105393376,-0.254,0.03,0.015,0.458,-0.212,-0.496,0.243,0.646,0.522,0.296
+chr6,110925964,123043928,0.619,0.162,0.038,-0.595,0.123,0.109,0.506,-0.006,0.251,0.316
+chr6,125016937,132950089,-1.125,0.482,-0.263,-0.079,-0.638,-0.717,0.01,-1.037,-0.948,-0.306
+chr6,134593888,146421919,0.071,-0.574,-0.167,0.542,1.301,-0.722,-0.544,0.062,-0.032,-0.048
+chr7,9333245,11185543,0.442,0.38,-1.139,-0.352,-0.338,-0.021,-0.118,-0.11,0.379,-0.38
+chr7,12717294,27297461,-0.404,0.264,0.131,0.24,-0.565,0.092,0.21,-0.739,0.855,0.785
+chr7,30611915,36307286,0.173,0.029,-0.144,0.589,-0.124,0.393,0.079,0.495,0.623,0.294
+chr7,50537753,66588183,-0.261,0.151,-1.149,0.532,-0.023,0.161,0.421,0.411,0.038,0.545
+chr7,90815098,104512145,0.023,-0.381,-0.346,0.531,-0.196,-0.262,0.419,-0.225,-0.132,-1.075
+chr7,125790395,143474981,-0.363,-0.17,-0.98,-0.123,0.344,-0.005,-0.42,0.279,0.27,0.252
+chr7,148474024,152881219,-0.446,0.362,0.498,0.4,-0.207,0.331,0.312,-0.094,-0.212,0.818
+chr8,907892,3993257,0.295,0.235,-0.886,-0.312,-0.077,-0.193,0.083,0.208,-0.495,-0.216
+chr8,10180052,14671019,0.134,-0.627,0.1,-1.266,0.605,0.48,-0.013,0.886,0.476,-0.514
+chr8,51536782,55647068,-0.482,0.268,0.513,-0.419,0.628,-0.084,0.072,-0.033,-0.464,-0.559
+chr8,61001873,76580973,-0.299,-0.321,0.039,0.52,0.608,-0.026,0.848,0.089,-0.328,-0.911
+chr8,112237545,120363101,-0.847,-0.158,0.067,0.289,-0.506,-0.108,0.236,0.011,0.438,0.49
+chr8,120755231,136713678,-0.58,0.778,-0.175,-0.048,0.638,-0.117,-0.555,-0.509,0.741,0.304
+chr9,4599919,5057294,0.281,0.136,-0.216,-0.828,0.247,-0.58,0.054,0.264,0.522,-0.48
+chr9,33744204,47715201,0.232,-0.42,0.179,-0.107,0.229,-0.076,0.536,0.454,-0.456,-0.341
+chr9,58893524,73439620,0.557,0.264,0.537,0.349,-0.139,-0.465,-0.185,-0.996,0.571,-0.085
+chr9,74861310,82419273,-0.421,-0.018,0.182,0.318,-0.228,0.94,0.19,-0.137,0.491,0.212
+chr9,93081241,109065709,-0.48,0.956,-0.981,0.155,-0.28,-0.758,0.333,-0.046,0.019,0.138
+chr9,131163821,140890944,0.005,0.794,-0.357,-0.175,0.354,0.205,0.592,0.793,0.23,-0.911
+chr10,8213080,18764940,-0.615,0.272,0.008,-0.022,-0.109,0.813,0.23,0.031,0.149,0.057
+chr10,30935596,33856583,-0.005,-0.026,-1.097,-0.705,-0.553,0.135,0.179,-0.37,-0.43,0.956
+chr10,35157385,45919749,0.622,0.591,0.129,-0.469,0.067,0.117,-0.376,-0.447,-0.307,-0.728
+chr10,64096883,84132861,1.239,-0.252,-0.095,-1.142,-0.188,0.8,0.253,0.331,0.686,0.589
+chr10,86753112,96538465,-0.29,-0.46,0.149,-0.193,0.322,-0.665,0.284,-0.077,0.889,-0.972
+chr10,117333181,128429769,0.129,0.104,-0.677,0.185,-0.184,0.38,0.019,0.307,0.877,-0.598
+chr11,6210755,8255683,-0.278,0.11,-0.257,-0.019,1.04,-0.395,-0.064,0.527,-0.427,-0.165
+chr11,15496327,16100447,0.131,0.134,-0.253,0.659,0.137,-0.336,0.083,-0.194,0.462,0.635
+chr11,26502139,41332053,0.151,0.042,0.377,-0.269,0.439,0.419,-0.921,0.592,-0.473,0.161
+chr11,42478789,48322068,0.047,-0.256,0.285,0.437,-0.145,0.327,0.11,-0.105,-0.61,-0.361
+chr11,49195071,59115673,0.881,-0.323,0.494,0.712,0.297,-0.352,-0.536,-0.166,-0.559,0.325
+chr11,84998104,110491301,-0.135,0.021,-0.397,0.121,-0.007,-0.835,0.008,-0.355,-0.295,-0.534
+chr12,9932221,10850346,-0.204,0.451,0.441,-0.494,-0.074,-0.061,0.212,0.312,-0.614,-0.368
+chr12,15169509,15777040,0.103,-0.244,-0.535,0.747,0.544,-0.222,-0.513,-0.317,-0.281,0.38
+chr12,17185683,33151631,0.67,-0.019,0.149,-0.194,0.943,0.449,0.236,-0.244,-0.605,-0.555
+chr12,41227047,53351107,0.496,-0.126,-0.175,-0.792,0.517,-0.681,0.996,-0.301,0.556,0.345
+chr12,54601711,78619196,-0.646,1.075,-1.416,-0.231,-0.461,-0.051,-0.096,-0.694,-0.592,0.071
+chr12,89632193,93507969,-0.411,0.392,-0.349,-0.206,-0.922,-0.615,0.074,0.307,0.453,1.385
+chr13,46139794,51387536,0.344,-0.092,0.431,-0.611,-0.128,-0.305,0.353,0.651,-0.423,-0.456
+chr13,63085808,64091349,0.028,-0.191,0.101,-0.21,-0.216,0.126,0.227,-0.319,-0.317,0.876
+chr13,66817650,70405705,1.534,-0.941,-0.066,0.103,-0.389,0.361,0.265,-0.085,-0.209,-0.49
+chr13,74201185,79091948,0.488,-0.256,0.037,-0.895,-0.65,0.387,0.028,0.009,-0.587,0.015
+chr13,86748727,112782735,0.334,-0.156,-0.352,0.611,0.721,-0.33,0.558,0.366,0.01,0.77
+chr14,1116066,20090491,0.561,-0.194,0.091,-0.506,-0.776,0.117,0.196,-0.387,-0.309,-1.141
+chr14,27650669,30401292,0.352,0.153,-0.255,0.733,0.393,-0.939,0.332,-0.454,0.336,0.26
+chr14,62694287,77523317,0.393,-0.065,-0.069,0.295,0.023,-0.19,-0.637,0.527,-0.58,-0.397
+chr14,86900444,95204023,0.018,-0.175,-1.232,0.648,0.113,-0.258,0.328,-0.236,-0.723,0.133
+chr14,97758413,103106406,-0.919,0.718,0.152,-0.224,-0.011,-0.368,0.359,-0.019,0.242,-0.396
+chr15,69148,17057824,-0.448,0.308,-0.714,0.203,0.28,0.393,-0.453,-0.096,0.19,-0.523
+chr15,20377064,34363676,-0.619,0.561,-0.173,-0.258,-0.657,0.713,0.306,-0.688,0.536,-0.65
+chr15,53408070,55798185,-0.7,0.018,0.251,-0.122,-0.324,0.007,0.242,0.316,0.805,-0.167
+chr15,63105607,69194233,0.019,-1.057,-0.933,-0.029,-0.116,-0.071,0.509,0.747,0.072,-0.105
+chr15,76170063,84843708,-0.764,-1.049,-0.483,-0.46,-0.306,0.271,-0.385,0.591,0.146,0.352
+chr16,17196451,18340259,-0.58,0.435,-1.788,-0.246,0.124,0.466,-0.049,0.315,-0.443,-0.072
+chr16,25472831,32060331,0.614,-0.255,0.506,1.199,0.64,0.542,0.005,0.742,-0.433,-0.897
+chr16,35184808,43052610,-0.478,-0.064,-0.18,0.4,0.66,0.474,-0.17,-0.716,-0.424,0.506
+chr16,71364342,77790618,-0.09,-0.383,0.458,-0.436,-0.516,-0.095,-0.214,-1.262,-0.353,-0.455
+chr17,28980810,37044050,0.299,-0.912,-0.022,0.054,0.044,-0.011,-1.593,-0.304,0.139,-0.34
+chr17,49339178,51043179,0.1,-0.286,-0.243,-0.281,-0.655,1.188,-0.114,-0.041,-0.904,0.043
+chr17,56321294,70581501,0.24,-0.108,0.441,0.505,0.275,0.574,0.096,-0.254,0.37,-0.589
+chr17,75516434,77666805,-1.186,0.56,-0.056,-0.213,-0.838,-0.015,-0.66,-1.24,0.098,-0.544
+chr18,24625838,26706768,0.796,-0.374,-0.281,1.461,0.472,0.086,-0.646,0.235,-0.396,0.023
+chr18,31857989,33707038,0.65,-0.384,-0.345,-0.447,-0.327,-0.117,-0.159,0.808,0.322,0.428
+chr18,35633572,48792928,0.282,0.288,-0.032,0.685,-0.741,0.693,0.607,-1.128,0.289,0.144
+chr18,63265926,64579435,-0.382,1.145,0.393,0.148,0.642,-0.8,-0.606,-0.603,-0.073,0.807
+chr19,7487556,21013983,-0.394,-0.301,1.32,0.811,-0.589,0.12,0.572,1.14,-0.703,0.256
+chr19,34487078,46584875,0.212,0.12,-0.493,0.173,0.33,0.017,-0.092,-0.225,0.049,0.459
+chr19,50588051,51056827,0.44,0.252,0.018,-0.433,0.421,1.079,-0.216,-0.141,-0.381,0.106
+chr20,4487716,13781691,-0.968,-0.136,1.122,0.889,0.009,-0.354,-0.124,-0.262,-0.025,-0.018
+chr20,17440060,31439289,-0.455,1.076,-0.641,-0.2,0.04,-0.185,0.267,-0.047,0.471,0.772
+chr20,52067883,56907899,1.005,0.112,0.117,-0.752,-0.613,-1.011,-0.694,0.013,0.388,-0.583
+chr21,9083079,22946038,-0.483,0.158,0.197,0.67,0.54,0.228,1.009,0.672,-0.454,0.3
+chr21,24124713,44074650,-0.184,0.469,-0.185,-0.711,0.567,0.927,-0.034,-0.884,0.325,-0.565
+chr22,9049987,10148515,-0.45,-0.402,-0.557,0.258,0.438,0.904,-0.345,0.194,0.594,-0.286
+chr22,18874886,36204682,0.461,-0.232,-0.327,-1.107,0.306,-0.056,0.292,0.414,-0.381,-0.07
+chrX,9429106,22176535,-0.049,-0.319,0.614,-0.073,-0.757,-0.129,-0.011,-0.539,0.253,-0.768
+chrX,33237871,35456532,-0.723,-0.747,0.219,0.435,-0.237,-0.022,0.097,0.567,-0.426,0.067
+chrX,48006857,50891425,0.236,-0.426,0.159,-0.152,0.295,-0.053,-0.583,1.425,-0.322,-0.308
+chrX,51362515,57461501,0.204,-0.339,-1.19,-0.274,-0.861,-1.052,0.027,0.566,-0.515,0.598
+chrX,94838523,117825639,0.942,-0.693,-0.198,0.507,0.428,-0.108,-0.076,-0.004,-0.015,-0.671
+chrX,128760350,134247282,0.553,0.181,-0.077,-0.596,0.654,-0.569,0.635,0.208,-0.018,0.375
+chrX,144563215,147755086,0.305,0.397,-0.07,-0.8,0.288,0.124,-0.25,-0.31,-0.094,0.417
+chrY,8156072,8295584,-0.537,-0.176,-0.408,-1.01,-0.426,-0.681,0.067,0.359,0.127,-0.362
+chrY,11681859,19646964,0.252,-0.907,0.463,-0.953,0.775,-0.013,-0.047,0.037,0.467,-0.248
+chrY,29619210,45371153,0.998,1.093,-0.479,-0.258,0.003,-0.627,-0.413,-0.783,-0.317,0.75
diff --git a/track2.csv b/example_data/line.csv
old mode 100755
new mode 100644
similarity index 96%
rename from track2.csv
rename to example_data/line.csv
index eb5776c..dacd2ae
--- a/track2.csv
+++ b/example_data/line.csv
@@ -1,326 +1,326 @@
-chr,start,end,value1
-chr1,788538,5571920,0.309
-chr1,6704086,10962288,-0.075
-chr1,13517030,19064946,1.068
-chr1,21370275,25642500,0.659
-chr1,26160174,27950076,-0.688
-chr1,29974329,36789688,0.44
-chr1,41237941,41711824,-0.693
-chr1,59721183,63206915,0.269
-chr1,68988204,75362897,-0.015
-chr1,80881254,83899791,-0.13
-chr1,96353801,98813687,-0.386
-chr1,98875283,107598107,0.049
-chr1,107757379,112803155,0.647
-chr1,113146330,120833487,-0.297
-chr1,122537069,124402763,-0.234
-chr1,128332903,129337459,0.267
-chr1,132671342,133075698,-0.711
-chr1,140424455,141106736,-0.398
-chr1,142496982,143699683,-0.333
-chr1,144426736,144952438,-0.629
-chr1,151771639,158976933,-0.244
-chr1,171592481,184518606,-0.273
-chr1,184575203,191113337,0.5
-chr1,222006170,226612172,-0.157
-chr1,226694888,241918602,0.246
-chr1,243820421,245501059,0.099
-chr2,5331353,17190915,0.129
-chr2,27214061,37578483,-0.796
-chr2,42355838,46282474,0.1
-chr2,48644977,52922668,-0.042
-chr2,60573048,61426745,-0.284
-chr2,61940555,72145241,0.575
-chr2,78495677,78551412,-0.318
-chr2,79856173,88879111,-0.321
-chr2,90837897,91060003,-0.173
-chr2,96183282,98726847,-0.845
-chr2,103898255,104166273,0.039
-chr2,116116758,117371554,-0.117
-chr2,127604802,128719432,0.226
-chr2,132371263,137034249,-0.1
-chr2,137279969,147247259,-0.22
-chr2,148972343,154332448,-1.091
-chr2,163204427,167591200,0.656
-chr2,175003713,181201399,0.514
-chr2,183166674,186404507,-0.576
-chr2,192409729,194413258,-0.753
-chr2,196304341,197881716,-0.506
-chr2,201273967,207228902,-0.238
-chr2,207965824,213475416,-0.521
-chr2,213794879,231725345,0.427
-chr2,235990585,237045488,0.049
-chr3,1424915,5127305,-0.413
-chr3,10792280,11980906,-0.096
-chr3,21147106,25872228,0.666
-chr3,30936516,33724344,-0.462
-chr3,36484373,43853696,0.112
-chr3,44592321,52369799,-1.224
-chr3,55661530,61811078,0.048
-chr3,70409253,78555080,0.043
-chr3,79582781,81260253,0.117
-chr3,83592687,87527722,-0.391
-chr3,90306185,101302606,0.105
-chr3,109230010,114439768,-0.586
-chr3,125092430,127859543,-0.206
-chr3,131448296,135397873,-0.959
-chr3,136781672,139977699,0.727
-chr3,145451103,148643294,0.381
-chr3,149287897,153746573,-0.868
-chr3,159167617,163042422,-0.237
-chr3,166435092,169519267,-1.06
-chr3,177489296,181055266,0.397
-chr3,182911687,187739026,-0.957
-chr4,61966,10528434,-1.224
-chr4,14526642,19266615,0.231
-chr4,21916195,23248563,0.542
-chr4,35383497,36498725,0.063
-chr4,41507176,42357104,-0.409
-chr4,43820148,48737085,0.441
-chr4,50494184,60188769,-0.319
-chr4,62096875,69809626,-0.117
-chr4,73867961,76165248,-0.346
-chr4,83820024,87526999,0.514
-chr4,90299032,96273768,0.502
-chr4,105077152,114783657,0.784
-chr4,116899606,117595345,0.255
-chr4,118461889,120127609,-0.203
-chr4,146821241,147715591,0.043
-chr4,148907464,154997155,0.338
-chr4,157318606,164755118,-0.029
-chr4,167296256,170583089,0.79
-chr4,172473802,178079560,-0.939
-chr4,180462563,189470639,0.194
-chr5,8017381,9223928,0.529
-chr5,10910761,17545145,0.039
-chr5,19799057,30167908,-0.175
-chr5,39972940,44099715,-0.303
-chr5,45643870,47528087,-0.14
-chr5,47587950,56928419,0.246
-chr5,61896416,69193796,-0.532
-chr5,69589480,75248618,-1.083
-chr5,77514538,90323308,-0.462
-chr5,92762206,97587734,0.247
-chr5,102377308,109350603,-0.146
-chr5,117124023,119165645,-0.078
-chr5,120992702,121088024,0.35
-chr5,124700981,130578083,0.511
-chr5,137545777,142830254,-0.378
-chr5,146689805,158685158,0.189
-chr5,161498178,167628471,0.331
-chr5,173776665,174413441,-0.002
-chr5,175599046,178780840,0.058
-chr6,2075289,14981007,0.544
-chr6,15114029,27761732,0.587
-chr6,29701971,37114200,0.276
-chr6,40305039,41856071,-0.154
-chr6,42386211,50266086,0.741
-chr6,51315146,53829459,-0.1
-chr6,54331318,54364187,-0.395
-chr6,55732589,61149936,-0.283
-chr6,65648169,69211442,0.112
-chr6,73282890,74875876,0.975
-chr6,82697521,93042896,-0.007
-chr6,93703608,94264805,0.192
-chr6,106214081,123635005,0.063
-chr6,125329241,125865573,-0.155
-chr6,137442944,138512269,-0.084
-chr6,139501459,140256648,-0.588
-chr6,146160107,151040217,0.266
-chr6,166939485,169974864,-0.533
-chr7,5193609,18370134,-0.61
-chr7,20599320,26126425,0.497
-chr7,28921739,29420644,-0.481
-chr7,29685275,29979448,0.715
-chr7,36542367,37539100,-0.017
-chr7,38605672,39607849,0.442
-chr7,40734578,58274911,0.203
-chr7,59720083,61778224,0.445
-chr7,61950182,71463843,-0.663
-chr7,74727503,76415092,1.06
-chr7,79392031,83360099,-0.456
-chr7,86059899,91872280,0.08
-chr7,93604214,93966758,0.326
-chr7,94312892,98088097,0.034
-chr7,99018847,99860425,-0.066
-chr7,110122459,119201406,-0.383
-chr7,128002639,133747039,0.436
-chr8,11829580,14325791,-0.278
-chr8,23288414,33937460,-0.068
-chr8,40736808,45095224,0.286
-chr8,50494903,50690787,-0.152
-chr8,53017520,54118047,0.416
-chr8,65460364,72541399,-0.113
-chr8,74177303,82006378,0.4
-chr8,90121862,91037127,-1.034
-chr8,92011088,97305293,-0.114
-chr8,105092585,106667115,0.294
-chr8,110739779,118291570,-0.841
-chr8,118849279,124705747,0.166
-chr8,128074660,128507831,-0.761
-chr8,129679769,133594276,0.122
-chr8,140132487,141393726,-0.8
-chr9,4020523,8842157,-0.317
-chr9,18455183,18494699,-0.568
-chr9,19204992,28532851,-1.131
-chr9,29356750,35793856,0.284
-chr9,41351584,42825610,-0.567
-chr9,48317884,49421023,0.159
-chr9,53692136,59782773,0.07
-chr9,61565416,61589108,-0.181
-chr9,65601415,70963019,0.278
-chr9,78566260,85851866,0.635
-chr9,85966034,90502669,-0.299
-chr9,91885102,94446975,0.23
-chr9,98013778,106724162,0.506
-chr9,123786840,123948093,1.074
-chr9,126272644,136145857,0.264
-chr10,3651574,13057032,-0.095
-chr10,19189026,28796739,0.309
-chr10,32619660,33759646,-0.491
-chr10,35571195,37830058,-0.42
-chr10,42796348,45877415,0.041
-chr10,60104682,61204330,-0.374
-chr10,62977625,64934627,-0.028
-chr10,68530799,71763953,-0.775
-chr10,77589826,101930597,-1.252
-chr10,102092782,102146499,0.613
-chr10,102545750,103447314,-0.437
-chr10,116683626,120758581,-0.076
-chr10,124428092,125923882,0.124
-chr10,127241516,132620277,0.349
-chr11,53110,1923506,-0.025
-chr11,10284610,15077288,0.371
-chr11,16983100,22816068,-0.176
-chr11,23525560,29306120,-0.14
-chr11,30042852,33602489,0.398
-chr11,33928344,42236504,0.061
-chr11,44288752,45228452,0.245
-chr11,53240132,63789656,-0.647
-chr11,68843476,84362331,-0.182
-chr11,85682712,95632275,-0.547
-chr11,99125898,102208162,0.746
-chr11,106316806,111033078,0.278
-chr11,113257184,123299059,0.013
-chr11,125794664,126369007,-0.731
-chr12,8114952,8302068,0.851
-chr12,10946348,13420723,0.105
-chr12,13458936,22392601,-0.405
-chr12,22883688,31487992,0.09
-chr12,32060106,34626475,0.422
-chr12,47228209,49464405,-0.156
-chr12,49666518,54401965,0.236
-chr12,58826109,63214650,-0.092
-chr12,68954173,76990737,-0.386
-chr12,77468094,79635163,-0.3
-chr12,79668838,90256470,-0.113
-chr12,90884465,92231829,-0.981
-chr12,97340334,112292895,-0.292
-chr12,113017659,113152835,0.497
-chr13,5714727,6092179,-0.104
-chr13,9493892,16409628,-0.993
-chr13,18459883,18496242,0.892
-chr13,24034111,26482708,-0.165
-chr13,29766045,30405325,-0.92
-chr13,36171852,43122862,-0.194
-chr13,45270059,54569982,-0.072
-chr13,55540395,60236013,-0.41
-chr13,64011254,94804532,-0.546
-chr13,96688719,105641044,-0.24
-chr13,108241246,109589286,-0.098
-chr13,111610712,111866087,0.139
-chr14,721633,769101,-0.71
-chr14,1267900,2575685,-0.593
-chr14,5494095,10007556,0.572
-chr14,11570588,18022470,-0.335
-chr14,19168952,21745532,-0.711
-chr14,26332559,33588995,0.041
-chr14,39592778,46533328,0.705
-chr14,56000317,61824759,0.732
-chr14,69682649,71509422,-0.396
-chr14,79815922,81626229,0.49
-chr14,96960632,105865300,-0.845
-chr15,2292611,4911536,0.178
-chr15,8264872,18778314,-0.81
-chr15,24262044,30517029,-0.052
-chr15,32238561,36563817,-0.558
-chr15,38281693,42132284,-0.193
-chr15,52793796,56874876,0.165
-chr15,63707798,68831628,-0.492
-chr15,69275842,72092814,-0.296
-chr15,78813418,81373846,-0.154
-chr15,81807325,82225756,-0.373
-chr15,97180260,98998392,0.07
-chr16,10546673,17148275,0.717
-chr16,22304842,22321669,0.552
-chr16,27231813,41881365,-0.371
-chr16,42202684,43433177,0.277
-chr16,49463348,51346488,-0.152
-chr16,54133186,56997026,0.483
-chr16,61390794,63625234,-0.091
-chr16,69080296,71751753,0.119
-chr16,73944922,82045180,0.618
-chr16,85783515,90194025,0.608
-chr17,993782,11308212,-0.506
-chr17,13817223,13833290,0.256
-chr17,14907011,16101918,0.035
-chr17,20342759,20872250,-0.715
-chr17,29670311,37468841,-0.27
-chr17,39236624,44037848,-0.238
-chr17,44322600,48843236,0.649
-chr17,66327170,68855844,-0.51
-chr17,72660987,81015799,-0.521
-chr18,5392978,7634555,0.349
-chr18,11525266,24701536,0.31
-chr18,32309374,46050194,0.005
-chr18,47490957,55063135,0.136
-chr18,58207526,58899915,1.086
-chr18,60661660,61889643,-0.109
-chr18,64209458,65626096,-0.437
-chr18,67481705,69659398,0.751
-chr19,6328064,10226657,-0.174
-chr19,11027361,16856577,-0.873
-chr19,36264117,39370925,-0.575
-chr19,41083737,50330874,1.06
-chr19,50827272,50974666,-0.839
-chr19,55091921,55771161,0.871
-chr20,254988,320304,-0.14
-chr20,11226366,11890968,-0.738
-chr20,13113958,16916425,0.49
-chr20,21490224,31731689,-0.235
-chr20,31906660,37230877,-0.364
-chr20,37539886,50003063,-0.676
-chr20,58473226,61540142,-0.539
-chr21,2274838,5803346,0.061
-chr21,6349062,15834720,-0.222
-chr21,23021663,28142787,0.216
-chr21,28721809,35971407,0.41
-chr21,40367691,46870352,0.29
-chr22,2964730,5640491,-0.587
-chr22,15574989,17733607,0.297
-chr22,17804459,18144540,1.075
-chr22,18471598,25532908,-0.098
-chr22,27742243,32606355,-0.612
-chr22,49357184,51112188,-0.076
-chrX,3573560,19084153,0.246
-chrX,20116658,22341940,0.669
-chrX,34675142,39915114,-0.685
-chrX,51869463,66546046,0.354
-chrX,67394309,69313351,-0.335
-chrX,70638947,84271674,0.123
-chrX,84502364,85409184,-0.195
-chrX,89119046,94117166,0.478
-chrX,95030566,99254661,0.267
-chrX,105087486,114227228,-0.266
-chrX,117680724,121005071,-1.005
-chrX,121498902,124059839,-0.038
-chrX,124866942,142580465,-0.221
-chrX,142970936,143097981,-0.58
-chrX,143332129,148413640,0.046
-chrX,149980942,154954250,-0.103
-chrY,1516150,2677871,-0.554
-chrY,13636593,38393260,0.902
-chrY,39384295,45972809,-0.497
-chrY,51017527,53789645,-0.54
-chrY,53795591,55386857,-0.316
-chrY,56120137,58384755,-0.563
+chr,start,end,value1
+chr1,788538,5571920,0.309
+chr1,6704086,10962288,-0.075
+chr1,13517030,19064946,1.068
+chr1,21370275,25642500,0.659
+chr1,26160174,27950076,-0.688
+chr1,29974329,36789688,0.44
+chr1,41237941,41711824,-0.693
+chr1,59721183,63206915,0.269
+chr1,68988204,75362897,-0.015
+chr1,80881254,83899791,-0.13
+chr1,96353801,98813687,-0.386
+chr1,98875283,107598107,0.049
+chr1,107757379,112803155,0.647
+chr1,113146330,120833487,-0.297
+chr1,122537069,124402763,-0.234
+chr1,128332903,129337459,0.267
+chr1,132671342,133075698,-0.711
+chr1,140424455,141106736,-0.398
+chr1,142496982,143699683,-0.333
+chr1,144426736,144952438,-0.629
+chr1,151771639,158976933,-0.244
+chr1,171592481,184518606,-0.273
+chr1,184575203,191113337,0.5
+chr1,222006170,226612172,-0.157
+chr1,226694888,241918602,0.246
+chr1,243820421,245501059,0.099
+chr2,5331353,17190915,0.129
+chr2,27214061,37578483,-0.796
+chr2,42355838,46282474,0.1
+chr2,48644977,52922668,-0.042
+chr2,60573048,61426745,-0.284
+chr2,61940555,72145241,0.575
+chr2,78495677,78551412,-0.318
+chr2,79856173,88879111,-0.321
+chr2,90837897,91060003,-0.173
+chr2,96183282,98726847,-0.845
+chr2,103898255,104166273,0.039
+chr2,116116758,117371554,-0.117
+chr2,127604802,128719432,0.226
+chr2,132371263,137034249,-0.1
+chr2,137279969,147247259,-0.22
+chr2,148972343,154332448,-1.091
+chr2,163204427,167591200,0.656
+chr2,175003713,181201399,0.514
+chr2,183166674,186404507,-0.576
+chr2,192409729,194413258,-0.753
+chr2,196304341,197881716,-0.506
+chr2,201273967,207228902,-0.238
+chr2,207965824,213475416,-0.521
+chr2,213794879,231725345,0.427
+chr2,235990585,237045488,0.049
+chr3,1424915,5127305,-0.413
+chr3,10792280,11980906,-0.096
+chr3,21147106,25872228,0.666
+chr3,30936516,33724344,-0.462
+chr3,36484373,43853696,0.112
+chr3,44592321,52369799,-1.224
+chr3,55661530,61811078,0.048
+chr3,70409253,78555080,0.043
+chr3,79582781,81260253,0.117
+chr3,83592687,87527722,-0.391
+chr3,90306185,101302606,0.105
+chr3,109230010,114439768,-0.586
+chr3,125092430,127859543,-0.206
+chr3,131448296,135397873,-0.959
+chr3,136781672,139977699,0.727
+chr3,145451103,148643294,0.381
+chr3,149287897,153746573,-0.868
+chr3,159167617,163042422,-0.237
+chr3,166435092,169519267,-1.06
+chr3,177489296,181055266,0.397
+chr3,182911687,187739026,-0.957
+chr4,61966,10528434,-1.224
+chr4,14526642,19266615,0.231
+chr4,21916195,23248563,0.542
+chr4,35383497,36498725,0.063
+chr4,41507176,42357104,-0.409
+chr4,43820148,48737085,0.441
+chr4,50494184,60188769,-0.319
+chr4,62096875,69809626,-0.117
+chr4,73867961,76165248,-0.346
+chr4,83820024,87526999,0.514
+chr4,90299032,96273768,0.502
+chr4,105077152,114783657,0.784
+chr4,116899606,117595345,0.255
+chr4,118461889,120127609,-0.203
+chr4,146821241,147715591,0.043
+chr4,148907464,154997155,0.338
+chr4,157318606,164755118,-0.029
+chr4,167296256,170583089,0.79
+chr4,172473802,178079560,-0.939
+chr4,180462563,189470639,0.194
+chr5,8017381,9223928,0.529
+chr5,10910761,17545145,0.039
+chr5,19799057,30167908,-0.175
+chr5,39972940,44099715,-0.303
+chr5,45643870,47528087,-0.14
+chr5,47587950,56928419,0.246
+chr5,61896416,69193796,-0.532
+chr5,69589480,75248618,-1.083
+chr5,77514538,90323308,-0.462
+chr5,92762206,97587734,0.247
+chr5,102377308,109350603,-0.146
+chr5,117124023,119165645,-0.078
+chr5,120992702,121088024,0.35
+chr5,124700981,130578083,0.511
+chr5,137545777,142830254,-0.378
+chr5,146689805,158685158,0.189
+chr5,161498178,167628471,0.331
+chr5,173776665,174413441,-0.002
+chr5,175599046,178780840,0.058
+chr6,2075289,14981007,0.544
+chr6,15114029,27761732,0.587
+chr6,29701971,37114200,0.276
+chr6,40305039,41856071,-0.154
+chr6,42386211,50266086,0.741
+chr6,51315146,53829459,-0.1
+chr6,54331318,54364187,-0.395
+chr6,55732589,61149936,-0.283
+chr6,65648169,69211442,0.112
+chr6,73282890,74875876,0.975
+chr6,82697521,93042896,-0.007
+chr6,93703608,94264805,0.192
+chr6,106214081,123635005,0.063
+chr6,125329241,125865573,-0.155
+chr6,137442944,138512269,-0.084
+chr6,139501459,140256648,-0.588
+chr6,146160107,151040217,0.266
+chr6,166939485,169974864,-0.533
+chr7,5193609,18370134,-0.61
+chr7,20599320,26126425,0.497
+chr7,28921739,29420644,-0.481
+chr7,29685275,29979448,0.715
+chr7,36542367,37539100,-0.017
+chr7,38605672,39607849,0.442
+chr7,40734578,58274911,0.203
+chr7,59720083,61778224,0.445
+chr7,61950182,71463843,-0.663
+chr7,74727503,76415092,1.06
+chr7,79392031,83360099,-0.456
+chr7,86059899,91872280,0.08
+chr7,93604214,93966758,0.326
+chr7,94312892,98088097,0.034
+chr7,99018847,99860425,-0.066
+chr7,110122459,119201406,-0.383
+chr7,128002639,133747039,0.436
+chr8,11829580,14325791,-0.278
+chr8,23288414,33937460,-0.068
+chr8,40736808,45095224,0.286
+chr8,50494903,50690787,-0.152
+chr8,53017520,54118047,0.416
+chr8,65460364,72541399,-0.113
+chr8,74177303,82006378,0.4
+chr8,90121862,91037127,-1.034
+chr8,92011088,97305293,-0.114
+chr8,105092585,106667115,0.294
+chr8,110739779,118291570,-0.841
+chr8,118849279,124705747,0.166
+chr8,128074660,128507831,-0.761
+chr8,129679769,133594276,0.122
+chr8,140132487,141393726,-0.8
+chr9,4020523,8842157,-0.317
+chr9,18455183,18494699,-0.568
+chr9,19204992,28532851,-1.131
+chr9,29356750,35793856,0.284
+chr9,41351584,42825610,-0.567
+chr9,48317884,49421023,0.159
+chr9,53692136,59782773,0.07
+chr9,61565416,61589108,-0.181
+chr9,65601415,70963019,0.278
+chr9,78566260,85851866,0.635
+chr9,85966034,90502669,-0.299
+chr9,91885102,94446975,0.23
+chr9,98013778,106724162,0.506
+chr9,123786840,123948093,1.074
+chr9,126272644,136145857,0.264
+chr10,3651574,13057032,-0.095
+chr10,19189026,28796739,0.309
+chr10,32619660,33759646,-0.491
+chr10,35571195,37830058,-0.42
+chr10,42796348,45877415,0.041
+chr10,60104682,61204330,-0.374
+chr10,62977625,64934627,-0.028
+chr10,68530799,71763953,-0.775
+chr10,77589826,101930597,-1.252
+chr10,102092782,102146499,0.613
+chr10,102545750,103447314,-0.437
+chr10,116683626,120758581,-0.076
+chr10,124428092,125923882,0.124
+chr10,127241516,132620277,0.349
+chr11,53110,1923506,-0.025
+chr11,10284610,15077288,0.371
+chr11,16983100,22816068,-0.176
+chr11,23525560,29306120,-0.14
+chr11,30042852,33602489,0.398
+chr11,33928344,42236504,0.061
+chr11,44288752,45228452,0.245
+chr11,53240132,63789656,-0.647
+chr11,68843476,84362331,-0.182
+chr11,85682712,95632275,-0.547
+chr11,99125898,102208162,0.746
+chr11,106316806,111033078,0.278
+chr11,113257184,123299059,0.013
+chr11,125794664,126369007,-0.731
+chr12,8114952,8302068,0.851
+chr12,10946348,13420723,0.105
+chr12,13458936,22392601,-0.405
+chr12,22883688,31487992,0.09
+chr12,32060106,34626475,0.422
+chr12,47228209,49464405,-0.156
+chr12,49666518,54401965,0.236
+chr12,58826109,63214650,-0.092
+chr12,68954173,76990737,-0.386
+chr12,77468094,79635163,-0.3
+chr12,79668838,90256470,-0.113
+chr12,90884465,92231829,-0.981
+chr12,97340334,112292895,-0.292
+chr12,113017659,113152835,0.497
+chr13,5714727,6092179,-0.104
+chr13,9493892,16409628,-0.993
+chr13,18459883,18496242,0.892
+chr13,24034111,26482708,-0.165
+chr13,29766045,30405325,-0.92
+chr13,36171852,43122862,-0.194
+chr13,45270059,54569982,-0.072
+chr13,55540395,60236013,-0.41
+chr13,64011254,94804532,-0.546
+chr13,96688719,105641044,-0.24
+chr13,108241246,109589286,-0.098
+chr13,111610712,111866087,0.139
+chr14,721633,769101,-0.71
+chr14,1267900,2575685,-0.593
+chr14,5494095,10007556,0.572
+chr14,11570588,18022470,-0.335
+chr14,19168952,21745532,-0.711
+chr14,26332559,33588995,0.041
+chr14,39592778,46533328,0.705
+chr14,56000317,61824759,0.732
+chr14,69682649,71509422,-0.396
+chr14,79815922,81626229,0.49
+chr14,96960632,105865300,-0.845
+chr15,2292611,4911536,0.178
+chr15,8264872,18778314,-0.81
+chr15,24262044,30517029,-0.052
+chr15,32238561,36563817,-0.558
+chr15,38281693,42132284,-0.193
+chr15,52793796,56874876,0.165
+chr15,63707798,68831628,-0.492
+chr15,69275842,72092814,-0.296
+chr15,78813418,81373846,-0.154
+chr15,81807325,82225756,-0.373
+chr15,97180260,98998392,0.07
+chr16,10546673,17148275,0.717
+chr16,22304842,22321669,0.552
+chr16,27231813,41881365,-0.371
+chr16,42202684,43433177,0.277
+chr16,49463348,51346488,-0.152
+chr16,54133186,56997026,0.483
+chr16,61390794,63625234,-0.091
+chr16,69080296,71751753,0.119
+chr16,73944922,82045180,0.618
+chr16,85783515,90194025,0.608
+chr17,993782,11308212,-0.506
+chr17,13817223,13833290,0.256
+chr17,14907011,16101918,0.035
+chr17,20342759,20872250,-0.715
+chr17,29670311,37468841,-0.27
+chr17,39236624,44037848,-0.238
+chr17,44322600,48843236,0.649
+chr17,66327170,68855844,-0.51
+chr17,72660987,81015799,-0.521
+chr18,5392978,7634555,0.349
+chr18,11525266,24701536,0.31
+chr18,32309374,46050194,0.005
+chr18,47490957,55063135,0.136
+chr18,58207526,58899915,1.086
+chr18,60661660,61889643,-0.109
+chr18,64209458,65626096,-0.437
+chr18,67481705,69659398,0.751
+chr19,6328064,10226657,-0.174
+chr19,11027361,16856577,-0.873
+chr19,36264117,39370925,-0.575
+chr19,41083737,50330874,1.06
+chr19,50827272,50974666,-0.839
+chr19,55091921,55771161,0.871
+chr20,254988,320304,-0.14
+chr20,11226366,11890968,-0.738
+chr20,13113958,16916425,0.49
+chr20,21490224,31731689,-0.235
+chr20,31906660,37230877,-0.364
+chr20,37539886,50003063,-0.676
+chr20,58473226,61540142,-0.539
+chr21,2274838,5803346,0.061
+chr21,6349062,15834720,-0.222
+chr21,23021663,28142787,0.216
+chr21,28721809,35971407,0.41
+chr21,40367691,46870352,0.29
+chr22,2964730,5640491,-0.587
+chr22,15574989,17733607,0.297
+chr22,17804459,18144540,1.075
+chr22,18471598,25532908,-0.098
+chr22,27742243,32606355,-0.612
+chr22,49357184,51112188,-0.076
+chrX,3573560,19084153,0.246
+chrX,20116658,22341940,0.669
+chrX,34675142,39915114,-0.685
+chrX,51869463,66546046,0.354
+chrX,67394309,69313351,-0.335
+chrX,70638947,84271674,0.123
+chrX,84502364,85409184,-0.195
+chrX,89119046,94117166,0.478
+chrX,95030566,99254661,0.267
+chrX,105087486,114227228,-0.266
+chrX,117680724,121005071,-1.005
+chrX,121498902,124059839,-0.038
+chrX,124866942,142580465,-0.221
+chrX,142970936,143097981,-0.58
+chrX,143332129,148413640,0.046
+chrX,149980942,154954250,-0.103
+chrY,1516150,2677871,-0.554
+chrY,13636593,38393260,0.902
+chrY,39384295,45972809,-0.497
+chrY,51017527,53789645,-0.54
+chrY,53795591,55386857,-0.316
+chrY,56120137,58384755,-0.563
diff --git a/example_data/line_color.csv b/example_data/line_color.csv
new file mode 100644
index 0000000..f207350
--- /dev/null
+++ b/example_data/line_color.csv
@@ -0,0 +1,206 @@
+chr,start,end,value,color
+chr1,2306857,8605927,-0.207,a
+chr1,20851761,21889246,0.121,a
+chr1,23158305,28865964,0.163,a
+chr1,37301567,80712334,0.53,a
+chr1,80874413,81302045,0.115,a
+chr1,85048095,85782964,-0.406,a
+chr1,103651953,127111124,0.121,a
+chr1,135270960,137253501,-0.698,a
+chr1,137686636,141148647,-0.179,a
+chr1,144113228,151137557,-0.782,a
+chr1,152584265,163107440,-0.192,a
+chr1,176502207,179148143,-0.481,a
+chr1,187606112,188853376,0.118,a
+chr1,205554580,214411816,0.241,a
+chr1,230400553,241233688,-0.263,a
+chr1,244265835,248929941,0.382,a
+chr2,1615757,6372884,0.304,a
+chr2,10990590,22675115,-0.116,a
+chr2,23918670,30900035,0.232,a
+chr2,56879570,60989617,0.837,a
+chr2,77024237,109107243,-0.775,a
+chr2,111539811,112538553,-0.307,a
+chr2,128713134,131630208,0,a
+chr2,133320605,133904980,0.774,a
+chr2,141029704,143503046,0.366,a
+chr2,147655730,151859550,-0.517,a
+chr2,158874760,159425066,-0.288,a
+chr2,159584222,160970197,0.407,a
+chr2,161440316,174803583,-0.554,a
+chr2,183613212,199779171,1.041,a
+chr2,200115634,200167401,-0.479,a
+chr2,200556234,240612329,0.754,a
+chr3,6649429,7337823,-0.294,a
+chr3,18792367,22412293,0.937,a
+chr3,28134437,43820112,0.834,a
+chr3,44310114,84489007,-0.076,a
+chr3,85061876,86596429,-0.393,a
+chr3,95085831,99659541,0.206,a
+chr3,103440320,124549083,0.152,a
+chr3,140865656,150804661,0.425,a
+chr3,154187924,161365148,0.387,a
+chr3,164824642,173156257,-0.637,a
+chr3,176222431,183260386,-0.751,a
+chr3,184465138,189095526,0.076,a
+chr3,190254635,192583835,0.214,a
+chr4,7828062,21071239,-0.282,a
+chr4,24153715,35767679,-0.358,a
+chr4,40520463,42002710,0.15,a
+chr4,43224617,73988834,-0.05,a
+chr4,83617723,94303788,0.718,a
+chr4,97627526,102877458,0.259,a
+chr4,106904642,109386825,-0.65,b
+chr4,113353122,124905680,-0.685,b
+chr4,125373666,137993634,-0.238,b
+chr4,146813677,161070762,0.091,b
+chr4,161103104,166227449,0.535,b
+chr4,167153520,167990092,-0.022,b
+chr4,168097013,185739304,0.08,b
+chr5,711011,7961180,0.233,b
+chr5,8024264,8176614,0.953,b
+chr5,12548406,28719889,-0.297,b
+chr5,45961729,46367463,-0.248,b
+chr5,68513106,91644722,0.153,b
+chr5,95679771,97783058,-0.088,b
+chr5,99934579,103035804,0.081,b
+chr5,107326211,111340968,-0.679,b
+chr5,113697471,125853425,-0.95,b
+chr5,134388235,135436371,0.036,b
+chr5,136684307,140402796,-0.257,b
+chr5,150014825,176091689,0.426,b
+chr6,6150243,17041332,-0.446,b
+chr6,17352863,21738826,-0.719,b
+chr6,27708301,35629019,-0.259,b
+chr6,40412014,46928483,0.574,b
+chr6,54293569,67385014,0.082,b
+chr6,70579320,73241777,-0.257,b
+chr6,82017169,83259364,0.077,b
+chr6,89932251,124031452,-0.563,b
+chr6,130894016,134171332,-0.824,b
+chr6,145309071,154834071,1,b
+chr6,156422739,159168706,0.36,b
+chr7,5245372,15819927,0.384,b
+chr7,26331311,44307956,0.571,b
+chr7,51702313,56130273,-0.173,b
+chr7,57245646,59103100,-0.574,b
+chr7,64706978,73677648,0.066,b
+chr7,74997766,82540728,-0.824,b
+chr7,87929905,110218686,-0.193,b
+chr7,118543890,130118509,-0.824,b
+chr7,143008251,144668377,-0.45,b
+chr7,147713245,147789218,-0.247,b
+chr7,153855422,157493759,-0.404,b
+chr8,3020482,13483620,0.315,b
+chr8,18193712,36358685,-0.853,b
+chr8,53967365,62303455,-0.355,b
+chr8,64307815,82771693,0.011,b
+chr8,87195414,88449643,-0.287,b
+chr8,89011156,95493334,-0.19,b
+chr8,98251551,106822804,-0.425,b
+chr8,122512259,125760389,0.353,b
+chr8,130370583,132055710,-0.811,b
+chr8,140166219,141527750,-0.578,b
+chr9,768728,6858453,0.103,c
+chr9,20335584,32780844,0.307,c
+chr9,47838951,49313543,-0.28,c
+chr9,49516886,59336706,-0.523,c
+chr9,79196311,86900191,-0.591,c
+chr9,95281712,98432704,-0.525,c
+chr9,109785645,115377595,-0.064,c
+chr9,118712640,121137470,-0.418,c
+chr9,122308761,126516170,-0.9,c
+chr10,787217,2736762,-0.098,c
+chr10,25793331,29652537,-0.479,c
+chr10,30382945,43936926,1.171,c
+chr10,46276749,56960701,0.287,c
+chr10,63200083,78285577,-0.069,c
+chr10,79883701,84081434,0.278,c
+chr10,84790634,88309261,-0.185,c
+chr10,101276535,112408418,-0.099,c
+chr10,126576139,133969381,-0.273,c
+chr11,1815920,2821056,-1.015,c
+chr11,4517084,6073149,-0.239,c
+chr11,8806043,37378411,0.182,c
+chr11,42719800,46360990,-0.018,c
+chr11,46569052,49527620,-0.224,c
+chr11,76549837,78845654,0.105,c
+chr11,85130166,97002548,-0.738,c
+chr11,113584659,116061594,0.169,c
+chr11,121478073,124265903,-0.061,c
+chr12,3076228,9774900,-0.647,c
+chr12,14166817,27454661,0.278,c
+chr12,29573069,37791330,-0.435,c
+chr12,40094230,49664400,-0.627,c
+chr12,53683453,62760712,0.315,c
+chr12,64822917,71948408,-0.583,c
+chr12,75016779,78438692,0.226,c
+chr12,79171064,102765719,-0.234,c
+chr12,122803973,132057888,-0.762,c
+chr13,1685762,5703685,-0.086,c
+chr13,6064413,6570279,0.587,c
+chr13,17436707,35316581,0.214,c
+chr13,40596922,43849083,0.495,c
+chr13,68233516,69078492,-0.542,c
+chr13,76499852,79615607,0.623,c
+chr13,87424665,95438082,0.256,c
+chr13,101693332,107270230,0.569,c
+chr14,4996424,11668415,-0.59,c
+chr14,14861850,26322829,-0.263,c
+chr14,35657840,48222670,-0.96,c
+chr14,59377631,60250846,0.033,c
+chr14,64695620,79388437,-0.425,c
+chr14,84253948,92430157,0.396,c
+chr14,97757077,100917700,-0.366,c
+chr15,2898612,7858243,0.917,d
+chr15,14718550,26144439,-0.526,d
+chr15,32393181,32413703,-0.096,d
+chr15,41743863,60726422,0.072,d
+chr15,61996827,67901393,0.447,d
+chr15,85047015,89015865,0.334,d
+chr15,89225497,101441516,-0.115,d
+chr16,120418,2235667,0.295,d
+chr16,14435529,16030574,0.189,d
+chr16,18070628,20854594,-0.093,d
+chr16,24383138,30246377,-0.812,d
+chr16,45447989,61384303,0.053,d
+chr16,72419080,89957950,0.537,d
+chr17,8121267,11396703,0.786,d
+chr17,16795651,40118464,0.349,d
+chr17,47357685,48395752,-0.797,d
+chr17,51623072,54260575,-0.347,d
+chr17,59976491,74422474,-0.426,d
+chr18,26235981,33461040,0.034,d
+chr18,45639384,47336592,-0.122,d
+chr18,51425884,51473947,0.576,d
+chr18,59127700,60018585,0.721,d
+chr18,73508048,74951650,-0.477,d
+chr19,12380020,18014999,1.089,d
+chr19,18393752,38941272,-0.495,d
+chr19,45989341,47744139,1.069,d
+chr19,54315036,58266566,0.054,d
+chr20,18632788,20404438,0.33,d
+chr20,27163763,28302068,0.566,d
+chr20,30355882,48978661,-0.066,d
+chr20,55005128,59585255,-0.589,d
+chr21,4915525,9409012,1.167,d
+chr21,20559833,21099955,-0.18,d
+chr21,35277456,42513833,0.379,d
+chr22,9673624,10323297,-0.638,d
+chr22,17322661,20699731,0.232,d
+chr22,28954836,41222913,-0.059,d
+chr22,44734327,46969000,0.037,d
+chrX,11936360,13117501,-0.379,d
+chrX,19499334,22818877,-0.456,d
+chrX,23015801,23094481,-0.58,d
+chrX,57224225,65837784,-0.194,d
+chrX,72532900,73980278,-0.244,d
+chrX,86236726,86841265,0.235,d
+chrX,87733314,94074165,-0.054,d
+chrX,113354457,114003456,-0.137,d
+chrX,119088279,135597929,0.363,d
+chrX,135886542,145434381,-0.116,d
+chrY,4814005,11181480,-0.365,d
+chrY,26462486,36900756,-0.567,d
+chrY,42647001,45110408,0.439,d
+chrY,50025738,58920719,-0.94,d
diff --git a/track10.csv b/example_data/line_multicolumn.csv
similarity index 97%
rename from track10.csv
rename to example_data/line_multicolumn.csv
index 4b3a425..ad7fc57 100644
--- a/track10.csv
+++ b/example_data/line_multicolumn.csv
@@ -1,305 +1,305 @@
-chr,start,end,value1,value2
-chr1,294540,4666160,-0.66,-0.596
-chr1,17589118,18065224,-0.138,-0.747
-chr1,21280287,21380873,0.217,-0.419
-chr1,22377472,23659781,0.173,0.702
-chr1,24230431,27625133,0.304,0.276
-chr1,27864815,46726601,0.305,0.233
-chr1,48943346,54205741,0.963,0.373
-chr1,62394861,65087057,-0.764,0.096
-chr1,71127671,71381996,0.529,0.387
-chr1,72943789,75295015,0.388,0.319
-chr1,78607284,82624691,0.287,-0.199
-chr1,90249294,92761976,0.571,0.168
-chr1,93701829,96256401,0.156,0.568
-chr1,98670249,101272619,0.046,0.248
-chr1,102476497,139801964,0.015,0.338
-chr1,161526150,162479071,0.013,0.012
-chr1,164972996,172931154,-0.442,-0.001
-chr1,175606539,182772058,-0.108,-0.07
-chr1,186734686,188533149,-0.338,0.024
-chr1,197300445,198674454,-0.281,-1.079
-chr1,218165418,221355464,0.115,0.033
-chr1,221989484,223329584,0.767,-0.733
-chr1,224105655,227211031,-0.185,-0.731
-chr1,228999159,239300293,-0.772,0.365
-chr2,6872874,16224260,-0.77,-0.403
-chr2,24936258,28070400,0.716,0.22
-chr2,32237563,33394969,-0.174,0.393
-chr2,40469984,48439286,-0.278,-0.547
-chr2,49914026,52206244,0.381,-1.039
-chr2,65197159,88759872,0.028,-0.601
-chr2,94059710,102225479,-0.308,0.71
-chr2,103300716,106307882,-0.116,0.009
-chr2,113561371,117522853,-0.414,-0.473
-chr2,130503673,130753241,0.321,0.535
-chr2,134693930,140836398,0.617,-0.258
-chr2,146461967,151944832,-0.045,1.188
-chr2,152192843,154457593,0.455,-0.457
-chr2,155998269,156436389,-0.025,-0.243
-chr2,163650549,165547654,0.019,0.383
-chr2,174594806,180316641,1.168,-0.45
-chr2,180517126,180651835,-0.185,-0.004
-chr2,190664931,192941661,0.144,1.124
-chr2,193323179,197085830,0.219,0.19
-chr2,200801979,215012278,0.402,-0.387
-chr2,216331220,230940839,-0.25,-0.182
-chr2,233598145,235903980,0.791,0.886
-chr2,238732147,240765489,-0.122,0.185
-chr2,241037802,241189900,0.136,0.84
-chr3,503979,24719267,0.217,-0.459
-chr3,24979219,43289811,0.226,-0.185
-chr3,46134282,48518642,-0.716,0.079
-chr3,66803673,71018481,-0.049,0.258
-chr3,71582919,72642636,0.024,-0.667
-chr3,75272279,75647455,0.059,-0.274
-chr3,89239140,92434300,-0.436,-0.452
-chr3,94087935,96366668,0.46,0.821
-chr3,97798144,111571941,-0.247,-0.445
-chr3,120981005,129080639,-1.111,-0.058
-chr3,137447770,137960878,0.896,-0.142
-chr3,138094517,140128431,0.682,0.66
-chr3,149898402,150812567,0.707,0.785
-chr3,155362983,156373017,0.618,-0.552
-chr3,160635086,167111054,0.28,-0.282
-chr3,168059931,172282940,-0.157,-0.417
-chr3,178439779,182789065,0.424,-1.044
-chr3,186144036,189525420,0.077,0.495
-chr3,194883888,194900717,0.449,0.386
-chr4,859776,2929166,0.738,0.602
-chr4,5923032,9091660,-0.2,-0.384
-chr4,9458893,11301543,-0.357,0.892
-chr4,14868141,14952211,-0.414,-0.248
-chr4,18439513,29789215,1.07,0.318
-chr4,34323673,47419997,0.026,-0.453
-chr4,60590533,62472078,0.371,-0.277
-chr4,72040587,72349512,-0.724,0.757
-chr4,72648096,86590128,0.563,-0.137
-chr4,89015755,105103866,-0.575,0.125
-chr4,105371805,105561828,-0.653,-0.035
-chr4,109274983,110712957,0.051,-0.576
-chr4,120116812,124359622,-0.096,-0.643
-chr4,125700398,126254693,0.338,-0.588
-chr4,128474202,130308164,-0.062,0.189
-chr4,147847398,150330182,0.362,-0.038
-chr4,152619349,156392988,0.28,0.758
-chr4,168763722,175881927,0.248,-0.452
-chr4,179354856,189945664,0.551,-0.998
-chr5,3573478,3891065,-0.317,-0.09
-chr5,8851009,9730164,-0.122,-0.046
-chr5,12718179,12818686,-0.367,-0.382
-chr5,14835514,16470788,-0.325,-0.741
-chr5,21772831,29244562,-0.232,0.105
-chr5,48470829,51166023,-0.042,0.563
-chr5,64941641,74390844,0.339,0.446
-chr5,77347334,83865106,-0.122,0.263
-chr5,100846812,106737405,0.746,0.139
-chr5,108856098,113418582,0.507,0.574
-chr5,115328453,119019875,0.048,-0.292
-chr5,124668223,124790933,0.159,-0.921
-chr5,127681173,128765009,0.345,1.017
-chr5,129258608,132306707,-0.056,0.254
-chr5,136766688,141786929,-0.353,0.667
-chr5,150690682,152433963,-0.024,-0.707
-chr5,158649075,170065001,0.991,0.381
-chr5,172559953,176318575,-0.151,0.273
-chr6,1781414,2078289,0.147,0.004
-chr6,16902391,22214159,0.311,-0.117
-chr6,27987131,28745830,0.555,-0.144
-chr6,34316219,39543909,0.518,0.072
-chr6,46099076,47681603,-0.624,-0.08
-chr6,54498201,60477992,0.43,-0.381
-chr6,60796470,62662687,0.358,-0.019
-chr6,70561686,73670451,0.134,0.221
-chr6,75100681,90876303,0.588,0.251
-chr6,91698809,94486830,0.244,-1.578
-chr6,95280936,98767323,-0.096,0.416
-chr6,102589165,108351301,0.369,-0.146
-chr6,115171173,116666175,1.293,0.398
-chr6,129714821,130391692,0.063,-0.503
-chr6,139549996,151646639,0.132,-0.371
-chr6,155732797,155806911,-0.367,-0.029
-chr6,156718543,162422353,0.417,0.588
-chr7,8443731,9282204,0.081,0.01
-chr7,16966196,18211141,0.683,-0.268
-chr7,22031219,25596650,-0.544,-0.393
-chr7,26835990,29093131,-0.832,0.099
-chr7,34852279,36469552,-0.235,0.466
-chr7,37271538,40374509,-0.646,1.292
-chr7,51956698,52416157,0.424,0.177
-chr7,55572906,57345545,0.132,0.275
-chr7,58059583,58349230,1.103,0.053
-chr7,61996240,84405273,-0.689,-0.354
-chr7,98112900,100461799,-0.543,-0.574
-chr7,107197630,107666955,0.252,0.189
-chr7,118392778,128802566,-0.103,0.108
-chr7,135431627,136334926,1.152,0.446
-chr7,140810389,145832531,0.548,0.294
-chr7,148918652,149212513,-0.033,0.21
-chr8,34222,2379482,0.746,-0.338
-chr8,3467398,19084781,0.441,-0.683
-chr8,21341324,30950252,-0.241,0.153
-chr8,33344923,33632054,-0.344,0.152
-chr8,48724679,48729766,-0.432,0.092
-chr8,60830623,61746807,-0.89,1.24
-chr8,65327272,68331321,-0.54,-1.172
-chr8,69473190,70840035,-0.086,0.534
-chr8,73756882,78504447,0.617,-0.327
-chr8,86764223,86904188,-0.132,-0.304
-chr8,107203937,109613109,0.229,0.845
-chr8,118975320,121945677,0.018,0.723
-chr8,122517504,123556566,-0.603,-0.143
-chr8,125619455,144676251,0.586,0.932
-chr9,3077109,10052463,0.481,-0.649
-chr9,12240684,15375783,0.085,0.793
-chr9,19360402,21578307,-0.643,-0.646
-chr9,21735712,45311191,0.19,0.425
-chr9,47885618,59567765,-0.39,0.02
-chr9,60675777,70123026,0.133,0.17
-chr9,70764025,85136648,0.034,0.452
-chr9,87901315,88860407,0.267,0.054
-chr9,93895551,96620710,-0.46,-0.248
-chr9,97569712,99862682,0.296,0.707
-chr9,102521507,105072827,0.425,-0.884
-chr9,105805438,114269568,-0.957,-0.737
-chr9,122265074,124058205,1.036,-1.042
-chr9,128577725,136226037,-0.304,-0.515
-chr10,4089001,5767638,0.729,0.482
-chr10,6018296,7532928,0.249,0.125
-chr10,10240594,29883182,-0.495,-0.903
-chr10,30477758,31615742,-0.739,-0.473
-chr10,35904064,42768599,-0.506,0.287
-chr10,43668649,45705477,0.359,0.453
-chr10,50141976,51914654,0.2,-0.149
-chr10,59958873,73313971,0.69,0.282
-chr10,77273945,82238373,0.446,-0.728
-chr10,92938470,92987021,0.344,0.27
-chr10,103509105,111052388,0.278,0.709
-chr10,115547181,119813456,-0.217,0.002
-chr10,134655144,134844655,0.151,-0.323
-chr11,2787140,5128686,0.577,0.39
-chr11,5396606,8768518,-0.482,0.097
-chr11,37785224,41551619,0.224,-1.032
-chr11,46825234,49422740,-0.656,-0.5
-chr11,52359024,64203732,-0.011,0.268
-chr11,67677409,71280216,-0.149,0.27
-chr11,71574778,77695761,0.482,-0.822
-chr11,81320360,90423195,1.199,0.347
-chr11,97562016,98412870,-0.835,1.035
-chr11,101270879,103619470,-0.782,-0.221
-chr11,106840400,113319529,-0.206,0.172
-chr11,114478359,118276196,-0.525,-0.171
-chr11,120711274,121420502,-0.473,-0.653
-chr12,1603936,15488085,-0.304,-0.152
-chr12,24146051,32410743,-0.399,-0.119
-chr12,33717436,40355329,-0.425,0.884
-chr12,50829484,52612192,-0.625,-0.959
-chr12,57261370,63850250,0.064,-0.967
-chr12,67012762,67673622,-0.429,-1.11
-chr12,67858435,72784981,-0.362,-0.037
-chr12,74303102,75910275,-0.364,-0.543
-chr12,76646134,81461797,0.192,-1.152
-chr12,85983125,89077580,-0.548,0.384
-chr12,93485261,99719662,0.138,0.786
-chr12,124884811,129475581,-0.597,0.371
-chr12,132419054,133495673,0.553,0.352
-chr13,2553951,6024825,-0.137,0.453
-chr13,21987492,23179505,0.49,-0.323
-chr13,23425558,26590546,-0.311,-0.081
-chr13,28469434,31088192,0.662,-0.829
-chr13,38937131,46585694,0.691,-0.404
-chr13,52477857,57289562,0.702,-0.309
-chr13,57933022,68450967,0.177,-0.22
-chr13,70799811,75763065,0.308,0.106
-chr13,78098199,80930206,-0.021,0.403
-chr13,91789656,95856624,0.391,-0.216
-chr13,98669118,111858379,0.217,1.178
-chr14,7762,5231060,-0.595,0.73
-chr14,15150573,17107035,-0.729,0.414
-chr14,19756242,20568642,-0.314,0.047
-chr14,20922509,23197449,0.569,-0.94
-chr14,35029155,41703469,0.772,-0.146
-chr14,47559804,50622966,-0.389,-0.479
-chr14,64641066,68081216,-0.721,0.744
-chr14,72371813,77179475,-0.068,0.023
-chr14,79450925,82124334,-0.184,0.359
-chr14,90822268,93720267,0.833,-0.08
-chr14,97695114,106088306,0.085,0.281
-chr15,4148958,13776910,-0.45,-0.3
-chr15,28447857,28490257,-0.189,-0.243
-chr15,34461234,34528345,0.046,-0.424
-chr15,35467560,36352925,0.028,1.034
-chr15,40933052,48708080,-0.33,-0.427
-chr15,60406864,69398550,0.598,-0.534
-chr15,72672960,76892634,-0.566,0.715
-chr15,77110732,77529474,0.392,0.099
-chr15,79772595,84749714,0.589,0.405
-chr15,93161715,97918772,0.424,-0.471
-chr16,6148345,8969655,0.178,-0.188
-chr16,9578712,10323399,0.28,0.096
-chr16,14155065,18759663,0.766,-0.209
-chr16,23423171,31869340,-0.413,0.106
-chr16,38199311,42867277,0.539,0.337
-chr16,43294014,49751779,-0.322,-0.068
-chr16,56366862,61725656,0.049,-0.131
-chr16,61948652,69106747,0.558,0.049
-chr16,76344990,89721515,-0.578,-0.036
-chr17,4222838,6466023,-0.379,0.185
-chr17,7684244,9337659,-0.13,0.806
-chr17,15300661,15457341,0.67,-0.324
-chr17,25433506,25699050,-0.015,0.15
-chr17,29634729,35313172,-0.175,0.697
-chr17,43171835,53352840,-0.413,-0.979
-chr17,61682729,62049930,0.059,-0.362
-chr17,77464775,77950366,-1.275,0.014
-chr18,275039,5639903,0.216,0.349
-chr18,6810676,17796751,-0.076,-0.497
-chr18,19379795,23579350,-0.339,0.374
-chr18,26190749,41049391,-0.317,-0.306
-chr18,45641793,49242872,-0.338,0.335
-chr18,50306488,57694537,0.135,-0.142
-chr18,61511272,69594297,0.304,-0.756
-chr18,71618130,72591147,-0.276,0.843
-chr19,10764067,10866172,0.295,0.513
-chr19,18822525,20230510,0.078,0.11
-chr19,23839291,26866482,0.112,0.108
-chr19,27369348,29584383,0.123,-0.073
-chr19,42769216,45848528,-0.374,-0.817
-chr19,54104486,58976354,-0.786,0.174
-chr20,182996,2745390,0.386,-0.418
-chr20,7756113,9538531,1.082,0.521
-chr20,13486384,22999848,0.369,0.038
-chr20,29140062,35672735,0.347,-0.792
-chr20,36052352,37654083,0.343,-0.578
-chr20,54433431,55932690,0.271,-0.138
-chr21,4835237,8909430,-0.685,-1.297
-chr21,11955681,12509698,-0.043,0.329
-chr21,12972299,18656510,-0.026,-0.082
-chr21,21203767,23667591,-0.014,0.465
-chr21,35003850,39051237,0.23,0.178
-chr22,2572146,4257302,-0.457,-0.31
-chr22,8336574,22390291,-0.048,-1.17
-chr22,27222872,28778935,-0.259,-1.002
-chr22,31123683,38914559,0.368,0.243
-chr22,40048434,48269545,-0.601,0.161
-chrX,2354708,7000829,-0.349,0.4
-chrX,8536553,10135070,-0.4,0.585
-chrX,22157542,22609839,0.127,-0.007
-chrX,23779661,31514440,-0.161,0.046
-chrX,36417961,37440857,0.408,0.055
-chrX,45158950,45805722,-0.132,-0.55
-chrX,45936185,62396851,0.296,0.274
-chrX,64516909,66393482,0.303,-0.542
-chrX,73154984,77742628,0.895,0.01
-chrX,84552966,95380525,-0.503,-0.603
-chrX,100630986,102703334,0.15,0.431
-chrX,110250408,123139055,-1.002,-0.184
-chrX,123893896,139717416,0.292,-0.719
-chrX,143985139,144237510,-0.017,-0.158
-chrX,144417981,150792036,0.4,-0.899
-chrY,339247,8015476,-0.192,-0.461
-chrY,11028517,14845940,0.491,0.012
-chrY,22059691,30181648,-0.349,0.139
-chrY,33641433,40053218,0.262,-0.391
-chrY,45133890,45736515,0.071,-0.88
-chrY,46749441,47011301,-0.036,-0.199
+chr,start,end,value1,value2
+chr1,294540,4666160,-0.66,-0.596
+chr1,17589118,18065224,-0.138,-0.747
+chr1,21280287,21380873,0.217,-0.419
+chr1,22377472,23659781,0.173,0.702
+chr1,24230431,27625133,0.304,0.276
+chr1,27864815,46726601,0.305,0.233
+chr1,48943346,54205741,0.963,0.373
+chr1,62394861,65087057,-0.764,0.096
+chr1,71127671,71381996,0.529,0.387
+chr1,72943789,75295015,0.388,0.319
+chr1,78607284,82624691,0.287,-0.199
+chr1,90249294,92761976,0.571,0.168
+chr1,93701829,96256401,0.156,0.568
+chr1,98670249,101272619,0.046,0.248
+chr1,102476497,139801964,0.015,0.338
+chr1,161526150,162479071,0.013,0.012
+chr1,164972996,172931154,-0.442,-0.001
+chr1,175606539,182772058,-0.108,-0.07
+chr1,186734686,188533149,-0.338,0.024
+chr1,197300445,198674454,-0.281,-1.079
+chr1,218165418,221355464,0.115,0.033
+chr1,221989484,223329584,0.767,-0.733
+chr1,224105655,227211031,-0.185,-0.731
+chr1,228999159,239300293,-0.772,0.365
+chr2,6872874,16224260,-0.77,-0.403
+chr2,24936258,28070400,0.716,0.22
+chr2,32237563,33394969,-0.174,0.393
+chr2,40469984,48439286,-0.278,-0.547
+chr2,49914026,52206244,0.381,-1.039
+chr2,65197159,88759872,0.028,-0.601
+chr2,94059710,102225479,-0.308,0.71
+chr2,103300716,106307882,-0.116,0.009
+chr2,113561371,117522853,-0.414,-0.473
+chr2,130503673,130753241,0.321,0.535
+chr2,134693930,140836398,0.617,-0.258
+chr2,146461967,151944832,-0.045,1.188
+chr2,152192843,154457593,0.455,-0.457
+chr2,155998269,156436389,-0.025,-0.243
+chr2,163650549,165547654,0.019,0.383
+chr2,174594806,180316641,1.168,-0.45
+chr2,180517126,180651835,-0.185,-0.004
+chr2,190664931,192941661,0.144,1.124
+chr2,193323179,197085830,0.219,0.19
+chr2,200801979,215012278,0.402,-0.387
+chr2,216331220,230940839,-0.25,-0.182
+chr2,233598145,235903980,0.791,0.886
+chr2,238732147,240765489,-0.122,0.185
+chr2,241037802,241189900,0.136,0.84
+chr3,503979,24719267,0.217,-0.459
+chr3,24979219,43289811,0.226,-0.185
+chr3,46134282,48518642,-0.716,0.079
+chr3,66803673,71018481,-0.049,0.258
+chr3,71582919,72642636,0.024,-0.667
+chr3,75272279,75647455,0.059,-0.274
+chr3,89239140,92434300,-0.436,-0.452
+chr3,94087935,96366668,0.46,0.821
+chr3,97798144,111571941,-0.247,-0.445
+chr3,120981005,129080639,-1.111,-0.058
+chr3,137447770,137960878,0.896,-0.142
+chr3,138094517,140128431,0.682,0.66
+chr3,149898402,150812567,0.707,0.785
+chr3,155362983,156373017,0.618,-0.552
+chr3,160635086,167111054,0.28,-0.282
+chr3,168059931,172282940,-0.157,-0.417
+chr3,178439779,182789065,0.424,-1.044
+chr3,186144036,189525420,0.077,0.495
+chr3,194883888,194900717,0.449,0.386
+chr4,859776,2929166,0.738,0.602
+chr4,5923032,9091660,-0.2,-0.384
+chr4,9458893,11301543,-0.357,0.892
+chr4,14868141,14952211,-0.414,-0.248
+chr4,18439513,29789215,1.07,0.318
+chr4,34323673,47419997,0.026,-0.453
+chr4,60590533,62472078,0.371,-0.277
+chr4,72040587,72349512,-0.724,0.757
+chr4,72648096,86590128,0.563,-0.137
+chr4,89015755,105103866,-0.575,0.125
+chr4,105371805,105561828,-0.653,-0.035
+chr4,109274983,110712957,0.051,-0.576
+chr4,120116812,124359622,-0.096,-0.643
+chr4,125700398,126254693,0.338,-0.588
+chr4,128474202,130308164,-0.062,0.189
+chr4,147847398,150330182,0.362,-0.038
+chr4,152619349,156392988,0.28,0.758
+chr4,168763722,175881927,0.248,-0.452
+chr4,179354856,189945664,0.551,-0.998
+chr5,3573478,3891065,-0.317,-0.09
+chr5,8851009,9730164,-0.122,-0.046
+chr5,12718179,12818686,-0.367,-0.382
+chr5,14835514,16470788,-0.325,-0.741
+chr5,21772831,29244562,-0.232,0.105
+chr5,48470829,51166023,-0.042,0.563
+chr5,64941641,74390844,0.339,0.446
+chr5,77347334,83865106,-0.122,0.263
+chr5,100846812,106737405,0.746,0.139
+chr5,108856098,113418582,0.507,0.574
+chr5,115328453,119019875,0.048,-0.292
+chr5,124668223,124790933,0.159,-0.921
+chr5,127681173,128765009,0.345,1.017
+chr5,129258608,132306707,-0.056,0.254
+chr5,136766688,141786929,-0.353,0.667
+chr5,150690682,152433963,-0.024,-0.707
+chr5,158649075,170065001,0.991,0.381
+chr5,172559953,176318575,-0.151,0.273
+chr6,1781414,2078289,0.147,0.004
+chr6,16902391,22214159,0.311,-0.117
+chr6,27987131,28745830,0.555,-0.144
+chr6,34316219,39543909,0.518,0.072
+chr6,46099076,47681603,-0.624,-0.08
+chr6,54498201,60477992,0.43,-0.381
+chr6,60796470,62662687,0.358,-0.019
+chr6,70561686,73670451,0.134,0.221
+chr6,75100681,90876303,0.588,0.251
+chr6,91698809,94486830,0.244,-1.578
+chr6,95280936,98767323,-0.096,0.416
+chr6,102589165,108351301,0.369,-0.146
+chr6,115171173,116666175,1.293,0.398
+chr6,129714821,130391692,0.063,-0.503
+chr6,139549996,151646639,0.132,-0.371
+chr6,155732797,155806911,-0.367,-0.029
+chr6,156718543,162422353,0.417,0.588
+chr7,8443731,9282204,0.081,0.01
+chr7,16966196,18211141,0.683,-0.268
+chr7,22031219,25596650,-0.544,-0.393
+chr7,26835990,29093131,-0.832,0.099
+chr7,34852279,36469552,-0.235,0.466
+chr7,37271538,40374509,-0.646,1.292
+chr7,51956698,52416157,0.424,0.177
+chr7,55572906,57345545,0.132,0.275
+chr7,58059583,58349230,1.103,0.053
+chr7,61996240,84405273,-0.689,-0.354
+chr7,98112900,100461799,-0.543,-0.574
+chr7,107197630,107666955,0.252,0.189
+chr7,118392778,128802566,-0.103,0.108
+chr7,135431627,136334926,1.152,0.446
+chr7,140810389,145832531,0.548,0.294
+chr7,148918652,149212513,-0.033,0.21
+chr8,34222,2379482,0.746,-0.338
+chr8,3467398,19084781,0.441,-0.683
+chr8,21341324,30950252,-0.241,0.153
+chr8,33344923,33632054,-0.344,0.152
+chr8,48724679,48729766,-0.432,0.092
+chr8,60830623,61746807,-0.89,1.24
+chr8,65327272,68331321,-0.54,-1.172
+chr8,69473190,70840035,-0.086,0.534
+chr8,73756882,78504447,0.617,-0.327
+chr8,86764223,86904188,-0.132,-0.304
+chr8,107203937,109613109,0.229,0.845
+chr8,118975320,121945677,0.018,0.723
+chr8,122517504,123556566,-0.603,-0.143
+chr8,125619455,144676251,0.586,0.932
+chr9,3077109,10052463,0.481,-0.649
+chr9,12240684,15375783,0.085,0.793
+chr9,19360402,21578307,-0.643,-0.646
+chr9,21735712,45311191,0.19,0.425
+chr9,47885618,59567765,-0.39,0.02
+chr9,60675777,70123026,0.133,0.17
+chr9,70764025,85136648,0.034,0.452
+chr9,87901315,88860407,0.267,0.054
+chr9,93895551,96620710,-0.46,-0.248
+chr9,97569712,99862682,0.296,0.707
+chr9,102521507,105072827,0.425,-0.884
+chr9,105805438,114269568,-0.957,-0.737
+chr9,122265074,124058205,1.036,-1.042
+chr9,128577725,136226037,-0.304,-0.515
+chr10,4089001,5767638,0.729,0.482
+chr10,6018296,7532928,0.249,0.125
+chr10,10240594,29883182,-0.495,-0.903
+chr10,30477758,31615742,-0.739,-0.473
+chr10,35904064,42768599,-0.506,0.287
+chr10,43668649,45705477,0.359,0.453
+chr10,50141976,51914654,0.2,-0.149
+chr10,59958873,73313971,0.69,0.282
+chr10,77273945,82238373,0.446,-0.728
+chr10,92938470,92987021,0.344,0.27
+chr10,103509105,111052388,0.278,0.709
+chr10,115547181,119813456,-0.217,0.002
+chr10,134655144,134844655,0.151,-0.323
+chr11,2787140,5128686,0.577,0.39
+chr11,5396606,8768518,-0.482,0.097
+chr11,37785224,41551619,0.224,-1.032
+chr11,46825234,49422740,-0.656,-0.5
+chr11,52359024,64203732,-0.011,0.268
+chr11,67677409,71280216,-0.149,0.27
+chr11,71574778,77695761,0.482,-0.822
+chr11,81320360,90423195,1.199,0.347
+chr11,97562016,98412870,-0.835,1.035
+chr11,101270879,103619470,-0.782,-0.221
+chr11,106840400,113319529,-0.206,0.172
+chr11,114478359,118276196,-0.525,-0.171
+chr11,120711274,121420502,-0.473,-0.653
+chr12,1603936,15488085,-0.304,-0.152
+chr12,24146051,32410743,-0.399,-0.119
+chr12,33717436,40355329,-0.425,0.884
+chr12,50829484,52612192,-0.625,-0.959
+chr12,57261370,63850250,0.064,-0.967
+chr12,67012762,67673622,-0.429,-1.11
+chr12,67858435,72784981,-0.362,-0.037
+chr12,74303102,75910275,-0.364,-0.543
+chr12,76646134,81461797,0.192,-1.152
+chr12,85983125,89077580,-0.548,0.384
+chr12,93485261,99719662,0.138,0.786
+chr12,124884811,129475581,-0.597,0.371
+chr12,132419054,133495673,0.553,0.352
+chr13,2553951,6024825,-0.137,0.453
+chr13,21987492,23179505,0.49,-0.323
+chr13,23425558,26590546,-0.311,-0.081
+chr13,28469434,31088192,0.662,-0.829
+chr13,38937131,46585694,0.691,-0.404
+chr13,52477857,57289562,0.702,-0.309
+chr13,57933022,68450967,0.177,-0.22
+chr13,70799811,75763065,0.308,0.106
+chr13,78098199,80930206,-0.021,0.403
+chr13,91789656,95856624,0.391,-0.216
+chr13,98669118,111858379,0.217,1.178
+chr14,7762,5231060,-0.595,0.73
+chr14,15150573,17107035,-0.729,0.414
+chr14,19756242,20568642,-0.314,0.047
+chr14,20922509,23197449,0.569,-0.94
+chr14,35029155,41703469,0.772,-0.146
+chr14,47559804,50622966,-0.389,-0.479
+chr14,64641066,68081216,-0.721,0.744
+chr14,72371813,77179475,-0.068,0.023
+chr14,79450925,82124334,-0.184,0.359
+chr14,90822268,93720267,0.833,-0.08
+chr14,97695114,106088306,0.085,0.281
+chr15,4148958,13776910,-0.45,-0.3
+chr15,28447857,28490257,-0.189,-0.243
+chr15,34461234,34528345,0.046,-0.424
+chr15,35467560,36352925,0.028,1.034
+chr15,40933052,48708080,-0.33,-0.427
+chr15,60406864,69398550,0.598,-0.534
+chr15,72672960,76892634,-0.566,0.715
+chr15,77110732,77529474,0.392,0.099
+chr15,79772595,84749714,0.589,0.405
+chr15,93161715,97918772,0.424,-0.471
+chr16,6148345,8969655,0.178,-0.188
+chr16,9578712,10323399,0.28,0.096
+chr16,14155065,18759663,0.766,-0.209
+chr16,23423171,31869340,-0.413,0.106
+chr16,38199311,42867277,0.539,0.337
+chr16,43294014,49751779,-0.322,-0.068
+chr16,56366862,61725656,0.049,-0.131
+chr16,61948652,69106747,0.558,0.049
+chr16,76344990,89721515,-0.578,-0.036
+chr17,4222838,6466023,-0.379,0.185
+chr17,7684244,9337659,-0.13,0.806
+chr17,15300661,15457341,0.67,-0.324
+chr17,25433506,25699050,-0.015,0.15
+chr17,29634729,35313172,-0.175,0.697
+chr17,43171835,53352840,-0.413,-0.979
+chr17,61682729,62049930,0.059,-0.362
+chr17,77464775,77950366,-1.275,0.014
+chr18,275039,5639903,0.216,0.349
+chr18,6810676,17796751,-0.076,-0.497
+chr18,19379795,23579350,-0.339,0.374
+chr18,26190749,41049391,-0.317,-0.306
+chr18,45641793,49242872,-0.338,0.335
+chr18,50306488,57694537,0.135,-0.142
+chr18,61511272,69594297,0.304,-0.756
+chr18,71618130,72591147,-0.276,0.843
+chr19,10764067,10866172,0.295,0.513
+chr19,18822525,20230510,0.078,0.11
+chr19,23839291,26866482,0.112,0.108
+chr19,27369348,29584383,0.123,-0.073
+chr19,42769216,45848528,-0.374,-0.817
+chr19,54104486,58976354,-0.786,0.174
+chr20,182996,2745390,0.386,-0.418
+chr20,7756113,9538531,1.082,0.521
+chr20,13486384,22999848,0.369,0.038
+chr20,29140062,35672735,0.347,-0.792
+chr20,36052352,37654083,0.343,-0.578
+chr20,54433431,55932690,0.271,-0.138
+chr21,4835237,8909430,-0.685,-1.297
+chr21,11955681,12509698,-0.043,0.329
+chr21,12972299,18656510,-0.026,-0.082
+chr21,21203767,23667591,-0.014,0.465
+chr21,35003850,39051237,0.23,0.178
+chr22,2572146,4257302,-0.457,-0.31
+chr22,8336574,22390291,-0.048,-1.17
+chr22,27222872,28778935,-0.259,-1.002
+chr22,31123683,38914559,0.368,0.243
+chr22,40048434,48269545,-0.601,0.161
+chrX,2354708,7000829,-0.349,0.4
+chrX,8536553,10135070,-0.4,0.585
+chrX,22157542,22609839,0.127,-0.007
+chrX,23779661,31514440,-0.161,0.046
+chrX,36417961,37440857,0.408,0.055
+chrX,45158950,45805722,-0.132,-0.55
+chrX,45936185,62396851,0.296,0.274
+chrX,64516909,66393482,0.303,-0.542
+chrX,73154984,77742628,0.895,0.01
+chrX,84552966,95380525,-0.503,-0.603
+chrX,100630986,102703334,0.15,0.431
+chrX,110250408,123139055,-1.002,-0.184
+chrX,123893896,139717416,0.292,-0.719
+chrX,143985139,144237510,-0.017,-0.158
+chrX,144417981,150792036,0.4,-0.899
+chrY,339247,8015476,-0.192,-0.461
+chrY,11028517,14845940,0.491,0.012
+chrY,22059691,30181648,-0.349,0.139
+chrY,33641433,40053218,0.262,-0.391
+chrY,45133890,45736515,0.071,-0.88
+chrY,46749441,47011301,-0.036,-0.199
diff --git a/links.csv b/example_data/links.csv
similarity index 97%
rename from links.csv
rename to example_data/links.csv
index f9d4610..1828934 100644
--- a/links.csv
+++ b/example_data/links.csv
@@ -1,108 +1,108 @@
-chr1,start1,end1,chr2,start2,end2
-chr20,37720821,47419255,chr5,162124929,168434522
-chr8,76179361,83302661,chr1,162049212,213797379
-chr2,38375277,49805216,chr11,19060895,36294068
-chr2,120255288,134792772,chr13,62362083,71502856
-chr4,95199225,102508113,chr13,16327889,24910342
-chr15,83769167,83992136,chr10,83790329,119443216
-chr19,4720005,9699881,chr5,128543229,133838939
-chr7,69144425,82831719,chr14,31274513,45025723
-chr6,34192815,55112761,chr2,45860721,58450122
-chr10,419059,1409141,chr9,79554926,105272065
-chr1,196822238,198089792,chr9,46723399,54317561
-chrX,73490904,91262394,chr2,131001717,141934863
-chr9,38623959,57868669,chr16,63140516,72928923
-chr4,13019489,22288953,chr4,136892305,179257211
-chr22,5443447,9845536,chr17,10386912,28467999
-chr10,95280736,124769318,chr6,102991411,105719115
-chr11,1056341,18742156,chr12,84543806,94066941
-chr6,90613060,97905565,chr10,15918347,18097654
-chr7,111336698,112847102,chr6,151162991,158795234
-chr3,149770745,154993776,chr11,63182761,66697179
-chr6,99261948,123705924,chr4,17653599,21374629
-chr20,33432142,33691203,chr1,61688705,70402408
-chr5,143399326,156550280,chrX,16865508,27458844
-chr14,3409559,16413868,chr8,2867727,9587448
-chr2,53128173,85001839,chr3,8248094,8487772
-chr10,79010595,93250673,chr18,52850217,60846942
-chr3,156201678,163987419,chr8,67075002,77407838
-chrX,118654722,129782531,chr1,113189922,129244307
-chr13,49227221,67789844,chr16,8949870,45724162
-chr1,152645088,190372859,chr11,83635065,89291791
-chr15,2910857,5103190,chr2,12438560,14917929
-chr2,234368019,238233989,chr13,87937029,112959999
-chr15,22477561,28092570,chr2,154791111,170998693
-chr6,127138118,164187885,chr8,94156250,94520569
-chr3,41140583,45120324,chr20,33010995,46776174
-chr8,130878403,136759880,chr14,12625422,19101810
-chrX,146392824,148655718,chr22,3857346,6883586
-chr1,104595243,136382724,chr12,10629291,11041905
-chr3,47694727,82845667,chr3,155662644,169169030
-chr3,169673470,188320751,chr2,190080043,199161610
-chr4,120643216,123060458,chr20,55141541,59004368
-chr14,96674647,106462736,chr1,142752158,150844195
-chr14,85262058,87378848,chr7,119185176,120798929
-chr5,96589239,102387203,chr10,42779818,46105863
-chr2,3141798,4497182,chr2,234196037,235953181
-chr6,2538621,21223838,chr3,37242274,61088754
-chr2,159620925,177212101,chr5,149377847,155790031
-chr9,122420053,122909004,chr1,20818047,42341850
-chrY,2128640,19093851,chr19,8457273,14451173
-chr9,94507835,102486619,chr4,128270322,128507120
-chrX,35950902,45139950,chr13,77842004,86369794
-chr3,108743402,134297206,chr3,20011678,24659114
-chr5,39641024,45295942,chr18,2246247,5461185
-chr1,9476667,35357110,chrY,23251294,32355991
-chr4,133671349,157046420,chr9,24313427,34737669
-chr13,81644422,106954937,chr10,34271912,35536920
-chr18,71339077,77974527,chr5,103245726,112420311
-chr9,61015491,77437993,chr16,73002234,80206291
-chr5,116495763,125437871,chr21,30661719,44548691
-chr6,164544549,164738631,chr1,224018666,230950163
-chr7,124403428,145825263,chrX,45877067,48528580
-chr12,120539689,122069400,chr7,122672234,128498748
-chr22,36316384,45181602,chr7,144815156,145270570
-chr18,5925535,23267555,chr4,7302703,14785756
-chr21,14062143,19271229,chr7,6571764,61803626
-chr1,211671448,220403794,chr12,126323059,132298640
-chr10,58015749,66562286,chr17,72176479,75016350
-chr12,79130123,100178063,chr5,5833906,62757309
-chr13,17581285,29452267,chr6,63138304,98801082
-chr14,27322473,50151565,chr1,80120957,106120213
-chr15,52395152,62596963,chr17,71025288,71413425
-chr11,21227710,25915837,chrY,38526678,55832327
-chr8,36274784,42630586,chrX,120511982,130623621
-chr10,19361748,29461261,chr10,65305251,77330492
-chr5,161532754,171028078,chr21,21634004,23093679
-chr17,71382766,72550607,chr15,9549509,31055088
-chr9,78140633,86937009,chr18,70931930,77760425
-chr4,165494181,182339658,chr4,101319228,115605473
-chr18,37423987,47482338,chr11,90163013,93603434
-chr7,2433982,42484951,chr4,49021557,70369905
-chr16,82350020,88019415,chr15,74567308,82052777
-chr5,91531850,93756908,chr2,37277026,42292277
-chr13,13264499,13346848,chr22,10664178,19016937
-chr17,16725861,51373843,chr8,15342757,41113550
-chr11,119446666,123380890,chr6,9962401,23103859
-chr11,32362629,66766378,chrX,87110465,115690628
-chr4,51796462,69824358,chr7,63843932,70665561
-chrY,23679793,54759629,chr6,24859990,42892902
-chr16,49768391,55876224,chr2,64693951,77853719
-chr2,204356437,212781820,chr6,122666159,130690144
-chrX,103843025,104758861,chr9,14549726,19219845
-chr1,38884768,40320506,chr14,28511636,28882919
-chr12,10522923,27325278,chr19,29879024,58033649
-chr2,93274482,110002994,chr15,37621671,53193681
-chr7,94040252,105392585,chr1,2545838,16300399
-chr8,10442122,28255871,chr11,110565014,121406100
-chr8,138189569,145173812,chr14,91355629,103169245
-chr1,236640805,243623952,chr3,4401908,5427821
-chr3,15208556,29658625,chr15,88310497,98190316
-chr19,26983002,54412870,chr12,99594010,113624116
-chr21,42060563,46108237,chr12,16717942,47418291
-chr12,70254750,76622580,chr5,172499734,175451217
-chr11,74851224,102790080,chr9,70768310,75335294
-chr1,52182140,84025218,chr8,105974256,135020217
-chr17,65466820,70284035,chr3,95165420,100233039
-chr16,27912741,37686742,chrX,78907107,86561316
-chr12,49634508,57872103,chr3,64090944,91957906
+chr1,start1,end1,chr2,start2,end2
+chr20,37720821,47419255,chr5,162124929,168434522
+chr8,76179361,83302661,chr1,162049212,213797379
+chr2,38375277,49805216,chr11,19060895,36294068
+chr2,120255288,134792772,chr13,62362083,71502856
+chr4,95199225,102508113,chr13,16327889,24910342
+chr15,83769167,83992136,chr10,83790329,119443216
+chr19,4720005,9699881,chr5,128543229,133838939
+chr7,69144425,82831719,chr14,31274513,45025723
+chr6,34192815,55112761,chr2,45860721,58450122
+chr10,419059,1409141,chr9,79554926,105272065
+chr1,196822238,198089792,chr9,46723399,54317561
+chrX,73490904,91262394,chr2,131001717,141934863
+chr9,38623959,57868669,chr16,63140516,72928923
+chr4,13019489,22288953,chr4,136892305,179257211
+chr22,5443447,9845536,chr17,10386912,28467999
+chr10,95280736,124769318,chr6,102991411,105719115
+chr11,1056341,18742156,chr12,84543806,94066941
+chr6,90613060,97905565,chr10,15918347,18097654
+chr7,111336698,112847102,chr6,151162991,158795234
+chr3,149770745,154993776,chr11,63182761,66697179
+chr6,99261948,123705924,chr4,17653599,21374629
+chr20,33432142,33691203,chr1,61688705,70402408
+chr5,143399326,156550280,chrX,16865508,27458844
+chr14,3409559,16413868,chr8,2867727,9587448
+chr2,53128173,85001839,chr3,8248094,8487772
+chr10,79010595,93250673,chr18,52850217,60846942
+chr3,156201678,163987419,chr8,67075002,77407838
+chrX,118654722,129782531,chr1,113189922,129244307
+chr13,49227221,67789844,chr16,8949870,45724162
+chr1,152645088,190372859,chr11,83635065,89291791
+chr15,2910857,5103190,chr2,12438560,14917929
+chr2,234368019,238233989,chr13,87937029,112959999
+chr15,22477561,28092570,chr2,154791111,170998693
+chr6,127138118,164187885,chr8,94156250,94520569
+chr3,41140583,45120324,chr20,33010995,46776174
+chr8,130878403,136759880,chr14,12625422,19101810
+chrX,146392824,148655718,chr22,3857346,6883586
+chr1,104595243,136382724,chr12,10629291,11041905
+chr3,47694727,82845667,chr3,155662644,169169030
+chr3,169673470,188320751,chr2,190080043,199161610
+chr4,120643216,123060458,chr20,55141541,59004368
+chr14,96674647,106462736,chr1,142752158,150844195
+chr14,85262058,87378848,chr7,119185176,120798929
+chr5,96589239,102387203,chr10,42779818,46105863
+chr2,3141798,4497182,chr2,234196037,235953181
+chr6,2538621,21223838,chr3,37242274,61088754
+chr2,159620925,177212101,chr5,149377847,155790031
+chr9,122420053,122909004,chr1,20818047,42341850
+chrY,2128640,19093851,chr19,8457273,14451173
+chr9,94507835,102486619,chr4,128270322,128507120
+chrX,35950902,45139950,chr13,77842004,86369794
+chr3,108743402,134297206,chr3,20011678,24659114
+chr5,39641024,45295942,chr18,2246247,5461185
+chr1,9476667,35357110,chrY,23251294,32355991
+chr4,133671349,157046420,chr9,24313427,34737669
+chr13,81644422,106954937,chr10,34271912,35536920
+chr18,71339077,77974527,chr5,103245726,112420311
+chr9,61015491,77437993,chr16,73002234,80206291
+chr5,116495763,125437871,chr21,30661719,44548691
+chr6,164544549,164738631,chr1,224018666,230950163
+chr7,124403428,145825263,chrX,45877067,48528580
+chr12,120539689,122069400,chr7,122672234,128498748
+chr22,36316384,45181602,chr7,144815156,145270570
+chr18,5925535,23267555,chr4,7302703,14785756
+chr21,14062143,19271229,chr7,6571764,61803626
+chr1,211671448,220403794,chr12,126323059,132298640
+chr10,58015749,66562286,chr17,72176479,75016350
+chr12,79130123,100178063,chr5,5833906,62757309
+chr13,17581285,29452267,chr6,63138304,98801082
+chr14,27322473,50151565,chr1,80120957,106120213
+chr15,52395152,62596963,chr17,71025288,71413425
+chr11,21227710,25915837,chrY,38526678,55832327
+chr8,36274784,42630586,chrX,120511982,130623621
+chr10,19361748,29461261,chr10,65305251,77330492
+chr5,161532754,171028078,chr21,21634004,23093679
+chr17,71382766,72550607,chr15,9549509,31055088
+chr9,78140633,86937009,chr18,70931930,77760425
+chr4,165494181,182339658,chr4,101319228,115605473
+chr18,37423987,47482338,chr11,90163013,93603434
+chr7,2433982,42484951,chr4,49021557,70369905
+chr16,82350020,88019415,chr15,74567308,82052777
+chr5,91531850,93756908,chr2,37277026,42292277
+chr13,13264499,13346848,chr22,10664178,19016937
+chr17,16725861,51373843,chr8,15342757,41113550
+chr11,119446666,123380890,chr6,9962401,23103859
+chr11,32362629,66766378,chrX,87110465,115690628
+chr4,51796462,69824358,chr7,63843932,70665561
+chrY,23679793,54759629,chr6,24859990,42892902
+chr16,49768391,55876224,chr2,64693951,77853719
+chr2,204356437,212781820,chr6,122666159,130690144
+chrX,103843025,104758861,chr9,14549726,19219845
+chr1,38884768,40320506,chr14,28511636,28882919
+chr12,10522923,27325278,chr19,29879024,58033649
+chr2,93274482,110002994,chr15,37621671,53193681
+chr7,94040252,105392585,chr1,2545838,16300399
+chr8,10442122,28255871,chr11,110565014,121406100
+chr8,138189569,145173812,chr14,91355629,103169245
+chr1,236640805,243623952,chr3,4401908,5427821
+chr3,15208556,29658625,chr15,88310497,98190316
+chr19,26983002,54412870,chr12,99594010,113624116
+chr21,42060563,46108237,chr12,16717942,47418291
+chr12,70254750,76622580,chr5,172499734,175451217
+chr11,74851224,102790080,chr9,70768310,75335294
+chr1,52182140,84025218,chr8,105974256,135020217
+chr17,65466820,70284035,chr3,95165420,100233039
+chr16,27912741,37686742,chrX,78907107,86561316
+chr12,49634508,57872103,chr3,64090944,91957906
diff --git a/example_data/links_color.csv b/example_data/links_color.csv
new file mode 100644
index 0000000..e90f7fb
--- /dev/null
+++ b/example_data/links_color.csv
@@ -0,0 +1,108 @@
+chr1,start1,end1,chr2,start2,end2,color
+chr20,37720821,47419255,chr5,162124929,168434522,c
+chr8,76179361,83302661,chr1,162049212,213797379,c
+chr2,38375277,49805216,chr11,19060895,36294068,b
+chr2,120255288,134792772,chr13,62362083,71502856,a
+chr4,95199225,102508113,chr13,16327889,24910342,a
+chr15,83769167,83992136,chr10,83790329,119443216,b
+chr19,4720005,9699881,chr5,128543229,133838939,b
+chr7,69144425,82831719,chr14,31274513,45025723,c
+chr6,34192815,55112761,chr2,45860721,58450122,b
+chr10,419059,1409141,chr9,79554926,105272065,b
+chr1,196822238,198089792,chr9,46723399,54317561,a
+chrX,73490904,91262394,chr2,131001717,141934863,b
+chr9,38623959,57868669,chr16,63140516,72928923,b
+chr4,13019489,22288953,chr4,136892305,179257211,a
+chr22,5443447,9845536,chr17,10386912,28467999,a
+chr10,95280736,124769318,chr6,102991411,105719115,a
+chr11,1056341,18742156,chr12,84543806,94066941,a
+chr6,90613060,97905565,chr10,15918347,18097654,c
+chr7,111336698,112847102,chr6,151162991,158795234,b
+chr3,149770745,154993776,chr11,63182761,66697179,a
+chr6,99261948,123705924,chr4,17653599,21374629,b
+chr20,33432142,33691203,chr1,61688705,70402408,c
+chr5,143399326,156550280,chrX,16865508,27458844,a
+chr14,3409559,16413868,chr8,2867727,9587448,b
+chr2,53128173,85001839,chr3,8248094,8487772,a
+chr10,79010595,93250673,chr18,52850217,60846942,b
+chr3,156201678,163987419,chr8,67075002,77407838,b
+chrX,118654722,129782531,chr1,113189922,129244307,b
+chr13,49227221,67789844,chr16,8949870,45724162,c
+chr1,152645088,190372859,chr11,83635065,89291791,a
+chr15,2910857,5103190,chr2,12438560,14917929,c
+chr2,234368019,238233989,chr13,87937029,112959999,b
+chr15,22477561,28092570,chr2,154791111,170998693,c
+chr6,127138118,164187885,chr8,94156250,94520569,c
+chr3,41140583,45120324,chr20,33010995,46776174,a
+chr8,130878403,136759880,chr14,12625422,19101810,a
+chrX,146392824,148655718,chr22,3857346,6883586,a
+chr1,104595243,136382724,chr12,10629291,11041905,b
+chr3,47694727,82845667,chr3,155662644,169169030,a
+chr3,169673470,188320751,chr2,190080043,199161610,a
+chr4,120643216,123060458,chr20,55141541,59004368,b
+chr14,96674647,106462736,chr1,142752158,150844195,a
+chr14,85262058,87378848,chr7,119185176,120798929,b
+chr5,96589239,102387203,chr10,42779818,46105863,b
+chr2,3141798,4497182,chr2,234196037,235953181,a
+chr6,2538621,21223838,chr3,37242274,61088754,b
+chr2,159620925,177212101,chr5,149377847,155790031,a
+chr9,122420053,122909004,chr1,20818047,42341850,a
+chrY,2128640,19093851,chr19,8457273,14451173,b
+chr9,94507835,102486619,chr4,128270322,128507120,a
+chrX,35950902,45139950,chr13,77842004,86369794,c
+chr3,108743402,134297206,chr3,20011678,24659114,a
+chr5,39641024,45295942,chr18,2246247,5461185,b
+chr1,9476667,35357110,chrY,23251294,32355991,b
+chr4,133671349,157046420,chr9,24313427,34737669,b
+chr13,81644422,106954937,chr10,34271912,35536920,c
+chr18,71339077,77974527,chr5,103245726,112420311,b
+chr9,61015491,77437993,chr16,73002234,80206291,c
+chr5,116495763,125437871,chr21,30661719,44548691,a
+chr6,164544549,164738631,chr1,224018666,230950163,c
+chr7,124403428,145825263,chrX,45877067,48528580,c
+chr12,120539689,122069400,chr7,122672234,128498748,c
+chr22,36316384,45181602,chr7,144815156,145270570,a
+chr18,5925535,23267555,chr4,7302703,14785756,a
+chr21,14062143,19271229,chr7,6571764,61803626,b
+chr1,211671448,220403794,chr12,126323059,132298640,b
+chr10,58015749,66562286,chr17,72176479,75016350,c
+chr12,79130123,100178063,chr5,5833906,62757309,b
+chr13,17581285,29452267,chr6,63138304,98801082,b
+chr14,27322473,50151565,chr1,80120957,106120213,c
+chr15,52395152,62596963,chr17,71025288,71413425,c
+chr11,21227710,25915837,chrY,38526678,55832327,b
+chr8,36274784,42630586,chrX,120511982,130623621,b
+chr10,19361748,29461261,chr10,65305251,77330492,c
+chr5,161532754,171028078,chr21,21634004,23093679,c
+chr17,71382766,72550607,chr15,9549509,31055088,a
+chr9,78140633,86937009,chr18,70931930,77760425,b
+chr4,165494181,182339658,chr4,101319228,115605473,b
+chr18,37423987,47482338,chr11,90163013,93603434,a
+chr7,2433982,42484951,chr4,49021557,70369905,c
+chr16,82350020,88019415,chr15,74567308,82052777,a
+chr5,91531850,93756908,chr2,37277026,42292277,b
+chr13,13264499,13346848,chr22,10664178,19016937,b
+chr17,16725861,51373843,chr8,15342757,41113550,c
+chr11,119446666,123380890,chr6,9962401,23103859,b
+chr11,32362629,66766378,chrX,87110465,115690628,b
+chr4,51796462,69824358,chr7,63843932,70665561,a
+chrY,23679793,54759629,chr6,24859990,42892902,c
+chr16,49768391,55876224,chr2,64693951,77853719,b
+chr2,204356437,212781820,chr6,122666159,130690144,a
+chrX,103843025,104758861,chr9,14549726,19219845,a
+chr1,38884768,40320506,chr14,28511636,28882919,a
+chr12,10522923,27325278,chr19,29879024,58033649,c
+chr2,93274482,110002994,chr15,37621671,53193681,a
+chr7,94040252,105392585,chr1,2545838,16300399,b
+chr8,10442122,28255871,chr11,110565014,121406100,a
+chr8,138189569,145173812,chr14,91355629,103169245,a
+chr1,236640805,243623952,chr3,4401908,5427821,c
+chr3,15208556,29658625,chr15,88310497,98190316,a
+chr19,26983002,54412870,chr12,99594010,113624116,c
+chr21,42060563,46108237,chr12,16717942,47418291,b
+chr12,70254750,76622580,chr5,172499734,175451217,b
+chr11,74851224,102790080,chr9,70768310,75335294,b
+chr1,52182140,84025218,chr8,105974256,135020217,c
+chr17,65466820,70284035,chr3,95165420,100233039,c
+chr16,27912741,37686742,chrX,78907107,86561316,a
+chr12,49634508,57872103,chr3,64090944,91957906,b
diff --git a/track1.csv b/example_data/point.csv
old mode 100755
new mode 100644
similarity index 96%
rename from track1.csv
rename to example_data/point.csv
index 379a7fb..e3cd486
--- a/track1.csv
+++ b/example_data/point.csv
@@ -1,326 +1,326 @@
-chr,start,end,value1
-chr1,1769292,1796134,0.339
-chr1,4881594,5495466,1.005
-chr1,9076857,21130138,-0.247
-chr1,27279764,27941507,0.092
-chr1,28351697,32840519,-0.677
-chr1,35166605,38111246,0.344
-chr1,40292931,41985400,0.305
-chr1,45292238,48455065,0.39
-chr1,53310920,59664194,-0.053
-chr1,79176411,79317400,0.277
-chr1,85531975,88126222,0.669
-chr1,89183035,90158055,0.301
-chr1,96801993,98085385,-0.947
-chr1,100159477,105297002,-0.047
-chr1,108939731,118217823,0.172
-chr1,121996108,124081889,0.36
-chr1,125781949,127903762,-0.444
-chr1,136680850,147056798,-0.076
-chr1,153493933,161364687,0.272
-chr1,165179537,168710977,-0.439
-chr1,169920959,183685019,0.455
-chr1,183855350,191962189,0.301
-chr1,204581126,211738039,0.459
-chr1,214787908,225469517,-0.48
-chr1,238342512,239213312,-0.124
-chr1,246633978,248514622,0.174
-chr2,5800619,8815540,0.088
-chr2,10440452,10893876,-0.891
-chr2,13344028,15484290,0.541
-chr2,27281028,31116604,-0.345
-chr2,34951004,48365683,-0.014
-chr2,58896960,59391876,0.003
-chr2,73557779,74452780,0.555
-chr2,79352042,81631595,0.166
-chr2,87692990,92313841,-0.478
-chr2,93128500,94693099,0.169
-chr2,99188634,99237967,0.105
-chr2,101274718,105953782,-0.053
-chr2,109056713,111905114,0.441
-chr2,113531655,115105102,-0.087
-chr2,131332999,136237323,0.405
-chr2,148820988,158596944,-0.412
-chr2,158954754,160585963,0.33
-chr2,160955450,162169099,-0.041
-chr2,177649992,179781181,0.189
-chr2,181216838,183176883,-0.715
-chr2,202881605,205915513,0.805
-chr2,209547931,210542713,-0.096
-chr2,215355750,220541652,0.275
-chr2,223904723,227309110,0.54
-chr2,231954973,238676824,-0.803
-chr3,41265,7536287,-0.1
-chr3,9209200,12874260,-0.032
-chr3,20275423,21224983,0.025
-chr3,24576796,27383356,1.012
-chr3,32823149,34412781,-0.017
-chr3,36448788,36687435,0.766
-chr3,41936936,52261908,-0.113
-chr3,62748057,68378106,0.709
-chr3,77350792,81671448,0.818
-chr3,82278378,91359593,0.148
-chr3,96857441,99550879,-0.521
-chr3,102259853,103249489,0.414
-chr3,106508525,113577062,-0.407
-chr3,120595816,125940422,0.435
-chr3,141186269,156892184,-0.117
-chr3,162717363,171927038,-0.025
-chr3,173752572,179672179,-0.198
-chr3,180057513,183955507,0.156
-chr3,189545792,193303361,-0.267
-chr3,194479124,195787419,0.376
-chr3,195920470,196494524,0.338
-chr4,3571886,7801048,-0.436
-chr4,24973615,30857176,-0.106
-chr4,31687134,34153866,0.596
-chr4,37900591,43516257,-0.656
-chr4,44079205,49009677,-0.583
-chr4,49432362,56749993,0.265
-chr4,61688309,65526097,0.848
-chr4,67867297,77493244,0.613
-chr4,81786770,82871005,0.072
-chr4,83903968,101929504,-0.243
-chr4,107359672,108126275,-0.335
-chr4,109857325,110190433,0.333
-chr4,113624692,114341882,-1.307
-chr4,116193160,118847502,0.154
-chr4,119645495,123312193,-0.274
-chr4,144302578,147735873,-0.282
-chr4,148648699,154037057,-0.549
-chr4,159901876,160863881,-0.162
-chr4,161026788,181261533,0.064
-chr4,183489494,183702004,0.452
-chr5,9838473,14661835,0.467
-chr5,16026400,24506389,-0.212
-chr5,33762291,36818170,0.864
-chr5,38314173,40564712,0.135
-chr5,42714524,46771119,0.296
-chr5,65588996,72015486,-0.103
-chr5,77404201,84595999,-0.165
-chr5,86665564,92016250,-0.731
-chr5,93952187,103903146,-0.109
-chr5,106832161,110313505,-0.027
-chr5,110647877,122086277,-0.138
-chr5,122865681,124213372,-0.076
-chr5,127501081,129957214,-0.289
-chr5,137231905,137333441,0.18
-chr5,141414999,144564511,0.441
-chr5,145772514,147254761,0.12
-chr5,148417834,154717650,0.189
-chr5,168220992,170752342,0.524
-chr5,176600775,178727597,0.315
-chr6,8113503,13764017,0.242
-chr6,13859442,16708628,-0.113
-chr6,17274225,21618184,0.166
-chr6,25541024,25551282,-0.006
-chr6,35253611,43202890,0.578
-chr6,46339048,46453558,0.034
-chr6,48867662,52944582,0.017
-chr6,55395625,58178153,0.141
-chr6,70450829,75484864,0.205
-chr6,86523512,95964425,-0.114
-chr6,97531613,98021992,-0.031
-chr6,102978978,103241688,0.042
-chr6,116832113,121971473,-0.603
-chr6,123462592,124128189,-0.399
-chr6,125367926,130724494,-0.365
-chr6,133224500,136386538,0.581
-chr6,141319082,151935424,-0.238
-chr6,160299660,166061117,-0.108
-chr7,3169912,4292324,0.109
-chr7,6437293,8024762,0.492
-chr7,11635497,21399952,-0.107
-chr7,23976588,39560200,-0.47
-chr7,41273165,43514382,0.631
-chr7,44570779,54399176,-0.061
-chr7,56847169,61830553,0.721
-chr7,64273647,74898597,-0.593
-chr7,75459574,75489067,-0.321
-chr7,78970990,81302824,-0.217
-chr7,86667885,87245984,-0.102
-chr7,88420966,96309149,0.123
-chr7,101692132,106197988,0.314
-chr7,117139001,120050460,-0.434
-chr7,124307293,136319083,-0.617
-chr7,139788306,143982140,0.008
-chr7,146159539,149113475,-0.309
-chr8,3747778,4751898,0.409
-chr8,21662429,21817884,-0.095
-chr8,21904130,27475641,-0.313
-chr8,40877349,41059087,-0.182
-chr8,47234627,51998015,-0.414
-chr8,57119925,62044942,-0.688
-chr8,62274632,65250146,0.8
-chr8,76247303,86230137,-0.434
-chr8,87915115,88872008,0.086
-chr8,98638736,100083442,0.347
-chr8,103552777,106841699,0.347
-chr8,113432182,116189538,-0.729
-chr8,126232174,128479789,0.05
-chr8,135502912,141483853,0.044
-chr8,142438057,142770808,-0.323
-chr9,4097198,4567121,-0.078
-chr9,11080511,16433419,0.037
-chr9,17817713,19222532,-0.319
-chr9,26852646,35308717,-0.08
-chr9,36943256,37461459,0.228
-chr9,38806703,46887862,0.301
-chr9,53585876,60211574,-0.253
-chr9,62096862,62880314,-0.019
-chr9,63792009,74475962,0.09
-chr9,75463624,80835258,-0.097
-chr9,84914847,88025081,-0.016
-chr9,88265785,89340963,-0.083
-chr9,89352351,96200960,0.081
-chr9,119405198,123617795,-0.234
-chr9,130942865,135954413,0.511
-chr10,11358769,12942805,-0.252
-chr10,13433532,16677717,-0.433
-chr10,17126906,22727984,-0.237
-chr10,24833044,28211378,0.62
-chr10,28462806,32334022,-0.312
-chr10,36024038,39852907,-0.46
-chr10,40688894,43674824,-0.404
-chr10,44429854,45847836,-0.34
-chr10,52064751,55516030,-0.207
-chr10,61459889,75113750,0.341
-chr10,99127654,105306289,0.01
-chr10,106395732,108742014,-0.771
-chr10,112459201,119213046,-0.413
-chr10,123140706,129611957,0.228
-chr11,2107177,7706239,-0.039
-chr11,13192066,13853785,-0.217
-chr11,17710636,18654576,-0.74
-chr11,19787214,42229003,-0.241
-chr11,45148937,46963564,0.619
-chr11,47913973,52236283,0.164
-chr11,53255061,64965486,-0.827
-chr11,66654526,70214826,0.436
-chr11,82388816,85290293,0.029
-chr11,88697593,91285192,0.457
-chr11,96222813,100006806,-0.313
-chr11,105059158,111154380,-1.665
-chr11,113252921,126094411,0.535
-chr11,126195984,133656420,-0.237
-chr12,2140357,8124494,-0.63
-chr12,8481855,13278801,0.001
-chr12,16482556,16501810,-0.584
-chr12,18189127,19167229,-0.835
-chr12,20161696,34123376,-0.318
-chr12,37098091,49929532,-0.784
-chr12,51716741,66821748,-0.484
-chr12,74337445,77354505,0.273
-chr12,82322826,91236305,-0.274
-chr12,97165320,97697098,0.968
-chr12,101131470,101487170,0.675
-chr12,103893240,104553202,-0.013
-chr12,115261860,120141658,-0.341
-chr12,121910350,129317420,1.143
-chr13,3020527,11583520,-0.17
-chr13,16675337,25098722,-0.191
-chr13,27865753,36094454,-0.769
-chr13,36832130,38446249,-0.529
-chr13,38713696,38878954,1.044
-chr13,41715297,48246977,0.158
-chr13,57569190,66312928,0.298
-chr13,66413994,67889022,0.044
-chr13,67897486,78323475,-0.04
-chr13,83190448,95422418,0.373
-chr13,96499375,100777935,0.914
-chr13,109165536,110755802,1.2
-chr14,8989589,14486005,-0.08
-chr14,15783272,16480106,-0.636
-chr14,18054574,22072400,0.04
-chr14,33758067,37359211,0.002
-chr14,41785827,45638187,-0.203
-chr14,47827274,56630620,0.356
-chr14,58882484,60643107,-0.332
-chr14,66536424,70803809,0.01
-chr14,74755604,88376516,0.681
-chr14,92530099,94731872,-0.708
-chr14,100865224,107345148,0.028
-chr15,6061884,7454075,0.754
-chr15,13012951,13578010,0.027
-chr15,17509690,18436574,-0.107
-chr15,24154551,24950016,0.556
-chr15,45577411,49972852,-0.552
-chr15,54821862,60513431,-0.094
-chr15,61401466,62229749,0.301
-chr15,65956400,69819470,0.536
-chr15,82236718,83087032,1.558
-chr15,83465876,94595101,-0.118
-chr15,99440839,101675386,0.456
-chr16,7535944,9115707,0.065
-chr16,17014551,19850065,-0.359
-chr16,19862223,21206927,-0.095
-chr16,29824797,34442285,0.626
-chr16,36058680,36789638,-0.391
-chr16,38595137,38708114,-0.514
-chr16,48371561,56143490,-0.273
-chr16,57372881,61749444,-0.234
-chr16,67947663,71495087,-0.506
-chr16,71508626,87024367,-0.398
-chr17,4435669,12821502,-0.039
-chr17,20383493,21006882,0.169
-chr17,21444595,21725371,0.04
-chr17,28326675,29161467,-0.033
-chr17,46024632,47212970,0.181
-chr17,49913273,55398987,0.271
-chr17,60876516,65499081,-0.495
-chr17,66948994,68352542,-0.002
-chr17,71445803,78986215,-0.659
-chr18,6721374,10133123,-0.309
-chr18,18054553,20073004,0.21
-chr18,21201200,21763492,0.351
-chr18,27603960,32926494,0.364
-chr18,37833982,39689405,0.047
-chr18,42693847,46775739,-0.196
-chr18,47981882,61731089,-0.256
-chr18,63673025,65640088,-0.624
-chr19,1404260,6690714,0.4
-chr19,12966555,14159540,0.077
-chr19,15937698,16187641,0.59
-chr19,16900979,25599602,0.063
-chr19,26008632,39354653,0.551
-chr19,47230743,57276619,0.256
-chr20,4895724,8241294,-0.12
-chr20,15046370,19931059,0.293
-chr20,31716037,33220866,-0.252
-chr20,35165330,35455420,-0.031
-chr20,40245392,52302426,0.629
-chr20,53495770,53515645,-0.556
-chr20,55339712,58226191,0.502
-chr21,5754034,14488244,-0.164
-chr21,21357447,22169439,-0.644
-chr21,25863459,30101275,-0.015
-chr21,30979576,35262274,0.684
-chr21,39690804,46570164,-0.82
-chr22,404412,6350485,-0.175
-chr22,11779791,13256687,1.066
-chr22,30318147,32942557,-0.05
-chr22,33176456,37542047,0.564
-chr22,39649047,43170028,-0.086
-chr22,47989855,49459225,0.135
-chrX,1269713,3285766,0.142
-chrX,6275858,22012280,-0.296
-chrX,26672581,28561430,-0.581
-chrX,32559264,39227096,-1.092
-chrX,41115255,56579494,-0.124
-chrX,58235767,66032465,-0.288
-chrX,79565144,89385330,-0.528
-chrX,103198320,106747848,0.228
-chrX,110590607,111033936,-0.401
-chrX,113013560,113454221,-0.583
-chrX,113746797,113809707,-0.484
-chrX,114284786,116192387,0.074
-chrX,117281713,120743598,0.071
-chrX,120979629,135143794,0.203
-chrX,136456234,138250972,-0.706
-chrX,142586069,151893113,0.046
-chrY,2522441,7953396,-0.408
-chrY,9192782,14994532,0.785
-chrY,16817116,20261287,-0.581
-chrY,31438089,34043037,-0.413
-chrY,34322717,41863233,-0.22
-chrY,45312038,59256751,0.508
+chr,start,end,value1
+chr1,1769292,1796134,0.339
+chr1,4881594,5495466,1.005
+chr1,9076857,21130138,-0.247
+chr1,27279764,27941507,0.092
+chr1,28351697,32840519,-0.677
+chr1,35166605,38111246,0.344
+chr1,40292931,41985400,0.305
+chr1,45292238,48455065,0.39
+chr1,53310920,59664194,-0.053
+chr1,79176411,79317400,0.277
+chr1,85531975,88126222,0.669
+chr1,89183035,90158055,0.301
+chr1,96801993,98085385,-0.947
+chr1,100159477,105297002,-0.047
+chr1,108939731,118217823,0.172
+chr1,121996108,124081889,0.36
+chr1,125781949,127903762,-0.444
+chr1,136680850,147056798,-0.076
+chr1,153493933,161364687,0.272
+chr1,165179537,168710977,-0.439
+chr1,169920959,183685019,0.455
+chr1,183855350,191962189,0.301
+chr1,204581126,211738039,0.459
+chr1,214787908,225469517,-0.48
+chr1,238342512,239213312,-0.124
+chr1,246633978,248514622,0.174
+chr2,5800619,8815540,0.088
+chr2,10440452,10893876,-0.891
+chr2,13344028,15484290,0.541
+chr2,27281028,31116604,-0.345
+chr2,34951004,48365683,-0.014
+chr2,58896960,59391876,0.003
+chr2,73557779,74452780,0.555
+chr2,79352042,81631595,0.166
+chr2,87692990,92313841,-0.478
+chr2,93128500,94693099,0.169
+chr2,99188634,99237967,0.105
+chr2,101274718,105953782,-0.053
+chr2,109056713,111905114,0.441
+chr2,113531655,115105102,-0.087
+chr2,131332999,136237323,0.405
+chr2,148820988,158596944,-0.412
+chr2,158954754,160585963,0.33
+chr2,160955450,162169099,-0.041
+chr2,177649992,179781181,0.189
+chr2,181216838,183176883,-0.715
+chr2,202881605,205915513,0.805
+chr2,209547931,210542713,-0.096
+chr2,215355750,220541652,0.275
+chr2,223904723,227309110,0.54
+chr2,231954973,238676824,-0.803
+chr3,41265,7536287,-0.1
+chr3,9209200,12874260,-0.032
+chr3,20275423,21224983,0.025
+chr3,24576796,27383356,1.012
+chr3,32823149,34412781,-0.017
+chr3,36448788,36687435,0.766
+chr3,41936936,52261908,-0.113
+chr3,62748057,68378106,0.709
+chr3,77350792,81671448,0.818
+chr3,82278378,91359593,0.148
+chr3,96857441,99550879,-0.521
+chr3,102259853,103249489,0.414
+chr3,106508525,113577062,-0.407
+chr3,120595816,125940422,0.435
+chr3,141186269,156892184,-0.117
+chr3,162717363,171927038,-0.025
+chr3,173752572,179672179,-0.198
+chr3,180057513,183955507,0.156
+chr3,189545792,193303361,-0.267
+chr3,194479124,195787419,0.376
+chr3,195920470,196494524,0.338
+chr4,3571886,7801048,-0.436
+chr4,24973615,30857176,-0.106
+chr4,31687134,34153866,0.596
+chr4,37900591,43516257,-0.656
+chr4,44079205,49009677,-0.583
+chr4,49432362,56749993,0.265
+chr4,61688309,65526097,0.848
+chr4,67867297,77493244,0.613
+chr4,81786770,82871005,0.072
+chr4,83903968,101929504,-0.243
+chr4,107359672,108126275,-0.335
+chr4,109857325,110190433,0.333
+chr4,113624692,114341882,-1.307
+chr4,116193160,118847502,0.154
+chr4,119645495,123312193,-0.274
+chr4,144302578,147735873,-0.282
+chr4,148648699,154037057,-0.549
+chr4,159901876,160863881,-0.162
+chr4,161026788,181261533,0.064
+chr4,183489494,183702004,0.452
+chr5,9838473,14661835,0.467
+chr5,16026400,24506389,-0.212
+chr5,33762291,36818170,0.864
+chr5,38314173,40564712,0.135
+chr5,42714524,46771119,0.296
+chr5,65588996,72015486,-0.103
+chr5,77404201,84595999,-0.165
+chr5,86665564,92016250,-0.731
+chr5,93952187,103903146,-0.109
+chr5,106832161,110313505,-0.027
+chr5,110647877,122086277,-0.138
+chr5,122865681,124213372,-0.076
+chr5,127501081,129957214,-0.289
+chr5,137231905,137333441,0.18
+chr5,141414999,144564511,0.441
+chr5,145772514,147254761,0.12
+chr5,148417834,154717650,0.189
+chr5,168220992,170752342,0.524
+chr5,176600775,178727597,0.315
+chr6,8113503,13764017,0.242
+chr6,13859442,16708628,-0.113
+chr6,17274225,21618184,0.166
+chr6,25541024,25551282,-0.006
+chr6,35253611,43202890,0.578
+chr6,46339048,46453558,0.034
+chr6,48867662,52944582,0.017
+chr6,55395625,58178153,0.141
+chr6,70450829,75484864,0.205
+chr6,86523512,95964425,-0.114
+chr6,97531613,98021992,-0.031
+chr6,102978978,103241688,0.042
+chr6,116832113,121971473,-0.603
+chr6,123462592,124128189,-0.399
+chr6,125367926,130724494,-0.365
+chr6,133224500,136386538,0.581
+chr6,141319082,151935424,-0.238
+chr6,160299660,166061117,-0.108
+chr7,3169912,4292324,0.109
+chr7,6437293,8024762,0.492
+chr7,11635497,21399952,-0.107
+chr7,23976588,39560200,-0.47
+chr7,41273165,43514382,0.631
+chr7,44570779,54399176,-0.061
+chr7,56847169,61830553,0.721
+chr7,64273647,74898597,-0.593
+chr7,75459574,75489067,-0.321
+chr7,78970990,81302824,-0.217
+chr7,86667885,87245984,-0.102
+chr7,88420966,96309149,0.123
+chr7,101692132,106197988,0.314
+chr7,117139001,120050460,-0.434
+chr7,124307293,136319083,-0.617
+chr7,139788306,143982140,0.008
+chr7,146159539,149113475,-0.309
+chr8,3747778,4751898,0.409
+chr8,21662429,21817884,-0.095
+chr8,21904130,27475641,-0.313
+chr8,40877349,41059087,-0.182
+chr8,47234627,51998015,-0.414
+chr8,57119925,62044942,-0.688
+chr8,62274632,65250146,0.8
+chr8,76247303,86230137,-0.434
+chr8,87915115,88872008,0.086
+chr8,98638736,100083442,0.347
+chr8,103552777,106841699,0.347
+chr8,113432182,116189538,-0.729
+chr8,126232174,128479789,0.05
+chr8,135502912,141483853,0.044
+chr8,142438057,142770808,-0.323
+chr9,4097198,4567121,-0.078
+chr9,11080511,16433419,0.037
+chr9,17817713,19222532,-0.319
+chr9,26852646,35308717,-0.08
+chr9,36943256,37461459,0.228
+chr9,38806703,46887862,0.301
+chr9,53585876,60211574,-0.253
+chr9,62096862,62880314,-0.019
+chr9,63792009,74475962,0.09
+chr9,75463624,80835258,-0.097
+chr9,84914847,88025081,-0.016
+chr9,88265785,89340963,-0.083
+chr9,89352351,96200960,0.081
+chr9,119405198,123617795,-0.234
+chr9,130942865,135954413,0.511
+chr10,11358769,12942805,-0.252
+chr10,13433532,16677717,-0.433
+chr10,17126906,22727984,-0.237
+chr10,24833044,28211378,0.62
+chr10,28462806,32334022,-0.312
+chr10,36024038,39852907,-0.46
+chr10,40688894,43674824,-0.404
+chr10,44429854,45847836,-0.34
+chr10,52064751,55516030,-0.207
+chr10,61459889,75113750,0.341
+chr10,99127654,105306289,0.01
+chr10,106395732,108742014,-0.771
+chr10,112459201,119213046,-0.413
+chr10,123140706,129611957,0.228
+chr11,2107177,7706239,-0.039
+chr11,13192066,13853785,-0.217
+chr11,17710636,18654576,-0.74
+chr11,19787214,42229003,-0.241
+chr11,45148937,46963564,0.619
+chr11,47913973,52236283,0.164
+chr11,53255061,64965486,-0.827
+chr11,66654526,70214826,0.436
+chr11,82388816,85290293,0.029
+chr11,88697593,91285192,0.457
+chr11,96222813,100006806,-0.313
+chr11,105059158,111154380,-1.665
+chr11,113252921,126094411,0.535
+chr11,126195984,133656420,-0.237
+chr12,2140357,8124494,-0.63
+chr12,8481855,13278801,0.001
+chr12,16482556,16501810,-0.584
+chr12,18189127,19167229,-0.835
+chr12,20161696,34123376,-0.318
+chr12,37098091,49929532,-0.784
+chr12,51716741,66821748,-0.484
+chr12,74337445,77354505,0.273
+chr12,82322826,91236305,-0.274
+chr12,97165320,97697098,0.968
+chr12,101131470,101487170,0.675
+chr12,103893240,104553202,-0.013
+chr12,115261860,120141658,-0.341
+chr12,121910350,129317420,1.143
+chr13,3020527,11583520,-0.17
+chr13,16675337,25098722,-0.191
+chr13,27865753,36094454,-0.769
+chr13,36832130,38446249,-0.529
+chr13,38713696,38878954,1.044
+chr13,41715297,48246977,0.158
+chr13,57569190,66312928,0.298
+chr13,66413994,67889022,0.044
+chr13,67897486,78323475,-0.04
+chr13,83190448,95422418,0.373
+chr13,96499375,100777935,0.914
+chr13,109165536,110755802,1.2
+chr14,8989589,14486005,-0.08
+chr14,15783272,16480106,-0.636
+chr14,18054574,22072400,0.04
+chr14,33758067,37359211,0.002
+chr14,41785827,45638187,-0.203
+chr14,47827274,56630620,0.356
+chr14,58882484,60643107,-0.332
+chr14,66536424,70803809,0.01
+chr14,74755604,88376516,0.681
+chr14,92530099,94731872,-0.708
+chr14,100865224,107345148,0.028
+chr15,6061884,7454075,0.754
+chr15,13012951,13578010,0.027
+chr15,17509690,18436574,-0.107
+chr15,24154551,24950016,0.556
+chr15,45577411,49972852,-0.552
+chr15,54821862,60513431,-0.094
+chr15,61401466,62229749,0.301
+chr15,65956400,69819470,0.536
+chr15,82236718,83087032,1.558
+chr15,83465876,94595101,-0.118
+chr15,99440839,101675386,0.456
+chr16,7535944,9115707,0.065
+chr16,17014551,19850065,-0.359
+chr16,19862223,21206927,-0.095
+chr16,29824797,34442285,0.626
+chr16,36058680,36789638,-0.391
+chr16,38595137,38708114,-0.514
+chr16,48371561,56143490,-0.273
+chr16,57372881,61749444,-0.234
+chr16,67947663,71495087,-0.506
+chr16,71508626,87024367,-0.398
+chr17,4435669,12821502,-0.039
+chr17,20383493,21006882,0.169
+chr17,21444595,21725371,0.04
+chr17,28326675,29161467,-0.033
+chr17,46024632,47212970,0.181
+chr17,49913273,55398987,0.271
+chr17,60876516,65499081,-0.495
+chr17,66948994,68352542,-0.002
+chr17,71445803,78986215,-0.659
+chr18,6721374,10133123,-0.309
+chr18,18054553,20073004,0.21
+chr18,21201200,21763492,0.351
+chr18,27603960,32926494,0.364
+chr18,37833982,39689405,0.047
+chr18,42693847,46775739,-0.196
+chr18,47981882,61731089,-0.256
+chr18,63673025,65640088,-0.624
+chr19,1404260,6690714,0.4
+chr19,12966555,14159540,0.077
+chr19,15937698,16187641,0.59
+chr19,16900979,25599602,0.063
+chr19,26008632,39354653,0.551
+chr19,47230743,57276619,0.256
+chr20,4895724,8241294,-0.12
+chr20,15046370,19931059,0.293
+chr20,31716037,33220866,-0.252
+chr20,35165330,35455420,-0.031
+chr20,40245392,52302426,0.629
+chr20,53495770,53515645,-0.556
+chr20,55339712,58226191,0.502
+chr21,5754034,14488244,-0.164
+chr21,21357447,22169439,-0.644
+chr21,25863459,30101275,-0.015
+chr21,30979576,35262274,0.684
+chr21,39690804,46570164,-0.82
+chr22,404412,6350485,-0.175
+chr22,11779791,13256687,1.066
+chr22,30318147,32942557,-0.05
+chr22,33176456,37542047,0.564
+chr22,39649047,43170028,-0.086
+chr22,47989855,49459225,0.135
+chrX,1269713,3285766,0.142
+chrX,6275858,22012280,-0.296
+chrX,26672581,28561430,-0.581
+chrX,32559264,39227096,-1.092
+chrX,41115255,56579494,-0.124
+chrX,58235767,66032465,-0.288
+chrX,79565144,89385330,-0.528
+chrX,103198320,106747848,0.228
+chrX,110590607,111033936,-0.401
+chrX,113013560,113454221,-0.583
+chrX,113746797,113809707,-0.484
+chrX,114284786,116192387,0.074
+chrX,117281713,120743598,0.071
+chrX,120979629,135143794,0.203
+chrX,136456234,138250972,-0.706
+chrX,142586069,151893113,0.046
+chrY,2522441,7953396,-0.408
+chrY,9192782,14994532,0.785
+chrY,16817116,20261287,-0.581
+chrY,31438089,34043037,-0.413
+chrY,34322717,41863233,-0.22
+chrY,45312038,59256751,0.508
diff --git a/example_data/point_cex.csv b/example_data/point_cex.csv
new file mode 100644
index 0000000..e573a74
--- /dev/null
+++ b/example_data/point_cex.csv
@@ -0,0 +1,206 @@
+chr,start,end,value,cex
+chr1,1326341,1845331,-0.374,0.5
+chr1,9901462,15656953,-0.321,0.3
+chr1,18241935,21630011,0.172,0.5
+chr1,24382163,28861398,0.125,1.1
+chr1,32942869,41209388,0.685,1
+chr1,46216384,55439876,0.035,0.5
+chr1,81705636,88811243,0.379,1
+chr1,93152286,94686158,0.342,0.3
+chr1,95022307,99479268,0.361,0.9
+chr1,115896955,121625762,0.143,0.6
+chr1,134109100,142054313,-0.34,0.5
+chr1,157142650,174589616,-0.152,0.5
+chr1,188102566,195885123,0.945,1.1
+chr1,200501439,213479445,0.291,0.8
+chr1,213803763,219917876,0.184,0.2
+chr1,224968242,235113661,0.273,1.1
+chr2,17619104,25624262,-0.194,0.6
+chr2,26946941,27889388,0.27,0.6
+chr2,36581630,49960898,0.704,0.9
+chr2,60265985,73607290,0.463,0.2
+chr2,87701608,90075101,-1.041,0.8
+chr2,110343010,111267455,-0.676,0.4
+chr2,114398293,117654611,-0.048,0.5
+chr2,119523100,122348678,0.362,0.6
+chr2,125341178,132821518,-1.365,0.3
+chr2,133894765,144669877,-0.448,0.8
+chr2,167864841,172556781,0.152,0.4
+chr2,174383868,181539744,-0.18,0.4
+chr2,182085100,198841169,-0.515,1
+chr2,202285164,203161623,-0.309,0.9
+chr2,215592651,216177694,0.232,1.1
+chr2,235584082,238630808,-0.543,1.1
+chr3,1720430,4389146,-0.319,0.6
+chr3,6104592,7216808,0.315,0.6
+chr3,24441213,26466830,-0.548,0.8
+chr3,32456756,40201949,-0.536,0.9
+chr3,42857600,54307189,-0.082,1
+chr3,55308253,56002777,0.373,0.3
+chr3,62273545,66710863,0.012,1
+chr3,89638197,109730532,-0.295,0.6
+chr3,122764457,129053648,0.246,0.3
+chr3,134978020,159938136,0.701,0.8
+chr3,172872113,174316318,0.544,1.1
+chr3,187214026,187574879,0.074,0.5
+chr3,191144483,195412253,0.294,0.6
+chr4,8327054,16538974,0.448,0.5
+chr4,29870261,39830090,-0.005,1
+chr4,48931360,71216714,-0.308,1.1
+chr4,71684188,73780949,-0.816,0.2
+chr4,79094340,95166839,0.79,1.1
+chr4,95407609,105296508,-0.776,0.2
+chr4,110546052,121776184,0.34,0.8
+chr4,125003449,129748185,-0.027,0.8
+chr4,131353052,131632149,0.326,0.4
+chr4,148388507,150759369,-0.054,0.3
+chr4,152887991,158279094,0.067,0.7
+chr4,158479556,159523683,-0.318,0.9
+chr4,174237428,188431586,-0.641,0.3
+chr5,12468721,13999061,0.089,0.8
+chr5,17022727,23521392,0.269,0.3
+chr5,29951177,37189932,0.006,1
+chr5,38376403,69502355,-1.178,0.7
+chr5,80429105,82562405,0.493,0.8
+chr5,84154753,85582103,-0.204,0.4
+chr5,102878602,105170168,0.552,1
+chr5,108989096,109634525,-0.3,0.8
+chr5,112025530,121944010,0.045,0.8
+chr5,123569026,131590932,0.409,0.2
+chr5,132702048,151686517,0.326,0.7
+chr5,161699677,171286911,-0.041,0.8
+chr6,2364010,12463640,-0.722,1.1
+chr6,18253629,18882306,-1.5,0.6
+chr6,19562012,22483291,0.124,0.6
+chr6,28165353,50787369,-0.921,0.3
+chr6,59155761,73523044,-0.212,1
+chr6,80965723,106304591,-0.496,0.2
+chr6,122073489,124103544,-0.297,1
+chr6,124945816,130342823,-0.81,0.7
+chr6,132054061,139358045,-0.173,0.8
+chr6,144677219,164596152,0.118,0.6
+chr6,169038933,170564983,-0.021,0.9
+chr7,15520749,17811608,0.528,0.8
+chr7,28354668,29875634,-0.283,0.3
+chr7,37035042,50136290,0.395,0.5
+chr7,57644160,62126738,0.531,0.2
+chr7,63210779,65246252,0.3,1
+chr7,68904134,82043966,-0.242,0.6
+chr7,82438627,100397299,-1.102,0.8
+chr7,105181626,105586456,-0.148,0.3
+chr7,120338985,138461141,-0.798,0.8
+chr7,139359958,140372659,-0.475,1.1
+chr7,141089629,152324626,-0.806,0.4
+chr8,12693274,12839095,0.132,0.3
+chr8,18979109,18979534,-0.151,0.2
+chr8,22269253,27507961,-0.566,0.5
+chr8,28123654,34921352,0.037,0.4
+chr8,36094014,52303979,0.257,0.2
+chr8,67668991,75388657,0.628,1.1
+chr8,80117251,80588817,-0.268,0.9
+chr8,83270349,89446155,0.076,0.9
+chr8,105337814,117683914,0.193,0.2
+chr8,128559296,145859165,1.047,0.7
+chr9,10666161,31275363,0.369,1.1
+chr9,41851468,46638111,-0.509,1.1
+chr9,53701451,53789200,-0.063,0.6
+chr9,77113310,77937060,0.199,0.7
+chr9,86712473,88153759,-0.311,0.2
+chr9,93703211,94542402,-0.249,0.5
+chr9,107883332,110047750,-0.054,0.4
+chr9,116335112,117161088,0.127,0.6
+chr9,118407745,131099407,-0.508,0.8
+chr10,3000899,3557086,0.137,0.6
+chr10,10315034,15767059,-0.13,1.1
+chr10,16837268,18514108,0.443,1.1
+chr10,36896602,38921156,-0.395,0.8
+chr10,51437435,52634627,-0.566,0.7
+chr10,58169733,64930279,0.692,1.1
+chr10,85626147,106468710,-0.562,0.9
+chr10,111644684,115317423,-0.135,0.6
+chr10,124826017,125985955,0.254,0.9
+chr11,14370138,25443041,-0.481,0.2
+chr11,32613871,43375759,0.73,0.4
+chr11,47007466,49413023,-0.519,0.2
+chr11,49841505,51343229,-0.337,0.9
+chr11,51949023,77920360,-0.429,0.6
+chr11,85596787,86623843,-0.185,0.5
+chr11,93944819,99769310,-0.831,1
+chr11,109440465,122934543,0.343,0.7
+chr11,126584440,134531093,-0.003,0.6
+chr12,4451948,9814973,-0.204,1.1
+chr12,19124435,26711454,-0.102,0.8
+chr12,28819897,32673848,1.166,1.1
+chr12,36149161,44681221,-0.087,0.3
+chr12,46273817,78607399,0.621,0.9
+chr12,87167155,91585057,0.218,0.3
+chr12,98084970,103695651,-0.083,0.8
+chr12,105195161,128093257,0.152,1
+chr12,130624019,132771980,-0.5,0.4
+chr13,6738170,12621896,-0.144,1.1
+chr13,17763002,24343931,0.084,0.7
+chr13,35515099,49740047,-0.648,0.2
+chr13,62884318,66079294,0.548,1
+chr13,76226956,83172357,1.275,0.2
+chr13,87084786,87390541,-0.405,1
+chr13,91496291,95376299,-0.021,0.3
+chr13,95474525,96377242,0.026,0.2
+chr14,7500493,7535068,-0.043,0.3
+chr14,12031077,16924632,0.164,0.6
+chr14,20212443,21044470,0.633,0.2
+chr14,28374360,38061314,-0.642,0.2
+chr14,72494365,80878941,-0.03,0.9
+chr14,85964839,91032754,0.907,0.8
+chr14,97123106,105349031,-0.173,1
+chr15,22693853,28087913,0.589,0.5
+chr15,31736909,32051328,-0.59,1
+chr15,33033257,45702821,-0.11,1
+chr15,49249655,51112085,0.613,0.9
+chr15,52276275,53666229,-0.819,1.1
+chr15,65564011,66987295,-0.103,0.6
+chr15,75992012,85033915,-0.2,1
+chr16,2617222,5868173,0.181,0.6
+chr16,30006173,32968953,0.071,0.3
+chr16,34638231,55199555,-0.067,0.3
+chr16,60968698,61713987,-0.21,0.9
+chr16,71792676,72061492,0.561,1
+chr16,77053101,83210965,0.043,0.3
+chr17,17775297,21142625,0.104,1.1
+chr17,23487954,34893668,0.332,0.7
+chr17,41427326,42658933,-0.989,0.7
+chr17,55603500,57903816,0.067,0.5
+chr17,77890495,78217067,0.142,0.8
+chr18,4034888,4580092,-0.707,0.5
+chr18,11768860,12324630,-1.008,0.4
+chr18,41471294,48259874,-0.147,1.1
+chr18,52023489,63421913,-0.907,0.8
+chr18,68915697,71924945,-0.178,1.1
+chr19,6407589,8284307,-0.106,0.2
+chr19,30293583,30578901,-0.062,0.8
+chr19,30687734,50871137,1.936,0.8
+chr19,52794981,57710285,0.769,0.3
+chr20,17897237,22638184,-0.49,0.7
+chr20,29185650,36391359,-0.619,0.7
+chr20,40330513,41312079,-1.095,0.3
+chr20,59680437,60971271,0.364,0.3
+chr21,1076109,4926899,0.157,0.6
+chr21,6414687,9489750,-0.167,0.2
+chr21,15279846,45050150,-1.01,0.3
+chr22,7917636,9496512,0.174,1.1
+chr22,14472530,18094482,-0.301,0.4
+chr22,24269575,35963710,1.06,0.9
+chr22,35967465,41554641,0.072,0.6
+chrX,16663828,23055346,-0.175,0.2
+chrX,26677107,27619078,0.243,1
+chrX,30245006,48684010,0.065,0.7
+chrX,52915745,58828262,-0.435,1.1
+chrX,75929486,91403416,1.104,1.1
+chrX,95332964,109465079,-0.168,0.7
+chrX,110745274,111643759,-0.227,1
+chrX,119873213,120835879,-0.474,0.3
+chrX,122166849,132482440,-0.113,0.7
+chrX,151722272,154708191,-0.206,0.6
+chrY,14848862,26264609,0.106,0.9
+chrY,31822183,36930562,-0.171,0.8
+chrY,39833388,45683289,0.788,0.5
+chrY,50959191,53006772,0.227,0.3
diff --git a/example_data/point_color.csv b/example_data/point_color.csv
new file mode 100644
index 0000000..229f238
--- /dev/null
+++ b/example_data/point_color.csv
@@ -0,0 +1,258 @@
+chr,start,end,value,color
+chr1,6098636,13915642,0.372,a
+chr1,42002814,45209039,-0.253,a
+chr1,49351404,52528510,-0.011,a
+chr1,64806490,66012454,-0.025,a
+chr1,82448410,86862907,0.477,a
+chr1,92542207,95289412,-0.489,a
+chr1,109977536,109997528,0.019,a
+chr1,111727382,116352256,0.126,a
+chr1,121435113,126591447,-0.622,a
+chr1,130456753,138124206,-0.848,a
+chr1,138261180,142675154,0.272,a
+chr1,144017961,151552421,-0.681,a
+chr1,152151397,153849879,0.064,a
+chr1,174395903,175552595,-0.29,a
+chr1,175759523,183932149,-0.79,a
+chr1,195756223,196747544,0.507,a
+chr1,197721485,205239181,0.276,a
+chr1,210385968,219187731,-0.536,a
+chr1,235332161,237132791,-0.71,a
+chr1,237308324,243097099,-0.262,a
+chr2,6038012,15130362,-0.056,a
+chr2,32290664,33601545,0.51,a
+chr2,48487442,59050719,-1.102,a
+chr2,60185323,63151735,-0.482,a
+chr2,67602246,72429676,-0.535,a
+chr2,73038031,77480992,-0.344,a
+chr2,82041195,97418191,-0.488,a
+chr2,99789270,117103744,0.029,a
+chr2,125909882,130240909,0.286,a
+chr2,135526018,139095703,0.563,a
+chr2,140344181,145272422,0.358,a
+chr2,156308310,159196135,0.404,a
+chr2,161117546,163563322,-0.94,a
+chr2,169378745,171425650,0.259,a
+chr2,182414526,183069700,-0.054,a
+chr2,185399462,185509780,-0.071,a
+chr2,187389292,202180746,0.569,a
+chr2,206729167,208415157,-0.42,a
+chr2,209831867,229081982,0.031,a
+chr2,240997990,241049612,0.124,a
+chr3,29525,3441533,0.631,a
+chr3,7353951,10933810,-0.191,a
+chr3,13676255,15767189,0.87,a
+chr3,19041811,23336773,0.777,a
+chr3,29154108,32168714,0.76,a
+chr3,45784076,51728018,0.232,a
+chr3,64072763,69590387,0.92,a
+chr3,96245796,98325392,0.272,a
+chr3,99991382,102644654,0.515,a
+chr3,103095002,114835648,-0.378,a
+chr3,114890574,118691379,0.528,a
+chr3,125002681,127956633,-0.193,a
+chr3,143090790,162746063,-0.102,a
+chr3,164276117,167379565,0.452,a
+chr3,176056642,177615939,0.052,a
+chr3,194255532,194347309,-0.035,a
+chr4,20907873,21945234,0.001,a
+chr4,23156859,28896996,0.855,a
+chr4,29963885,37799049,0.161,a
+chr4,37835955,41347315,-0.014,a
+chr4,47250712,49775935,-0.178,a
+chr4,51019863,78096045,-0.827,a
+chr4,87918380,89510620,-0.211,a
+chr4,92963013,96656317,-0.148,a
+chr4,107125173,107125346,0.75,b
+chr4,108358298,108681576,-0.442,b
+chr4,116714750,124422604,0.138,b
+chr4,127109822,130659420,0.739,b
+chr4,137668853,140089200,-0.448,b
+chr4,148294847,151603452,-0.227,b
+chr4,160334793,168756401,-0.887,b
+chr4,173552182,190978518,0.421,b
+chr5,794465,1018944,-0.908,b
+chr5,3522803,9531234,-0.005,b
+chr5,12951807,25492845,-0.777,b
+chr5,28562306,29224724,0.144,b
+chr5,42221973,46473009,-0.306,b
+chr5,47798932,52349935,0.371,b
+chr5,55221209,55378365,-0.471,b
+chr5,58894244,66529172,-0.421,b
+chr5,67320927,73716777,-0.641,b
+chr5,77401151,82120093,-0.127,b
+chr5,82946642,86128468,-0.279,b
+chr5,88760910,129112351,-0.6,b
+chr5,129939046,135687271,-0.382,b
+chr5,140076205,144183028,-0.027,b
+chr5,162430165,174432921,0.291,b
+chr6,6705555,19894881,-0.148,b
+chr6,21331709,43473976,-0.091,b
+chr6,44705415,44723831,-0.766,b
+chr6,48795835,59013017,-0.015,b
+chr6,62440399,73839150,0.367,b
+chr6,84735123,94757879,-0.012,b
+chr6,99766795,102712069,0.308,b
+chr6,109083511,124011228,-0.788,b
+chr6,124938996,129220802,0.24,b
+chr6,131582308,137716063,1.041,b
+chr6,137939067,144531032,0.698,b
+chr6,145994396,149277676,-0.328,b
+chr6,152604584,155833187,-0.025,b
+chr6,157080051,166688862,-0.235,b
+chr7,676663,5459368,-0.02,b
+chr7,7687765,24248755,-0.468,b
+chr7,39725886,41556670,0.795,b
+chr7,50470067,52844444,0.478,b
+chr7,57291616,66697407,0.265,b
+chr7,71886579,73758102,-0.34,b
+chr7,76629626,88180173,-0.204,b
+chr7,93177829,97370847,-0.251,b
+chr7,102286048,112142568,0.04,b
+chr7,124652425,129217130,0.289,b
+chr7,131552260,133590743,-0.859,b
+chr7,146991168,148481231,0.494,b
+chr7,153597343,158578465,0.03,b
+chr8,1878875,8868239,0.367,b
+chr8,21301663,22408273,-0.615,b
+chr8,23461293,25971623,0.15,b
+chr8,27358892,30253723,0.296,b
+chr8,41797923,48073386,-0.743,b
+chr8,53058942,57202560,-0.305,b
+chr8,58132856,67207657,-0.223,b
+chr8,70021857,81844661,-0.212,b
+chr8,91445262,93939960,0.927,b
+chr8,106450024,124086247,0.641,b
+chr8,124488664,131530678,0.235,b
+chr8,133435326,134030144,-0.34,b
+chr9,2273525,2506749,-0.516,b
+chr9,7754786,8039568,-0.132,b
+chr9,8290596,22658143,-0.598,c
+chr9,24382136,34055254,0.279,c
+chr9,41690302,49389656,-0.192,c
+chr9,81977704,84226103,-0.557,c
+chr9,87584385,94096488,-0.096,c
+chr9,99536871,101389691,1.272,c
+chr9,102089509,103894249,0.379,c
+chr9,105559366,109029714,-0.453,c
+chr9,110729753,120268457,0.047,c
+chr9,122947032,137245262,0.788,c
+chr10,9808489,24313199,-0.813,c
+chr10,26945193,30694671,0.502,c
+chr10,34999297,40395372,1.064,c
+chr10,44852002,50335457,-0.244,c
+chr10,53945385,56160425,0.344,c
+chr10,56434733,67249003,0.168,c
+chr10,77252737,80100767,-0.447,c
+chr10,90537920,102402851,0.593,c
+chr10,113663663,115029715,-0.498,c
+chr10,117247718,120072029,-0.809,c
+chr10,123812305,124325077,0.388,c
+chr11,3661329,8882109,0.201,c
+chr11,13464179,14282363,0.968,c
+chr11,29445330,29928968,0.993,c
+chr11,37919945,39377963,0.064,c
+chr11,40139815,43761430,0.443,c
+chr11,50864307,83748131,0.756,c
+chr11,89457643,95176724,-0.212,c
+chr11,97416973,98460719,0.531,c
+chr11,99603293,99781928,0.143,c
+chr11,103896975,105634811,0.38,c
+chr11,113552106,120421149,0.399,c
+chr12,1020028,12285711,-0.135,c
+chr12,15703595,18073480,0.174,c
+chr12,30341296,31136428,0.439,c
+chr12,31490112,33125578,0.993,c
+chr12,49328408,54661463,-0.094,c
+chr12,62490168,79281178,0.093,c
+chr12,88018489,96003434,0.328,c
+chr12,96513032,97487839,-1.061,c
+chr12,99324407,110120078,0.497,c
+chr12,112091738,114127747,0.053,c
+chr12,120197646,124641660,-0.244,c
+chr13,5567135,11361196,0.739,c
+chr13,15457648,24231604,0.178,c
+chr13,24722319,25136195,0.675,c
+chr13,27299925,48197974,-0.033,c
+chr13,53011649,64454859,-0.001,c
+chr13,70976663,76793246,0.061,c
+chr13,77257167,89930588,0.102,c
+chr13,90564761,100546046,0.174,c
+chr13,103286418,108767870,-0.621,c
+chr13,109802287,111663924,0.222,c
+chr14,2294260,10028459,-0.672,c
+chr14,13923050,15347246,0.454,c
+chr14,15500964,23482487,-0.109,c
+chr14,24131763,25978687,0.163,c
+chr14,30302516,33529436,0.749,c
+chr14,33787890,33825162,-0.478,c
+chr14,36804767,56052759,-0.11,c
+chr14,64463077,65250604,-1.262,c
+chr14,83499674,94881343,0.23,c
+chr15,753951,4887151,0.137,c
+chr15,12348590,13879916,-0.042,c
+chr15,19422087,20066189,-0.234,d
+chr15,20958909,21293578,-0.242,d
+chr15,40997961,44376979,-0.469,d
+chr15,55189209,57240906,-0.615,d
+chr15,62235677,62490934,0.175,d
+chr15,63292860,69886158,-0.329,d
+chr15,96931184,100976372,-1.255,d
+chr16,2445822,11132172,1.185,d
+chr16,12258278,13487089,0.554,d
+chr16,19005867,19726803,0.276,d
+chr16,22500976,28279223,0.791,d
+chr16,32145956,36006990,-0.086,d
+chr16,37513259,43348174,0.629,d
+chr16,45773700,53813909,-1.014,d
+chr16,59889312,83760991,-0.791,d
+chr17,2707074,10574880,0.052,d
+chr17,13511135,25781257,-0.189,d
+chr17,25999369,28871457,-0.433,d
+chr17,38668504,42095663,-0.105,d
+chr17,44369716,44760402,1.384,d
+chr17,61987500,65305289,-0.511,d
+chr17,72227811,77514513,-0.18,d
+chr18,2030209,8088502,0.411,d
+chr18,19746327,23627045,0.266,d
+chr18,24148499,25047776,0.185,d
+chr18,26675344,31550220,-0.691,d
+chr18,31785758,46995084,-0.784,d
+chr18,58937357,64767552,0.369,d
+chr18,68057468,73745556,-0.112,d
+chr19,1832870,5070496,0.047,d
+chr19,5802220,11914067,-0.037,d
+chr19,15621051,18254695,-0.062,d
+chr19,26133632,29564913,-0.052,d
+chr19,45334606,47627392,0.335,d
+chr20,10489293,17292509,-0.145,d
+chr20,21992985,25066330,0.101,d
+chr20,26489496,31510396,1.379,d
+chr20,47554939,49707316,-0.099,d
+chr20,53736517,61103545,0.239,d
+chr21,9964172,11707728,0.342,d
+chr21,15178366,17184791,-0.736,d
+chr21,19666441,23553784,-0.152,d
+chr21,38122516,41823542,-0.04,d
+chr22,1423079,8633931,0.413,d
+chr22,14867357,27010886,-0.345,d
+chr22,34933499,40166315,-0.337,d
+chr22,40400457,45063856,0.288,d
+chrX,270321,18697482,0.111,d
+chrX,20339860,22639653,-0.097,d
+chrX,23980222,46291248,0.113,d
+chrX,62161296,63436680,0.458,d
+chrX,67448276,69189722,0.47,d
+chrX,71174740,79720071,0.754,d
+chrX,91048806,97040281,-0.062,d
+chrX,100880185,105402373,0.504,d
+chrX,109907539,117665782,0.392,d
+chrX,122768441,129117188,0.006,d
+chrX,132366216,133419740,-0.351,d
+chrX,144393967,146154914,0.538,d
+chrX,146267574,152970760,0.775,d
+chrY,4886439,8740678,-0.54,d
+chrY,12046228,14825233,0.246,d
+chrY,15964514,20650840,0.036,d
+chrY,30359053,32853733,-0.286,d
+chrY,34769699,39644200,0.343,d
diff --git a/example_data/point_color_cex.csv b/example_data/point_color_cex.csv
new file mode 100644
index 0000000..f92f603
--- /dev/null
+++ b/example_data/point_color_cex.csv
@@ -0,0 +1,187 @@
+chr,start,end,value,color,cex
+chr1,8900700,9211013,-0.6,a,0.3
+chr1,38733680,54945292,0.233,a,1.1
+chr1,56997278,57258274,0.214,a,1
+chr1,63421486,66560161,-0.471,a,0.6
+chr1,83102162,84271822,-0.851,a,1.1
+chr1,92926675,98678200,0.476,a,0.6
+chr1,98981804,100132511,-0.096,a,0.4
+chr1,104577919,108563087,-0.824,a,0.6
+chr1,113099641,116822565,-0.07,a,0.2
+chr1,117614526,134553135,-0.445,a,0.4
+chr1,151455644,152847567,-0.26,a,0.9
+chr1,161929119,169125055,1.065,a,0.3
+chr1,171238052,180991124,0.614,a,0.5
+chr1,182109354,203419154,0.133,a,1.1
+chr1,218579599,228273403,0.005,a,0.7
+chr2,788879,22257665,0.356,a,1
+chr2,35278595,38986661,-0.142,a,0.9
+chr2,39732085,43715013,0.155,a,0.7
+chr2,50723330,59682820,0.17,a,0.8
+chr2,60994791,64329627,-0.605,a,0.9
+chr2,73228614,80457383,-0.009,a,0.2
+chr2,102422928,103352414,0.452,a,0.3
+chr2,104663957,111043962,0.202,a,0.3
+chr2,124737488,127675402,-0.289,a,0.9
+chr2,128082124,143243729,1.016,a,0.2
+chr2,165315545,170045137,-0.414,a,0.5
+chr2,192197568,194784953,0.921,a,1
+chr2,210975571,211533965,0.256,a,0.8
+chr2,211921787,213817976,-0.217,a,0.8
+chr3,2988577,10661381,0.341,a,0.6
+chr3,13044940,21640331,-0.633,a,1.1
+chr3,23700612,25438374,0.034,a,0.5
+chr3,25684474,27606095,-1.253,a,0.8
+chr3,27649423,32802810,0.253,a,0.5
+chr3,41919535,52487182,0.089,a,1
+chr3,64698949,67037249,0.583,a,1
+chr3,100932577,106051654,-0.517,a,0.7
+chr3,106297457,123340479,0.017,a,0.3
+chr3,139762270,140814845,-0.066,a,0.2
+chr3,144824708,151761069,0.152,a,0.5
+chr3,170440449,187060328,-0.491,a,0.2
+chr4,4237333,20005483,-0.514,a,0.3
+chr4,22528609,31979497,0.18,a,1
+chr4,33928984,35374992,0.493,a,0.5
+chr4,37661150,47882333,-0.002,a,0.4
+chr4,48016652,82831891,0.254,a,1.1
+chr4,99546227,104968650,-0.328,b,0.4
+chr4,108853456,109011269,1.018,b,0.5
+chr4,117215487,118406107,-0.466,b,0.6
+chr4,129292165,130811163,-0.052,b,0.5
+chr4,140497058,148071100,-1.351,b,1
+chr4,182757202,187635432,-0.114,b,1
+chr5,7014303,12796837,0.037,b,1.1
+chr5,14250793,15607099,0.393,b,0.9
+chr5,25650709,32392960,0.409,b,0.3
+chr5,33011156,54462250,-0.245,b,1.1
+chr5,61341240,61726219,0.289,b,0.6
+chr5,66549819,68841879,-0.05,b,0.2
+chr5,69690807,75152617,-0.017,b,0.3
+chr5,86933076,97127434,-0.503,b,0.4
+chr5,98355016,114557287,0.352,b,0.4
+chr5,118905700,153096262,0.063,b,0.5
+chr5,177001774,179247379,-0.25,b,0.5
+chr6,4525738,4793896,-0.133,b,0.3
+chr6,17794522,25022612,0.165,b,1
+chr6,48599837,58005366,-0.582,b,0.6
+chr6,58450584,78487255,0.435,b,0.7
+chr6,78766339,102076995,0.369,b,0.3
+chr6,108221619,116085853,0.663,b,1
+chr6,119518095,124476260,0.028,b,0.7
+chr6,130722399,147102174,-0.754,b,0.8
+chr6,148621041,152336332,-0.44,b,1.1
+chr6,155227046,169024954,-0.117,b,0.6
+chr7,8803348,12810931,-0.496,b,0.8
+chr7,25157336,34646714,0.409,b,0.9
+chr7,35326099,41559677,-0.902,b,1.1
+chr7,43354997,52437876,0.828,b,0.4
+chr7,59155248,61590372,0.316,b,0.4
+chr7,63401318,65909132,-0.308,b,0.5
+chr7,67676777,70731698,-1.059,b,0.4
+chr7,86777790,89385025,0.006,b,0.9
+chr7,103848396,107618696,-1.093,b,1
+chr7,125815731,136232287,-0.662,b,0.5
+chr8,11385329,13762253,-0.804,b,0.2
+chr8,22485255,49366626,0.66,b,0.4
+chr8,65560078,65710238,-0.906,b,0.4
+chr8,69779573,73190703,-0.749,b,0.5
+chr8,73220518,74320384,0.159,b,0.5
+chr8,80585040,93350439,0.012,b,0.3
+chr8,103451704,123995073,-0.28,b,0.9
+chr8,126288818,127516897,-0.621,b,1.1
+chr8,136162070,145908568,0.023,b,0.7
+chr9,3447589,15287581,0.242,c,0.8
+chr9,17237148,26913815,-0.376,c,0.4
+chr9,32495352,33603600,0.818,c,1
+chr9,39257135,40604775,-0.459,c,0.9
+chr9,44259945,46894894,0.219,c,0.3
+chr9,58751283,79643513,-0.782,c,0.6
+chr9,93113880,111632410,0.138,c,0.4
+chr9,134494985,135236201,0.634,c,0.4
+chr10,1926735,3875686,-0.351,c,0.5
+chr10,15519859,46422168,0.28,c,0.2
+chr10,48948152,59020122,0.619,c,0.7
+chr10,59631445,61741781,-0.312,c,0.2
+chr10,62552443,64019496,-0.145,c,0.8
+chr10,66989685,73489769,-0.563,c,0.2
+chr10,75248660,87335973,0.921,c,0.9
+chr10,94617801,134750150,-0.121,c,1.1
+chr11,21213884,23178338,0.026,c,0.5
+chr11,23779609,30638208,0.73,c,0.4
+chr11,32159854,38232760,0.629,c,0.4
+chr11,44068642,45853443,0.666,c,1.1
+chr11,46675177,49927480,0.462,c,0.8
+chr11,65305372,65418463,-0.21,c,0.7
+chr11,96431603,117939332,0.605,c,0.9
+chr11,126385397,134871220,0.82,c,0.2
+chr12,6831474,7643126,0.586,c,1
+chr12,9320939,16762940,0.44,c,0.5
+chr12,22847707,25744448,0.153,c,0.3
+chr12,27446610,44888571,-0.018,c,0.4
+chr12,59737624,61343978,-0.561,c,0.4
+chr12,73324435,83848746,-0.695,c,0.5
+chr12,101081743,105490581,-0.394,c,0.5
+chr12,127794962,128507898,0.584,c,0.7
+chr13,12867099,17642188,-0.272,c,1
+chr13,20296314,22630794,0.257,c,0.5
+chr13,30122231,31850014,-0.686,c,0.7
+chr13,47668145,66905569,-0.278,c,0.7
+chr13,70429379,70494764,-1.382,c,0.6
+chr13,71310144,77327046,-0.614,c,0.8
+chr13,93537099,100534669,-0.001,c,0.6
+chr14,805816,7823757,-0.062,c,0.9
+chr14,25516095,68297537,-1.118,c,0.6
+chr14,69257319,80038499,-0.452,c,0.3
+chr14,90449245,95539583,0.312,c,0.4
+chr14,95980859,96799132,0.105,c,0.9
+chr14,99237207,104451625,0.115,c,0.3
+chr15,7872548,10350103,-0.421,c,0.8
+chr15,18937040,32145767,0.293,d,0.6
+chr15,42990779,46353988,-0.36,d,0.2
+chr15,49736442,71180914,0.009,d,0.5
+chr15,78251136,85684829,-0.145,d,0.2
+chr15,91363523,93315716,-0.513,d,0.4
+chr16,5556149,16185760,-0.379,d,0.2
+chr16,16230174,20647469,-0.811,d,0.7
+chr16,22447335,31712361,1.09,d,0.2
+chr16,38619336,40504568,0.185,d,1
+chr16,46260401,53944075,0.048,d,0.9
+chr16,64478279,64850998,0.499,d,0.9
+chr17,3493661,6809857,-0.032,d,0.9
+chr17,37924010,41527747,0.488,d,0.5
+chr17,49910825,50863022,0.1,d,0.8
+chr17,62424212,64213953,0.306,d,0.5
+chr17,72031756,72654014,0.168,d,0.7
+chr18,12496549,12851988,0.049,d,0.9
+chr18,30413064,32863712,-0.151,d,0.5
+chr18,34878524,41029220,0.264,d,0.9
+chr18,46728441,55989743,0.191,d,0.4
+chr18,67363158,77910206,-0.232,d,0.8
+chr19,3574078,17756049,-0.563,d,0.4
+chr19,17802758,19604700,0.841,d,0.9
+chr19,24091811,42195893,-0.791,d,0.7
+chr19,46770448,57073503,-1.058,d,0.8
+chr20,3448007,3718217,0.308,d,0.6
+chr20,5640372,20167980,0.072,d,0.5
+chr20,40893328,44223307,-1.07,d,0.8
+chr20,52723318,57667127,0.247,d,0.9
+chr21,639063,4530954,-0.099,d,0.9
+chr21,21843408,26259438,-0.812,d,0.9
+chr21,31350599,38784308,-0.367,d,0.5
+chr22,10915309,10960480,-0.471,d,0.4
+chr22,13019957,14804297,0.492,d,0.2
+chr22,36391838,48957194,-0.079,d,1
+chrX,1465940,5528946,-0.305,d,0.6
+chrX,17810226,36190210,-0.368,d,0.2
+chrX,39155597,44373052,0.292,d,0.8
+chrX,54496019,56836023,0.111,d,0.4
+chrX,62641776,105475556,-0.329,d,1
+chrX,116826739,117855547,-0.343,d,0.9
+chrX,122725093,125685385,-0.119,d,0.8
+chrX,142397762,150914105,-0.314,d,0.6
+chrX,151506310,152559557,-0.094,d,0.5
+chrY,1328672,9655021,-0.708,d,0.3
+chrY,10440719,42569195,0.079,d,0.6
+chrY,48564458,48770305,0.208,d,0.3
+chrY,50570091,52373385,0.231,d,0.4
diff --git a/example_data/point_color_pch.csv b/example_data/point_color_pch.csv
new file mode 100644
index 0000000..2f4bfa1
--- /dev/null
+++ b/example_data/point_color_pch.csv
@@ -0,0 +1,206 @@
+chr,start,end,value,color,pch
+chr1,3768320,4851773,-0.416,a,15
+chr1,5712552,10112216,-0.41,a,15
+chr1,15275256,18873862,0.589,a,15
+chr1,28211635,37585705,-1.416,a,15
+chr1,46691560,50561898,0.852,a,15
+chr1,62357826,74411579,-1.075,a,15
+chr1,87948359,90835281,-0.691,a,15
+chr1,94680636,97404498,0.426,a,15
+chr1,99368705,99958746,0.106,a,15
+chr1,108374019,142289731,0.056,a,15
+chr1,145399186,147447486,-1.05,a,15
+chr1,162873281,165949628,-0.588,a,15
+chr1,175126889,189920980,0.341,a,15
+chr1,194803521,195648901,-0.554,a,15
+chr1,204512807,208412767,-0.382,a,15
+chr1,241254746,241919906,0.007,a,15
+chr2,753971,9982409,0.211,a,15
+chr2,15076213,20753361,0.15,a,15
+chr2,31442502,42746271,-0.211,a,15
+chr2,42939705,46067399,0.527,a,15
+chr2,49444651,52517698,-0.201,a,15
+chr2,56198118,68893448,-0.062,a,15
+chr2,73812582,80022778,0.148,a,15
+chr2,81716759,83039266,-0.016,a,15
+chr2,93666188,95591735,0.112,a,15
+chr2,101976657,120688831,0.623,a,15
+chr2,125556527,135606451,0.211,a,15
+chr2,138229856,152142766,0.79,a,15
+chr2,156215368,181422770,-0.477,a,15
+chr2,189320909,194891019,-0.094,a,15
+chr2,205529429,206731747,-0.321,a,15
+chr2,233481816,239887094,-1.136,a,15
+chr3,45772115,49099824,0.334,a,15
+chr3,50225286,51104088,0.327,a,15
+chr3,51321077,52120875,-0.015,a,16
+chr3,55691917,68047293,-0.219,a,16
+chr3,70572802,72106244,-0.645,a,16
+chr3,88122378,93158319,-0.361,a,16
+chr3,102331362,105360369,0.447,a,16
+chr3,107667899,113485961,0.139,a,16
+chr3,116501721,118110001,-0.433,a,16
+chr3,128362699,130438090,-0.189,a,16
+chr3,135041967,151653465,0.082,a,16
+chr3,159608848,159917333,-0.538,a,16
+chr3,181911064,193592592,0.428,a,16
+chr4,1085802,2162659,0.142,a,16
+chr4,3514653,16295394,0.186,a,16
+chr4,18660149,29869990,0.024,a,16
+chr4,41955927,49411534,-0.319,a,16
+chr4,52816267,63305137,-0.383,a,16
+chr4,64401500,64721072,-0.148,a,16
+chr4,67643341,70454365,0.12,a,16
+chr4,72807386,77627790,-0.158,a,16
+chr4,88342632,92359539,-0.02,a,16
+chr4,98053991,131681029,-0.343,a,16
+chr4,136356739,139784357,0.246,a,16
+chr4,161311102,163112583,0.302,a,16
+chr4,184930847,188344119,-0.572,a,16
+chr5,8929796,11885690,-0.289,a,16
+chr5,14993136,21854818,0.207,a,16
+chr5,23048537,43523462,0.106,a,16
+chr5,46524784,53538821,0.218,a,16
+chr5,58319736,63793936,0.405,a,16
+chr5,68934639,71490237,0.884,a,16
+chr5,75142092,111528926,-0.088,a,16
+chr5,114705446,122808375,-0.857,a,16
+chr5,138203325,149689583,0.225,a,16
+chr5,150008815,150582113,-0.564,a,16
+chr5,151481548,153008731,0.603,b,17
+chr5,172839427,177370583,-0.951,b,17
+chr6,9655476,21788589,0.075,b,17
+chr6,27835515,50754936,-0.321,b,17
+chr6,58410437,58623793,0.788,b,17
+chr6,62553902,74246141,0.804,b,17
+chr6,83518238,83696516,0.287,b,17
+chr6,94435306,102761188,-0.733,b,17
+chr6,113138130,113514562,-0.258,b,17
+chr6,117659737,124350035,-0.457,b,17
+chr6,126163700,126647597,-0.254,b,17
+chr6,128532315,152869631,-0.018,b,17
+chr6,163726128,171071125,0.006,b,17
+chr7,512169,19484719,-0.425,b,17
+chr7,25796601,27965443,-0.552,b,17
+chr7,29666914,29942474,0.127,b,17
+chr7,45919036,50829504,0.194,b,17
+chr7,52957919,56456947,0.196,b,17
+chr7,76874121,77993181,-0.277,b,17
+chr7,79668264,99073738,0.156,b,17
+chr7,99818735,107394479,-1.025,b,17
+chr7,120659377,122944129,-0.153,b,17
+chr7,127724400,127972852,0.139,b,17
+chr7,133125307,145873060,0.071,b,17
+chr8,6439704,7992360,-0.27,b,17
+chr8,8957959,24898616,0.102,b,17
+chr8,35378279,36021657,0.777,b,17
+chr8,44370458,53102305,-0.545,b,17
+chr8,68106340,81408763,0.191,b,17
+chr8,85175624,109572697,0.572,b,17
+chr8,111103954,111229479,1.033,b,17
+chr8,116124215,123243354,-0.413,b,17
+chr8,123837575,132498508,-0.47,b,17
+chr8,133582422,141031128,-0.015,b,17
+chr9,7783739,22790975,-0.52,b,15
+chr9,25786507,38016468,-0.566,b,15
+chr9,48700447,57747947,1.102,b,15
+chr9,59615669,67791962,0.827,b,15
+chr9,72155050,76383316,0.38,b,15
+chr9,84079528,87357453,1.186,b,15
+chr9,88418585,97647344,-1.113,b,15
+chr9,112612865,117414035,-1.063,b,15
+chr9,126085793,136910514,0.752,b,15
+chr10,737053,1418176,-0.28,b,15
+chr10,5831619,10981299,0.299,b,15
+chr10,13728053,15927681,0.025,b,15
+chr10,16974526,17227223,0.223,b,15
+chr10,21997942,31100623,0.043,b,15
+chr10,35978921,41746768,-0.446,b,15
+chr10,62188172,81186250,-0.168,b,15
+chr10,87778175,102482615,-0.609,b,15
+chr10,105109710,130103680,0.142,b,15
+chr11,7829580,13317000,0.721,b,15
+chr11,17226186,25582533,-0.747,b,15
+chr11,29950620,33473803,0.914,b,15
+chr11,49702666,52166046,0.624,b,15
+chr11,54805111,68426063,-0.066,b,15
+chr11,74413237,78935082,0.182,b,15
+chr11,80434079,100271219,0.226,b,15
+chr11,109494143,110718462,0.409,b,15
+chr11,122718329,125429476,-0.751,b,15
+chr12,1414957,9931093,-0.378,b,15
+chr12,10259015,13866135,0.228,b,15
+chr12,14809379,19161769,-0.19,b,15
+chr12,23643152,49340112,-0.684,b,15
+chr12,49688212,58707569,0.056,b,15
+chr12,59621046,66911436,-0.343,b,15
+chr12,72728609,80620587,-0.288,b,15
+chr12,88480941,112204640,-0.333,c,16
+chr12,116515744,128369455,0.916,c,16
+chr13,9281008,11942204,0.106,c,16
+chr13,15086419,16425071,0.432,c,16
+chr13,19882585,23396513,0.327,c,16
+chr13,54637784,59293801,0.186,c,16
+chr13,65504571,78766761,0.363,c,16
+chr13,83549275,83843730,-0.541,c,16
+chr13,84241951,93851532,-0.135,c,16
+chr13,94055104,109104864,-0.651,c,16
+chr14,17793547,19864363,-0.753,c,16
+chr14,26936017,40835753,0.033,c,16
+chr14,45360587,54332923,0.181,c,16
+chr14,59105492,59112363,0.221,c,16
+chr14,61730091,73742386,0.684,c,16
+chr14,76796056,80057986,-0.282,c,16
+chr14,99800405,102652074,-0.282,c,16
+chr15,15353216,18941105,0.433,c,16
+chr15,36387127,39146120,-0.264,c,16
+chr15,40523875,40622498,0.216,c,16
+chr15,43287456,50379096,0.678,c,16
+chr15,54465428,80704767,1.048,c,16
+chr15,89302039,93245774,-0.164,c,16
+chr15,96334680,97400315,-0.307,c,16
+chr16,5908188,12309264,-0.436,c,16
+chr16,26647143,45946500,-0.182,c,16
+chr16,52352687,60583465,0.356,c,16
+chr16,67870473,70251022,0.173,c,16
+chr16,70702276,76529443,-0.949,c,16
+chr16,84868449,89667247,-0.043,c,16
+chr17,774579,17512597,0.178,c,16
+chr17,23086355,51088066,0.422,c,16
+chr17,60941409,63834580,0.757,c,16
+chr17,64832432,72550610,-0.565,c,16
+chr17,72692958,77379303,0.196,c,17
+chr18,679451,13634736,-0.284,c,17
+chr18,24712312,31907991,-1.063,c,17
+chr18,33668216,39946658,-0.091,c,17
+chr18,44767150,54384573,0.568,c,17
+chr18,60009965,64176718,0.416,c,17
+chr19,3117119,10334978,1.322,c,17
+chr19,13903443,17590106,1.033,c,17
+chr19,30256650,33788797,-0.264,c,17
+chr19,38478551,56234165,-0.56,c,17
+chr20,2007485,3966451,-0.485,c,17
+chr20,5892799,6322512,0.08,c,17
+chr20,12323224,18994511,0.221,c,17
+chr20,50417297,53986995,-0.629,c,17
+chr21,2482279,10300735,-0.682,c,17
+chr21,17133307,21609336,-0.193,c,17
+chr21,36700725,40418320,-0.253,c,17
+chr22,10533548,12400533,-0.53,c,17
+chr22,15327708,19067432,-0.212,c,17
+chr22,22254151,36401489,0.182,c,17
+chr22,40556634,47770670,-0.011,c,17
+chrX,5334391,9583136,0.771,c,17
+chrX,16958128,35026791,0.06,c,17
+chrX,43479610,44814153,0.394,c,17
+chrX,46410914,66959178,-0.144,c,17
+chrX,80338429,84173856,0.017,c,17
+chrX,89324618,109461615,0.579,c,17
+chrX,110066800,119553368,-0.782,c,17
+chrX,136111050,150109340,0.266,c,17
+chrX,152397655,152836093,-1.147,c,17
+chrX,153433756,154471823,0.137,c,17
+chrY,4970558,19584346,0.47,c,17
+chrY,22176896,30442211,0.182,c,17
+chrY,30674719,39836594,0.101,c,17
+chrY,52737371,53903116,-0.003,c,17
diff --git a/example_data/point_color_pch_cex.csv b/example_data/point_color_pch_cex.csv
new file mode 100644
index 0000000..16d239d
--- /dev/null
+++ b/example_data/point_color_pch_cex.csv
@@ -0,0 +1,187 @@
+chr,start,end,value,color,pch,cex
+chr1,14053524,24878326,-0.498,a,1,0.9
+chr1,29640089,49313488,-0.565,a,1,1
+chr1,53970010,87166913,-1.159,a,1,0.3
+chr1,87537029,88337021,0.911,a,1,1
+chr1,94359096,95393045,-0.402,a,1,1
+chr1,100525029,101217751,0.235,a,1,1
+chr1,116061737,120934673,-0.632,a,1,1
+chr1,125031200,129122822,0.625,a,1,0.7
+chr1,129670032,130867885,0.392,a,1,0.5
+chr1,149469314,155477912,-0.315,a,1,1.1
+chr1,160827562,166449564,0.694,a,1,1
+chr1,167311136,180963088,-0.12,a,1,1.1
+chr1,194355089,205245832,-0.453,a,1,0.6
+chr1,236118873,238183627,-1.034,a,1,1.1
+chr1,240999244,242502863,-0.599,a,1,1.1
+chr2,3519737,18228654,-0.665,a,1,1.1
+chr2,22856325,23188267,0.018,a,1,0.9
+chr2,27635944,42933031,0.091,a,1,1.1
+chr2,51749801,58920140,0.932,a,1,0.8
+chr2,60144679,63933468,-0.152,a,1,0.9
+chr2,74268863,93964488,-0.055,a,1,0.9
+chr2,105068706,112625023,-0.646,a,1,0.9
+chr2,123236058,125191881,0.376,a,1,0.4
+chr2,125845290,129458700,0.143,a,1,0.5
+chr2,139508218,150698111,0.136,a,1,1
+chr2,154518941,156355159,-0.777,a,1,0.3
+chr2,167200580,181554172,-0.398,a,1,0.9
+chr2,215056115,218965108,0.124,a,1,0.2
+chr2,226388666,234857474,0.167,a,1,1
+chr3,4102633,5274438,-0.168,a,1,0.2
+chr3,11983533,16033466,0.592,a,1,0.2
+chr3,37053263,49553408,0.327,a,1,0.5
+chr3,68185731,73705033,1.06,a,1,0.3
+chr3,83747645,88684528,-0.134,a,1,0.9
+chr3,101594494,112028538,-0.124,a,1,0.3
+chr3,113468216,123975454,-0.013,a,1,0.3
+chr3,127078523,129353220,1.036,a,1,0.2
+chr3,133613784,143306975,-0.247,b,4,0.9
+chr3,152239543,153533811,0.322,b,4,0.7
+chr3,158960533,165863486,-0.154,b,4,0.7
+chr3,174529902,181913318,-0.443,b,4,0.3
+chr4,8408012,12767180,-0.108,b,4,0.4
+chr4,22963697,41682972,-0.45,b,4,0.9
+chr4,47656908,51312664,-0.081,b,4,1
+chr4,70948974,79479773,-0.064,b,4,0.5
+chr4,86826209,96445308,0.386,b,4,1
+chr4,107342010,110388235,0.351,b,4,0.3
+chr4,124039376,133632019,-0.605,b,4,0.8
+chr4,134398228,149390467,0.486,b,4,0.9
+chr4,152815740,153699142,-0.402,b,4,0.8
+chr4,160643965,168737684,-0.753,b,4,0.3
+chr4,176015333,177631996,-0.502,b,4,1
+chr5,34287363,40660205,-0.206,b,4,0.9
+chr5,51919244,57231052,0.242,b,4,1
+chr5,64551434,71366400,0.117,b,4,0.3
+chr5,82081171,97360128,-0.711,b,4,0.3
+chr5,100098228,118307465,0.565,b,4,0.4
+chr5,122121427,125605069,0.403,b,4,1.1
+chr5,136547263,142410123,-0.028,b,4,0.3
+chr5,143281551,158954022,-0.583,b,4,0.2
+chr5,159974374,169513549,-0.833,b,4,1
+chr5,173657814,177093770,-0.16,b,4,0.2
+chr5,179437122,179724448,-0.219,b,4,0.2
+chr6,10257723,16718577,-0.789,b,4,0.5
+chr6,35592443,39016009,0.2,b,4,0.7
+chr6,56460215,59167431,0.046,b,4,0.3
+chr6,66977665,83367850,0.268,b,4,0.2
+chr6,87215478,89453444,-0.037,b,4,0.7
+chr6,99539749,104358635,-0.693,b,4,0.8
+chr6,106383341,107761176,-0.376,b,4,1
+chr6,121605996,124531322,-0.519,b,4,0.6
+chr6,127450279,137521786,-0.717,b,4,0.4
+chr6,166735990,169475354,0.001,b,4,0.2
+chr7,2136309,6197193,-0.606,b,4,0.4
+chr7,19423006,22467637,0.897,c,6,0.3
+chr7,24793397,50156960,0.183,c,6,1
+chr7,77200369,78459252,-0.479,c,6,0.4
+chr7,78846551,79243582,-0.477,c,6,0.5
+chr7,84912122,85412212,-0.29,c,6,1.1
+chr7,94827174,102650885,0.207,c,6,1.1
+chr7,115429769,118951067,-0.625,c,6,0.6
+chr7,125497801,125578204,0.236,c,6,0.8
+chr7,138170373,152382144,0.682,c,6,0.2
+chr8,9157820,10364278,-0.338,c,6,0.5
+chr8,14263039,15332863,0.455,c,6,1.1
+chr8,17480799,22539887,-0.86,c,6,1
+chr8,29631807,30709782,-1.075,c,6,0.5
+chr8,50757411,60664120,-0.19,c,6,0.6
+chr8,64726614,69529172,1.182,c,6,0.3
+chr8,74764697,89751068,-1.223,c,6,0.6
+chr8,100069014,123319984,0.939,c,6,0.9
+chr8,134736498,141612653,-0.593,c,6,0.4
+chr9,15330766,20500039,-0.383,c,6,0.6
+chr9,32690424,42655581,0.771,c,6,0.4
+chr9,42931292,45851300,-0.383,c,6,0.9
+chr9,51441395,53095312,0.527,c,6,1.1
+chr9,65510881,69698456,0.127,c,6,1.1
+chr9,70701734,87644450,0.284,c,6,0.6
+chr9,88455590,99848072,-0.677,c,6,1
+chr9,109890747,136122006,0.607,c,6,0.3
+chr10,132576,20297825,-0.024,c,6,0.5
+chr10,22253126,34635938,0.658,c,6,0.6
+chr10,43948706,53164962,-0.125,c,6,1.1
+chr10,55839362,66594553,0.111,c,6,1.1
+chr10,71149081,80929321,-0.257,c,6,0.7
+chr10,83940246,91743256,0.689,c,6,0.5
+chr10,99900495,100824227,-0.104,c,6,0.8
+chr10,104712388,122678761,0.196,c,6,0.3
+chr11,4744886,9667992,-0.028,c,6,0.3
+chr11,10366985,12308661,0.044,c,6,0.7
+chr11,15825247,27901339,0.17,c,6,0.2
+chr11,33666732,33700102,0.257,d,18,0.9
+chr11,63832931,68489590,1.03,d,18,0.5
+chr11,80908011,88518393,0.202,d,18,0.4
+chr11,106358230,127838126,-0.133,d,18,0.9
+chr11,130018757,130173508,-0.095,d,18,0.3
+chr12,21306977,36470868,-0.968,d,18,0.3
+chr12,43543655,68267562,0.663,d,18,0.2
+chr12,69858302,70873749,-0.027,d,18,0.7
+chr12,87483321,94787068,0.68,d,18,1
+chr12,94914292,111018104,0.271,d,18,0.3
+chr12,113905850,118086103,-0.281,d,18,0.9
+chr12,125232934,126157351,-0.239,d,18,0.7
+chr12,127698866,127958319,0.35,d,18,0.6
+chr13,25903041,27078644,0.27,d,18,0.9
+chr13,33303789,35770767,0.133,d,18,1
+chr13,39351070,41884224,0.515,d,18,0.4
+chr13,46775200,48249610,-0.547,d,18,0.5
+chr13,52455575,58339508,-0.327,d,18,1
+chr13,80086866,97138731,0.217,d,18,1
+chr13,111902877,114931168,-0.363,d,18,0.3
+chr14,14030332,22602945,0.607,d,18,0.5
+chr14,36457845,38875991,0.214,d,18,0.2
+chr14,46307834,50814441,-0.861,d,18,0.9
+chr14,61712100,62272224,0.008,d,18,0.9
+chr14,63529534,71515113,-0.724,d,18,0.9
+chr14,74196844,98852292,-0.548,d,18,0.5
+chr15,19572576,26378758,-0.028,d,18,0.6
+chr15,34661557,36382076,0.081,d,18,1.1
+chr15,42322967,45175040,-0.174,d,18,0.6
+chr15,53741807,59464486,0.344,d,18,0.9
+chr15,72350239,84699871,-0.08,d,18,0.4
+chr15,91974652,101271099,-0.1,d,18,0.5
+chr16,60454,13336484,0.578,d,18,0.7
+chr16,16527878,20366970,0.246,d,18,0.8
+chr16,31961323,33323181,-1.056,d,18,0.2
+chr16,38217061,40931475,0.133,d,18,0.3
+chr16,53627402,57875561,-0.162,d,18,0.4
+chr16,78070711,87815732,-0.28,e,20,1
+chr17,2687122,6339515,-0.196,e,20,0.3
+chr17,25931561,38666252,0.281,e,20,0.2
+chr17,38928755,44908510,0.493,e,20,0.2
+chr17,46955438,60675931,0.457,e,20,0.4
+chr17,73699379,74698015,0.385,e,20,1.1
+chr18,3600037,15979091,-0.114,e,20,0.9
+chr18,30023231,32065874,0.159,e,20,0.3
+chr18,35580799,46446335,-0.494,e,20,1.1
+chr18,48305228,54225249,-0.776,e,20,0.3
+chr18,65306184,67934421,-0.164,e,20,0.6
+chr19,3637774,6897890,0.012,e,20,0.9
+chr19,7294373,10040435,0.388,e,20,0.4
+chr19,29955937,47826364,0.038,e,20,0.5
+chr19,51842996,55118574,-0.014,e,20,0.8
+chr20,5176456,9020734,0.122,e,20,0.7
+chr20,33722926,33795889,-0.011,e,20,1.1
+chr20,46030024,54173716,-0.789,e,20,0.3
+chr20,54922761,58439775,0.759,e,20,0.6
+chr21,4860502,5963900,-0.472,e,20,0.8
+chr21,8526163,31430454,-0.324,e,20,0.5
+chr21,37580290,38243153,0.612,e,20,0.4
+chr22,1947857,11891097,0.29,e,20,0.9
+chr22,21270649,30342033,-0.635,e,20,0.7
+chr22,32497685,47466930,0.176,e,20,1
+chrX,9883530,10218010,0.124,e,20,1.1
+chrX,10742156,14439768,0.074,e,20,0.3
+chrX,26870012,28831889,-0.673,e,20,0.3
+chrX,31470022,54430158,0.544,e,20,1.1
+chrX,55970289,61924178,0.028,e,20,0.3
+chrX,68178481,75024117,-0.188,e,20,0.9
+chrX,87185645,98443529,0.529,e,20,1.1
+chrX,143579620,144650695,-0.388,e,20,0.7
+chrX,147326182,151556373,-0.386,e,20,0.7
+chrY,2796217,5537635,-0.91,e,20,0.8
+chrY,25857104,33216666,-0.042,e,20,1
+chrY,47295657,48223618,0.383,e,20,1.1
+chrY,51067717,52370923,-0.044,e,20,0.2
diff --git a/track7.csv b/example_data/point_multicolumn.csv
similarity index 97%
rename from track7.csv
rename to example_data/point_multicolumn.csv
index d0399ef..74eec8e 100644
--- a/track7.csv
+++ b/example_data/point_multicolumn.csv
@@ -1,305 +1,305 @@
-chr,start,end,value1,value2
-chr1,7224218,16393864,-0.196,-0.955
-chr1,21093451,25392112,0.128,0.275
-chr1,31462827,31952156,0.234,0.6
-chr1,38366450,42030463,0.001,-0.552
-chr1,44307009,53690628,0.53,0.355
-chr1,58017049,58046561,0.439,-0.24
-chr1,71140450,73373343,0.1,-0.153
-chr1,75053643,89520859,0.476,-0.012
-chr1,104336479,104610315,-0.38,0.077
-chr1,105073084,107305064,0.705,-0.67
-chr1,113494940,116356831,0.176,-0.254
-chr1,117575148,128178947,-0.59,-0.576
-chr1,131736339,142833193,-0.839,-0.651
-chr1,144078943,146187586,0.071,0.066
-chr1,148020100,148524539,-0.819,0.681
-chr1,155754293,156680649,-0.078,0.657
-chr1,158106050,162375998,-0.269,0.828
-chr1,163398862,166008818,-0.02,-0.136
-chr1,166619333,169155598,-0.11,-0.181
-chr1,174194137,194644863,0.877,-0.69
-chr1,194718064,205425417,0.534,-0.838
-chr1,215014032,220449969,-0.923,0.127
-chr1,220600157,230434907,-0.887,0.212
-chr1,238766557,247422981,-0.135,-1.654
-chr2,964504,5629065,-0.316,-0.471
-chr2,9191519,20321874,-0.172,-0.326
-chr2,24230655,27528340,0.438,0.017
-chr2,34176061,40742196,-0.712,-0.216
-chr2,44210800,54184884,-0.119,0.554
-chr2,55695990,56728217,-0.243,-0.305
-chr2,68930971,78361138,-0.48,-0.804
-chr2,79182263,81377697,-0.613,-0.524
-chr2,82240522,84760536,-0.756,-0.537
-chr2,92052293,92745165,0.049,-0.725
-chr2,108013419,111500591,0.076,0.309
-chr2,118006935,118428896,-1.24,0.231
-chr2,122689953,125135346,-0.359,-1.394
-chr2,139702348,145550968,-0.182,0.183
-chr2,145715863,146060700,-1.162,0.417
-chr2,151128564,157595553,0.71,-0.207
-chr2,158498789,162454685,0.334,-0.979
-chr2,167944325,168248287,-0.829,0.036
-chr2,168538950,189326231,-0.234,0.773
-chr2,193467071,196160565,0.413,-0.499
-chr2,199466490,200950481,0.126,-0.162
-chr2,201555738,205645579,0.311,0.618
-chr2,217242637,223733613,0.048,0.854
-chr2,235992945,241211912,-0.346,-0.287
-chr3,755167,10172855,0.918,-0.213
-chr3,14909280,22502495,0.421,-0.185
-chr3,24704666,26117987,-0.102,0.637
-chr3,28431765,31238287,0.514,0.249
-chr3,35144335,43871052,0.037,-0.697
-chr3,44462683,51466880,-0.451,-0.841
-chr3,58539334,64315820,0.228,0.04
-chr3,64831506,68805511,0.01,0.218
-chr3,72230990,72606793,-0.147,0.037
-chr3,81080534,87401150,-0.316,-0.046
-chr3,103763552,104358837,-0.312,1.28
-chr3,104506911,113777389,-0.041,0.83
-chr3,114949076,122423880,-0.444,0.687
-chr3,125141702,137571428,0.051,-0.769
-chr3,144334873,145649342,0.323,0.422
-chr3,151606808,152323470,0.256,0.443
-chr3,159251493,171370593,-0.207,0.235
-chr3,179255626,180847955,-0.011,-0.719
-chr3,188327835,193158979,0.263,0.585
-chr4,3409738,3937073,-0.197,0.234
-chr4,9267176,11066561,0.25,-0.794
-chr4,17966858,18415859,0.507,0.201
-chr4,18964608,20082815,-0.623,-0.372
-chr4,23202763,31732792,-0.846,-0.788
-chr4,35556750,37025119,0.063,0.848
-chr4,39947625,63436481,0.28,-0.262
-chr4,73892502,76582312,0.064,0.351
-chr4,93303305,94072263,0.514,-0.144
-chr4,95132393,113611317,-0.105,0.819
-chr4,122095404,123555868,0.512,-0.158
-chr4,128412265,136073710,0.743,0.693
-chr4,141287041,156313815,-0.087,-0.757
-chr4,156451592,158558754,0.092,-0.516
-chr4,166333767,169870626,0.279,0.715
-chr4,171846919,172123829,0.018,-0.129
-chr4,172781599,174442344,0.534,-0.02
-chr4,179180755,182087214,0.447,-0.239
-chr4,186486241,189502642,-0.266,-0.041
-chr5,424136,19609039,0.521,0.143
-chr5,21199782,35793799,-0.654,-0.491
-chr5,42045325,43739016,0.167,0.724
-chr5,49358347,50456648,0.45,-0.475
-chr5,57754949,61222628,-0.041,-0.203
-chr5,64155217,67322843,0.268,0.31
-chr5,75672167,76366063,-0.455,0.15
-chr5,78848249,78961977,-0.218,0.183
-chr5,100464271,105530401,-0.676,-0.629
-chr5,105537124,110929980,-0.34,-0.568
-chr5,119127663,119731002,0.19,0.456
-chr5,121809009,126327785,0.342,-0.222
-chr5,139588173,140851553,0.593,0.974
-chr5,143924328,145033793,-0.322,-1.038
-chr5,152062487,154795921,0.815,-0.521
-chr5,157625781,159170737,0.343,0.277
-chr5,163181092,164318421,-0.151,0.164
-chr5,165368467,174011178,-0.365,0.137
-chr6,10264311,14540899,0.28,0.758
-chr6,24605075,31989045,0.129,-0.058
-chr6,35348819,35591625,0.041,-0.496
-chr6,37998463,42404814,-0.162,-0.679
-chr6,57853740,63581564,0.316,-0.091
-chr6,65317547,66576338,-0.576,-0.902
-chr6,73287568,77656238,-0.165,-0.162
-chr6,80935859,88108258,-0.087,-0.159
-chr6,90431261,92212884,-0.285,-0.429
-chr6,92594732,94777469,0.138,0.107
-chr6,98745964,103730754,0.093,0.076
-chr6,114299685,120875645,0.165,-0.692
-chr6,125670030,129401077,0.033,-0.027
-chr6,132417663,133999189,-0.105,-0.619
-chr6,139636211,146262689,0.49,1.02
-chr6,148469438,160988903,0.106,-0.059
-chr6,166233776,169793277,-0.31,-0.023
-chr7,8815697,9267359,0.537,-0.789
-chr7,13808503,24270721,-0.488,0.541
-chr7,28298879,31474430,0.288,-0.721
-chr7,38470467,47289587,0.386,1.069
-chr7,47373878,48991380,0.335,-0.068
-chr7,51564897,52739204,0.639,-0.388
-chr7,60582232,66319029,0.557,0.175
-chr7,66404000,66602594,0.214,-1.001
-chr7,68665931,83678421,-0.377,-0.035
-chr7,89313406,101495578,0.049,0.335
-chr7,104997514,112739198,-0.252,0.487
-chr7,120339754,120777416,-0.387,0.503
-chr7,123000343,124680669,-0.239,-0.444
-chr7,128908937,133028166,-0.107,0.362
-chr7,133803823,144395575,0.454,-0.974
-chr7,151865607,152492242,-0.055,0.758
-chr8,2334444,2957894,-0.313,0.438
-chr8,3937170,26935980,0.303,0.685
-chr8,27239344,33688428,-0.432,0.151
-chr8,34125568,44880501,0.582,-0.26
-chr8,45942871,47253654,-0.062,-0.064
-chr8,62991463,63858765,0.677,0.319
-chr8,64292007,66794388,-0.692,-0.563
-chr8,67321813,73284679,-0.622,0.443
-chr8,83835186,87578280,-0.652,-0.614
-chr8,100630577,103760395,1.017,0.176
-chr8,105334213,106593175,0.222,-0.481
-chr8,109512171,112186060,1.283,-0.543
-chr8,125784997,136006701,0.028,1.048
-chr8,137415043,143256746,-0.17,0.077
-chr9,3178753,8216824,0.009,-0.253
-chr9,10038990,18827563,0.219,0.161
-chr9,23554096,25102611,0.814,0.477
-chr9,32135709,36139419,0.397,0.123
-chr9,37135612,40253644,1.05,0.227
-chr9,40901095,41381406,0.189,-0.244
-chr9,42667114,51437627,-0.033,-0.324
-chr9,52396788,52703591,-0.703,0.672
-chr9,56607748,65156438,-0.454,0.206
-chr9,67091255,77332156,-0.171,-0.027
-chr9,85862286,92271454,0.323,0.237
-chr9,99014847,106700045,-0.614,-0.092
-chr9,113463244,122031095,-0.051,-0.502
-chr9,127746440,130255962,-0.604,-0.569
-chr10,8023226,13217886,0.272,-0.801
-chr10,26322777,32521307,-0.504,0.272
-chr10,35674140,37267864,-0.712,0.404
-chr10,41350556,59470865,-0.065,-0.228
-chr10,62036755,71566925,0.875,-0.348
-chr10,72363606,73685494,-0.872,1.362
-chr10,84656887,85720317,0.695,-0.613
-chr10,88495482,90701865,-0.166,0.532
-chr10,91537398,93080819,1.01,-0.328
-chr10,100889789,105462407,0.478,-0.642
-chr10,110069116,112212054,-0.172,-0.321
-chr10,117093528,134024743,-0.464,-0.239
-chr10,134768976,135442334,-0.256,0.133
-chr11,1725228,13651163,0.137,0.015
-chr11,14781875,15606214,-0.539,0.415
-chr11,18524690,22285430,-0.865,0.247
-chr11,31534331,36113011,-0.699,-0.123
-chr11,39183691,45694888,0.591,-0.255
-chr11,47143795,48221580,-0.209,1.182
-chr11,65578832,67540305,0.108,-0.907
-chr11,71937566,73016793,0.777,0.099
-chr11,88445068,88471583,0.171,0.432
-chr11,89234810,90012685,0.323,1.002
-chr11,99531239,117189257,-0.634,0.033
-chr11,117867275,118937362,0.479,0.192
-chr11,129319101,134358024,-0.288,0.02
-chr12,8819167,10711039,0.179,-0.384
-chr12,13770973,15726718,0.263,-0.38
-chr12,23430112,34627728,-0.606,0.145
-chr12,38640631,43080012,-0.935,-0.235
-chr12,47620971,52816470,0.477,-0.754
-chr12,53881600,63265983,0.543,0.32
-chr12,65261816,72657476,-0.07,0.182
-chr12,74954877,75913488,-0.246,0.865
-chr12,76385323,84281737,0.594,0.079
-chr12,89868467,91039265,0.389,0.072
-chr12,100331266,100675868,-0.251,0.259
-chr12,106542863,115614017,0.229,0.295
-chr12,120027046,129525821,0.629,-0.671
-chr13,11206421,11928330,0.335,-0.327
-chr13,14905448,16842776,-0.126,0.506
-chr13,19636327,24655242,-0.578,0.282
-chr13,35325672,37106416,0.618,0.018
-chr13,37168573,41586969,-0.367,-0.221
-chr13,58556459,70284454,0.042,-0.033
-chr13,73770203,81717204,0.566,-0.254
-chr13,84004901,86500798,-0.026,-0.253
-chr13,87914715,93400409,0.245,-0.277
-chr13,97320630,98957702,-0.074,-0.292
-chr13,105226627,107313555,-0.162,0.079
-chr14,3673603,5083653,-0.746,0.721
-chr14,10129796,10591228,0.572,0.308
-chr14,18348520,19336383,0.137,-0.612
-chr14,21391297,29186405,-0.057,0.475
-chr14,29790129,43362402,-0.262,0.245
-chr14,46389143,48004323,-0.055,-0.588
-chr14,48995814,52086674,0.881,-0.07
-chr14,60864238,65089045,0.528,0.479
-chr14,65243604,66814628,0.181,-0.6
-chr14,70808451,92277044,0.203,-0.049
-chr14,94665962,102432067,0.057,-0.519
-chr15,2918170,4918178,-0.504,-0.114
-chr15,19449862,20885023,0.245,0.015
-chr15,35690029,38320874,-0.268,0.581
-chr15,41645142,45890254,-0.087,-0.435
-chr15,52412228,55116330,-0.843,-0.139
-chr15,55431561,57733313,0.496,0.004
-chr15,61291660,69621737,0.233,0.248
-chr15,72707681,74374684,0.909,-0.247
-chr15,82214886,83220415,1.028,-0.309
-chr15,83256005,90335426,-0.289,0.044
-chr16,3921731,10628029,0.699,0.38
-chr16,14206356,20337906,-0.003,0.193
-chr16,21041280,23677618,0.116,0.125
-chr16,26872190,37741901,-0.951,0.355
-chr16,39492701,45387840,-1.103,-0.088
-chr16,51420373,62046711,-0.221,-0.153
-chr16,63911459,64198747,0.39,0.79
-chr16,70385786,77267303,0.642,0.238
-chr16,77286045,85817325,-0.369,0.286
-chr17,9244824,14234072,-0.225,-0.653
-chr17,15892002,17742389,-0.019,0.497
-chr17,25156790,26139250,0.312,0.546
-chr17,37519808,43235996,-0.006,0.595
-chr17,44540141,46488914,0.3,-0.405
-chr17,48928775,49273370,0.077,-0.156
-chr17,55969997,57458065,0.097,0.272
-chr17,70353322,76185666,0.157,-0.276
-chr18,1960361,2279166,1.022,0.937
-chr18,9073097,11982082,-0.536,0.514
-chr18,13568245,16246693,-0.203,0.07
-chr18,20599512,35226269,1.366,-0.083
-chr18,42301434,42509469,0.002,0.368
-chr18,49093330,51675071,-0.04,-0.107
-chr18,52314571,56840000,0.052,0.213
-chr18,62680965,64495028,-0.613,0.414
-chr19,2325439,6516858,-0.205,1.036
-chr19,11082140,11952049,-0.416,0.179
-chr19,20220230,25839557,-0.496,0.351
-chr19,31327846,36324360,0.214,-0.105
-chr19,38721436,41530623,-0.062,0.682
-chr19,56829497,59001653,-0.203,-0.788
-chr20,60384,9726739,0.3,-0.205
-chr20,13871804,18440052,0.155,-0.154
-chr20,23114557,25933479,0.198,-0.667
-chr20,26329749,42725386,0.993,0.415
-chr20,45966139,47859506,-0.503,-0.671
-chr20,53076280,58406910,0.14,0.069
-chr21,587153,4513271,0.101,0.1
-chr21,5990882,9147840,1.136,-0.486
-chr21,13465836,15716539,0.968,0.043
-chr21,29435229,41950782,-0.021,-0.159
-chr21,45001832,46558187,0.051,0.677
-chr22,11952306,16955267,1.125,-0.458
-chr22,25803127,29394062,0.185,0.599
-chr22,30143810,35624410,-0.555,-0.779
-chr22,38971408,40696103,-0.52,0.08
-chr22,42973678,50274927,-0.111,-0.432
-chrX,9011299,9144907,0.75,-0.602
-chrX,12407659,12788263,0.514,0.31
-chrX,16481392,20013791,0.713,-0.504
-chrX,26305620,31632643,-0.048,0.234
-chrX,32701304,33300764,-0.632,0.5
-chrX,35284560,59104870,0.324,-0.175
-chrX,64873596,76166701,-0.099,-1.092
-chrX,82368948,86582163,-0.563,0.606
-chrX,105934328,108147076,0.294,0.182
-chrX,110739650,115294899,0.388,1.074
-chrX,118586060,119613523,0.151,0.784
-chrX,122787224,124681726,0.061,0.221
-chrX,132188507,133395282,0.348,0.135
-chrX,134088354,135417233,0.484,0.665
-chrX,148023472,151181909,-0.045,0.353
-chrY,3582142,7587424,0.322,-0.793
-chrY,12991299,23519754,-0.908,0.44
-chrY,27616500,27712801,0.872,-0.255
-chrY,36148162,37066255,0.087,-0.033
-chrY,42830147,43605883,0.325,0.258
-chrY,47334932,55101238,-0.269,0.535
+chr,start,end,value1,value2
+chr1,7224218,16393864,-0.196,-0.955
+chr1,21093451,25392112,0.128,0.275
+chr1,31462827,31952156,0.234,0.6
+chr1,38366450,42030463,0.001,-0.552
+chr1,44307009,53690628,0.53,0.355
+chr1,58017049,58046561,0.439,-0.24
+chr1,71140450,73373343,0.1,-0.153
+chr1,75053643,89520859,0.476,-0.012
+chr1,104336479,104610315,-0.38,0.077
+chr1,105073084,107305064,0.705,-0.67
+chr1,113494940,116356831,0.176,-0.254
+chr1,117575148,128178947,-0.59,-0.576
+chr1,131736339,142833193,-0.839,-0.651
+chr1,144078943,146187586,0.071,0.066
+chr1,148020100,148524539,-0.819,0.681
+chr1,155754293,156680649,-0.078,0.657
+chr1,158106050,162375998,-0.269,0.828
+chr1,163398862,166008818,-0.02,-0.136
+chr1,166619333,169155598,-0.11,-0.181
+chr1,174194137,194644863,0.877,-0.69
+chr1,194718064,205425417,0.534,-0.838
+chr1,215014032,220449969,-0.923,0.127
+chr1,220600157,230434907,-0.887,0.212
+chr1,238766557,247422981,-0.135,-1.654
+chr2,964504,5629065,-0.316,-0.471
+chr2,9191519,20321874,-0.172,-0.326
+chr2,24230655,27528340,0.438,0.017
+chr2,34176061,40742196,-0.712,-0.216
+chr2,44210800,54184884,-0.119,0.554
+chr2,55695990,56728217,-0.243,-0.305
+chr2,68930971,78361138,-0.48,-0.804
+chr2,79182263,81377697,-0.613,-0.524
+chr2,82240522,84760536,-0.756,-0.537
+chr2,92052293,92745165,0.049,-0.725
+chr2,108013419,111500591,0.076,0.309
+chr2,118006935,118428896,-1.24,0.231
+chr2,122689953,125135346,-0.359,-1.394
+chr2,139702348,145550968,-0.182,0.183
+chr2,145715863,146060700,-1.162,0.417
+chr2,151128564,157595553,0.71,-0.207
+chr2,158498789,162454685,0.334,-0.979
+chr2,167944325,168248287,-0.829,0.036
+chr2,168538950,189326231,-0.234,0.773
+chr2,193467071,196160565,0.413,-0.499
+chr2,199466490,200950481,0.126,-0.162
+chr2,201555738,205645579,0.311,0.618
+chr2,217242637,223733613,0.048,0.854
+chr2,235992945,241211912,-0.346,-0.287
+chr3,755167,10172855,0.918,-0.213
+chr3,14909280,22502495,0.421,-0.185
+chr3,24704666,26117987,-0.102,0.637
+chr3,28431765,31238287,0.514,0.249
+chr3,35144335,43871052,0.037,-0.697
+chr3,44462683,51466880,-0.451,-0.841
+chr3,58539334,64315820,0.228,0.04
+chr3,64831506,68805511,0.01,0.218
+chr3,72230990,72606793,-0.147,0.037
+chr3,81080534,87401150,-0.316,-0.046
+chr3,103763552,104358837,-0.312,1.28
+chr3,104506911,113777389,-0.041,0.83
+chr3,114949076,122423880,-0.444,0.687
+chr3,125141702,137571428,0.051,-0.769
+chr3,144334873,145649342,0.323,0.422
+chr3,151606808,152323470,0.256,0.443
+chr3,159251493,171370593,-0.207,0.235
+chr3,179255626,180847955,-0.011,-0.719
+chr3,188327835,193158979,0.263,0.585
+chr4,3409738,3937073,-0.197,0.234
+chr4,9267176,11066561,0.25,-0.794
+chr4,17966858,18415859,0.507,0.201
+chr4,18964608,20082815,-0.623,-0.372
+chr4,23202763,31732792,-0.846,-0.788
+chr4,35556750,37025119,0.063,0.848
+chr4,39947625,63436481,0.28,-0.262
+chr4,73892502,76582312,0.064,0.351
+chr4,93303305,94072263,0.514,-0.144
+chr4,95132393,113611317,-0.105,0.819
+chr4,122095404,123555868,0.512,-0.158
+chr4,128412265,136073710,0.743,0.693
+chr4,141287041,156313815,-0.087,-0.757
+chr4,156451592,158558754,0.092,-0.516
+chr4,166333767,169870626,0.279,0.715
+chr4,171846919,172123829,0.018,-0.129
+chr4,172781599,174442344,0.534,-0.02
+chr4,179180755,182087214,0.447,-0.239
+chr4,186486241,189502642,-0.266,-0.041
+chr5,424136,19609039,0.521,0.143
+chr5,21199782,35793799,-0.654,-0.491
+chr5,42045325,43739016,0.167,0.724
+chr5,49358347,50456648,0.45,-0.475
+chr5,57754949,61222628,-0.041,-0.203
+chr5,64155217,67322843,0.268,0.31
+chr5,75672167,76366063,-0.455,0.15
+chr5,78848249,78961977,-0.218,0.183
+chr5,100464271,105530401,-0.676,-0.629
+chr5,105537124,110929980,-0.34,-0.568
+chr5,119127663,119731002,0.19,0.456
+chr5,121809009,126327785,0.342,-0.222
+chr5,139588173,140851553,0.593,0.974
+chr5,143924328,145033793,-0.322,-1.038
+chr5,152062487,154795921,0.815,-0.521
+chr5,157625781,159170737,0.343,0.277
+chr5,163181092,164318421,-0.151,0.164
+chr5,165368467,174011178,-0.365,0.137
+chr6,10264311,14540899,0.28,0.758
+chr6,24605075,31989045,0.129,-0.058
+chr6,35348819,35591625,0.041,-0.496
+chr6,37998463,42404814,-0.162,-0.679
+chr6,57853740,63581564,0.316,-0.091
+chr6,65317547,66576338,-0.576,-0.902
+chr6,73287568,77656238,-0.165,-0.162
+chr6,80935859,88108258,-0.087,-0.159
+chr6,90431261,92212884,-0.285,-0.429
+chr6,92594732,94777469,0.138,0.107
+chr6,98745964,103730754,0.093,0.076
+chr6,114299685,120875645,0.165,-0.692
+chr6,125670030,129401077,0.033,-0.027
+chr6,132417663,133999189,-0.105,-0.619
+chr6,139636211,146262689,0.49,1.02
+chr6,148469438,160988903,0.106,-0.059
+chr6,166233776,169793277,-0.31,-0.023
+chr7,8815697,9267359,0.537,-0.789
+chr7,13808503,24270721,-0.488,0.541
+chr7,28298879,31474430,0.288,-0.721
+chr7,38470467,47289587,0.386,1.069
+chr7,47373878,48991380,0.335,-0.068
+chr7,51564897,52739204,0.639,-0.388
+chr7,60582232,66319029,0.557,0.175
+chr7,66404000,66602594,0.214,-1.001
+chr7,68665931,83678421,-0.377,-0.035
+chr7,89313406,101495578,0.049,0.335
+chr7,104997514,112739198,-0.252,0.487
+chr7,120339754,120777416,-0.387,0.503
+chr7,123000343,124680669,-0.239,-0.444
+chr7,128908937,133028166,-0.107,0.362
+chr7,133803823,144395575,0.454,-0.974
+chr7,151865607,152492242,-0.055,0.758
+chr8,2334444,2957894,-0.313,0.438
+chr8,3937170,26935980,0.303,0.685
+chr8,27239344,33688428,-0.432,0.151
+chr8,34125568,44880501,0.582,-0.26
+chr8,45942871,47253654,-0.062,-0.064
+chr8,62991463,63858765,0.677,0.319
+chr8,64292007,66794388,-0.692,-0.563
+chr8,67321813,73284679,-0.622,0.443
+chr8,83835186,87578280,-0.652,-0.614
+chr8,100630577,103760395,1.017,0.176
+chr8,105334213,106593175,0.222,-0.481
+chr8,109512171,112186060,1.283,-0.543
+chr8,125784997,136006701,0.028,1.048
+chr8,137415043,143256746,-0.17,0.077
+chr9,3178753,8216824,0.009,-0.253
+chr9,10038990,18827563,0.219,0.161
+chr9,23554096,25102611,0.814,0.477
+chr9,32135709,36139419,0.397,0.123
+chr9,37135612,40253644,1.05,0.227
+chr9,40901095,41381406,0.189,-0.244
+chr9,42667114,51437627,-0.033,-0.324
+chr9,52396788,52703591,-0.703,0.672
+chr9,56607748,65156438,-0.454,0.206
+chr9,67091255,77332156,-0.171,-0.027
+chr9,85862286,92271454,0.323,0.237
+chr9,99014847,106700045,-0.614,-0.092
+chr9,113463244,122031095,-0.051,-0.502
+chr9,127746440,130255962,-0.604,-0.569
+chr10,8023226,13217886,0.272,-0.801
+chr10,26322777,32521307,-0.504,0.272
+chr10,35674140,37267864,-0.712,0.404
+chr10,41350556,59470865,-0.065,-0.228
+chr10,62036755,71566925,0.875,-0.348
+chr10,72363606,73685494,-0.872,1.362
+chr10,84656887,85720317,0.695,-0.613
+chr10,88495482,90701865,-0.166,0.532
+chr10,91537398,93080819,1.01,-0.328
+chr10,100889789,105462407,0.478,-0.642
+chr10,110069116,112212054,-0.172,-0.321
+chr10,117093528,134024743,-0.464,-0.239
+chr10,134768976,135442334,-0.256,0.133
+chr11,1725228,13651163,0.137,0.015
+chr11,14781875,15606214,-0.539,0.415
+chr11,18524690,22285430,-0.865,0.247
+chr11,31534331,36113011,-0.699,-0.123
+chr11,39183691,45694888,0.591,-0.255
+chr11,47143795,48221580,-0.209,1.182
+chr11,65578832,67540305,0.108,-0.907
+chr11,71937566,73016793,0.777,0.099
+chr11,88445068,88471583,0.171,0.432
+chr11,89234810,90012685,0.323,1.002
+chr11,99531239,117189257,-0.634,0.033
+chr11,117867275,118937362,0.479,0.192
+chr11,129319101,134358024,-0.288,0.02
+chr12,8819167,10711039,0.179,-0.384
+chr12,13770973,15726718,0.263,-0.38
+chr12,23430112,34627728,-0.606,0.145
+chr12,38640631,43080012,-0.935,-0.235
+chr12,47620971,52816470,0.477,-0.754
+chr12,53881600,63265983,0.543,0.32
+chr12,65261816,72657476,-0.07,0.182
+chr12,74954877,75913488,-0.246,0.865
+chr12,76385323,84281737,0.594,0.079
+chr12,89868467,91039265,0.389,0.072
+chr12,100331266,100675868,-0.251,0.259
+chr12,106542863,115614017,0.229,0.295
+chr12,120027046,129525821,0.629,-0.671
+chr13,11206421,11928330,0.335,-0.327
+chr13,14905448,16842776,-0.126,0.506
+chr13,19636327,24655242,-0.578,0.282
+chr13,35325672,37106416,0.618,0.018
+chr13,37168573,41586969,-0.367,-0.221
+chr13,58556459,70284454,0.042,-0.033
+chr13,73770203,81717204,0.566,-0.254
+chr13,84004901,86500798,-0.026,-0.253
+chr13,87914715,93400409,0.245,-0.277
+chr13,97320630,98957702,-0.074,-0.292
+chr13,105226627,107313555,-0.162,0.079
+chr14,3673603,5083653,-0.746,0.721
+chr14,10129796,10591228,0.572,0.308
+chr14,18348520,19336383,0.137,-0.612
+chr14,21391297,29186405,-0.057,0.475
+chr14,29790129,43362402,-0.262,0.245
+chr14,46389143,48004323,-0.055,-0.588
+chr14,48995814,52086674,0.881,-0.07
+chr14,60864238,65089045,0.528,0.479
+chr14,65243604,66814628,0.181,-0.6
+chr14,70808451,92277044,0.203,-0.049
+chr14,94665962,102432067,0.057,-0.519
+chr15,2918170,4918178,-0.504,-0.114
+chr15,19449862,20885023,0.245,0.015
+chr15,35690029,38320874,-0.268,0.581
+chr15,41645142,45890254,-0.087,-0.435
+chr15,52412228,55116330,-0.843,-0.139
+chr15,55431561,57733313,0.496,0.004
+chr15,61291660,69621737,0.233,0.248
+chr15,72707681,74374684,0.909,-0.247
+chr15,82214886,83220415,1.028,-0.309
+chr15,83256005,90335426,-0.289,0.044
+chr16,3921731,10628029,0.699,0.38
+chr16,14206356,20337906,-0.003,0.193
+chr16,21041280,23677618,0.116,0.125
+chr16,26872190,37741901,-0.951,0.355
+chr16,39492701,45387840,-1.103,-0.088
+chr16,51420373,62046711,-0.221,-0.153
+chr16,63911459,64198747,0.39,0.79
+chr16,70385786,77267303,0.642,0.238
+chr16,77286045,85817325,-0.369,0.286
+chr17,9244824,14234072,-0.225,-0.653
+chr17,15892002,17742389,-0.019,0.497
+chr17,25156790,26139250,0.312,0.546
+chr17,37519808,43235996,-0.006,0.595
+chr17,44540141,46488914,0.3,-0.405
+chr17,48928775,49273370,0.077,-0.156
+chr17,55969997,57458065,0.097,0.272
+chr17,70353322,76185666,0.157,-0.276
+chr18,1960361,2279166,1.022,0.937
+chr18,9073097,11982082,-0.536,0.514
+chr18,13568245,16246693,-0.203,0.07
+chr18,20599512,35226269,1.366,-0.083
+chr18,42301434,42509469,0.002,0.368
+chr18,49093330,51675071,-0.04,-0.107
+chr18,52314571,56840000,0.052,0.213
+chr18,62680965,64495028,-0.613,0.414
+chr19,2325439,6516858,-0.205,1.036
+chr19,11082140,11952049,-0.416,0.179
+chr19,20220230,25839557,-0.496,0.351
+chr19,31327846,36324360,0.214,-0.105
+chr19,38721436,41530623,-0.062,0.682
+chr19,56829497,59001653,-0.203,-0.788
+chr20,60384,9726739,0.3,-0.205
+chr20,13871804,18440052,0.155,-0.154
+chr20,23114557,25933479,0.198,-0.667
+chr20,26329749,42725386,0.993,0.415
+chr20,45966139,47859506,-0.503,-0.671
+chr20,53076280,58406910,0.14,0.069
+chr21,587153,4513271,0.101,0.1
+chr21,5990882,9147840,1.136,-0.486
+chr21,13465836,15716539,0.968,0.043
+chr21,29435229,41950782,-0.021,-0.159
+chr21,45001832,46558187,0.051,0.677
+chr22,11952306,16955267,1.125,-0.458
+chr22,25803127,29394062,0.185,0.599
+chr22,30143810,35624410,-0.555,-0.779
+chr22,38971408,40696103,-0.52,0.08
+chr22,42973678,50274927,-0.111,-0.432
+chrX,9011299,9144907,0.75,-0.602
+chrX,12407659,12788263,0.514,0.31
+chrX,16481392,20013791,0.713,-0.504
+chrX,26305620,31632643,-0.048,0.234
+chrX,32701304,33300764,-0.632,0.5
+chrX,35284560,59104870,0.324,-0.175
+chrX,64873596,76166701,-0.099,-1.092
+chrX,82368948,86582163,-0.563,0.606
+chrX,105934328,108147076,0.294,0.182
+chrX,110739650,115294899,0.388,1.074
+chrX,118586060,119613523,0.151,0.784
+chrX,122787224,124681726,0.061,0.221
+chrX,132188507,133395282,0.348,0.135
+chrX,134088354,135417233,0.484,0.665
+chrX,148023472,151181909,-0.045,0.353
+chrY,3582142,7587424,0.322,-0.793
+chrY,12991299,23519754,-0.908,0.44
+chrY,27616500,27712801,0.872,-0.255
+chrY,36148162,37066255,0.087,-0.033
+chrY,42830147,43605883,0.325,0.258
+chrY,47334932,55101238,-0.269,0.535
diff --git a/example_data/point_pch.csv b/example_data/point_pch.csv
new file mode 100644
index 0000000..4370c78
--- /dev/null
+++ b/example_data/point_pch.csv
@@ -0,0 +1,228 @@
+chr,start,end,value,pch
+chr1,8605110,17214753,0.208,1
+chr1,22124150,36435838,0.905,1
+chr1,43831505,49353791,0.53,1
+chr1,50596455,60340980,0.072,1
+chr1,65153170,71982950,0.301,1
+chr1,97376484,99759071,-0.622,1
+chr1,102170161,105860091,-0.194,1
+chr1,107479672,114805026,-0.554,1
+chr1,119659979,122309350,-0.524,1
+chr1,123292766,128745970,0.408,1
+chr1,129177482,135732779,-0.437,1
+chr1,139104479,146508450,0.379,1
+chr1,150585573,162773105,0.221,1
+chr1,163680967,164977682,0.502,1
+chr1,180714768,184162144,0.984,1
+chr1,210229195,210621824,-0.551,1
+chr1,212317959,218086793,0.198,1
+chr1,221844993,231413571,-0.236,1
+chr2,322387,7343208,-0.022,1
+chr2,7426357,12060515,-0.284,1
+chr2,37877354,39885398,-0.89,1
+chr2,54604311,59260117,-0.605,1
+chr2,60742478,62314004,-0.047,1
+chr2,64439479,77475311,0.277,1
+chr2,82250133,83284054,-0.582,1
+chr2,97748136,103108120,0.188,1
+chr2,108260394,112607926,0.567,1
+chr2,114317442,123883033,1.394,1
+chr2,125994280,137371506,0.423,1
+chr2,144064306,146662677,-0.029,1
+chr2,175772902,177920665,-0.498,1
+chr2,192694161,193150436,-0.429,1
+chr2,196896525,212863096,0.168,1
+chr2,217507310,219835844,0.505,1
+chr2,220549697,230883760,-0.023,1
+chr2,231161105,234705727,-0.175,1
+chr3,11201153,11904310,0.163,1
+chr3,23281119,32534037,-0.066,1
+chr3,47797033,48171649,-0.252,1
+chr3,49308257,68575768,-0.364,1
+chr3,73430727,76357147,0.02,1
+chr3,80944746,87145342,0.336,1
+chr3,87474924,90986916,-0.361,1
+chr3,93479203,94560963,-0.006,1
+chr3,121395059,124720880,0.269,1
+chr3,126119336,134480084,0.947,8
+chr3,146309182,146843941,-0.171,8
+chr3,150772326,161784830,0.588,8
+chr3,173815285,183022931,-0.237,8
+chr3,186625119,191677818,-0.134,8
+chr4,2395833,10913507,-0.491,8
+chr4,22556915,26058844,0.114,8
+chr4,39287820,42463996,-0.232,8
+chr4,46724591,53612787,0.601,8
+chr4,57074687,59429236,-0.218,8
+chr4,64589254,73386597,-0.198,8
+chr4,81349774,103578207,1.024,8
+chr4,111179438,119347148,-0.169,8
+chr4,125496124,125668156,-0.768,8
+chr4,127966626,130720227,0.94,8
+chr4,140310365,140933768,0.582,8
+chr4,146445904,153341029,-0.68,8
+chr4,167404664,174580778,0.135,8
+chr4,179136634,185782720,0.416,8
+chr5,11191174,28615253,0.027,8
+chr5,28633858,37129555,-0.661,8
+chr5,50273164,77788987,0.509,8
+chr5,82946361,83142043,-0.427,8
+chr5,90751272,94269513,0.362,8
+chr5,102902697,110144253,0.651,8
+chr5,110546934,112747898,0.73,8
+chr5,115002276,116283358,0.664,8
+chr5,119590435,120012626,0.038,8
+chr5,122556954,128527763,-0.153,8
+chr5,130730495,145378583,0.442,8
+chr5,150050490,160570121,-0.851,8
+chr5,167618747,172220772,1.117,8
+chr6,6606668,7722418,0.295,8
+chr6,37980898,44939737,0.64,8
+chr6,45053133,46980895,-0.534,8
+chr6,53858331,57600709,0.651,8
+chr6,58871627,59961945,-0.44,8
+chr6,63008520,72917878,0.222,8
+chr6,75567935,100935044,-0.645,8
+chr6,102653750,111715462,0.153,8
+chr6,113998286,121215278,0.3,8
+chr6,130817449,138930394,0.27,8
+chr6,140410317,145131947,0.205,8
+chr6,145574814,168204184,0.562,8
+chr7,11229788,42851657,-0.062,8
+chr7,46299973,47301871,0.019,13
+chr7,59003737,65956990,-0.403,13
+chr7,73326108,73473270,0.105,13
+chr7,77796363,80054326,0.075,13
+chr7,86115558,87787714,-0.236,13
+chr7,113443674,119010743,0.501,13
+chr7,128949812,130185682,0.187,13
+chr7,130460967,132088129,0.746,13
+chr7,144685857,147448447,-0.054,13
+chr7,152376120,154950192,0.032,13
+chr7,155976407,156277751,-0.174,13
+chr8,2408460,12986596,-0.076,13
+chr8,14854572,20542149,-0.294,13
+chr8,24326733,30492501,-0.437,13
+chr8,48178614,48982287,-0.009,13
+chr8,52413329,69606810,-0.031,13
+chr8,71740643,77335652,-0.235,13
+chr8,93032241,93704913,0.494,13
+chr8,100333774,100802024,0.02,13
+chr8,101256029,111799746,0.28,13
+chr8,124450497,129625236,0.211,13
+chr8,141999807,142356651,-0.251,13
+chr9,12421716,51108752,-0.027,13
+chr9,51466932,57684875,-0.211,13
+chr9,63254046,70711052,0.896,13
+chr9,74706991,75708069,0.217,13
+chr9,77817886,84127092,0.71,13
+chr9,91171621,98092834,0.153,13
+chr9,103212617,111849980,0.165,13
+chr9,115159815,115465833,-1.253,13
+chr9,122064901,124459082,0.421,13
+chr9,128969944,131253954,0.045,13
+chr10,11228159,18047194,-0.652,13
+chr10,19612468,29388170,-0.007,13
+chr10,47637045,47746600,0.382,13
+chr10,52253884,54486630,-0.401,13
+chr10,71250187,74915884,-1.164,13
+chr10,88858123,90074658,-0.089,13
+chr10,91458963,97723189,-0.913,13
+chr10,109626426,111390871,0.076,13
+chr10,125340083,131187666,-1.593,13
+chr10,134738127,134977247,0.227,13
+chr11,234136,5401686,-0.806,13
+chr11,13370812,14466797,0.352,13
+chr11,16951795,44801296,-1.111,13
+chr11,46052489,58556125,-0.586,16
+chr11,60854273,61902883,0.742,16
+chr11,65835402,72120468,0.489,16
+chr11,90389117,99107112,0.306,16
+chr11,101560301,107357619,0.112,16
+chr11,119812514,123688266,-0.052,16
+chr11,128515663,132431158,0.146,16
+chr12,7434839,18272884,0.766,16
+chr12,41370856,49541785,-0.273,16
+chr12,50435043,60519138,0.305,16
+chr12,62235861,65044017,0.13,16
+chr12,76035112,80736345,-0.591,16
+chr12,85024864,85048664,-0.155,16
+chr12,86168230,91419501,-0.239,16
+chr12,115645804,115928706,0.48,16
+chr12,122559626,124807378,-0.56,16
+chr12,127031023,131999659,0.32,16
+chr13,1859616,7600796,0.011,16
+chr13,22809899,44606073,0.004,16
+chr13,46089975,46770794,-0.707,16
+chr13,68999720,73638927,0.065,16
+chr13,75822706,80850495,0.832,16
+chr13,81293324,87850043,-0.238,16
+chr13,94133365,96404480,0.294,16
+chr13,109589145,111174828,-0.109,16
+chr14,7162867,8636509,-0.025,16
+chr14,15024342,17130258,1.085,16
+chr14,29676533,37889042,0.012,16
+chr14,49917089,50988550,0.421,16
+chr14,69184721,71548502,0.004,16
+chr14,72224042,80321016,0.149,16
+chr14,83801078,85128896,0.939,16
+chr14,87733412,91810451,0.366,16
+chr15,998316,13936847,-0.547,16
+chr15,19466207,24465224,-1.056,16
+chr15,32573119,35796196,-1.081,16
+chr15,41167114,49709767,-0.149,16
+chr15,63299723,64365293,0.034,16
+chr15,70881008,74031528,-0.708,16
+chr15,79698093,82210219,1.045,16
+chr15,89614962,100794587,0.085,16
+chr16,3092657,8414236,-0.388,16
+chr16,10960484,13320745,-0.805,16
+chr16,13866718,29142410,0.956,16
+chr16,34925995,40199410,1.002,16
+chr16,53462168,66657308,0.254,17
+chr16,68466241,75488756,-0.282,17
+chr16,84031208,84182581,-0.356,17
+chr17,11631949,12952035,-0.642,17
+chr17,15186300,15433621,-0.073,17
+chr17,27397644,44804353,0.133,17
+chr17,55703492,60067368,-0.166,17
+chr17,63872339,66199323,0.43,17
+chr17,67072937,81114330,0.359,17
+chr18,1164377,10333289,-0.516,17
+chr18,12510034,20218371,0.363,17
+chr18,33916098,40753875,-1.085,17
+chr18,45374264,46067105,-0.598,17
+chr18,59371945,64818449,0.123,17
+chr18,66780963,73883588,0.571,17
+chr19,16990448,18212156,-0.596,17
+chr19,22931386,31629966,0.683,17
+chr19,33729097,44301503,-0.123,17
+chr19,51974316,53094091,-0.064,17
+chr20,6977959,12998171,-0.16,17
+chr20,20311881,33973323,-0.229,17
+chr20,46317852,52862645,0.191,17
+chr20,56911052,61079159,-0.306,17
+chr20,61236468,61266905,0.78,17
+chr21,2001039,4357271,0.111,17
+chr21,9004891,10099999,0.88,17
+chr21,27260228,29455189,0.321,17
+chr21,34645344,42458547,-0.659,17
+chr22,4825758,8400887,0.631,17
+chr22,14299148,15586305,-0.16,17
+chr22,16040081,26781217,-0.008,17
+chr22,29193678,37708833,-0.14,17
+chrX,97647,3111737,-0.542,17
+chrX,4987551,17539329,0.569,17
+chrX,21871434,26332080,-0.366,17
+chrX,27988707,31770785,0.516,17
+chrX,43870022,74177794,0.811,17
+chrX,80054092,83478272,-0.751,17
+chrX,88255121,93062599,-0.615,17
+chrX,97487198,98125831,-0.002,17
+chrX,100482539,102647539,-0.193,17
+chrX,126161716,138183928,0.483,17
+chrX,146964842,152277657,-0.141,17
+chrY,227775,267760,0.416,17
+chrY,3584528,15982125,0.013,17
+chrY,16996505,23636027,-0.227,17
+chrY,51008787,52030112,0.593,17
diff --git a/example_data/point_pch_cex.csv b/example_data/point_pch_cex.csv
new file mode 100644
index 0000000..fe48c9a
--- /dev/null
+++ b/example_data/point_pch_cex.csv
@@ -0,0 +1,206 @@
+chr,start,end,value,pch,cex
+chr1,4049230,11358879,-0.59,10,0.4
+chr1,18671867,29619034,0.442,10,0.7
+chr1,57445176,66216574,1.511,10,0.3
+chr1,96228476,98543344,-1.121,10,0.6
+chr1,103811438,107211180,-0.854,10,0.3
+chr1,108908318,109657832,-0.421,10,1
+chr1,122165571,124591645,-0.426,10,0.9
+chr1,127044769,129080501,-0.687,10,1.1
+chr1,146102764,162491678,0.302,10,0.5
+chr1,166101539,167555684,0.571,10,0.5
+chr1,175206661,181310583,0.453,10,0.5
+chr1,188871743,198062931,0.413,10,0.5
+chr1,213832346,225072263,-0.089,10,0.5
+chr1,236646055,240754887,-0.095,10,0.7
+chr1,242238969,244965818,-0.548,10,0.2
+chr1,245360289,247088140,0.562,10,0.4
+chr2,15766774,17379539,-0.515,10,0.6
+chr2,19492809,27821141,-0.054,10,0.2
+chr2,29213359,34294317,0.144,10,1.1
+chr2,44281800,65233444,-0.565,10,0.3
+chr2,71704138,78750552,-0.295,10,0.4
+chr2,89292219,107128455,-0.525,10,0.4
+chr2,118314779,124457289,0.385,10,1
+chr2,125180358,126807358,0.705,10,0.4
+chr2,135991961,137756439,0.185,10,0.6
+chr2,141248770,157531713,-0.523,10,0.4
+chr2,160657818,161635773,0.239,10,1
+chr2,162444904,187359702,-1.065,10,0.7
+chr2,204723603,213865123,0.25,10,0.4
+chr2,220532130,229138746,-0.408,10,0.9
+chr2,233532177,236103709,0.143,10,0.8
+chr2,236297986,239753261,-0.046,10,1.1
+chr3,6713313,17929519,-0.886,10,0.3
+chr3,23089106,47204808,-0.249,10,0.9
+chr3,52114373,55770210,0.13,10,0.6
+chr3,61530058,69032777,-0.54,10,0.9
+chr3,75919867,87032684,0.313,10,1.1
+chr3,90739686,102093258,-0.16,10,0.5
+chr3,113268768,115076560,-0.125,10,0.7
+chr3,115824785,123100725,0.274,10,0.6
+chr3,133620346,146051317,-0.413,10,1.1
+chr3,159745322,162503943,-0.504,10,1
+chr3,172023785,173031326,-0.218,10,0.4
+chr3,179586845,185405332,-0.093,10,0.4
+chr3,187241409,192413696,-0.276,10,0.6
+chr4,4566716,4567393,-0.008,10,0.5
+chr4,19393544,22254613,-0.767,10,0.9
+chr4,28385631,32011268,0.113,10,0.8
+chr4,36023308,37590867,0.054,10,0.5
+chr4,37983486,50552674,0.19,10,0.8
+chr4,51109356,65968731,-0.168,10,0.6
+chr4,72761399,91691619,0.134,17,0.4
+chr4,101737149,102799485,-0.025,17,0.9
+chr4,119941853,135488000,0.01,17,0.6
+chr4,140288433,147650646,-0.913,17,0.5
+chr4,157902229,165677923,-0.936,17,0.5
+chr4,178078440,178977471,1.181,17,0.7
+chr4,179829342,191016305,-0.21,17,0.4
+chr5,466977,6356196,-0.287,17,0.8
+chr5,15559041,35359926,0.281,17,0.4
+chr5,38969245,40112978,0.179,17,0.8
+chr5,45686593,76016663,-0.073,17,0.4
+chr5,79995843,82695931,-0.634,17,0.4
+chr5,89217215,91145707,0.365,17,1
+chr5,101586624,103458753,0.092,17,1.1
+chr5,109794773,110128971,-0.535,17,0.6
+chr5,121813371,134534310,-0.042,17,0.5
+chr5,144345717,154244309,0.479,17,0.7
+chr5,170521953,171056062,0.14,17,0.8
+chr5,175075617,179548738,0.323,17,0.8
+chr6,5822289,9897940,0.166,17,0.9
+chr6,11946919,16537304,1.109,17,0.6
+chr6,17856089,22104467,-0.595,17,0.3
+chr6,25527057,26136691,-0.117,17,1.1
+chr6,30354152,32970164,0.745,17,0.2
+chr6,33460575,40612039,-0.009,17,0.7
+chr6,79255875,103932927,0.271,17,0.9
+chr6,115186531,118380302,-0.145,17,1
+chr6,119382273,128956859,0.366,17,1
+chr6,152595001,159398188,-0.072,17,0.9
+chr6,163058952,170889627,-0.392,17,0.2
+chr7,4065399,7750398,-0.327,17,0.6
+chr7,9065662,15775923,0.174,17,0.2
+chr7,27916606,38932535,0.994,17,0.2
+chr7,39870663,44976723,0.266,17,0.4
+chr7,46118235,48164280,0.542,17,0.4
+chr7,58203255,66520696,-1.323,17,0.4
+chr7,83644879,84737227,-0.384,17,0.2
+chr7,87881702,88500666,0.802,17,1
+chr7,117059335,117865288,-0.266,17,0.6
+chr7,125987196,151787349,-0.024,17,0.2
+chr7,151793630,155405618,-0.631,17,0.2
+chr8,1042226,6063629,-0.221,17,0.2
+chr8,10391655,31571517,-0.603,17,0.4
+chr8,32813028,44523270,-0.197,17,0.8
+chr8,47405361,54034064,1.31,17,0.7
+chr8,65065534,72375654,0.672,17,1
+chr8,82745669,86770514,-1.047,17,1.1
+chr8,94447068,102882996,-0.123,17,0.6
+chr8,107794354,109475923,-0.074,17,1.1
+chr8,111888626,130187424,-0.053,17,0.8
+chr8,130764927,131123830,-0.242,17,0.7
+chr9,6780434,8776636,0.294,18,0.6
+chr9,9645273,15404025,1.133,18,0.5
+chr9,16754259,25000943,-1.02,18,0.4
+chr9,25041250,28571279,-0.425,18,1
+chr9,32282995,33499747,0.476,18,0.7
+chr9,54414502,54804733,0.396,18,0.4
+chr9,68705209,75324948,0.181,18,0.6
+chr9,87852834,98255545,-0.315,18,0.3
+chr9,123611908,131251845,0.34,18,0.6
+chr10,2395032,3397453,0.451,18,0.3
+chr10,17063703,19528831,0.477,18,0.2
+chr10,34762823,42933769,-0.455,18,1.1
+chr10,52533135,67600690,0.076,18,0.6
+chr10,72951019,79722347,-0.329,18,1
+chr10,81041867,110141294,0.409,18,0.4
+chr10,111302018,111826396,0.062,18,1.1
+chr10,112709016,120872036,-0.022,18,0.4
+chr10,132295674,132630796,0.644,18,0.7
+chr11,303046,3900211,-0.471,18,0.3
+chr11,32957225,34708951,-0.663,18,0.3
+chr11,35005439,41930874,-0.377,18,0.3
+chr11,64020197,66221101,0.576,18,1.1
+chr11,76316526,81120574,0.316,18,0.9
+chr11,81431657,83833635,-0.353,18,0.9
+chr11,86969293,105280051,-0.367,18,0.2
+chr11,105677207,115221740,0.567,18,0.5
+chr11,119536425,126266897,0.083,18,1.1
+chr12,2921668,4177879,0.783,18,0.4
+chr12,11515263,36886884,0.036,18,0.5
+chr12,38487891,40533211,-0.293,18,0.9
+chr12,41300650,46438293,1.044,18,1.1
+chr12,50105038,60032163,-0.625,18,1.1
+chr12,70344857,73362150,0.177,18,1
+chr12,86075587,86399550,-0.537,18,0.4
+chr12,86592771,90504183,0.137,18,1.1
+chr12,107007839,115067246,-0.012,18,0.5
+chr13,5389726,5832238,0.107,18,1
+chr13,19912020,27778780,-0.262,18,0.3
+chr13,33012824,37629616,0.41,18,0.2
+chr13,38089176,43838931,-0.007,18,1.1
+chr13,51935776,82167073,-0.178,18,0.6
+chr13,92484096,96419653,0.252,18,0.8
+chr13,101715828,106676181,-0.08,18,0.2
+chr13,107059392,110355617,-0.217,18,1
+chr14,2624138,7663979,0.077,18,1
+chr14,13953643,14409485,0.418,18,0.8
+chr14,27868937,29917291,-0.489,18,0.6
+chr14,35696631,38188510,0.395,18,0.9
+chr14,43877383,46088225,-0.779,18,0.5
+chr14,67728149,71919590,-0.576,18,0.5
+chr14,99206311,101987621,-0.145,18,1
+chr15,16677133,18145765,0.361,20,0.5
+chr15,18426346,28269976,-0.115,20,0.3
+chr15,51438245,58053815,0.369,20,0.5
+chr15,62668994,69377093,-0.186,20,0.9
+chr15,71556981,77925914,-0.229,20,1.1
+chr15,78447592,83046456,-0.146,20,0.9
+chr15,94058556,94435557,0.635,20,0.3
+chr16,4395683,5898289,-0.498,20,0.9
+chr16,8642478,20795591,0.097,20,0.8
+chr16,27839026,48105600,0.204,20,1
+chr16,59993089,68060477,0.059,20,0.8
+chr16,74255216,82040570,-0.411,20,0.2
+chr16,85585293,89118114,0.916,20,0.9
+chr17,18971780,22315940,0.676,20,0.8
+chr17,32117039,36827895,-0.061,20,1
+chr17,41040139,60694228,0.043,20,0.8
+chr17,65814648,69403621,-1.177,20,1.1
+chr17,73097880,75906748,0.747,20,1
+chr18,4614532,14449205,0.082,20,0.7
+chr18,17953029,18160176,-0.163,20,0.9
+chr18,33934850,44348170,0.434,20,0.9
+chr18,67863102,68485396,0.713,20,0.2
+chr18,77104369,77929637,0.048,20,1.1
+chr19,19172259,21452151,0.112,20,0.6
+chr19,22090142,23688774,0.44,20,0.8
+chr19,25031320,30968158,0.389,20,0.2
+chr19,45726452,49461280,0.527,20,0.5
+chr20,4016749,6214155,-0.249,20,0.2
+chr20,12618026,23103628,0.754,20,1.1
+chr20,42049856,57054482,-0.083,20,0.6
+chr20,60263193,60816866,-0.082,20,0.3
+chr21,9597760,23707352,-0.015,20,0.7
+chr21,23942492,24649015,-0.681,20,1.1
+chr21,35429098,42618732,1.138,20,1.1
+chr22,2315304,5983175,0.686,20,0.6
+chr22,6976196,18170417,-0.362,20,0.3
+chr22,35999741,36774215,0.225,20,0.5
+chr22,40695813,47841787,0.122,20,1
+chrX,9258570,17224417,-0.207,20,0.9
+chrX,17587130,19410249,-0.01,20,0.6
+chrX,29149625,43108177,0.246,20,0.7
+chrX,54777751,63821202,-0.293,20,0.5
+chrX,67304655,68894633,0.363,20,0.6
+chrX,79870385,83347668,0.312,20,0.5
+chrX,91059265,93027581,0.668,20,0.9
+chrX,96313279,109916818,-0.844,20,0.8
+chrX,119862150,121372756,-0.122,20,0.4
+chrX,133081488,151580880,-0.065,20,0.8
+chrY,3339746,5696576,-0.104,20,0.2
+chrY,14103725,21519466,-0.044,20,0.3
+chrY,38977887,46475673,-0.469,20,0.2
+chrY,47256384,55979679,-0.275,20,1.1
diff --git a/track6.csv b/example_data/rect_discrete.csv
similarity index 96%
rename from track6.csv
rename to example_data/rect_discrete.csv
index e02655d..2e6cd15 100644
--- a/track6.csv
+++ b/example_data/rect_discrete.csv
@@ -1,458 +1,458 @@
-chr,start,end,value1
-chr1,1465,5857186,b
-chr1,6005405,7051583,c
-chr1,7459754,11390112,h
-chr1,11461667,11666810,h
-chr1,11735789,13740274,a
-chr1,13741155,17190699,h
-chr1,17636177,23479534,e
-chr1,24394466,30454885,a
-chr1,31765677,36050094,e
-chr1,36051556,50189335,h
-chr1,50192310,64730203,b
-chr1,64315037,70743879,g
-chr1,71531571,78851045,d
-chr1,78868899,85642286,f
-chr1,85659982,93150139,d
-chr1,93151177,102158018,h
-chr1,103875958,106380147,d
-chr1,111641069,111801376,f
-chr1,112723797,113286724,e
-chr1,118530002,119737046,b
-chr1,119825958,133304507,f
-chr1,133316714,160176346,h
-chr1,160217706,170385697,f
-chr1,170687925,175991656,c
-chr1,177652707,178009234,b
-chr1,178122796,187942731,b
-chr1,187959181,193321748,c
-chr1,194634579,197022817,a
-chr1,198778345,201389972,a
-chr1,202187044,202718077,c
-chr1,202720120,223314825,c
-chr1,223498720,228677287,a
-chr1,228793513,237373614,b
-chr1,238526388,241165068,b
-chr1,241281409,248838956,c
-chr2,575,1026652,e
-chr2,1118627,4074671,h
-chr2,4121264,5775800,d
-chr2,5883646,6188515,f
-chr2,6236835,7737452,f
-chr2,7809564,8437225,d
-chr2,8438815,16764793,g
-chr2,16770851,25657129,e
-chr2,35661687,46518474,d
-chr2,47176753,47779373,h
-chr2,48581813,56906187,d
-chr2,57448847,60043136,h
-chr2,61853834,62305213,e
-chr2,63002878,67975779,e
-chr2,67982988,81153143,e
-chr2,83322672,83988222,h
-chr2,84013475,88609453,h
-chr2,89647671,90716925,e
-chr2,91231357,92035753,a
-chr2,92935334,95852998,g
-chr2,96031734,108343096,c
-chr2,108451987,114014187,h
-chr2,114220194,119963393,g
-chr2,123135627,123812402,d
-chr2,124135706,127239645,c
-chr2,127739947,132426112,f
-chr2,132430773,141021042,c
-chr2,142245109,144069288,a
-chr2,144628039,144720573,f
-chr2,151610987,151992479,a
-chr2,152009841,174218242,b
-chr2,176444373,176671890,d
-chr2,177092656,181330814,g
-chr2,181345542,201358151,f
-chr2,201438325,212939406,a
-chr2,214881585,215755342,e
-chr2,215836645,217859263,d
-chr2,217916747,226165487,e
-chr2,227439036,227770831,a
-chr2,227964567,231562984,a
-chr2,233303405,234499443,e
-chr2,235622983,236785366,c
-chr2,236798242,242648653,a
-chr3,13,3831804,d
-chr3,3989861,11612588,g
-chr3,13006291,15943115,b
-chr3,16822175,16851578,f
-chr3,17306778,19320312,g
-chr3,19827014,24143285,d
-chr3,24206611,35803756,d
-chr3,38232660,40730880,e
-chr3,40746418,47490925,d
-chr3,47505229,51750387,a
-chr3,51826821,56189222,e
-chr3,57422961,62317947,h
-chr3,62321260,83845357,d
-chr3,84405975,86572536,b
-chr3,90374730,90454970,g
-chr3,90462646,109633225,g
-chr3,114528724,114604580,g
-chr3,114789891,123322478,f
-chr3,123427162,140552765,b
-chr3,142258502,146828589,b
-chr3,146929004,167366311,e
-chr3,168158332,168866882,b
-chr3,169049832,169096114,e
-chr3,169108840,176935416,h
-chr3,178201491,195369841,e
-chr4,911,11542798,h
-chr4,16991464,18165367,a
-chr4,18211626,23846844,e
-chr4,24035221,26604567,a
-chr4,27566444,27992469,d
-chr4,28276499,41116799,g
-chr4,41529824,43014993,c
-chr4,43272948,47064915,f
-chr4,48177980,54551721,c
-chr4,54660128,68783343,d
-chr4,70252023,70334888,d
-chr4,70344540,73084563,f
-chr4,75153397,75500954,f
-chr4,79285027,81539201,d
-chr4,81736144,83319610,f
-chr4,83655766,87725054,b
-chr4,87726095,105142804,a
-chr4,106538792,108371238,c
-chr4,109025769,121125427,g
-chr4,121134744,124367355,g
-chr4,125045578,148133284,b
-chr4,148729892,154268083,g
-chr4,154319943,159258050,b
-chr4,159336210,174306749,d
-chr4,174964320,176275294,e
-chr4,176366743,182959925,c
-chr4,183372421,190408082,e
-chr5,56,2698252,h
-chr5,2719598,9370038,c
-chr5,9384790,15241474,e
-chr5,16796720,17016816,g
-chr5,17197132,18226184,g
-chr5,19595607,21480489,a
-chr5,21774271,27644915,f
-chr5,27645010,35297088,b
-chr5,35388251,45815761,a
-chr5,47919368,50681938,b
-chr5,51031281,74321209,c
-chr5,75015046,76875383,d
-chr5,77310439,84485426,e
-chr5,84823359,84840854,g
-chr5,89131406,94601777,f
-chr5,94719081,102430350,h
-chr5,102656020,103137863,h
-chr5,104538359,116718534,d
-chr5,116724213,134095796,d
-chr5,135319451,141939419,c
-chr5,142007020,150001379,d
-chr5,153406265,155719357,e
-chr5,155895554,158225360,c
-chr5,159563350,161532690,g
-chr5,161667894,171190500,b
-chr5,172472102,178600652,f
-chr6,6060,3270154,b
-chr6,3352084,7019286,b
-chr6,7193581,7467823,f
-chr6,7542998,15307451,d
-chr6,16523654,20612816,e
-chr6,20613099,36024423,b
-chr6,36123274,37269211,h
-chr6,40747893,43320173,e
-chr6,45418703,46108417,b
-chr6,54706692,63788032,e
-chr6,63790207,80799564,d
-chr6,82933682,85172113,h
-chr6,88466966,88707453,b
-chr6,88003772,110358613,b
-chr6,111124806,111484037,g
-chr6,111963034,112847932,b
-chr6,112858307,148495033,a
-chr6,148975937,153750605,d
-chr6,154213571,155381367,f
-chr6,155587939,159061388,f
-chr6,159140585,169834638,g
-chr6,169880156,170553943,f
-chr6,170715332,170720245,d
-chr7,146,4643362,e
-chr7,4723845,16418898,e
-chr7,18548093,19102872,f
-chr7,19315985,19719054,c
-chr7,19812468,23608459,d
-chr7,25156482,28002080,d
-chr7,28086602,31664525,g
-chr7,31713066,36655965,g
-chr7,36772347,58930702,b
-chr7,58941539,68439763,f
-chr7,69231052,71419385,c
-chr7,71525822,76041321,f
-chr7,76051642,85321839,d
-chr7,86337740,88505586,b
-chr7,88660984,100826252,g
-chr7,100965911,107026572,e
-chr7,108388846,111616407,d
-chr7,112420469,113634639,f
-chr7,114299336,130712531,a
-chr7,131509494,138941805,h
-chr7,139887807,150426925,e
-chr7,150518669,158302975,d
-chr8,410,1017233,e
-chr8,1164155,8864820,b
-chr8,8941196,13243445,e
-chr8,13338616,13630697,c
-chr8,13716583,22743905,a
-chr8,23547834,24355168,d
-chr8,24361750,50166531,e
-chr8,50251215,55127788,e
-chr8,55270428,65477404,g
-chr8,66749396,69061695,b
-chr8,70940921,73360243,h
-chr8,74869254,81016370,g
-chr8,81187961,88680093,e
-chr8,88690545,108688938,f
-chr8,110815664,113182112,e
-chr8,113193154,115941295,b
-chr8,120180377,120678964,a
-chr8,120975820,126409995,d
-chr8,126527195,135237297,f
-chr8,135333396,140398029,e
-chr8,143367871,144653185,f
-chr9,1661,2231059,b
-chr9,2382277,5342267,a
-chr9,5560449,6780512,g
-chr9,6823892,10228067,e
-chr9,10359022,12517582,g
-chr9,12524222,17754747,c
-chr9,18122869,18997422,g
-chr9,19150082,20596490,a
-chr9,21087653,34145804,h
-chr9,43635291,44082199,d
-chr9,44095912,75189721,a
-chr9,75199796,84525309,c
-chr9,84679310,94668297,f
-chr9,95306723,97126308,h
-chr9,97260292,105054493,h
-chr9,105861010,111514861,c
-chr9,111526309,120170979,c
-chr9,120377482,122617957,g
-chr9,123433306,125207263,c
-chr9,126755099,134929566,h
-chr9,135331641,139219363,b
-chr10,70,2122522,h
-chr10,2294526,6233897,d
-chr10,6378054,9783147,c
-chr10,9793980,10129442,f
-chr10,11020516,19334406,f
-chr10,19454854,28966602,h
-chr10,29058173,32391979,b
-chr10,32487641,42497015,h
-chr10,42596258,49990152,g
-chr10,50056391,58585905,b
-chr10,59883792,68430860,b
-chr10,68466803,68922705,d
-chr10,69559322,81645546,b
-chr10,82438748,86549260,f
-chr10,86647044,86656339,h
-chr10,91441924,96475190,a
-chr10,96583906,103995614,a
-chr10,104826829,105781750,f
-chr10,105834923,111005988,c
-chr10,111791356,118051176,c
-chr10,118336428,119467595,c
-chr10,120933255,134103907,e
-chr11,936,1092496,d
-chr11,1137962,5462236,h
-chr11,5594284,18989194,b
-chr11,21184313,23699291,h
-chr11,24619590,34547778,g
-chr11,34632091,43365063,a
-chr11,45464248,46199787,c
-chr11,48149799,48949614,a
-chr11,49056742,58995908,a
-chr11,59060313,71977477,g
-chr11,72589665,80825423,e
-chr11,80837819,85279282,e
-chr11,86049888,99936427,b
-chr11,100210082,110606845,g
-chr11,110843262,114986269,f
-chr11,115027921,121830907,f
-chr11,121940651,124100383,f
-chr11,125601089,129130425,g
-chr11,129438177,133748751,g
-chr12,994,4980517,b
-chr12,5086250,13898039,d
-chr12,14522503,15711316,g
-chr12,18509923,22199043,f
-chr12,23257996,26751628,e
-chr12,27843402,28390575,a
-chr12,30959729,37964447,a
-chr12,39105239,43959925,e
-chr12,44002344,63244152,a
-chr12,64331399,64909814,g
-chr12,64911690,85370640,e
-chr12,86517847,90413217,c
-chr12,90421966,107060887,b
-chr12,108959709,111099818,g
-chr12,111680155,114385547,b
-chr12,114809307,115007637,b
-chr12,115196270,121748000,d
-chr12,121878526,129226757,c
-chr13,832,427376,c
-chr13,4735396,12165187,f
-chr13,13580214,16684119,e
-chr13,16735694,18972953,a
-chr13,18987032,33602439,d
-chr13,33968832,35121624,f
-chr13,35122156,64441638,h
-chr13,65160581,68230762,e
-chr13,69359340,73506818,h
-chr13,74326982,74798526,h
-chr13,74799071,90451418,g
-chr13,92100025,93779737,f
-chr13,93878302,97174667,g
-chr13,97413302,114551137,b
-chr14,7070,2413791,a
-chr14,2529837,4998885,c
-chr14,5401318,5402789,h
-chr14,5598158,13516520,g
-chr14,13692845,41332346,c
-chr14,41675867,49013699,h
-chr14,50515297,55840473,h
-chr14,56221300,58451666,a
-chr14,58541569,75714734,h
-chr14,75715948,81186785,h
-chr14,81197682,83577430,b
-chr14,83578807,99163202,d
-chr14,92529448,107114936,g
-chr15,667,1318281,g
-chr15,1329020,5847946,a
-chr15,5874304,12708114,h
-chr15,12841577,17492642,d
-chr15,17582114,25980431,c
-chr15,25981979,38440021,h
-chr15,38723295,43457636,h
-chr15,44189034,51259797,c
-chr15,51260219,63205323,e
-chr15,63206424,78494436,g
-chr15,79251386,82041350,f
-chr15,82042007,92931335,b
-chr15,93058545,97968418,g
-chr15,98892552,102026648,e
-chr16,345,5637495,f
-chr16,5703800,13518472,b
-chr16,14629550,15850065,d
-chr16,16443347,20106826,h
-chr16,23715559,25669426,a
-chr16,25823862,26338600,h
-chr16,26414018,29178547,b
-chr16,29180001,43231112,e
-chr16,43328103,50871516,h
-chr16,56284912,60483918,f
-chr16,60496230,66836376,e
-chr16,67071000,70811069,g
-chr16,70812274,87926336,a
-chr16,88046853,90332907,h
-chr17,5129,3904706,a
-chr17,4090123,5600058,h
-chr17,5618990,9498704,d
-chr17,9552741,11251579,c
-chr17,12623696,12946769,b
-chr17,13001291,24133455,g
-chr17,24223757,26145329,b
-chr17,26211939,36019725,b
-chr17,36169516,37634259,e
-chr17,38248214,44536088,d
-chr17,44537365,55204990,e
-chr17,56886075,69991550,g
-chr17,70003470,79780731,d
-chr18,95,566229,h
-chr18,5734924,24434036,g
-chr18,24677019,30754905,f
-chr18,31088659,31393439,h
-chr18,31697999,39231974,h
-chr18,39242379,46904865,g
-chr18,47024773,47644848,a
-chr18,48590170,54422765,e
-chr18,54576802,54847929,a
-chr18,54979735,59893606,f
-chr18,60015902,66773399,a
-chr18,66774330,77025384,g
-chr19,41,1177590,a
-chr19,1294223,7807367,h
-chr19,7932233,13829487,f
-chr19,14911430,21824532,d
-chr19,22444042,25946135,b
-chr19,26264592,41009716,f
-chr19,41176962,45089868,d
-chr19,45401777,48482085,f
-chr19,49475348,52941778,c
-chr19,53059759,55358524,c
-chr19,55483504,58803808,b
-chr20,150,4706747,c
-chr20,4801630,8012566,f
-chr20,8178986,14019053,d
-chr20,14176047,19815533,f
-chr20,19825651,34929666,b
-chr20,35008129,35968986,f
-chr20,36002977,40204442,b
-chr20,41058455,42034892,a
-chr20,42186755,49996384,g
-chr20,50007010,51413993,c
-chr20,52350649,62112176,h
-chr21,2339,3992436,d
-chr21,4084842,11402752,d
-chr21,11599609,14678453,e
-chr21,14768800,22223161,h
-chr21,22325653,29768370,f
-chr21,30724863,30915044,h
-chr21,31666174,37884766,d
-chr21,38908312,41539709,f
-chr21,42129073,44821117,c
-chr21,44930479,47062233,h
-chr22,813,8249640,f
-chr22,8255581,17526560,d
-chr22,17665220,21443904,c
-chr22,22618830,23867985,g
-chr22,23993479,33741799,g
-chr22,34846132,35204925,d
-chr22,35829268,44911327,a
-chr22,45311032,46839982,d
-chr22,47026457,50407073,h
-chr22,51044560,51170469,b
-chrX,35,2555580,b
-chrX,2639438,7533956,g
-chrX,7634594,12367774,g
-chrX,12435988,16701376,h
-chrX,16825334,29185708,e
-chrX,29194983,39949177,h
-chrX,40020540,43651509,d
-chrX,44253191,44422163,h
-chrX,44500319,53338246,a
-chrX,53344771,66613712,d
-chrX,66831808,68491238,d
-chrX,68502923,76538091,f
-chrX,77061509,84123536,d
-chrX,84447131,84850972,a
-chrX,85002831,87236812,a
-chrX,88107778,95814861,f
-chrX,96546177,104187881,g
-chrX,112157235,113562075,h
-chrX,113572792,119236366,b
-chrX,119342195,124937326,a
-chrX,125029098,134361036,f
-chrX,134432652,142984755,a
-chrY,29,7808197,a
-chrY,14874383,15525223,e
-chrY,15656416,16544143,c
-chrY,16602589,22835112,c
-chrY,23005901,30591381,e
-chrY,31015463,36847870,a
-chrY,36857103,44304707,e
-chrY,45472053,46558526,d
-chrY,47086079,54258590,e
-chrY,55520407,56604621,g
-chrY,56777170,59080371,d
+chr,start,end,group
+chr1,1465,5857186,b
+chr1,6005405,7051583,c
+chr1,7459754,11390112,h
+chr1,11461667,11666810,h
+chr1,11735789,13740274,a
+chr1,13741155,17190699,h
+chr1,17636177,23479534,e
+chr1,24394466,30454885,a
+chr1,31765677,36050094,e
+chr1,36051556,50189335,h
+chr1,50192310,64730203,b
+chr1,64315037,70743879,g
+chr1,71531571,78851045,d
+chr1,78868899,85642286,f
+chr1,85659982,93150139,d
+chr1,93151177,102158018,h
+chr1,103875958,106380147,d
+chr1,111641069,111801376,f
+chr1,112723797,113286724,e
+chr1,118530002,119737046,b
+chr1,119825958,133304507,f
+chr1,133316714,160176346,h
+chr1,160217706,170385697,f
+chr1,170687925,175991656,c
+chr1,177652707,178009234,b
+chr1,178122796,187942731,b
+chr1,187959181,193321748,c
+chr1,194634579,197022817,a
+chr1,198778345,201389972,a
+chr1,202187044,202718077,c
+chr1,202720120,223314825,c
+chr1,223498720,228677287,a
+chr1,228793513,237373614,b
+chr1,238526388,241165068,b
+chr1,241281409,248838956,c
+chr2,575,1026652,e
+chr2,1118627,4074671,h
+chr2,4121264,5775800,d
+chr2,5883646,6188515,f
+chr2,6236835,7737452,f
+chr2,7809564,8437225,d
+chr2,8438815,16764793,g
+chr2,16770851,25657129,e
+chr2,35661687,46518474,d
+chr2,47176753,47779373,h
+chr2,48581813,56906187,d
+chr2,57448847,60043136,h
+chr2,61853834,62305213,e
+chr2,63002878,67975779,e
+chr2,67982988,81153143,e
+chr2,83322672,83988222,h
+chr2,84013475,88609453,h
+chr2,89647671,90716925,e
+chr2,91231357,92035753,a
+chr2,92935334,95852998,g
+chr2,96031734,108343096,c
+chr2,108451987,114014187,h
+chr2,114220194,119963393,g
+chr2,123135627,123812402,d
+chr2,124135706,127239645,c
+chr2,127739947,132426112,f
+chr2,132430773,141021042,c
+chr2,142245109,144069288,a
+chr2,144628039,144720573,f
+chr2,151610987,151992479,a
+chr2,152009841,174218242,b
+chr2,176444373,176671890,d
+chr2,177092656,181330814,g
+chr2,181345542,201358151,f
+chr2,201438325,212939406,a
+chr2,214881585,215755342,e
+chr2,215836645,217859263,d
+chr2,217916747,226165487,e
+chr2,227439036,227770831,a
+chr2,227964567,231562984,a
+chr2,233303405,234499443,e
+chr2,235622983,236785366,c
+chr2,236798242,242648653,a
+chr3,13,3831804,d
+chr3,3989861,11612588,g
+chr3,13006291,15943115,b
+chr3,16822175,16851578,f
+chr3,17306778,19320312,g
+chr3,19827014,24143285,d
+chr3,24206611,35803756,d
+chr3,38232660,40730880,e
+chr3,40746418,47490925,d
+chr3,47505229,51750387,a
+chr3,51826821,56189222,e
+chr3,57422961,62317947,h
+chr3,62321260,83845357,d
+chr3,84405975,86572536,b
+chr3,90374730,90454970,g
+chr3,90462646,109633225,g
+chr3,114528724,114604580,g
+chr3,114789891,123322478,f
+chr3,123427162,140552765,b
+chr3,142258502,146828589,b
+chr3,146929004,167366311,e
+chr3,168158332,168866882,b
+chr3,169049832,169096114,e
+chr3,169108840,176935416,h
+chr3,178201491,195369841,e
+chr4,911,11542798,h
+chr4,16991464,18165367,a
+chr4,18211626,23846844,e
+chr4,24035221,26604567,a
+chr4,27566444,27992469,d
+chr4,28276499,41116799,g
+chr4,41529824,43014993,c
+chr4,43272948,47064915,f
+chr4,48177980,54551721,c
+chr4,54660128,68783343,d
+chr4,70252023,70334888,d
+chr4,70344540,73084563,f
+chr4,75153397,75500954,f
+chr4,79285027,81539201,d
+chr4,81736144,83319610,f
+chr4,83655766,87725054,b
+chr4,87726095,105142804,a
+chr4,106538792,108371238,c
+chr4,109025769,121125427,g
+chr4,121134744,124367355,g
+chr4,125045578,148133284,b
+chr4,148729892,154268083,g
+chr4,154319943,159258050,b
+chr4,159336210,174306749,d
+chr4,174964320,176275294,e
+chr4,176366743,182959925,c
+chr4,183372421,190408082,e
+chr5,56,2698252,h
+chr5,2719598,9370038,c
+chr5,9384790,15241474,e
+chr5,16796720,17016816,g
+chr5,17197132,18226184,g
+chr5,19595607,21480489,a
+chr5,21774271,27644915,f
+chr5,27645010,35297088,b
+chr5,35388251,45815761,a
+chr5,47919368,50681938,b
+chr5,51031281,74321209,c
+chr5,75015046,76875383,d
+chr5,77310439,84485426,e
+chr5,84823359,84840854,g
+chr5,89131406,94601777,f
+chr5,94719081,102430350,h
+chr5,102656020,103137863,h
+chr5,104538359,116718534,d
+chr5,116724213,134095796,d
+chr5,135319451,141939419,c
+chr5,142007020,150001379,d
+chr5,153406265,155719357,e
+chr5,155895554,158225360,c
+chr5,159563350,161532690,g
+chr5,161667894,171190500,b
+chr5,172472102,178600652,f
+chr6,6060,3270154,b
+chr6,3352084,7019286,b
+chr6,7193581,7467823,f
+chr6,7542998,15307451,d
+chr6,16523654,20612816,e
+chr6,20613099,36024423,b
+chr6,36123274,37269211,h
+chr6,40747893,43320173,e
+chr6,45418703,46108417,b
+chr6,54706692,63788032,e
+chr6,63790207,80799564,d
+chr6,82933682,85172113,h
+chr6,88466966,88707453,b
+chr6,88003772,110358613,b
+chr6,111124806,111484037,g
+chr6,111963034,112847932,b
+chr6,112858307,148495033,a
+chr6,148975937,153750605,d
+chr6,154213571,155381367,f
+chr6,155587939,159061388,f
+chr6,159140585,169834638,g
+chr6,169880156,170553943,f
+chr6,170715332,170720245,d
+chr7,146,4643362,e
+chr7,4723845,16418898,e
+chr7,18548093,19102872,f
+chr7,19315985,19719054,c
+chr7,19812468,23608459,d
+chr7,25156482,28002080,d
+chr7,28086602,31664525,g
+chr7,31713066,36655965,g
+chr7,36772347,58930702,b
+chr7,58941539,68439763,f
+chr7,69231052,71419385,c
+chr7,71525822,76041321,f
+chr7,76051642,85321839,d
+chr7,86337740,88505586,b
+chr7,88660984,100826252,g
+chr7,100965911,107026572,e
+chr7,108388846,111616407,d
+chr7,112420469,113634639,f
+chr7,114299336,130712531,a
+chr7,131509494,138941805,h
+chr7,139887807,150426925,e
+chr7,150518669,158302975,d
+chr8,410,1017233,e
+chr8,1164155,8864820,b
+chr8,8941196,13243445,e
+chr8,13338616,13630697,c
+chr8,13716583,22743905,a
+chr8,23547834,24355168,d
+chr8,24361750,50166531,e
+chr8,50251215,55127788,e
+chr8,55270428,65477404,g
+chr8,66749396,69061695,b
+chr8,70940921,73360243,h
+chr8,74869254,81016370,g
+chr8,81187961,88680093,e
+chr8,88690545,108688938,f
+chr8,110815664,113182112,e
+chr8,113193154,115941295,b
+chr8,120180377,120678964,a
+chr8,120975820,126409995,d
+chr8,126527195,135237297,f
+chr8,135333396,140398029,e
+chr8,143367871,144653185,f
+chr9,1661,2231059,b
+chr9,2382277,5342267,a
+chr9,5560449,6780512,g
+chr9,6823892,10228067,e
+chr9,10359022,12517582,g
+chr9,12524222,17754747,c
+chr9,18122869,18997422,g
+chr9,19150082,20596490,a
+chr9,21087653,34145804,h
+chr9,43635291,44082199,d
+chr9,44095912,75189721,a
+chr9,75199796,84525309,c
+chr9,84679310,94668297,f
+chr9,95306723,97126308,h
+chr9,97260292,105054493,h
+chr9,105861010,111514861,c
+chr9,111526309,120170979,c
+chr9,120377482,122617957,g
+chr9,123433306,125207263,c
+chr9,126755099,134929566,h
+chr9,135331641,139219363,b
+chr10,70,2122522,h
+chr10,2294526,6233897,d
+chr10,6378054,9783147,c
+chr10,9793980,10129442,f
+chr10,11020516,19334406,f
+chr10,19454854,28966602,h
+chr10,29058173,32391979,b
+chr10,32487641,42497015,h
+chr10,42596258,49990152,g
+chr10,50056391,58585905,b
+chr10,59883792,68430860,b
+chr10,68466803,68922705,d
+chr10,69559322,81645546,b
+chr10,82438748,86549260,f
+chr10,86647044,86656339,h
+chr10,91441924,96475190,a
+chr10,96583906,103995614,a
+chr10,104826829,105781750,f
+chr10,105834923,111005988,c
+chr10,111791356,118051176,c
+chr10,118336428,119467595,c
+chr10,120933255,134103907,e
+chr11,936,1092496,d
+chr11,1137962,5462236,h
+chr11,5594284,18989194,b
+chr11,21184313,23699291,h
+chr11,24619590,34547778,g
+chr11,34632091,43365063,a
+chr11,45464248,46199787,c
+chr11,48149799,48949614,a
+chr11,49056742,58995908,a
+chr11,59060313,71977477,g
+chr11,72589665,80825423,e
+chr11,80837819,85279282,e
+chr11,86049888,99936427,b
+chr11,100210082,110606845,g
+chr11,110843262,114986269,f
+chr11,115027921,121830907,f
+chr11,121940651,124100383,f
+chr11,125601089,129130425,g
+chr11,129438177,133748751,g
+chr12,994,4980517,b
+chr12,5086250,13898039,d
+chr12,14522503,15711316,g
+chr12,18509923,22199043,f
+chr12,23257996,26751628,e
+chr12,27843402,28390575,a
+chr12,30959729,37964447,a
+chr12,39105239,43959925,e
+chr12,44002344,63244152,a
+chr12,64331399,64909814,g
+chr12,64911690,85370640,e
+chr12,86517847,90413217,c
+chr12,90421966,107060887,b
+chr12,108959709,111099818,g
+chr12,111680155,114385547,b
+chr12,114809307,115007637,b
+chr12,115196270,121748000,d
+chr12,121878526,129226757,c
+chr13,832,427376,c
+chr13,4735396,12165187,f
+chr13,13580214,16684119,e
+chr13,16735694,18972953,a
+chr13,18987032,33602439,d
+chr13,33968832,35121624,f
+chr13,35122156,64441638,h
+chr13,65160581,68230762,e
+chr13,69359340,73506818,h
+chr13,74326982,74798526,h
+chr13,74799071,90451418,g
+chr13,92100025,93779737,f
+chr13,93878302,97174667,g
+chr13,97413302,114551137,b
+chr14,7070,2413791,a
+chr14,2529837,4998885,c
+chr14,5401318,5402789,h
+chr14,5598158,13516520,g
+chr14,13692845,41332346,c
+chr14,41675867,49013699,h
+chr14,50515297,55840473,h
+chr14,56221300,58451666,a
+chr14,58541569,75714734,h
+chr14,75715948,81186785,h
+chr14,81197682,83577430,b
+chr14,83578807,99163202,d
+chr14,92529448,107114936,g
+chr15,667,1318281,g
+chr15,1329020,5847946,a
+chr15,5874304,12708114,h
+chr15,12841577,17492642,d
+chr15,17582114,25980431,c
+chr15,25981979,38440021,h
+chr15,38723295,43457636,h
+chr15,44189034,51259797,c
+chr15,51260219,63205323,e
+chr15,63206424,78494436,g
+chr15,79251386,82041350,f
+chr15,82042007,92931335,b
+chr15,93058545,97968418,g
+chr15,98892552,102026648,e
+chr16,345,5637495,f
+chr16,5703800,13518472,b
+chr16,14629550,15850065,d
+chr16,16443347,20106826,h
+chr16,23715559,25669426,a
+chr16,25823862,26338600,h
+chr16,26414018,29178547,b
+chr16,29180001,43231112,e
+chr16,43328103,50871516,h
+chr16,56284912,60483918,f
+chr16,60496230,66836376,e
+chr16,67071000,70811069,g
+chr16,70812274,87926336,a
+chr16,88046853,90332907,h
+chr17,5129,3904706,a
+chr17,4090123,5600058,h
+chr17,5618990,9498704,d
+chr17,9552741,11251579,c
+chr17,12623696,12946769,b
+chr17,13001291,24133455,g
+chr17,24223757,26145329,b
+chr17,26211939,36019725,b
+chr17,36169516,37634259,e
+chr17,38248214,44536088,d
+chr17,44537365,55204990,e
+chr17,56886075,69991550,g
+chr17,70003470,79780731,d
+chr18,95,566229,h
+chr18,5734924,24434036,g
+chr18,24677019,30754905,f
+chr18,31088659,31393439,h
+chr18,31697999,39231974,h
+chr18,39242379,46904865,g
+chr18,47024773,47644848,a
+chr18,48590170,54422765,e
+chr18,54576802,54847929,a
+chr18,54979735,59893606,f
+chr18,60015902,66773399,a
+chr18,66774330,77025384,g
+chr19,41,1177590,a
+chr19,1294223,7807367,h
+chr19,7932233,13829487,f
+chr19,14911430,21824532,d
+chr19,22444042,25946135,b
+chr19,26264592,41009716,f
+chr19,41176962,45089868,d
+chr19,45401777,48482085,f
+chr19,49475348,52941778,c
+chr19,53059759,55358524,c
+chr19,55483504,58803808,b
+chr20,150,4706747,c
+chr20,4801630,8012566,f
+chr20,8178986,14019053,d
+chr20,14176047,19815533,f
+chr20,19825651,34929666,b
+chr20,35008129,35968986,f
+chr20,36002977,40204442,b
+chr20,41058455,42034892,a
+chr20,42186755,49996384,g
+chr20,50007010,51413993,c
+chr20,52350649,62112176,h
+chr21,2339,3992436,d
+chr21,4084842,11402752,d
+chr21,11599609,14678453,e
+chr21,14768800,22223161,h
+chr21,22325653,29768370,f
+chr21,30724863,30915044,h
+chr21,31666174,37884766,d
+chr21,38908312,41539709,f
+chr21,42129073,44821117,c
+chr21,44930479,47062233,h
+chr22,813,8249640,f
+chr22,8255581,17526560,d
+chr22,17665220,21443904,c
+chr22,22618830,23867985,g
+chr22,23993479,33741799,g
+chr22,34846132,35204925,d
+chr22,35829268,44911327,a
+chr22,45311032,46839982,d
+chr22,47026457,50407073,h
+chr22,51044560,51170469,b
+chrX,35,2555580,b
+chrX,2639438,7533956,g
+chrX,7634594,12367774,g
+chrX,12435988,16701376,h
+chrX,16825334,29185708,e
+chrX,29194983,39949177,h
+chrX,40020540,43651509,d
+chrX,44253191,44422163,h
+chrX,44500319,53338246,a
+chrX,53344771,66613712,d
+chrX,66831808,68491238,d
+chrX,68502923,76538091,f
+chrX,77061509,84123536,d
+chrX,84447131,84850972,a
+chrX,85002831,87236812,a
+chrX,88107778,95814861,f
+chrX,96546177,104187881,g
+chrX,112157235,113562075,h
+chrX,113572792,119236366,b
+chrX,119342195,124937326,a
+chrX,125029098,134361036,f
+chrX,134432652,142984755,a
+chrY,29,7808197,a
+chrY,14874383,15525223,e
+chrY,15656416,16544143,c
+chrY,16602589,22835112,c
+chrY,23005901,30591381,e
+chrY,31015463,36847870,a
+chrY,36857103,44304707,e
+chrY,45472053,46558526,d
+chrY,47086079,54258590,e
+chrY,55520407,56604621,g
+chrY,56777170,59080371,d
diff --git a/track9.csv b/example_data/rect_gradual.csv
similarity index 96%
rename from track9.csv
rename to example_data/rect_gradual.csv
index cde4148..1a3a873 100644
--- a/track9.csv
+++ b/example_data/rect_gradual.csv
@@ -1,305 +1,305 @@
-chr,start,end,value1
-chr1,1,6657591,0.034
-chr1,9792529,20706145,-0.527
-chr1,24807376,30831596,0.355
-chr1,31003801,31338988,-0.425
-chr1,33917405,51335905,0.216
-chr1,55862806,63502192,-0.299
-chr1,63626433,67033177,0.432
-chr1,69911296,82503344,0.152
-chr1,83219737,96007804,-0.165
-chr1,98166788,106150912,-0.466
-chr1,107451651,110663450,0.507
-chr1,112244465,121650476,-0.425
-chr1,122154000,130012057,0.863
-chr1,131336003,137560121,-0.606
-chr1,138050618,138211561,0.134
-chr1,140462919,161837756,-0.519
-chr1,163434426,172974436,0.887
-chr1,176269718,177481726,0.14
-chr1,178655220,181724878,0.784
-chr1,182132688,186998630,-0.265
-chr1,188683693,218454894,-0.564
-chr1,220378439,230708109,0.548
-chr1,231774146,236416479,-0.353
-chr1,237536323,244551117,0.861
-chr2,5914,28778613,-0.818
-chr2,28933631,30683233,0.24
-chr2,31828164,33172872,0.269
-chr2,38444878,53075089,1.002
-chr2,55184301,62265134,-0.245
-chr2,64834015,75733233,0.31
-chr2,76823581,89266251,0.554
-chr2,91252699,97705207,-0.108
-chr2,98733876,99136522,-0.199
-chr2,100199154,113142894,0.616
-chr2,115966279,116299437,0.171
-chr2,117069088,137959740,0.43
-chr2,138483508,151778793,-0.701
-chr2,152083090,152376012,0.596
-chr2,153625522,173920561,-0.358
-chr2,175273588,181059988,0.337
-chr2,182308794,186852872,1.117
-chr2,187107444,194182787,-0.667
-chr2,194769748,198776014,0.361
-chr2,200151436,200175622,-0.028
-chr2,201012209,205115235,0.404
-chr2,206948244,211928065,0.497
-chr2,213433739,215893657,0.961
-chr2,216838318,222589983,0.328
-chr3,651,27839332,-0.532
-chr3,28591880,29683518,-0.156
-chr3,30936974,42269422,-0.319
-chr3,43088092,62079822,0.212
-chr3,63104090,70433464,0.295
-chr3,71436194,76821854,-0.315
-chr3,79923655,81889136,0.355
-chr3,82334408,96554728,0.008
-chr3,98905779,116632018,0.179
-chr3,117689810,118200471,-0.033
-chr3,121960978,125568852,-0.492
-chr3,126894342,135115619,0.143
-chr3,137161833,139854748,0.151
-chr3,141314878,147005528,0.152
-chr3,153579502,158016580,-0.313
-chr3,159206120,160886825,-0.231
-chr3,161825855,167546516,-0.17
-chr3,169553962,181978287,0.09
-chr3,183512470,196987670,0.279
-chr4,908,8856792,0.26
-chr4,8923330,16541163,-0.192
-chr4,18610146,25784735,-0.035
-chr4,28688508,30754967,0.443
-chr4,33147059,45317545,-0.885
-chr4,48662573,74761958,0.097
-chr4,75036146,80234241,0.27
-chr4,81467092,100917830,0.196
-chr4,103113946,105038617,-0.205
-chr4,107907939,117404082,-0.477
-chr4,119760088,122692166,-0.138
-chr4,123608654,130277995,-0.536
-chr4,135716931,139668197,-0.275
-chr4,139719639,154760840,-0.279
-chr4,156128535,156614493,0.62
-chr4,161121834,163285736,0.284
-chr4,165180681,167496227,0.171
-chr4,168219427,173096500,0.34
-chr4,174955073,181776096,0.695
-chr5,407,16490429,0.281
-chr5,17056645,32303717,0.485
-chr5,33142343,38592327,-0.057
-chr5,42297777,47303705,0.27
-chr5,48948792,59297770,0.259
-chr5,60189170,68113988,-0.235
-chr5,72641500,74886382,-0.505
-chr5,75652518,86831628,0.292
-chr5,87331153,96097187,-0.989
-chr5,96482389,103211144,0.066
-chr5,107650943,107729501,0.914
-chr5,110350764,111258975,0.913
-chr5,114233954,125030404,0.209
-chr5,128764363,132813859,0.248
-chr5,133381114,144499452,-0.72
-chr5,145325242,165650422,-0.433
-chr5,167137058,173548159,0.642
-chr5,174126053,180838777,0.847
-chr6,30502,34310199,0.387
-chr6,34612657,44930181,0.244
-chr6,46381691,59816691,0.149
-chr6,64060506,75725636,0.165
-chr6,78372629,83466136,0.093
-chr6,84572701,101290509,-0.729
-chr6,101311413,101794019,-0.003
-chr6,101805575,102762152,-0.036
-chr6,110545590,114245865,-0.376
-chr6,116141978,117390311,0.017
-chr6,117955135,119040547,-0.151
-chr6,120019724,128796206,-0.228
-chr6,128963532,136293437,0.128
-chr6,137967615,142881805,-0.449
-chr6,143882631,157983326,-0.052
-chr6,159835391,165522936,-0.73
-chr6,167767467,169405865,0.7
-chr7,3226,7227722,-0.482
-chr7,7387758,13632289,0.496
-chr7,13710813,15932004,-0.094
-chr7,16028646,33534690,0.379
-chr7,33875626,34350929,0.009
-chr7,36237530,47774416,0.675
-chr7,48153499,53639247,0.171
-chr7,54293896,68302034,-0.755
-chr7,71707459,73567221,-0.552
-chr7,75767742,82691194,0.307
-chr7,83856405,100106840,-0.052
-chr7,107551874,108874817,0.345
-chr7,115639917,118313489,1.09
-chr7,119064523,133322990,0.905
-chr7,135269722,136960176,-0.011
-chr7,137578512,151857755,0.833
-chr8,8696,6453749,0.221
-chr8,6647416,7669112,-0.033
-chr8,7735794,11351454,0.349
-chr8,11482142,24596596,-0.295
-chr8,25640519,30189345,0.149
-chr8,30398586,35820313,0.576
-chr8,38206588,54434842,-0.51
-chr8,56346326,62783151,-0.601
-chr8,64197475,67027095,0.19
-chr8,69906054,87075019,0.756
-chr8,89153867,99003685,-0.343
-chr8,108232593,111140624,0.441
-chr8,113453429,116942435,0.496
-chr8,126385525,128138077,0.628
-chr9,8073,6189432,0.213
-chr9,7012351,28402924,-0.285
-chr9,29499497,36240968,-0.224
-chr9,37962855,39801553,-0.134
-chr9,40283866,55588813,0.063
-chr9,56130234,63186440,-0.352
-chr9,64189032,72180531,0.414
-chr9,72872738,75532247,0.362
-chr9,77662983,79531197,-1.04
-chr9,80778750,96796541,0.286
-chr9,96819554,99740701,-0.66
-chr9,100773386,129683696,-0.469
-chr9,130301395,130702261,0.291
-chr9,131454809,139123349,0.315
-chr10,4118,11297090,0.09
-chr10,11330162,15980015,0.123
-chr10,16954831,26246754,-0.076
-chr10,28060204,45409434,0.029
-chr10,46173531,58240479,-0.57
-chr10,59602625,60732987,-0.138
-chr10,61725241,67486536,-0.646
-chr10,68309702,77227829,0.182
-chr10,78957252,86026539,-0.441
-chr10,86891167,90631958,0.913
-chr10,97766762,100214224,0.833
-chr10,106505005,110997945,0.693
-chr10,111592731,126136111,-0.317
-chr11,948,2782623,-0.187
-chr11,2869273,7087344,0.619
-chr11,7249412,28157689,0.274
-chr11,29503128,31597092,0.014
-chr11,32253708,37421923,0.543
-chr11,38681493,57434136,0.037
-chr11,57952474,60273414,-0.785
-chr11,61645477,68061638,0.106
-chr11,69511630,84945897,-0.614
-chr11,85031467,90548194,-0.764
-chr11,97222768,112356525,-0.35
-chr11,115640882,126134722,0.346
-chr11,127525120,130018055,0.134
-chr12,336,6700828,0.225
-chr12,7034100,14279377,0.241
-chr12,16322501,22170156,-0.154
-chr12,24542781,38107108,0.615
-chr12,38834137,41998787,0.487
-chr12,42764922,68202836,-0.552
-chr12,68929347,79877288,0.549
-chr12,79929829,88245190,0.58
-chr12,89132327,93501712,-0.292
-chr12,94354792,106812966,-0.112
-chr12,106983562,110632032,-0.821
-chr12,110865163,111623649,0.366
-chr12,112971079,131060307,0.064
-chr13,6421,6159261,-0.394
-chr13,6524049,15233627,-0.88
-chr13,15471294,16907894,1.258
-chr13,17243591,23531409,-0.321
-chr13,25063242,34808146,0.286
-chr13,35269873,52648474,0.019
-chr13,53242219,59499170,0.537
-chr13,60437790,81760664,-0.483
-chr13,82450757,84941158,-0.411
-chr13,85007614,102089935,-0.928
-chr13,103734382,114721400,0.354
-chr14,2912,9702867,0.301
-chr14,9874782,17090063,-1.064
-chr14,18781317,25676845,-0.725
-chr14,26581456,35977932,0.156
-chr14,36497356,40355476,0.131
-chr14,41493109,57290156,-0.549
-chr14,58870982,59614969,0.939
-chr14,60054174,70992393,0.632
-chr14,71213738,91892363,1.285
-chr14,92193512,102979475,0.001
-chr14,103886102,105957190,0.944
-chr15,11087,26518274,-0.399
-chr15,27903568,35494569,0.046
-chr15,36516903,45214719,-0.461
-chr15,45295479,54123659,0.458
-chr15,55219569,57383691,0.841
-chr15,57946933,63736781,0.64
-chr15,64073040,66187118,0.286
-chr15,67079771,75040940,-0.877
-chr15,76477843,81061739,0.112
-chr15,82457335,98047902,0.532
-chr16,9590461,11888320,-0.055
-chr16,12096240,15648240,0.129
-chr16,16262700,25027947,-0.48
-chr16,26411118,28512045,-0.33
-chr16,28999256,36232266,-0.399
-chr16,37175561,45562782,0.248
-chr16,46902196,56473707,-0.837
-chr16,57000143,78382138,-0.422
-chr16,80536901,88983438,-0.739
-chr17,700,7943353,0.204
-chr17,8832844,17234212,0.43
-chr17,18569547,26731754,0.111
-chr17,27758438,32432788,-0.213
-chr17,33742155,41890766,-0.278
-chr17,42294991,48738065,0.296
-chr17,49951783,63809308,-0.205
-chr17,64444327,75287302,0.511
-chr18,7095,3577626,0.395
-chr18,3883070,20609617,-0.703
-chr18,21653413,36267606,0.446
-chr18,36515737,49799566,-0.386
-chr18,50445584,59336052,-0.741
-chr18,60031648,67358141,-0.475
-chr18,69816447,71132818,-0.138
-chr18,74611194,76198767,0.378
-chr19,569,10425586,0.282
-chr19,12280218,22657017,0.354
-chr19,23659329,34719452,-1.146
-chr19,38034251,38877000,-0.419
-chr19,38883353,42763954,-0.041
-chr19,44092510,51720905,-0.025
-chr20,34,8513376,-0.481
-chr20,8692597,13850582,0.126
-chr20,15219969,18741254,-0.434
-chr20,19229663,29390675,-0.406
-chr20,30020035,45483659,0.2
-chr20,46001015,55279348,-0.244
-chr21,49334,11568382,-0.519
-chr21,13646634,21299642,0.286
-chr21,22288481,23438253,-0.661
-chr21,24213401,36805275,-0.046
-chr21,37513541,47306302,0.105
-chr22,26,5873646,0.242
-chr22,5962056,13501607,0.38
-chr22,13666496,18642554,-0.155
-chr22,18778408,26691645,0.172
-chr22,27607997,45607562,0.725
-chrX,433,1751330,0.482
-chrX,1989948,16914880,0.317
-chrX,18524301,18609733,0.028
-chrX,19645586,22666264,0.524
-chrX,22922663,26823780,0.395
-chrX,28849563,29434035,0.551
-chrX,30854247,45605453,0.527
-chrX,46121891,54117079,-0.111
-chrX,55447601,74584622,0.013
-chrX,75070911,76227051,0.32
-chrX,77691170,87371249,0.694
-chrX,88188471,115956819,0.418
-chrX,116914226,123878151,0.351
-chrX,124560778,143611257,-0.271
-chrX,153589336,153680558,0.546
-chrY,722,14016683,0.39
-chrY,14902371,16625051,0.309
-chrY,16927713,19141862,-0.533
-chrY,19269855,38751426,0.184
-chrY,39365886,42878757,0.732
-chrY,43737358,49145653,-0.572
+chr,start,end,value
+chr1,1,6657591,0.034
+chr1,9792529,20706145,-0.527
+chr1,24807376,30831596,0.355
+chr1,31003801,31338988,-0.425
+chr1,33917405,51335905,0.216
+chr1,55862806,63502192,-0.299
+chr1,63626433,67033177,0.432
+chr1,69911296,82503344,0.152
+chr1,83219737,96007804,-0.165
+chr1,98166788,106150912,-0.466
+chr1,107451651,110663450,0.507
+chr1,112244465,121650476,-0.425
+chr1,122154000,130012057,0.863
+chr1,131336003,137560121,-0.606
+chr1,138050618,138211561,0.134
+chr1,140462919,161837756,-0.519
+chr1,163434426,172974436,0.887
+chr1,176269718,177481726,0.14
+chr1,178655220,181724878,0.784
+chr1,182132688,186998630,-0.265
+chr1,188683693,218454894,-0.564
+chr1,220378439,230708109,0.548
+chr1,231774146,236416479,-0.353
+chr1,237536323,244551117,0.861
+chr2,5914,28778613,-0.818
+chr2,28933631,30683233,0.24
+chr2,31828164,33172872,0.269
+chr2,38444878,53075089,1.002
+chr2,55184301,62265134,-0.245
+chr2,64834015,75733233,0.31
+chr2,76823581,89266251,0.554
+chr2,91252699,97705207,-0.108
+chr2,98733876,99136522,-0.199
+chr2,100199154,113142894,0.616
+chr2,115966279,116299437,0.171
+chr2,117069088,137959740,0.43
+chr2,138483508,151778793,-0.701
+chr2,152083090,152376012,0.596
+chr2,153625522,173920561,-0.358
+chr2,175273588,181059988,0.337
+chr2,182308794,186852872,1.117
+chr2,187107444,194182787,-0.667
+chr2,194769748,198776014,0.361
+chr2,200151436,200175622,-0.028
+chr2,201012209,205115235,0.404
+chr2,206948244,211928065,0.497
+chr2,213433739,215893657,0.961
+chr2,216838318,222589983,0.328
+chr3,651,27839332,-0.532
+chr3,28591880,29683518,-0.156
+chr3,30936974,42269422,-0.319
+chr3,43088092,62079822,0.212
+chr3,63104090,70433464,0.295
+chr3,71436194,76821854,-0.315
+chr3,79923655,81889136,0.355
+chr3,82334408,96554728,0.008
+chr3,98905779,116632018,0.179
+chr3,117689810,118200471,-0.033
+chr3,121960978,125568852,-0.492
+chr3,126894342,135115619,0.143
+chr3,137161833,139854748,0.151
+chr3,141314878,147005528,0.152
+chr3,153579502,158016580,-0.313
+chr3,159206120,160886825,-0.231
+chr3,161825855,167546516,-0.17
+chr3,169553962,181978287,0.09
+chr3,183512470,196987670,0.279
+chr4,908,8856792,0.26
+chr4,8923330,16541163,-0.192
+chr4,18610146,25784735,-0.035
+chr4,28688508,30754967,0.443
+chr4,33147059,45317545,-0.885
+chr4,48662573,74761958,0.097
+chr4,75036146,80234241,0.27
+chr4,81467092,100917830,0.196
+chr4,103113946,105038617,-0.205
+chr4,107907939,117404082,-0.477
+chr4,119760088,122692166,-0.138
+chr4,123608654,130277995,-0.536
+chr4,135716931,139668197,-0.275
+chr4,139719639,154760840,-0.279
+chr4,156128535,156614493,0.62
+chr4,161121834,163285736,0.284
+chr4,165180681,167496227,0.171
+chr4,168219427,173096500,0.34
+chr4,174955073,181776096,0.695
+chr5,407,16490429,0.281
+chr5,17056645,32303717,0.485
+chr5,33142343,38592327,-0.057
+chr5,42297777,47303705,0.27
+chr5,48948792,59297770,0.259
+chr5,60189170,68113988,-0.235
+chr5,72641500,74886382,-0.505
+chr5,75652518,86831628,0.292
+chr5,87331153,96097187,-0.989
+chr5,96482389,103211144,0.066
+chr5,107650943,107729501,0.914
+chr5,110350764,111258975,0.913
+chr5,114233954,125030404,0.209
+chr5,128764363,132813859,0.248
+chr5,133381114,144499452,-0.72
+chr5,145325242,165650422,-0.433
+chr5,167137058,173548159,0.642
+chr5,174126053,180838777,0.847
+chr6,30502,34310199,0.387
+chr6,34612657,44930181,0.244
+chr6,46381691,59816691,0.149
+chr6,64060506,75725636,0.165
+chr6,78372629,83466136,0.093
+chr6,84572701,101290509,-0.729
+chr6,101311413,101794019,-0.003
+chr6,101805575,102762152,-0.036
+chr6,110545590,114245865,-0.376
+chr6,116141978,117390311,0.017
+chr6,117955135,119040547,-0.151
+chr6,120019724,128796206,-0.228
+chr6,128963532,136293437,0.128
+chr6,137967615,142881805,-0.449
+chr6,143882631,157983326,-0.052
+chr6,159835391,165522936,-0.73
+chr6,167767467,169405865,0.7
+chr7,3226,7227722,-0.482
+chr7,7387758,13632289,0.496
+chr7,13710813,15932004,-0.094
+chr7,16028646,33534690,0.379
+chr7,33875626,34350929,0.009
+chr7,36237530,47774416,0.675
+chr7,48153499,53639247,0.171
+chr7,54293896,68302034,-0.755
+chr7,71707459,73567221,-0.552
+chr7,75767742,82691194,0.307
+chr7,83856405,100106840,-0.052
+chr7,107551874,108874817,0.345
+chr7,115639917,118313489,1.09
+chr7,119064523,133322990,0.905
+chr7,135269722,136960176,-0.011
+chr7,137578512,151857755,0.833
+chr8,8696,6453749,0.221
+chr8,6647416,7669112,-0.033
+chr8,7735794,11351454,0.349
+chr8,11482142,24596596,-0.295
+chr8,25640519,30189345,0.149
+chr8,30398586,35820313,0.576
+chr8,38206588,54434842,-0.51
+chr8,56346326,62783151,-0.601
+chr8,64197475,67027095,0.19
+chr8,69906054,87075019,0.756
+chr8,89153867,99003685,-0.343
+chr8,108232593,111140624,0.441
+chr8,113453429,116942435,0.496
+chr8,126385525,128138077,0.628
+chr9,8073,6189432,0.213
+chr9,7012351,28402924,-0.285
+chr9,29499497,36240968,-0.224
+chr9,37962855,39801553,-0.134
+chr9,40283866,55588813,0.063
+chr9,56130234,63186440,-0.352
+chr9,64189032,72180531,0.414
+chr9,72872738,75532247,0.362
+chr9,77662983,79531197,-1.04
+chr9,80778750,96796541,0.286
+chr9,96819554,99740701,-0.66
+chr9,100773386,129683696,-0.469
+chr9,130301395,130702261,0.291
+chr9,131454809,139123349,0.315
+chr10,4118,11297090,0.09
+chr10,11330162,15980015,0.123
+chr10,16954831,26246754,-0.076
+chr10,28060204,45409434,0.029
+chr10,46173531,58240479,-0.57
+chr10,59602625,60732987,-0.138
+chr10,61725241,67486536,-0.646
+chr10,68309702,77227829,0.182
+chr10,78957252,86026539,-0.441
+chr10,86891167,90631958,0.913
+chr10,97766762,100214224,0.833
+chr10,106505005,110997945,0.693
+chr10,111592731,126136111,-0.317
+chr11,948,2782623,-0.187
+chr11,2869273,7087344,0.619
+chr11,7249412,28157689,0.274
+chr11,29503128,31597092,0.014
+chr11,32253708,37421923,0.543
+chr11,38681493,57434136,0.037
+chr11,57952474,60273414,-0.785
+chr11,61645477,68061638,0.106
+chr11,69511630,84945897,-0.614
+chr11,85031467,90548194,-0.764
+chr11,97222768,112356525,-0.35
+chr11,115640882,126134722,0.346
+chr11,127525120,130018055,0.134
+chr12,336,6700828,0.225
+chr12,7034100,14279377,0.241
+chr12,16322501,22170156,-0.154
+chr12,24542781,38107108,0.615
+chr12,38834137,41998787,0.487
+chr12,42764922,68202836,-0.552
+chr12,68929347,79877288,0.549
+chr12,79929829,88245190,0.58
+chr12,89132327,93501712,-0.292
+chr12,94354792,106812966,-0.112
+chr12,106983562,110632032,-0.821
+chr12,110865163,111623649,0.366
+chr12,112971079,131060307,0.064
+chr13,6421,6159261,-0.394
+chr13,6524049,15233627,-0.88
+chr13,15471294,16907894,1.258
+chr13,17243591,23531409,-0.321
+chr13,25063242,34808146,0.286
+chr13,35269873,52648474,0.019
+chr13,53242219,59499170,0.537
+chr13,60437790,81760664,-0.483
+chr13,82450757,84941158,-0.411
+chr13,85007614,102089935,-0.928
+chr13,103734382,114721400,0.354
+chr14,2912,9702867,0.301
+chr14,9874782,17090063,-1.064
+chr14,18781317,25676845,-0.725
+chr14,26581456,35977932,0.156
+chr14,36497356,40355476,0.131
+chr14,41493109,57290156,-0.549
+chr14,58870982,59614969,0.939
+chr14,60054174,70992393,0.632
+chr14,71213738,91892363,1.285
+chr14,92193512,102979475,0.001
+chr14,103886102,105957190,0.944
+chr15,11087,26518274,-0.399
+chr15,27903568,35494569,0.046
+chr15,36516903,45214719,-0.461
+chr15,45295479,54123659,0.458
+chr15,55219569,57383691,0.841
+chr15,57946933,63736781,0.64
+chr15,64073040,66187118,0.286
+chr15,67079771,75040940,-0.877
+chr15,76477843,81061739,0.112
+chr15,82457335,98047902,0.532
+chr16,9590461,11888320,-0.055
+chr16,12096240,15648240,0.129
+chr16,16262700,25027947,-0.48
+chr16,26411118,28512045,-0.33
+chr16,28999256,36232266,-0.399
+chr16,37175561,45562782,0.248
+chr16,46902196,56473707,-0.837
+chr16,57000143,78382138,-0.422
+chr16,80536901,88983438,-0.739
+chr17,700,7943353,0.204
+chr17,8832844,17234212,0.43
+chr17,18569547,26731754,0.111
+chr17,27758438,32432788,-0.213
+chr17,33742155,41890766,-0.278
+chr17,42294991,48738065,0.296
+chr17,49951783,63809308,-0.205
+chr17,64444327,75287302,0.511
+chr18,7095,3577626,0.395
+chr18,3883070,20609617,-0.703
+chr18,21653413,36267606,0.446
+chr18,36515737,49799566,-0.386
+chr18,50445584,59336052,-0.741
+chr18,60031648,67358141,-0.475
+chr18,69816447,71132818,-0.138
+chr18,74611194,76198767,0.378
+chr19,569,10425586,0.282
+chr19,12280218,22657017,0.354
+chr19,23659329,34719452,-1.146
+chr19,38034251,38877000,-0.419
+chr19,38883353,42763954,-0.041
+chr19,44092510,51720905,-0.025
+chr20,34,8513376,-0.481
+chr20,8692597,13850582,0.126
+chr20,15219969,18741254,-0.434
+chr20,19229663,29390675,-0.406
+chr20,30020035,45483659,0.2
+chr20,46001015,55279348,-0.244
+chr21,49334,11568382,-0.519
+chr21,13646634,21299642,0.286
+chr21,22288481,23438253,-0.661
+chr21,24213401,36805275,-0.046
+chr21,37513541,47306302,0.105
+chr22,26,5873646,0.242
+chr22,5962056,13501607,0.38
+chr22,13666496,18642554,-0.155
+chr22,18778408,26691645,0.172
+chr22,27607997,45607562,0.725
+chrX,433,1751330,0.482
+chrX,1989948,16914880,0.317
+chrX,18524301,18609733,0.028
+chrX,19645586,22666264,0.524
+chrX,22922663,26823780,0.395
+chrX,28849563,29434035,0.551
+chrX,30854247,45605453,0.527
+chrX,46121891,54117079,-0.111
+chrX,55447601,74584622,0.013
+chrX,75070911,76227051,0.32
+chrX,77691170,87371249,0.694
+chrX,88188471,115956819,0.418
+chrX,116914226,123878151,0.351
+chrX,124560778,143611257,-0.271
+chrX,153589336,153680558,0.546
+chrY,722,14016683,0.39
+chrY,14902371,16625051,0.309
+chrY,16927713,19141862,-0.533
+chrY,19269855,38751426,0.184
+chrY,39365886,42878757,0.732
+chrY,43737358,49145653,-0.572
diff --git a/example_data/stack_line.csv b/example_data/stack_line.csv
new file mode 100644
index 0000000..bf2e0b9
--- /dev/null
+++ b/example_data/stack_line.csv
@@ -0,0 +1,193 @@
+chr,start,end,stack
+chr1,20646359,46383846,a
+chr1,92365687,94981461,a
+chr1,100852580,102493272,a
+chr1,116282485,138836728,a
+chr1,215897492,218290924,a
+chr2,55415849,73121067,a
+chr2,95765462,115061465,a
+chr2,134936946,146413797,a
+chr2,157295757,169700355,a
+chr2,183668267,231429188,a
+chr3,47188129,81909378,a
+chr3,97252622,134765088,a
+chr3,144897055,156190801,a
+chr3,176913442,195939248,a
+chr4,56511497,74096696,a
+chr4,79412778,126136034,a
+chr4,133546987,152921043,a
+chr4,172908742,176383100,a
+chr5,2723623,5392944,a
+chr5,14404171,16983941,a
+chr5,25237944,80062326,a
+chr5,100094568,121472758,a
+chr6,31824085,46110905,a
+chr6,90160170,110115521,a
+chr6,117629342,156274207,a
+chr6,163342546,166216362,a
+chr7,15332529,20151466,a
+chr7,27856226,48190049,a
+chr7,135124112,141541103,a
+chr8,94872,4908571,a
+chr8,57363235,99399106,a
+chr8,120155022,123911924,a
+chr9,4943376,8560799,a
+chr9,58001896,69507125,a
+chr9,125819369,131125015,a
+chr10,27052820,43494358,a
+chr10,66097285,75559848,a
+chr10,95860335,99894463,a
+chr11,74841719,80443387,a
+chr11,103501146,108868665,a
+chr11,112802069,115173133,a
+chr12,830620,30713806,a
+chr12,69322011,71674225,a
+chr12,72850445,76567287,a
+chr13,33868717,71744746,a
+chr13,92353024,92454990,a
+chr14,15086925,18399883,a
+chr14,77900968,93133127,a
+chr15,6467452,28412679,a
+chr15,64799952,66564362,a
+chr16,15720140,49050139,a
+chr16,57065076,68388370,a
+chr17,15960330,44334825,a
+chr17,55985195,57784141,a
+chr18,2015458,3947206,a
+chr18,30036247,40195521,a
+chr19,1589583,7408392,a
+chr20,6224233,20816149,a
+chr21,9262138,25601781,a
+chr22,6989880,35199381,a
+chrX,274993,25696920,a
+chrX,70112217,123385848,a
+chrX,123885495,153369057,a
+chrY,30025027,30408259,a
+chr1,16051196,33970939,b
+chr1,40831033,46774887,b
+chr1,56759012,134099431,b
+chr1,201960138,216919275,b
+chr1,220147694,247094030,b
+chr2,43510332,52327672,b
+chr2,53111990,114607614,b
+chr2,127940068,138940289,b
+chr2,156322795,172833693,b
+chr2,173974909,228927297,b
+chr3,6800028,19693593,b
+chr3,101616486,113444183,b
+chr3,156527023,183186547,b
+chr3,186201300,195780859,b
+chr4,34079635,98429232,b
+chr4,120201495,126543073,b
+chr4,129482482,168845672,b
+chr4,183469769,186758884,b
+chr5,89644,46679748,b
+chr5,56798603,93907299,b
+chr5,105385932,108095152,b
+chr5,137081912,163818383,b
+chr6,11693772,13328302,b
+chr6,53710260,58152599,b
+chr6,85540497,123838690,b
+chr6,144731527,163998056,b
+chr7,16097763,46595269,b
+chr7,55358521,89770259,b
+chr7,99671571,149998049,b
+chr8,8648004,16062012,b
+chr8,37052763,42423448,b
+chr8,53281099,67347862,b
+chr9,29528190,72792793,b
+chr9,74936014,87952447,b
+chr9,108149451,112605090,b
+chr10,330386,73318530,b
+chr10,95860592,99735367,b
+chr10,119477182,132940517,b
+chr11,18457267,37277853,b
+chr11,61733795,62062255,b
+chr11,117376578,117645125,b
+chr12,9864349,35749267,b
+chr12,44242943,46901458,b
+chr12,94370447,126395239,b
+chr13,22993703,23901290,b
+chr13,62984270,103118479,b
+chr14,24138419,36291369,b
+chr14,71645834,76752650,b
+chr15,2365192,2823133,b
+chr15,80176533,94664606,b
+chr16,3470964,33713621,b
+chr16,58931584,87266743,b
+chr17,16873076,73739067,b
+chr17,76191108,77600197,b
+chr18,10815065,22834852,b
+chr18,70263912,70919288,b
+chr19,5186610,21610433,b
+chr20,1703717,58760306,b
+chr21,2801746,44695615,b
+chr22,4315650,6373229,b
+chrX,9839814,38780654,b
+chrX,62756976,106784405,b
+chrX,116551642,132321963,b
+chrY,22777374,26994779,b
+chr1,22084659,55412949,c
+chr1,72397983,99485882,c
+chr1,101016545,119879381,c
+chr1,147216103,215026665,c
+chr1,245121600,246349231,c
+chr2,992768,28650536,c
+chr2,85993456,89842081,c
+chr2,108475239,129227977,c
+chr2,131346263,182280393,c
+chr2,233135236,237322162,c
+chr3,52621131,82279213,c
+chr3,105559152,127275917,c
+chr3,128430735,168642110,c
+chr3,175056171,178384301,c
+chr4,11302514,15261011,c
+chr4,85293207,101637689,c
+chr4,122217634,150947071,c
+chr4,154795869,175087553,c
+chr5,46127451,61430115,c
+chr5,73650472,73834821,c
+chr5,82756896,154426078,c
+chr5,163752930,168088271,c
+chr6,16468301,23376424,c
+chr6,60548220,98209039,c
+chr6,109502370,115664654,c
+chr6,130199832,136801325,c
+chr7,13563458,28781100,c
+chr7,29375966,37698669,c
+chr7,115836780,134681481,c
+chr8,19509595,23340010,c
+chr8,62616844,109080862,c
+chr8,130559364,143170700,c
+chr9,24795745,59198134,c
+chr9,73595337,76181941,c
+chr9,81894896,102900602,c
+chr10,5515900,36880572,c
+chr10,53724533,55364023,c
+chr10,106096550,134999019,c
+chr11,15423340,37789414,c
+chr11,56639916,81949989,c
+chr11,106982176,128729317,c
+chr12,4811497,70061654,c
+chr12,78917950,106164576,c
+chr12,108168798,127985385,c
+chr13,33604331,52485681,c
+chr13,61494279,81620539,c
+chr14,25209868,40280152,c
+chr14,97433246,99658047,c
+chr15,7994569,34488034,c
+chr15,77545556,86472673,c
+chr16,8127566,51805676,c
+chr16,60794776,70400618,c
+chr17,1160123,13838375,c
+chr17,40086548,53500862,c
+chr18,8292280,52462143,c
+chr18,58094965,73556000,c
+chr19,17474886,31207321,c
+chr20,30240348,47748718,c
+chr21,25440386,47053995,c
+chr22,7469128,7684274,c
+chrX,10983326,24069593,c
+chrX,76579492,93768798,c
+chrX,138406949,142161607,c
+chrY,3561031,55609998,c
diff --git a/example_data/stack_point.csv b/example_data/stack_point.csv
new file mode 100644
index 0000000..76ee5db
--- /dev/null
+++ b/example_data/stack_point.csv
@@ -0,0 +1,205 @@
+chr,start,end,stack
+chr1,11589909,40133642,a
+chr1,52614734,59580026,a
+chr1,76931882,99383558,a
+chr1,123041715,142893503,a
+chr1,153009544,158522509,a
+chr1,179396655,186247989,a
+chr1,195066969,206589776,a
+chr1,222885360,237678440,a
+chr2,3399336,55188969,a
+chr2,61091258,73447386,a
+chr2,77673763,137404969,a
+chr2,144634736,151200091,a
+chr2,158295281,161241749,a
+chr2,164272457,171863936,a
+chr2,178857187,195032375,a
+chr2,229554989,240255692,a
+chr3,625664,8814313,a
+chr3,9306819,12889165,a
+chr3,28579596,31052110,a
+chr3,112907750,140849631,a
+chr3,155657800,161301126,a
+chr3,163743327,176734321,a
+chr3,189164849,193211827,a
+chr4,2963874,30747599,a
+chr4,33048017,90927078,a
+chr4,93418818,96722168,a
+chr4,115814915,123827703,a
+chr4,130186181,142424146,a
+chr4,160145456,164040317,a
+chr5,28358375,28943627,a
+chr5,48623024,64086871,a
+chr5,64783620,73670928,a
+chr5,81071558,87819883,a
+chr5,90166897,112211855,a
+chr5,132806217,132946203,a
+chr6,13213629,14552398,a
+chr6,15227212,15962345,a
+chr6,33545211,54314931,a
+chr6,65550973,68044430,a
+chr6,95859403,112225635,a
+chr6,132250718,166789854,a
+chr7,15597597,46313636,a
+chr7,47556168,69741664,a
+chr7,71175355,99979753,a
+chr7,108665734,121945680,a
+chr7,141209890,147206729,a
+chr8,3868698,9323826,a
+chr8,10254699,40870225,a
+chr8,53893448,96004884,a
+chr8,102502552,126622491,a
+chr8,145417328,145921408,a
+chr9,8396273,28075506,a
+chr9,45542601,53955810,a
+chr9,59818352,91845058,a
+chr9,98560334,115623601,a
+chr9,122483335,137343994,a
+chr10,3337665,6876972,a
+chr10,7272758,10948195,a
+chr10,31847961,40615710,a
+chr10,59972568,86265054,a
+chr10,95204314,95503780,a
+chr11,7707122,59227428,a
+chr11,71051269,82496759,a
+chr11,82523137,84079185,a
+chr11,109781484,115976080,a
+chr11,120929941,121310705,a
+chr12,8740790,8780325,a
+chr12,12638622,15518525,a
+chr12,24139710,25089697,a
+chr12,46181560,57929415,a
+chr12,123104101,125422584,a
+chr13,9693737,16269986,a
+chr13,25185529,39187865,a
+chr13,39502300,52544893,a
+chr13,60543833,111250737,a
+chr14,18035683,19773989,a
+chr14,27612752,30800454,a
+chr14,63602653,75634084,a
+chr14,104563937,104918059,a
+chr15,31756795,39349004,a
+chr15,39737257,48429496,a
+chr15,53701175,58123741,a
+chr15,80641720,82840828,a
+chr16,28795134,41459412,a
+chr16,55980952,58830145,a
+chr16,77123297,86198479,a
+chr17,18152822,60525041,a
+chr17,63882811,65443742,a
+chr17,76245596,80960025,a
+chr18,5813628,15867488,a
+chr18,25149807,47679606,a
+chr18,56636655,57525187,a
+chr19,11436042,33532774,a
+chr19,49573584,56165411,a
+chr20,14855915,52459650,a
+chr20,52583113,52634798,a
+chr21,5759696,20545854,a
+chr21,37608997,42121810,a
+chr22,19852489,21648109,a
+chr22,37993259,47830149,a
+chrX,1682040,2493124,a
+chrX,31776063,49155336,a
+chrX,69270927,94508374,a
+chrX,110007669,119222216,a
+chrX,150785547,153126968,a
+chrY,15129944,34130968,a
+chrY,43048611,47889464,a
+chr1,37080716,41662004,b
+chr1,87453098,89776607,b
+chr1,107231283,111232493,b
+chr1,157904163,162911422,b
+chr1,166301466,166772439,b
+chr1,174011056,182622419,b
+chr1,201062389,227739720,b
+chr2,41080156,49606738,b
+chr2,52340018,66567929,b
+chr2,74852695,76785241,b
+chr2,102644978,113522189,b
+chr2,117028033,121948261,b
+chr2,131003035,169337481,b
+chr2,175700458,227723342,b
+chr3,21105877,44902226,b
+chr3,49085750,65361476,b
+chr3,67435632,68787218,b
+chr3,78300161,82913702,b
+chr3,121353598,123010656,b
+chr3,136105804,154950892,b
+chr4,20574140,35485844,b
+chr4,39273030,49076299,b
+chr4,64825383,75834653,b
+chr4,113562350,118342757,b
+chr4,120464616,147824640,b
+chr4,164740131,172476016,b
+chr5,6608219,8525932,b
+chr5,39324082,40131031,b
+chr5,52650003,54015636,b
+chr5,84819827,86063204,b
+chr5,114288235,163019700,b
+chr5,169314487,178171267,b
+chr6,2497028,17123039,b
+chr6,23015334,59285043,b
+chr6,76638100,84957437,b
+chr6,92666962,95436344,b
+chr6,118846142,167907579,b
+chr7,58175938,68134357,b
+chr7,68185593,88642244,b
+chr7,96427338,98098548,b
+chr7,106573056,125356159,b
+chr7,129949046,157956345,b
+chr8,10095498,20646694,b
+chr8,47197899,60831727,b
+chr8,64585212,72284948,b
+chr8,94187562,120986343,b
+chr8,123268454,138096644,b
+chr9,20090631,46970176,b
+chr9,50298690,69501965,b
+chr9,120968589,122132804,b
+chr9,125093598,139342817,b
+chr10,26438639,45613747,b
+chr10,61759484,63127185,b
+chr10,72757750,78599836,b
+chr10,102149316,123693419,b
+chr11,10398634,11835141,b
+chr11,42243923,73394887,b
+chr11,76686785,101897131,b
+chr11,131165199,131399856,b
+chr12,8063599,11286451,b
+chr12,14083633,19384939,b
+chr12,25666671,34750035,b
+chr12,47817385,52734723,b
+chr13,5413198,6096674,b
+chr13,35855705,36395447,b
+chr13,43171447,81410738,b
+chr13,99801000,99923321,b
+chr14,11847057,26799347,b
+chr14,29798050,42153865,b
+chr14,63634506,97449709,b
+chr15,22950453,28025422,b
+chr15,29054721,41899682,b
+chr15,69660915,101932460,b
+chr16,5165030,8182644,b
+chr16,44140182,64326078,b
+chr16,76077982,82597896,b
+chr17,8581622,44582954,b
+chr17,49522109,56804432,b
+chr17,70602631,77073071,b
+chr18,25441825,29405796,b
+chr18,42757807,48490914,b
+chr18,59325352,60525162,b
+chr19,10736247,21475274,b
+chr19,26687697,29903487,b
+chr20,2706670,23041364,b
+chr20,41880064,51791948,b
+chr21,2346720,24628083,b
+chr21,30594573,44195207,b
+chr22,9317546,23454183,b
+chr22,30829748,37978329,b
+chrX,13757811,17671739,b
+chrX,30264656,35692038,b
+chrX,47931026,91111653,b
+chrX,93141109,109322983,b
+chrX,119708355,132309069,b
+chrY,17658831,46794380,b
+chrY,48170335,53662268,b
diff --git a/plot.R b/plot.R
index daa8247..a32c1db 100644
--- a/plot.R
+++ b/plot.R
@@ -1,47 +1,93 @@
-plotcircos <- function(x, color, plotTypes, units, rotation, gap.width){
- circos.par("start.degree" = 90-rotation,"gap.degree" = gap.width,cell.padding = c(0, 0, 0, 0), track.margin=c(0,0))
- circos.genomicInitialize.new(x,plotType=plotTypes,unit=units)
- circos.genomicTrackPlotRegion(ylim = c(0, 1),bg.col = color, bg.border = NA, track.height = 0.05)
+plotcircos <- function(x, color, plotTypes, units, rotation, gap.width, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr, data.CN){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new(x,plotType=plotTypes,unit=units)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="outer"){
+ circos.genomicLabels(data.CN, labels.column=4, connection_height=heightlabelschr, track.margin=c(0.01,marginlabelschr), side="outside")
+ }
+ circos.genomicTrackPlotRegion(ylim = c(0, 1),bg.col = color, bg.border = NA, track.height = 0.05)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column=4, connection_height=heightlabelschr, track.margin=c(0.01,marginlabelschr), side="inside")
+ }
}
-plotcircos.notrack <- function(x, plotTypes, units, rotation, gap.width){
- circos.par("start.degree" = 90-rotation,"gap.degree" = gap.width,cell.padding = c(0, 0, 0, 0), track.margin=c(0,0))
- circos.genomicInitialize.new(x,plotType=plotTypes,unit=units)
+plotcircos.notrack <- function(x, plotTypes, units, rotation, gap.width, data.CN, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new(x,plotType=plotTypes,unit=units)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "inside")
+ }
}
-plotcircos.font <- function(x, color, plotTypes, units, rotation, gap.width, cexLabel, cexAxis){
- circos.par("start.degree" = 90-rotation,"gap.degree" = gap.width,cell.padding = c(0, 0, 0, 0), track.margin=c(0,0))
- circos.genomicInitialize.new.font(x,plotType=plotTypes,unit=units,cexlabel=cexLabel, cexaxis=cexAxis)
- circos.genomicTrackPlotRegion(ylim = c(0, 1),bg.col = color, bg.border = NA, track.height = 0.05)
+plotcircos.font <- function(x, color, plotTypes, units, rotation, gap.width, cexLabel, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr, data.CN){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new.font(x, plotType=plotTypes, unit=units, cexlabel=cexLabel)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="outer"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "outside")
+ }
+ circos.genomicTrackPlotRegion(ylim = c(0, 1),bg.col = color, bg.border = NA, track.height = 0.05)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "inside")
+ }
}
-plotcircos.notrack.font <- function(x, plotTypes, units, rotation, gap.width, cexLabel, cexAxis){
- circos.par("start.degree" = 90-rotation,"gap.degree" = gap.width,cell.padding = c(0, 0, 0, 0), track.margin=c(0,0))
- circos.genomicInitialize.new.font(x,plotType=plotTypes,unit=units,cexlabel=cexLabel, cexaxis=cexAxis)
+plotcircos.notrack.font <- function(x, plotTypes, units, rotation, gap.width, cexLabel, data.CN, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new.font(x, plotType=plotTypes, unit=units, cexlabel=cexLabel)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "inside")
+ }
}
-plotcircos.cyto <- function(x, plotTypes, units, rotation, gap.width){
- circos.par("start.degree" = 90-rotation,"gap.degree" = gap.width,cell.padding = c(0, 0, 0, 0), track.margin=c(0,0))
- circos.initializeWithIdeogram.new(x,plottype=plotTypes,unit=units)
+plotcircos.cyto <- function(x, plotTypes, units, rotation, gap.width, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr, data.CN){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new(x, plotType = plotTypes, unit=units)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="outer"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "outside")
+ }
+ circos.genomicTrackPlotRegion(x, ylim = c(0, 1), bg.border = NA,
+ track.height = 0.05, panel.fun = function(region, value, ...){
+ col = cytoband.col(value[[2]])
+ circos.genomicRect(region, value, ybottom = 0,
+ ytop = 1, col = col, border = NA, ...)
+ xlim = get.cell.meta.data("xlim")
+ circos.rect(xlim[1], 0, xlim[2], 1, border = "black")
+ }, cell.padding = c(0, 0, 0, 0))
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "inside")
+ }
}
-plotcircos.cyto.font <- function(x, plotTypes, units, rotation, gap.width, cexLabel, cexAxis){
- circos.par("start.degree" = 90-rotation,"gap.degree" = gap.width,cell.padding = c(0, 0, 0, 0), track.margin=c(0,0))
- circos.initializeWithIdeogram.new.font(x,plottype=plotTypes,unit=units,cexlabel=cexLabel, cexaxis=cexAxis)
+plotcircos.cyto.font <- function(x, plotTypes, units, rotation, gap.width, cexLabel, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr, data.CN){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new.font(x, plotType=plotTypes, unit=units, cexlabel=cexLabel)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="outer"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "outside")
+ }
+ circos.genomicTrackPlotRegion(x, ylim = c(0, 1), bg.border = NA,
+ track.height = 0.05, panel.fun = function(region, value, ...){
+ col = cytoband.col(value[[2]])
+ circos.genomicRect(region, value, ybottom = 0,
+ ytop = 1, col = col, border = NA, ...)
+ xlim = get.cell.meta.data("xlim")
+ circos.rect(xlim[1], 0, xlim[2], 1, border = "black")
+ }, cell.padding = c(0, 0, 0, 0))
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "inside")
+ }
}
circos.genomicInitialize.new <-
function (data, sector.names = NULL, major.by = NULL, unit = "", plotType, tickLabelsStartFromZero = TRUE, track.height = 0.05,
...)
{
- if (is.factor(data[[1]])) {
+ if(is.factor(data[[1]])){
fa = levels(data[[1]])
}
else {
fa = unique(data[[1]])
}
- if (!is.null(sector.names)) {
- if (length(sector.names) != length(fa)) {
+ if(!is.null(sector.names)){
+ if(length(sector.names) != length(fa)){
stop("length of `sector.names` and length of sectors differ.\n")
}
}
@@ -56,26 +102,26 @@ circos.genomicInitialize.new <-
circos.par(cell.padding = c(0, 0, 0, 0), points.overflow.warning = FALSE)
circos.initialize(factor(fa, levels = fa), xlim = cbind(x1,
x2), ...)
- if (any(plotType %in% c("axis", "labels"))) {
+ if(any(plotType %in% c("axis", "labels"))){
circos.genomicTrackPlotRegion(data, ylim = c(0, 1), bg.border = NA,
track.height = track.height, panel.fun = function(region,
- value, ...) {
+ value, ...){
sector.index = get.cell.meta.data("sector.index")
xlim = get.cell.meta.data("xlim")
- if (tickLabelsStartFromZero) {
+ if(tickLabelsStartFromZero){
offset = xlim[1]
- if (is.null(major.by)) {
+ if(is.null(major.by)){
xlim = get.cell.meta.data("xlim")
major.by = .default.major.by()
}
major.at = seq(xlim[1], xlim[2], by = major.by)
major.at = c(major.at, major.at[length(major.at)] +
major.by)
- if (major.by > 1e+06) {
+ if(major.by > 1e+06){
major.tick.labels = paste((major.at - offset)/1e+06,
"MB", sep = "")
}
- else if (major.by > 1000) {
+ else if(major.by > 1000){
major.tick.labels = paste((major.at - offset)/1000,
"KB", sep = "")
}
@@ -85,7 +131,7 @@ circos.genomicInitialize.new <-
}
}
else {
- if (is.null(major.by)) {
+ if(is.null(major.by)){
xlim = get.cell.meta.data("xlim")
major.by = .default.major.by()
}
@@ -93,11 +139,11 @@ circos.genomicInitialize.new <-
xlim[2], by = major.by)
major.at = c(major.at, major.at[length(major.at)] +
major.by)
- if (major.by > 1e+06) {
+ if(major.by > 1e+06){
major.tick.labels = paste(major.at/1e+06,
"MB", sep = "")
}
- else if (major.by > 1000) {
+ else if(major.by > 1000){
major.tick.labels = paste(major.at/1000,
"KB", sep = "")
}
@@ -107,20 +153,20 @@ circos.genomicInitialize.new <-
}
}
- if (unit=="") { major.tick.labels <- gsub("[mkbp]","",major.tick.labels,ignore.case = T)}
+ if(unit==""){ major.tick.labels <- gsub("[mkbp]","",major.tick.labels,ignore.case = T)}
- if (all(c("axis", "labels") %in% plotType)) {
+ if(all(c("axis", "labels") %in% plotType)){
circos.axis(h = 0, major.at = major.at, labels = major.tick.labels,
labels.cex = 0.49 * par("cex"), labels.facing = "clockwise",
major.tick.percentage = 0.2)
circos.text(mean(xlim), 1.2, labels = sector.names[sector.index],
cex = par("cex")-0.1, adj = c(0.5, -0.1*par("cex")*6-(par("cex")-1)*3), niceFacing = TRUE)
}
- else if ("labels" %in% plotType) {
+ else if("labels" %in% plotType){
circos.text(mean(xlim), 0, labels = sector.names[sector.index],
cex = par("cex")-0.1, adj = c(0.5, -0.1*par("cex")*6-(par("cex")-1)*3), niceFacing = TRUE)
}
- else if ("axis" %in% plotType) {
+ else if("axis" %in% plotType){
circos.axis(h = 0, major.at = major.at, labels = major.tick.labels,
labels.cex = 0.49 * par("cex"), labels.facing = "clockwise",
major.tick.percentage = 0.2)
@@ -130,19 +176,19 @@ circos.genomicInitialize.new <-
circos.par(cell.padding = op, points.overflow.warning = ow)
return(invisible(NULL))
}
-
+
circos.genomicInitialize.new.font <-
- function (data, sector.names = NULL, major.by = NULL, unit = "", plotType, tickLabelsStartFromZero = TRUE, track.height = 0.05, cexlabel, cexaxis,
+ function (data, sector.names = NULL, major.by = NULL, unit = "", plotType, tickLabelsStartFromZero = TRUE, track.height = 0.05, cexlabel,
...)
{
- if (is.factor(data[[1]])) {
+ if(is.factor(data[[1]])){
fa = levels(data[[1]])
}
else {
fa = unique(data[[1]])
}
- if (!is.null(sector.names)) {
- if (length(sector.names) != length(fa)) {
+ if(!is.null(sector.names)){
+ if(length(sector.names) != length(fa)){
stop("length of `sector.names` and length of sectors differ.\n")
}
}
@@ -157,26 +203,26 @@ circos.genomicInitialize.new.font <-
circos.par(cell.padding = c(0, 0, 0, 0), points.overflow.warning = FALSE)
circos.initialize(factor(fa, levels = fa), xlim = cbind(x1,
x2), ...)
- if (any(plotType %in% c("axis", "labels"))) {
+ if(any(plotType %in% c("axis", "labels"))){
circos.genomicTrackPlotRegion(data, ylim = c(0, 1), bg.border = NA,
track.height = track.height, panel.fun = function(region,
- value, ...) {
+ value, ...){
sector.index = get.cell.meta.data("sector.index")
xlim = get.cell.meta.data("xlim")
- if (tickLabelsStartFromZero) {
+ if(tickLabelsStartFromZero){
offset = xlim[1]
- if (is.null(major.by)) {
+ if(is.null(major.by)){
xlim = get.cell.meta.data("xlim")
major.by = .default.major.by()
}
major.at = seq(xlim[1], xlim[2], by = major.by)
major.at = c(major.at, major.at[length(major.at)] +
major.by)
- if (major.by > 1e+06) {
+ if(major.by > 1e+06){
major.tick.labels = paste((major.at - offset)/1e+06,
"MB", sep = "")
}
- else if (major.by > 1000) {
+ else if(major.by > 1000){
major.tick.labels = paste((major.at - offset)/1000,
"KB", sep = "")
}
@@ -186,7 +232,7 @@ circos.genomicInitialize.new.font <-
}
}
else {
- if (is.null(major.by)) {
+ if(is.null(major.by)){
xlim = get.cell.meta.data("xlim")
major.by = .default.major.by()
}
@@ -194,11 +240,11 @@ circos.genomicInitialize.new.font <-
xlim[2], by = major.by)
major.at = c(major.at, major.at[length(major.at)] +
major.by)
- if (major.by > 1e+06) {
+ if(major.by > 1e+06){
major.tick.labels = paste(major.at/1e+06,
"MB", sep = "")
}
- else if (major.by > 1000) {
+ else if(major.by > 1000){
major.tick.labels = paste(major.at/1000,
"KB", sep = "")
}
@@ -208,22 +254,22 @@ circos.genomicInitialize.new.font <-
}
}
- if (unit=="") { major.tick.labels <- gsub("[mkbp]","",major.tick.labels,ignore.case = T)}
-
- if (all(c("axis", "labels") %in% plotType)) {
+ if(unit==""){ major.tick.labels <- gsub("[mkbp]","",major.tick.labels,ignore.case = T)}
+
+ if(all(c("axis", "labels") %in% plotType)){
circos.axis(h = 0, major.at = major.at, labels = major.tick.labels,
- labels.cex = 0.49 * cexaxis, labels.facing = "clockwise",
+ labels.cex = 0.49 * cexlabel, labels.facing = "clockwise",
major.tick.percentage = 0.2)
circos.text(mean(xlim), 1.2, labels = sector.names[sector.index],
cex = cexlabel, adj = c(0.5, -0.1*cexlabel*6-(cexlabel-1)*3), niceFacing = TRUE)
}
- else if ("labels" %in% plotType) {
+ else if("labels" %in% plotType){
circos.text(mean(xlim), 0, labels = sector.names[sector.index],
cex = cexlabel, adj = c(0.5, -0.1*cexlabel*6-(cexlabel-1)*3), niceFacing = TRUE)
}
- else if ("axis" %in% plotType) {
+ else if("axis" %in% plotType){
circos.axis(h = 0, major.at = major.at, labels = major.tick.labels,
- labels.cex = 0.49 * cexaxis, labels.facing = "clockwise",
+ labels.cex = 0.49 * cexlabel, labels.facing = "clockwise",
major.tick.percentage = 0.2)
}
})
@@ -232,1401 +278,1494 @@ circos.genomicInitialize.new.font <-
return(invisible(NULL))
}
- circos.initializeWithIdeogram.new <-
- function (cytoband = paste(system.file(package = "circlize"),
- "/extdata/cytoBand.txt", sep = ""), species = NULL, sort.chr = TRUE,
- chromosome.index = NULL, major.by = NULL, units = "", plottype, plotType = c("ideogram",
- "axis", "labels"), track.height = 0.05, ideogram.height = 0.05,
- ...)
- {
- e = try(cytoband <- read.cytoband(cytoband, species = species,
- sort.chr = sort.chr, chromosome.index = chromosome.index),
- silent = TRUE)
- if (class(e) == "try-error" && !is.null(species)) {
- e2 = try(cytoband <- read.chromInfo(species = species,
- sort.chr = sort.chr, chromosome.index = chromosome.index),
- silent = TRUE)
- if (class(e2) == "try-error") {
- message(e)
- message(e2)
- stop("Cannot download either cytoband or chromInfo file from UCSC.\n")
+downloadfile = function(name){downloadHandler(
+ filename = function(){ name },
+ content = function(file){
+ chr <- read.csv(name,head=T,as.is=T)
+ write.csv(chr, file, row.names=FALSE, quote=F)
+ })
+}
+
+updateText = function(x, input, session){if(input[[paste("uploadtrack",x,sep="")]] == 2){
+ assign(paste("highlightclear",x,sep=""),input[[paste("clearText_button",x,sep="")]])
+ if(get(paste("highlightclear",x,sep="")) == 0) return(NULL)
+ isolate({updateTextInput(session, paste("hltData",x,sep=""), label = ",", value = "")})
+}
+}
+
+.default.major.by = function(sector.index = get.cell.meta.data("sector.index"),
+ track.index = get.cell.meta.data("track.index")){
+ d = circos.par("major.by.degree")
+ cell.start.degre = get.cell.meta.data("cell.start.degree", sector.index, track.index)
+ tm = reverse.circlize(c(cell.start.degre, cell.start.degre-d), rep(get.cell.meta.data("cell.bottom.radius", sector.index = sector.index, track.index = track.index), 2))
+ major.by = abs(tm[1, 1] - tm[2, 1])
+ digits = as.numeric(gsub("^.*e([+-]\\d+)$", "\\1", sprintf("%e", major.by)))
+ major.by = round(major.by, digits = -1*digits)
+ return(major.by)
+}
+
+get_most_inside_radius = function() {
+ tracks = get.all.track.index()
+ if(length(tracks) == 0) {
+ 1
+ }else{
+ n = length(tracks)
+ get.cell.meta.data("cell.bottom.radius", track.index = tracks[n]) - get.cell.meta.data("track.margin", track.index = tracks[n])[1] - circos.par("track.margin")[2]
+ }
+}
+
+plotfig <- function(input, output, trackindx, data.L, data.L1, data.L2, data.C, data.T, data.N, data.CN, hltTrack.List, hltdata.List, heightSize, widthSize, colorChr, gap.width, cexlabel, unitChr, labelChr, fontsize, trackChr, datatypeChr, transparencyHlt, legendtext, labeltext, poslabels, heightlabels, marginlabels, fillareaTrack, borderareaTrack, selreaTrack, addlegend, poslegend, transparencyhltLinks, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr, transparencyTrack, transparencyLinks, marginLinks, selcolorLinks, barBoundary, coldir1Track, coldir2Track, colrectTrack, colorTrack, colorLinks, linksTrack, typeTrack, coltypeTk, colorcusTrack, rectTrack, rectcolTrack, rectcoldisTrack, rectcoldiscusTrack, borderTrack, gridsborderTrack, colgridsborderTrack, directionTrack, colorlineTrack, symbolTrack, pointsizeTrack, baselineTrack, heightTrack, colhmapTrack, lineshmapTrack, heightlinesTrack, marginlinesTrack, marginTrack , bgcolTrack){
+ ## *** The highlight regions ***
+ if(!is.null(data.L)){
+ highlightLinks <<- input$highlightLinks
+ hltdataLinks <<- input$hltDataLinks
+ hltregion1.export <<- NULL
+ hltregion2.export <<- NULL
+ if(highlightLinks==1 && nchar(hltdataLinks)!=0){
+ tmpL <- matrix(strsplit(hltdataLinks, "\n")[[1]])
+ colnamesL <- c("chr","start","end","color")
+ datL <- matrix(0, length(tmpL), length(colnamesL))
+ colnames(datL) <- colnamesL
+ for(l in 1:length(tmpL)){
+ rowL <- strsplit(tmpL[l], ",")[[1]]
+ if(length(rowL)==4){
+ datL[l,] <- rowL
+ }
}
- else {
- message("Downloading cytoBand file from UCSC failed. Use chromInfo file instead.\nNote ideogram track will be removed from the plot.")
- plotType = setdiff(plotType, "ideogram")
- if (is.null(chromosome.index)) {
- chromInfo = read.chromInfo(species = species)
- chr_len = sort(chromInfo$chr.len, decreasing = TRUE)
- i = which(chr_len[seq_len(length(chr_len) - 1)]/chr_len[seq_len(length(chr_len) -
- 1) + 1] > 5)[1]
- if (length(i)) {
- chromosome = chromInfo$chromosome[chromInfo$chromosome %in%
- names(chr_len[chr_len >= chr_len[i]])]
- }
- else {
- chromosome = chromInfo$chromosome
- }
- cytoband = read.chromInfo(species = species,
- chromosome.index = chromosome, sort.chr = sort.chr)
+ datL.ht <- as.data.frame(t(datL),stringsAsFactors=F)
+ datL.ht1 <- unlist(lapply(datL.ht,function(x){
+ all(x==0)
+ })
+ )
+ output$errorinfo3 <- renderPrint({
+ if(input$linksTrack && !is.null(input$linksFile) && input$highlightLinks==1 && nchar(input$hltDataLinks)>0){
+ validate(
+ need(all(datL.ht1==FALSE), "Error: Data to highlight genomic regions should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color.")
+ )
}
- }
- }
- else if (class(e) == "try-error") {
- stop(e)
- }
- df = cytoband$df
- chromosome = cytoband$chromosome
- if (is.null(chromosome.index)) {
- chromosome.index = chromosome
+ })
+ outputOptions(output, "errorinfo3", suspendWhenHidden = FALSE)
+ datL <- data.frame(datL,stringsAsFactors=F)
+ datL$start <- as.numeric(datL$start)
+ datL$end <- as.numeric(datL$end)
+ datL$color <- datL$color
+ queryL <- GRanges(seqnames = datL$chr,ranges=IRanges(start=datL$start,end=datL$end),seqinfo=NULL)
+ subj1 <- GRanges(seqnames = data.L1[,1],ranges=IRanges(start=data.L1[,2],end=data.L1[,3]),seqinfo=NULL)
+ subj2 <- GRanges(seqnames = data.L2[,1],ranges=IRanges(start=data.L2[,2],end=data.L2[,3]),seqinfo=NULL)
+ indx1 <<- findOverlaps(queryL,subj1)
+ indx1 <<- data.frame(indx1,stringsAsFactors=F)
+ indx1$queryHits <- as.numeric(indx1$queryHits)
+ indx1$subjectHits <- as.numeric(indx1$subjectHits)
+ hltregion1 <- data.L1[indx1$subjectHits,]
+ data.LL1 <- data.L1
+ hltregion1$color <- datL$color[indx1[,1]]
+ indx2 <<- findOverlaps(queryL,subj2)
+ indx2 <<- data.frame(indx2,stringsAsFactors=F)
+ indx2$queryHits <- as.numeric(indx2$queryHits)
+ indx2$subjectHits <- as.numeric(indx2$subjectHits)
+ hltregion2 <- data.L2[indx2$subjectHits,]
+ data.LL2 <- data.L2
+ hltregion2$color <- datL$color[indx2[,1]]
+ hltregion1.export <<- hltregion1
+ hltregion2.export <<- hltregion2
}
- df[[1]] = factor(as.vector(df[[1]]), levels = chromosome.index)
- sn = unique(as.vector(df[[1]]))
- o.cell.padding = circos.par("cell.padding")
- circos.par(cell.padding = c(o.cell.padding[1], 0, o.cell.padding[3],
- 0))
- circos.genomicInitialize.new(df, sector.names = sn, major.by = major.by,
- plotType = plottype, track.height = track.height, unit=units, ...)
- if (any(plotType %in% "ideogram")) {
- circos.genomicTrackPlotRegion(df, ylim = c(0, 1), bg.border = NA,
- track.height = ideogram.height, panel.fun = function(region,
- value, ...) {
- col = cytoband.col(value[[2]])
- circos.genomicRect(region, value, ybottom = 0,
- ytop = 1, col = col, border = NA, ...)
- xlim = get.cell.meta.data("xlim")
- circos.rect(xlim[1], 0, xlim[2], 1, border = "black")
- }, cell.padding = c(0, 0, 0, 0))
- }
- }
-
- circos.initializeWithIdeogram.new.font <-
- function (cytoband = paste(system.file(package = "circlize"),
- "/extdata/cytoBand.txt", sep = ""), species = NULL, sort.chr = TRUE,
- chromosome.index = NULL, major.by = NULL, units = "", plottype, plotType = c("ideogram",
- "axis", "labels"), track.height = 0.05, ideogram.height = 0.05, cexlabel, cexaxis,
- ...)
- {
- e = try(cytoband <- read.cytoband(cytoband, species = species,
- sort.chr = sort.chr, chromosome.index = chromosome.index),
- silent = TRUE)
- if (class(e) == "try-error" && !is.null(species)) {
- e2 = try(cytoband <- read.chromInfo(species = species,
- sort.chr = sort.chr, chromosome.index = chromosome.index),
- silent = TRUE)
- if (class(e2) == "try-error") {
- message(e)
- message(e2)
- stop("Cannot download either cytoband or chromInfo file from UCSC.\n")
+ }
+ output$circosfigure <- renderPlot({
+ withProgress(message='Making plots',value = 0,{
+ data.C[,2] <- as.numeric(data.C[,2])
+ data.C[,3] <- as.numeric(data.C[,3])
+ circos.clear()
+ colorChr <- gsub('\\"',"",colorChr)
+ colorChr <- gsub("0x","#", colorChr)
+ repnumcol <- round(length(unique(data.C[,1]))/length(colorChr))+1
+ colorChr <- rep(colorChr, repnumcol)[1:length(unique(data.C[,1]))]
+ ## *** The gap width ***
+ repnumgap <- round(length(unique(data.C[,1]))/length(gap.width))+1
+ gap.width <- rep(gap.width, repnumgap)[1:length(unique(data.C[,1]))]
+ gap.width <- as.numeric(gap.width)
+ rotation <- gap.width[length(gap.width)]/2
+ if(fontsize=="custom"){
+ if(length(legendtext)!=0 && addlegend==1 && poslegend==1){
+ par(oma=c(0,0,0,0),mar = c(9,0.5,1,9.5),xpd=TRUE,cex=cexlabel-0.1)
+ }else{
+ par(mar = c(0.6,0.6,0.6,0.6),cex=cexlabel-0.1)
+ }
+ }else{
+ if(length(legendtext)!=0 && addlegend==1 && poslegend==1){
+ par(oma=c(0,0,0,0),mar = c(9,0.5,1,9.5),xpd=TRUE,cex=as.numeric(fontsize)-0.05)
+ }else{
+ par(mar = c(0.6,0.6,0.6,0.6),cex=as.numeric(fontsize)-0.05)
+ }
+ }
+ if(datatypeChr=="general"){
+ if(trackChr=="track" && fontsize!="custom"){
+ plotcircos(data.C, color=colorChr, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr, data.CN=data.CN)
+ }else if(trackChr=="track" && fontsize=="custom"){
+ plotcircos.font(data.C, color=colorChr, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, cexLabel=cexlabel-0.1, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr, data.CN=data.CN)
+ }else if(trackChr!="track" && fontsize!="custom"){
+ plotcircos.notrack(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, data.CN=data.CN, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr)
+ }else if(trackChr!="track" && fontsize=="custom"){
+ plotcircos.notrack.font(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, cexLabel=cexlabel-0.1, data.CN=data.CN, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr)
+ }
+ }else{
+ if(fontsize!="custom"){
+ plotcircos.cyto(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr, data.CN=data.CN)
+ }else if(fontsize=="custom"){
+ plotcircos.cyto.font(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, cexLabel=cexlabel-0.1, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr, data.CN=data.CN)
+ }
}
- else {
- message("Downloading cytoBand file from UCSC failed. Use chromInfo file instead.\nNote ideogram track will be removed from the plot.")
- plotType = setdiff(plotType, "ideogram")
- if (is.null(chromosome.index)) {
- chromInfo = read.chromInfo(species = species)
- chr_len = sort(chromInfo$chr.len, decreasing = TRUE)
- i = which(chr_len[seq_len(length(chr_len) - 1)]/chr_len[seq_len(length(chr_len) -
- 1) + 1] > 5)[1]
- if (length(i)) {
- chromosome = chromInfo$chromosome[chromInfo$chromosome %in%
- names(chr_len[chr_len >= chr_len[i]])]
+ if(!is.null(data.T)){
+ takindx <- 1
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1){
+ takindx <- takindx+2
+ }
+ tkcolor.export <<- list()
+ data.TTC.export <<- list()
+ for(i in 1:length(data.T)){
+ data.TT <- data.T[[i]]
+ tktype <- typeTrack[i]
+ data.TT[,2] <- as.numeric(data.TT[,2])
+ data.TT[,3] <- as.numeric(data.TT[,3])
+ data.NN <- data.N[[i]]
+ ## *** The fill color for track ***
+ data.TT$num <- 1:nrow(data.TT)
+ data.TTC.export[[i]] <<- ""
+ if(tktype!="rect" && tktype!="heatmap" && tktype!="ideogram"){
+ data.TTC <- NULL
+ coltypeTrack <- coltypeTk[i]
+ if(coltypeTrack==2){
+ tkcolor <- colorTrack[i]
+ tkcolor <- gsub("\\s","",strsplit(tkcolor,",")[[1]])
+ tkcolor <- gsub('\\"',"",tkcolor)
+ tkcolor <- gsub("0x","#", tkcolor)
+ }else if((coltypeTrack==3 && ("color" %in% colnames(data.TT))) | (coltypeTrack==3 && ncol(data.T[[i]])==4 && colnames(data.TT)[4]=="stack")){
+ tkcolor <- colorcusTrack[i]
+ tkcolor <- unlist(strsplit(tkcolor,";"))
+ tkcolor <- data.frame(id=tkcolor,stringsAsFactors=F)
+ tkcolor$group <- gsub("\\:.*","",tkcolor$id)
+ tkcolor$cols <- gsub(".*\\:","",tkcolor$id)
+ tkcolor$group <- gsub(" ","",tkcolor$group)
+ tkcolor$cols <- gsub(" ","",tkcolor$cols)
+ colname <- colnames(data.TT)
+ if("color" %in% colnames(data.TT)){
+ data.TTC <- merge(data.TT,tkcolor,by.x="color",by.y="group",all.x=T)
+ }else if(colnames(data.TT)[4]=="stack"){
+ data.TTC <- merge(data.TT,tkcolor,by.x="stack",by.y="group",all.x=T)
+ }
+ data.TTC <- data.TTC[c(colname,"cols")]
+ data.TTC$cols[is.na(data.TTC$cols)] <- "grey"
+ tkcolor <- unique(data.TTC$cols)
+ data.TT <- data.TT[,1:4]
+ }else if(coltypeTrack==1 && ("color" %in% colnames(data.TT))){
+ selcols <- c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "burlywood3", "magenta2")
+ tkcolor <- sample(selcols,length(unique(data.TT$color)))
+ tkcolor.export[[i]] <<- tkcolor
+ tkcolor <- data.frame(group=unique(data.TT$color),cols=tkcolor,stringsAsFactors=F)
+ colname <- colnames(data.TT)
+ data.TTC <- merge(data.TT,tkcolor,by.x="color",by.y="group",all.x=T)
+ data.TTC <- data.TTC[c(colname,"cols")]
+ data.TTC$cols[is.na(data.TTC$cols)] <- "grey"
+ tkcolor <- unique(data.TTC$cols)
+ data.TT <- data.TT[,1:4]
+ }else if(coltypeTrack==1 && ncol(data.T[[i]])==4 && colnames(data.TT)[4]=="stack"){
+ selcols <- c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "burlywood3", "magenta2")
+ tkcolor <- sample(selcols,length(unique(data.TT$stack)))
+ tkcolor.export[[i]] <<- tkcolor
+ tkcolor <- data.frame(group=unique(data.TT$stack),cols=tkcolor,stringsAsFactors=F)
+ colname <- colnames(data.TT)
+ data.TTC <- merge(data.TT,tkcolor,by.x="stack",by.y="group",all.x=T)
+ data.TTC <- data.TTC[c(colname,"cols")]
+ data.TTC$cols[is.na(data.TTC$cols)] <- "grey"
+ tkcolor <- unique(data.TTC$cols)
+ data.TT <- data.TT[,1:4]
+ }else{
+ selcols <- c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "burlywood3", "magenta2")
+ tkcolor <- sample(selcols,ncol(data.T[[i]])-3)
+ tkcolor.export[[i]] <<- tkcolor
+ }
+ if(!is.null(data.TTC)){
+ data.TTC <- data.TTC[order(data.TTC$num),]
+ rownames(data.TTC) <- NULL
+ data.TTC$num <- NULL
+ }
+ data.TT$num <- NULL
+ if(ncol(data.TT)==5 && ("color" %in% colnames(data.TT))){
+ data.TT <- data.TT[,1:4]
+ }else if(c(ncol(data.TT)==5 | ncol(data.TT)==6 | ncol(data.TT)==7) && ("pch" %in% colnames(data.TT)) && !("color" %in% colnames(data.TT))){
+ data.TT <- data.TT[,1:4]
+ tkcolor <- tkcolor[1]
+ }
+ if(is.null(data.TTC)){
+ data.TTC.export[[i]] <<- ""
+ }else{
+ data.TTC.export[[i]] <<- data.TTC
+ }
+ }
+ ## *** The backgroud color for track ***
+ tkbgcol <- bgcolTrack[i]
+ tkbgcol <- gsub("\\s","",strsplit(tkbgcol,",")[[1]])
+ tkbgcol <- gsub('\\"',"",tkbgcol)
+ tkbgcol <- gsub("0x","#", tkbgcol)
+ repnumcol <- round(length(unique(data.C[,1]))/length(tkbgcol))+1
+ tkbgcol <- rep(tkbgcol, repnumcol)[1:length(unique(data.C[,1]))]
+ ## *** The track margin ***
+ tkmargin <- marginTrack[i]
+ tkmargin <- as.numeric(tkmargin)
+ ## *** The track height ***
+ tkheight <- heightTrack[i]
+ tkheight <- as.numeric(tkheight)
+ ## *** The y coordinates of baselines ***
+ tklinecoord <- baselineTrack[i]
+ tklinecoord <- as.numeric(unlist(strsplit(tklinecoord,",")))
+ ## *** The symbol type & point size***
+ if(ncol(data.T[[i]])==4 && colnames(data.T[[i]])[4]=="stack"){
+ symboltype <- symbolTrack[i]
+ symboltype <- as.numeric(unlist(strsplit(symboltype,",")))
+ symboltype <- rep(symboltype, length(unique(data.T[[i]][,4])))[1:length(unique(data.T[[i]][,4]))]
+ pointsize <- as.numeric(pointsizeTrack[1])
}
- else {
- chromosome = chromInfo$chromosome
+ ## *** The baselines color ***
+ tklinecolor <- colorlineTrack[i]
+ if(nchar(tklinecolor)!=0){
+ tklinecolor <<- gsub('\\"',"",tklinecolor)
+ tklinecolor <<- gsub("0x","#", tklinecolor)
+ tklinecolor <- unlist(strsplit(tklinecolor,","))
+ tklinecolor <- rep(tklinecolor, length(tklinecoord))[1:length(tklinecoord)]
}
- cytoband = read.chromInfo(species = species,
- chromosome.index = chromosome, sort.chr = sort.chr)
- }
- }
- }
- else if (class(e) == "try-error") {
- stop(e)
- }
- df = cytoband$df
- chromosome = cytoband$chromosome
- if (is.null(chromosome.index)) {
- chromosome.index = chromosome
- }
- df[[1]] = factor(as.vector(df[[1]]), levels = chromosome.index)
- sn = unique(as.vector(df[[1]]))
- o.cell.padding = circos.par("cell.padding")
- circos.par(cell.padding = c(o.cell.padding[1], 0, o.cell.padding[3],
- 0))
- circos.genomicInitialize.new.font(df, sector.names = sn, major.by = major.by,
- plotType = plottype, track.height = track.height, unit=units, cexlabel=cexlabel, cexaxis=cexaxis,...)
- if (any(plotType %in% "ideogram")) {
- circos.genomicTrackPlotRegion(df, ylim = c(0, 1), bg.border = NA,
- track.height = ideogram.height, panel.fun = function(region,
- value, ...) {
- col = cytoband.col(value[[2]])
- circos.genomicRect(region, value, ybottom = 0,
- ytop = 1, col = col, border = NA, ...)
- xlim = get.cell.meta.data("xlim")
- circos.rect(xlim[1], 0, xlim[2], 1, border = "black")
- }, cell.padding = c(0, 0, 0, 0))
- }
- }
-
-plotfigg <- function(input, output, trackindx, data.L, data.L1, data.L2, data.C, data.T, hltTrack.List, hltdata.List, heightSize, widthSize, colorChr, gap.width, cexAxis, cexAxislabel, unitChr, labelChr, fontsizeChr, trackChr, datatypeChr, transparencyHlt, legendtext, addlegend, poslegend, transparencyhltLinks, transparencyTrack, transparencyLinks, marginLinks, selcolorLinks, barBoundary, coldir1Track, coldir2Track, colrectTrack, colorTrack, colorLinks, linksTrack, typeTrack, coltypeTk, rectTrack, rectcolTrack, rectcoldisTrack, borderTrack, directionTrack, colorlineTrack, baselineTrack, heightTrack, midhmapTrack, midpointTrack, colhmapTrack, lineshmapTrack, heightlinesTrack, marginlinesTrack, marginTrack , bgcolTrack){
- ## *** The highlight regions ***
- if(!is.null(data.L)){
- assign("highlightLinks",input$highlightLinks)
- assign("hltdataLinks",input$hltDataLinks)
- if(nchar(hltdataLinks)==0){
- }else{
- tmpL <- matrix(strsplit(hltdataLinks, "\n")[[1]])
- colnamesL <- c("chr","start","end","color")
- datL <- matrix(0, length(tmpL), length(colnamesL))
- colnames(datL) <- colnamesL
- for(l in 1:length(tmpL)){
- rowL <- strsplit(tmpL[l], ",")[[1]]
- datL[l,] <- rowL
- }
- datL <- data.frame(datL,stringsAsFactors = F)
- datL$start <- as.numeric(datL$start)
- datL$end <- as.numeric(datL$end)
- datL$color <- datL$color
- queryL <- GRanges(seqnames = datL$chr,ranges=IRanges(start=datL$start,end=datL$end),seqinfo = NULL)
- subj1 <- GRanges(seqnames = data.L1[,1],ranges=IRanges(start=data.L1[,2],end=data.L1[,3]),seqinfo = NULL)
- subj2 <- GRanges(seqnames = data.L2[,1],ranges=IRanges(start=data.L2[,2],end=data.L2[,3]),seqinfo = NULL)
-
- indx1 <<- findOverlaps(queryL,subj1)
- indx1 <<- data.frame(indx1,stringsAsFactors=F)
- indx1$queryHits <- as.numeric(indx1$queryHits)
- indx1$subjectHits <- as.numeric(indx1$subjectHits)
- hltregion1 <- data.L1[indx1$subjectHits,]
- data.LL1 <- data.L1
- hltregion1$color <- datL$color[indx1[,1]]
-
- indx2 <<- findOverlaps(queryL,subj2)
- indx2 <<- data.frame(indx2,stringsAsFactors=F)
- indx2$queryHits <- as.numeric(indx2$queryHits)
- indx2$subjectHits <- as.numeric(indx2$subjectHits)
- hltregion2 <- data.L2[indx2$subjectHits,]
- data.LL2 <- data.L2
- hltregion2$color <- datL$color[indx2[,1]]
- }
- }
- output$circosfigure <- renderPlot({
- data.C[,2] <- as.numeric(data.C[,2])
- data.C[,3] <- as.numeric(data.C[,3])
- circos.clear()
- colorChr <- gsub('\\"',"",colorChr)
- colorChr <- gsub("0x","#", colorChr)
- repnumcol <- round(length(unique(data.C[,1]))/length(colorChr)) + 1
- colorChr <- rep(colorChr, repnumcol)[1:length(unique(data.C[,1]))]
- ## *** The gap width ***
- repnumgap <- round(length(unique(data.C[,1]))/length(gap.width)) + 1
- gap.width <- rep(gap.width, repnumgap)[1:length(unique(data.C[,1]))]
- gap.width <- as.numeric(gap.width)
- rotation <- gap.width[length(gap.width)]/2
- if (fontsizeChr=="custom"){
- if (length(legendtext)!=0 && addlegend==1 && poslegend==1){
- par(oma=c(0,0,0,0),mar = c(9,0.5,1,9.5),xpd=TRUE,cex=cexAxislabel-0.1)
- }else{
- par(mar = c(0.6,0.6,0.6,0.6),cex=cexAxislabel-0.1)
- }
- }else{
- if (length(legendtext)!=0 && addlegend==1 && poslegend==1){
- par(oma=c(0,0,0,0),mar = c(9,0.5,1,9.5),xpd=TRUE,cex=as.numeric(fontsizeChr)-0.05)
- }else{
- par(mar = c(0.6,0.6,0.6,0.6),cex=as.numeric(fontsizeChr)-0.05)
- }
- }
- if(datatypeChr=="general"){
- if (trackChr=="track" & fontsizeChr!="custom") {
- plotcircos(data.C, color = colorChr, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width)
- }else if (trackChr=="track" & fontsizeChr=="custom") {
- plotcircos.font(data.C, color = colorChr, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, cexLabel=cexAxislabel-0.1, cexAxis=cexAxis)
- }else if (trackChr!="track" & fontsizeChr!="custom") {
- plotcircos.notrack(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width)
- }else if (trackChr!="track" & fontsizeChr=="custom"){
- plotcircos.notrack.font(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, cexLabel=cexAxislabel-0.1, cexAxis=cexAxis)
- }
- }else{
- if (fontsizeChr!="custom") {
- plotcircos.cyto(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width)
- }else if (fontsizeChr=="custom") {
- plotcircos.cyto.font(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, cexLabel=cexAxislabel-0.1, cexAxis=cexAxis)
- }
- }
- if(!is.null(data.T)){
- for(i in 1:length(data.T)){
- data.TT <- data.T[[i]]
- for(x in 2:(ncol(data.TT)-1)){
- data.TT[,x] <- as.numeric(data.TT[,x])
- }
- tktype <- typeTrack[i]
- ## *** The fill color for track ***
- if(tktype!="rect" && tktype!="heatmap"){
- coltypeTrack <- coltypeTk[i]
- if(coltypeTrack==2){
- tkcolor <- colorTrack[i]
- tkcolor <- gsub("\\s","",strsplit(tkcolor,",")[[1]])
- tkcolor <- gsub('\\"',"",tkcolor)
- tkcolor <- gsub("0x","#", tkcolor)
- }else{
- selcols <- c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "burlywood3", "magenta2")
- tkcolor <- sample(selcols,ncol(data.T[[i]])-3)
- }
- }
- ## *** The backgroud color for track ***
- tkbgcol <- bgcolTrack[i]
- tkbgcol <- gsub("\\s","",strsplit(tkbgcol,",")[[1]])
- tkbgcol <- gsub('\\"',"",tkbgcol)
- tkbgcol <- gsub("0x","#", tkbgcol)
- repnumcol <- round(length(unique(data.C[,1]))/length(tkbgcol)) + 1
- tkbgcol <- rep(tkbgcol, repnumcol)[1:length(unique(data.C[,1]))]
- ## *** The track margin ***
- tkmargin <- marginTrack[i]
- tkmargin <- as.numeric(tkmargin)
- ## *** The track height ***
- tkheight <- heightTrack[i]
- tkheight <- as.numeric(tkheight)
- ## *** The y coordinates of baselines ***
- tklinecoord <- baselineTrack[i]
- tklinecoord <- as.numeric(unlist(strsplit(tklinecoord,",")))
- ## *** The baselines color ***
- tklinecolor <- colorlineTrack[i]
- if (nchar(tklinecolor)!=0){
- tklinecolor <<- gsub('\\"',"",tklinecolor)
- tklinecolor <<- gsub("0x","#", tklinecolor)
- tklinecolor <- unlist(strsplit(tklinecolor,","))
- tklinecolor <- rep(tklinecolor, length(tklinecoord))[1:length(tklinecoord)]
- }
- ## *** The fill color for track ***
- hmapcols <- gsub('\\"',"",colhmapTrack[i])
- hmapcols <- unlist(strsplit(hmapcols,"\\."))
- ## *** The midpoint ***
- midhmap <- midhmapTrack[i]
- ## *** Select midpoint ***
- midpoint <- midpointTrack[i]
- ## *** Add connection ***
- lineshmap <- lineshmapTrack[i]
- if (lineshmap==1){
- heightlines <<- heightlinesTrack[i]
- marginlines <<- marginlinesTrack[i]
- }
- ## *** Add border ***
- tkborder <- borderTrack[i]
- ## *** The bar direction ***
- tkbardir <- directionTrack[i]
- if (tkbardir==2){
- tkbarvalue <- barBoundary[i]
- tkbarcol1 <- coldir1Track[i]
- tkbarcol2 <- coldir2Track[i]
- tktransparency <- transparencyTrack[i]
- tkbarcol1 <- adjustcolor(tkbarcol1, alpha.f = tktransparency)
+ if(ncol(data.T[[i]])==4 && colnames(data.T[[i]])[4]=="stack"){
+ tklinecol <<- gsub('\\"',"",tklinecolor)
+ tklinecol <<- gsub("0x","#", tklinecol)
+ tklinecol <- unlist(strsplit(tklinecol,","))
+ tklinecol <- rep(tklinecol, length(unique(data.T[[i]][,4])))[1:length(unique(data.T[[i]][,4]))]
+ }
+ ## *** The fill color for track ***
+ hmapcols <- gsub('\\"',"",colhmapTrack[i])
+ hmapcols <- unlist(strsplit(hmapcols,"\\."))
+ ## *** Add connection ***
+ lineshmap <- lineshmapTrack[i]
+ if(lineshmap==1){
+ heightlines <<- heightlinesTrack[i]
+ marginlines <<- marginlinesTrack[i]
+ }
+ ## *** Add border ***
+ tkborder <- borderTrack[i]
+ gridsborder <- gridsborderTrack[i]
+ if(gridsborder=="add"){
+ tkbordercol <<- colgridsborderTrack[i]
+ if(nchar(tkbordercol)==0){
+ tkbordercol <<- NA
+ }
+ }else{
+ tkbordercol <<- NA
+ }
+ ## *** The bar direction ***
+ tkbardir <- directionTrack[i]
+ if(tkbardir==2){
+ tkbarvalue <- barBoundary[i]
+ tkbarcol1 <- coldir1Track[i]
+ tkbarcol2 <- coldir2Track[i]
+ tktransparency <- transparencyTrack[i]
+ tkbarcol1 <- adjustcolor(tkbarcol1, alpha.f = tktransparency)
tkbarcol2 <- adjustcolor(tkbarcol2, alpha.f = tktransparency)
- }
- ## *** The data color ***
- tkrectcol <- rectTrack[i]
- ## *** Select color ***
- selrectcol <- rectcolTrack[i]
- if (tkrectcol==1){
- rectcol <- colrectTrack[i]
- if (rectcol=="blue"){
- rectcols <<- c("#EDEDFD","#6969F5","#00008B")
- }else if (rectcol=="red") {
- rectcols <<- c("#FDEDED","#F56969","#8B0000")
- }else if (rectcol=="green") {
- rectcols <<- c("#EDFBED","#69E169","#008B00")
- }else if (rectcol=="cyan") {
- rectcols <<- c("#EDFBFB","#69E1E1","#008B8B")
- }else if (rectcol=="purple") {
- rectcols <<- c("#F6F0FB","#B27FE1","#551A8B")
- }else if (rectcol=="pink") {
- rectcols <<- c("#FBEEF5","#E172AE","#8B1076")
- }else if (rectcol=="orange") {
- rectcols <<- c("#FDF5ED","#F5AE69","#8B4500")
- }else if (rectcol=="yellow") {
- rectcols <<- c("#FDFDED","#EFEF1A","#8B8B00")
- }else if (rectcol=="navy") {
- rectcols <<- c("#EDEDF6","#7272B8","#000080")
- }else if (rectcol=="seagreen") {
- rectcols <<- c("#F2FBF6","#4EEE94","#2E8B57")
- }else if (rectcol=="maroon") {
- rectcols <<- c("#FFF4FB","#FF69C7","#8B1C62")
- }else if (rectcol=="olivedrab") {
- rectcols <<- c("#FBFFF4","#C6FF52","#698B22")
- }else if (rectcol=="gold") {
- rectcols <<- c("#FFFCF1","#FFDD28","#8B7500")
- }else if (rectcol=="lightblue") {
- rectcols <<- c("#EFF5F7","#AFCDD7","#68838B")
- }else if (rectcol=="navy.yellow") {
- rectcols <<- c("#000080","#7B7B41","#FFFF00")
- }else if (rectcol=="purple.seagreen") {
- rectcols <<- c("#551A8B","#548994","#54FF9F")
- }else if (rectcol=="navy.orange") {
- rectcols <<- c("#000080","#7B5041","#FFA500")
- }else if (rectcol=="navy.cyan") {
- rectcols <<- c("#000080","#007BBD","#00FFFF")
- }else if (rectcol=="blue.red") {
- rectcols <<- c("#0000FF","#730083","#EE0000")
- }else if (rectcol=="green.red") {
- rectcols <<- c("#00EE00","#757800","#EE0000")
- }
- }else if (tkrectcol==2 & selrectcol==2) {
- rectcols <<- rectcoldisTrack[i]
- }
- ## *** The transparency of color ***
- tktransparency <- transparencyTrack[i]
- if(tktype!="rect" && tktype!="heatmap"){
- tkcolor <- adjustcolor(tkcolor, alpha.f = tktransparency)
- }
- data.TTT <- data.TT
- data.TTT$id <- paste(data.TTT[,1],data.TTT[,2],data.TTT[,3],sep="")
- data.TTT$num <- 1:nrow(data.TTT)
- ## *** The links margin ***
- if(i != length(data.T)){
- lkmargin <- 0
- }else{
- lkmargin <- marginLinks
- }
- if(tkborder=="add"){
- tkborder <- "grey"
- }else{
- tkborder <- NA
- }
- columns <- c(1:ncol(data.TT))[-c(1:3)]
- if(tktype=="line"){
- data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
- circos.genomicTrackPlotRegion(data.TT, numeric.column= columns, track.height = tkheight, track.margin=c(lkmargin,tkmargin),
- bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- circos.genomicLines(region, value, col=tkcolor, lwd=1, lty=1, ...)
- })
- assign("hltTrack",hltTrack.List[[i]])
- assign("hltdata",hltdata.List[[i]])
- if (nchar(hltdata)==0) {
- }else if (hltTrack==1 & nrow(hltregion.List[[i]])>0){
- assign("hltregion",hltregion.List[[i]])
- hlttransparency <- transparencyHlt[i]
- hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
- hltregion$color <- gsub("0x","#", hltregion$color)
- chrr <- unique(hltregion[,1])
- lapply(chrr, function(x){
- datt <- hltregion[hltregion[,1] %in% x,]
- trackk <- data.TTT[data.TTT[,1] %in% x,]
- trackk <- trackk[!trackk$id %in% datt$id,]
- col <- unique(datt$color)
- if (trackChr=="track") {
- circos.updatePlotRegion(sector.index = x, track.index=i+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }else{
- circos.updatePlotRegion(sector.index = x, track.index=i+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
+ }
+ ## *** The data color ***
+ tkrectcol <- rectTrack[i]
+ ## *** Select color ***
+ selrectcol <- rectcolTrack[i]
+ if(tkrectcol==1){
+ rectcol <- colrectTrack[i]
+ if(rectcol=="blue"){
+ rectcols <<- c("#EDEDFD","#6969F5","#00008B")
+ }else if(rectcol=="red"){
+ rectcols <<- c("#FDEDED","#F56969","#8B0000")
+ }else if(rectcol=="green"){
+ rectcols <<- c("#EDFBED","#69E169","#008B00")
+ }else if(rectcol=="cyan"){
+ rectcols <<- c("#EDFBFB","#69E1E1","#008B8B")
+ }else if(rectcol=="purple"){
+ rectcols <<- c("#F6F0FB","#B27FE1","#551A8B")
+ }else if(rectcol=="pink"){
+ rectcols <<- c("#FBEEF5","#E172AE","#8B1076")
+ }else if(rectcol=="orange"){
+ rectcols <<- c("#FDF5ED","#F5AE69","#8B4500")
+ }else if(rectcol=="yellow"){
+ rectcols <<- c("#FDFDED","#EFEF1A","#8B8B00")
+ }else if(rectcol=="navy"){
+ rectcols <<- c("#EDEDF6","#7272B8","#000080")
+ }else if(rectcol=="seagreen"){
+ rectcols <<- c("#F2FBF6","#4EEE94","#2E8B57")
+ }else if(rectcol=="maroon"){
+ rectcols <<- c("#FFF4FB","#FF69C7","#8B1C62")
+ }else if(rectcol=="olivedrab"){
+ rectcols <<- c("#FBFFF4","#C6FF52","#698B22")
+ }else if(rectcol=="gold"){
+ rectcols <<- c("#FFFCF1","#FFDD28","#8B7500")
+ }else if(rectcol=="lightblue"){
+ rectcols <<- c("#EFF5F7","#AFCDD7","#68838B")
+ }else if(rectcol=="navy.yellow"){
+ rectcols <<- c("#000080","#7B7B41","#FFFF00")
+ }else if(rectcol=="purple.seagreen"){
+ rectcols <<- c("#551A8B","#548994","#54FF9F")
+ }else if(rectcol=="navy.orange"){
+ rectcols <<- c("#000080","#7B5041","#FFA500")
+ }else if(rectcol=="navy.cyan"){
+ rectcols <<- c("#000080","#007BBD","#00FFFF")
+ }else if(rectcol=="blue.red"){
+ rectcols <<- c("#0000FF","#730083","#EE0000")
+ }else if(rectcol=="green.red"){
+ rectcols <<- c("#00EE00","#757800","#EE0000")
+ }
+ }else if(tkrectcol==2 && selrectcol==2){
+ rectcols <- rectcoldisTrack[i]
+ data.TT[,4] <- rectcols
+ }else if(tkrectcol==2 && selrectcol==3){
+ rectcols <- rectcoldiscusTrack[i]
+ rectcols <- unlist(strsplit(rectcols,";"))
+ rectcols <- data.frame(id=rectcols,stringsAsFactors=F)
+ rectcols$group <- gsub("\\:.*","",rectcols$id)
+ rectcols$cols <- gsub(".*\\:","",rectcols$id)
+ rectcols$group <- gsub(" ","",rectcols$group)
+ rectcols$cols <- gsub(" ","",rectcols$cols)
+ colname <- colnames(data.TT)[1:3]
+ data.TT <- merge(data.TT,rectcols,by.x=colnames(data.TT)[4],by.y="group",all.x=T)
+ data.TT <- data.TT[c(colname,"cols")]
+ }
+ ## *** The transparency of color ***
+ tktransparency <- transparencyTrack[i]
+ if((tktype!="rect" && tktype!="heatmap" && tktype!="ideogram") | (tktype=="line" && fillareaTrack[i]!="add")){
+ tkcolor <- adjustcolor(tkcolor, alpha.f = tktransparency)
+ }
+ data.TTT <- data.T[[i]]
+ data.TTT$id <- paste(data.TTT[,1],data.TTT[,2],data.TTT[,3],sep="")
+ data.TTT$num <- 1:nrow(data.TTT)
+ ## *** The links margin ***
+ if(i != length(data.T)){
+ lkmargin <- 0
+ }else{
+ lkmargin <- marginLinks
+ }
+ if(tkborder=="add"){
+ tkborder <- "grey"
+ }else{
+ tkborder <- NA
+ }
+ columns <- c(1:ncol(data.TT))[-c(1:3)]
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1){
+ takindx <- takindx+2
+ }
+ if(poslabels[i]=="inner"){
+ takindx <- takindx-2
+ }
+ output$errorinfo4 <- renderPrint({
+ if(!("color" %in% colnames(data.T[[i]])) && colnames(data.T[[i]])[4]!="stack"){
+ if(input[[paste("uploadtrack",trackindx[i],sep="")]]==2 && input[[paste("coltypeTrack",trackindx[i],sep="")]]==3){
+ validate(
+ need(coltypeTrack!=3, paste("Error: Data color error for Track",trackindx[i],". The type of data color should be 'Random' or 'Custom for data with multi-column' based on the uploaded data without column as 'color' or 'stack'.",sep=""))
+ )
+ }
+ }
+ })
+ outputOptions(output, "errorinfo4", suspendWhenHidden = FALSE)
+ output$errorinfo5 <- renderPrint({
+ if(input[[paste("uploadtrack",trackindx[i],sep="")]]==2 && input[[paste("highlightTrack",trackindx[i],sep="")]]==1){
+ validate(
+ need(nchar(hltdata.List[[i]])>0, paste("Warning: Highlight regions are empty for Track",trackindx[i],". Please input applicable genomic regions.",sep=""))
+ )
+ }
+ })
+ outputOptions(output, "errorinfo5", suspendWhenHidden = FALSE)
+ if(tktype=="line"){
+ ## *** Fill the area ***
+ if(fillareaTrack[i]!="add"){
+ area <- FALSE
+ borderset <- NA
+ lwdnum <- 1
+ }else if(fillareaTrack[i]=="add" && selreaTrack[i]==1){
+ area <- TRUE
+ lwdnum <- 0.2
+ }else if(fillareaTrack[i]=="add" && selreaTrack[i]==2){
+ area <- TRUE
+ borderset <- NA
+ if(nchar(borderareaTrack[i])!=0){
+ borderset <- adjustcolor(borderareaTrack[i],alpha.f = tktransparency)
+ }
+ lwdnum <- 0.2
+ }
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")
+ }
+ if(ncol(data.T[[i]])==4 && colnames(data.T[[i]])[4]=="stack"){
+ bed_list <- lapply(unique(data.T[[i]][,4]),function(x){
+ if(coltypeTrack==2){
+ data.TT[data.TT[,4] %in% x,1:3]
+ }else{
+ data.TTC[data.TTC[,4] %in% x,1:3]
+ }
+ })
+ circos.genomicTrackPlotRegion(bed_list, stack = TRUE, track.height = tkheight, track.margin = c(lkmargin,tkmargin),
+ bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region, value, ...){
+ i = getI(...)
+ if(coltypeTrack==1){
+ circos.genomicLines(region, value, col=tkcolor[i], lty=1, ...)
+ }else if(coltypeTrack==2){
+ circos.genomicLines(region, value, col=tkcolor[1], lty=1, ...)
+ }else if(coltypeTrack==3){
+ circos.genomicLines(region, value, col=tkcolor[i], lty=1, ...)
+ }
+ })
+ }else{
+ data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin),
+ bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ if((coltypeTrack==1 && !("color" %in% colnames(data.T[[i]]))) | coltypeTrack==2){
+ if(length(columns)==1){
+ tkcolor <- tkcolor[1]
+ }else{
+ tkcolor <- c(tkcolor,rep("grey",length(columns)))
+ tkcolor <- tkcolor[1:length(columns)]
+ }
+ if(selreaTrack[i]==1 | fillareaTrack[i]!="add"){
+ borderset <- adjustcolor(tkcolor,alpha.f = tktransparency)
+ }
+ circos.genomicLines(region, value, numeric.column=columns-3, col=borderset, area=area, border=tkcolor, lwd=lwdnum, lty=1, ...)
+ }
+ })
+ if(coltypeTrack==3 && ncol(data.TTC)>=6 && ("cols" %in% colnames(data.TTC))){
+ data.TTC$id <- paste(data.TTC[,1],data.TTC[,2],data.TTC[,3],sep="")
+ data.TTC$num <- 1:nrow(data.TTC)
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- lapply(col, function(m){
- dattt <- datt[datt$color %in% m,]
- ind <- which(data.TTT$id %in% dattt$id)
- ind <- c(ind-1,ind,ind+1)
- dattt.fil <- unique(data.TTT[ind,])
- dattt.fil <- dattt.fil[dattt.fil[,1] %in% x,]
- dattt.fil <- dattt.fil[order(dattt.fil$num),]
- dattt.fil$groups <- c(diff(dattt.fil$num),diff(dattt.fil$num)[1])
- dattt.fill <- dattt.fil[dattt.fil$groups==1,]
- circos.lines((dattt.fill[,2]+dattt.fill[,3])/2,dattt.fill[,4], col=m, lwd=1, lty=1)
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ lapply(unique(dat$cols),function(m){
+ datt <- dat[dat$cols %in% m,]
+ ind <- which(data.TTC$id %in% datt$id)
+ datt.fil <- na.omit(unique(data.TTC[ind,]))
+ datt.fil <- datt.fil[datt.fil[,1] %in% x,]
+ rownum <- datt.fil$num
+ rownumdif <- diff(rownum)
+ indx <- which(rownumdif != 1)
+ indx1 <- c(0,indx)
+ rownumdif1 <- c(1,rownumdif)
+ if(length(indx)==0){
+ rownumdif1 <- 1
+ }else{
+ for(k in 1:length(which(rownumdif!=1))){
+ rownumdif1[(indx1[k]+1):indx[k]] <- k
+ if(k==length(which(rownumdif!=1))){
+ rownumdif1[(indx[k]+1):length(rownumdif1)] <- k+1
+ }
+ }
+ }
+ datt.fil$indx <- rownumdif1
+ lapply(unique(rownumdif1),function(h){
+ datt.fill <- datt.fil[datt.fil$indx == h,]
+ minnum <- min(datt.fill$num)
+ datt.fill <- rbind(datt.fill,as.character(c(dat[dat$num==(minnum-1),],h)))
+ datt.fill[,2] <- as.numeric(datt.fill[,2])
+ datt.fill[,3] <- as.numeric(datt.fill[,3])
+ datt.fill[,4] <- as.numeric(datt.fill[,4])
+ datt.fill$indx <- as.numeric(datt.fill$indx)
+ datt.fill <- datt.fill[!is.na(datt.fill[,2]),]
+ datt.fill <- datt.fill[order(datt.fill[,2],datt.fill[,3]),]
+ if(selreaTrack[i]==1 | fillareaTrack[i]!="add"){
+ borderset <- adjustcolor(m,alpha.f = tktransparency)
+ }
+ circos.lines((datt.fill[,2]+datt.fill[,3])/2,datt.fill[,4], col=borderset, area=area, border=m, lwd=lwdnum, lty=1)
+ })
})
- circos.lines((trackk[,2]+trackk[,3])/2,trackk[,4], col=tkcolor, lwd=1, lty=1)
- })
- }
- }else if(tktype=="point"){
- data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
- circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin=c(lkmargin,tkmargin),
- bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- circos.genomicPoints(region, value, numeric.column=columns-3, col=tkcolor, cex=0.5, pch=16, ...)
- })
- assign("hltTrack",hltTrack.List[[i]])
- assign("hltdata",hltdata.List[[i]])
- if (nchar(hltdata)==0) {
- }else if (hltTrack==1 & nrow(hltregion.List[[i]])>0){
- assign("hltregion",hltregion.List[[i]])
- hlttransparency <- transparencyHlt[i]
- hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
- hltregion$color <- gsub("0x","#", hltregion$color)
- chrr <- unique(hltregion[,1])
- lapply(chrr, function(x){
- datt <- hltregion[hltregion[,1] %in% x,]
- trackk <- data.TTT[data.TTT[,1] %in% x,]
- trackk <- trackk[!trackk$id %in% datt$id,]
- col <- unique(datt$color)
- if (trackChr=="track") {
- circos.updatePlotRegion(sector.index = x, track.index=i+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }else{
- circos.updatePlotRegion(sector.index = x, track.index=i+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
+ })
+ }else if(coltypeTrack==1 && ("color" %in% colnames(data.T[[i]])) && ("cols" %in% colnames(data.TTC))){
+ data.TTC$id <- paste(data.TTC[,1],data.TTC[,2],data.TTC[,3],sep="")
+ data.TTC$num <- 1:nrow(data.TTC)
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- lapply(col, function(m){
- dattt <- datt[datt$color %in% m,]
- circos.points((dattt[,2]+dattt[,3])/2,dattt[,4], col=m, cex=0.6, pch=16)
- })
- circos.points((trackk[,2]+trackk[,3])/2,trackk[,4], col=tkcolor, cex=0.6, pch=16)
- })
- }
- }else if(tktype=="bar"){
- data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
- circos.genomicTrackPlotRegion(data.TT, numeric.column= columns, track.height = tkheight, track.margin=c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- if(length(columns)==1 & tkbardir==1){
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- circos.genomicRect(region, value, ytop.column = 1, ybottom = min(data.TT[,4]), col=tkcolor, border = NA, ...)
- }else if (length(columns)==1 & tkbardir==2) {
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- tkbarvalue <- as.numeric(tkbarvalue)
- indx <- value[,1] > tkbarvalue
- if (length(value[indx,])!=0 & length(value[!indx,])!=0) {
- circos.genomicRect(region[indx,], value[indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol1, border = NA, ...)
- circos.genomicRect(region[!indx,], value[!indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol2, border = NA, ...)
- }else if (length(value[indx,])!=0 & length(value[!indx,])==0) {
- circos.genomicRect(region[indx,], value[indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol1, border = NA, ...)
- }else if (length(value[indx,])==0 & length(value[!indx,])!=0) {
- circos.genomicRect(region[!indx,], value[!indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol2, border = NA, ...)
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
}
- }else if(length(columns)==2 & tkbardir==1){
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- circos.genomicRect(region, value, ytop.column = 1, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkcolor[1], border = NA, ...)
- circos.genomicRect(region, value, ytop.column = 2, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkcolor[length(tkcolor)], border = NA, ...)
- }else if (length(columns)==2 & tkbardir==2) {
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- circos.genomicRect(region, value, ytop.column = 1, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkbarcol1, border = NA, ...)
- circos.genomicRect(region, value, ytop.column = 2, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkbarcol2, border = NA, ...)
- }
- })
- assign("hltTrack",hltTrack.List[[i]])
- assign("hltdata",hltdata.List[[i]])
- if (nchar(hltdata)==0) {
- }else if (hltTrack==1 & nrow(hltregion.List[[i]])>0 & tkbardir==1){
- assign("hltregion",hltregion.List[[i]])
- hlttransparency <- transparencyHlt[i]
- hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
- hltregion$color <- gsub("0x","#", hltregion$color)
- chrr <- unique(hltregion[,1])
- lapply(chrr, function(x){
- datt <- hltregion[hltregion[,1] %in% x,]
- trackk <- data.TTT[data.TTT[,1] %in% x,]
- trackk <- trackk[!trackk$id %in% datt$id,]
- col <- unique(datt$color)
- if (trackChr=="track") {
- circos.updatePlotRegion(sector.index = x, track.index=i+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }else{
- circos.updatePlotRegion(sector.index = x, track.index=i+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- lapply(col, function(m){
- dattt <- datt[datt$color %in% m,]
- ylim <- get.cell.meta.data("ylim")
- circos.rect(xleft=dattt[,2], xright=dattt[,3],ytop=dattt[,4],ybottom=rep(ylim[1],nrow(dattt)), col=m, border = NA)
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ lapply(unique(dat$cols),function(m){
+ datt <- dat[dat$cols %in% m,]
+ ind <- which(data.TTC$id %in% datt$id)
+ datt.fil <- na.omit(unique(data.TTC[ind,]))
+ datt.fil <- datt.fil[datt.fil[,1] %in% x,]
+ rownum <- datt.fil$num
+ rownumdif <- diff(rownum)
+ indx <- which(rownumdif != 1)
+ indx1 <- c(0,indx)
+ rownumdif1 <- c(1,rownumdif)
+ if(length(indx)==0){
+ rownumdif1 <- 1
+ }else{
+ for(k in 1:length(which(rownumdif!=1))){
+ rownumdif1[(indx1[k]+1):indx[k]] <- k
+ if(k==length(which(rownumdif!=1))){
+ rownumdif1[(indx[k]+1):length(rownumdif1)] <- k+1
+ }
+ }
+ }
+ datt.fil$indx <- rownumdif1
+ lapply(unique(rownumdif1),function(h){
+ datt.fill <- datt.fil[datt.fil$indx == h,]
+ minnum <- min(datt.fill$num)
+ datt.fill <- rbind(datt.fill,as.character(c(dat[dat$num==(minnum-1),],h)))
+ datt.fill[,2] <- as.numeric(datt.fill[,2])
+ datt.fill[,3] <- as.numeric(datt.fill[,3])
+ datt.fill[,4] <- as.numeric(datt.fill[,4])
+ datt.fill$indx <- as.numeric(datt.fill$indx)
+ datt.fill <- datt.fill[!is.na(datt.fill[,2]),]
+ datt.fill <- datt.fill[order(datt.fill[,2],datt.fill[,3]),]
+ if(selreaTrack[i]==1 | fillareaTrack[i]!="add"){
+ borderset <- adjustcolor(m,alpha.f = tktransparency)
+ }
+ circos.lines((datt.fill[,2]+datt.fill[,3])/2,datt.fill[,4], col=borderset, area=area, border=m, lwd=lwdnum, lty=1)
+ })
})
- circos.rect(xleft=trackk[,2], xright=trackk[,3],ytop=trackk[,4],ybottom=rep(get.cell.meta.data("ylim")[1],nrow(trackk)), col=tkcolor, border = NA)
- })
- }else if (hltTrack==1 & nrow(hltregion.List[[i]])>0 & tkbardir==2) {
- assign("hltregion",hltregion.List[[i]])
- hlttransparency <- transparencyHlt[i]
- hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
- hltregion$color <- gsub("0x","#", hltregion$color)
- chrr <- unique(hltregion[,1])
- lapply(chrr, function(x){
- datt <- hltregion[hltregion[,1] %in% x,]
+ })
+ }
+ assign("hltTrack",hltTrack.List[[i]])
+ assign("hltdata",hltdata.List[[i]])
+
+ if(hltTrack==1 && !is.null(nrow(hltregion.List[[i]])) && nrow(hltregion.List[[i]])>0 && (length(columns)==1 | colnames(data.T[[i]])[5]=="color")){
+ assign("hltregion",hltregion.List[[i]])
+ hlttransparency <- transparencyHlt[i]
+ hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
+ hltregion$color <- gsub("0x","#", hltregion$color)
+ chrr <- unique(hltregion[,1])
+ lapply(chrr, function(x){
+ datt <- hltregion[hltregion[,1] %in% x,]
trackk <- data.TTT[data.TTT[,1] %in% x,]
trackk <- trackk[!trackk$id %in% datt$id,]
col <- unique(datt$color)
- if (trackChr=="track") {
- circos.updatePlotRegion(sector.index = x, track.index=i+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }else{
- circos.updatePlotRegion(sector.index = x, track.index=i+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- lapply(col, function(m){
- dattt <- datt[datt$color %in% m,]
- ylim <- get.cell.meta.data("ylim")
- tkbarvalue <- as.numeric(tkbarvalue)
- indx <- dattt[,4] > tkbarvalue
- value <- dattt[,4]
- region <- dattt[,c(1:3)]
- if (length(value[indx])!=0 & length(value[!indx])!=0) {
- circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=m, border = NA)
- circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=m, border = NA)
- }else if (length(value[indx])!=0 & length(value[!indx])==0) {
- circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=m, border = NA)
- }else if (length(value[indx])==0 & length(value[!indx])!=0) {
- circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=m, border = NA)
- }
- })
- tkbarvalue <- as.numeric(tkbarvalue)
- indx <- trackk[,4] > tkbarvalue
- value <- trackk[,4]
- region <- trackk[,c(1:3)]
- if (length(value[indx])!=0 & length(value[!indx])!=0) {
- circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=tkbarcol1, border = NA)
- circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=tkbarcol2, border = NA)
- }else if (length(value[indx])!=0 & length(value[!indx])==0) {
- circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=tkbarcol1, border = NA)
- }else if (length(value[indx])==0 & length(value[!indx])!=0) {
- circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=tkbarcol2, border = NA)
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
}
+ }
+ lapply(col, function(m){
+ dattt <- datt[datt$color %in% m,]
+ ind <- which(data.TTT$id %in% dattt$id)
+ ind <- unique(c(ind-1,ind,ind+1))
+ dattt.fil <- na.omit(unique(data.TTT[ind,]))
+ dattt.fil <- dattt.fil[dattt.fil[,1] %in% x,]
+ dattt.fil <- dattt.fil[order(dattt.fil$num),]
+ dattt.fil$groups <- c(diff(dattt.fil$num),diff(dattt.fil$num)[1])
+ dattt.fill <- dattt.fil[dattt.fil$groups==1,]
+ borderset <- m
+ circos.lines((dattt.fill[,2]+dattt.fill[,3])/2,dattt.fill[,4], col=borderset, area=area, border=m, lwd=lwdnum, lty=1)
})
- }
- }else if (tktype=="rect") {
- if (tkrectcol==2){
- if (selrectcol==1){
- data.TT[,4] <- as.numeric(as.factor(data.TT[,4]))
- cols=c(brewer.pal(11,'Set3'),brewer.pal(9,'Set1')[c(-1,-3,-6)],brewer.pal(8,'Dark2'),"chartreuse","aquamarine","cornflowerblue","blue","cyan","bisque1","darkorchid2","firebrick1","gold1","magenta1","olivedrab1","navy","maroon1","tan","yellow3","black","bisque4","seagreen3","plum2","yellow1","springgreen","slateblue1","lightsteelblue1","lightseagreen","limegreen")
- selcol <- sample(cols,length(unique(data.TT[,4])))
- data.TT[,4] <- selcol[data.TT[,4]]
- circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin=c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- circos.genomicRect(region, value, col=adjustcolor(value[[1]],alpha.f = tktransparency), border = NA, ...)
- })
- }else{
- data.TT[,4] <- rectcols
- circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin=c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- circos.genomicRect(region, value, col=adjustcolor(value[[1]],alpha.f = tktransparency), border = NA, ...)
- })
- }
- }else{
- f <- colorRamp2(breaks = c(min(data.TT[,4]), mean(data.TT[,4]), max(data.TT[,4])), colors = rectcols)
- circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin=c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- circos.genomicRect(region, value, col=adjustcolor(f(value[[1]]),alpha.f = tktransparency), border = NA, ...)
- })
- }
- }
- else if (tktype=="heatmap") {
- break1 <- min(as.numeric(as.matrix(data.TT[,-c(1:3)])))
- break2 <- max(as.numeric(as.matrix(data.TT[,-c(1:3)])))
- if (midhmap==1) {
- midpoint <<- (break1+break2)/2
- }
- f <- colorRamp2(breaks = c(break1, midpoint, break2), colors = hmapcols)
- if (lineshmap==2){
- circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin=c(lkmargin,tkmargin), stack = TRUE,
- panel.fun = function(region, value, ...) {
- circos.genomicRect(region, value, col = f(value[[1]]),
- border = f(value[[1]]), posTransform = posTransform.default, ...)
- }, bg.border = NA)
- }else{
- circos.genomicPosTransformLines(data.TT, posTransform = posTransform.default,
- horizontalLine = "top", track.height = heightlines, track.margin = c(0,marginlines))
- circos.genomicTrackPlotRegion(data.TT, track.height=tkheight, track.margin=c(lkmargin,tkmargin), stack = TRUE,
- panel.fun = function(region, value, ...) {
- circos.genomicRect(region, value, col = f(value[[1]]),
- border = f(value[[1]]), posTransform = posTransform.default, ...)
- }, bg.border = NA)
- }
- }
- }}
- if (!is.null(data.L) && linksTrack){
- if (is.null(data.T)){
- marginLinks <- as.numeric(marginLinks)
- circos.par(track.margin=c(0,marginLinks))
- }
- if (colorLinks==2) {
- colLinks <- adjustcolor(selcolorLinks, alpha.f = transparencyLinks)
- if(highlightLinks==1 & nchar(hltdataLinks)!=0){
- colL <- unique(datL[,4])
- colL <- adjustcolor(colL, alpha.f = transparencyhltLinks)
- colL <- gsub("0x","#", colL)
- hltregion1$color <- adjustcolor(hltregion1$color, alpha.f = transparencyhltLinks)
- hltregion1$color <- gsub("0x","#", hltregion1$color)
- hltregion2$color <- adjustcolor(hltregion2$color, alpha.f = transparencyhltLinks)
- hltregion2$color <- gsub("0x","#", hltregion2$color)
- linkk1 <- data.LL1[!data.LL1$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
- linkk2 <- data.LL2[!data.LL2$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
- circos.genomicLink(linkk1, linkk2, col = colLinks, border = NA)
- lapply(colL, function(x){
- hltregion11 <- hltregion1[hltregion1$color %in% x,]
- hltregion12 <- data.LL2[data.L2$num %in% hltregion11$num,]
- hltregion12 <- hltregion12[,c(1:3)]
- hltregion11 <- hltregion11[,c(1:3)]
- hltregion22 <- hltregion2[hltregion2$color %in% x,]
- hltregion21 <- data.LL1[data.L1$num %in% hltregion22$num,]
- hltregion21 <- hltregion21[,c(1:3)]
- hltregion22 <- hltregion22[,c(1:3)]
- if (nrow(hltregion11)!=0) {
- circos.genomicLink(hltregion11, hltregion12, col = x, border = NA)
- }
- if (nrow(hltregion22)!=0){
- circos.genomicLink(hltregion21, hltregion22, col = x, border = NA)
+ if("color" %in% colnames(trackk)){
+ data.TTC$id <- paste(data.TTC[,1],data.TTC[,2],data.TTC[,3],sep="")
+ data.TTC1 <- data.TTC[!data.TTC$id %in% datt$id,]
+ indd <- which(data.TTC1$id %in% trackk$id)
+ indd <- unique(c(indd-1,indd,indd+1))
+ trackkk <- na.omit(unique(data.TTC1[indd,]))
+ trackkk <- trackkk[trackkk[,1] %in% x,]
+ lapply(unique(trackkk$cols),function(f){
+ trackkkk <- trackkk[trackkk$cols %in% f,]
+ rownum <- as.numeric(rownames(trackkkk))
+ rownumdif <- diff(rownum)
+ indx <- which(rownumdif != 1)
+ indx1 <- c(0,indx)
+ rownumdif1 <- c(1,rownumdif)
+ if(length(indx)==0){
+ rownumdif1 <- 1
+ }else{
+ for(k in 1:length(which(rownumdif!=1))){
+ rownumdif1[(indx1[k]+1):indx[k]] <- k
+ if(k==length(which(rownumdif!=1))){
+ rownumdif1[(indx[k]+1):length(rownumdif1)] <- k+1
+ }
}
- })
- }else{
- data.L1 <- data.L1[,c(1:3)]
- data.L2 <- data.L2[,c(1:3)]
- circos.genomicLink(data.L1, data.L2, col = colLinks, border = NA)
- }
- }else {
- if(highlightLinks==1 & nchar(hltdataLinks)!=0){
- colL <- unique(datL[,4])
- colL <- adjustcolor(colL, alpha.f = transparencyhltLinks)
- colL <- gsub("0x","#", colL)
- hltregion1$color <- adjustcolor(hltregion1$color, alpha.f = transparencyhltLinks)
- hltregion1$color <- gsub("0x","#", hltregion1$color)
- hltregion2$color <- adjustcolor(hltregion2$color, alpha.f = transparencyhltLinks)
- hltregion2$color <- gsub("0x","#", hltregion2$color)
- linkk1 <- data.LL1[!data.LL1$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
- linkk2 <- data.LL2[!data.LL2$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
- circos.genomicLink(linkk1, linkk2, col = rand_color(nrow(linkk1), transparency = 1-transparencyLinks), border = NA)
- lapply(colL, function(x){
- hltregion11 <- hltregion1[hltregion1$color %in% x,]
- hltregion12 <- data.LL2[data.L2$num %in% hltregion11$num,]
- hltregion12 <- hltregion12[,c(1:3)]
- hltregion11 <- hltregion11[,c(1:3)]
- hltregion22 <- hltregion2[hltregion2$color %in% x,]
- hltregion21 <- data.LL1[data.L1$num %in% hltregion22$num,]
- hltregion21 <- hltregion21[,c(1:3)]
- hltregion22 <- hltregion22[,c(1:3)]
- if (nrow(hltregion11)!=0) {
- circos.genomicLink(hltregion11, hltregion12, col = x, border = NA)
+ }
+ trackkkk$indx <- rownumdif1
+ lapply(unique(rownumdif1),function(h){
+ trackkkkk <- trackkkk[trackkkk$indx == h,]
+ minnum <- min(as.numeric(rownames(trackkkkk)))
+ trackkkkk <- rbind(trackkkkk,as.character(c(trackkk[rownames(trackkk)==(minnum-1),]),h))
+ trackkkkk[,2] <- as.numeric(trackkkkk[,2])
+ trackkkkk[,3] <- as.numeric(trackkkkk[,3])
+ trackkkkk[,4] <- as.numeric(trackkkkk[,4])
+ trackkkkk$indx <- as.numeric(trackkkkk$indx)
+ trackkkkk <- trackkkkk[!is.na(trackkkkk[,2]),]
+ trackkkkk <- trackkkkk[order(trackkkkk[,2],trackkkkk[,3]),]
+ if(selreaTrack[i]==1 | fillareaTrack[i]!="add"){
+ borderset <- adjustcolor(f,alpha.f = tktransparency)
+ }
+ circos.lines((trackkkkk[,2]+trackkkkk[,3])/2,trackkkkk[,4], col=borderset, area=area, border=f, lwd=lwdnum, lty=1)
+ })
+ })
+ }else{
+ rownum <- as.numeric(rownames(trackk))
+ rownumdif <- diff(rownum)
+ indx <- which(rownumdif != 1)
+ indx1 <- c(0,indx)
+ rownumdif1 <- c(1,rownumdif)
+ if(length(indx)==0){
+ rownumdif1 <- 1
+ }else{
+ for(k in 1:length(which(rownumdif!=1))){
+ rownumdif1[(indx1[k]+1):indx[k]] <- k
+ if(k==length(which(rownumdif!=1))){
+ rownumdif1[(indx[k]+1):length(rownumdif1)] <- k+1
}
- if (nrow(hltregion22)!=0){
- circos.genomicLink(hltregion21, hltregion22, col = x, border = NA)
- }
- })
- }else{
- data.L1 <- data.L1[,c(1:3)]
- data.L2 <- data.L2[,c(1:3)]
- circos.genomicLink(data.L1, data.L2, col = rand_color(nrow(data.L1), transparency = 1-transparencyLinks), border = NA)
- }
- }
- }
- n = length(legendtext)
- if (n!=0 && addlegend==1){
- if (poslegend==1 && fontsizeChr!="custom"){
- xleft = 1.2+(as.numeric(fontsizeChr)-1)*0.25
- }else if(poslegend==1 && fontsizeChr=="custom"){
- xleft = 1.2+(as.numeric(cexAxislabel)-1)*0.25
- }else{
- xleft = -0.01
- }
- xright = xleft+0.02
- ybottom = -0.13*0.22/10-n*0.03
- ytop = -0.13*0.22/10+n*0.03
- len = ytop-ybottom
- gap = len/(n-0.8)
- for(i in 1:n){
- assign(paste("n",i,sep=""),legendtext[i])
- }
- rect(xleft, ybottom, xright, ytop, col = "black")
- polygon(x = c(xleft-0.01, (xleft+xright)/2, xright+0.01), y = c(ybottom, ybottom-0.02, ybottom), col = "black")
- text(x = xleft-0.08, y = ybottom, labels = "inner", cex = 0.95)
- if (n!=1){
- text(x = xleft-0.08, y = ytop-0.02, labels = "outer",cex = 0.95)
- }
- if(n==1){
- text(x = xleft-0.08, y = ytop-0.01, labels = "outer",cex = 0.95)
- text(x = xright+0.025, y = ytop-0.04, labels = get("n1"), cex=1, adj = c(0,0))
- }else{
- for(i in 1:n){
- text(x = xright+0.028, y = ytop-gap*(i-1)-0.025, labels = get(paste("n",i,sep="")), cex=1, adj = c(0,0))
+ }
+ }
+ trackk$indx <- rownumdif1
+ lapply(unique(rownumdif1),function(h){
+ trackkkkk <- trackk[trackk$indx == h,]
+ if(selreaTrack[i]==1 | fillareaTrack[i]!="add"){
+ borderset <- adjustcolor(tkcolor,alpha.f = tktransparency)
+ }
+ circos.lines((trackkkkk[,2]+trackkkkk[,3])/2,trackkkkk[,4], col=borderset[1], area=area, border=tkcolor[1], lwd=lwdnum, lty=1)
+ })
+ }
+ })
+ }
}
- }
- }
- circos.clear()
- }, height = heightSize, width = widthSize)
- }
-
-plotfig <- function(input, trackindx, data.L, data.L1, data.L2, data.C, data.T, hltTrack.List, hltdata.List, legendtext){
- if(!is.null(data.L)){
- assign("highlightLinks",input$highlightLinks)
- assign("hltdataLinks",input$hltDataLinks)
- if(nchar(hltdataLinks)==0){
- }else{
- tmpL <- matrix(strsplit(hltdataLinks, "\n")[[1]])
- colnamesL <- c("chr","start","end","color")
- datL <- matrix(0, length(tmpL), length(colnamesL))
- colnames(datL) <- colnamesL
- for(l in 1:length(tmpL)){
- rowL <- strsplit(tmpL[l], ",")[[1]]
- datL[l,] <- rowL
- }
- datL <- data.frame(datL,stringsAsFactors = F)
- datL$start <- as.numeric(datL$start)
- datL$end <- as.numeric(datL$end)
- datL$color <- datL$color
- queryL <- GRanges(seqnames = datL$chr,ranges=IRanges(start=datL$start,end=datL$end),seqinfo = NULL)
- subj1 <- GRanges(seqnames = data.L1[,1],ranges=IRanges(start=data.L1[,2],end=data.L1[,3]),seqinfo = NULL)
- subj2 <- GRanges(seqnames = data.L2[,1],ranges=IRanges(start=data.L2[,2],end=data.L2[,3]),seqinfo = NULL)
-
- indx1 <<- findOverlaps(queryL,subj1)
- indx1 <<- data.frame(indx1,stringsAsFactors=F)
- indx1$queryHits <- as.numeric(indx1$queryHits)
- indx1$subjectHits <- as.numeric(indx1$subjectHits)
- hltregion1 <- data.L1[indx1$subjectHits,]
- data.LL1 <- data.L1
- hltregion1$color <- datL$color[indx1[,1]]
-
- indx2 <<- findOverlaps(queryL,subj2)
- indx2 <<- data.frame(indx2,stringsAsFactors=F)
- indx2$queryHits <- as.numeric(indx2$queryHits)
- indx2$subjectHits <- as.numeric(indx2$subjectHits)
- hltregion2 <- data.L2[indx2$subjectHits,]
- data.LL2 <- data.L2
- hltregion2$color <- datL$color[indx2[,1]]
- }
- }
- data.C[,2] <- as.numeric(data.C[,2])
- data.C[,3] <- as.numeric(data.C[,3])
- circos.clear()
- colorChr <- gsub("\\s","",strsplit(input$colorChr,",")[[1]])
- colorChr <- gsub('\\"',"",colorChr)
- colorChr <- gsub("0x","#", colorChr)
- repnumcol <- round(length(unique(data.C[,1]))/length(colorChr)) + 1
- colorChr <- rep(colorChr, repnumcol)[1:length(unique(data.C[,1]))]
- ## *** The gap width ***
- gap.width <- gsub("\\s","",strsplit(input$gapChr,",")[[1]])
- repnumgap <- round(length(unique(data.C[,1]))/length(gap.width)) + 1
- gap.width <- rep(gap.width, repnumgap)[1:length(unique(data.C[,1]))]
- gap.width <- as.numeric(gap.width)
- rotation <- gap.width[length(gap.width)]/2
- addlegend <<- input$seladdlegend
- poslegend <<- input$selposlegend
- if(input$datatypeChr=="general"){
- if (input$trackChr=="track" & input$fontsizeChr!="custom") {
- plotcircos(data.C, color = colorChr, plotTypes=unique(c(input$labelChr,"axis")), units=input$unitChr, rotation=rotation, gap.width=gap.width)
- }else if (input$trackChr=="track" & input$fontsizeChr=="custom") {
- plotcircos.font(data.C, color = colorChr, plotTypes=unique(c(input$labelChr,"axis")), units=input$unitChr, rotation=rotation, gap.width=gap.width, cexLabel=input$cexAxislabel-0.1, cexAxis=input$cexAxis)
- }else if (input$trackChr!="track" & input$fontsizeChr!="custom") {
- plotcircos.notrack(data.C, plotTypes=unique(c(input$labelChr,"axis")), units=input$unitChr, rotation=rotation, gap.width=gap.width)
- }else if (input$trackChr!="track" & input$fontsizeChr=="custom"){
- plotcircos.notrack.font(data.C, plotTypes=unique(c(input$labelChr,"axis")), units=input$unitChr, rotation=rotation, gap.width=gap.width, cexLabel=input$cexAxislabel-0.1, cexAxis=input$cexAxis)
- }
- }else{
- if (input$fontsizeChr!="custom") {
- plotcircos.cyto(data.C, plotTypes=unique(c(input$labelChr,"axis")), units=input$unitChr, rotation=rotation, gap.width=gap.width)
- }else if (input$fontsizeChr=="custom") {
- plotcircos.cyto.font(data.C, plotTypes=unique(c(input$labelChr,"axis")), units=input$unitChr, rotation=rotation, gap.width=gap.width, cexLabel=input$cexAxislabel-0.1, cexAxis=input$cexAxis)
- }
- }
- if(!is.null(data.T)){
- for(i in 1:length(data.T)){
- data.TT <- data.T[[i]]
- for(x in 2:(ncol(data.TT)-1)){
- data.TT[,x] <- as.numeric(data.TT[,x])
- }
- assign("tktype",input[[paste("typeTrack",trackindx[i],sep="")]])
- ## *** The fill color for track ***
- if(tktype!="rect" && tktype!="heatmap"){
- assign("coltypeTrack",input[[paste("coltypeTrack",trackindx[i],sep="")]])
- if(coltypeTrack==2){
- assign("tkcolor",input[[paste("colorTrack",trackindx[i],sep="")]])
- tkcolor <- gsub("\\s","",strsplit(tkcolor,",")[[1]])
- tkcolor <- gsub('\\"',"",tkcolor)
- tkcolor <- gsub("0x","#", tkcolor)
- }else{
- selcols <- c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "burlywood3", "magenta2")
- tkcolor <- sample(selcols,ncol(data.T[[i]])-3)
- }
- }
- ## *** The backgroud color for track ***
- assign("tkbgcol",input[[paste("bgcolTrack",trackindx[i],sep="")]])
- tkbgcol <- gsub("\\s","",strsplit(tkbgcol,",")[[1]])
- tkbgcol <- gsub('\\"',"",tkbgcol)
- tkbgcol <- gsub("0x","#", tkbgcol)
- repnumcol <- round(length(unique(data.C[,1]))/length(tkbgcol)) + 1
- tkbgcol <- rep(tkbgcol, repnumcol)[1:length(unique(data.C[,1]))]
- ## *** The track margin ***
- assign("tkmargin",input[[paste("marginTrack",trackindx[i],sep="")]])
- tkmargin <- as.numeric(tkmargin)
- ## *** The track height ***
- assign("tkheight",input[[paste("heightTrack",trackindx[i],sep="")]])
- tkheight <- as.numeric(tkheight)
- ## *** The y coordinates of baselines ***
- tklinecoord <- baselineTrack[i]
- tklinecoord <- as.numeric(unlist(strsplit(tklinecoord,",")))
- ## *** The baselines color ***
- tklinecolor <- colorlineTrack[i]
- if (nchar(tklinecolor)!=0){
- tklinecolor <<- gsub('\\"',"",tklinecolor)
- tklinecolor <<- gsub("0x","#", tklinecolor)
- tklinecolor <- unlist(strsplit(tklinecolor,","))
- tklinecolor <- rep(tklinecolor, length(tklinecoord))[1:length(tklinecoord)]
- }
- ## *** The fill color for track ***
- assign("hmapcols",input[[paste("colhmapTrack",trackindx[i],sep="")]])
- hmapcols <- gsub('\\"',"",hmapcols)
- hmapcols <- unlist(strsplit(hmapcols,"\\."))
- ## *** Add connection ***
- assign("lineshmap",input[[paste("lineshmapTrack",trackindx[i],sep="")]])
- if (lineshmap==1){
- assign("heightlines",input[[paste("heightlinesTrack",trackindx[i],sep="")]])
- assign("marginlines",input[[paste("marginlinesTrack",trackindx[i],sep="")]])
- }
- ## *** Add border ***
- assign("tkborder",input[[paste("borderTrack",trackindx[i],sep="")]])
- ## *** The bar direction ***
- assign("tkbardir",input[[paste("directionTrack",trackindx[i],sep="")]])
- if (tkbardir==2){
- assign("tkbarvalue",input[[paste("barBoundary",trackindx[i],sep="")]])
- assign("tkbarcol1",input[[paste("coldir1Track",trackindx[i],sep="")]])
- assign("tkbarcol2",input[[paste("coldir2Track",trackindx[i],sep="")]])
- assign("tktransparency",input[[paste("transparencyTrack",trackindx[i],sep="")]])
- tkbarcol1 <<- adjustcolor(tkbarcol1, alpha.f = tktransparency)
- tkbarcol2 <<- adjustcolor(tkbarcol2, alpha.f = tktransparency)
- }
- ## *** The data color ***
- assign("tkrectcol",input[[paste("rectTrack",trackindx[i],sep="")]])
- ## *** Select color ***
- assign("selrectcol",input[[paste("rectcolTrack",trackindx[i],sep="")]])
- if (tkrectcol==1){
- assign("rectcol",input[[paste("colrectTrack",trackindx[i],sep="")]])
- if (rectcol=="blue"){
- rectcols <<- c("#EDEDFD","#6969F5","#00008B")
- }else if (rectcol=="red") {
- rectcols <<- c("#FDEDED","#F56969","#8B0000")
- }else if (rectcol=="green") {
- rectcols <<- c("#EDFBED","#69E169","#008B00")
- }else if (rectcol=="cyan") {
- rectcols <<- c("#EDFBFB","#69E1E1","#008B8B")
- }else if (rectcol=="purple") {
- rectcols <<- c("#F6F0FB","#B27FE1","#551A8B")
- }else if (rectcol=="pink") {
- rectcols <<- c("#FBEEF5","#E172AE","#8B1076")
- }else if (rectcol=="orange") {
- rectcols <<- c("#FDF5ED","#F5AE69","#8B4500")
- }else if (rectcol=="yellow") {
- rectcols <<- c("#FDFDED","#EFEF1A","#8B8B00")
- }else if (rectcol=="navy") {
- rectcols <<- c("#EDEDF6","#7272B8","#000080")
- }else if (rectcol=="seagreen") {
- rectcols <<- c("#F2FBF6","#4EEE94","#2E8B57")
- }else if (rectcol=="maroon") {
- rectcols <<- c("#FFF4FB","#FF69C7","#8B1C62")
- }else if (rectcol=="olivedrab") {
- rectcols <<- c("#FBFFF4","#C6FF52","#698B22")
- }else if (rectcol=="gold") {
- rectcols <<- c("#FFFCF1","#FFDD28","#8B7500")
- }else if (rectcol=="lightblue") {
- rectcols <<- c("#EFF5F7","#AFCDD7","#68838B")
- }else if (rectcol=="navy.yellow") {
- rectcols <<- c("#000080","#7B7B41","#FFFF00")
- }else if (rectcol=="purple.seagreen") {
- rectcols <<- c("#551A8B","#548994","#54FF9F")
- }else if (rectcol=="navy.orange") {
- rectcols <<- c("#000080","#7B5041","#FFA500")
- }else if (rectcol=="navy.cyan") {
- rectcols <<- c("#000080","#007BBD","#00FFFF")
- }else if (rectcol=="blue.red") {
- rectcols <<- c("#0000FF","#730083","#EE0000")
- }else if (rectcol=="green.red") {
- rectcols <<- c("#00EE00","#757800","#EE0000")
- }
- }else if (tkrectcol==2 & selrectcol==2) {
- rectcols <<- rectcoldisTrack[i]
- }
- ## *** The transparency of color ***
- assign("tktransparency",input[[paste("transparencyTrack",trackindx[i],sep="")]])
- if(tktype!="rect" && tktype!="heatmap"){
- tkcolor <- adjustcolor(tkcolor, alpha.f = tktransparency)
- }
- data.TTT <- data.TT
- data.TTT$id <- paste(data.TTT[,1],data.TTT[,2],data.TTT[,3],sep="")
- data.TTT$num <- 1:nrow(data.TTT)
- ## *** The links margin ***
- if(i != length(data.T)){
- lkmargin <- 0
- }else{
- lkmargin <- input$marginLinks
- }
- if(tkborder=="add"){
- tkborder <- "grey"
- }else{
- tkborder <- NA
- }
- columns <- c(1:ncol(data.TT))[-c(1:3)]
- if(tktype=="line"){
- data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
- circos.genomicTrackPlotRegion(data.TT, numeric.column= columns, track.height = tkheight, track.margin=c(lkmargin,tkmargin),
- bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- circos.genomicLines(region, value, col=tkcolor, lwd=1, lty=1, ...)
- })
- assign("hltTrack",hltTrack.List[[i]])
- assign("hltdata",hltdata.List[[i]])
- if (nchar(hltdata)==0) {
- }else if (hltTrack==1 & nrow(hltregion.List[[i]])>0){
- assign("hltregion",hltregion.List[[i]])
- assign("hlttransparency",input[[paste("transparencyHlt",trackindx[i],sep="")]])
- hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
- hltregion$color <- gsub("0x","#", hltregion$color)
- chrr <- unique(hltregion[,1])
- lapply(chrr, function(x){
- datt <- hltregion[hltregion[,1] %in% x,]
- trackk <- data.TTT[data.TTT[,1] %in% x,]
- trackk <- trackk[!trackk$id %in% datt$id,]
- col <- unique(datt$color)
- if (input$trackChr=="track") {
- circos.updatePlotRegion(sector.index = x, track.index=i+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }else{
- circos.updatePlotRegion(sector.index = x, track.index=i+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- lapply(col, function(m){
- dattt <- datt[datt$color %in% m,]
- ind <- which(data.TTT$id %in% dattt$id)
- ind <- c(ind-1,ind,ind+1)
- dattt.fil <- unique(data.TTT[ind,])
- dattt.fil <- dattt.fil[dattt.fil[,1] %in% x,]
- dattt.fil <- dattt.fil[order(dattt.fil$num),]
- dattt.fil$groups <- c(diff(dattt.fil$num),diff(dattt.fil$num)[1])
- dattt.fill <- dattt.fil[dattt.fil$groups==1,]
- circos.lines((dattt.fill[,2]+dattt.fill[,3])/2,dattt.fill[,4], col=m, lwd=1, lty=1)
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")
+ }
+ }else if(tktype=="point"){
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")
+ }
+ if(ncol(data.T[[i]])==4 && colnames(data.T[[i]])[4]=="stack"){
+ bed_list <- lapply(unique(data.T[[i]][,4]),function(x){
+ if(coltypeTrack==2){
+ data.TT[data.TT[,4] %in% x,1:3]
+ }else{
+ data.TTC[data.TTC[,4] %in% x,1:3]
+ }
+ })
+ circos.genomicTrackPlotRegion(bed_list, stack = TRUE, track.height = tkheight, track.margin = c(lkmargin,tkmargin),
+ bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region, value, ...){
+ i = getI(...)
+ if(coltypeTrack==1){
+ circos.lines(CELL_META$cell.xlim, c(i, i), lty = 2, col = tklinecol[i])
+ circos.genomicPoints(region, value, pch = symboltype[i], cex = pointsize, col = tkcolor[i],...)
+ }else if(coltypeTrack==2){
+ circos.lines(CELL_META$cell.xlim, c(i, i), lty = 2, col = tklinecol[i])
+ circos.genomicPoints(region, value, pch = symboltype[i], cex = pointsize, col = tkcolor[1],...)
+ }else if(coltypeTrack==3){
+ circos.lines(CELL_META$cell.xlim, c(i, i), lty = 2, col = tklinecol[i])
+ circos.genomicPoints(region, value, pch = symboltype[i], cex = pointsize, col = tkcolor[i],...)
+ }
+ })
+ }else{
+ data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin),
+ bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ if(!("cex" %in% colnames(data.T[[i]])) && !("pch" %in% colnames(data.T[[i]])) && ((coltypeTrack==1 && !("color" %in% colnames(data.T[[i]]))) | coltypeTrack==2)){
+ if(length(columns)==1){
+ tkcolor <- tkcolor[1]
+ }else{
+ tkcolor <- c(tkcolor,rep("grey",length(columns)))
+ tkcolor <- tkcolor[1:length(columns)]
+ }
+ circos.genomicPoints(region, value, numeric.column=columns-3, col=tkcolor, cex=0.6, pch=16, ...)
+ }
+ })
+ if(!("cex" %in% colnames(data.T[[i]]))){
+ if(coltypeTrack==3 && ("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=0.6, pch=dat$pch)
+ })
+ }else if(coltypeTrack==3 && ncol(data.TTC)>=6 && !("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=0.6, pch=16)
})
- circos.lines((trackk[,2]+trackk[,3])/2,trackk[,4], col=tkcolor, lwd=1, lty=1)
- })
- }
- }else if(tktype=="point"){
- data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
- circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin=c(lkmargin,tkmargin),
- bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- circos.genomicPoints(region, value, numeric.column=columns-3, col=tkcolor, cex=0.5, pch=16, ...)
- })
- assign("hltTrack",hltTrack.List[[i]])
- assign("hltdata",hltdata.List[[i]])
- if (nchar(hltdata)==0) {
- }else if (hltTrack==1 & nrow(hltregion.List[[i]])>0){
- assign("hltregion",hltregion.List[[i]])
- assign("hlttransparency",input[[paste("transparencyHlt",trackindx[i],sep="")]])
- hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
- hltregion$color <- gsub("0x","#", hltregion$color)
- chrr <- unique(hltregion[,1])
- lapply(chrr, function(x){
- datt <- hltregion[hltregion[,1] %in% x,]
- trackk <- data.TTT[data.TTT[,1] %in% x,]
- trackk <- trackk[!trackk$id %in% datt$id,]
- col <- unique(datt$color)
- if (input$trackChr=="track") {
- circos.updatePlotRegion(sector.index = x, track.index=i+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }else{
- circos.updatePlotRegion(sector.index = x, track.index=i+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- lapply(col, function(m){
- dattt <- datt[datt$color %in% m,]
- circos.points((dattt[,2]+dattt[,3])/2,dattt[,4], col=m, cex=0.6, pch=16)
+ }else if(coltypeTrack!=3 && ("pch" %in% colnames(data.T[[i]])) && ("color" %in% colnames(data.T[[i]]))){
+ lapply(unique(data.T[[i]][,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.T[[i]][data.T[[i]][,1] %in% x,]
+ tkcols <- data.TTC$cols[data.TTC[,1] %in% x]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(tkcols,alpha.f = tktransparency), cex=0.6, pch=dat$pch)
+ })
+ }else if(("pch" %in% colnames(data.T[[i]])) && !("color" %in% colnames(data.T[[i]]))){
+ lapply(unique(data.T[[i]][,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.T[[i]][data.T[[i]][,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=tkcolor, cex=0.6, pch=dat$pch)
+ })
+ }else if(coltypeTrack==1 && ("color" %in% colnames(data.T[[i]])) && !("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=0.6, pch=16)
+ })
+ }
+ }else if("cex" %in% colnames(data.T[[i]])){
+ if(coltypeTrack==3 && ("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=dat$cex, pch=dat$pch)
+ })
+ }else if(coltypeTrack==3 && ncol(data.TTC)>=6 && !("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=dat$cex, pch=16)
})
- circos.points((trackk[,2]+trackk[,3])/2,trackk[,4], col=tkcolor, cex=0.6, pch=16)
- })
- }
- }else if(tktype=="bar"){
- data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
- circos.genomicTrackPlotRegion(data.TT, numeric.column= columns, track.height = tkheight, track.margin=c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- if(length(columns)==1 & tkbardir==1){
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
+ }else if(coltypeTrack!=3 && ("pch" %in% colnames(data.T[[i]])) && ("color" %in% colnames(data.T[[i]]))){
+ lapply(unique(data.T[[i]][,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- circos.genomicRect(region, value, ytop.column = 1, ybottom = min(data.TT[,4]), col=tkcolor, border = NA, ...)
- }else if (length(columns)==1 & tkbardir==2) {
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.T[[i]][data.T[[i]][,1] %in% x,]
+ tkcols <- data.TTC$cols[data.TTC[,1] %in% x]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(tkcols,alpha.f = tktransparency), cex=dat$cex, pch=dat$pch)
+ })
+ }else if(("pch" %in% colnames(data.T[[i]])) && !("color" %in% colnames(data.T[[i]]))){
+ lapply(unique(data.T[[i]][,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- tkbarvalue <- as.numeric(tkbarvalue)
- indx <- value[,1] > tkbarvalue
- if (length(value[indx,])!=0 & length(value[!indx,])!=0) {
- circos.genomicRect(region[indx,], value[indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol1, border = NA, ...)
- circos.genomicRect(region[!indx,], value[!indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol2, border = NA, ...)
- }else if (length(value[indx,])!=0 & length(value[!indx,])==0) {
- circos.genomicRect(region[indx,], value[indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol1, border = NA, ...)
- }else if (length(value[indx,])==0 & length(value[!indx,])!=0) {
- circos.genomicRect(region[!indx,], value[!indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol2, border = NA, ...)
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.T[[i]][data.T[[i]][,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=tkcolor, cex=dat$cex, pch=dat$pch)
+ })
+ }else if(coltypeTrack==1 && ("color" %in% colnames(data.T[[i]])) && !("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
}
- }else if(length(columns)==2 & tkbardir==1){
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- circos.genomicRect(region, value, ytop.column = 1, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkcolor[1], border = NA, ...)
- circos.genomicRect(region, value, ytop.column = 2, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkcolor[length(tkcolor)], border = NA, ...)
- }else if (length(columns)==2 & tkbardir==2) {
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=dat$cex, pch=16)
+ })
+ }else if(!("color" %in% colnames(data.T[[i]])) && !("pch" %in% colnames(data.TTC))){
+ lapply(unique(data.T[[i]][,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- circos.genomicRect(region, value, ytop.column = 1, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkbarcol1, border = NA, ...)
- circos.genomicRect(region, value, ytop.column = 2, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkbarcol2, border = NA, ...)
- }
- })
- assign("hltTrack",hltTrack.List[[i]])
- assign("hltdata",hltdata.List[[i]])
- if (nchar(hltdata)==0) {
- }else if (hltTrack==1 & nrow(hltregion.List[[i]])>0 & tkbardir==1){
- assign("hltregion",hltregion.List[[i]])
- assign("hlttransparency",input[[paste("transparencyHlt",trackindx[i],sep="")]])
- hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
- hltregion$color <- gsub("0x","#", hltregion$color)
- chrr <- unique(hltregion[,1])
- lapply(chrr, function(x){
- datt <- hltregion[hltregion[,1] %in% x,]
- trackk <- data.TTT[data.TTT[,1] %in% x,]
- trackk <- trackk[!trackk$id %in% datt$id,]
- col <- unique(datt$color)
- if (input$trackChr=="track") {
- circos.updatePlotRegion(sector.index = x, track.index=i+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }else{
- circos.updatePlotRegion(sector.index = x, track.index=i+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
- ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
- lapply(col, function(m){
- dattt <- datt[datt$color %in% m,]
- ylim <- get.cell.meta.data("ylim")
- circos.rect(xleft=dattt[,2], xright=dattt[,3],ytop=dattt[,4],ybottom=rep(ylim[1],nrow(dattt)), col=m, border = NA)
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.T[[i]][data.T[[i]][,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=tkcolor[1], cex=dat$cex, pch=16)
})
- circos.rect(xleft=trackk[,2], xright=trackk[,3],ytop=trackk[,4],ybottom=rep(get.cell.meta.data("ylim")[1],nrow(trackk)), col=tkcolor, border = NA)
- })
- }else if (hltTrack==1 & nrow(hltregion.List[[i]])>0 & tkbardir==2) {
- assign("hltregion",hltregion.List[[i]])
- assign("hlttransparency",input[[paste("transparencyHlt",trackindx[i],sep="")]])
- hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
- hltregion$color <- gsub("0x","#", hltregion$color)
- chrr <- unique(hltregion[,1])
- lapply(chrr, function(x){
- datt <- hltregion[hltregion[,1] %in% x,]
+ }
+ }
+ assign("hltTrack",hltTrack.List[[i]])
+ assign("hltdata",hltdata.List[[i]])
+ if(hltTrack==1 && !is.null(nrow(hltregion.List[[i]])) && nrow(hltregion.List[[i]])>0 && (length(columns)==1 | any(c("color","pch","cex") %in% colnames(data.T[[i]])))){
+ assign("hltregion",hltregion.List[[i]])
+ hlttransparency <- transparencyHlt[i]
+ hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
+ hltregion$color <- gsub("0x","#", hltregion$color)
+ chrr <- unique(hltregion[,1])
+ lapply(chrr, function(x){
+ datt <- hltregion[hltregion[,1] %in% x,]
trackk <- data.TTT[data.TTT[,1] %in% x,]
trackk <- trackk[!trackk$id %in% datt$id,]
col <- unique(datt$color)
- if (input$trackChr=="track") {
- circos.updatePlotRegion(sector.index = x, track.index=i+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }else{
- circos.updatePlotRegion(sector.index = x, track.index=i+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
- }
- if(nchar(tklinecolor[1])!=0){
- xlim <- get.cell.meta.data("xlim")
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
ylim <- get.cell.meta.data("ylim")
- for(i in 1:length(tklinecoord)){
- y1 <- as.numeric(quantile(ylim,probs=tklinecoord[i]))
- circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[i], lwd=0.1)
- }
- }
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ if(!"pch" %in% colnames(data.TTT)){
+ dattt_pch <- 16
+ trackk_pch <- 16
+ }else{
+ trackk_pch <- trackk$pch
+ }
+ if(!"cex" %in% colnames(data.TTT)){
+ dattt_cex <- 0.6
+ trackk_cex <- 0.6
+ }else{
+ trackk_cex <- trackk$cex
+ }
lapply(col, function(m){
- dattt <- datt[datt$color %in% m,]
- ylim <- get.cell.meta.data("ylim")
- tkbarvalue <- as.numeric(tkbarvalue)
- indx <- dattt[,4] > tkbarvalue
- value <- dattt[,4]
- region <- dattt[,c(1:3)]
- if (length(value[indx])!=0 & length(value[!indx])!=0) {
- circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=m, border = NA)
- circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=m, border = NA)
- }else if (length(value[indx])!=0 & length(value[!indx])==0) {
- circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=m, border = NA)
- }else if (length(value[indx])==0 & length(value[!indx])!=0) {
- circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=m, border = NA)
- }
- })
- tkbarvalue <- as.numeric(tkbarvalue)
- indx <- trackk[,4] > tkbarvalue
- value <- trackk[,4]
- region <- trackk[,c(1:3)]
- if (length(value[indx])!=0 & length(value[!indx])!=0) {
- circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=tkbarcol1, border = NA)
- circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=tkbarcol2, border = NA)
- }else if (length(value[indx])!=0 & length(value[!indx])==0) {
- circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=tkbarcol1, border = NA)
- }else if (length(value[indx])==0 & length(value[!indx])!=0) {
- circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=tkbarcol2, border = NA)
+ dattt <- datt[datt$color %in% m,]
+ if("pch" %in% colnames(data.TTT)){
+ dattt_pch <- dattt$pch
}
+ if("cex" %in% colnames(data.TTT)){
+ dattt_cex <- dattt$cex
+ }
+ circos.points((dattt[,2]+dattt[,3])/2,dattt[,4], col=m, cex=dattt_cex, pch=dattt_pch)
})
- }
- }else if (tktype=="rect") {
- if (tkrectcol==2){
- if (selrectcol==1){
- data.TT[,4] <- as.numeric(as.factor(data.TT[,4]))
- cols=c(brewer.pal(11,'Set3'),brewer.pal(9,'Set1')[c(-1,-3,-6)],brewer.pal(8,'Dark2'),"chartreuse","aquamarine","cornflowerblue","blue","cyan","bisque1","darkorchid2","firebrick1","gold1","magenta1","olivedrab1","navy","maroon1","tan","yellow3","black","bisque4","seagreen3","plum2","yellow1","springgreen","slateblue1","lightsteelblue1","lightseagreen","limegreen")
- selcol <- sample(cols,length(unique(data.TT[,4])))
- data.TT[,4] <- selcol[data.TT[,4]]
- circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin=c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- circos.genomicRect(region, value, col=adjustcolor(value[[1]],alpha.f = tktransparency), border = NA, ...)
+ if("color" %in% colnames(trackk) && coltypeTrack!=2){
+ data.TTC$id <- paste(data.TTC[,1],data.TTC[,2],data.TTC[,3],sep="")
+ trackkk <- data.TTC[data.TTC$id %in% trackk$id,]
+ trackkk <- trackkk[trackkk[,1] %in% x,]
+ lapply(unique(trackkk$cols),function(f){
+ trackkkk <- trackkk[trackkk$cols %in% f,]
+ if("cex" %in% colnames(trackkkk)){
+ trackk_cex <- trackkkk$cex
+ }
+ if("pch" %in% colnames(trackkkk)){
+ trackk_pch <- trackkkk$pch
+ }
+ circos.points((trackkkk[,2]+trackkkk[,3])/2,trackkkk[,4], col=adjustcolor(f,alpha.f = tktransparency), cex=trackk_cex, pch=trackk_pch)
+ })
+ }else{
+ circos.points((trackk[,2]+trackk[,3])/2,trackk[,4], col=tkcolor[1], cex=trackk_cex, pch=trackk_pch)
+ }
+ })
+ }
+ }
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")
+ }
+ }else if(tktype=="bar"){
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")
+ }
+ data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ if(!("color" %in% colnames(data.T[[i]])) && !("cols" %in% colnames(data.TTC))){
+ if(length(columns)==1 && tkbardir==1){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ if(coltypeTrack==1){
+ circos.genomicRect(region, value, numeric.column=columns-3, ytop.column = 1, ybottom = min(data.TT[,4]), col=tkcolor, border = NA, ...)
+ }
+ }else if(length(columns)==1 && tkbardir==2){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ tkbarvalue <- as.numeric(tkbarvalue)
+ indx <- value[,1] > tkbarvalue
+ if(length(value[indx,])!=0 && length(value[!indx,])!=0){
+ circos.genomicRect(region[indx,], value[indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol1, border = NA, ...)
+ circos.genomicRect(region[!indx,], value[!indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol2, border = NA, ...)
+ }else if(length(value[indx,])!=0 && length(value[!indx,])==0){
+ circos.genomicRect(region[indx,], value[indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol1, border = NA, ...)
+ }else if(length(value[indx,])==0 && length(value[!indx,])!=0){
+ circos.genomicRect(region[!indx,], value[!indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol2, border = NA, ...)
+ }
+ }else if(length(columns)==2 && tkbardir==1){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ if(coltypeTrack!=3){
+ tkcolor <- c(tkcolor,rep("grey",length(columns)))
+ tkcolor <- tkcolor[1:length(columns)]
+ circos.genomicRect(region, value, ytop.column = 1, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkcolor[1], border = NA, ...)
+ circos.genomicRect(region, value, ytop.column = 2, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkcolor[2], border = NA, ...)
+ }
+ }else if(length(columns)==2 && tkbardir==2){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ circos.genomicRect(region, value, ytop.column = 1, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkbarcol1, border = NA, ...)
+ circos.genomicRect(region, value, ytop.column = 2, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkbarcol2, border = NA, ...)
+ }
+ }
+ if(length(columns)==1 && tkbardir==1 && coltypeTrack==2){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ circos.genomicRect(region, value, numeric.column=columns-3, ytop.column = 1, ybottom = min(data.TT[,4]), col=tkcolor[1], border = NA, ...)
+ }
+ })
+ if(length(columns)==1 && tkbardir==1 && coltypeTrack==3 && ncol(data.TTC)>=6 && ("cols" %in% colnames(data.TTC))){
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.rect(xleft=dat[,2], xright=dat[,3],ytop=dat[,4],ybottom=rep(get.cell.meta.data("ylim")[1],nrow(dat)), col=adjustcolor(dat$cols,alpha.f = tktransparency), border = NA)
+ })
+ }else if(length(columns)==1 && tkbardir==1 && coltypeTrack==1 && ncol(data.TTC)>=6 && ("cols" %in% colnames(data.TTC))){
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.rect(xleft=dat[,2], xright=dat[,3],ytop=dat[,4],ybottom=rep(get.cell.meta.data("ylim")[1],nrow(dat)), col=adjustcolor(dat$cols,alpha.f = tktransparency), border = NA)
+ })
+ }
+ assign("hltTrack",hltTrack.List[[i]])
+ assign("hltdata",hltdata.List[[i]])
+ if(hltTrack==1 && !is.null(nrow(hltregion.List[[i]])) && nrow(hltregion.List[[i]])>0 && tkbardir==1 && length(columns)==1){
+ assign("hltregion",hltregion.List[[i]])
+ hlttransparency <- transparencyHlt[i]
+ hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
+ hltregion$color <- gsub("0x","#", hltregion$color)
+ chrr <- unique(hltregion[,1])
+ lapply(chrr, function(x){
+ datt <- hltregion[hltregion[,1] %in% x,]
+ trackk <- data.TTT[data.TTT[,1] %in% x,]
+ trackk <- trackk[!trackk$id %in% datt$id,]
+ col <- unique(datt$color)
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ lapply(col, function(m){
+ dattt <- datt[datt$color %in% m,]
+ ylim <- get.cell.meta.data("ylim")
+ circos.rect(xleft=dattt[,2], xright=dattt[,3], ytop=dattt[,4], ybottom=rep(ylim[1],nrow(dattt)), col=m, border = NA)
+ })
+ circos.rect(xleft=trackk[,2], xright=trackk[,3], ytop=trackk[,4], ybottom=rep(get.cell.meta.data("ylim")[1],nrow(trackk)), col=tkcolor[1], border = NA)
+ })
+ }else if(hltTrack==1 && !is.null(nrow(hltregion.List[[i]])) && nrow(hltregion.List[[i]])>0 && tkbardir==2 && length(columns)==1){
+ assign("hltregion",hltregion.List[[i]])
+ hlttransparency <- transparencyHlt[i]
+ hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
+ hltregion$color <- gsub("0x","#", hltregion$color)
+ chrr <- unique(hltregion[,1])
+ lapply(chrr, function(x){
+ datt <- hltregion[hltregion[,1] %in% x,]
+ trackk <- data.TTT[data.TTT[,1] %in% x,]
+ trackk <- trackk[!trackk$id %in% datt$id,]
+ col <- unique(datt$color)
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ lapply(col, function(m){
+ dattt <- datt[datt$color %in% m,]
+ ylim <- get.cell.meta.data("ylim")
+ tkbarvalue <- as.numeric(tkbarvalue)
+ indx <- dattt[,4] > tkbarvalue
+ value <- dattt[,4]
+ region <- dattt[,c(1:3)]
+ if(length(value[indx])!=0 && length(value[!indx])!=0){
+ circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=m, border = NA)
+ circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=m, border = NA)
+ }else if(length(value[indx])!=0 && length(value[!indx])==0){
+ circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=m, border = NA)
+ }else if(length(value[indx])==0 && length(value[!indx])!=0){
+ circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=m, border = NA)
+ }
+ })
+ tkbarvalue <- as.numeric(tkbarvalue)
+ indx <- trackk[,4] > tkbarvalue
+ value <- trackk[,4]
+ region <- trackk[,c(1:3)]
+ if(length(value[indx])!=0 && length(value[!indx])!=0){
+ circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=tkbarcol1, border = NA)
+ circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=tkbarcol2, border = NA)
+ }else if(length(value[indx])!=0 && length(value[!indx])==0){
+ circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=tkbarcol1, border = NA)
+ }else if(length(value[indx])==0 && length(value[!indx])!=0){
+ circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=tkbarcol2, border = NA)
+ }
+ })
+ }
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")
+ }
+ }else if(tktype=="rect"){
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")
+ }
+ output$errorinfo6 <- renderPrint({
+ if(input[[paste("uploadtrack",trackindx[i],sep="")]]==2){
+ if(input[[paste("rectTrack",trackindx[i],sep="")]]==2 && input[[paste("rectcolTrack",trackindx[i],sep="")]]!=2){
+ validate(
+ need(length(unique(data.T[[i]][,4]))<=50, paste("Error: The 4th column of the uploaded data should be a discrete character vector with no more than 50 groups for 'Discrete' type. Please choose 'Gradual' type or upload applicable data for Track",trackindx[i],".",sep=""))
+ )
+ }
+ if(input[[paste("rectTrack",trackindx[i],sep="")]]==1){
+ validate(
+ need(is.numeric(data.T[[i]][,4]), paste("Error: Data uploaded is not appropriate 'Discrete' data. Please select appropriate 'Data type' for Track",trackindx[i],".",sep=""))
+ )
+ }
+ }
+ })
+ outputOptions(output, "errorinfo6", suspendWhenHidden = FALSE)
+ if(tkrectcol==2){
+ if(selrectcol==1){
+ data.TT[,4] <- as.numeric(as.factor(data.TT[,4]))
+ cols <- c(brewer.pal(11,'Set3'),brewer.pal(9,'Set1')[c(-1,-3,-6)],brewer.pal(8,'Dark2'),"chartreuse","aquamarine","cornflowerblue","blue","cyan","bisque1","darkorchid2","firebrick1","gold1","magenta1","olivedrab1","navy","maroon1","tan","yellow3","black","bisque4","seagreen3","plum2","yellow1","springgreen","slateblue1","lightsteelblue1","lightseagreen","limegreen")
+ selcol <- sample(cols,length(unique(data.TT[,4])))
+ tkcolor.export[[i]] <<- selcol
+ data.TT[,4] <- selcol[data.TT[,4]]
+ circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin = c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ circos.genomicRect(region, value, col=adjustcolor(value[[1]],alpha.f = tktransparency), border = NA, ...)
+ })
+ }else{
+ circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin = c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ circos.genomicRect(region, value, col=adjustcolor(value[[1]],alpha.f = tktransparency), border = NA, ...)
+ })
+ }
+ }else{
+ f <- colorRamp2(breaks = c(min(data.TT[,4]), mean(data.TT[,4]), max(data.TT[,4])), colors = rectcols)
+ circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin = c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ circos.genomicRect(region, value, col=adjustcolor(f(value[[1]]),alpha.f = tktransparency), border = NA, ...)
+ })
+ }
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")
+ }
+ }
+ else if(tktype=="heatmap"){
+ data.TT$num <- NULL
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")
+ }
+ break1 <- min(as.numeric(as.matrix(data.TT[,-c(1:3)])))
+ break2 <- max(as.numeric(as.matrix(data.TT[,-c(1:3)])))
+ midpoint <- (break1+break2)/2
+ f <- colorRamp2(breaks = c(break1, midpoint, break2), colors = hmapcols)
+ if(is.na(tkbordercol)){
+ if(lineshmap==2){
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin), stack = TRUE,
+ panel.fun = function(region, value, ...){
+ circos.genomicRect(region, value, col = f(value[[1]]),
+ border = f(value[[1]]), posTransform = posTransform.default, ...)
+ }, bg.border = NA)
+ }else{
+ circos.genomicPosTransformLines(data.TT, posTransform = posTransform.default,
+ horizontalLine = "top", track.height = heightlines, track.margin = c(0,marginlines))
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin), stack = TRUE,
+ panel.fun = function(region, value, ...){
+ circos.genomicRect(region, value, col = f(value[[1]]),
+ border = f(value[[1]]), posTransform = posTransform.default, ...)
+ }, bg.border = NA)
+ }
+ }else{
+ if(lineshmap==2){
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin), stack = TRUE,
+ panel.fun = function(region, value, ...){
+ circos.genomicRect(region, value, col = f(value[[1]]), lwd = 0.1,
+ border = tkbordercol, posTransform = posTransform.default, ...)
+ }, bg.border = NA)
+ }else{
+ circos.genomicPosTransformLines(data.TT, posTransform = posTransform.default,
+ horizontalLine = "top", track.height = heightlines, track.margin = c(0,marginlines))
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin), stack = TRUE,
+ panel.fun = function(region, value, ...){
+ circos.genomicRect(region, value, col = f(value[[1]]), lwd = 0.1,
+ border = tkbordercol, posTransform = posTransform.default, ...)
+ }, bg.border = NA)
+ }
+ }
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")
+ }
+ }else if(tktype=="ideogram"){
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")
+ }
+ circos.genomicIdeogram(data.TT,track.height = tkheight, track.margin = c(lkmargin,tkmargin))
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")
+ }
+ }
+ if(poslabels[i]=="inner"){
+ takindx <- takindx+3
+ }else{
+ takindx <- takindx+1
+ }
+ }}
+ if(!is.null(data.L) && linksTrack){
+ if(is.null(data.T)){
+ circos.par(track.margin = c(0,marginLinks))
+ }
+ rou <- get_most_inside_radius()
+ rou <- rou[1]
+ output$errorinfo7 <- renderPrint({
+ if(highlightLinks==1 && input$linksTrack){
+ validate(
+ need(nchar(hltdataLinks)>0, "Warning: Data to highlight regions for links are empty. Please input applicable genomic regions.")
+ )
+ }
+ })
+ outputOptions(output, "errorinfo7", suspendWhenHidden = FALSE)
+ output$errorinfo8 <- renderPrint({
+ if(!("color" %in% colnames(data.L))){
+ if(input$colorLinks==2 && input$linksTrack){
+ validate(
+ need(!(":" %in% unlist(strsplit(selcolorLinks,""))), "Error: Data color error for links. The type of data color should be 'Random' or 'Specific'.")
+ )
+ }
+ }
+ })
+ outputOptions(output, "errorinfo8", suspendWhenHidden = FALSE)
+ if(colorLinks==2){
+ splitcol <- ":" %in% unlist(strsplit(selcolorLinks,""))
+ if(ncol(data.L)==7 && colnames(data.L)[7]=="color" && splitcol){
+ data.L$num <- 1:nrow(data.L)
+ selcolorLinks <- unlist(strsplit(selcolorLinks,";"))
+ selcolorLinks <- data.frame(id=selcolorLinks,stringsAsFactors=F)
+ selcolorLinks$group <- gsub("\\:.*","",selcolorLinks$id)
+ selcolorLinks$cols <- gsub(".*\\:","",selcolorLinks$id)
+ selcolorLinks$group <- gsub(" ","",selcolorLinks$group)
+ selcolorLinks$cols <- gsub(" ","",selcolorLinks$cols)
+ data.LC <- merge(data.L,selcolorLinks,by.x="color",by.y="group",all.x=T)
+ data.LC$cols[is.na(data.LC$cols)] <- "grey"
+ data.LC <- data.LC[order(data.LC$num),]
+ data.LC$num <- NULL
+ rownames(data.LC) <- NULL
+ data.L$num <- NULL
+ colLinks <- adjustcolor(data.LC$cols, alpha.f = transparencyLinks)
+ }else if(ncol(data.L)==6 && !splitcol){
+ colLinks <- adjustcolor(selcolorLinks, alpha.f = transparencyLinks)
+ }
+ if(highlightLinks==1 && (!is.null(hltregion1.export) | !is.null(hltregion2.export))){
+ colL <- unique(datL[,4])
+ colL <- adjustcolor(colL, alpha.f = transparencyhltLinks)
+ colL <- gsub("0x","#", colL)
+ hltregion1$color <- adjustcolor(hltregion1$color, alpha.f = transparencyhltLinks)
+ hltregion1$color <- gsub("0x","#", hltregion1$color)
+ hltregion2$color <- adjustcolor(hltregion2$color, alpha.f = transparencyhltLinks)
+ hltregion2$color <- gsub("0x","#", hltregion2$color)
+ linkk1 <- data.LL1[!data.LL1$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
+ linkk2 <- data.LL2[!data.LL2$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
+ colindx <- (!data.LL1$num %in% c(hltregion1$num,hltregion2$num)) & (!data.LL2$num %in% c(hltregion1$num,hltregion2$num))
+ if(ncol(data.L)==7 && colnames(data.L)[7]=="color"){
+ circos.genomicLink(linkk1, linkk2, rou = rou, col = colLinks[colindx], border = NA)
+ }else{
+ circos.genomicLink(linkk1, linkk2, rou = rou, col = colLinks, border = NA)
+ }
+ lapply(colL, function(x){
+ hltregion11 <- hltregion1[hltregion1$color %in% x,]
+ hltregion12 <- data.LL2[data.L2$num %in% hltregion11$num,]
+ hltregion12 <- hltregion12[,c(1:3)]
+ hltregion11 <- hltregion11[,c(1:3)]
+ hltregion22 <- hltregion2[hltregion2$color %in% x,]
+ hltregion21 <- data.LL1[data.L1$num %in% hltregion22$num,]
+ hltregion21 <- hltregion21[,c(1:3)]
+ hltregion22 <- hltregion22[,c(1:3)]
+ if(nrow(hltregion11)!=0){
+ circos.genomicLink(hltregion11, hltregion12, rou = rou, col = x, border = NA)
+ }
+ if(nrow(hltregion22)!=0){
+ circos.genomicLink(hltregion21, hltregion22, rou = rou, col = x, border = NA)
+ }
})
- }else{
- data.TT[,4] <- rectcols
- circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin=c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- circos.genomicRect(region, value, col=adjustcolor(value[[1]],alpha.f = tktransparency), border = NA, ...)
+ }else{
+ if(!(ncol(data.L)==6 && splitcol)){
+ data.L1 <- data.L[,c(1:3)]
+ data.L2 <- data.L[,c(4:6)]
+ circos.genomicLink(data.L1, data.L2, rou = rou, col = colLinks, border = NA)
+ }
+ }
+ }else{
+ if(ncol(data.L)==7 && colnames(data.L)[7]=="color"){
+ groupnum <- length(unique(data.L[,7]))
+ linkscolor.export <<- rand_color(groupnum)
+ randcolorLinks <- data.frame(group=unique(data.L[,7]), cols=linkscolor.export, stringsAsFactors=F)
+ data.LC <- merge(data.L,randcolorLinks,by.x="color",by.y="group",all.x=T)
+ colLinks <- adjustcolor(data.LC$cols, alpha.f = transparencyLinks)
+ }
+ if(highlightLinks==1 && (!is.null(hltregion1.export) | !is.null(hltregion2.export))){
+ colL <- unique(datL[,4])
+ colL <- adjustcolor(colL, alpha.f = transparencyhltLinks)
+ colL <- gsub("0x","#", colL)
+ hltregion1$color <- adjustcolor(hltregion1$color, alpha.f = transparencyhltLinks)
+ hltregion1$color <- gsub("0x","#", hltregion1$color)
+ hltregion2$color <- adjustcolor(hltregion2$color, alpha.f = transparencyhltLinks)
+ hltregion2$color <- gsub("0x","#", hltregion2$color)
+ linkk1 <- data.LL1[!data.LL1$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
+ linkk2 <- data.LL2[!data.LL2$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
+ colindx <- (!data.LL1$num %in% c(hltregion1$num,hltregion2$num)) & (!data.LL2$num %in% c(hltregion1$num,hltregion2$num))
+ if(ncol(data.L)==7 && colnames(data.L)[7]=="color"){
+ circos.genomicLink(linkk1, linkk2, rou = rou, col = colLinks[colindx], border = NA)
+ }else{
+ linkscolor.export <<- rand_color(nrow(linkk1), transparency = 1-transparencyLinks)
+ circos.genomicLink(linkk1, linkk2, rou = rou, col = linkscolor.export, border = NA)
+ }
+ lapply(colL, function(x){
+ hltregion11 <- hltregion1[hltregion1$color %in% x,]
+ hltregion12 <- data.LL2[data.L2$num %in% hltregion11$num,]
+ hltregion12 <- hltregion12[,c(1:3)]
+ hltregion11 <- hltregion11[,c(1:3)]
+ hltregion22 <- hltregion2[hltregion2$color %in% x,]
+ hltregion21 <- data.LL1[data.L1$num %in% hltregion22$num,]
+ hltregion21 <- hltregion21[,c(1:3)]
+ hltregion22 <- hltregion22[,c(1:3)]
+ if(nrow(hltregion11)!=0){
+ circos.genomicLink(hltregion11, hltregion12, rou = rou, col = x, border = NA)
+ }
+ if(nrow(hltregion22)!=0){
+ circos.genomicLink(hltregion21, hltregion22, rou = rou, col = x, border = NA)
+ }
})
- }
- }else{
- f <- colorRamp2(breaks = c(min(data.TT[,4]), mean(data.TT[,4]), max(data.TT[,4])), colors = rectcols)
- circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin=c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
- circos.genomicRect(region, value, col=adjustcolor(f(value[[1]]),alpha.f = tktransparency), border = NA, ...)
- })
- }
- }
- else if (tktype=="heatmap") {
- break1 <- min(as.numeric(as.matrix(data.TT[,-c(1:3)])))
- break2 <- max(as.numeric(as.matrix(data.TT[,-c(1:3)])))
- if (midhmapTrack[i]==1) {
- midpoint <<- (break1+break2)/2
- }else{
- midpoint <<- midpointTrack[i]
- }
- f <- colorRamp2(breaks = c(break1, midpoint, break2), colors = hmapcols)
- if (lineshmap==2){
- circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin=c(lkmargin,tkmargin), stack = TRUE,
- panel.fun = function(region, value, ...) {
- circos.genomicRect(region, value, col = f(value[[1]]),
- border = f(value[[1]]), posTransform = posTransform.default, ...)
- }, bg.border = NA)
+ }else{
+ data.L1 <- data.L1[,c(1:3)]
+ data.L2 <- data.L2[,c(1:3)]
+ if(ncol(data.L)==7 && colnames(data.L)[7]=="color"){
+ circos.genomicLink(data.L1, data.L2, rou = rou, col = colLinks, border = NA)
}else{
- circos.genomicPosTransformLines(data.TT, posTransform = posTransform.default,
- horizontalLine = "top", track.height = heightlines, track.margin = c(0,marginlines))
- circos.genomicTrackPlotRegion(data.TT, track.height=tkheight, track.margin=c(lkmargin,tkmargin), stack = TRUE,
- panel.fun = function(region, value, ...) {
- circos.genomicRect(region, value, col = f(value[[1]]),
- border = f(value[[1]]), posTransform = posTransform.default, ...)
- }, bg.border = NA)
- }
- }
- }}
- if (!is.null(data.L) && input$linksTrack){
- if (is.null(data.T)){
- marginLinks <- as.numeric(input$marginLinks)
- circos.par(track.margin=c(0,marginLinks))
- }
- if (input$colorLinks==2) {
- colLinks <- adjustcolor(input$selcolorLinks, alpha.f = input$transparencyLinks)
- if(highlightLinks==1 & nchar(hltdataLinks)!=0){
- colL <- unique(datL[,4])
- colL <- adjustcolor(colL, alpha.f = input$transparencyhltLinks)
- colL <- gsub("0x","#", colL)
- hltregion1$color <- adjustcolor(hltregion1$color, alpha.f = input$transparencyhltLinks)
- hltregion1$color <- gsub("0x","#", hltregion1$color)
- hltregion2$color <- adjustcolor(hltregion2$color, alpha.f = input$transparencyhltLinks)
- hltregion2$color <- gsub("0x","#", hltregion2$color)
- linkk1 <- data.LL1[!data.LL1$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
- linkk2 <- data.LL2[!data.LL2$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
- circos.genomicLink(linkk1, linkk2, col = colLinks, border = NA)
- lapply(colL, function(x){
- hltregion11 <- hltregion1[hltregion1$color %in% x,]
- hltregion12 <- data.LL2[data.L2$num %in% hltregion11$num,]
- hltregion12 <- hltregion12[,c(1:3)]
- hltregion11 <- hltregion11[,c(1:3)]
- hltregion22 <- hltregion2[hltregion2$color %in% x,]
- hltregion21 <- data.LL1[data.L1$num %in% hltregion22$num,]
- hltregion21 <- hltregion21[,c(1:3)]
- hltregion22 <- hltregion22[,c(1:3)]
- if (nrow(hltregion11)!=0) {
- circos.genomicLink(hltregion11, hltregion12, col = x, border = NA)
- }
- if (nrow(hltregion22)!=0){
- circos.genomicLink(hltregion21, hltregion22, col = x, border = NA)
- }
- })
- }else{
- data.L1 <- data.L1[,c(1:3)]
- data.L2 <- data.L2[,c(1:3)]
- circos.genomicLink(data.L1, data.L2, col = colLinks, border = NA)
- }
- }else {
- if(highlightLinks==1 & nchar(hltdataLinks)!=0){
- colL <- unique(datL[,4])
- colL <- adjustcolor(colL, alpha.f = input$transparencyhltLinks)
- colL <- gsub("0x","#", colL)
- hltregion1$color <- adjustcolor(hltregion1$color, alpha.f = input$transparencyhltLinks)
- hltregion1$color <- gsub("0x","#", hltregion1$color)
- hltregion2$color <- adjustcolor(hltregion2$color, alpha.f = input$transparencyhltLinks)
- hltregion2$color <- gsub("0x","#", hltregion2$color)
- linkk1 <- data.LL1[!data.LL1$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
- linkk2 <- data.LL2[!data.LL2$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
- circos.genomicLink(linkk1, linkk2, col = rand_color(nrow(linkk1), transparency = 1-input$transparencyLinks), border = NA)
- lapply(colL, function(x){
- hltregion11 <- hltregion1[hltregion1$color %in% x,]
- hltregion12 <- data.LL2[data.L2$num %in% hltregion11$num,]
- hltregion12 <- hltregion12[,c(1:3)]
- hltregion11 <- hltregion11[,c(1:3)]
- hltregion22 <- hltregion2[hltregion2$color %in% x,]
- hltregion21 <- data.LL1[data.L1$num %in% hltregion22$num,]
- hltregion21 <- hltregion21[,c(1:3)]
- hltregion22 <- hltregion22[,c(1:3)]
- if (nrow(hltregion11)!=0) {
- circos.genomicLink(hltregion11, hltregion12, col = x, border = NA)
- }
- if (nrow(hltregion22)!=0){
- circos.genomicLink(hltregion21, hltregion22, col = x, border = NA)
- }
- })
- }else{
- data.L1 <- data.L1[,c(1:3)]
- data.L2 <- data.L2[,c(1:3)]
- circos.genomicLink(data.L1, data.L2, col = rand_color(nrow(data.L1), transparency = 1-input$transparencyLinks), border = NA)
- }
- }
- }
- n = length(legendtext)
- if (n!=0 && addlegend==1){
- if (poslegend==1 && input$fontsizeChr!="custom"){
- xleft = 1.2+(as.numeric(input$fontsizeChr)-1)*0.25
- }else if(poslegend==1 && input$fontsizeChr=="custom"){
- xleft = 1.2+(as.numeric(input$cexAxislabel)-1)*0.25
- }else{
- xleft = -0.01
- }
- xright = xleft+0.02
- ybottom = -0.13*0.22/10-n*0.03
- ytop = -0.13*0.22/10+n*0.03
- len = ytop-ybottom
- gap = len/(n-0.8)
- for(i in 1:n){
- assign(paste("n",i,sep=""),legendtext[i])
- }
- rect(xleft, ybottom, xright, ytop, col = "black")
- polygon(x = c(xleft-0.01, (xleft+xright)/2, xright+0.01), y = c(ybottom, ybottom-0.02, ybottom), col = "black")
- text(x = xleft-0.08, y = ybottom, labels = "inner", cex = 0.95)
- if (n!=1){
- text(x = xleft-0.08, y = ytop-0.02, labels = "outer",cex = 0.95)
- }
- if(n==1){
- text(x = xleft-0.08, y = ytop-0.01, labels = "outer",cex = 0.95)
- text(x = xright+0.025, y = ytop-0.04, labels = get("n1"), cex=1, adj = c(0,0))
- }else{
- for(i in 1:n){
- text(x = xright+0.028, y = ytop-gap*(i-1)-0.025, labels = get(paste("n",i,sep="")), cex=1, adj = c(0,0))
+ linkscolor.export <<- rand_color(nrow(data.L1), transparency = 1-transparencyLinks)
+ circos.genomicLink(data.L1, data.L2, rou = rou, col = linkscolor.export, border = NA)
}
- }
- }
- circos.clear()
- }
-
-downloadfile = function(name){downloadHandler(
- filename = function() { name },
- content = function(file) {
- chr <- read.csv(name,head=T,as.is=T)
- write.csv(chr, file, row.names=FALSE, quote=F)
+ }
+ }
+ }
+ n <- length(legendtext)
+ if(n!=0 && addlegend==1){
+ if(poslegend==1 && fontsize!="custom"){
+ xleft <- 1.2+(as.numeric(fontsize)-1)*0.25
+ }else if(poslegend==1 && fontsize=="custom"){
+ xleft <- 1.2+(as.numeric(cexlabel)-1)*0.25
+ }else{
+ xleft <- -0.01
+ }
+ xright <- xleft+0.02
+ ybottom <- -0.13*0.22/10-n*0.03
+ ytop <- -0.13*0.22/10+n*0.03
+ len <- ytop-ybottom
+ gap <- len/(n-0.8)
+ for(i in 1:n){
+ assign(paste("n",i,sep=""),legendtext[i])
+ }
+ rect(xleft, ybottom, xright, ytop, col = "black")
+ polygon(x=c(xleft-0.01,(xleft+xright)/2,xright+0.01), y=c(ybottom,ybottom-0.02,ybottom), col="black")
+ text(x=xleft-0.08, y=ybottom, labels="inner", cex=0.95)
+ if(n!=1){
+ text(x=xleft-0.08, y=ytop-0.02, labels="outer", cex=0.95)
+ }
+ if(n==1){
+ text(x=xleft-0.08, y=ytop-0.01, labels="outer", cex=0.95)
+ text(x=xright+0.025, y=ytop-0.04, labels=get("n1"), cex=1, adj=c(0,0))
+ }else{
+ for(i in 1:n){
+ text(x=xright+0.028, y=ytop-gap*(i-1)-0.025, labels=get(paste("n",i,sep="")), cex=1, adj=c(0,0))
+ }
+ }
+ }
+ circos.clear()
+ figurecp <<- recordPlot()
+ incProgress(1/1, detail="Finished")
})
- }
-
-updateText = function(x, input, session){if (input[[paste("uploadtrack",x,sep="")]] == 2) {
- assign(paste("highlightclear",x,sep=""),input[[paste("clearText_button",x,sep="")]])
- if (get(paste("highlightclear",x,sep="")) == 0) return(NULL)
- isolate({updateTextInput(session, paste("hltData",x,sep=""), label = ",", value = "")})
- }
- }
-
-.default.major.by = function(sector.index = get.cell.meta.data("sector.index"),
- track.index = get.cell.meta.data("track.index")) {
- d = circos.par("major.by.degree")
- cell.start.degre = get.cell.meta.data("cell.start.degree", sector.index, track.index)
- tm = reverse.circlize(c(cell.start.degre, cell.start.degre-d), rep(get.cell.meta.data("cell.bottom.radius", sector.index = sector.index, track.index = track.index), 2))
- major.by = abs(tm[1, 1] - tm[2, 1])
- digits = as.numeric(gsub("^.*e([+-]\\d+)$", "\\1", sprintf("%e", major.by)))
- major.by = round(major.by, digits = -1*digits)
- return(major.by)
+ }, height=heightSize, width=widthSize)
}
diff --git a/server.R b/server.R
index c7c910e..4c05d77 100644
--- a/server.R
+++ b/server.R
@@ -1,306 +1,479 @@
options(shiny.maxRequestSize = 200*1024^2)
+options(warn=-1)
library(circlize)
library(RColorBrewer)
library(GenomicRanges)
+library(data.table)
library(grDevices)
source("plot.R")
+print(sessionInfo())
-shinyServer(function(input, output, session) {
- ## *** Upload data ***
+shinyServer(function(input, output, session){
+ ## *** Upload data ***
observe({
- if (input$submit1>0) {
+ if(input$submit1>0){
isolate({
- inFile <- input$uploadChr
- if (is.null(input$uploadChr)) {
- data.C <<- NULL
- }else{
- data.C <<- read.table(inFile$datapath, as.is=TRUE, head=TRUE, sep=",")
- }
- data.T <<- lapply(1:10,function(x){
- assign(paste("uploadtrack",x,sep=""),input[[paste("uploadtrack",x,sep="")]])
- if (get(paste("uploadtrack",x,sep="")) == 2){
- trackfil <- input[[paste("uploadTrackfile",x,sep="")]]
- read.table(trackfil$datapath, as.is=TRUE, head=TRUE, sep=",")
- }
- })
- trackindx <<- which(!unlist(lapply(data.T, is.null)))
- data.T <<- data.T[trackindx]
- if(length(data.T) == 0) {
- data.T <<- NULL
- }
- if (!input$linksTrack) {
- data.L <<- NULL
- }else if(input$linksTrack & !is.null(input$linksFile)){
- trackfil <- input$linksFile
- data.L <<- read.table(trackfil$datapath, as.is=TRUE, head=TRUE, sep=",")
- data.L1 <<- data.L[,1:3]
- data.L2 <<- data.L[,4:6]
- data.L1[,2] <- as.numeric(data.L1[,2])
- data.L1[,3] <- as.numeric(data.L1[,3])
- data.L2[,2] <- as.numeric(data.L2[,2])
- data.L2[,3] <- as.numeric(data.L2[,3])
- data.L1$num <<- 1:nrow(data.L1)
- data.L2$num <<- 1:nrow(data.L2)
- rownames(data.L1) <<- data.L1$num
- rownames(data.L2) <<- data.L2$num
- }
-## *** Show uploading data ***
- output$viewChr <- renderTable(digits=3,{
- head(data.C,n=3)
- })
- output$chrdat <- reactive({
- return(!is.null(input$uploadChr))
- })
- outputOptions(output, "chrdat", suspendWhenHidden = FALSE)
+ inFile <- input$uploadChr
+ if(is.null(input$uploadChr)){
+ data.C <<- NULL
+ }else{
+ data.C <<- data.frame(fread(inFile$datapath),stringsAsFactors = F)
+ data.C.name <<- inFile$name
+ }
+ if(!is.null(input$uploadChr) && !is.null(input$markTrackfile0)){
+ data.CN <<- data.frame(fread(input$markTrackfile0$datapath),stringsAsFactors = F)
+ data.CN.name <<- input$markTrackfile0$name
+ }else{
+ data.CN <<- NULL
+ data.CN.name <<- NULL
+ }
+ uploadtrack.export <<- c()
+ uploadTrackfile.export <<- c()
+ data.T <<- lapply(1:10,function(x){
+ assign(paste("uploadtrack",x,sep=""),input[[paste("uploadtrack",x,sep="")]])
+ uploadtrack.export <<- c(uploadtrack.export,get(paste("uploadtrack",x,sep="")))
+ trackfil <- input[[paste("uploadTrackfile",x,sep="")]]
+ uploadTrackfile.export <<- c(uploadTrackfile.export,trackfil$name)
+ if(get(paste("uploadtrack",x,sep="")) == 2 && !is.null(trackfil)){
+ data.frame(fread(trackfil$datapath),stringsAsFactors = F)
+ }
+ })
+ markTrackfile.export <<- c()
+ data.N <<- lapply(1:10,function(x){
+ assign(paste("uploadtrack",x,sep=""),input[[paste("uploadtrack",x,sep="")]])
+ trackfil <- input[[paste("markTrackfile",x,sep="")]]
+ if(is.null(trackfil)){
+ markTrackfile.export <<- c(markTrackfile.export,"")
+ }else{
+ markTrackfile.export <<- c(markTrackfile.export,trackfil$name)
+ }
+ if(get(paste("uploadtrack",x,sep="")) == 2 && !is.null(trackfil)){
+ data.frame(fread(trackfil$datapath),stringsAsFactors = F)
+ }
+ })
+ trackindx <<- which(!unlist(lapply(data.T, is.null)))
+ data.T <<- data.T[trackindx]
+ if(length(data.T) == 0){
+ data.T <<- NULL
+ }
+ data.N <<- data.N[trackindx]
+ if(length(data.N) == 0){
+ data.N <<- NULL
+ }
+ linksTrack.export <<- input$linksTrack
+ linksFile.export <<- input$linksFile
+ if(!input$linksTrack){
+ data.L <<- NULL
+ }else if(input$linksTrack && !is.null(input$linksFile)){
+ trackfil <- input$linksFile
+ linksFile.name <<- trackfil$name
+ data.L <<- data.frame(fread(trackfil$datapath),stringsAsFactors = F)
+ if(ncol(data.L)==6 | ncol(data.L)==7){
+ data.L1 <<- data.L[,1:3]
+ data.L2 <<- data.L[,4:6]
+ data.L1[,2] <- as.numeric(data.L1[,2])
+ data.L1[,3] <- as.numeric(data.L1[,3])
+ data.L2[,2] <- as.numeric(data.L2[,2])
+ data.L2[,3] <- as.numeric(data.L2[,3])
+ data.L1$num <<- 1:nrow(data.L1)
+ data.L2$num <<- 1:nrow(data.L2)
+ rownames(data.L1) <<- data.L1$num
+ rownames(data.L2) <<- data.L2$num
+ }
+ }
+ output$errorinfo1 <- renderPrint({
+ for(i in 1:10){
+ if(uploadtrack.export[i]==2){
+ validate(
+ need(uploadTrackfile.export[i], paste("Warning: Data are empty for Track",i,". Please upload applicable data.",sep=""))
+ )
+ }
+ }
+ validate(
+ need(ncol(data.C)==3 | (ncol(data.C)==5 && is.character(data.C[,4]) && is.character(data.C[,5])), "Error: Data formatting error! Chromosome data should contain three (general type) or five columns (cytoband type). Please upload applicable chromosome data.")
+ )
+ validate(
+ need(all(is.numeric(data.C[,2]),is.numeric(data.C[,3])), "Error: Data formatting error! The second and third column of chromosome data should be numeric vectors.")
+ )
+ if(input$datatypeChr!="general"){
+ validate(
+ need(ncol(data.C)==5, "Error: The chromosome data type should be 'General' based on the uploaded data.")
+ )
+ }
+ if(!is.null(data.CN)){
+ validate(
+ need(ncol(data.CN)==4, "Error: Label data for the chromosome track should contain four columns.")
+ )
+ validate(
+ need(all(is.numeric(data.CN[,2]),is.numeric(data.CN[,3])),"Error: The second and third column of label data for the chromosome track should be numeric vectors.")
+ )
+ }
+ if(!is.null(data.T)){
+ for(i in 1:length(data.T)){
+ dt.TT <- data.T[[i]]
+ tptrack <- input[[paste("typeTrack",trackindx[i],sep="")]]
+ validate(
+ need(ncol(dt.TT)>=4, paste("Error: Data formatting error for Track",trackindx[i],"."," Please upload applicable data.",sep=""))
+ )
+ validate(
+ need(all(is.numeric(dt.TT[,2]),is.numeric(dt.TT[,3])), paste("Error: Data formatting error for Track",trackindx[i],"."," The second and third column should be numeric vectors.",sep=""))
+ )
+ if(tptrack=="point"){
+ validate(
+ need(is.numeric(dt.TT[,4]) | colnames(dt.TT)[4]=="stack", paste("Error: Data formatting error for Track",trackindx[i],"."," The fourth column should be a numeric vector or a character vector named as 'stack'.",sep=""))
+ )
+ }else if(tptrack=="line"){
+ validate(
+ need(is.numeric(dt.TT[,4]) | colnames(dt.TT)[4]=="stack", paste("Error: Data formatting error for Track",trackindx[i],"."," The fourth column should be a numeric vector or a character vector named as 'stack'.",sep="")),
+ need(!all(("pch" %in% colnames(dt.TT)) | ("cex" %in% colnames(dt.TT))), paste("Error: Data formatting error for Track",trackindx[i],"."," It should not contain columns named as 'pch' or 'cex'.",sep=""))
+ )
+ }else if(tptrack=="bar"){
+ validate(
+ need(ncol(dt.TT)<=5, paste("Warning: Please upload data with four or five columns, the fifth column of which should be named as 'color'. Otherwise, only the first four or five columns of the data would be used to create barplot for Track",trackindx[i],".",sep="")),
+ need(!all(("pch" %in% colnames(dt.TT)) | ("cex" %in% colnames(dt.TT))), paste("Error: Data formatting error for Track",trackindx[i],"."," It should not contain columns named as 'pch' or 'cex'.",sep=""))
+ )
+ }else if(tptrack=="rect"){
+ validate(
+ need(ncol(dt.TT)<=5, paste("Warning: Please upload data with four columns. Otherwise, only the first four columns of the data would be used to create the rect plot for Track",trackindx[i],".",sep="")),
+ need(ncol(dt.TT)==4, paste("Error: Please upload data with four columns for Track",trackindx[i],"."," The 4th column should be a numeric vactor or a character vactor.",sep="")),
+ need(!all(("pch" %in% colnames(dt.TT)) | ("cex" %in% colnames(dt.TT))), paste("Error: Data formatting error for Track",trackindx[i],"."," It should not contain columns named as 'pch' or 'cex'.",sep=""))
+ )
+ }else if(tptrack=="heatmap"){
+ colums <- lapply(dt.TT[,-(1:3)],function(x){is.numeric(x)})
+ validate(
+ need(all(unlist(colums)), paste("Error: Data formatting error for Track",trackindx[i],"."," Apart from the first column, other columns of the data to create heatmap should be numeric vectors.",sep="")),
+ need(!all(("pch" %in% colnames(dt.TT)) | ("cex" %in% colnames(dt.TT))), paste("Error: Data formatting error for Track",trackindx[i],"."," It should not contain columns named as 'pch' or 'cex'.",sep=""))
+ )
+ }else if(tptrack=="ideogram"){
+ validate(
+ need(ncol(dt.TT)==5, paste("Error: Data formatting error for Track",trackindx[i],"."," Data to create ideogram should contain five columns. Please upload applicable data for Track",trackindx[i],"."," See example data 'chromosome_ideogram.csv' for more details.",sep="")),
+ need(!all(("pch" %in% colnames(dt.TT)) | ("cex" %in% colnames(dt.TT))), paste("Error: Data formatting error for Track",trackindx[i],"."," It should not contain columns named as 'pch' or 'cex'.",sep=""))
+ )
+ }
+ }
+ }
+ if(!is.null(data.N)){
+ for(k in 1:length(data.T)){
+ dt.NN <- data.N[[k]]
+ if(!is.null(dt.NN)){
+ validate(
+ need(ncol(dt.NN)==4, paste("Error: Label data for Track",trackindx[k]," should contain four columns.",sep=""))
+ )
+ validate(
+ need(all(is.numeric(dt.NN[,2]),is.numeric(dt.NN[,3])), paste("Error: Label data formatting error for Track",trackindx[k],"."," The second and third column should be numeric vectors.",sep=""))
+ )
+ }
+ }
+ }
+ if(linksTrack.export && !is.null(linksFile.export)){
+ validate(
+ need(ncol(data.L)==6 | (ncol(data.L)==7 && colnames(data.L)[7]=="color"), "Error: Data formatting error. Data to create links between different genomic regions should be composed of 6 or 7 columns, the 7th column of which should be named as 'color'. Please upload applicable data.")
+ )
+ validate(
+ need(all(is.numeric(data.L[,2]),is.numeric(data.L[,3]),is.numeric(data.L[,5]),is.numeric(data.L[,6])), "Error: Data formatting error. The second, third, fifth and sixth columns of the data to create links between different genomic regions should be numeric vectors. Please upload applicable data.")
+ )
+ }
+ validate(
+ need(is.null(data.C), "Please go to the 'Circos visualization' menu to generate the Circos plot!")
+ )
+ })
+ outputOptions(output, "errorinfo1", suspendWhenHidden = FALSE)
+ ## *** Show uploading data ***
+ output$viewChr <- renderTable(digits=3,{
+ head(data.C,n=3)
+ })
+ output$viewlabelChr <- renderTable(digits=3,{
+ head(data.CN,n=3)
+ })
+ output$chrdat <- reactive({
+ return(!is.null(input$uploadChr))
+ })
+ output$chrlabel <- reactive({
+ return(!is.null(input$uploadChr) && !is.null(data.CN))
+ })
+ outputOptions(output, "chrdat", suspendWhenHidden = FALSE)
+ outputOptions(output, "chrlabel", suspendWhenHidden = FALSE)
lapply(1:length(data.T),function(v){
- viewname <<- paste("viewTrack", trackindx[v],sep="")
- output[[viewname]] <<- renderTable(digits=3,{
- head(data.T[[v]],n=3)
- })
- output[[paste("trackdat",trackindx[v],sep="")]] <- reactive({
- return(ncol(data.T[[v]])==4)
- })
- outputOptions(output, paste("trackdat",trackindx[v],sep=""), suspendWhenHidden = FALSE)
- })
+ viewname <<- paste("viewTrack", trackindx[v],sep="")
+ output[[viewname]] <<- renderTable(digits=3,{
+ head(data.T[[v]],n=3)
+ })
+ viewnamelabel <<- paste("viewlabelTrack", trackindx[v],sep="")
+ output[[viewnamelabel]] <<- renderTable(digits=3,{
+ head(data.N[[v]],n=3)
+ })
+ output[[paste("marklabel",trackindx[v],sep="")]] <- reactive({
+ return(!is.null(data.N[[v]]))
+ })
+ output[[paste("trackdat",trackindx[v],sep="")]] <- reactive({
+ return(ncol(data.T[[v]])==4 | (ncol(data.T[[v]])>=5 && ("color" %in% colnames(data.T[[v]]))) | (ncol(data.T[[v]])>=5 && ("pch" %in% colnames(data.T[[v]]))) | (ncol(data.T[[v]])>=5 && ("cex" %in% colnames(data.T[[v]]))))
+ })
+
+ output[[paste("stackmd",trackindx[v],sep="")]] <- reactive({
+ return(ncol(data.T[[v]])==4 && colnames(data.T[[v]])[4]=="stack")
+ })
+
+ output[[paste("labeldat",trackindx[v],sep="")]] <- reactive({
+ return(!is.null(data.N[[v]]))
+ })
+ outputOptions(output, paste("marklabel",trackindx[v],sep=""), suspendWhenHidden = FALSE)
+ outputOptions(output, paste("trackdat",trackindx[v],sep=""), suspendWhenHidden = FALSE)
+ outputOptions(output, paste("labeldat",trackindx[v],sep=""), suspendWhenHidden = FALSE)
+ outputOptions(output, paste("stackmd",trackindx[v],sep=""), suspendWhenHidden = FALSE)
+ })
output$viewLink <- renderTable(digits=3,{
- head(data.L,n=3)
+ head(data.L,n=3)
+ })
+ })
+ }else{NULL}
})
- })
- } else {NULL}
- })
- observe({
- ## *** Clear button ***
- observe({updateText(x=1,input=input,session=session)})
- observe({updateText(x=2,input=input,session=session)})
- observe({updateText(x=3,input=input,session=session)})
- observe({updateText(x=4,input=input,session=session)})
- observe({updateText(x=5,input=input,session=session)})
- observe({updateText(x=6,input=input,session=session)})
- observe({updateText(x=7,input=input,session=session)})
- observe({updateText(x=8,input=input,session=session)})
- observe({updateText(x=9,input=input,session=session)})
- observe({updateText(x=10,input=input,session=session)})
observe({
- if (input$clearText_buttonLinks == 0) return(NULL)
- isolate({updateTextInput(session, "hltDataLinks", label = ",", value = "")})
- })
- ## *** Plot circos images ***
- observe({
- if (input$submit2>0) {
- isolate({
- ## *** The plot dimensions ***
- heightSize <<- input$myHeight
- widthSize <<- input$myWidth
- addlegend <<- input$seladdlegend
- poslegend <<- input$selposlegend
- legendtext <<- c()
- if(!is.null(data.T)){
- hltregion.List <<- list()
- hltTrack.List <<- list()
- hltdata.List <<- list()
- barBoundary <<- c()
- coldir1Track <<- c()
- coldir2Track <<- c()
- transparencyHlt <<- c()
- colorTrack <<- c()
- colrectTrack <<- c()
- transparencyTrack <<- c()
- rectTrack <<- c()
- rectcolTrack <<- c()
- rectcoldisTrack <<- c()
- borderTrack <<- c()
- directionTrack <<- c()
- colorlineTrack <<- c()
- baselineTrack <<- c()
- midpointTrack <<- c()
- midhmapTrack <<- c()
- colhmapTrack <<- c()
- lineshmapTrack <<- c()
- heightlinesTrack <<- c()
- marginlinesTrack <<- c()
- heightTrack <<- c()
- marginTrack <<- c()
- bgcolTrack <<- c()
- typeTrack <<- c()
- coltypeTk <<- c()
- for(k in 1:length(data.T)){
- data.TT <- data.T[[k]]
- ## *** The highlight regions ***
- assign("hltTrack",input[[paste("highlightTrack",trackindx[k],sep="")]])
- hltTrack.List[[k]] <<- hltTrack
- assign("hltdata",input[[paste("hltData",trackindx[k],sep="")]])
- hltdata.List[[k]] <<- hltdata
- hltregion.List[[k]] <<- ""
- if(nchar(input[[paste("hltData",trackindx[k],sep="")]])==0) {
- }else{
+ ## *** Clear button ***
+ observe({updateText(x=1,input=input,session=session)})
+ observe({updateText(x=2,input=input,session=session)})
+ observe({updateText(x=3,input=input,session=session)})
+ observe({updateText(x=4,input=input,session=session)})
+ observe({updateText(x=5,input=input,session=session)})
+ observe({updateText(x=6,input=input,session=session)})
+ observe({updateText(x=7,input=input,session=session)})
+ observe({updateText(x=8,input=input,session=session)})
+ observe({updateText(x=9,input=input,session=session)})
+ observe({updateText(x=10,input=input,session=session)})
+ observe({
+ if(input$clearText_buttonLinks == 0) return(NULL)
+ isolate({updateTextInput(session, "hltDataLinks", label = ",", value = "")})
+ })
+ ## *** Plot circos images ***
+ observe({
+ if(input$submit2>0){
+ isolate({
+ ## *** The plot dimensions ***
+ heightSize <<- input$myHeight
+ widthSize <<- input$myWidth
+ addlegend <<- input$seladdlegend
+ poslegend <<- input$selposlegend
+ legendtext <<- c()
+ if(!is.null(data.T)){
+ hltregion.List <<- list()
+ hltTrack.List <<- list()
+ hltdata.List <<- list()
+ barBoundary <<- c()
+ coldir1Track <<- c()
+ coldir2Track <<- c()
+ transparencyHlt <<- c()
+ colorTrack <<- c()
+ colrectTrack <<- c()
+ transparencyTrack <<- c()
+ rectTrack <<- c()
+ rectcolTrack <<- c()
+ rectcoldisTrack <<- c()
+ rectcoldiscusTrack <<- c()
+ borderTrack <<- c()
+ gridsborderTrack <<- c()
+ colgridsborderTrack <<- c()
+ directionTrack <<- c()
+ colorlineTrack <<- c()
+ symbolTrack <<- c()
+ pointsizeTrack <<- c()
+ baselineTrack <<- c()
+ colhmapTrack <<- c()
+ lineshmapTrack <<- c()
+ heightlinesTrack <<- c()
+ marginlinesTrack <<- c()
+ heightTrack <<- c()
+ marginTrack <<- c()
+ bgcolTrack <<- c()
+ typeTrack <<- c()
+ coltypeTk <<- c()
+ colorcusTrack <<- c()
+ poslabels <<- c()
+ labeltext <<- c()
+ heightlabels <<- c()
+ marginlabels <<- c()
+ fillareaTrack <<- c()
+ borderareaTrack <<- c()
+ selreaTrack <<- c()
+ for(k in 1:length(data.T)){
+ data.TT <- data.T[[k]]
+ ## *** The highlight regions ***
+ assign("hltTrack",input[[paste("highlightTrack",trackindx[k],sep="")]])
+ hltTrack.List[[k]] <<- hltTrack
+ assign("hltdata",input[[paste("hltData",trackindx[k],sep="")]])
+ hltdata.List[[k]] <<- hltdata
+ hltregion.List[[k]] <<- ""
+ if(nchar(input[[paste("hltData",trackindx[k],sep="")]])>0){
tmp <- matrix(strsplit(hltdata, "\n")[[1]])
myColnames <- c("chr","start","end","color")
data <- matrix(0, length(tmp), length(myColnames))
- colnames(data)<-myColnames
+ colnames(data) <- myColnames
for(p in 1:length(tmp)){
- myRow<-strsplit(tmp[p], ",")[[1]]
- data[p,]<-myRow
- }
+ myRow <- strsplit(tmp[p], ",")[[1]]
+ if(length(myRow)==4){
+ data[p,] <- myRow
+ }
+ }
+ data.ht <- as.data.frame(t(data),stringsAsFactors=F)
+ data.ht1 <- unlist(lapply(data.ht,function(x){
+ all(x==0)
+ })
+ )
+ output$errorinfo2 <- renderPrint({
+ if(input[[paste("uploadtrack",trackindx[k],sep="")]]==2 && input[[paste("highlightTrack",trackindx[k],sep="")]]==1 && nchar(input[[paste("hltData",trackindx[k],sep="")]])>0){
+ validate(
+ need(all(data.ht1==FALSE), paste("Error: Data to highlight regions for Track",trackindx[k]," is not in correct format. Each row of the input data should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color.",sep=""))
+ )
+ }
+ })
+ outputOptions(output, "errorinfo2", suspendWhenHidden = FALSE)
data <- data.frame(data,stringsAsFactors = F)
data$start <- as.numeric(data$start)
data$end <- as.numeric(data$end)
- query <- GRanges(seqnames = data$chr,ranges=IRanges(start=data$start,end=data$end),seqinfo = NULL)
- subj <- GRanges(seqnames = data.TT[,1],ranges=IRanges(start=data.TT[,2],end=data.TT[,3]),seqinfo = NULL)
- indx <- findOverlaps(query,subj)
- indx <- data.frame(indx,stringsAsFactors=F)
- indx$queryHits <- as.numeric(indx$queryHits)
- indx$subjectHits <- as.numeric(indx$subjectHits)
- hltregion <- data.TT[indx$subjectHits,]
- hltregion$color <- data$color[indx[,1]]
- hltregion$id <- paste(hltregion[,1],hltregion[,2],hltregion[,3],sep="")
- hltregion.List[[k]] <<- hltregion
- }
-
- barBoundary <<- c(barBoundary,input[[paste("barBoundary",trackindx[k],sep="")]])
- coldir1Track <<- c(coldir1Track,input[[paste("coldir1Track",trackindx[k],sep="")]])
- coldir2Track <<- c(coldir2Track,input[[paste("coldir2Track",trackindx[k],sep="")]])
- transparencyHlt <<- c(transparencyHlt,input[[paste("transparencyHlt",trackindx[k],sep="")]])
- colorTrack <<- c(colorTrack,input[[paste("colorTrack",trackindx[k],sep="")]])
- colrectTrack <<- c(colrectTrack,input[[paste("colrectTrack",trackindx[k],sep="")]])
- transparencyTrack <<- c(transparencyTrack,input[[paste("transparencyTrack",trackindx[k],sep="")]])
- rectTrack <<- c(rectTrack,input[[paste("rectTrack",trackindx[k],sep="")]])
- rectcolTrack <<- c(rectcolTrack,input[[paste("rectcolTrack",trackindx[k],sep="")]])
- rectcoldisTrack <<- c(rectcoldisTrack,input[[paste("rectcoldisTrack",trackindx[k],sep="")]])
- borderTrack <<- c(borderTrack,input[[paste("borderTrack",trackindx[k],sep="")]])
- directionTrack <<- c(directionTrack,input[[paste("directionTrack",trackindx[k],sep="")]])
- colorlineTrack <<- c(colorlineTrack,input[[paste("colorlineTrack",trackindx[k],sep="")]])
- baselineTrack <<- c(baselineTrack,input[[paste("baselineTrack",trackindx[k],sep="")]])
- midpointTrack <<- c(midpointTrack,input[[paste("midpointTrack",trackindx[k],sep="")]])
- midhmapTrack <<- c(midhmapTrack,input[[paste("midhmapTrack",trackindx[k],sep="")]])
- colhmapTrack <<- c(colhmapTrack,input[[paste("colhmapTrack",trackindx[k],sep="")]])
- lineshmapTrack <<- c(lineshmapTrack,input[[paste("lineshmapTrack",trackindx[k],sep="")]])
- heightlinesTrack <<- c(heightlinesTrack,input[[paste("heightlinesTrack",trackindx[k],sep="")]])
- marginlinesTrack <<- c(marginlinesTrack,input[[paste("marginlinesTrack",trackindx[k],sep="")]])
- heightTrack <<- c(heightTrack,input[[paste("heightTrack",trackindx[k],sep="")]])
- marginTrack <<- c(marginTrack,input[[paste("marginTrack",trackindx[k],sep="")]])
- bgcolTrack <<- c(bgcolTrack,input[[paste("bgcolTrack",trackindx[k],sep="")]])
- typeTrack <<- c(typeTrack,input[[paste("typeTrack",trackindx[k],sep="")]])
- coltypeTk <<- c(coltypeTk,input[[paste("coltypeTrack",trackindx[k],sep="")]])
- legendtext <<- c(legendtext,input[[paste("text",trackindx[k],sep="")]])
- }
- }
- transparencyhltLinks <<- input$transparencyhltLinks
- transparencyLinks <<- input$transparencyLinks
- selcolorLinks <<- input$selcolorLinks
- colorLinks <<- input$colorLinks
- linksTrack <<- input$linksTrack
- marginLinks <<- input$marginLinks
- cexAxis <<- input$cexAxis
- cexAxislabel <<- input$cexAxislabel
- unitChr <<- input$unitChr
- labelChr <<- input$labelChr
- fontsizeChr <<- input$fontsizeChr
- trackChr <<- input$trackChr
- datatypeChr <<- input$datatypeChr
- if (input$linksTrack) {
- legendtext <<- c(legendtext,input$text11)
- }
- if (datatypeChr=="general" && trackChr!="track"){
- legendtext <<- legendtext
- }else{
- legendtext <<- c(input$text0,legendtext)
- }
- legendtext <<- legendtext[nchar(legendtext)>0]
- colorChr <<- gsub("\\s","",strsplit(input$colorChr,",")[[1]])
- gap.width <<- gsub("\\s","",strsplit(input$gapChr,",")[[1]])
- plotfigg(input = input, output = output, trackindx = trackindx, data.L = data.L, data.L1 = data.L1, data.L2 = data.L2, data.C = data.C, barBoundary = barBoundary, coldir1Track = coldir1Track,
- coldir2Track = coldir2Track, data.T = data.T, hltTrack.List = hltTrack.List, hltdata.List = hltdata.List, heightSize = heightSize, widthSize = widthSize, addlegend = addlegend, poslegend = poslegend, colorChr = colorChr,
- gap.width = gap.width, legendtext = legendtext, cexAxis = cexAxis, cexAxislabel = cexAxislabel, unitChr = unitChr, labelChr = labelChr, fontsizeChr = fontsizeChr, colorTrack = colorTrack, transparencyHlt = transparencyHlt,
- trackChr = trackChr, datatypeChr = datatypeChr, transparencyhltLinks = transparencyhltLinks, transparencyTrack = transparencyTrack, transparencyLinks = transparencyLinks,
- colorLinks = colorLinks, linksTrack = linksTrack, typeTrack = typeTrack, coltypeTk = coltypeTk, marginLinks = marginLinks, selcolorLinks = selcolorLinks, colrectTrack = colrectTrack,
- rectTrack = rectTrack, rectcolTrack = rectcolTrack, rectcoldisTrack = rectcoldisTrack, borderTrack = borderTrack, directionTrack = directionTrack, colorlineTrack = colorlineTrack, baselineTrack = baselineTrack, midpointTrack = midpointTrack, midhmapTrack = midhmapTrack, colhmapTrack = colhmapTrack, lineshmapTrack = lineshmapTrack, heightlinesTrack = heightlinesTrack, marginlinesTrack = marginlinesTrack, heightTrack = heightTrack, marginTrack = marginTrack , bgcolTrack = bgcolTrack)
- })
- } else {NULL}
- })
- ## *** Download PDF file ***
- output$downloadPlotPDF <- downloadHandler(
- filename <- function() { paste('shinyCircos.pdf') },
- content <- function(file) {
- pdf(file, width = input$myWidth/72, height = input$myHeight/72)
- legendtext <<- c()
- for(k in 1:10){
- legendtext <<- c(legendtext,input[[paste("text",k,sep="")]])
- }
- if (input$linksTrack) {
- legendtext <<- c(legendtext,input$text11)
- }
- if (input$datatypeChr=="general" && input$trackChr!="track"){
- legendtext <<- legendtext
- }else{
- legendtext <<- c(input$text0,legendtext)
- }
- legendtext <<- legendtext[nchar(legendtext)>0]
- if (fontsizeChr=="custom"){
- if (length(legendtext)!=0 && input$seladdlegend==1 && input$selposlegend==1){
- par(oma=c(0,0,0,0),mar = c(5,0.2,5,9.8),xpd=TRUE)
- }else{
- par(mar = c(0.6,0.6,0.6,0.6))
- }
- }else{
- if (length(legendtext)!=0 && input$seladdlegend==1 && input$selposlegend==1){
- par(oma=c(0,0,0,0),mar = c(5,0.2,5,9.8),xpd=TRUE,cex=as.numeric(input$fontsizeChr)-0.05)
- }else{
- par(mar = c(0.6,0.6,0.6,0.6),cex=as.numeric(input$fontsizeChr)-0.05)
- }
- }
- plotfig(input = input, trackindx = trackindx, data.L = data.L, data.L1 = data.L1, data.L2 = data.L2, data.C = data.C, data.T = data.T, hltTrack.List = hltTrack.List, hltdata.List = hltdata.List, legendtext = legendtext)
- dev.off()
- }, contentType = 'application/pdf')
- ## *** Download SVG file ***
- output$downloadPlotSVG <- downloadHandler(
- filename <- function() { paste('shinyCircos.svg') },
- content <- function(file) {
- svg(file, width = input$myWidth/72, height = input$myHeight/72)
- legendtext <<- c()
- for(k in 1:10){
- legendtext <<- c(legendtext,input[[paste("text",k,sep="")]])
- }
- if (input$linksTrack) {
- legendtext <<- c(legendtext,input$text11)
- }
- if (input$datatypeChr=="general" && input$trackChr!="track"){
- legendtext <<- legendtext
- }else{
- legendtext <<- c(input$text0,legendtext)
- }
- legendtext <<- legendtext[nchar(legendtext)>0]
- if (fontsizeChr=="custom"){
- if (length(legendtext)!=0 && input$seladdlegend==1 && input$selposlegend==1){
- par(oma=c(0,0,0,0),mar = c(5,0.2,5,9.8),xpd=TRUE)
- }else{
- par(mar = c(0.6,0.6,0.6,0.6))
- }
- }else{
- if (length(legendtext)!=0 && input$seladdlegend==1 && input$selposlegend==1){
- par(oma=c(0,0,0,0),mar = c(5,0.2,5,9.8),xpd=TRUE,cex=as.numeric(input$fontsizeChr)-0.05)
- }else{
- par(mar = c(0.6,0.6,0.6,0.6),cex=as.numeric(input$fontsizeChr)-0.05)
- }
- }
- plotfig(input = input, trackindx = trackindx, data.L = data.L, data.L1 = data.L1, data.L2 = data.L2, data.C = data.C, data.T = data.T, hltTrack.List = hltTrack.List, hltdata.List = hltdata.List, legendtext = legendtext)
- dev.off()
- }, contentType = 'image/svg')
- ## *** Download sample data in csv format ***
- output$general.csv <- downloadfile("general.csv")
- output$cytoband.csv <- downloadfile("cytoband.csv")
- output$track1.csv <- downloadfile("track1.csv")
- output$track2.csv <- downloadfile("track2.csv")
- output$track3.csv <- downloadfile("track3.csv")
- output$track4.csv <- downloadfile("track4.csv")
- output$track5.csv <- downloadfile("track5.csv")
- output$track6.csv <- downloadfile("track6.csv")
- output$track7.csv <- downloadfile("track7.csv")
- output$track8.csv <- downloadfile("track8.csv")
- output$track9.csv <- downloadfile("track9.csv")
- output$track10.csv <- downloadfile("track10.csv")
- output$links.csv <- downloadfile("links.csv")
-})
+ query <- GRanges(seqnames = data$chr,ranges=IRanges(start=data$start,end=data$end),seqinfo = NULL)
+ subj <- GRanges(seqnames = data.TT[,1],ranges=IRanges(start=data.TT[,2],end=data.TT[,3]),seqinfo = NULL)
+ indx <- findOverlaps(query,subj)
+ indx <- data.frame(indx,stringsAsFactors=F)
+ indx$queryHits <- as.numeric(indx$queryHits)
+ indx$subjectHits <- as.numeric(indx$subjectHits)
+ hltregion <- data.TT[indx$subjectHits,]
+ hltregion$color <- data$color[indx[,1]]
+ hltregion$id <- paste(hltregion[,1],hltregion[,2],hltregion[,3],sep="")
+ hltregion.List[[k]] <<- hltregion
+ }
+ barBoundary <<- c(barBoundary,input[[paste("barBoundary",trackindx[k],sep="")]])
+ coldir1Track <<- c(coldir1Track,input[[paste("coldir1Track",trackindx[k],sep="")]])
+ coldir2Track <<- c(coldir2Track,input[[paste("coldir2Track",trackindx[k],sep="")]])
+ transparencyHlt <<- c(transparencyHlt,input[[paste("transparencyHlt",trackindx[k],sep="")]])
+ colorTrack <<- c(colorTrack,input[[paste("colorTrack",trackindx[k],sep="")]])
+ colrectTrack <<- c(colrectTrack,input[[paste("colrectTrack",trackindx[k],sep="")]])
+ transparencyTrack <<- c(transparencyTrack,input[[paste("transparencyTrack",trackindx[k],sep="")]])
+ rectTrack <<- c(rectTrack,input[[paste("rectTrack",trackindx[k],sep="")]])
+ rectcolTrack <<- c(rectcolTrack,input[[paste("rectcolTrack",trackindx[k],sep="")]])
+ rectcoldisTrack <<- c(rectcoldisTrack,input[[paste("rectcoldisTrack",trackindx[k],sep="")]])
+ rectcoldiscusTrack <<- c(rectcoldiscusTrack,input[[paste("rectcoldiscusTrack",trackindx[k],sep="")]])
+ borderTrack <<- c(borderTrack,input[[paste("borderTrack",trackindx[k],sep="")]])
+ gridsborderTrack <<- c(gridsborderTrack,input[[paste("gridsborderTrack",trackindx[k],sep="")]])
+ colgridsborderTrack <<- c(colgridsborderTrack,input[[paste("colgridsborderTrack",trackindx[k],sep="")]])
+ directionTrack <<- c(directionTrack,input[[paste("directionTrack",trackindx[k],sep="")]])
+ colorlineTrack <<- c(colorlineTrack,input[[paste("colorlineTrack",trackindx[k],sep="")]])
+ symbolTrack <<- c(symbolTrack,input[[paste("symbolTrack",trackindx[k],sep="")]])
+ pointsizeTrack <<- c(pointsizeTrack,input[[paste("pointsizeTrack",trackindx[k],sep="")]])
+ baselineTrack <<- c(baselineTrack,input[[paste("baselineTrack",trackindx[k],sep="")]])
+ colhmapTrack <<- c(colhmapTrack,input[[paste("colhmapTrack",trackindx[k],sep="")]])
+ lineshmapTrack <<- c(lineshmapTrack,input[[paste("lineshmapTrack",trackindx[k],sep="")]])
+ heightlinesTrack <<- c(heightlinesTrack,input[[paste("heightlinesTrack",trackindx[k],sep="")]])
+ marginlinesTrack <<- c(marginlinesTrack,input[[paste("marginlinesTrack",trackindx[k],sep="")]])
+ heightTrack <<- c(heightTrack,input[[paste("heightTrack",trackindx[k],sep="")]])
+ marginTrack <<- c(marginTrack,input[[paste("marginTrack",trackindx[k],sep="")]])
+ bgcolTrack <<- c(bgcolTrack,input[[paste("bgcolTrack",trackindx[k],sep="")]])
+ typeTrack <<- c(typeTrack,input[[paste("typeTrack",trackindx[k],sep="")]])
+ coltypeTk <<- c(coltypeTk,input[[paste("coltypeTrack",trackindx[k],sep="")]])
+ colorcusTrack <<- c(colorcusTrack,input[[paste("colorcusTrack",trackindx[k],sep="")]])
+ labeltext <<- c(labeltext,input[[paste("labels",trackindx[k],sep="")]])
+ poslabels <<- c(poslabels,input[[paste("poslabels",trackindx[k],sep="")]])
+ heightlabels <<- c(heightlabels,input[[paste("heightlabels",trackindx[k],sep="")]])
+ marginlabels <<- c(marginlabels,input[[paste("marginlabels",trackindx[k],sep="")]])
+ fillareaTrack <<- c(fillareaTrack,input[[paste("fillareaTrack",trackindx[k],sep="")]])
+ borderareaTrack <<- c(borderareaTrack,input[[paste("borderareaTrack",trackindx[k],sep="")]])
+ selreaTrack <<- c(selreaTrack,input[[paste("selreaTrack",trackindx[k],sep="")]])
+ legendtext <<- c(legendtext,input[[paste("text",trackindx[k],sep="")]])
+ }
+ }
+ labeltextchr <<- input$labels0
+ poslabelschr <<- input$poslabels0
+ heightlabelschr <<- input$heightlabels0
+ marginlabelschr <<- input$marginlabels0
+ transparencyhltLinks <<- input$transparencyhltLinks
+ transparencyLinks <<- input$transparencyLinks
+ selcolorLinks <<- input$selcolorLinks
+ colorLinks <<- input$colorLinks
+ linksTrack <<- input$linksTrack
+ marginLinks <<- input$marginLinks
+ cexlabel <<- input$cexlabel
+ unitChr <<- input$unitChr
+ labelChr <<- input$labelChr
+ fontsize <<- input$fontsize
+ trackChr <<- input$trackChr
+ datatypeChr <<- input$datatypeChr
+ if(input$linksTrack) {
+ legendtext <<- c(legendtext,input$text11)
+ }
+ if(datatypeChr=="general" && trackChr!="track"){
+ legendtext <<- legendtext
+ }else{
+ legendtext <<- c(input$text0,legendtext)
+ }
+ legendtext <<- legendtext[nchar(legendtext)>0]
+ colorChr <<- gsub("\\s","",strsplit(input$colorChr,",")[[1]])
+ gap.width <<- gsub("\\s","",strsplit(input$gapChr,",")[[1]])
+ plotfig(input = input, output = output, trackindx = trackindx, data.L = data.L, data.L1 = data.L1, data.L2 = data.L2, data.C = data.C, barBoundary = barBoundary, coldir1Track = coldir1Track,
+ coldir2Track = coldir2Track, data.T = data.T, data.N = data.N, data.CN = data.CN, hltTrack.List = hltTrack.List, hltdata.List = hltdata.List, heightSize = heightSize, widthSize = widthSize, addlegend = addlegend, poslegend = poslegend, colorChr = colorChr,
+ gap.width = gap.width, legendtext = legendtext, labeltext = labeltext, poslabels = poslabels, heightlabels = heightlabels, marginlabels = marginlabels, fillareaTrack = fillareaTrack, cexlabel = cexlabel, unitChr = unitChr, labelChr = labelChr, fontsize = fontsize, colorTrack = colorTrack, borderareaTrack = borderareaTrack, selreaTrack = selreaTrack, transparencyHlt = transparencyHlt,
+ trackChr = trackChr, datatypeChr = datatypeChr, labeltextchr = labeltextchr, heightlabelschr = heightlabelschr, marginlabelschr = marginlabelschr, poslabelschr = poslabelschr, transparencyhltLinks = transparencyhltLinks, transparencyTrack = transparencyTrack, transparencyLinks = transparencyLinks,
+ colorLinks = colorLinks, linksTrack = linksTrack, typeTrack = typeTrack, coltypeTk = coltypeTk, colorcusTrack = colorcusTrack, marginLinks = marginLinks, selcolorLinks = selcolorLinks, colrectTrack = colrectTrack, rectTrack = rectTrack, rectcolTrack = rectcolTrack, rectcoldisTrack = rectcoldisTrack, rectcoldiscusTrack = rectcoldiscusTrack,
+ borderTrack = borderTrack, gridsborderTrack = gridsborderTrack, colgridsborderTrack = colgridsborderTrack, directionTrack = directionTrack, colorlineTrack = colorlineTrack, symbolTrack = symbolTrack, pointsizeTrack = pointsizeTrack, baselineTrack = baselineTrack, colhmapTrack = colhmapTrack, lineshmapTrack = lineshmapTrack, heightlinesTrack = heightlinesTrack, marginlinesTrack = marginlinesTrack, heightTrack = heightTrack, marginTrack = marginTrack , bgcolTrack = bgcolTrack)
+ })
+ }else{NULL}
+ })
+ ## *** Download PDF file ***
+ output$downloadPlotPDF <- downloadHandler(
+ filename <- function(){ paste('shinyCircos.pdf') },
+ content <- function(file){
+ pdf(file, width = input$myWidth/72, height = input$myHeight/72)
+ print(figurecp)
+ dev.off()
+ }, contentType = 'application/pdf')
+ ## *** Download SVG file ***
+ output$downloadPlotSVG <- downloadHandler(
+ filename <- function(){ paste('shinyCircos.svg') },
+ content <- function(file){
+ svg(file, width = input$myWidth/72, height = input$myHeight/72)
+ print(figurecp)
+ dev.off()
+ }, contentType = 'image/svg')
+ ## *** Download Source code file ***
+ output$downloadCode <- downloadHandler(
+ filename <- function() { paste('script.R') },
+ content <- function(file) {
+ source("writeCmd.R")
+ file.remove("script.R")
+ writeLines(out,con=file)
+ }, contentType = NULL)
+ ## *** Download help manual ***
+ output$downloadHelpPDF <- downloadHandler(
+ filename <- function() { paste("shinyCircos_Help_Manual.pdf") },
+ content <- function(file) {
+ file.copy("www/shinyCircos_Help_Manual.pdf", file)
+ },contentType = "application/pdf"
+ )
+ ## *** Download sample data in csv format ***
+ output$chromosome_general.csv <- downloadfile("example_data/chromosome_general.csv")
+ output$chromosome_cytoband.csv <- downloadfile("example_data/chromosome_cytoband.csv")
+ output$point.csv <- downloadfile("example_data/point.csv")
+ output$line.csv <- downloadfile("example_data/line.csv")
+ output$barplot.csv <- downloadfile("example_data/barplot.csv")
+ output$heatmap.csv <- downloadfile("example_data/heatmap.csv")
+ output$chromosome_ideogram.csv <- downloadfile("example_data/chromosome_ideogram.csv")
+ output$rect_discrete.csv <- downloadfile("example_data/rect_discrete.csv")
+ output$point_multicolumn.csv <- downloadfile("example_data/point_multicolumn.csv")
+ output$barplot_bidirectional.csv <- downloadfile("example_data/barplot_bidirectional.csv")
+ output$rect_gradual.csv <- downloadfile("example_data/rect_gradual.csv")
+ output$line_multicolumn.csv <- downloadfile("example_data/line_multicolumn.csv")
+ output$line_color.csv <- downloadfile("example_data/line_color.csv")
+ output$barplot_color.csv <- downloadfile("example_data/barplot_color.csv")
+ output$point_color.csv <- downloadfile("example_data/point_color.csv")
+ output$point_pch.csv <- downloadfile("example_data/point_pch.csv")
+ output$point_color_pch.csv <- downloadfile("example_data/point_color_pch.csv")
+ output$point_cex.csv <- downloadfile("example_data/point_cex.csv")
+ output$point_pch_cex.csv <- downloadfile("example_data/point_pch_cex.csv")
+ output$point_color_cex.csv <- downloadfile("example_data/point_color_cex.csv")
+ output$point_color_pch_cex.csv <- downloadfile("example_data/point_color_pch_cex.csv")
+ output$gene_label.csv <- downloadfile("example_data/gene_label.csv")
+ output$stack_point.csv <- downloadfile("example_data/stack_point.csv")
+ output$stack_line.csv <- downloadfile("example_data/stack_line.csv")
+ output$links.csv <- downloadfile("example_data/links.csv")
+ output$links_color.csv <- downloadfile("example_data/links_color.csv")
+ })
})
diff --git a/track3.csv b/track3.csv
deleted file mode 100644
index 8bba59f..0000000
--- a/track3.csv
+++ /dev/null
@@ -1,326 +0,0 @@
-chr,start,end,value1
-chr1,1530625,1615014,0.599
-chr1,1975953,10164848,0.092
-chr1,14397545,28418386,-1.197
-chr1,28946904,29181009,-0.548
-chr1,36243868,39775415,-0.346
-chr1,40224273,40977769,-0.062
-chr1,55790133,56464186,0.681
-chr1,63783690,64125912,1.147
-chr1,65817533,70804110,0.063
-chr1,71495083,71868262,0.136
-chr1,79232302,80710387,-0.204
-chr1,81008118,93474357,0.956
-chr1,106948806,109407368,-0.256
-chr1,109651617,115452304,-0.511
-chr1,133864521,135778382,-0.61
-chr1,147361589,148760469,0.636
-chr1,152848602,157080295,0.018
-chr1,160688536,160690671,-0.096
-chr1,163174502,164525896,-0.007
-chr1,169671363,183947412,0.627
-chr1,202107821,203164904,-0.136
-chr1,205267578,206396932,0.487
-chr1,221071687,226946704,0.827
-chr1,228138413,234457960,-1.027
-chr1,234479175,236620441,-0.274
-chr1,241656444,248256587,-1.068
-chr2,14975574,27835978,-0.747
-chr2,31219120,42007140,-0.042
-chr2,44745678,46270825,0.087
-chr2,47725633,54074104,-0.479
-chr2,63834703,67622617,0.167
-chr2,78397997,78681159,-0.299
-chr2,80289953,82468594,0.116
-chr2,84679427,92632847,0.009
-chr2,96394639,97334579,-0.35
-chr2,101089519,101936359,-0.547
-chr2,111231027,113816514,-0.234
-chr2,120927487,127261795,-0.483
-chr2,129299122,135083977,0.13
-chr2,135286278,137879278,-0.078
-chr2,139662880,156939993,0.139
-chr2,157389368,163953338,0.071
-chr2,164399273,165062231,0.59
-chr2,182040596,195318257,-0.283
-chr2,196516021,199030706,0.069
-chr2,200380314,201283303,0.262
-chr2,203696410,207664037,-0.486
-chr2,214054917,218711319,-0.51
-chr2,219481368,219936402,0.618
-chr2,223165446,225688039,-0.382
-chr2,236715384,239491933,0.759
-chr3,10042169,12452990,0.1
-chr3,22152383,26776092,-0.592
-chr3,34991529,37787259,0.425
-chr3,38735037,63013939,-0.351
-chr3,65606292,66705661,0.22
-chr3,67498036,68940349,-1.133
-chr3,70072551,80854480,0.219
-chr3,84164350,87736215,0.074
-chr3,88224931,92585421,-0.5
-chr3,93591721,97457279,-0.599
-chr3,97723636,103529164,0.173
-chr3,103782729,111757324,0.123
-chr3,117044420,121311245,-0.695
-chr3,123078342,128912985,0.197
-chr3,141850690,149997134,0.57
-chr3,150203291,152165614,-0.619
-chr3,155229805,155424161,0.336
-chr3,155716358,156408582,0.38
-chr3,166832836,171115305,-0.045
-chr3,174673391,178388455,0.137
-chr3,180273398,191392805,-0.885
-chr4,2622433,8414463,1.415
-chr4,23372058,33039851,-0.301
-chr4,34357305,34785070,0.043
-chr4,40508456,46975887,0.142
-chr4,53955058,54037889,0.545
-chr4,55925154,56603934,0.406
-chr4,59854315,60541393,0.298
-chr4,63118956,67784486,-1.041
-chr4,70883640,80631322,0.002
-chr4,84005280,91834728,-0.224
-chr4,109199227,111338361,-0.408
-chr4,112364080,115563223,-0.129
-chr4,115990879,121535005,-1.111
-chr4,124170610,128262050,-0.654
-chr4,133345207,137648674,0.479
-chr4,137875260,144852973,-0.486
-chr4,146680085,150696107,0.307
-chr4,154031314,162651779,0.114
-chr4,164481908,174905139,-0.392
-chr4,180467664,191024986,0.37
-chr5,4808948,9674791,-0.171
-chr5,12337602,16945142,1.002
-chr5,24052474,24503628,0.252
-chr5,39996935,42504404,-0.407
-chr5,43906970,55170161,-0.306
-chr5,58129421,67191132,0.255
-chr5,68510427,77390370,-0.421
-chr5,82858377,98806842,-0.688
-chr5,101936181,111297066,-0.804
-chr5,116777652,123352862,1.438
-chr5,128500815,133594704,-0.13
-chr5,133749094,137526549,0.321
-chr5,143986884,146502212,0.13
-chr5,146901825,147876246,-0.417
-chr5,147948218,148416353,0.574
-chr5,155562255,165017377,0.322
-chr5,168765743,168957126,0.383
-chr5,170880265,172966744,-0.128
-chr5,175527507,176855057,-0.791
-chr6,2981705,3105877,-0.28
-chr6,3822579,20204974,0.606
-chr6,22338464,29071137,-0.153
-chr6,34536562,35861492,-0.066
-chr6,43223864,43292983,0.09
-chr6,61072537,62379500,-1.222
-chr6,63277165,63461012,-0.131
-chr6,66351799,83763094,-0.145
-chr6,84141521,85783384,-0.439
-chr6,87787441,90276774,0.568
-chr6,91831695,95545770,-0.123
-chr6,96358058,96958818,0.154
-chr6,101278250,109949858,0.679
-chr6,111526157,128889314,0.014
-chr6,130904536,135305159,-0.223
-chr6,137710130,138501628,-0.523
-chr6,147768896,149736259,0.375
-chr6,168926891,170491639,-0.556
-chr7,6288864,6658014,0.776
-chr7,11944604,32317861,0.1
-chr7,33528123,35078798,-0.712
-chr7,38267689,39884831,-0.303
-chr7,41187983,47658532,0.558
-chr7,49457567,51797526,-0.889
-chr7,63431184,63613372,-0.089
-chr7,66426484,66668540,-0.877
-chr7,72234811,75077190,-0.772
-chr7,75761315,79181739,-0.09
-chr7,80356761,81947330,-0.437
-chr7,108025068,111448026,-0.52
-chr7,117456780,119650068,-0.587
-chr7,121339575,123104411,-1.017
-chr7,136157031,137505210,-0.241
-chr7,141180125,149378895,0.162
-chr7,153539259,158941465,-0.852
-chr8,13153271,25441363,-0.256
-chr8,26624178,34025166,-0.41
-chr8,38902664,40137145,-0.017
-chr8,42694002,44772339,0.428
-chr8,47473395,53649946,0.891
-chr8,56744318,58866396,-0.23
-chr8,61398723,61511848,0.172
-chr8,71116703,79277275,0.438
-chr8,84117063,85204552,-0.567
-chr8,101077560,109640568,0.296
-chr8,113258816,113742531,0.377
-chr8,120948509,122209294,-0.611
-chr8,123832296,127724768,1.051
-chr8,131747360,133429966,-0.373
-chr8,139147151,145997480,0.404
-chr9,2545784,7816746,0.85
-chr9,8703503,11269173,-0.663
-chr9,14138723,17347480,-0.422
-chr9,31472122,32208148,-0.373
-chr9,37996275,41675725,0.482
-chr9,45269890,49236225,-0.344
-chr9,52617748,54672381,0.424
-chr9,66813414,76565784,-0.527
-chr9,86490810,88232671,0.414
-chr9,89582662,103750515,-0.234
-chr9,108139319,121092838,-0.191
-chr9,122663082,126041178,-0.362
-chr9,128209318,128760244,0.309
-chr9,129469489,132754741,0.531
-chr9,134573717,135482450,0.189
-chr10,468612,6347105,0.027
-chr10,7756430,12820545,-1.103
-chr10,19110653,20423859,0.235
-chr10,33192136,55328525,0.849
-chr10,56590275,60959637,0.855
-chr10,63052138,65785521,0.042
-chr10,66011683,70873811,-0.883
-chr10,73635967,81150084,1.014
-chr10,87609976,88190038,-0.488
-chr10,88624366,92933336,0.215
-chr10,93093398,93890848,-0.229
-chr10,106009052,109715229,0.5
-chr10,119499050,124214989,-0.182
-chr10,125000010,129022045,0.373
-chr11,1250214,2469257,0.289
-chr11,22575178,33280297,-0.659
-chr11,34786143,35152437,0.347
-chr11,36929169,39097091,0.32
-chr11,39234406,39617569,-0.308
-chr11,54096553,62410879,0.556
-chr11,62626424,72384002,0.302
-chr11,84176917,87081973,0.167
-chr11,87656267,94214553,0.582
-chr11,103760799,108832952,0.219
-chr11,109270674,110805066,-0.621
-chr11,112276475,115176591,1.383
-chr11,127865366,128247303,0.506
-chr11,129345402,133602910,-0.072
-chr12,1937674,2285289,0.057
-chr12,2616017,8440399,0.13
-chr12,32931429,34668181,-0.134
-chr12,34728631,35766810,0.66
-chr12,41605155,42814968,-0.361
-chr12,47110717,48870766,0.107
-chr12,65314105,66165488,-0.335
-chr12,70954792,71642976,0.087
-chr12,80875139,87035281,-0.321
-chr12,95518480,96942645,0.529
-chr12,112285910,120548081,0.323
-chr12,122799909,123339562,-0.052
-chr12,124603289,126821034,0.469
-chr12,129083515,132885048,0.594
-chr13,16427538,36582590,0.303
-chr13,37084433,38772226,-0.522
-chr13,44753537,46725939,0.538
-chr13,51611852,51872797,0.121
-chr13,52446697,58243306,0.656
-chr13,61843234,64818895,-0.05
-chr13,65675210,70333120,-0.37
-chr13,76585919,80168295,-0.249
-chr13,85425749,91458007,-1.004
-chr13,92376407,95894325,1.032
-chr13,103104209,111168841,0.301
-chr13,112199207,112507190,-0.21
-chr14,12189800,13776059,-0.278
-chr14,16643500,23358664,-0.906
-chr14,25606371,31953306,-0.646
-chr14,36107566,36516452,0.271
-chr14,44662476,44680304,-0.06
-chr14,45828711,56157442,-0.513
-chr14,57630894,57882679,0.428
-chr14,69085326,77260770,-0.423
-chr14,84058950,84423003,-0.231
-chr14,90039400,98144530,-0.027
-chr14,100274230,104639782,-0.217
-chr15,5700029,10103057,-0.298
-chr15,21752306,24754895,-0.059
-chr15,25018275,41941120,0.071
-chr15,42486450,48490338,-0.376
-chr15,50342474,62192027,0.173
-chr15,64207821,66680312,0.46
-chr15,67866393,71304546,0.694
-chr15,73912370,73932382,0.143
-chr15,77346872,88965224,0.198
-chr15,94060616,94583733,-0.131
-chr15,95767601,101052153,-0.39
-chr16,1405915,4256104,0.023
-chr16,11331183,13516058,0.029
-chr16,20906126,29760006,0.719
-chr16,39822128,40132766,-0.581
-chr16,40403266,45616919,-0.859
-chr16,48686946,62196493,-0.436
-chr16,67571361,70562944,-0.503
-chr16,71079382,81813854,0.107
-chr16,82564405,83081725,0.227
-chr16,86940543,87527329,0.301
-chr17,2825055,12234500,0.871
-chr17,15985080,16756009,-0.74
-chr17,18680285,20947446,0.67
-chr17,21717570,22261522,0.119
-chr17,24557084,40167062,0.119
-chr17,42015617,42370795,0.49
-chr17,47886628,57275530,-0.121
-chr17,60014352,62178314,0.64
-chr17,74001866,80867558,-0.336
-chr18,2847516,3657261,-0.008
-chr18,11041903,15492200,0.301
-chr18,27366252,31957480,-0.376
-chr18,36246209,36267313,0.029
-chr18,39891316,41117820,0.085
-chr18,46406574,53527028,0.399
-chr18,59923942,64455326,-0.492
-chr18,69234562,76116266,-1.008
-chr19,1513167,6851185,0.259
-chr19,25725496,26241684,-0.343
-chr19,26703564,34342877,0.818
-chr19,40182821,43542524,-0.751
-chr19,50115408,54580858,0.321
-chr19,54986448,58053180,-0.461
-chr20,45569,4890495,0.826
-chr20,7251022,9807552,-0.486
-chr20,10730764,12812120,0.058
-chr20,16797537,17452530,0.144
-chr20,25551429,40773669,-1.026
-chr20,48758791,51292910,0.016
-chr20,56500385,59515942,0.109
-chr21,1421218,2022920,0.865
-chr21,4888685,19465811,-0.135
-chr21,19658507,23315509,0.05
-chr21,24123722,25220181,0.158
-chr21,34761474,46604273,0.69
-chr22,4627631,5421606,-0.735
-chr22,5461383,7992542,-0.028
-chr22,13103620,23950076,-0.652
-chr22,30822418,33818693,-0.095
-chr22,40641420,42936841,-0.039
-chr22,49131238,50241948,-0.127
-chrX,3107646,3395850,-1.395
-chrX,4650078,8290095,-0.148
-chrX,12526596,15095804,0.505
-chrX,19280255,21561415,-0.499
-chrX,24775305,26001005,-0.487
-chrX,30492184,36017857,-0.16
-chrX,54576030,56143085,0.672
-chrX,60001799,63826272,-0.484
-chrX,71928650,77237766,-0.137
-chrX,91851020,92450742,0.275
-chrX,98610837,99524692,-0.145
-chrX,103516208,105843141,-0.637
-chrX,113956771,117517767,-0.4
-chrX,127716254,140320808,-0.423
-chrX,144863533,149082126,-0.025
-chrX,150454288,154380493,0.3
-chrY,2280735,8338220,0.474
-chrY,9427960,10299471,0.066
-chrY,16023969,25314723,0.321
-chrY,30596970,37382237,0.155
-chrY,41107900,44469982,-0.552
-chrY,45408894,51456477,-0.237
diff --git a/track4.csv b/track4.csv
deleted file mode 100644
index 83a9019..0000000
--- a/track4.csv
+++ /dev/null
@@ -1,138 +0,0 @@
-chr,start,end,value1,value2,value3,value4,value5,value6,value7,value8,value9,value10
-chr1,20621957,21209624,-0.671800618198464,-0.271105431620562,-0.00113925114153135,0.486016900180926,-0.986271796458396,-0.369608019003216,0.480407503515668,0.379621831890626,0.158064890139144,0.108149559900196
-chr1,42967726,53028972,-0.147400427400537,0.386625614058436,1.33237305623552,0.181654925355514,0.160027690392892,-0.13166788181563,0.233851913431589,-0.0888752925632234,-0.918176368261254,0.396800440965777
-chr1,58915991,65942365,-0.214273339366097,-0.0586205225499199,-0.33187673185315,0.65447897421945,-0.402387952101877,-0.952931029841343,-0.0460755619997624,0.448723711487375,-0.614739758939187,-0.0697324403614744
-chr1,67474486,70468059,-0.314037019229111,-0.670134603068103,0.239651477299582,-0.221345836853622,0.582296113505351,-0.53640352635944,-0.437509418693644,0.152537469116272,-0.140456509097449,0.242007364947179
-chr1,70834716,93392812,0.371744842400809,-0.812017291456245,0.129078761528658,0.086885114605866,-1.30664219122693,0.845707331575508,-1.06150659815649,-0.652766677857242,0.345170878852616,0.314874264774893
-chr1,98646692,105744994,-0.436918480724907,0.244559220379888,-0.422474337614715,0.27270114427764,-0.374214540203063,-0.522490568933228,-0.147235272314998,0.924254084458877,0.057359233780352,0.482645058519229
-chr1,110109858,113819044,-0.264164256466778,-0.466494436728612,0.308954491632721,0.0570628439786687,-0.118468954635175,0.828991427169526,0.709322877152764,-0.537310600513576,-0.625337638452291,-0.126282398152573
-chr1,115732306,128645989,0.267029560579389,0.44399307786522,-0.629253145452188,-0.379646358977838,0.295551579507487,-0.495911139645599,0.424533114536439,-0.43139602114661,-0.575876048112297,0.00616103499287492
-chr1,159485418,165705329,0.117389514041188,-0.205784885355113,0.44520192508199,0.373790513940513,0.621347652205121,0.0383752370319358,1.03735793018302,0.562356865219893,-0.636225723180934,0.424039308881031
-chr1,170639925,207158920,-0.662490472797206,0.817241734212991,0.119861175714754,-1.2311993789428,-0.749930500038288,0.302209083097853,0.287194612285804,0.058457278981551,0.434225759067287,0.547302834862775
-chr1,211177522,221180815,0.354314427743852,-0.324343514886033,0.0855122619983732,0.514319079751555,0.394653192958415,0.494301303573851,-0.0892228880267324,0.00321856705521218,-0.655133850627135,-0.559686637377357
-chr2,1946862,9867764,0.809311012538906,0.200484739738474,0.273602208309941,-0.162488977617468,1.40372525091767,-0.0595064042170932,-0.257556894428838,0.278256522622954,-0.125671647006242,-0.763069771300576
-chr2,16793624,32362421,0.110866223860066,0.444901561426525,0.00979228465015656,0.389409141377766,-0.287916965373851,-0.226762399332202,0.632099886943424,-0.460778895656633,0.0912612483479865,0.546104282800425
-chr2,35793985,56362663,1.29213260266374,0.123812568822756,0.966513913766772,0.526888717379446,-0.182854229371153,-0.151224762304894,0.426824081246544,-0.443659379038578,-1.5061302291556,-0.237943388573013
-chr2,57100510,62934372,-1.27010186003901,-0.553296308529999,-0.533726927565967,0.891844974608019,0.722881322247869,-0.418057459133147,0.178207243908384,-0.539625661621235,0.477590749727633,-0.536755478446758
-chr2,75607671,76708807,0.170705350277487,-0.267429043349187,-0.259468628843108,-0.720199912632304,-0.201379121189527,0.548365951596428,0.057168597476913,-0.0417491817381095,-0.187816930553474,-0.957722314187827
-chr2,98746147,109221426,0.81485677902073,0.210392700585184,0.00708128484345779,-0.0703181249685633,-0.158410145808174,0.488622783363888,-0.0165782329367691,0.168338297344301,-0.120549774057347,1.28004319249674
-chr2,153518589,154622539,-1.10214875802731,-0.391326963261547,-0.754272741070224,-0.650450930184669,0.520433111540693,-0.195608008972558,0.331381429611128,0.439400319838285,-0.307212301102138,-0.360347902362736
-chr2,189090727,191652199,1.12841662798761,-0.404948142217378,-0.0487398863612443,0.505569775846298,-0.00322413223384302,0.904837763232882,-0.611965136667005,-0.362843024098502,0.318285882529606,-0.186108805768797
-chr2,203807321,224080536,0.426492480296015,-0.0895396942538506,-1.06144343120302,0.355754411789138,-0.299722325622333,1.07035297308827,-0.102725505871398,-0.659623916634201,0.953342054585274,-0.38302771283905
-chr2,229236849,234118300,0.0610166619459849,0.679448759749268,-0.244367933144138,0.373767447128324,-0.114422511553998,-0.345405161171853,-0.568166861882016,-0.253756845438641,0.52199361091289,0.26421532089758
-chr3,17138030,40796035,0.0458060066795371,0.0279212551105007,-0.691223550396398,-0.341083443949772,1.01136764746795,-0.242141391385909,-0.0269028610457657,-0.272849585095151,0.276071694725472,-1.02759180572291
-chr3,57219142,60650338,-0.514175823461017,0.429265500753656,0.290416364971758,-0.355908452574159,-0.0253887401861634,0.536757847830866,-0.367817987158137,0.485829389430177,0.39202635219895,-0.0848410961930487
-chr3,81447694,85242511,-0.0269985799779872,-0.158937460570416,0.718102149451653,0.26625477607055,-0.00464126957937326,-0.542362420427928,0.105366411291217,0.549617063156272,-0.285278044333192,0.376446187237051
-chr3,90470354,96592699,0.206221073935177,0.597918238596516,0.136718500079081,0.365742625818728,0.687782544229304,-0.208042766872176,0.512617331821554,-0.250233365038646,-0.612020105619436,-0.258176699504077
-chr3,104153637,148077781,-1.12939963252145,0.36069848364315,0.794567958547465,0.474596221974158,-0.424771623050988,0.257037272978388,0.0648993021535243,-0.378250322491633,-0.237207304358154,-0.0545348237833944
-chr3,160153088,170703309,0.444058966912883,0.666619889785092,0.411995032463211,-0.486892885168661,-0.318122907573063,-0.795342479187158,0.674122162752575,0.195028966632764,0.799555833875209,-0.0157934462602756
-chr3,171685857,177768610,0.129851071552886,-0.119086462560679,-0.493862753663371,-0.280615898649694,0.108934157243673,-0.62311922278829,-0.322828209952732,0.227428930603649,-0.603760562269407,-0.601213924672331
-chr3,181669050,182098858,0.231750093125133,0.402340744119645,0.405042674536815,-0.671182334011919,-0.118381538004878,-0.275205524258305,0.222062435574368,0.277241277755253,-0.334926151549642,0.567532401484274
-chr3,189857163,190338779,-0.145966274937628,-0.407530870353628,-0.287190934928832,0.357201973834982,0.173394125196904,0.316902421543961,-0.410769599077683,-0.747580134622404,0.950263392269324,-0.256028875773354
-chr4,23364532,24994750,-0.521629009683101,-0.527345118458496,-0.395022999099098,-0.243871308389524,0.00915702292726179,-0.0774061671533952,0.135381803000429,-1.10863851064311,-0.970601122749904,-0.564403918156632
-chr4,26037087,30535112,-0.0843797853473093,0.323448123824604,0.787883191511422,-0.125041995806816,0.457848558725272,-1.26310896711426,-0.484777510424161,0.292492131569238,-0.0360883161305558,-0.535944732549022
-chr4,36805545,56289462,-1.23638658727373,-0.751343150101937,-0.291453369893527,0.309276044619484,-0.0525054901335964,-0.175094615450432,0.228933539953555,-0.229278409726674,0.0708127660345063,0.678171299616825
-chr4,69523448,82112433,0.436206237609254,0.387908941827992,-0.989088010871245,-0.72380206293714,0.310631802444812,-0.200759439987614,-0.167849611912198,-0.0071503058563603,0.738553745045326,0.494645260623037
-chr4,113297313,127592873,-0.766116124991165,0.309321549830545,-0.477525544246668,0.599836118451255,0.43044009713417,-0.273338665461178,-0.136853954711672,-0.754194781556183,-0.603591034755609,-1.12782426461467
-chr4,130522192,142686922,0.560012261529829,0.184818825735977,-0.720176740817096,0.234352763318675,0.515499468267369,0.624392725250364,0.288443363196568,-0.320069071842726,-0.426511198427012,-0.329122303685036
-chr4,147625838,161001840,0.904527575076398,-0.80663470853442,-0.0849137448414007,-0.422715909622346,0.0858986682454799,-0.506311743483696,0.318438328672898,-0.512361396332961,0.00179307791018256,0.598970270841079
-chr4,164270207,176657538,-0.259801563849813,0.339187607531449,0.513704121876453,-0.629478086749065,0.951272695462712,-0.173671253437592,-0.695484896625548,-0.199073395968498,0.186744409300733,-0.325018406731875
-chr5,8910650,10080670,0.175451254713377,-0.855429050016163,0.933613545095382,-0.914135170703777,0.879105363895789,-0.180959772593924,-0.511766827785066,-0.0741582343741728,0.302313278437089,0.0402953293024167
-chr5,13535538,32715550,0.0880483390000347,0.0052824634771944,1.00464547750182,-0.0758187754442854,-0.0072321137726194,0.370623519602186,0.494411683419716,-0.236017645336082,0.2192591238018,-0.422440881606549
-chr5,38688182,60199113,0.73050319683961,-0.334446826264766,-0.266215414443245,-0.518591682963068,0.278583614624901,0.181471623806909,-0.2117261247033,0.0599598432719122,0.647380734867328,0.337090065768586
-chr5,69335125,69526214,0.563733779920403,-0.399225769863133,0.820650807051359,0.718523564077958,0.376327569897799,0.791085754242248,-0.0155477721082449,-0.0875165636121656,-0.332388994809252,0.310090460606631
-chr5,72377154,96107044,0.163100310537898,0.299157458614395,0.18848591945915,-0.608654677251928,0.799291568468749,1.02549270216304,0.111633607057314,0.136504102909081,0.0953050518502309,-0.482049441893394
-chr5,102386543,121803230,1.17304004307806,0.758484012987316,0.0285355903183029,0.0317931379360296,-0.747750535117064,0.164518877782431,-0.3569375315656,0.0639947238073465,0.256393351337305,-0.328916534556566
-chr5,129478175,130405783,0.217047862978763,0.14392117968976,0.460702483129046,-0.24338826319049,-0.841795321402649,0.503535443030167,-0.025788508558824,-0.524738494702504,1.16518704759994,0.167323600777301
-chr5,165098381,169336984,0.565059312815453,-0.759852943700074,-0.960025252876841,-0.0056923749461213,-0.962654040546726,0.459881121376669,0.231254181623027,-0.382681718696454,0.114892362783909,-0.826986562079075
-chr6,1610866,13143822,0.405135537346081,-0.438023036926733,-0.971877402060518,-0.373601765370426,0.125271673605309,-0.56679661150918,-0.0772459263535036,0.17784233198309,0.426699179326745,-0.32411946582676
-chr6,52452279,57599571,-0.683151419214147,0.913443550431698,0.378782156654834,-0.0717334204849542,0.19330986817436,0.369251924212567,0.36920787980103,-0.703776044144631,-0.384280913817184,-0.321283370515419
-chr6,62565594,67307434,-0.19979947080941,-0.0111945782503453,-0.772513101475882,0.0808084823667832,0.0330362865600457,-0.320798829619266,0.110952524832914,-0.785920240857211,0.22765504358289,-0.0105153901420961
-chr6,91250843,105393376,-0.254495638778197,0.0299656900216726,0.0148928669424609,0.458350726059722,-0.211611146809108,-0.495552024685156,0.242999937959437,0.645693804776274,0.52224604697038,0.296188385088499
-chr6,110925964,123043928,0.619144197229593,0.162467755715633,0.0376000997755443,-0.5950410981713,0.123327346810923,0.109160768477649,0.505762567713052,-0.00624270301708851,0.250639426397144,0.316184794426411
-chr6,125016937,132950089,-1.12488033373409,0.481720472563309,-0.263303002257915,-0.0794575134646747,-0.638190028977563,-0.717093696326422,0.00970977693853008,-1.03654563971104,-0.947580612122838,-0.305771281002339
-chr6,134593888,146421919,0.0713962569454127,-0.574374515443192,-0.167211452762715,0.542091510059296,1.30116576838362,-0.721722579330268,-0.543782631138969,0.0622258842157451,-0.0316797082333466,-0.047567886156488
-chr7,9333245,11185543,0.442073899830146,0.379710263433136,-1.13923993991116,-0.351574747583611,-0.338473362322716,-0.0210151533129124,-0.117765137566375,-0.11042205130712,0.378922092973801,-0.379689857104047
-chr7,12717294,27297461,-0.403848518141926,0.263721728028019,0.130859098710531,0.239709682531885,-0.5654772293116,0.0916255373114477,0.209597134680817,-0.739143668527372,0.854857133371582,0.785360833155609
-chr7,30611915,36307286,0.172917392455318,0.0292642519996339,-0.14368274194683,0.58890615430627,-0.123519253742247,0.392794771965905,0.0794954607719445,0.495090616683894,0.62271662880676,0.293565976585828
-chr7,50537753,66588183,-0.260563673180899,0.150716966900899,-1.14929586646971,0.532102540602697,-0.0233396147929229,0.161420041303263,0.421320094140418,0.411140004728398,0.0375483565008328,0.545067744159981
-chr7,90815098,104512145,0.0229670571038255,-0.380784819366676,-0.346466170588043,0.530858896584341,-0.195810101671703,-0.262297320753611,0.419475554423012,-0.224787031328109,-0.132147514632245,-1.074682277007
-chr7,125790395,143474981,-0.362723573461012,-0.170134994034299,-0.979527879268267,-0.12270576087157,0.343787567837322,-0.00515477901792052,-0.420297876461168,0.279000484883043,0.269617242118397,0.251601358983778
-chr7,148474024,152881219,-0.44616841879373,0.361620529811286,0.49842506911317,0.400045870695362,-0.207228315524002,0.331028768491394,0.312329266958566,-0.0944728348109857,-0.211697082274352,0.818295555230909
-chr8,907892,3993257,0.295051703615398,0.235163115651713,-0.886308382863305,-0.312406619958629,-0.0768862862432622,-0.192807516533344,0.0831444381169606,0.207975463698354,-0.495473711087675,-0.216250092473895
-chr8,10180052,14671019,0.134273869165132,-0.626626625284356,0.0999942135039912,-1.26557384096218,0.60531339540038,0.480309911450043,-0.0131944872073308,0.886039636861338,0.475562505498907,-0.513614752187604
-chr8,51536782,55647068,-0.48212923376547,0.267760055733254,0.513218962511832,-0.419221106984523,0.627711154722018,-0.0840722585770535,0.0722694162520243,-0.0334321145014456,-0.463516153429728,-0.558563533941175
-chr8,61001873,76580973,-0.29850984375477,-0.320762321221071,0.0394159037454987,0.519936176867492,0.608353453852283,-0.0262549338978214,0.8483797777653,0.0894766646796811,-0.328020087970819,-0.911371130365999
-chr8,112237545,120363101,-0.847342702462173,-0.158447262297007,0.0671525314110898,0.288728127484666,-0.506204328000199,-0.107732426845204,0.236325612833136,0.0114255450216933,0.438124561209795,0.49031520333041
-chr8,120755231,136713678,-0.579955297636893,0.778189664668619,-0.174592750836562,-0.0478776207841721,0.638475254002758,-0.11669898898048,-0.554969455770072,-0.50937021927559,0.741213850096099,0.304182123512886
-chr9,4599919,5057294,0.280901072864486,0.135755169671934,-0.215790621499867,-0.827800086502623,0.247488428599925,-0.580181112068122,0.0537427343353974,0.263638485432625,0.522457264237351,-0.480309748386269
-chr9,33744204,47715201,0.23197228246561,-0.420092178807033,0.17926790640283,-0.106761191250505,0.228999648784803,-0.075902342536313,0.535800574858771,0.453996763916208,-0.45628945522554,-0.340614152656339
-chr9,58893524,73439620,0.557194909960835,0.264338914645824,0.537083318154144,0.34922750019918,-0.138938499729329,-0.464746289656338,-0.184787661509221,-0.995999611378673,0.571270963387238,-0.0854859534774538
-chr9,74861310,82419273,-0.420550542981083,-0.018252764360473,0.18186331699125,0.317591346609479,-0.227995268769953,0.940343360215127,0.190488400974698,-0.137387953081133,0.49075873044139,0.211503417058332
-chr9,93081241,109065709,-0.479701174240244,0.956380813203123,-0.980817715637334,0.154911858498211,-0.279799396382278,-0.758390211729122,0.332998687003549,-0.0459843080728801,0.0193974024266934,0.137996256878217
-chr9,131163821,140890944,0.00523751857468058,0.794238391470196,-0.357136418883324,-0.174547747958675,0.354115997882113,0.2049553355595,0.591686744380651,0.793050102171931,0.229880284428557,-0.911322431654025
-chr10,8213080,18764940,-0.615427157366899,0.271698791441256,0.00839534731114577,-0.0217854063752947,-0.108789857310362,0.812675865344018,0.230097705136299,0.0314386509284012,0.149441830193868,0.05707164862513
-chr10,30935596,33856583,-0.00470271098342472,-0.025898575334458,-1.09744533062295,-0.705000920296785,-0.552754463035567,0.134914205630787,0.178541767464593,-0.36986630012258,-0.430329120273585,0.956180145693393
-chr10,35157385,45919749,0.62177643452876,0.591294079673934,0.129181147286956,-0.468886687683954,0.0667250346034746,0.116983342640928,-0.376057549774473,-0.447087681861888,-0.306937533864441,-0.727535587484371
-chr10,64096883,84132861,1.23876366643416,-0.251506213117935,-0.0946232867939954,-1.14222762127468,-0.188043977331319,0.800056216512985,0.252686408089268,0.33080385046956,0.686226108572905,0.589195709957217
-chr10,86753112,96538465,-0.289613083273416,-0.46005382255467,0.148633176131314,-0.192520844373223,0.321931905982648,-0.665424035757042,0.283807504066374,-0.0770374675856982,0.888518172008582,-0.971721583632921
-chr10,117333181,128429769,0.128917183354564,0.10445237488959,-0.677232130274835,0.185111213174161,-0.183772914052244,0.380233389045148,0.0192020118468393,0.307257220072023,0.876870678395628,-0.598113798131687
-chr11,6210755,8255683,-0.278491495911728,0.110454238989556,-0.257147446825313,-0.0187865613762794,1.03995158966003,-0.394666651689343,-0.0637411116879199,0.527342043710044,-0.427116255649343,-0.165315022739895
-chr11,15496327,16100447,0.13107920637607,0.134467436192185,-0.252830745336264,0.659073932838954,0.136779502587954,-0.336489527079933,0.0834226464839447,-0.193947220604491,0.462092531800386,0.634775853111924
-chr11,26502139,41332053,0.150804881046841,0.0421338238740144,0.376525249706866,-0.269142789842162,0.438766413968709,0.418872132419102,-0.921318951420606,0.592055169207441,-0.473059864485399,0.1611170549614
-chr11,42478789,48322068,0.0467257236834853,-0.255971023692982,0.284719077207557,0.436538022800826,-0.145087436739421,0.326651801681298,0.110384341267689,-0.104760801440177,-0.609703739119425,-0.360641653159204
-chr11,49195071,59115673,0.880916679220105,-0.322701330566369,0.494027559461927,0.712484698233714,0.297365406293337,-0.352296177117235,-0.536021925579559,-0.166068877205672,-0.558743127477385,0.325006782617263
-chr11,84998104,110491301,-0.135108093954795,0.0214298305215669,-0.397452645353786,0.120868254951637,-0.00685033730594828,-0.834772312579662,0.00774208647014474,-0.355030910427971,-0.294583043451005,-0.534176585282285
-chr12,9932221,10850346,-0.204428761604374,0.450658354048613,0.441373938524692,-0.494368620467201,-0.0737268470358357,-0.0607177002984522,0.212207955864457,0.312465621100249,-0.614316087131636,-0.36804851595828
-chr12,15169509,15777040,0.102888832571666,-0.244034549880918,-0.535065298266312,0.746817393046204,0.543570630865207,-0.222095480739434,-0.51307836983254,-0.317479553758373,-0.281041821366858,0.379870708215909
-chr12,17185683,33151631,0.669879506737236,-0.0191730825588941,0.149381065421493,-0.194172947839544,0.942594287281032,0.449119436193415,0.235503483065856,-0.243529631070465,-0.604542111391694,-0.555146240119176
-chr12,41227047,53351107,0.496371745225823,-0.126374178751406,-0.174631352207241,-0.792497465696987,0.517237705607217,-0.680525986814521,0.995717392716427,-0.300904121445867,0.556361009374517,0.344869118664504
-chr12,54601711,78619196,-0.646384390457567,1.0748575290171,-1.41626598558634,-0.230852973179112,-0.461382999149574,-0.0511172793990881,-0.095907613210346,-0.694334022145649,-0.592056168845502,0.071322332542272
-chr12,89632193,93507969,-0.410939771476729,0.391848409722649,-0.348860754877768,-0.205678157707475,-0.921983229116944,-0.614765420770741,0.0740938888770215,0.306748402993074,0.453250838221139,1.38470429666249
-chr13,46139794,51387536,0.343959627041867,-0.0923751342304892,0.431186969243423,-0.611308098204609,-0.127566989862673,-0.304929538165221,0.353120509187589,0.650707923443872,-0.422877576022425,-0.456121351562755
-chr13,63085808,64091349,0.0276150177689733,-0.191412140774373,0.100606585331996,-0.2096979017382,-0.216227986978164,0.126405529222101,0.226531465622723,-0.319001408558043,-0.317415713104728,0.875967335816875
-chr13,66817650,70405705,1.53386662183801,-0.941073528262019,-0.0657356619647378,0.103161835246381,-0.38884395484753,0.361119037823923,0.264744375182363,-0.0847571606096561,-0.20873160722198,-0.489529705488203
-chr13,74201185,79091948,0.487641072236331,-0.255565840688003,0.0365517459544966,-0.895359426220224,-0.64990792319364,0.387488990906202,0.028322226123435,0.00906399260919121,-0.586987200002635,0.0154984050907277
-chr13,86748727,112782735,0.333576575715007,-0.156044463638062,-0.352053274848451,0.611029604313117,0.721389357707125,-0.329912730898089,0.558122236586847,0.3658869605809,0.00968526827248239,0.770488965605396
-chr14,1116066,20090491,0.560637407069672,-0.193702865788933,0.0914935148485014,-0.506163284972705,-0.77588267116368,0.11657590122457,0.196196745527337,-0.3873896635482,-0.308592966641485,-1.14091003443576
-chr14,27650669,30401292,0.35160575024718,0.152871883448909,-0.254974690941774,0.733333477635251,0.393464549513205,-0.938954751322511,0.332010064702199,-0.453827316491195,0.336341034632923,0.260199853942651
-chr14,62694287,77523317,0.392956106867388,-0.0649890028925991,-0.0685726731673037,0.295109391073221,0.0229603102909514,-0.189702462867366,-0.636705109032081,0.527016056115182,-0.579513315911545,-0.397452565832951
-chr14,86900444,95204023,0.0182124180074509,-0.175250193525551,-1.23216483077265,0.647909716923485,0.113210231562816,-0.258036255656513,0.328439298698245,-0.236362852705235,-0.723088376247213,0.132717917197047
-chr14,97758413,103106406,-0.919090217932401,0.718039466497412,0.151871045281294,-0.223844427764686,-0.0112485104513479,-0.367582840763078,0.358950196365994,-0.0186080437669192,0.242102274768575,-0.396227499344393
-chr15,69148,17057824,-0.448269127057698,0.307908355044147,-0.714072435045501,0.202960149611133,0.279921764418411,0.392619491032496,-0.45272196792226,-0.0964687545243844,0.190296302291148,-0.52258827900293
-chr15,20377064,34363676,-0.619414415189447,0.56055637185412,-0.173179593721766,-0.257611458472685,-0.657168599133097,0.712541479944708,0.306479802666447,-0.687901177482085,0.535587324932068,-0.649897476492414
-chr15,53408070,55798185,-0.699955869539906,0.0184967690197869,0.250847476068716,-0.122204381684164,-0.324407383614732,0.0071578307419796,0.242006939587284,0.316302615999394,0.805389959934826,-0.167223768387454
-chr15,63105607,69194233,0.0186096640136487,-1.05652524238447,-0.93288538256706,-0.0288240789287862,-0.115921427965694,-0.0706586948296442,0.509221756839834,0.746591261926048,0.0719091184403047,-0.105154506490046
-chr15,76170063,84843708,-0.764036878420904,-1.04946909330787,-0.482815294862657,-0.460408457266658,-0.30635591012203,0.271024157399427,-0.385186644091965,0.590853848973405,0.145874394838192,0.351640745684785
-chr16,17196451,18340259,-0.579521230030339,0.43548194474934,-1.78792333121532,-0.246366957962103,0.123574566180198,0.466298556844899,-0.0491100568890421,0.315275674428469,-0.442719822643575,-0.0724887861830495
-chr16,25472831,32060331,0.614226789323058,-0.255438033692084,0.506247195672005,1.19850825997426,0.639979592164343,0.541748679524929,0.00472562003114502,0.741911464495295,-0.43318816774876,-0.89672831422125
-chr16,35184808,43052610,-0.478412288003636,-0.0641157608740315,-0.180326031762927,0.399899744760995,0.659970003165849,0.473619919540969,-0.16951335065412,-0.716001223403139,-0.424248385420435,0.506240519906883
-chr16,71364342,77790618,-0.0903819412461671,-0.383199062762117,0.457964170152206,-0.435574384620773,-0.516390371724053,-0.095155946020553,-0.214349191016845,-1.26208572029382,-0.353208648386848,-0.454551433219051
-chr17,28980810,37044050,0.298763277126361,-0.912482009098063,-0.0223054385431686,0.054491520141544,0.043540024953071,-0.0106530403185545,-1.59326929607807,-0.303515125926345,0.139472624758911,-0.34004565115244
-chr17,49339178,51043179,0.100492704393353,-0.286455465846535,-0.242669578616203,-0.280676070323685,-0.655339671819788,1.18756921124735,-0.113831656763808,-0.0412983092915422,-0.903978000510749,0.0429120658173509
-chr17,56321294,70581501,0.240037891186747,-0.107549690979924,0.440619481871989,0.50545437146495,0.274935227083664,0.573994501382317,0.095982723351928,-0.253642654401907,0.370348801969936,-0.588820108073907
-chr17,75516434,77666805,-1.18620758085746,0.560030376140546,-0.0555736221561037,-0.213231837012212,-0.837555993230022,-0.0151551570881629,-0.659886708514935,-1.24032312833285,0.0979992745464238,-0.544049876284673
-chr18,24625838,26706768,0.79605368528476,-0.373502113275823,-0.281486190647226,1.46054552957816,0.471642515043522,0.0857809191423568,-0.646172923102908,0.235076947114503,-0.395546346276267,0.022926649091245
-chr18,31857989,33707038,0.650389957833122,-0.384383790514309,-0.345150737911457,-0.446755636476059,-0.326596578356971,-0.117049192975646,-0.159443033150682,0.807966727469236,0.322198024330999,0.428360286804825
-chr18,35633572,48792928,0.281539900524795,0.288003927966159,-0.03200966816554,0.685448857143546,-0.740689018457583,0.692776746996106,0.606921756347473,-1.12801879438978,0.288500241611731,0.144256526317978
-chr18,63265926,64579435,-0.381735125933694,1.14493790244346,0.393050822024335,0.148485683905603,0.641875920191818,-0.800168685221449,-0.605853515334489,-0.602599460623818,-0.0728089979202569,0.806864782397544
-chr19,7487556,21013983,-0.393736694898037,-0.300796555938681,1.3197991505369,0.810510214937584,-0.589165367177783,0.119947916992755,0.571718240191235,1.13963806275031,-0.703391741134478,0.25608150135904
-chr19,34487078,46584875,0.211716673910969,0.119746241513765,-0.492521855715702,0.172729827380731,0.330464925323998,0.0169366337886331,-0.0921567198487046,-0.224601024568181,0.0494123468785155,0.459184241497762
-chr19,50588051,51056827,0.440359293808606,0.252378675594174,0.0180705690707926,-0.432523176155326,0.42149215981204,1.07925905450829,-0.215839642459408,-0.140833243721997,-0.380521557899948,0.105744366370875
-chr20,4487716,13781691,-0.96836745513354,-0.13642030395121,1.1216506243918,0.888880996358533,0.00942274521450721,-0.354049863962024,-0.123679076634525,-0.262182521702838,-0.0246692818322086,-0.0176588629213207
-chr20,17440060,31439289,-0.454898728003861,1.07564208659651,-0.640732002316484,-0.200275081804562,0.040373048628439,-0.185247861281894,0.267056432975186,-0.0471164032649246,0.471454970718451,0.771704863927973
-chr20,52067883,56907899,1.00474113602667,0.111641161259225,0.116802981925071,-0.751522052456584,-0.612955267269411,-1.0105556862154,-0.693995695665147,0.013344371038319,0.388200846437234,-0.582704548409239
-chr21,9083079,22946038,-0.483259295313116,0.157611465475891,0.196784617720869,0.670165602470679,0.539819169280959,0.227704571182932,1.00902668300788,0.672457019125054,-0.453558906386733,0.299855965131497
-chr21,24124713,44074650,-0.184440523037171,0.468849137953852,-0.184573223442789,-0.710746981718698,0.567191989455948,0.926874811269079,-0.0343289840614936,-0.884251097377167,0.324942788041007,-0.564845442652801
-chr22,9049987,10148515,-0.450094260678236,-0.401749626203379,-0.557262803737621,0.257832089828125,0.43782816969862,0.904056639156202,-0.344659821556339,0.194327414388096,0.594013488629208,-0.286291327555491
-chr22,18874886,36204682,0.461020182029348,-0.231887577202696,-0.327335635809569,-1.10658194740608,0.306029956178758,-0.0559779658343301,0.291694501231773,0.413797109699299,-0.380703536131478,-0.0696511910834709
-chrX,9429106,22176535,-0.0486132809207355,-0.318693373582282,0.614182980976105,-0.0731500166116299,-0.75663159396054,-0.128818383532452,-0.0106800376698571,-0.539210487975668,0.252599025473833,-0.767797467854349
-chrX,33237871,35456532,-0.722629856293896,-0.746936079458668,0.219164728212638,0.434810433138222,-0.236575092928123,-0.0216951206139797,0.0969759897932142,0.56708964725195,-0.426145542817059,0.0665211917140764
-chrX,48006857,50891425,0.236426542330221,-0.426415715573359,0.158858124064354,-0.152373150573475,0.294620091066009,-0.0527393303379918,-0.583194807836696,1.42540753814747,-0.321761904588155,-0.307670700691616
-chrX,51362515,57461501,0.203535865712382,-0.339149862891408,-1.18956143161338,-0.273880036351481,-0.860878701202272,-1.05177527171602,0.0270704452916978,0.566367892826151,-0.515419228276775,0.598396336273578
-chrX,94838523,117825639,0.942287895699986,-0.69302999470528,-0.197924247753701,0.507022970772574,0.427745328820002,-0.108248036943378,-0.0759246601424767,-0.00414559506267404,-0.015104473211971,-0.670864386888923
-chrX,128760350,134247282,0.55283946836208,0.18105760988141,-0.0774901290141932,-0.596306124784632,0.654290172838016,-0.569028900739648,0.635338409556036,0.207738567354899,-0.0183345429090713,0.374572412754114
-chrX,144563215,147755086,0.305400176668082,0.397356783599796,-0.0699447195782165,-0.80011585661662,0.288470560014175,0.124087058556865,-0.249612719844562,-0.309918563399315,-0.0943289823912621,0.416618172267506
-chrY,8156072,8295584,-0.537386604394472,-0.175955290206047,-0.408342571501088,-1.01041036152054,-0.425736581193784,-0.681470825722129,0.0665398413332322,0.358666109213062,0.127017439807916,-0.361769196325383
-chrY,11681859,19646964,0.251662027469618,-0.907428815573165,0.463113360054508,-0.952569189002868,0.77546061335972,-0.0126367466466184,-0.0466919185519218,0.0370362664595943,0.467139566303488,-0.248305859619604
-chrY,29619210,45371153,0.998119464908609,1.09288014983516,-0.478995609222156,-0.257867693864763,0.00307722837079722,-0.627072452579068,-0.412865237224778,-0.782706462038221,-0.31668532175155,0.749915156686864
diff --git a/ui.R b/ui.R
index c1eaf7c..d093d81 100644
--- a/ui.R
+++ b/ui.R
@@ -1,13 +1,14 @@
shinyUI(fluidPage(theme="newstyle.css",
tags$head(tags$script(HTML('Shiny.addCustomMessageHandler("jsCode",function(message) {eval(message.value);});'))),
- titlePanel(HTML('
shinyCircos: an R/Shiny application for generation of circos plots interavtively
'),
+ titlePanel(HTML('
shinyCircos: an R/Shiny application for interactive creation of Circos plot
'),
## *** Add some custom CSS; customize the look of the header ***
tags$head(tags$style(type="text/css", "label.radio { display: inline-block; }", ".radio input[type=\"radio\"] { float: none; }"),
tags$style(type="text/css", "select { max-width: 200px; }"),
tags$style(type="text/css", "textarea { max-width: 185px; }"),
tags$style(type="text/css", ".jslider { max-width: 200px; }"),
tags$style(type='text/css', ".well { max-width: 330px; }"),
- tags$style(type='text/css', ".span4 { max-width: 330px; }")
+ tags$style(type='text/css', ".span4 { max-width: 330px; }"),
+ tags$style(HTML(".shiny-output-error-validation {color: red;}"))
)
),
sidebarLayout(
@@ -18,10 +19,10 @@ shinyUI(fluidPage(theme="newstyle.css",
),
## *** Data upload panel***
conditionalPanel(condition="input.tabs1=='Data upload'",
- fileInput("uploadChr", HTML("
Upload chromosomes data |
+ fileInput("uploadChr", HTML("Upload chromosome data |
- Upload chromosomes data to plot the outermost track which is a compulsory part of a circos plot.
+ Upload chromosome data for the outermost track which is a compulsory part of a circos plot.
|
"), multiple = FALSE),
@@ -35,11 +36,24 @@ shinyUI(fluidPage(theme="newstyle.css",
"), c("General" = "general", "Cytoband" = "")),
- HTML('
'),
+ fileInput("markTrackfile0", HTML("
Upload label data |
+
+
+ Label data are used to mark genes or genomic regions which is a optional part of a circos plot. The four columns of label data should be chromosome ID,
+start coordinate, end coordinate and label text. Label text can be numbers or character strings. See example data for more details.
+ |
+
+ "), multiple = FALSE),
+ tags$script('$( "#markTrackfile0" ).on( "click", function() { this.value = null; });'),
HTML("
Upload data for inner tracks |
- Data of zero or more tracks can be uploaded. For now, a maximum of 10 tracks are allowed. For any track, the first three columns of the uploaded data should be chromosome ID, the start and end coordinates of genomic regions.
+ Data of zero or more tracks can be uploaded. For now, a maximum of 10 tracks are allowed.
+For any track, the first three columns of the uploaded data should be chromosome ID, the start
+and end coordinates of genomic regions. For plot of point, line and bar, the uploaded data can
+contain one or more columns to indicate the 'color', 'cex' or 'pch' used in the plot.
+'cex' is used to control the size of data points while 'pch' is used to specify the
+symbols used in plot of point. See example data for more details.
|
"),
@@ -49,7 +63,16 @@ shinyUI(fluidPage(theme="newstyle.css",
conditionalPanel(condition="input.uploadtrack1 == '2'",
fileInput("uploadTrackfile1", "Upload track1 data:", multiple = FALSE),
tags$script('$( "#uploadTrackfile1" ).on( "click", function() { this.value = null; });'),
- selectInput("typeTrack1", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap"), selected="point")
+ selectInput("typeTrack1", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap", "ideogram"), selected="point"),
+ fileInput("markTrackfile1", HTML("
Upload label data |
+
+
+ Label data are used to mark genes or genomic regions which is a optional part of a circos plot. The four columns of label data should be chromosome ID,
+start coordinate, end coordinate and label text. Label text can be numbers or character strings. See example data for more details.
+ |
+
+ "), multiple = FALSE),
+ tags$script('$( "#markTrackfile1" ).on( "click", function() { this.value = null; });')
)
),
checkboxInput("seltrack2", HTML("
Track2"), FALSE),
@@ -58,7 +81,16 @@ shinyUI(fluidPage(theme="newstyle.css",
conditionalPanel(condition="input.uploadtrack2 == '2'",
fileInput("uploadTrackfile2", "Upload track2 data:", multiple = FALSE),
tags$script('$( "#uploadTrackfile2" ).on( "click", function() { this.value = null; });'),
- selectInput("typeTrack2", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap"), selected="line")
+ selectInput("typeTrack2", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap", "ideogram"), selected="line"),
+ fileInput("markTrackfile2", HTML("
Upload label data |
+
+
+ Label data are used to mark genes or genomic regions which is a optional part of a circos plot. The four columns of label data should be chromosome ID,
+start coordinate, end coordinate and label text. Label text can be numbers or character strings. See example data for more details.
+ |
+
+ "), multiple = FALSE),
+ tags$script('$( "#markTrackfile2" ).on( "click", function() { this.value = null; });')
)
),
checkboxInput("seltrack3", HTML("
Track3"), FALSE),
@@ -67,7 +99,16 @@ shinyUI(fluidPage(theme="newstyle.css",
conditionalPanel(condition="input.uploadtrack3 == '2'",
fileInput("uploadTrackfile3", "Upload track3 data:", multiple = FALSE),
tags$script('$( "#uploadTrackfile3" ).on( "click", function() { this.value = null; });'),
- selectInput("typeTrack3", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap"), selected="bar")
+ selectInput("typeTrack3", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap", "ideogram"), selected="bar"),
+ fileInput("markTrackfile3", HTML("
Upload label data |
+
+
+ Label data are used to mark genes or genomic regions which is a optional part of a circos plot. The four columns of label data should be chromosome ID,
+start coordinate, end coordinate and label text. Label text can be numbers or character strings. See example data for more details.
+ |
+
+ "), multiple = FALSE),
+ tags$script('$( "#markTrackfile3" ).on( "click", function() { this.value = null; });')
)
),
checkboxInput("seltrack4", HTML("
Track4"), FALSE),
@@ -76,7 +117,16 @@ shinyUI(fluidPage(theme="newstyle.css",
conditionalPanel(condition="input.uploadtrack4 == '2'",
fileInput("uploadTrackfile4", "Upload track4 data:", multiple = FALSE),
tags$script('$( "#uploadTrackfile4" ).on( "click", function() { this.value = null; });'),
- selectInput("typeTrack4", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap"), selected="heatmap")
+ selectInput("typeTrack4", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap", "ideogram"), selected="heatmap"),
+ fileInput("markTrackfile4", HTML("
Upload label data |
+
+
+ Label data are used to mark genes or genomic regions which is a optional part of a circos plot. The four columns of label data should be chromosome ID,
+start coordinate, end coordinate and label text. Label text can be numbers or character strings. See example data for more details.
+ |
+
+ "), multiple = FALSE),
+ tags$script('$( "#markTrackfile4" ).on( "click", function() { this.value = null; });')
)
),
checkboxInput("seltrack5", HTML("
Track5"), FALSE),
@@ -85,7 +135,16 @@ shinyUI(fluidPage(theme="newstyle.css",
conditionalPanel(condition="input.uploadtrack5 == '2'",
fileInput("uploadTrackfile5", "Upload track5 data:", multiple = FALSE),
tags$script('$( "#uploadTrackfile5" ).on( "click", function() { this.value = null; });'),
- selectInput("typeTrack5", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap"), selected="bar")
+ selectInput("typeTrack5", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap", "ideogram"), selected="bar"),
+ fileInput("markTrackfile5", HTML("
Upload label data |
+
+
+ Label data are used to mark genes or genomic regions which is a optional part of a circos plot. The four columns of label data should be chromosome ID,
+start coordinate, end coordinate and label text. Label text can be numbers or character strings. See example data for more details.
+ |
+
+ "), multiple = FALSE),
+ tags$script('$( "#markTrackfile5" ).on( "click", function() { this.value = null; });')
)
),
checkboxInput("seltrack6", HTML("
Track6"), FALSE),
@@ -94,7 +153,16 @@ shinyUI(fluidPage(theme="newstyle.css",
conditionalPanel(condition="input.uploadtrack6 == '2'",
fileInput("uploadTrackfile6", "Upload track6 data:", multiple = FALSE),
tags$script('$( "#uploadTrackfile6" ).on( "click", function() { this.value = null; });'),
- selectInput("typeTrack6", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap"), selected="rect")
+ selectInput("typeTrack6", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap", "ideogram"), selected="rect"),
+ fileInput("markTrackfile6", HTML("
Upload label data |
+
+
+ Label data are used to mark genes or genomic regions which is a optional part of a circos plot. The four columns of label data should be chromosome ID,
+start coordinate, end coordinate and label text. Label text can be numbers or character strings. See example data for more details.
+ |
+
+ "), multiple = FALSE),
+ tags$script('$( "#markTrackfile6" ).on( "click", function() { this.value = null; });')
)
),
checkboxInput("seltrack7", HTML("
Track7"), FALSE),
@@ -103,7 +171,16 @@ shinyUI(fluidPage(theme="newstyle.css",
conditionalPanel(condition="input.uploadtrack7 == '2'",
fileInput("uploadTrackfile7", "Upload track7 data:", multiple = FALSE),
tags$script('$( "#uploadTrackfile7" ).on( "click", function() { this.value = null; });'),
- selectInput("typeTrack7", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap"), selected="point")
+ selectInput("typeTrack7", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap", "ideogram"), selected="point"),
+ fileInput("markTrackfile7", HTML("
Upload label data |
+
+
+ Label data are used to mark genes or genomic regions which is a optional part of a circos plot. The four columns of label data should be chromosome ID,
+start coordinate, end coordinate and label text. Label text can be numbers or character strings. See example data for more details.
+ |
+
+ "), multiple = FALSE),
+ tags$script('$( "#markTrackfile7" ).on( "click", function() { this.value = null; });')
)
),
checkboxInput("seltrack8", HTML("
Track8"), FALSE),
@@ -112,7 +189,16 @@ shinyUI(fluidPage(theme="newstyle.css",
conditionalPanel(condition="input.uploadtrack8 == '2'",
fileInput("uploadTrackfile8", "Upload track8 data:", multiple = FALSE),
tags$script('$( "#uploadTrackfile8" ).on( "click", function() { this.value = null; });'),
- selectInput("typeTrack8", "Plot type:", choices = c("point", "line", "bar", "rect" ,"heatmap"), selected="bar")
+ selectInput("typeTrack8", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap", "ideogram"), selected="bar"),
+ fileInput("markTrackfile8", HTML("
Upload label data |
+
+
+ Label data are used to mark genes or genomic regions which is a optional part of a circos plot. The four columns of label data should be chromosome ID,
+start coordinate, end coordinate and label text. Label text can be numbers or character strings. See example data for more details.
+ |
+
+ "), multiple = FALSE),
+ tags$script('$( "#markTrackfile8" ).on( "click", function() { this.value = null; });')
)
),
checkboxInput("seltrack9", HTML("
Track9"), FALSE),
@@ -121,7 +207,16 @@ shinyUI(fluidPage(theme="newstyle.css",
conditionalPanel(condition="input.uploadtrack9 == '2'",
fileInput("uploadTrackfile9", "Upload track9 data:", multiple = FALSE),
tags$script('$( "#uploadTrackfile9" ).on( "click", function() { this.value = null; });'),
- selectInput("typeTrack9", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap"), selected="rect")
+ selectInput("typeTrack9", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap", "ideogram"), selected="rect"),
+ fileInput("markTrackfile9", HTML("
Upload label data |
+
+
+ Label data are used to mark genes or genomic regions which is a optional part of a circos plot. The four columns of label data should be chromosome ID,
+start coordinate, end coordinate and label text. Label text can be numbers or character strings. See example data for more details.
+ |
+
+ "), multiple = FALSE),
+ tags$script('$( "#markTrackfile9" ).on( "click", function() { this.value = null; });')
)
),
checkboxInput("seltrack10", HTML("
Track10"), FALSE),
@@ -130,16 +225,28 @@ shinyUI(fluidPage(theme="newstyle.css",
conditionalPanel(condition="input.uploadtrack10 == '2'",
fileInput("uploadTrackfile10", "Upload track10 data:", multiple = FALSE),
tags$script('$( "#uploadTrackfile10" ).on( "click", function() { this.value = null; });'),
- selectInput("typeTrack10", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap"), selected="line")
+ selectInput("typeTrack10", "Plot type:", choices = c("point", "line", "bar", "rect", "heatmap", "ideogram"), selected="line"),
+ fileInput("markTrackfile10", HTML("
Upload label data |
+
+
+ Label data are used to mark genes or genomic regions which is a optional part of a circos plot. The four columns of label data should be chromosome ID,
+start coordinate, end coordinate and label text. Label text can be numbers or character strings. See example data for more details.
+ |
+
+ "), multiple = FALSE),
+ tags$script('$( "#markTrackfile10" ).on( "click", function() { this.value = null; });')
)
),
HTML('
'),
HTML("
Upload data to create links |
- Data to create links between different genomic regions should be composed of 6 columns. The first three columns of each row
- represent the coordinate of a genomic region while the last three columns of each row represent the coordinate of another
- genomic region. A link will be created between the two genomic regions in each row. See example data for more details.
+ Data to create links between different genomic regions should be composed of 6 or 7 columns.
+The first three columns of each row represent the coordinate of a genomic region
+ while the 4th to 6th columns of each row represent the coordinate of another genomic region.
+For data with 7 columns, the 7th column should be categorical
+ characters indicating varying colors used for different links. The name of the 7th column should be 'color'.
+A link will be created between the two genomic regions in each row. See example data for more details.
|
"),
@@ -149,7 +256,7 @@ shinyUI(fluidPage(theme="newstyle.css",
tags$script('$( "#linksFile" ).on( "click", function() { this.value = null; });')
),
HTML('
'),
- HTML('
All uploaded data should bes in .csv format.
'),
+ HTML('
Data uploaded should use any of the separator in the set [,\\t |;:].
'),
HTML('
'),
actionButton("submit1", HTML("
Go! |
@@ -170,7 +277,9 @@ shinyUI(fluidPage(theme="newstyle.css",
textInput("colorChr", HTML("Color(s): |
- Colors to be used for each chromosome/sector. Character vector of arbitrary length representing colors is accepted and adjusted automatically to the number of sectors. For example, 'grey' or 'grey,red,green,blue'. Hex color codes as '#FF0000' are also supported.
+ Colors to be used for each chromosome/sector. Character vector of arbitrary length representing
+colors is accepted and adjusted automatically to the number of sectors.
+For example, 'grey' or 'grey,red,green,blue'. Hex color codes as '#FF0000' are also supported.
|
"), value="grey")
@@ -181,23 +290,43 @@ shinyUI(fluidPage(theme="newstyle.css",
textInput("gapChr", HTML("Gap width(s): |
- Gaps between neighbouring sectors. Numeric vector of arbitrary length is accepted and adjusted automatically to the number of sectors.
- For example, '1' or '1,2,3,1'. The first value corresponds to the gap between the first and the second sector.
+ Gaps between neighbouring sectors. Numeric vector of arbitrary length is accepted and
+adjusted automatically to the number of sectors. For example, '1' or '1,2,3,1'. The first
+value corresponds to the gap between the first and the second sector.
|
- "), value="1"),
- radioButtons("fontsizeChr", "Font size", c("Small" = "1", "Medium" = "1.1","Large"="1.2","Custom"="custom")),
- conditionalPanel(condition="input.fontsizeChr=='custom'",
- numericInput("cexAxis", "Axis text size:", value=1, min=0.1, max=3, step=0.1),
- conditionalPanel(condition="input.labelChr=='labels'",
- numericInput("cexAxislabel", "Axis label size:", value=1, min=0.1, max=3, step=0.1)
- )
+ "), value="1"),
+ conditionalPanel(condition="output.chrlabel",
+ radioButtons("labels0", HTML("Add labels |
+
+
+ Add labels to mark genes or genomic regions for this track using data uploaded in the 'Data upload' menu.
+ |
+
+ "), c("Yes" = "1", "No" = "2"), selected="2")
),
+ conditionalPanel(condition="input.labels0==1 & input.trackChr=='track'",
+ radioButtons("poslabels0", "Labels position", c("Outer" = "outer", "Inner" = "inner"),selected="inner"),
+ numericInput("heightlabels0", HTML("Labels height: |
+
+
+ Height of the labels, which should be greater than 0.
+ |
+
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginlabels0", HTML("Labels margin: |
+
+
+ Margin size of the labels.
+ |
+
+ "), value=0.01, min=0, max=0.8, step=0.005)
+ ),
conditionalPanel(condition="input.datatypeChr!='general' | input.trackChr=='track'",
- textInput("text0", HTML("Add legend text |
+ textInput("text0", HTML("Legend text |
- The text to appear in the legend which can be null or a character.
+ The text to appear in the legend.
|
"), value=NULL)
@@ -209,37 +338,58 @@ shinyUI(fluidPage(theme="newstyle.css",
radioButtons("directionTrack1", HTML("Bar direction |
- Bars can be unidirectional or bidirectional. For bidirectional plot,
-the fourth column of the uploaded data will be divided into two groups based on the boundary value specified by the user.
+ Bars can be unidirectional or bidirectional. For bidirectional bars, the 4th column which
+contains the data values will be divided into two groups based on the boundary value.
|
"), c("Unidirectional" = "1", "Bidirectional" = "2"), selected="1"),
conditionalPanel(condition="input.directionTrack1=='2'",
numericInput("barBoundary1", "Boundary value:", value=0, step=0.01),
- textInput("coldir1Track1", "Outside color:", value="red"),
- textInput("coldir2Track1", "Inside color:", value="cyan")
+ textInput("coldir1Track1", "Outer color:", value="red"),
+ textInput("coldir2Track1", "Inner color:", value="cyan")
)
- ),
- conditionalPanel(condition="input.typeTrack1!='rect' & input.typeTrack1!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack1!='rect' & input.typeTrack1!='heatmap' & input.typeTrack1!='ideogram'",
conditionalPanel(condition="input.typeTrack1!='bar' | input.directionTrack1=='1'",
radioButtons("coltypeTrack1", HTML("Data color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users.
-For data with four columns, a single character representing a color should be provided. For data with five columns, a character vector containing 2 elements representing two different colors should be provided. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+To customize color for data with multiple columns, users should provide a character string representing one or multiple
+colors separated by commas. For example, 'red' or 'red,orange,blue'.
+To customize color for data with multiple groups, the column indicating different groups should be named as 'color' or 'stack'.
+Users should provide a character strings assigning colors to each group.
+For example, 'a:red;b:green;c:blue', in which 'a b c' represent different data groups.
+Color for data groups without assigned color would be set as 'grey'.
+Hex color codes as '#FF0000' are also supported. See example data for more details.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Custom for data with multi-column" = "2",
+ "Custom for data with multi-group" = "3"), selected="1"),
conditionalPanel(condition="input.coltypeTrack1=='2'",
- textInput("colorTrack1", NULL, value="darkorange")
- )
+ textInput("colorTrack1", NULL, value="red,blue")
+ ),
+ conditionalPanel(condition="input.coltypeTrack1=='3'",
+ textInput("colorcusTrack1", NULL, value="a:red;b:blue;c:cyan")
+ )
)
),
+ conditionalPanel(condition="input.typeTrack1=='line' & !output.stackmd1",
+ radioButtons("fillareaTrack1", HTML("Fill area |
+
+
+ Fill the area below the lines.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
conditionalPanel(condition="input.typeTrack1=='rect'",
- radioButtons("rectTrack1", HTML("Data color |
+ radioButtons("rectTrack1", HTML("Data type |
- The rects are filled with discrete or gradual colors. For discrete data, the fourth column should be a discrete character vector with no more than 50 groups. For gradual data, the fourth column should be a numeric vector. See example data for more details.
+ The rects are filled with gradual or discrete colors. For discrete data, the 4th column
+should be a categorical character vector with no more than 50 groups. For gradual data, the 4th
+column should be a numeric vector. See example data for more details.
|
"), c("Gradual" = "1", "Discrete" = "2"), selected="1"),
@@ -247,19 +397,42 @@ For data with four columns, a single character representing a color should be pr
radioButtons("rectcolTrack1", HTML("Select color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users. For random type, the fourth column of data should be a discrete character vector with no more than 50 groups. For specific type, all groups of data will be filled in a specific color. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+If 'Specific' was chosen, all data will be filled by a specified color.
+If 'Custom' was chosen, the 4th column of the uploaded data should be a categorical character vector with no more than 50 groups.
+Users should provide values as 'a:red;b:green;c:blue', in which 'a b c' represent different
+data category indicated by the 4th column of the uploaded data.
+Color for data without customed color will be set to NULL. Hex color codes as '#FF0000' are also supported.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Specific" = "2", "Custom" = "3"), selected="1"),
conditionalPanel(condition="input.rectcolTrack1=='2'",
textInput("rectcoldisTrack1", NULL, value="red")
+ ),
+ conditionalPanel(condition="input.rectcolTrack1=='3'",
+ textInput("rectcoldiscusTrack1", NULL, value="a:red;b:blue;c:cyan")
)
),
conditionalPanel(condition="input.rectTrack1=='1'",
- selectInput("colrectTrack1", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue", "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
+ selectInput("colrectTrack1", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange",
+ "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold",
+ "lightblue", "navy.yellow", "purple.seagreen", "navy.orange",
+ "navy.cyan", "blue.red", "green.red"))
)
),
- conditionalPanel(condition="input.typeTrack1!='heatmap'",
+ conditionalPanel(condition="input.typeTrack1=='line' & !output.stackmd1 & input.fillareaTrack1=='add'",
+ radioButtons("selreaTrack1", HTML("Area color |
+
+
+ Filled color to the area, which can be identical with lines color or specified by the users. If 'Specific' was chosen, all data will be filled by a specified color as 'orange'.
+ |
+
+ "), c("Identical with lines" = "1", "Specific" = "2"),selected="1"),
+ conditionalPanel(condition="input.selreaTrack1=='2'",
+ textInput("borderareaTrack1", NULL, value="orange")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack1!='heatmap' & input.typeTrack1!='ideogram'",
numericInput("transparencyTrack1", HTML("Color transparency: |
@@ -268,77 +441,83 @@ For data with four columns, a single character representing a color should be pr
|
"), value=1, min=0, max=1, step=0.1)
),
- conditionalPanel(condition="input.typeTrack1!='rect' & input.typeTrack1!='heatmap'",
+ conditionalPanel(condition="input.typeTrack1=='point' & output.stackmd1",
+ textInput("symbolTrack1", HTML("Symbol type: |
+
+
+ Symbols used for different points. Applicable value can be a number in [0-25] or a numeric vector of arbitrary length
+adjusted automatically to the number of data categories. Type ?pch in R console for more details.
+ |
+
+ "), value="16"),
+ numericInput("pointsizeTrack1", "Point size:", value=0.6, min=0, max=1.5, step=0.05)
+ ),
+ conditionalPanel(condition="input.typeTrack1!='rect' & input.typeTrack1!='heatmap' & input.typeTrack1!='ideogram' & !output.stackmd1",
textInput("baselineTrack1", HTML("Y coordinates of baselines: |
- Decimal numbers in [0, 1] to adjust y coordinates of baselines. Numeric vector of arbitrary length is accepted and represent the number of baselines. For example, '0.5' or '0.25,0.5,0.75'.
+ Decimal numbers in [0, 1] to adjust y axis coordinates of baselines. Numeric vector of arbitrary length is also accepted.
+For example, '0.5' or '0.25,0.5,0.75'.
|
- "), value="0.25,0.75"),
+ "), value="0.25,0.75")
+ ),
+ conditionalPanel(condition="input.typeTrack1!='rect' & input.typeTrack1!='heatmap' & input.typeTrack1!='ideogram' & !(input.typeTrack1=='line' & output.stackmd1)",
textInput("colorlineTrack1", HTML("Baselines color(s): |
- The color to be used for the baselines which can be null or a character vector of arbitrary length, which can be adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the baselines which can be null or a character vector of arbitrary length
+adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey")
),
- conditionalPanel(condition="input.typeTrack1!='heatmap'",
+ conditionalPanel(condition="input.typeTrack1!='heatmap' & input.typeTrack1!='ideogram'",
textInput("bgcolTrack1", HTML("Background color(s): |
- Background color for the plotting regions. It can be null or a single value or a vector.
-If it is a vector, colors of arbitrary length can be accepted and adjusted automatically to the same length of sectors.
-For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the background of the plot which can be null or a color vector of arbitrary length
+adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey95")
- ),
-
+ ),
conditionalPanel(condition="input.typeTrack1=='heatmap'",
selectInput("colhmapTrack1", HTML("Colors: |
- Colors used for the heatmap.
+ Colors to be used for the heatmap.
|
- "), choices = c("blue.white.red", "green.black.red", "green.yellow.red", "purple.yellow.red", "blue.green.red", "blue.yellow.green", "cyan.white.deeppink1"), selected="blue.white.red"),
- radioButtons("midhmapTrack1", HTML("Midpoint |
-
-
- The midpoint of track's data. Default to (max+min)/2.
- |
-
- "), c("Default" = "1", "Custom" = "2"), selected="1"),
- conditionalPanel(condition="input.midhmapTrack1=='2'",
- numericInput("midpointTrack1", NULL, value=0, min=-1000000, max=1000000, step=0.5)
- ),
+ "), choices = c("blue.white.red", "green.black.red", "green.yellow.red",
+ "purple.yellow.red", "blue.green.red", "blue.yellow.green",
+ "cyan.white.deeppink1"), selected="blue.white.red"),
radioButtons("lineshmapTrack1", HTML("Add position lines |
- Add genomic position lines between tracks.
+ Add genomic position lines between tracks, which can be used to identify the correspondance between heatmaps and regions.
|
"), c("Yes" = "1", "No" = "2"),selected="2"),
conditionalPanel(condition="input.lineshmapTrack1=='1'",
- numericInput("heightlinesTrack1", HTML("Lines height: |
+ numericInput("heightlinesTrack1", HTML("Position lines height: |
- Height of the lines.
+ Height of the position lines.
|
"), value=0.06, min=0, max=0.8, step=0.01),
- numericInput("marginlinesTrack1", HTML("Lines margin: |
+ numericInput("marginlinesTrack1", HTML("Position lines margin: |
- Margin size of the lines.
+ Margin size of the position lines.
|
"), value=0.01, min=0, max=0.8, step=0.005)
)
),
-
numericInput("heightTrack1", HTML("Track height: |
@@ -353,17 +532,70 @@ For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000'
|
"), value=0.01, min=0, max=0.8, step=0.005),
- conditionalPanel(condition="input.typeTrack1!='heatmap'",
- radioButtons("borderTrack1", "Add borders", c("Yes" = "add", "No" = ""),selected="")
+ conditionalPanel(condition="input.typeTrack1=='heatmap'",
+ radioButtons("gridsborderTrack1", HTML("Add cell borders |
+
+
+ Add borders to the heatmap grids, which can separate cells from each other.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected=""),
+ conditionalPanel(condition="input.gridsborderTrack1=='add'",
+ textInput("colgridsborderTrack1", HTML("Borders color: |
+
+
+ The color to be used for the borders of heatmap grids. For example, 'white' or 'red'.
+Hex color codes as '#FF0000' are also supported.
+ |
+
+ "), value="black")
+ )
),
- textInput("text1", HTML("Add legend text |
+ conditionalPanel(condition="input.typeTrack1!='heatmap' & input.typeTrack1!='ideogram'",
+ radioButtons("borderTrack1", HTML("Add borders |
+
+
+ Add borders to the plotting regions.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
+ conditionalPanel(condition="output.marklabel1",
+ radioButtons("labels1", HTML("Add labels |
+
+
+ Add labels to mark genes or genomic regions for this track using data uploaded in the 'Data upload' menu.
+ |
+
+ "), c("Yes" = "1", "No" = "2"), selected="2")
+ ),
+ conditionalPanel(condition="input.labels1==1",
+ radioButtons("poslabels1", "Labels position", c("Outer" = "outer", "Inner" = "inner"),selected="outer"),
+ numericInput("heightlabels1", HTML("Labels height: |
+
+
+ Height of the labels, which should be greater than 0.
+ |
+
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginlabels1", HTML("Labels margin: |
+
+
+ Margin size of the labels.
+ |
+
+ "), value=0.01, min=0, max=0.8, step=0.005)
+ ),
+
+
+ textInput("text1", HTML("Legend text |
- The text to appear in the legend which can be null or a character.
+ The text to appear in the legend.
|
"), value=NULL),
- conditionalPanel(condition="input.typeTrack1!='rect' & input.typeTrack1!='heatmap' & output.trackdat1",
+ conditionalPanel(condition="input.typeTrack1!='rect' & input.typeTrack1!='heatmap' & input.typeTrack1!='ideogram' & output.trackdat1 & !output.stackmd1",
radioButtons("highlightTrack1", HTML("Highlight regions |
@@ -376,7 +608,7 @@ For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000'
Each row should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color.
-For example, 'Chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
+For example, 'chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
| |
"),
@@ -400,37 +632,58 @@ For example, 'Chr1,1,100000000,red'. Hex color codes as '#FF0000' are also suppo
radioButtons("directionTrack2", HTML("Bar direction |
- Bars can be unidirectional or bidirectional. Bidirectional plot can be used only when track's data
-includes four columns and data will be divided into two groups by boundary value.
+ Bars can be unidirectional or bidirectional. For bidirectional bars, the 4th column which
+contains the data values will be divided into two groups based on the boundary value.
|
"), c("Unidirectional" = "1", "Bidirectional" = "2"), selected="1"),
conditionalPanel(condition="input.directionTrack2=='2'",
numericInput("barBoundary2", "Boundary value:", value=0, step=0.01),
- textInput("coldir1Track2", "Outside color:", value="red"),
- textInput("coldir2Track2", "Inside color:", value="cyan")
+ textInput("coldir1Track2", "Outer color:", value="red"),
+ textInput("coldir2Track2", "Inner color:", value="cyan")
)
- ),
- conditionalPanel(condition="input.typeTrack2!='rect' & input.typeTrack2!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack2!='rect' & input.typeTrack2!='heatmap' & input.typeTrack2!='ideogram'",
conditionalPanel(condition="input.typeTrack2!='bar' | input.directionTrack2=='1'",
radioButtons("coltypeTrack2", HTML("Data color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users.
-For data with four columns, a single character representing a color should be provided. For data with five columns, a character vector containing 2 elements representing two different colors should be provided. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+To customize color for data with multiple columns, users should provide a character string representing one or multiple
+colors separated by commas. For example, 'red' or 'red,orange,blue'.
+To customize color for data with multiple groups, the column indicating different groups should be named as 'color' or 'stack'.
+Users should provide a character strings assigning colors to each group.
+For example, 'a:red;b:green;c:blue', in which 'a b c' represent different data groups.
+Color for data groups without assigned color would be set as 'grey'.
+Hex color codes as '#FF0000' are also supported. See example data for more details.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Custom for data with multi-column" = "2",
+ "Custom for data with multi-group" = "3"), selected="1"),
conditionalPanel(condition="input.coltypeTrack2=='2'",
- textInput("colorTrack2", NULL, value="blue")
+ textInput("colorTrack2", NULL, value="red,blue")
+ ),
+ conditionalPanel(condition="input.coltypeTrack2=='3'",
+ textInput("colorcusTrack2", NULL, value="a:red;b:blue;c:cyan")
)
)
),
+ conditionalPanel(condition="input.typeTrack2=='line' & !output.stackmd2",
+ radioButtons("fillareaTrack2", HTML("Fill area |
+
+
+ Fill the area below the lines.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
conditionalPanel(condition="input.typeTrack2=='rect'",
- radioButtons("rectTrack2", HTML("Data color |
+ radioButtons("rectTrack2", HTML("Data type |
- The rects are filled with discrete or gradual colors. For discrete data, the fourth column should be a discrete character vector with no more than 50 groups. For gradual data, the fourth column should be a numeric vector. See example data for more details.
+ The rects are filled with gradual or discrete colors. For discrete data, the fourth column
+should be a categorical character vector with no more than 50 groups. For gradual data, the fourth
+ column should be a numeric vector. See example data for more details.
|
"), c("Gradual" = "1", "Discrete" = "2"), selected="1"),
@@ -438,19 +691,42 @@ For data with four columns, a single character representing a color should be pr
radioButtons("rectcolTrack2", HTML("Select color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users. For random type, the fourth column of data should be a discrete character vector with no more than 50 groups. For specific type, all groups of data will be filled in a specific color. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+If 'Specific' was chosen, all data will be filled by a specified color.
+If 'Custom' was chosen, the 4th column of the uploaded data should be a categorical character vector with no more than 50 groups.
+Users should provide values as 'a:red;b:green;c:blue', in which 'a b c' represent different
+data category indicated by the 4th column of the uploaded data.
+Color for data without customed color will be set to NULL. Hex color codes as '#FF0000' are also supported.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Specific" = "2", "Custom" = "3"), selected="1"),
conditionalPanel(condition="input.rectcolTrack2=='2'",
textInput("rectcoldisTrack2", NULL, value="red")
- )
+ ),
+ conditionalPanel(condition="input.rectcolTrack2=='3'",
+ textInput("rectcoldiscusTrack2", NULL, value="a:red;b:blue;c:cyan")
+ )
),
conditionalPanel(condition="input.rectTrack2=='1'",
- selectInput("colrectTrack2", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue", "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
+ selectInput("colrectTrack2", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange",
+ "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold",
+ "lightblue", "navy.yellow", "purple.seagreen", "navy.orange",
+ "navy.cyan", "blue.red", "green.red"))
)
),
- conditionalPanel(condition="input.typeTrack2!='heatmap'",
+ conditionalPanel(condition="input.typeTrack2=='line' & !output.stackmd2 & input.fillareaTrack2=='add'",
+ radioButtons("selreaTrack2", HTML("Area color |
+
+
+ Filled color to the area, which can be identical with lines color or specified by the users. If 'Specific' was chosen, all data will be filled by a specified color as 'orange'.
+ |
+
+ "), c("Identical with lines" = "1", "Specific" = "2"),selected="1"),
+ conditionalPanel(condition="input.selreaTrack2=='2'",
+ textInput("borderareaTrack2", NULL, value="orange")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack2!='heatmap' & input.typeTrack2!='ideogram'",
numericInput("transparencyTrack2", HTML("Color transparency: |
@@ -459,27 +735,45 @@ For data with four columns, a single character representing a color should be pr
|
"), value=1, min=0, max=1, step=0.1)
),
- conditionalPanel(condition="input.typeTrack2!='rect' & input.typeTrack2!='heatmap'",
+ conditionalPanel(condition="input.typeTrack2=='point' & output.stackmd2",
+ textInput("symbolTrack2", HTML("Symbol type: |
+
+
+ Symbols used for different points. Applicable value can be a number in [0-25] or a numeric vector of arbitrary length
+adjusted automatically to the number of data categories. Type ?pch in R console for more details.
+ |
+
+ "), value="16"),
+ numericInput("pointsizeTrack2", "Point size:", value=0.6, min=0, max=1.5, step=0.05)
+ ),
+ conditionalPanel(condition="input.typeTrack2!='rect' & input.typeTrack2!='heatmap' & input.typeTrack2!='ideogram' & !output.stackmd2",
textInput("baselineTrack2", HTML("Y coordinates of baselines: |
- Decimal numbers in [0, 1] to adjust y coordinates of baselines. Numeric vector of arbitrary length is accepted and represent the number of baselines. For example, '0.5' or '0.25,0.5,0.75'.
+ Decimal numbers in [0, 1] to adjust y axis coordinates of baselines. Numeric vector of arbitrary length is also accepted.
+For example, '0.5' or '0.25,0.5,0.75'.
|
- "), value="0.25,0.75"),
+ "), value="0.25,0.75")
+ ),
+ conditionalPanel(condition="input.typeTrack2!='rect' & input.typeTrack2!='heatmap' & input.typeTrack2!='ideogram' & !(input.typeTrack2=='line' & output.stackmd2)",
textInput("colorlineTrack2", HTML("Baselines color(s): |
- The color to be used for the baselines which can be null or a character vector of arbitrary length, which can be adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the baselines which can be null or a character vector of arbitrary length
+adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey")
),
- conditionalPanel(condition="input.typeTrack2!='heatmap'",
+ conditionalPanel(condition="input.typeTrack2!='heatmap' & input.typeTrack2!='ideogram'",
textInput("bgcolTrack2", HTML("Background color(s): |
- The color to be used for the background of the plot which can be null or a color vector of arbitrary length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the background of the plot which can be null or a color vector of arbitrary
+length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey95")
@@ -488,39 +782,31 @@ For data with four columns, a single character representing a color should be pr
selectInput("colhmapTrack2", HTML("Colors: |
- Colors used for the heatmap.
- |
-
- "), choices = c("blue.white.red", "green.black.red", "green.yellow.red", "purple.yellow.red", "blue.green.red", "blue.yellow.green", "cyan.white.deeppink1"), selected="blue.white.red"),
- radioButtons("midhmapTrack2", HTML("Midpoint |
-
-
- The midpoint of track's data. Default to (max+min)/2.
+ Colors to be used for the heatmap.
|
- "), c("Default" = "1", "Custom" = "2"), selected="1"),
- conditionalPanel(condition="input.midhmapTrack2=='2'",
- numericInput("midpointTrack2", NULL, value=0, min=-1000000, max=1000000, step=0.5)
- ),
+ "), choices = c("blue.white.red", "green.black.red", "green.yellow.red",
+ "purple.yellow.red", "blue.green.red", "blue.yellow.green",
+ "cyan.white.deeppink1"), selected="blue.white.red"),
radioButtons("lineshmapTrack2", HTML("Add position lines |
- Add genomic position lines between tracks.
+ Add genomic position lines between tracks, which can be used to identify the correspondance between heatmaps and regions.
|
"), c("Yes" = "1", "No" = "2"),selected="2"),
conditionalPanel(condition="input.lineshmapTrack2=='1'",
- numericInput("heightlinesTrack2", HTML("Lines height: |
+ numericInput("heightlinesTrack2", HTML("Position lines height: |
- Height of the lines.
+ Height of the position lines.
|
"), value=0.06, min=0, max=0.8, step=0.01),
- numericInput("marginlinesTrack2", HTML("Lines margin: |
+ numericInput("marginlinesTrack2", HTML("Position lines margin: |
- Margin size of the lines.
+ Margin size of the position lines.
|
"), value=0.01, min=0, max=0.8, step=0.005)
@@ -540,17 +826,68 @@ For data with four columns, a single character representing a color should be pr
"), value=0.01, min=0, max=0.8, step=0.005),
- conditionalPanel(condition="input.typeTrack2!='heatmap'",
- radioButtons("borderTrack2", "Add borders", c("Yes" = "add", "No" = ""),selected="")
+ conditionalPanel(condition="input.typeTrack2=='heatmap'",
+ radioButtons("gridsborderTrack2", HTML("Add cell borders |
+
+
+ Add borders to the heatmap grids, which can separate cells from each other.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected=""),
+ conditionalPanel(condition="input.gridsborderTrack2=='add'",
+ textInput("colgridsborderTrack2", HTML("Borders color: |
+
+
+ The color to be used for the borders of heatmap grids. For example, 'white' or 'red'.
+Hex color codes as '#FF0000' are also supported.
+ |
+
+ "), value="black")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack2!='heatmap' & input.typeTrack2!='ideogram'",
+ radioButtons("borderTrack2", HTML("Add borders |
+
+
+ Add borders to the plotting regions.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
+ conditionalPanel(condition="output.marklabel2",
+ radioButtons("labels2", HTML("Add labels |
+
+
+ Add labels to mark genes or genomic regions for this track using data uploaded in the 'Data upload' menu.
+ |
+
+ "), c("Yes" = "1", "No" = "2"), selected="2")
+ ),
+ conditionalPanel(condition="input.labels2==1",
+ radioButtons("poslabels2", "Labels position", c("Outer" = "outer", "Inner" = "inner"),selected="outer"),
+ numericInput("heightlabels2", HTML("Labels height: |
+
+
+ Height of the labels, which should be greater than 0.
+ |
+
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginlabels2", HTML("Labels margin: |
+
+
+ Margin size of the labels.
+ |
+
+ "), value=0.01, min=0, max=0.8, step=0.005)
),
- textInput("text2", HTML("Add legend text |
+ textInput("text2", HTML("Legend text |
- The text to appear in the legend which can be null or a character.
+ The text to appear in the legend.
|
"), value=NULL),
- conditionalPanel(condition="input.typeTrack2!='rect' & input.typeTrack2!='heatmap' & output.trackdat2",
+ conditionalPanel(condition="input.typeTrack2!='rect' & input.typeTrack2!='heatmap' & input.typeTrack2!='ideogram' & output.trackdat2 & !output.stackmd2",
radioButtons("highlightTrack2", HTML("Highlight regions |
@@ -562,7 +899,8 @@ For data with four columns, a single character representing a color should be pr
HTML(" Paste data below: |
- Each row should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color. For example, 'Chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
+ Each row should contain four components separated by commas including the chromosome ID, start coordinate,
+end coordinate and the specified color. For example, 'chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
|
"),
@@ -586,36 +924,58 @@ For data with four columns, a single character representing a color should be pr
radioButtons("directionTrack3", HTML(" Bar direction |
- Bars can be shown in unidirectional or bidirectional type. Bidirectional type can be used only when track's data includes four columns and data will be divided into two groups by boundary value.
+ Bars can be unidirectional or bidirectional. For bidirectional bars, the 4th column which
+contains the data values will be divided into two groups based on the boundary value.
|
"), c("Unidirectional" = "1", "Bidirectional" = "2"), selected="1"),
conditionalPanel(condition="input.directionTrack3=='2'",
numericInput("barBoundary3", "Boundary value:", value=0, step=0.01),
- textInput("coldir1Track3", "Outside color:", value="red"),
- textInput("coldir2Track3", "Inside color:", value="cyan")
+ textInput("coldir1Track3", "Outer color:", value="red"),
+ textInput("coldir2Track3", "Inner color:", value="cyan")
)
- ),
- conditionalPanel(condition="input.typeTrack3!='rect' & input.typeTrack3!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack3!='rect' & input.typeTrack3!='heatmap' & input.typeTrack3!='ideogram'",
conditionalPanel(condition="input.typeTrack3!='bar' | input.directionTrack3=='1'",
radioButtons("coltypeTrack3", HTML(" Data color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users.
-For data with four columns, a single character representing a color should be provided. For data with five columns, a character vector containing 2 elements representing two different colors should be provided. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+To customize color for data with multiple columns, users should provide a character string representing one or multiple
+colors separated by commas. For example, 'red' or 'red,orange,blue'.
+To customize color for data with multiple groups, the column indicating different groups should be named as 'color' or 'stack'.
+Users should provide a character strings assigning colors to each group.
+For example, 'a:red;b:green;c:blue', in which 'a b c' represent different data groups.
+Color for data groups without assigned color would be set as 'grey'.
+Hex color codes as '#FF0000' are also supported. See example data for more details.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Custom for data with multi-column" = "2",
+ "Custom for data with multi-group" = "3"), selected="1"),
conditionalPanel(condition="input.coltypeTrack3=='2'",
- textInput("colorTrack3", NULL, value="cyan")
+ textInput("colorTrack3", NULL, value="red,blue")
+ ),
+ conditionalPanel(condition="input.coltypeTrack3=='3'",
+ textInput("colorcusTrack3", NULL, value="a:red;b:blue;c:cyan")
)
)
),
+ conditionalPanel(condition="input.typeTrack3=='line' & !output.stackmd3",
+ radioButtons("fillareaTrack3", HTML(" Fill area |
+
+
+ Fill the area below the lines.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
conditionalPanel(condition="input.typeTrack3=='rect'",
- radioButtons("rectTrack3", HTML(" Data color |
+ radioButtons("rectTrack3", HTML("Data type |
- The rects are filled with discrete or gradual colors. For discrete data, the fourth column should be a discrete character vector with no more than 50 groups. For gradual data, the fourth column should be a numeric vector. See example data for more details.
+ The rects are filled with gradual or discrete colors. For discrete data, the fourth column
+should be a categorical character vector with no more than 50 groups. For gradual data, the fourth
+column should be a numeric vector. See example data for more details.
|
"), c("Gradual" = "1", "Discrete" = "2"), selected="1"),
@@ -623,19 +983,42 @@ For data with four columns, a single character representing a color should be pr
radioButtons("rectcolTrack3", HTML("Select color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users. For random type, the fourth column of data should be a discrete character vector with no more than 50 groups. For specific type, all groups of data will be filled in a specific color. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+If 'Specific' was chosen, all data will be filled by a specified color.
+If 'Custom' was chosen, the 4th column of the uploaded data should be a categorical character vector with no more than 50 groups.
+Users should provide values as 'a:red;b:green;c:blue', in which 'a b c' represent different
+data category indicated by the 4th column of the uploaded data.
+Color for data without customed color will be set to NULL. Hex color codes as '#FF0000' are also supported.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Specific" = "2", "Custom" = "3"), selected="1"),
conditionalPanel(condition="input.rectcolTrack3=='2'",
textInput("rectcoldisTrack3", NULL, value="red")
+ ),
+ conditionalPanel(condition="input.rectcolTrack3=='3'",
+ textInput("rectcoldiscusTrack3", NULL, value="a:red;b:blue;c:cyan")
)
),
conditionalPanel(condition="input.rectTrack3=='1'",
- selectInput("colrectTrack3", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue", "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
+ selectInput("colrectTrack3", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange",
+ "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold",
+ "lightblue", "navy.yellow", "purple.seagreen", "navy.orange",
+ "navy.cyan", "blue.red", "green.red"))
)
),
- conditionalPanel(condition="input.typeTrack3!='heatmap'",
+ conditionalPanel(condition="input.typeTrack3=='line' & !output.stackmd3 & input.fillareaTrack3=='add'",
+ radioButtons("selreaTrack3", HTML("Area color |
+
+
+ Filled color to the area, which can be identical with lines color or specified by the users. If 'Specific' was chosen, all data will be filled by a specified color as 'orange'.
+ |
+
+ "), c("Identical with lines" = "1", "Specific" = "2"),selected="1"),
+ conditionalPanel(condition="input.selreaTrack3=='2'",
+ textInput("borderareaTrack3", NULL, value="orange")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack3!='heatmap' & input.typeTrack3!='ideogram'",
numericInput("transparencyTrack3", HTML("Color transparency: |
@@ -644,27 +1027,45 @@ For data with four columns, a single character representing a color should be pr
|
"), value=1, min=0, max=1, step=0.1)
),
- conditionalPanel(condition="input.typeTrack3!='rect' & input.typeTrack3!='heatmap'",
+ conditionalPanel(condition="input.typeTrack3=='point' & output.stackmd3",
+ textInput("symbolTrack3", HTML("Symbol type: |
+
+
+ Symbols used for different points. Applicable value can be a number in [0-25] or a numeric vector of arbitrary length
+adjusted automatically to the number of data categories. Type ?pch in R console for more details.
+ |
+
+ "), value="16"),
+ numericInput("pointsizeTrack3", "Point size:", value=0.6, min=0, max=1.5, step=0.05)
+ ),
+ conditionalPanel(condition="input.typeTrack3!='rect' & input.typeTrack3!='heatmap' & input.typeTrack3!='ideogram' & !output.stackmd3",
textInput("baselineTrack3", HTML("Y coordinates of baselines: |
- Decimal numbers in [0, 1] to adjust y coordinates of baselines. Numeric vector of arbitrary length is accepted and represent the number of baselines. For example, '0.5' or '0.25,0.5,0.75'.
+ Decimal numbers in [0, 1] to adjust y axis coordinates of baselines. Numeric vector of arbitrary length is also accepted.
+For example, '0.5' or '0.25,0.5,0.75'.
|
- "), value="0.25,0.75"),
+ "), value="0.25,0.75")
+ ),
+ conditionalPanel(condition="input.typeTrack3!='rect' & input.typeTrack3!='heatmap' & input.typeTrack3!='ideogram' & !(input.typeTrack3=='line' & output.stackmd3)",
textInput("colorlineTrack3", HTML("Baselines color(s): |
- The color to be used for the baselines which can be null or a character vector of arbitrary length, which can be adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the baselines which can be null or a character vector of arbitrary length
+adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey")
),
- conditionalPanel(condition="input.typeTrack3!='heatmap'",
+ conditionalPanel(condition="input.typeTrack3!='heatmap' & input.typeTrack3!='ideogram'",
textInput("bgcolTrack3", HTML("Background color(s): |
- The color to be used for the background of the plot which can be null or a color vector of arbitrary length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the background of the plot which can be null or a color vector of
+arbitrary length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey95")
@@ -673,39 +1074,31 @@ For data with four columns, a single character representing a color should be pr
selectInput("colhmapTrack3", HTML("Colors: |
- Colors used for the heatmap.
- |
-
- "), choices = c("blue.white.red", "green.black.red", "green.yellow.red", "purple.yellow.red", "blue.green.red", "blue.yellow.green", "cyan.white.deeppink1"), selected="blue.white.red"),
- radioButtons("midhmapTrack3", HTML("Midpoint |
-
-
- The midpoint of track's data. Default to (max+min)/2.
+ Colors to be used for the heatmap.
|
- "), c("Default" = "1", "Custom" = "2"), selected="1"),
- conditionalPanel(condition="input.midhmapTrack3=='2'",
- numericInput("midpointTrack3", NULL, value=0, min=-1000000, max=1000000, step=0.5)
- ),
+ "), choices = c("blue.white.red", "green.black.red", "green.yellow.red",
+ "purple.yellow.red", "blue.green.red", "blue.yellow.green",
+ "cyan.white.deeppink1"), selected="blue.white.red"),
radioButtons("lineshmapTrack3", HTML("Add position lines |
- Add genomic position lines between tracks.
+ Add genomic position lines between tracks, which can be used to identify the correspondance between heatmaps and regions.
|
"), c("Yes" = "1", "No" = "2"),selected="2"),
conditionalPanel(condition="input.lineshmapTrack3=='1'",
- numericInput("heightlinesTrack3", HTML("Lines height: |
+ numericInput("heightlinesTrack3", HTML("Position lines height: |
- Height of the lines.
+ Height of the position lines.
|
"), value=0.06, min=0, max=0.8, step=0.01),
- numericInput("marginlinesTrack3", HTML("Lines margin: |
+ numericInput("marginlinesTrack3", HTML("Position lines margin: |
- Margin size of the lines.
+ Margin size of the position lines.
|
"), value=0.01, min=0, max=0.8, step=0.005)
@@ -725,17 +1118,68 @@ For data with four columns, a single character representing a color should be pr
"), value=0.01, min=0, max=0.8, step=0.005),
- conditionalPanel(condition="input.typeTrack3!='heatmap'",
- radioButtons("borderTrack3", "Add borders", c("Yes" = "add", "No" = ""),selected="")
+ conditionalPanel(condition="input.typeTrack3=='heatmap'",
+ radioButtons("gridsborderTrack3", HTML("Add cell borders |
+
+
+ Add borders to the heatmap grids, which can separate cells from each other.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected=""),
+ conditionalPanel(condition="input.gridsborderTrack3=='add'",
+ textInput("colgridsborderTrack3", HTML("Borders color: |
+
+
+ The color to be used for the borders of heatmap grids. For example, 'white' or 'red'.
+Hex color codes as '#FF0000' are also supported.
+ |
+
+ "), value="black")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack3!='heatmap' & input.typeTrack3!='ideogram'",
+ radioButtons("borderTrack3", HTML("Add borders |
+
+
+ Add borders to the plotting regions.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
+ conditionalPanel(condition="output.marklabel3",
+ radioButtons("labels3", HTML("Add labels |
+
+
+ Add labels to mark genes or genomic regions for this track using data uploaded in the 'Data upload' menu.
+ |
+
+ "), c("Yes" = "1", "No" = "2"), selected="2")
+ ),
+ conditionalPanel(condition="input.labels3==1",
+ radioButtons("poslabels3", "Labels position", c("Outer" = "outer", "Inner" = "inner"),selected="outer"),
+ numericInput("heightlabels3", HTML("Labels height: |
+
+
+ Height of the labels, which should be greater than 0.
+ |
+
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginlabels3", HTML("Labels margin: |
+
+
+ Margin size of the labels.
+ |
+
+ "), value=0.01, min=0, max=0.8, step=0.005)
),
- textInput("text3", HTML("Add legend text |
+ textInput("text3", HTML("Legend text |
- The text to appear in the legend which can be null or a character.
+ The text to appear in the legend.
|
"), value=NULL),
- conditionalPanel(condition="input.typeTrack3!='rect' & input.typeTrack3!='heatmap' & output.trackdat3",
+ conditionalPanel(condition="input.typeTrack3!='rect' & input.typeTrack3!='heatmap' & input.typeTrack3!='ideogram' & output.trackdat3 & !output.stackmd3",
radioButtons("highlightTrack3", HTML("Highlight regions |
@@ -747,7 +1191,8 @@ For data with four columns, a single character representing a color should be pr
HTML(" Paste data below: |
- Each row should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color. For example, 'Chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
+ Each row should contain four components separated by commas including the chromosome ID, start coordinate,
+end coordinate and the specified color. For example, 'chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
|
"),
@@ -771,36 +1216,58 @@ For data with four columns, a single character representing a color should be pr
radioButtons("directionTrack4", HTML(" Bar direction |
- Bars can be shown in unidirectional or bidirectional type. Bidirectional type can be used only when track's data includes four columns and data will be divided into two groups by boundary value.
+ Bars can be unidirectional or bidirectional. For bidirectional bars, the 4th column which
+contains the data values will be divided into two groups based on the boundary value.
|
"), c("Unidirectional" = "1", "Bidirectional" = "2"), selected="2"),
conditionalPanel(condition="input.directionTrack4=='2'",
numericInput("barBoundary4", "Boundary value:", value=0, step=0.01),
- textInput("coldir1Track4", "Outside color:", value="red"),
- textInput("coldir2Track4", "Inside color:", value="cyan")
+ textInput("coldir1Track4", "Outer color:", value="red"),
+ textInput("coldir2Track4", "Inner color:", value="cyan")
)
- ),
- conditionalPanel(condition="input.typeTrack4!='rect' & input.typeTrack4!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack4!='rect' & input.typeTrack4!='heatmap' & input.typeTrack4!='ideogram'",
conditionalPanel(condition="input.typeTrack4!='bar' | input.directionTrack4=='1'",
radioButtons("coltypeTrack4", HTML(" Data color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users.
-For data with four columns, a single character representing a color should be provided. For data with five columns, a character vector containing 2 elements representing two different colors should be provided. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+To customize color for data with multiple columns, users should provide a character string representing one or multiple
+colors separated by commas. For example, 'red' or 'red,orange,blue'.
+To customize color for data with multiple groups, the column indicating different groups should be named as 'color' or 'stack'.
+Users should provide a character strings assigning colors to each group.
+For example, 'a:red;b:green;c:blue', in which 'a b c' represent different data groups.
+Color for data groups without assigned color would be set as 'grey'.
+Hex color codes as '#FF0000' are also supported. See example data for more details.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Custom for data with multi-column" = "2",
+ "Custom for data with multi-group" = "3"), selected="1"),
conditionalPanel(condition="input.coltypeTrack4=='2'",
- textInput("colorTrack4", NULL, value="yellow")
+ textInput("colorTrack4", NULL, value="red,blue")
+ ),
+ conditionalPanel(condition="input.coltypeTrack4=='3'",
+ textInput("colorcusTrack4", NULL, value="a:red;b:blue;c:cyan")
)
)
),
+ conditionalPanel(condition="input.typeTrack4=='line' & !output.stackmd4",
+ radioButtons("fillareaTrack4", HTML(" Fill area |
+
+
+ Fill the area below the lines.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
conditionalPanel(condition="input.typeTrack4=='rect'",
- radioButtons("rectTrack4", HTML(" Data color |
+ radioButtons("rectTrack4", HTML("Data type |
- The rects are filled with discrete or gradual colors. For discrete data, the fourth column should be a discrete character vector with no more than 50 groups. For gradual data, the fourth column should be a numeric vector. See example data for more details.
+ The rects are filled with gradual or discrete colors. For discrete data, the fourth column
+should be a categorical character vector with no more than 50 groups. For gradual data, the fourth
+column should be a numeric vector. See example data for more details.
|
"), c("Gradual" = "1", "Discrete" = "2"), selected="1"),
@@ -808,19 +1275,42 @@ For data with four columns, a single character representing a color should be pr
radioButtons("rectcolTrack4", HTML("Select color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users. For random type, the fourth column of data should be a discrete character vector with no more than 50 groups. For specific type, all groups of data will be filled in a specific color. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+If 'Specific' was chosen, all data will be filled by a specified color.
+If 'Custom' was chosen, the 4th column of the uploaded data should be a categorical character vector with no more than 50 groups.
+Users should provide values as 'a:red;b:green;c:blue', in which 'a b c' represent different
+data category indicated by the 4th column of the uploaded data.
+Color for data without customed color will be set to NULL. Hex color codes as '#FF0000' are also supported.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Specific" = "2", "Custom" = "3"), selected="1"),
conditionalPanel(condition="input.rectcolTrack4=='2'",
textInput("rectcoldisTrack4", NULL, value="red")
+ ),
+ conditionalPanel(condition="input.rectcolTrack4=='3'",
+ textInput("rectcoldiscusTrack4", NULL, value="a:red;b:blue;c:cyan")
)
),
conditionalPanel(condition="input.rectTrack4=='1'",
- selectInput("colrectTrack4", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue", "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
+ selectInput("colrectTrack4", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange",
+ "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold",
+ "lightblue", "navy.yellow", "purple.seagreen", "navy.orange",
+ "navy.cyan", "blue.red", "green.red"))
)
),
- conditionalPanel(condition="input.typeTrack4!='heatmap'",
+ conditionalPanel(condition="input.typeTrack4=='line' & !output.stackmd4 & input.fillareaTrack4=='add'",
+ radioButtons("selreaTrack4", HTML("Area color |
+
+
+ Filled color to the area, which can be identical with lines color or specified by the users. If 'Specific' was chosen, all data will be filled by a specified color as 'orange'.
+ |
+
+ "), c("Identical with lines" = "1", "Specific" = "2"),selected="1"),
+ conditionalPanel(condition="input.selreaTrack4=='2'",
+ textInput("borderareaTrack4", NULL, value="orange")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack4!='heatmap' & input.typeTrack4!='ideogram'",
numericInput("transparencyTrack4", HTML("Color transparency: |
@@ -829,28 +1319,45 @@ For data with four columns, a single character representing a color should be pr
|
"), value=1, min=0, max=1, step=0.1)
),
- conditionalPanel(condition="input.typeTrack4!='rect' & input.typeTrack4!='heatmap'",
+ conditionalPanel(condition="input.typeTrack4=='point' & output.stackmd4",
+ textInput("symbolTrack4", HTML("Symbol type: |
+
+
+ Symbols used for different points. Applicable value can be a number in [0-25] or a numeric vector of arbitrary length
+adjusted automatically to the number of data categories. Type ?pch in R console for more details.
+ |
+
+ "), value="16"),
+ numericInput("pointsizeTrack4", "Point size:", value=0.6, min=0, max=1.5, step=0.05)
+ ),
+ conditionalPanel(condition="input.typeTrack4!='rect' & input.typeTrack4!='heatmap' & input.typeTrack4!='ideogram' & !output.stackmd4",
textInput("baselineTrack4", HTML("Y coordinates of baselines: |
- Decimal numbers in [0, 1] to adjust y coordinates of baselines. Numeric vector of arbitrary length is accepted and represent the number of baselines. For example, '0.5' or '0.25,0.5,0.75'.
+ Decimal numbers in [0, 1] to adjust y axis coordinates of baselines. Numeric vector of arbitrary length is also accepted.
+For example, '0.5' or '0.25,0.5,0.75'.
|
- "), value="0.25,0.75"),
+ "), value="0.25,0.75")
+ ),
+ conditionalPanel(condition="input.typeTrack4!='rect' & input.typeTrack4!='heatmap' & input.typeTrack4!='ideogram' & !(input.typeTrack4=='line' & output.stackmd4)",
textInput("colorlineTrack4", HTML("Baselines color(s): |
- The color to be used for the baselines which can be null or a character vector of arbitrary length, which can be adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the baselines which can be null or a character vector of arbitrary length
+adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey")
),
- conditionalPanel(condition="input.typeTrack4!='heatmap'",
+ conditionalPanel(condition="input.typeTrack4!='heatmap' & input.typeTrack4!='ideogram'",
textInput("bgcolTrack4", HTML("Background color(s): |
- The color to be used for the background of the plot which can be null or a color vector of arbitrary length adjusted automatically to the number of sectors.
-For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the background of the plot which can be null or a color vector of arbitrary length
+adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey95")
@@ -859,39 +1366,31 @@ For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000'
selectInput("colhmapTrack4", HTML("Colors: |
- Colors used for the heatmap.
- |
-
- "), choices = c("blue.white.red", "green.black.red", "green.yellow.red", "purple.yellow.red", "blue.green.red", "blue.yellow.green", "cyan.white.deeppink1"), selected="blue.white.red"),
- radioButtons("midhmapTrack4", HTML("Midpoint |
-
-
- The midpoint of track's data. Default to (max+min)/2.
+ Colors to be used for the heatmap.
|
- "), c("Default" = "1", "Custom" = "2"), selected="1"),
- conditionalPanel(condition="input.midhmapTrack4=='2'",
- numericInput("midpointTrack4", NULL, value=0, min=-1000000, max=1000000, step=0.5)
- ),
+ "), choices = c("blue.white.red", "green.black.red", "green.yellow.red",
+ "purple.yellow.red", "blue.green.red", "blue.yellow.green",
+ "cyan.white.deeppink1"), selected="blue.white.red"),
radioButtons("lineshmapTrack4", HTML("Add position lines |
- Add genomic position lines between tracks.
+ Add genomic position lines between tracks, which can be used to identify the correspondance between heatmaps and regions.
|
"), c("Yes" = "1", "No" = "2"),selected="2"),
conditionalPanel(condition="input.lineshmapTrack4=='1'",
- numericInput("heightlinesTrack4", HTML("Lines height: |
+ numericInput("heightlinesTrack4", HTML("Position lines height: |
- Height of the lines.
+ Height of the position lines.
|
"), value=0.06, min=0, max=0.8, step=0.01),
- numericInput("marginlinesTrack4", HTML("Lines margin: |
+ numericInput("marginlinesTrack4", HTML("Position lines margin: |
- Margin size of the lines.
+ Margin size of the position lines.
|
"), value=0.01, min=0, max=0.8, step=0.005)
@@ -911,21 +1410,72 @@ For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000'
"), value=0.01, min=0, max=0.8, step=0.005),
- conditionalPanel(condition="input.typeTrack4!='heatmap'",
- radioButtons("borderTrack4", "Add borders", c("Yes" = "add", "No" = ""),selected="")
+ conditionalPanel(condition="input.typeTrack4=='heatmap'",
+ radioButtons("gridsborderTrack4", HTML("Add cell borders |
+
+
+ Add borders to the heatmap grids, which can separate cells from each other.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected=""),
+ conditionalPanel(condition="input.gridsborderTrack4=='add'",
+ textInput("colgridsborderTrack4", HTML("Borders color: |
+
+
+ The color to be used for the borders of heatmap grids. For example, 'white' or 'red'.
+Hex color codes as '#FF0000' are also supported.
+ |
+
+ "), value="black")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack4!='heatmap' & input.typeTrack4!='ideogram'",
+ radioButtons("borderTrack4", HTML("Add borders |
+
+
+ Add borders to the plotting regions.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
),
- textInput("text4", HTML("Add legend text |
+ conditionalPanel(condition="output.marklabel4",
+ radioButtons("labels4", HTML("Add labels |
+
+
+ Add labels to mark genes or genomic regions for this track using data uploaded in the 'Data upload' menu./p>
+ |
+
+ "), c("Yes" = "1", "No" = "2"), selected="2")
+ ),
+ conditionalPanel(condition="input.labels4==1",
+ radioButtons("poslabels4", "Labels position", c("Outer" = "outer", "Inner" = "inner"),selected="outer"),
+ numericInput("heightlabels4", HTML("Labels height: |
- The text to appear in the legend which can be null or a character.
+ Height of the labels, which should be greater than 0.
+ |
+
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginlabels4", HTML("Labels margin: |
+
+
+ Margin size of the labels.
+ |
+
+ "), value=0.01, min=0, max=0.8, step=0.005)
+ ),
+ textInput("text4", HTML("Legend text |
+
+
+ The text to appear in the legend.
|
"), value=NULL),
- conditionalPanel(condition="input.typeTrack4!='rect' & input.typeTrack4!='heatmap' & output.trackdat4",
+ conditionalPanel(condition="input.typeTrack4!='rect' & input.typeTrack4!='heatmap' & input.typeTrack4!='ideogram' & output.trackdat4 & !output.stackmd4",
radioButtons("highlightTrack4", HTML("Highlight regions |
- Input genomic regions to be highlighted with specified colors.
+ Genomic regions to be highlighted with specified colors.
|
"), c("Show" = "1", "Hide" = "2"), selected="2"),
@@ -933,7 +1483,8 @@ For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000'
HTML("Paste data below: |
- Each row should contain four columns separated by commas indicating the chromosome ID, start coordinate, end coordinate and specified color. For example, 'Chr1,1,100000000,red'. Hex color codes like '#FF0000' are also supported.
+ Each row should contain four columns separated by commas indicating the chromosome ID, start coordinate,
+end coordinate and specified color. For example, 'chr1,1,100000000,red'. Hex color codes like '#FF0000' are also supported.
|
"),
@@ -957,36 +1508,58 @@ For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000'
radioButtons("directionTrack5", HTML("Bar direction |
- Bars can be shown in unidirectional or bidirectional type. Bidirectional type can be used only when track's data includes four columns and data will be divided into two groups by boundary value.
+ Bars can be unidirectional or bidirectional. For bidirectional bars, the 4th column which
+contains the data values will be divided into two groups based on the boundary value.
|
"), c("Unidirectional" = "1", "Bidirectional" = "2"), selected="2"),
conditionalPanel(condition="input.directionTrack5=='2'",
numericInput("barBoundary5", "Boundary value:", value=0, step=0.01),
- textInput("coldir1Track5", "Outside color:", value="red"),
- textInput("coldir2Track5", "Inside color:", value="cyan")
+ textInput("coldir1Track5", "Outer color:", value="red"),
+ textInput("coldir2Track5", "Inner color:", value="cyan")
)
- ),
- conditionalPanel(condition="input.typeTrack5!='rect' & input.typeTrack5!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack5!='rect' & input.typeTrack5!='heatmap' & input.typeTrack5!='ideogram'",
conditionalPanel(condition="input.typeTrack5!='bar' | input.directionTrack5=='1'",
radioButtons("coltypeTrack5", HTML("Data color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users.
-For data with four columns, a single character representing a color should be provided. For data with five columns, a character vector containing 2 elements representing two different colors should be provided. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+To customize color for data with multiple columns, users should provide a character string representing one or multiple
+colors separated by commas. For example, 'red' or 'red,orange,blue'.
+To customize color for data with multiple groups, the column indicating different groups should be named as 'color' or 'stack'.
+Users should provide a character strings assigning colors to each group.
+For example, 'a:red;b:green;c:blue', in which 'a b c' represent different data groups.
+Color for data groups without assigned color would be set as 'grey'.
+Hex color codes as '#FF0000' are also supported. See example data for more details.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Custom for data with multi-column" = "2",
+ "Custom for data with multi-group" = "3"), selected="1"),
conditionalPanel(condition="input.coltypeTrack5=='2'",
- textInput("colorTrack5", NULL, value="purple")
+ textInput("colorTrack5", NULL, value="red,blue")
+ ),
+ conditionalPanel(condition="input.coltypeTrack5=='3'",
+ textInput("colorcusTrack5", NULL, value="a:red;b:blue;c:cyan")
)
)
),
+ conditionalPanel(condition="input.typeTrack5=='line' & !output.stackmd5",
+ radioButtons("fillareaTrack5", HTML("Fill area |
+
+
+ Fill the area below the lines.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
conditionalPanel(condition="input.typeTrack5=='rect'",
- radioButtons("rectTrack5", HTML("Data color |
+ radioButtons("rectTrack5", HTML("Data type |
- The rects are filled with discrete or gradual colors. For discrete data, the fourth column should be a discrete character vector with no more than 50 groups. For gradual data, the fourth column should be a numeric vector. See example data for more details.
+ The rects are filled with gradual or discrete colors. For discrete data, the fourth column
+should be a categorical character vector with no more than 50 groups. For gradual data, the fourth
+column should be a numeric vector. See example data for more details.
|
"), c("Gradual" = "1", "Discrete" = "2"), selected="2"),
@@ -994,19 +1567,41 @@ For data with four columns, a single character representing a color should be pr
radioButtons("rectcolTrack5", HTML("Select color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users. For random type, the fourth column of data should be a discrete character vector with no more than 50 groups. For specific type, all groups of data will be filled in a specific color. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+If 'Specific' was chosen, all data will be filled by a specified color.
+If 'Custom' was chosen, the 4th column of the uploaded data should be a categorical character vector with no more than 50 groups.
+Users should provide values as 'a:red;b:green;c:blue', in which 'a b c' represent different
+data category indicated by the 4th column of the uploaded data.
+Color for data without customed color will be set to NULL. Hex color codes as '#FF0000' are also supported.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Specific" = "2", "Custom" = "3"), selected="1"),
conditionalPanel(condition="input.rectcolTrack5=='2'",
textInput("rectcoldisTrack5", NULL, value="red")
+ ),
+ conditionalPanel(condition="input.rectcolTrack5=='3'",
+ textInput("rectcoldiscusTrack5", NULL, value="a:red;b:blue;c:cyan")
)
),
conditionalPanel(condition="input.rectTrack5=='1'",
- selectInput("colrectTrack5", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue", "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
+ selectInput("colrectTrack5", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow",
+ "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue",
+ "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
)
),
- conditionalPanel(condition="input.typeTrack5!='heatmap'",
+ conditionalPanel(condition="input.typeTrack5=='line' & !output.stackmd5 & input.fillareaTrack5=='add'",
+ radioButtons("selreaTrack5", HTML("Area color |
+
+
+ Filled color to the area, which can be identical with lines color or specified by the users. If 'Specific' was chosen, all data will be filled by a specified color as 'orange'.
+ |
+
+ "), c("Identical with lines" = "1", "Specific" = "2"),selected="1"),
+ conditionalPanel(condition="input.selreaTrack5=='2'",
+ textInput("borderareaTrack5", NULL, value="orange")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack5!='heatmap' & input.typeTrack5!='ideogram'",
numericInput("transparencyTrack5", HTML("Color transparency: |
@@ -1014,28 +1609,45 @@ For data with four columns, a single character representing a color should be pr
|
"), value=1, min=0, max=1, step=0.1)
- ),
- conditionalPanel(condition="input.typeTrack5!='rect' & input.typeTrack5!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack5=='point' & output.stackmd5",
+ textInput("symbolTrack5", HTML("Symbol type: |
+
+
+ Symbols used for different points. Applicable value can be a number in [0-25] or a numeric vector of arbitrary length
+adjusted automatically to the number of data categories. Type ?pch in R console for more details.
+ |
+
+ "), value="16"),
+ numericInput("pointsizeTrack5", "Point size:", value=0.6, min=0, max=1.5, step=0.05)
+ ),
+ conditionalPanel(condition="input.typeTrack5!='rect' & input.typeTrack5!='heatmap' & input.typeTrack5!='ideogram' & !output.stackmd5",
textInput("baselineTrack5", HTML("Y coordinates of baselines: |
- Decimal numbers in [0, 1] to adjust y coordinates of baselines. Numeric vector of arbitrary length is accepted and represent the number of baselines. For example, '0.5' or '0.25,0.5,0.75'.
+ Decimal numbers in [0, 1] to adjust y axis coordinates of baselines. Numeric vector of arbitrary length is also accepted.
+For example, '0.5' or '0.25,0.5,0.75'.
|
- "), value="0.25,0.75"),
+ "), value="0.25,0.75")
+ ),
+ conditionalPanel(condition="input.typeTrack5!='rect' & input.typeTrack5!='heatmap' & input.typeTrack5!='ideogram' & !(input.typeTrack5=='line' & output.stackmd5)",
textInput("colorlineTrack5", HTML("Baselines color(s): |
- The color to be used for the baselines which can be null or a character vector of arbitrary length, which can be adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the baselines which can be null or a character vector of arbitrary length
+adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'.
+ Hex color codes as '#FF0000' are also supported.
|
"), value="grey")
),
- conditionalPanel(condition="input.typeTrack5!='heatmap'",
+ conditionalPanel(condition="input.typeTrack5!='heatmap' & input.typeTrack5!='ideogram'",
textInput("bgcolTrack5", HTML("Background color(s): |
- The color to be used for the background of the plot which can be null or a color vector of arbitrary length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the background of the plot which can be null or a color vector of arbitrary length adjusted
+automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
|
"), value="grey95")
@@ -1044,39 +1656,31 @@ For data with four columns, a single character representing a color should be pr
selectInput("colhmapTrack5", HTML("Colors: |
- Colors used for the heatmap.
- |
-
- "), choices = c("blue.white.red", "green.black.red", "green.yellow.red", "purple.yellow.red", "blue.green.red", "blue.yellow.green", "cyan.white.deeppink1"), selected="blue.white.red"),
- radioButtons("midhmapTrack5", HTML("Midpoint |
-
-
- The midpoint of track's data. Default to (max+min)/2.
+ Colors to be used for the heatmap.
|
- "), c("Default" = "1", "Custom" = "2"), selected="1"),
- conditionalPanel(condition="input.midhmapTrack5=='2'",
- numericInput("midpointTrack5", NULL, value=0, min=-1000000, max=1000000, step=0.5)
- ),
+ "), choices = c("blue.white.red", "green.black.red", "green.yellow.red",
+ "purple.yellow.red", "blue.green.red", "blue.yellow.green",
+ "cyan.white.deeppink1"), selected="blue.white.red"),
radioButtons("lineshmapTrack5", HTML("Add position lines |
- Add genomic position lines between tracks.
+ Add genomic position lines between tracks, which can be used to identify the correspondance between heatmaps and regions.
|
"), c("Yes" = "1", "No" = "2"),selected="2"),
conditionalPanel(condition="input.lineshmapTrack5=='1'",
- numericInput("heightlinesTrack5", HTML("Lines height: |
+ numericInput("heightlinesTrack5", HTML("Position lines height: |
- Height of the lines.
+ Height of the position lines.
|
"), value=0.06, min=0, max=0.8, step=0.01),
- numericInput("marginlinesTrack5", HTML("Lines margin: |
+ numericInput("marginlinesTrack5", HTML("Position lines margin: |
- Margin size of the lines.
+ Margin size of the position lines.
|
"), value=0.01, min=0, max=0.8, step=0.005)
@@ -1096,17 +1700,68 @@ For data with four columns, a single character representing a color should be pr
"), value=0.01, min=0, max=0.8, step=0.005),
- conditionalPanel(condition="input.typeTrack5!='heatmap'",
- radioButtons("borderTrack5", "Add borders", c("Yes" = "add", "No" = ""),selected="")
+ conditionalPanel(condition="input.typeTrack5=='heatmap'",
+ radioButtons("gridsborderTrack5", HTML("Add cell borders |
+
+
+ Add borders to the heatmap grids, which can separate cells from each other.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected=""),
+ conditionalPanel(condition="input.gridsborderTrack5=='add'",
+ textInput("colgridsborderTrack5", HTML("Borders color: |
+
+
+ The color to be used for the borders of heatmap grids. For example, 'white' or 'red'.
+Hex color codes as '#FF0000' are also supported.
+ |
+
+ "), value="black")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack5!='heatmap' & input.typeTrack5!='ideogram'",
+ radioButtons("borderTrack5", HTML("Add borders |
+
+
+ Add borders to the plotting regions.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
),
- textInput("text5", HTML("Add legend text |
+ conditionalPanel(condition="output.marklabel5",
+ radioButtons("labels5", HTML("Add labels |
- The text to appear in the legend which can be null or a character.
+ Add labels to mark genes or genomic regions for this track using data uploaded in the 'Data upload' menu.
+ |
+
+ "), c("Yes" = "1", "No" = "2"), selected="2")
+ ),
+ conditionalPanel(condition="input.labels5==1",
+ radioButtons("poslabels5", "Labels position", c("Outer" = "outer", "Inner" = "inner"),selected="outer"),
+ numericInput("heightlabels5", HTML("Labels height: |
+
+
+ Height of the labels, which should be greater than 0.
+ |
+
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginlabels5", HTML("Labels margin: |
+
+
+ Margin size of the labels.
+ |
+
+ "), value=0.01, min=0, max=0.8, step=0.005)
+ ),
+ textInput("text5", HTML("Legend text |
+
+
+ The text to appear in the legend.
|
"), value=NULL),
- conditionalPanel(condition="input.typeTrack5!='rect' & input.typeTrack5!='heatmap' & output.trackdat5",
+ conditionalPanel(condition="input.typeTrack5!='rect' & input.typeTrack5!='heatmap' & input.typeTrack5!='ideogram' & output.trackdat5 & !output.stackmd5",
radioButtons("highlightTrack5", HTML("Highlight regions |
@@ -1118,7 +1773,8 @@ For data with four columns, a single character representing a color should be pr
HTML(" Paste data below: |
- Each row should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color. For example, 'Chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
+ Each row should contain four components separated by commas including the chromosome ID, start coordinate,
+end coordinate and the specified color. For example, 'chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
|
"),
@@ -1142,36 +1798,58 @@ For data with four columns, a single character representing a color should be pr
radioButtons("directionTrack6", HTML(" Bar direction |
- Bars can be shown in unidirectional or bidirectional type. Bidirectional type can be used only when track's data includes four columns and data will be divided into two groups by boundary value.
+ Bars can be unidirectional or bidirectional. For bidirectional bars, the 4th column which
+contains the data values will be divided into two groups based on the boundary value.
|
"), c("Unidirectional" = "1", "Bidirectional" = "2"), selected="1"),
conditionalPanel(condition="input.directionTrack6=='2'",
numericInput("barBoundary6", "Boundary value:", value=0, step=0.01),
- textInput("coldir1Track6", "Outside color:", value="red"),
- textInput("coldir2Track6", "Inside color:", value="cyan")
+ textInput("coldir1Track6", "Outer color:", value="red"),
+ textInput("coldir2Track6", "Inner color:", value="cyan")
)
- ),
- conditionalPanel(condition="input.typeTrack6!='rect' & input.typeTrack6!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack6!='rect' & input.typeTrack6!='heatmap' & input.typeTrack6!='ideogram'",
conditionalPanel(condition="input.typeTrack6!='bar' | input.directionTrack6=='1'",
radioButtons("coltypeTrack6", HTML(" Data color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users.
-For data with four columns, a single character representing a color should be provided. For data with five columns, a character vector containing 2 elements representing two different colors should be provided. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+To customize color for data with multiple columns, users should provide a character string representing one or multiple
+colors separated by commas. For example, 'red' or 'red,orange,blue'.
+To customize color for data with multiple groups, the column indicating different groups should be named as 'color' or 'stack'.
+Users should provide a character strings assigning colors to each group.
+For example, 'a:red;b:green;c:blue', in which 'a b c' represent different data groups.
+Color for data groups without assigned color would be set as 'grey'.
+Hex color codes as '#FF0000' are also supported. See example data for more details.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Custom for data with multi-column" = "2",
+ "Custom for data with multi-group" = "3"), selected="1"),
conditionalPanel(condition="input.coltypeTrack6=='2'",
- textInput("colorTrack6", NULL, value="red")
+ textInput("colorTrack6", NULL, value="red,blue")
+ ),
+ conditionalPanel(condition="input.coltypeTrack6=='3'",
+ textInput("colorcusTrack6", NULL, value="a:red;b:blue;c:cyan")
)
)
),
+ conditionalPanel(condition="input.typeTrack6=='line' & !output.stackmd6",
+ radioButtons("fillareaTrack6", HTML(" Fill area |
+
+
+ Fill the area below the lines.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
conditionalPanel(condition="input.typeTrack6=='rect'",
- radioButtons("rectTrack6", HTML(" Data color |
+ radioButtons("rectTrack6", HTML("Data type |
- The rects are filled with discrete or gradual colors. For discrete data, the fourth column should be a discrete character vector with no more than 50 groups. For gradual data, the fourth column should be a numeric vector. See example data for more details.
+ The rects are filled with gradual or discrete colors. For discrete data, the fourth column
+should be a categorical character vector with no more than 50 groups. For gradual data, the fourth
+ column should be a numeric vector. See example data for more details.
|
"), c("Gradual" = "1", "Discrete" = "2"), selected="2"),
@@ -1179,19 +1857,41 @@ For data with four columns, a single character representing a color should be pr
radioButtons("rectcolTrack6", HTML("Select color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users. For random type, the fourth column of data should be a discrete character vector with no more than 50 groups. For specific type, all groups of data will be filled in a specific color. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+If 'Specific' was chosen, all data will be filled by a specified color.
+If 'Custom' was chosen, the 4th column of the uploaded data should be a categorical character vector with no more than 50 groups.
+Users should provide values as 'a:red;b:green;c:blue', in which 'a b c' represent different
+data category indicated by the 4th column of the uploaded data.
+Color for data without customed color will be set to NULL. Hex color codes as '#FF0000' are also supported.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Specific" = "2", "Custom" = "3"), selected="1"),
conditionalPanel(condition="input.rectcolTrack6=='2'",
textInput("rectcoldisTrack6", NULL, value="red")
+ ),
+ conditionalPanel(condition="input.rectcolTrack6=='3'",
+ textInput("rectcoldiscusTrack6", NULL, value="a:red;b:blue;c:cyan")
)
),
conditionalPanel(condition="input.rectTrack6=='1'",
- selectInput("colrectTrack6", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue", "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
+ selectInput("colrectTrack6", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow",
+ "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue",
+ "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
)
),
- conditionalPanel(condition="input.typeTrack6!='heatmap'",
+ conditionalPanel(condition="input.typeTrack6=='line' & !output.stackmd6 & input.fillareaTrack6=='add'",
+ radioButtons("selreaTrack6", HTML("Area color |
+
+
+ Filled color to the area, which can be identical with lines color or specified by the users. If 'Specific' was chosen, all data will be filled by a specified color as 'orange'.
+ |
+
+ "), c("Identical with lines" = "1", "Specific" = "2"),selected="1"),
+ conditionalPanel(condition="input.selreaTrack6=='2'",
+ textInput("borderareaTrack6", NULL, value="orange")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack6!='heatmap' & input.typeTrack6!='ideogram'",
numericInput("transparencyTrack6", HTML("Color transparency: |
@@ -1200,98 +1900,158 @@ For data with four columns, a single character representing a color should be pr
|
"), value=1, min=0, max=1, step=0.1)
),
- conditionalPanel(condition="input.typeTrack6!='rect' & input.typeTrack6!='heatmap'",
+ conditionalPanel(condition="input.typeTrack6=='point' & output.stackmd6",
+ textInput("symbolTrack6", HTML("Symbol type: |
+
+
+ Symbols used for different points. Applicable value can be a number in [0-25] or a numeric vector of arbitrary length
+adjusted automatically to the number of data categories. Type ?pch in R console for more details.
+ |
+
+ "), value="16"),
+ numericInput("pointsizeTrack6", "Point size:", value=0.6, min=0, max=1.5, step=0.05)
+ ),
+ conditionalPanel(condition="input.typeTrack6!='rect' & input.typeTrack6!='heatmap' & input.typeTrack6!='ideogram' & !output.stackmd6",
textInput("baselineTrack6", HTML("Y coordinates of baselines: |
- Decimal numbers in [0, 1] to adjust y coordinates of baselines. Numeric vector of arbitrary length is accepted and represent the number of baselines. For example, '0.5' or '0.25,0.5,0.75'.
+ Decimal numbers in [0, 1] to adjust y axis coordinates of baselines. Numeric vector of arbitrary length is also accepted.
+For example, '0.5' or '0.25,0.5,0.75'.
|
- "), value="0.25,0.75"),
+ "), value="0.25,0.75")
+ ),
+ conditionalPanel(condition="input.typeTrack6!='rect' & input.typeTrack6!='heatmap' & input.typeTrack6!='ideogram' & !(input.typeTrack6=='line' & output.stackmd6)",
textInput("colorlineTrack6", HTML("Baselines color(s): |
- The color to be used for the baselines which can be null or a character vector of arbitrary length, which can be adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the baselines which can be null or a character vector of arbitrary length
+adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'.
+ Hex color codes as '#FF0000' are also supported.
|
"), value="grey")
),
- conditionalPanel(condition="input.typeTrack6!='heatmap'",
+ conditionalPanel(condition="input.typeTrack6!='heatmap' & input.typeTrack6!='ideogram'",
textInput("bgcolTrack6", HTML("Background color(s): |
- The color to be used for the background of the plot which can be null or a color vector of arbitrary length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the background of the plot which can be null or a color vector of arbitrary length
+adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
+ |
+
+ "), value="grey95")
+ ),
+ conditionalPanel(condition="input.typeTrack6=='heatmap'",
+ selectInput("colhmapTrack6", HTML("Colors: |
+
+
+ Colors to be used for the heatmap.
+ |
+
+ "), choices = c("blue.white.red", "green.black.red", "green.yellow.red",
+ "purple.yellow.red", "blue.green.red", "blue.yellow.green",
+ "cyan.white.deeppink1"), selected="blue.white.red"),
+ radioButtons("lineshmapTrack6", HTML("Add position lines |
+
+
+ Add genomic position lines between tracks, which can be used to identify the correspondance between heatmaps and regions.
+ |
+
+ "), c("Yes" = "1", "No" = "2"),selected="2"),
+ conditionalPanel(condition="input.lineshmapTrack6=='1'",
+ numericInput("heightlinesTrack6", HTML("Position lines height: |
+
+
+ Height of the position lines.
+ |
+
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginlinesTrack6", HTML("Position lines margin: |
+
+
+ Margin size of the position lines.
+ |
+
+ "), value=0.01, min=0, max=0.8, step=0.005)
+ )
+ ),
+ numericInput("heightTrack6", HTML("
- "), value="grey95")
- ),
- conditionalPanel(condition="input.typeTrack6=='heatmap'",
- selectInput("colhmapTrack6", HTML("Colors: |
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginTrack6", HTML("Track margin: |
- Colors used for the heatmap.
+ Margin size of the track.
|
- "), choices = c("blue.white.red", "green.black.red", "green.yellow.red", "purple.yellow.red", "blue.green.red", "blue.yellow.green", "cyan.white.deeppink1"), selected="blue.white.red"),
- radioButtons("midhmapTrack6", HTML("Midpoint |
+ "), value=0.01, min=0, max=0.8, step=0.005),
+ conditionalPanel(condition="input.typeTrack6=='heatmap'",
+ radioButtons("gridsborderTrack6", HTML("Add cell borders |
- The midpoint of track's data. Default to (max+min)/2.
+ Add borders to the heatmap grids, which can separate cells from each other.
|
- "), c("Default" = "1", "Custom" = "2"), selected="1"),
- conditionalPanel(condition="input.midhmapTrack6=='2'",
- numericInput("midpointTrack6", NULL, value=0, min=-1000000, max=1000000, step=0.5)
- ),
- radioButtons("lineshmapTrack6", HTML("Add position lines |
+ "), c("Yes" = "add", "No" = ""),selected=""),
+ conditionalPanel(condition="input.gridsborderTrack6=='add'",
+ textInput("colgridsborderTrack6", HTML("Borders color: |
- Add genomic position lines between tracks.
+ The color to be used for the borders of heatmap grids. For example, 'white' or 'red'.
+Hex color codes as '#FF0000' are also supported.
|
- "), c("Yes" = "1", "No" = "2"),selected="2"),
- conditionalPanel(condition="input.lineshmapTrack6=='1'",
- numericInput("heightlinesTrack6", HTML("Lines height: |
+ "), value="black")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack6!='heatmap' & input.typeTrack6!='ideogram'",
+ radioButtons("borderTrack6", HTML("Add borders |
- Height of the lines.
+ Add borders to the plotting regions.
|
- "), value=0.06, min=0, max=0.8, step=0.01),
- numericInput("marginlinesTrack6", HTML("Lines margin: |
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
+ conditionalPanel(condition="output.marklabel6",
+ radioButtons("labels6", HTML("Add labels |
- Margin size of the lines.
+ Add labels to mark genes or genomic regions for this track using data uploaded in the 'Data upload' menu.
|
- "), value=0.01, min=0, max=0.8, step=0.005)
- )
- ),
- numericInput("heightTrack6", HTML("Track height: |
+ "), c("Yes" = "1", "No" = "2"), selected="2")
+ ),
+ conditionalPanel(condition="input.labels6==1",
+ radioButtons("poslabels6", "Labels position", c("Outer" = "outer", "Inner" = "inner"),selected="outer"),
+ numericInput("heightlabels6", HTML("Labels height: |
- Height of the track.
+ Height of the labels, which should be greater than 0.
|
"), value=0.06, min=0, max=0.8, step=0.01),
- numericInput("marginTrack6", HTML("Track margin: |
+ numericInput("marginlabels6", HTML("Labels margin: |
- Margin size of the track.
+ Margin size of the labels.
|
- "), value=0.01, min=0, max=0.8, step=0.005),
- conditionalPanel(condition="input.typeTrack6!='heatmap'",
- radioButtons("borderTrack6", "Add borders", c("Yes" = "add", "No" = ""),selected="")
+ "), value=0.01, min=0, max=0.8, step=0.005)
),
- textInput("text6", HTML("Add legend text |
+ textInput("text6", HTML("Legend text |
- The text to appear in the legend which can be null or a character.
+ The text to appear in the legend.
|
"), value=NULL),
- conditionalPanel(condition="input.typeTrack6!='rect' & input.typeTrack6!='heatmap' & output.trackdat6",
+ conditionalPanel(condition="input.typeTrack6!='rect' & input.typeTrack6!='heatmap' & input.typeTrack6!='ideogram' & output.trackdat6 & !output.stackmd6",
radioButtons("highlightTrack6", HTML("Highlight regions |
@@ -1303,7 +2063,8 @@ For data with four columns, a single character representing a color should be pr
HTML(" Paste data below: |
- Each row should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color. For example, 'Chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
+ Each row should contain four components separated by commas including the chromosome ID, start coordinate,
+end coordinate and the specified color. For example, 'chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
|
"),
@@ -1327,36 +2088,58 @@ For data with four columns, a single character representing a color should be pr
radioButtons("directionTrack7", HTML(" Bar direction |
- Bars can be shown in unidirectional or bidirectional type. Bidirectional type can be used only when track's data includes four columns and data will be divided into two groups by boundary value.
+ Bars can be unidirectional or bidirectional. For bidirectional bars, the 4th column which
+contains the data values will be divided into two groups based on the boundary value.
|
"), c("Unidirectional" = "1", "Bidirectional" = "2"), selected="2"),
conditionalPanel(condition="input.directionTrack7=='2'",
numericInput("barBoundary7", "Boundary value:", value=0, step=0.01),
- textInput("coldir1Track7", "Outside color:", value="deeppink"),
- textInput("coldir2Track7", "Inside color:", value="mediumblue")
+ textInput("coldir1Track7", "Outer color:", value="deeppink"),
+ textInput("coldir2Track7", "Inner color:", value="mediumblue")
)
- ),
- conditionalPanel(condition="input.typeTrack7!='rect' & input.typeTrack7!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack7!='rect' & input.typeTrack7!='heatmap' & input.typeTrack7!='ideogram'",
conditionalPanel(condition="input.typeTrack7!='bar' | input.directionTrack7=='1'",
radioButtons("coltypeTrack7", HTML(" Data color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users.
-For data with four columns, a single character representing a color should be provided. For data with five columns, a character vector containing 2 elements representing two different colors should be provided. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+To customize color for data with multiple columns, users should provide a character string representing one or multiple
+colors separated by commas. For example, 'red' or 'red,orange,blue'.
+To customize color for data with multiple groups, the column indicating different groups should be named as 'color' or 'stack'.
+Users should provide a character strings assigning colors to each group.
+For example, 'a:red;b:green;c:blue', in which 'a b c' represent different data groups.
+Color for data groups without assigned color would be set as 'grey'.
+Hex color codes as '#FF0000' are also supported. See example data for more details.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Custom for data with multi-column" = "2",
+ "Custom for data with multi-group" = "3"), selected="1"),
conditionalPanel(condition="input.coltypeTrack7=='2'",
- textInput("colorTrack7", NULL, value="seagreen")
+ textInput("colorTrack7", NULL, value="red,blue")
+ ),
+ conditionalPanel(condition="input.coltypeTrack7=='3'",
+ textInput("colorcusTrack7", NULL, value="a:red;b:blue;c:cyan")
)
)
),
+ conditionalPanel(condition="input.typeTrack7=='line' & !output.stackmd7",
+ radioButtons("fillareaTrack7", HTML(" Fill area |
+
+
+ Fill the area below the lines.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
conditionalPanel(condition="input.typeTrack7=='rect'",
- radioButtons("rectTrack7", HTML(" Data color |
+ radioButtons("rectTrack7", HTML("Data type |
- The rects are filled with discrete or gradual colors. For discrete data, the fourth column should be a discrete character vector with no more than 50 groups. For gradual data, the fourth column should be a numeric vector. See example data for more details.
+ The rects are filled with gradual or discrete colors. For discrete data, the fourth column
+should be a categorical character vector with no more than 50 groups. For gradual data, the fourth
+ column should be a numeric vector. See example data for more details.
|
"), c("Gradual" = "1", "Discrete" = "2"), selected="1"),
@@ -1364,19 +2147,42 @@ For data with four columns, a single character representing a color should be pr
radioButtons("rectcolTrack7", HTML("Select color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users. For random type, the fourth column of data should be a discrete character vector with no more than 50 groups. For specific type, all groups of data will be filled in a specific color. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+If 'Specific' was chosen, all data will be filled by a specified color.
+If 'Custom' was chosen, the 4th column of the uploaded data should be a categorical character vector with no more than 50 groups.
+Users should provide values as 'a:red;b:green;c:blue', in which 'a b c' represent different
+data category indicated by the 4th column of the uploaded data.
+Color for data without customed color will be set to NULL. Hex color codes as '#FF0000' are also supported.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Specific" = "2", "Custom" = "3"), selected="1"),
conditionalPanel(condition="input.rectcolTrack7=='2'",
textInput("rectcoldisTrack7", NULL, value="red")
+ ),
+ conditionalPanel(condition="input.rectcolTrack7=='3'",
+ textInput("rectcoldiscusTrack7", NULL, value="a:red;b:blue;c:cyan")
)
- ),
+ ),
conditionalPanel(condition="input.rectTrack7=='1'",
- selectInput("colrectTrack7", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue", "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
+ selectInput("colrectTrack7", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange",
+ "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold",
+ "lightblue", "navy.yellow", "purple.seagreen", "navy.orange",
+ "navy.cyan", "blue.red", "green.red"))
)
),
- conditionalPanel(condition="input.typeTrack7!='heatmap'",
+ conditionalPanel(condition="input.typeTrack7=='line' & !output.stackmd7 & input.fillareaTrack7=='add'",
+ radioButtons("selreaTrack7", HTML("Area color |
+
+
+ Filled color to the area, which can be identical with lines color or specified by the users. If 'Specific' was chosen, all data will be filled by a specified color as 'orange'.
+ |
+
+ "), c("Identical with lines" = "1", "Specific" = "2"),selected="1"),
+ conditionalPanel(condition="input.selreaTrack7=='2'",
+ textInput("borderareaTrack7", NULL, value="orange")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack7!='heatmap' & input.typeTrack7!='ideogram'",
numericInput("transparencyTrack7", HTML("Color transparency: |
@@ -1384,28 +2190,45 @@ For data with four columns, a single character representing a color should be pr
|
"), value=1, min=0, max=1, step=0.1)
- ),
- conditionalPanel(condition="input.typeTrack7!='rect' & input.typeTrack7!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack7=='point' & output.stackmd7",
+ textInput("symbolTrack7", HTML("Symbol type: |
+
+
+ Symbols used for different points. Applicable value can be a number in [0-25] or a numeric vector of arbitrary length
+adjusted automatically to the number of data categories. Type ?pch in R console for more details.
+ |
+
+ "), value="16"),
+ numericInput("pointsizeTrack7", "Point size:", value=0.6, min=0, max=1.5, step=0.05)
+ ),
+ conditionalPanel(condition="input.typeTrack7!='rect' & input.typeTrack7!='heatmap' & input.typeTrack7!='ideogram' & !output.stackmd7",
textInput("baselineTrack7", HTML("Y coordinates of baselines: |
- Decimal numbers in [0, 1] to adjust y coordinates of baselines. Numeric vector of arbitrary length is accepted and represent the number of baselines. For example, '0.5' or '0.25,0.5,0.75'.
+ Decimal numbers in [0, 1] to adjust y axis coordinates of baselines. Numeric vector of arbitrary length is also accepted.
+For example, '0.5' or '0.25,0.5,0.75'.
|
- "), value="0.25,0.75"),
+ "), value="0.25,0.75")
+ ),
+ conditionalPanel(condition="input.typeTrack7!='rect' & input.typeTrack7!='heatmap' & input.typeTrack7!='ideogram' & !(input.typeTrack7=='line' & output.stackmd7)",
textInput("colorlineTrack7", HTML("Baselines color(s): |
- The color to be used for the baselines which can be null or a character vector of arbitrary length, which can be adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the baselines which can be null or a character vector of arbitrary length
+adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey")
),
- conditionalPanel(condition="input.typeTrack7!='heatmap'",
+ conditionalPanel(condition="input.typeTrack7!='heatmap' & input.typeTrack7!='ideogram'",
textInput("bgcolTrack7", HTML("Background color(s): |
- The color to be used for the background of the plot which can be null or a color vector of arbitrary length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the background of the plot which can be null or a color vector of arbitrary length adjusted
+automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
|
"), value="grey95")
@@ -1414,39 +2237,31 @@ For data with four columns, a single character representing a color should be pr
selectInput("colhmapTrack7", HTML("Colors: |
- Colors used for the heatmap.
- |
-
- "), choices = c("blue.white.red", "green.black.red", "green.yellow.red", "purple.yellow.red", "blue.green.red", "blue.yellow.green", "cyan.white.deeppink1"), selected="blue.white.red"),
- radioButtons("midhmapTrack7", HTML("Midpoint |
-
-
- The midpoint of track's data. Default to (max+min)/2.
+ Colors to be used for the heatmap.
|
- "), c("Default" = "1", "Custom" = "2"), selected="1"),
- conditionalPanel(condition="input.midhmapTrack7=='2'",
- numericInput("midpointTrack7", NULL, value=0, min=-1000000, max=1000000, step=0.5)
- ),
+ "), choices = c("blue.white.red", "green.black.red", "green.yellow.red",
+ "purple.yellow.red", "blue.green.red", "blue.yellow.green",
+ "cyan.white.deeppink1"), selected="blue.white.red"),
radioButtons("lineshmapTrack7", HTML("Add position lines |
- Add genomic position lines between tracks.
+ Add genomic position lines between tracks, which can be used to identify the correspondance between heatmaps and regions.
|
"), c("Yes" = "1", "No" = "2"),selected="2"),
conditionalPanel(condition="input.lineshmapTrack7=='1'",
- numericInput("heightlinesTrack7", HTML("Lines height: |
+ numericInput("heightlinesTrack7", HTML("Position lines height: |
- Height of the lines.
+ Height of the position lines.
|
"), value=0.06, min=0, max=0.8, step=0.01),
- numericInput("marginlinesTrack7", HTML("Lines margin: |
+ numericInput("marginlinesTrack7", HTML("Position lines margin: |
- Margin size of the lines.
+ Margin size of the position lines.
|
"), value=0.01, min=0, max=0.8, step=0.005)
@@ -1466,17 +2281,68 @@ For data with four columns, a single character representing a color should be pr
"), value=0.01, min=0, max=0.8, step=0.005),
- conditionalPanel(condition="input.typeTrack7!='heatmap'",
- radioButtons("borderTrack7", "Add borders", c("Yes" = "add", "No" = ""),selected="")
+ conditionalPanel(condition="input.typeTrack7=='heatmap'",
+ radioButtons("gridsborderTrack7", HTML("Add cell borders |
+
+
+ Add borders to the heatmap grids, which can separate cells from each other.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected=""),
+ conditionalPanel(condition="input.gridsborderTrack7=='add'",
+ textInput("colgridsborderTrack7", HTML("Borders color: |
+
+
+ The color to be used for the borders of heatmap grids. For example, 'white' or 'red'.
+Hex color codes as '#FF0000' are also supported.
+ |
+
+ "), value="black")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack7!='heatmap' & input.typeTrack7!='ideogram'",
+ radioButtons("borderTrack7", HTML("Add borders |
+
+
+ Add borders to the plotting regions.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
+ conditionalPanel(condition="output.marklabel7",
+ radioButtons("labels7", HTML("Add labels |
+
+
+ Add labels to mark genes or genomic regions for this track using data uploaded in the 'Data upload' menu.
+ |
+
+ "), c("Yes" = "1", "No" = "2"), selected="2")
+ ),
+ conditionalPanel(condition="input.labels7==1",
+ radioButtons("poslabels7", "Labels position", c("Outer" = "outer", "Inner" = "inner"),selected="outer"),
+ numericInput("heightlabels7", HTML("Labels height: |
+
+
+ Height of the labels, which should be greater than 0.
+ |
+
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginlabels7", HTML("Labels margin: |
+
+
+ Margin size of the labels.
+ |
+
+ "), value=0.01, min=0, max=0.8, step=0.005)
),
- textInput("text7", HTML("Add legend text |
+ textInput("text7", HTML("Legend text |
- The text to appear in the legend which can be null or a character.
+ The text to appear in the legend.
|
"), value=NULL),
- conditionalPanel(condition="input.typeTrack7!='rect' & input.typeTrack7!='heatmap' & output.trackdat7",
+ conditionalPanel(condition="input.typeTrack7!='rect' & input.typeTrack7!='heatmap' & input.typeTrack7!='ideogram' & output.trackdat7 & !output.stackmd7",
radioButtons("highlightTrack7", HTML("Highlight regions |
@@ -1488,7 +2354,8 @@ For data with four columns, a single character representing a color should be pr
HTML(" Paste data below: |
- Each row should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color. For example, 'Chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
+ Each row should contain four components separated by commas including the chromosome ID, start coordinate,
+end coordinate and the specified color. For example, 'chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
|
"),
@@ -1512,36 +2379,58 @@ For data with four columns, a single character representing a color should be pr
radioButtons("directionTrack8", HTML(" Bar direction |
- Bars can be shown in unidirectional or bidirectional type. Bidirectional type can be used only when track's data includes four columns and data will be divided into two groups by boundary value.
+ Bars can be unidirectional or bidirectional. For bidirectional bars, the 4th column which
+contains the data values will be divided into two groups based on the boundary value.
|
"), c("Unidirectional" = "1", "Bidirectional" = "2"), selected="2"),
conditionalPanel(condition="input.directionTrack8=='2'",
numericInput("barBoundary8", "Boundary value:", value=0, step=0.01),
- textInput("coldir1Track8", "Outside color:", value="deeppink"),
- textInput("coldir2Track8", "Inside color:", value="mediumblue")
+ textInput("coldir1Track8", "Outer color:", value="deeppink"),
+ textInput("coldir2Track8", "Inner color:", value="mediumblue")
)
- ),
- conditionalPanel(condition="input.typeTrack8!='rect' & input.typeTrack8!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack8!='rect' & input.typeTrack8!='heatmap' & input.typeTrack8!='ideogram'",
conditionalPanel(condition="input.typeTrack8!='bar' | input.directionTrack8=='1'",
radioButtons("coltypeTrack8", HTML(" Data color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users.
-For data with four columns, a single character representing a color should be provided. For data with five columns, a character vector containing 2 elements representing two different colors should be provided. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+To customize color for data with multiple columns, users should provide a character string representing one or multiple
+colors separated by commas. For example, 'red' or 'red,orange,blue'.
+To customize color for data with multiple groups, the column indicating different groups should be named as 'color' or 'stack'.
+Users should provide a character strings assigning colors to each group.
+For example, 'a:red;b:green;c:blue', in which 'a b c' represent different data groups.
+Color for data groups without assigned color would be set as 'grey'.
+Hex color codes as '#FF0000' are also supported. See example data for more details.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Custom for data with multi-column" = "2",
+ "Custom for data with multi-group" = "3"), selected="1"),
conditionalPanel(condition="input.coltypeTrack8=='2'",
- textInput("colorTrack8", NULL, value="gold")
+ textInput("colorTrack8", NULL, value="red,blue")
+ ),
+ conditionalPanel(condition="input.coltypeTrack8=='3'",
+ textInput("colorcusTrack8", NULL, value="a:red;b:blue;c:cyan")
)
)
),
+ conditionalPanel(condition="input.typeTrack8=='line' & !output.stackmd8",
+ radioButtons("fillareaTrack8", HTML(" Fill area |
+
+
+ Fill the area below the lines.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
conditionalPanel(condition="input.typeTrack8=='rect'",
- radioButtons("rectTrack8", HTML(" Data color |
+ radioButtons("rectTrack8", HTML("Data type |
- The rects are filled with discrete or gradual colors. For discrete data, the fourth column should be a discrete character vector with no more than 50 groups. For gradual data, the fourth column should be a numeric vector. See example data for more details.
+ The rects are filled with gradual or discrete colors. For discrete data, the fourth column
+should be a categorical character vector with no more than 50 groups. For gradual data, the fourth
+ column should be a numeric vector. See example data for more details.
|
"), c("Gradual" = "1", "Discrete" = "2"), selected="1"),
@@ -1549,19 +2438,42 @@ For data with four columns, a single character representing a color should be pr
radioButtons("rectcolTrack8", HTML("Select color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users. For random type, the fourth column of data should be a discrete character vector with no more than 50 groups. For specific type, all groups of data will be filled in a specific color. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+If 'Specific' was chosen, all data will be filled by a specified color.
+If 'Custom' was chosen, the 4th column of the uploaded data should be a categorical character vector with no more than 50 groups.
+Users should provide values as 'a:red;b:green;c:blue', in which 'a b c' represent different
+data category indicated by the 4th column of the uploaded data.
+Color for data without customed color will be set to NULL. Hex color codes as '#FF0000' are also supported.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Specific" = "2", "Custom" = "3"), selected="1"),
conditionalPanel(condition="input.rectcolTrack8=='2'",
textInput("rectcoldisTrack8", NULL, value="red")
+ ),
+ conditionalPanel(condition="input.rectcolTrack8=='3'",
+ textInput("rectcoldiscusTrack8", NULL, value="a:red;b:blue;c:cyan")
)
- ),
+ ),
conditionalPanel(condition="input.rectTrack8=='1'",
- selectInput("colrectTrack8", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue", "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
+ selectInput("colrectTrack8", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange",
+ "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold",
+ "lightblue", "navy.yellow", "purple.seagreen", "navy.orange",
+ "navy.cyan", "blue.red", "green.red"))
)
),
- conditionalPanel(condition="input.typeTrack8!='heatmap'",
+ conditionalPanel(condition="input.typeTrack8=='line' & !output.stackmd8 & input.fillareaTrack8=='add'",
+ radioButtons("selreaTrack8", HTML("Area color |
+
+
+ Filled color to the area, which can be identical with lines color or specified by the users. If 'Specific' was chosen, all data will be filled by a specified color as 'orange'.
+ |
+
+ "), c("Identical with lines" = "1", "Specific" = "2"),selected="1"),
+ conditionalPanel(condition="input.selreaTrack8=='2'",
+ textInput("borderareaTrack8", NULL, value="orange")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack8!='heatmap' & input.typeTrack8!='ideogram'",
numericInput("transparencyTrack8", HTML("Color transparency: |
@@ -1569,28 +2481,46 @@ For data with four columns, a single character representing a color should be pr
|
"), value=1, min=0, max=1, step=0.1)
- ),
- conditionalPanel(condition="input.typeTrack8!='rect' & input.typeTrack8!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack8=='point' & output.stackmd8",
+ textInput("symbolTrack8", HTML("Symbol type: |
+
+
+ Symbols used for different points. Applicable value can be a number in [0-25] or a numeric vector of arbitrary length
+adjusted automatically to the number of data categories. Type ?pch in R console for more details.
+ |
+
+ "), value="16"),
+ numericInput("pointsizeTrack8", "Point size:", value=0.6, min=0, max=1.5, step=0.05)
+ ),
+ conditionalPanel(condition="input.typeTrack8!='rect' & input.typeTrack8!='heatmap' & input.typeTrack8!='ideogram' & !output.stackmd8",
textInput("baselineTrack8", HTML("Y coordinates of baselines: |
- Decimal numbers in [0, 1] to adjust y coordinates of baselines. Numeric vector of arbitrary length is accepted and represent the number of baselines. For example, '0.5' or '0.25,0.5,0.75'.
+ Decimal numbers in [0, 1] to adjust y axis coordinates of baselines. Numeric vector of arbitrary length is also accepted.
+For example, '0.5' or '0.25,0.5,0.75'.
|
- "), value="0.25,0.75"),
+ "), value="0.25,0.75")
+ ),
+ conditionalPanel(condition="input.typeTrack8!='rect' & input.typeTrack8!='heatmap' & input.typeTrack8!='ideogram' & !(input.typeTrack8=='line' & output.stackmd8)",
textInput("colorlineTrack8", HTML("Baselines color(s): |
- The color to be used for the baselines which can be null or a character vector of arbitrary length, which can be adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the baselines which can be null or a character vector of arbitrary length
+adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'.
+ Hex color codes as '#FF0000' are also supported.
|
"), value="grey")
),
- conditionalPanel(condition="input.typeTrack8!='heatmap'",
+ conditionalPanel(condition="input.typeTrack8!='heatmap' & input.typeTrack8!='ideogram'",
textInput("bgcolTrack8", HTML("Background color(s): |
- The color to be used for the background of the plot which can be null or a color vector of arbitrary length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the background of the plot which can be null or a color vector of arbitrary
+length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey95")
@@ -1599,39 +2529,31 @@ For data with four columns, a single character representing a color should be pr
selectInput("colhmapTrack8", HTML("Colors: |
- Colors used for the heatmap.
- |
-
- "), choices = c("blue.white.red", "green.black.red", "green.yellow.red", "purple.yellow.red", "blue.green.red", "blue.yellow.green", "cyan.white.deeppink1"), selected="blue.white.red"),
- radioButtons("midhmapTrack8", HTML("Midpoint |
-
-
- The midpoint of track's data. Default to (max+min)/2.
+ Colors to be used for the heatmap.
|
- "), c("Default" = "1", "Custom" = "2"), selected="1"),
- conditionalPanel(condition="input.midhmapTrack8=='2'",
- numericInput("midpointTrack8", NULL, value=0, min=-1000000, max=1000000, step=0.5)
- ),
+ "), choices = c("blue.white.red", "green.black.red", "green.yellow.red",
+ "purple.yellow.red", "blue.green.red", "blue.yellow.green",
+ "cyan.white.deeppink1"), selected="blue.white.red"),
radioButtons("lineshmapTrack8", HTML("Add position lines |
- Add genomic position lines between tracks.
+ Add genomic position lines between tracks, which can be used to identify the correspondance between heatmaps and regions.
|
"), c("Yes" = "1", "No" = "2"),selected="2"),
conditionalPanel(condition="input.lineshmapTrack8=='1'",
- numericInput("heightlinesTrack8", HTML("Lines height: |
+ numericInput("heightlinesTrack8", HTML("Position lines height: |
- Height of the lines.
+ Height of the position lines.
|
"), value=0.06, min=0, max=0.8, step=0.01),
- numericInput("marginlinesTrack8", HTML("Lines margin: |
+ numericInput("marginlinesTrack8", HTML("Position lines margin: |
- Margin size of the lines.
+ Margin size of the position lines.
|
"), value=0.01, min=0, max=0.8, step=0.005)
@@ -1651,17 +2573,68 @@ For data with four columns, a single character representing a color should be pr
"), value=0.01, min=0, max=0.8, step=0.005),
- conditionalPanel(condition="input.typeTrack8!='heatmap'",
- radioButtons("borderTrack8", "Add borders", c("Yes" = "add", "No" = ""),selected="")
+ conditionalPanel(condition="input.typeTrack8=='heatmap'",
+ radioButtons("gridsborderTrack8", HTML("Add cell borders |
+
+
+ Add borders to the heatmap grids, which can separate cells from each other.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected=""),
+ conditionalPanel(condition="input.gridsborderTrack8=='add'",
+ textInput("colgridsborderTrack8", HTML("Borders color: |
+
+
+ The color to be used for the borders of heatmap grids. For example, 'white' or 'red'.
+Hex color codes as '#FF0000' are also supported.
+ |
+
+ "), value="black")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack8!='heatmap' & input.typeTrack8!='ideogram'",
+ radioButtons("borderTrack8", HTML("Add borders |
+
+
+ Add borders to the plotting regions.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
+ conditionalPanel(condition="output.marklabel8",
+ radioButtons("labels8", HTML("Add labels |
+
+
+ Add labels to mark genes or genomic regions for this track using data uploaded in the 'Data upload' menu.
+ |
+
+ "), c("Yes" = "1", "No" = "2"), selected="2")
+ ),
+ conditionalPanel(condition="input.labels8==1",
+ radioButtons("poslabels8", "Labels position", c("Outer" = "outer", "Inner" = "inner"),selected="outer"),
+ numericInput("heightlabels8", HTML("Labels height: |
+
+
+ Height of the labels, which should be greater than 0.
+ |
+
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginlabels8", HTML("Labels margin: |
+
+
+ Margin size of the labels.
+ |
+
+ "), value=0.01, min=0, max=0.8, step=0.005)
),
- textInput("text8", HTML("Add legend text |
+ textInput("text8", HTML("Legend text |
- The text to appear in the legend which can be null or a character.
+ The text to appear in the legend.
|
"), value=NULL),
- conditionalPanel(condition="input.typeTrack8!='rect' & input.typeTrack8!='heatmap' & output.trackdat8",
+ conditionalPanel(condition="input.typeTrack8!='rect' & input.typeTrack8!='heatmap' & input.typeTrack8!='ideogram' & output.trackdat8 & !output.stackmd8",
radioButtons("highlightTrack8", HTML("Highlight regions |
@@ -1673,7 +2646,7 @@ For data with four columns, a single character representing a color should be pr
HTML(" Paste data below: |
- Each row should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color. For example, 'Chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
+ Each row should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color. For example, 'chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
|
"),
@@ -1697,36 +2670,58 @@ For data with four columns, a single character representing a color should be pr
radioButtons("directionTrack9", HTML(" Bar direction |
- Bars can be shown in unidirectional or bidirectional type. Bidirectional type can be used only when track's data includes four columns and data will be divided into two groups by boundary value.
+ Bars can be unidirectional or bidirectional. For bidirectional bars, the 4th column which
+contains the data values will be divided into two groups based on the boundary value.
|
"), c("Unidirectional" = "1", "Bidirectional" = "2"), selected="1"),
conditionalPanel(condition="input.directionTrack9=='2'",
numericInput("barBoundary9", "Boundary value:", value=0, step=0.01),
- textInput("coldir1Track9", "Outside color:", value="red"),
- textInput("coldir2Track9", "Inside color:", value="cyan")
+ textInput("coldir1Track9", "Outer color:", value="red"),
+ textInput("coldir2Track9", "Inner color:", value="cyan")
)
- ),
- conditionalPanel(condition="input.typeTrack9!='rect' & input.typeTrack9!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack9!='rect' & input.typeTrack9!='heatmap' & input.typeTrack9!='ideogram'",
conditionalPanel(condition="input.typeTrack9!='bar' | input.directionTrack9=='1'",
radioButtons("coltypeTrack9", HTML(" Data color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users.
-For data with four columns, a single character representing a color should be provided. For data with five columns, a character vector containing 2 elements representing two different colors should be provided. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+To customize color for data with multiple columns, users should provide a character string representing one or multiple
+colors separated by commas. For example, 'red' or 'red,orange,blue'.
+To customize color for data with multiple groups, the column indicating different groups should be named as 'color' or 'stack'.
+Users should provide a character strings assigning colors to each group.
+For example, 'a:red;b:green;c:blue', in which 'a b c' represent different data groups.
+Color for data groups without assigned color would be set as 'grey'.
+Hex color codes as '#FF0000' are also supported. See example data for more details.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Custom for data with multi-column" = "2",
+ "Custom for data with multi-group" = "3"), selected="1"),
conditionalPanel(condition="input.coltypeTrack9=='2'",
- textInput("colorTrack9", NULL, value="olivedrab")
+ textInput("colorTrack9", NULL, value="red,blue")
+ ),
+ conditionalPanel(condition="input.coltypeTrack9=='3'",
+ textInput("colorcusTrack9", NULL, value="a:red;b:blue;c:cyan")
)
)
),
+ conditionalPanel(condition="input.typeTrack9=='line' & !output.stackmd9",
+ radioButtons("fillareaTrack9", HTML(" Fill area |
+
+
+ Fill the area below the lines.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
conditionalPanel(condition="input.typeTrack9=='rect'",
- radioButtons("rectTrack9", HTML(" Data color |
+ radioButtons("rectTrack9", HTML("Data type |
- The rects are filled with discrete or gradual colors. For discrete data, the fourth column should be a discrete character vector with no more than 50 groups. For gradual data, the fourth column should be a numeric vector. See example data for more details.
+ The rects are filled with gradual or discrete colors. For discrete data, the fourth column
+should be a categorical character vector with no more than 50 groups. For gradual data, the fourth
+ column should be a numeric vector. See example data for more details.
|
"), c("Gradual" = "1", "Discrete" = "2"), selected="1"),
@@ -1734,19 +2729,42 @@ For data with four columns, a single character representing a color should be pr
radioButtons("rectcolTrack9", HTML("Select color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users. For random type, the fourth column of data should be a discrete character vector with no more than 50 groups. For specific type, all groups of data will be filled in a specific color. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+If 'Specific' was chosen, all data will be filled by a specified color.
+If 'Custom' was chosen, the 4th column of the uploaded data should be a categorical character vector with no more than 50 groups.
+Users should provide values as 'a:red;b:green;c:blue', in which 'a b c' represent different
+data category indicated by the 4th column of the uploaded data.
+Color for data without customed color will be set to NULL. Hex color codes as '#FF0000' are also supported.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Specific" = "2", "Custom" = "3"), selected="1"),
conditionalPanel(condition="input.rectcolTrack9=='2'",
textInput("rectcoldisTrack9", NULL, value="red")
+ ),
+ conditionalPanel(condition="input.rectcolTrack9=='3'",
+ textInput("rectcoldiscusTrack9", NULL, value="a:red;b:blue;c:cyan")
)
- ),
+ ),
conditionalPanel(condition="input.rectTrack9=='1'",
- selectInput("colrectTrack9", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue", "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
+ selectInput("colrectTrack9", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange",
+ "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold",
+ "lightblue", "navy.yellow", "purple.seagreen", "navy.orange",
+ "navy.cyan", "blue.red", "green.red"))
)
),
- conditionalPanel(condition="input.typeTrack9!='heatmap'",
+ conditionalPanel(condition="input.typeTrack9=='line' & !output.stackmd9 & input.fillareaTrack9=='add'",
+ radioButtons("selreaTrack9", HTML("Area color |
+
+
+ Filled color to the area, which can be identical with lines color or specified by the users. If 'Specific' was chosen, all data will be filled by a specified color as 'orange'.
+ |
+
+ "), c("Identical with lines" = "1", "Specific" = "2"),selected="1"),
+ conditionalPanel(condition="input.selreaTrack9=='2'",
+ textInput("borderareaTrack9", NULL, value="orange")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack9!='heatmap' & input.typeTrack9!='ideogram'",
numericInput("transparencyTrack9", HTML("Color transparency: |
@@ -1755,27 +2773,45 @@ For data with four columns, a single character representing a color should be pr
|
"), value=1, min=0, max=1, step=0.1)
),
- conditionalPanel(condition="input.typeTrack9!='rect' & input.typeTrack9!='heatmap'",
+ conditionalPanel(condition="input.typeTrack9=='point' & output.stackmd9",
+ textInput("symbolTrack9", HTML("Symbol type: |
+
+
+ Symbols used for different points. Applicable value can be a number in [0-25] or a numeric vector of arbitrary length
+adjusted automatically to the number of data categories. Type ?pch in R console for more details.
+ |
+
+ "), value="16"),
+ numericInput("pointsizeTrack9", "Point size:", value=0.6, min=0, max=1.5, step=0.05)
+ ),
+ conditionalPanel(condition="input.typeTrack9!='rect' & input.typeTrack9!='heatmap' & input.typeTrack9!='ideogram' & !output.stackmd9",
textInput("baselineTrack9", HTML("Y coordinates of baselines: |
- Decimal numbers in [0, 1] to adjust y coordinates of baselines. Numeric vector of arbitrary length is accepted and represent the number of baselines. For example, '0.5' or '0.25,0.5,0.75'.
+ Decimal numbers in [0, 1] to adjust y axis coordinates of baselines. Numeric vector of arbitrary length is also accepted.
+For example, '0.5' or '0.25,0.5,0.75'.
|
- "), value="0.25,0.75"),
+ "), value="0.25,0.75")
+ ),
+ conditionalPanel(condition="input.typeTrack9!='rect' & input.typeTrack9!='heatmap' & input.typeTrack9!='ideogram' & !(input.typeTrack9=='line' & output.stackmd9)",
textInput("colorlineTrack9", HTML("Baselines color(s): |
- The color to be used for the baselines which can be null or a character vector of arbitrary length, which can be adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the baselines, which can be null or a character vector of arbitrary length
+adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey")
),
- conditionalPanel(condition="input.typeTrack9!='heatmap'",
+ conditionalPanel(condition="input.typeTrack9!='heatmap' & input.typeTrack9!='ideogram'",
textInput("bgcolTrack9", HTML("Background color(s): |
- The color to be used for the background of the plot which can be null or a color vector of arbitrary length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the background of the plot which can be null or a color vector of arbitrary
+length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey95")
@@ -1784,39 +2820,31 @@ For data with four columns, a single character representing a color should be pr
selectInput("colhmapTrack9", HTML("Colors: |
- Colors used for the heatmap.
- |
-
- "), choices = c("blue.white.red", "green.black.red", "green.yellow.red", "purple.yellow.red", "blue.green.red", "blue.yellow.green", "cyan.white.deeppink1"), selected="blue.white.red"),
- radioButtons("midhmapTrack9", HTML("Midpoint |
-
-
- The midpoint of track's data. Default to (max+min)/2.
+ Colors to be used for the heatmap.
|
- "), c("Default" = "1", "Custom" = "2"), selected="1"),
- conditionalPanel(condition="input.midhmapTrack9=='2'",
- numericInput("midpointTrack9", NULL, value=0, min=-1000000, max=1000000, step=0.5)
- ),
+ "), choices = c("blue.white.red", "green.black.red", "green.yellow.red",
+ "purple.yellow.red", "blue.green.red", "blue.yellow.green",
+ "cyan.white.deeppink1"), selected="blue.white.red"),
radioButtons("lineshmapTrack9", HTML("Add position lines |
- Add genomic position lines between tracks.
+ Add genomic position lines between tracks, which can be used to identify the correspondance between heatmaps and regions.
|
"), c("Yes" = "1", "No" = "2"),selected="2"),
conditionalPanel(condition="input.lineshmapTrack9=='1'",
- numericInput("heightlinesTrack9", HTML("Lines height: |
+ numericInput("heightlinesTrack9", HTML("Position lines height: |
- Height of the lines.
+ Height of the position lines.
|
"), value=0.06, min=0, max=0.8, step=0.01),
- numericInput("marginlinesTrack9", HTML("Lines margin: |
+ numericInput("marginlinesTrack9", HTML("Position lines margin: |
- Margin size of the lines.
+ Margin size of the position lines.
|
"), value=0.01, min=0, max=0.8, step=0.005)
@@ -1836,17 +2864,68 @@ For data with four columns, a single character representing a color should be pr
"), value=0.01, min=0, max=0.8, step=0.005),
- conditionalPanel(condition="input.typeTrack9!='heatmap'",
- radioButtons("borderTrack9", "Add borders", c("Yes" = "add", "No" = ""),selected="")
+ conditionalPanel(condition="input.typeTrack9=='heatmap'",
+ radioButtons("gridsborderTrack9", HTML("Add cell borders |
+
+
+ Add borders to the heatmap grids, which can separate cells from each other.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected=""),
+ conditionalPanel(condition="input.gridsborderTrack9=='add'",
+ textInput("colgridsborderTrack9", HTML("Borders color: |
+
+
+ The color to be used for the borders of heatmap grids. For example, 'white' or 'red'.
+Hex color codes as '#FF0000' are also supported.
+ |
+
+ "), value="black")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack9!='heatmap' & input.typeTrack9!='ideogram'",
+ radioButtons("borderTrack9", HTML("Add borders |
+
+
+ Add borders to the plotting regions.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
+ conditionalPanel(condition="output.marklabel9",
+ radioButtons("labels9", HTML("Add labels |
+
+
+ Add labels to mark genes or genomic regions for this track using data uploaded in the 'Data upload' menu.
+ |
+
+ "), c("Yes" = "1", "No" = "2"), selected="2")
+ ),
+ conditionalPanel(condition="input.labels9==1",
+ radioButtons("poslabels9", "Labels position", c("Outer" = "outer", "Inner" = "inner"),selected="outer"),
+ numericInput("heightlabels9", HTML("Labels height: |
+
+
+ Height of the labels, which should be greater than 0.
+ |
+
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginlabels9", HTML("Labels margin: |
+
+
+ Margin size of the labels.
+ |
+
+ "), value=0.01, min=0, max=0.8, step=0.005)
),
- textInput("text9", HTML("Add legend text |
+ textInput("text9", HTML("Legend text |
- The text to appear in the legend which can be null or a character.
+ The text to appear in the legend.
|
"), value=NULL),
- conditionalPanel(condition="input.typeTrack9!='rect' & input.typeTrack9!='heatmap' & output.trackdat9",
+ conditionalPanel(condition="input.typeTrack9!='rect' & input.typeTrack9!='heatmap' & input.typeTrack9!='ideogram' & output.trackdat9 & !output.stackmd9",
radioButtons("highlightTrack9", HTML("Highlight regions |
@@ -1858,7 +2937,8 @@ For data with four columns, a single character representing a color should be pr
HTML(" Paste data below: |
- Each row should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color. For example, 'Chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
+ Each row should contain four components separated by commas including the chromosome ID, start coordinate,
+end coordinate and the specified color. For example, 'chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
|
"),
@@ -1882,36 +2962,58 @@ For data with four columns, a single character representing a color should be pr
radioButtons("directionTrack10", HTML(" Bar direction |
- Bars can be shown in unidirectional or bidirectional type. Bidirectional type can be used only when track's data includes four columns and data will be divided into two groups by boundary value.
+ Bars can be unidirectional or bidirectional. For bidirectional bars, the 4th column which
+contains the data values will be divided into two groups based on the boundary value.
|
"), c("Unidirectional" = "1", "Bidirectional" = "2"), selected="1"),
conditionalPanel(condition="input.directionTrack10=='2'",
numericInput("barBoundary10", "Boundary value:", value=0, step=0.01),
- textInput("coldir1Track10", "Outside color:", value="red"),
- textInput("coldir2Track10", "Inside color:", value="cyan")
+ textInput("coldir1Track10", "Outer color:", value="red"),
+ textInput("coldir2Track10", "Inner color:", value="cyan")
)
- ),
- conditionalPanel(condition="input.typeTrack10!='rect' & input.typeTrack10!='heatmap'",
+ ),
+ conditionalPanel(condition="input.typeTrack10!='rect' & input.typeTrack10!='heatmap' & input.typeTrack10!='ideogram'",
conditionalPanel(condition="input.typeTrack10!='bar' | input.directionTrack10=='1'",
radioButtons("coltypeTrack10", HTML(" Data color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users.
-For data with four columns, a single character representing a color should be provided. For data with five columns, a character vector containing 2 elements representing two different colors should be provided. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+To customize color for data with multiple columns, users should provide a character string representing one or multiple
+colors separated by commas. For example, 'red' or 'red,orange,blue'.
+To customize color for data with multiple groups, the column indicating different groups should be named as 'color' or 'stack'.
+Users should provide a character strings assigning colors to each group.
+For example, 'a:red;b:green;c:blue', in which 'a b c' represent different data groups.
+Color for data groups without assigned color would be set as 'grey'.
+Hex color codes as '#FF0000' are also supported. See example data for more details.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Custom for data with multi-column" = "2",
+ "Custom for data with multi-group" = "3"), selected="1"),
conditionalPanel(condition="input.coltypeTrack10=='2'",
- textInput("colorTrack10", NULL, value="pink")
+ textInput("colorTrack10", NULL, value="red,blue")
+ ),
+ conditionalPanel(condition="input.coltypeTrack10=='3'",
+ textInput("colorcusTrack10", NULL, value="a:red;b:blue;c:cyan")
)
)
),
+ conditionalPanel(condition="input.typeTrack10=='line' & !output.stackmd10",
+ radioButtons("fillareaTrack10", HTML(" Fill area |
+
+
+ Fill the area below the lines with colors.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
conditionalPanel(condition="input.typeTrack10=='rect'",
- radioButtons("rectTrack10", HTML(" Data color |
+ radioButtons("rectTrack10", HTML("Data type |
- The rects are filled with discrete or gradual colors. For discrete data, the fourth column should be a discrete character vector with no more than 50 groups. For gradual data, the fourth column should be a numeric vector. See example data for more details.
+ The rects are filled with gradual or discrete colors. For discrete data, the fourth column
+should be a categorical character vector with no more than 50 groups. For gradual data, the fourth
+column should be a numeric vector. See example data for more details.
|
"), c("Gradual" = "1", "Discrete" = "2"), selected="1"),
@@ -1919,19 +3021,42 @@ For data with four columns, a single character representing a color should be pr
radioButtons("rectcolTrack10", HTML("Select color |
- The color to be used to plot the data, which can be random assigned by the application or specified by the users. For random type, the fourth column of data should be a discrete character vector with no more than 50 groups. For specific type, all groups of data will be filled in a specific color. Hex color codes as '#FF0000' are also supported.
+ The color to be used to plot the data, which can be random assigned by the application or specified by the users.
+If 'Specific' was chosen, all data will be filled by a specified color.
+If 'Custom' was chosen, the 4th column of the uploaded data should be a categorical character vector with no more than 50 groups.
+Users should provide values as 'a:red;b:green;c:blue', in which 'a b c' represent different
+data category indicated by the 4th column of the uploaded data.
+Color for data without customed color will be set to NULL. Hex color codes as '#FF0000' are also supported.
|
- "), c("Random" = "1", "Specific" = "2"), selected="1"),
+ "), c("Random" = "1", "Specific" = "2", "Custom" = "3"), selected="1"),
conditionalPanel(condition="input.rectcolTrack10=='2'",
textInput("rectcoldisTrack10", NULL, value="red")
+ ),
+ conditionalPanel(condition="input.rectcolTrack10=='3'",
+ textInput("rectcoldiscusTrack10", NULL, value="a:red;b:blue;c:cyan")
)
- ),
+ ),
conditionalPanel(condition="input.rectTrack10=='1'",
- selectInput("colrectTrack10", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange", "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold", "lightblue", "navy.yellow", "purple.seagreen", "navy.orange", "navy.cyan", "blue.red", "green.red"))
+ selectInput("colrectTrack10", NULL, choices = c("blue", "red", "green", "cyan", "purple", "pink", "orange",
+ "yellow", "navy", "seagreen", "maroon", "olivedrab", "gold",
+ "lightblue", "navy.yellow", "purple.seagreen", "navy.orange",
+ "navy.cyan", "blue.red", "green.red"))
)
),
- conditionalPanel(condition="input.typeTrack10!='heatmap'",
+ conditionalPanel(condition="input.typeTrack10=='line' & !output.stackmd10 & input.fillareaTrack10=='add'",
+ radioButtons("selreaTrack10", HTML("Area color |
+
+
+ Filled color to the area, which can be identical with lines color or specified by the users. If 'Specific' was chosen, all data will be filled by a specified color as 'orange'.
+ |
+
+ "), c("Identical with lines" = "1", "Specific" = "2"),selected="1"),
+ conditionalPanel(condition="input.selreaTrack10=='2'",
+ textInput("borderareaTrack10", NULL, value="orange")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack10!='heatmap' & input.typeTrack10!='ideogram'",
numericInput("transparencyTrack10", HTML("Color transparency: |
@@ -1940,27 +3065,45 @@ For data with four columns, a single character representing a color should be pr
|
"), value=1, min=0, max=1, step=0.1)
),
- conditionalPanel(condition="input.typeTrack10!='rect' & input.typeTrack10!='heatmap'",
+ conditionalPanel(condition="input.typeTrack10=='point' & output.stackmd10",
+ textInput("symbolTrack10", HTML("Symbol type: |
+
+
+ Symbols used for different points. Applicable value can be a number in [0-25] or a numeric vector of arbitrary length
+adjusted automatically to the number of data categories. Type ?pch in R console for more details.
+ |
+
+ "), value="16"),
+ numericInput("pointsizeTrack10", "Point size:", value=0.6, min=0, max=1.5, step=0.05)
+ ),
+ conditionalPanel(condition="input.typeTrack10!='rect' & input.typeTrack10!='heatmap' & input.typeTrack10!='ideogram' & !output.stackmd10",
textInput("baselineTrack10", HTML("Y coordinates of baselines: |
- Decimal numbers in [0, 1] to adjust y coordinates of baselines. Numeric vector of arbitrary length is accepted and represent the number of baselines. For example, '0.5' or '0.25,0.5,0.75'.
+ Decimal numbers in [0, 1] to adjust y-axis coordinates of baselines. Numeric vector of arbitrary length is
+accepted. For example, '0.5' or '0.25,0.5,0.75'.
|
- "), value="0.25,0.75"),
+ "), value="0.25,0.75")
+ ),
+ conditionalPanel(condition="input.typeTrack10!='rect' & input.typeTrack10!='heatmap' & input.typeTrack10!='ideogram' & !(input.typeTrack10=='line' & output.stackmd10)",
textInput("colorlineTrack10", HTML("Baselines color(s): |
- The color to be used for the baselines which can be null or a character vector of arbitrary length, which can be adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the baselines which can be null or a character vector of arbitrary length
+adjusted automatically to the number of baselines. For example, 'grey' or 'red,green'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey")
),
- conditionalPanel(condition="input.typeTrack10!='heatmap'",
+ conditionalPanel(condition="input.typeTrack10!='heatmap' & input.typeTrack10!='ideogram'",
textInput("bgcolTrack10", HTML("Background color(s): |
- The color to be used for the background of the plot which can be null or a color vector of arbitrary length adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'. Hex color codes as '#FF0000' are also supported.
+ The color to be used for the background of the plot which can be null or a color vector of arbitrary length
+adjusted automatically to the number of sectors. For example, 'grey95' or 'grey95,grey,pink,yellow'.
+Hex color codes as '#FF0000' are also supported.
|
"), value="grey95")
@@ -1969,39 +3112,31 @@ For data with four columns, a single character representing a color should be pr
selectInput("colhmapTrack10", HTML("Colors: |
- Colors used for the heatmap.
- |
-
- "), choices = c("blue.white.red", "green.black.red", "green.yellow.red", "purple.yellow.red", "blue.green.red", "blue.yellow.green", "cyan.white.deeppink1"), selected="blue.white.red"),
- radioButtons("midhmapTrack10", HTML("Midpoint |
-
-
- The midpoint of track's data. Default to (max+min)/2.
+ Colors to be used for the heatmap.
|
- "), c("Default" = "1", "Custom" = "2"), selected="1"),
- conditionalPanel(condition="input.midhmapTrack10=='2'",
- numericInput("midpointTrack10", NULL, value=0, min=-1000000, max=1000000, step=0.5)
- ),
+ "), choices = c("blue.white.red", "green.black.red", "green.yellow.red",
+ "purple.yellow.red", "blue.green.red", "blue.yellow.green",
+ "cyan.white.deeppink1"), selected="blue.white.red"),
radioButtons("lineshmapTrack10", HTML("Add position lines |
- Add genomic position lines between tracks.
+ Add genomic position lines between tracks, which can be used to identify the correspondance between heatmaps and regions.
|
"), c("Yes" = "1", "No" = "2"),selected="2"),
conditionalPanel(condition="input.lineshmapTrack10=='1'",
- numericInput("heightlinesTrack10", HTML("Lines height: |
+ numericInput("heightlinesTrack10", HTML("Position lines height: |
- Height of the lines.
+ Height of the position lines.
|
"), value=0.06, min=0, max=0.8, step=0.01),
- numericInput("marginlinesTrack10", HTML("Lines margin: |
+ numericInput("marginlinesTrack10", HTML("Position lines margin: |
- Margin size of the lines.
+ Margin size of the position lines.
|
"), value=0.01, min=0, max=0.8, step=0.005)
@@ -2021,17 +3156,68 @@ For data with four columns, a single character representing a color should be pr
"), value=0.01, min=0, max=0.8, step=0.005),
- conditionalPanel(condition="input.typeTrack10!='heatmap'",
- radioButtons("borderTrack10", "Add borders", c("Yes" = "add", "No" = ""),selected="")
+ conditionalPanel(condition="input.typeTrack10=='heatmap'",
+ radioButtons("gridsborderTrack10", HTML("Add cell borders |
+
+
+ Add borders to the heatmap grids, which can separate cells from each other.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected=""),
+ conditionalPanel(condition="input.gridsborderTrack10=='add'",
+ textInput("colgridsborderTrack10", HTML("Borders color: |
+
+
+ The color to be used for the borders of heatmap grids. For example, 'white' or 'red'.
+Hex color codes as '#FF0000' are also supported.
+ |
+
+ "), value="black")
+ )
+ ),
+ conditionalPanel(condition="input.typeTrack10!='heatmap' & input.typeTrack10!='ideogram'",
+ radioButtons("borderTrack10", HTML("Add borders |
+
+
+ Add borders to the plotting regions.
+ |
+
+ "), c("Yes" = "add", "No" = ""),selected="")
+ ),
+ conditionalPanel(condition="output.marklabel10",
+ radioButtons("labels10", HTML("Add labels |
+
+
+ Add labels to mark genes or genomic regions for this track using data uploaded in the 'Data upload' menu.
+ |
+
+ "), c("Yes" = "1", "No" = "2"), selected="2")
),
- textInput("text10", HTML("Add legend text |
+ conditionalPanel(condition="input.labels10==1",
+ radioButtons("poslabels10", "Labels position", c("Outer" = "outer", "Inner" = "inner"),selected="outer"),
+ numericInput("heightlabels10", HTML("Labels height: |
+
+
+ Height of the labels, which should be greater than 0.
+ |
+
+ "), value=0.06, min=0, max=0.8, step=0.01),
+ numericInput("marginlabels10", HTML("Labels margin: |
- The text to appear in the legend which can be null or a character.
+ Margin size of the labels.
+ |
+
+ "), value=0.01, min=0, max=0.8, step=0.005)
+ ),
+ textInput("text10", HTML("Legend text |
+
+
+ The text to appear in the legend.
|
"), value=NULL),
- conditionalPanel(condition="input.typeTrack10!='rect' & input.typeTrack10!='heatmap' & output.trackdat10",
+ conditionalPanel(condition="input.typeTrack10!='rect' & input.typeTrack10!='heatmap' & input.typeTrack10!='ideogram' & output.trackdat10 & !output.stackmd10",
radioButtons("highlightTrack10", HTML("Highlight regions |
@@ -2043,7 +3229,9 @@ For data with four columns, a single character representing a color should be pr
HTML(" Paste data below: |
- Each row should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color. For example, 'Chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
+ Each row should contain four components separated by commas including the chromosome ID,
+start coordinate, end coordinate and the specified color. For example, 'chr1,1,100000000,red'.
+Hex color codes as '#FF0000' are also supported.
|
"),
@@ -2067,7 +3255,10 @@ For data with four columns, a single character representing a color should be pr
radioButtons("colorLinks", HTML(" Data color |
- Links are filled with random color assigned by the system or colors specified by the user as 'red' or '#FF0000'.
+ Links are filled with colors random assigned by the system or colors specified by the user.
+For data with 6 columns, format of specified color as 'red' or 'green' is supported.
+For data with 7 columns, format of specified color as 'a:red;b:green;c:blue' is supported.
+'a', 'b', 'c' represents different categories indicated by the 7th column. Color for data groups without assigned color would be set as 'grey'.
|
"), c("Random" = "1", "Specific" = "2"), selected="1"),
@@ -2088,10 +3279,10 @@ For data with four columns, a single character representing a color should be pr
|
"), value=0.01, min=0, max=0.8, step=0.005),
- textInput("text11", HTML("Add legend text |
+ textInput("text11", HTML("Legend text |
- The text to appear in the legend which can be null or a character.
+ The text to appear in the legend.
|
"), value=NULL),
@@ -2106,7 +3297,9 @@ For data with four columns, a single character representing a color should be pr
HTML("Paste data below: |
- Each row should contain four components separated by commas including the chromosome ID, start coordinate, end coordinate and the specified color. For example, 'Chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
+ Each row should contain four components separated by commas including the
+chromosome ID, start coordinate, end coordinate and the specified color.
+For example, 'chr1,1,100000000,red'. Hex color codes as '#FF0000' are also supported.
|
"),
@@ -2128,12 +3321,19 @@ For data with four columns, a single character representing a color should be pr
conditionalPanel(condition="input.plotSize",
numericInput("myHeight", "Plot height:", value=750),
numericInput("myWidth", "Plot width:", value=750)
+ ),
+ checkboxInput("adfontSize", HTML("Adjust font size"), FALSE),
+ conditionalPanel(condition="input.adfontSize",
+ radioButtons("fontsize", NULL, c("Small" = "1", "Medium" = "1.1","Large"="1.2","Custom"="custom")),
+ conditionalPanel(condition="input.fontsize=='custom'",
+ numericInput("cexlabel", NULL, value=1, min=0.1, max=3, step=0.1)
+ )
),
checkboxInput("addlegend", HTML("Add legend"), FALSE),
conditionalPanel(condition="input.addlegend",
radioButtons("seladdlegend", NULL, c("Yes" = "1", "No" = "2"), selected="1"),
conditionalPanel(condition="input.seladdlegend=='1'",
- radioButtons("selposlegend", "Adjust legend position", c("Right" = "1", "Center" = "2"), selected="1")
+ radioButtons("selposlegend", "Legend position", c("Right" = "1", "Center" = "2"), selected="1")
)
),
HTML(' '),
@@ -2158,84 +3358,147 @@ For data with four columns, a single character representing a color should be pr
tabPanel("About",
HTML('Software references'),
HTML('1. R Development Core Team. R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna (2016)
- 2. RStudio and Inc. shiny: Web Application Framework for R. R package version 0.13.2 (2016)
- 3. Gu, Z. circlize: Circular Visualization. R package version 0.3.10 (2017)
+ 2. RStudio and Inc. shiny: Web Application Framework for R. R package version 1.0.0 (2016)
+ 3. Gu, Z. circlize: Circular Visualization. R package version 0.4.1 (2017)
4. Neuwirth, E. RColorBrewer: ColorBrewer palettes. R package version 1.1-2 (2014)
5. Lawrence, M. GenomicRanges: Representation and manipulation of genomic intervals and variables defined along a genome. R package version 1.24.3 (2016)
- 6. R Core Team and contributors worldwide. grDevices: Graphics devices and support for base and grid graphics. R package version 3.3.1 (2016)
'),
+ 6. Dowle, M. data.table: Extension of Data.frame. R package version 1.9.6 (2015)
+ 7. R Core Team and contributors worldwide. grDevices: Graphics devices and support for base and grid graphics. R package version 3.3.3 (2016) '),
HTML('Further references'),
h6("This application was created by ", a("Wen Yao", href="https://www.researchgate.net/profile/Wen_Yao"), " and ", a("Yiming Yu", href="https://www.researchgate.net/profile/Yiming_Yu4"),
" . Please send bugs and feature requests to Wen Yao (ywhzau at gmail.com) or Yiming Yu (yimingyyu at gmail.com). This application uses the ",
- a("shiny package from RStudio", href="http://www.rstudio.com/shiny/"), ".")
+ a("shiny package from RStudio", href="http://www.rstudio.com/shiny/"), "."),
+
+ HTML('!!Note!!'),
+ h5("Users are encouraged to install and use shinyCircos on local personal computers.
+ Please check the help menu of the shinyCircos application or ", a("https://github.com/venyao/shinyCircos", href="https://github.com/venyao/shinyCircos"), " for the installation of shinyCircos on local computers.")
),
## *** Data upload panel ***
tabPanel("Data upload",
HTML('Download example data'),
HTML('Example chromosomes data'),
- downloadButton("general.csv", "Download general data"),
- downloadButton("cytoband.csv", "Download cytoband data"),
+ downloadButton("chromosome_general.csv", "general data"),
+ downloadButton("chromosome_cytoband.csv", "cytoband data"),
HTML('Example tracks data'),
- downloadButton("track1.csv", "Download track1 data"),
- downloadButton("track2.csv", "Download track2 data"),
- downloadButton("track3.csv", "Download track3 data"),
- downloadButton("track4.csv", "Download track4 data"),
- downloadButton("track5.csv", "Download track5 data"),
- downloadButton("track6.csv", "Download track6 data"),
- downloadButton("track7.csv", "Download track7 data"),
- downloadButton("track8.csv", "Download track8 data"),
- downloadButton("track9.csv", "Download track9 data"),
- downloadButton("track10.csv", "Download track10 data"),
+ downloadButton("point.csv", "point data"),
+ downloadButton("line.csv", "line data"),
+ downloadButton("barplot.csv", "barplot data"),
+ downloadButton("heatmap.csv", "heatmap data"),
+ downloadButton("chromosome_ideogram.csv", "ideogram data"),
+ downloadButton("rect_discrete.csv", "rect (discrete) data"),
+ downloadButton("point_multicolumn.csv", "point (multicolumn) data"),
+ downloadButton("barplot_bidirectional.csv", "barplot (bidirectional) data"),
+ downloadButton("rect_gradual.csv", "rect (gradual) data"),
+ downloadButton("line_multicolumn.csv", "line (multicolumn) data"),
+ downloadButton("line_color.csv", "line (color) data"),
+ downloadButton("barplot_color.csv", "barplot (color) data"),
+ downloadButton("point_color.csv", "point (color) data"),
+ downloadButton("point_pch.csv", "point (pch) data"),
+ downloadButton("point_color_pch.csv", "point (color+pch) data"),
+ downloadButton("point_cex.csv", "point (cex) data"),
+ downloadButton("point_pch_cex.csv", "point (pch+cex) data"),
+ downloadButton("point_color_cex.csv", "point (color+cex) data"),
+ downloadButton("point_color_pch_cex.csv", "point (color+pch+cex) data"),
+ downloadButton("gene_label.csv", "label data"),
+ downloadButton("stack_point.csv", "point (stack) data"),
+ downloadButton("stack_line.csv", "line (stack) data"),
HTML('Example links data'),
- downloadButton("links.csv", "Download links data"),
+ downloadButton("links.csv", "links data"),
+ downloadButton("links_color.csv", "links (color) data"),
HTML(' '),
HTML(' '),
HTML('Glimpse of data uploaded'),
+ textOutput("errorinfo1"),
conditionalPanel(condition="input.submit1>0",
conditionalPanel(condition="output.chrdat",
HTML('Chromosomes data'),
- tableOutput("viewChr")
+ tableOutput("viewChr"),
+ conditionalPanel(condition="output.chrlabel",
+ HTML('Label'),
+ tableOutput("viewlabelChr")
+ )
),
conditionalPanel(condition="input.uploadtrack1 == '2' | input.uploadtrack2 == '2' | input.uploadtrack3 == '2' | input.uploadtrack4 == '2' | input.uploadtrack5 == '2' | input.uploadtrack6 == '2' | input.uploadtrack7 == '2' | input.uploadtrack8 == '2' | input.uploadtrack9 == '2' | input.uploadtrack10 == '2'",
HTML('Tracks data'),
conditionalPanel(condition="input.uploadtrack1 == '2'",
HTML('Track1'),
- tableOutput("viewTrack1")
+ tableOutput("viewTrack1"),
+ conditionalPanel(condition="output.labeldat1",
+ HTML('Label1'),
+ tableOutput("viewlabelTrack1")
+ )
),
conditionalPanel(condition="input.uploadtrack2 == '2'",
HTML('Track2'),
- tableOutput("viewTrack2")
+ tableOutput("viewTrack2"),
+ conditionalPanel(condition="output.labeldat2",
+ HTML('Label2'),
+ tableOutput("viewlabelTrack2")
+ )
),
conditionalPanel(condition="input.uploadtrack3 == '2'",
HTML('Track3'),
- tableOutput("viewTrack3")
+ tableOutput("viewTrack3"),
+ conditionalPanel(condition="output.labeldat3",
+ HTML('Label3'),
+ tableOutput("viewlabelTrack3")
+ )
),
conditionalPanel(condition="input.uploadtrack4 == '2'",
HTML('Track4'),
- tableOutput("viewTrack4")
+ tableOutput("viewTrack4"),
+ conditionalPanel(condition="output.labeldat4",
+ HTML('Label4'),
+ tableOutput("viewlabelTrack4")
+ )
),
conditionalPanel(condition="input.uploadtrack5 == '2'",
HTML('Track5'),
- tableOutput("viewTrack5")
+ tableOutput("viewTrack5"),
+ conditionalPanel(condition="output.labeldat5",
+ HTML('Label5'),
+ tableOutput("viewlabelTrack5")
+ )
),
conditionalPanel(condition="input.uploadtrack6 == '2'",
HTML('Track6'),
- tableOutput("viewTrack6")
+ tableOutput("viewTrack6"),
+ conditionalPanel(condition="output.labeldat6",
+ HTML('Label6'),
+ tableOutput("viewlabelTrack6")
+ )
),
conditionalPanel(condition="input.uploadtrack7 == '2'",
HTML('Track7'),
- tableOutput("viewTrack7")
+ tableOutput("viewTrack7"),
+ conditionalPanel(condition="output.labeldat7",
+ HTML('Label7'),
+ tableOutput("viewlabelTrack7")
+ )
),
conditionalPanel(condition="input.uploadtrack8 == '2'",
HTML('Track8'),
- tableOutput("viewTrack8")
+ tableOutput("viewTrack8"),
+ conditionalPanel(condition="output.labeldat8",
+ HTML('Label8'),
+ tableOutput("viewlabelTrack8")
+ )
),
conditionalPanel(condition="input.uploadtrack9 == '2'",
HTML('Track9'),
- tableOutput("viewTrack9")
+ tableOutput("viewTrack9"),
+ conditionalPanel(condition="output.labeldat9",
+ HTML('Label9'),
+ tableOutput("viewlabelTrack9")
+ )
),
conditionalPanel(condition="input.uploadtrack10 == '2'",
HTML('Track10'),
- tableOutput("viewTrack10")
+ tableOutput("viewTrack10"),
+ conditionalPanel(condition="output.labeldat10",
+ HTML('Label10'),
+ tableOutput("viewlabelTrack10")
+ )
)
),
conditionalPanel(condition="input.linksTrack > 0",
@@ -2248,6 +3511,14 @@ For data with four columns, a single character representing a color should be pr
tabPanel("Circos visualization",
downloadButton("downloadPlotPDF", "Download pdf-file"),
downloadButton("downloadPlotSVG", "Download svg-file"),
+ downloadButton("downloadCode", "Download the R scripts to reproduce the Circos plot"),
+ textOutput("errorinfo2"),
+ textOutput("errorinfo3"),
+ textOutput("errorinfo4"),
+ textOutput("errorinfo5"),
+ textOutput("errorinfo6"),
+ textOutput("errorinfo7"),
+ textOutput("errorinfo8"),
plotOutput("circosfigure", height='100%', width='100%')
),
## *** FAQ panel***
@@ -2255,6 +3526,7 @@ For data with four columns, a single character representing a color should be pr
includeHTML("Gallery.html")
),
tabPanel("Help",
+ downloadButton("downloadHelpPDF", "Download the help manual for the usage of shinyCircos"),
includeHTML("README.html")
),
id="tabs1"
diff --git a/writeCmd.R b/writeCmd.R
new file mode 100644
index 0000000..a764977
--- /dev/null
+++ b/writeCmd.R
@@ -0,0 +1,1834 @@
+cat('## setwd("an absolute filepath including data files")',file="code.R",append=TRUE,sep="\n")
+cat("library(circlize)
+library(RColorBrewer)
+library(GenomicRanges)
+library(data.table)
+library(grDevices)
+options(warn=-1)",file="code.R",append=TRUE,sep="\n")
+cat("",file="code.R",append=TRUE,sep="\n")
+cat('plotcircos <- function(x, color, plotTypes, units, rotation, gap.width, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr, data.CN){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new(x, plotType=plotTypes, unit=units)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="outer"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "outside")
+ }
+ circos.genomicTrackPlotRegion(ylim = c(0, 1),bg.col = color, bg.border = NA, track.height = 0.05)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "inside")
+ }
+}
+
+plotcircos.notrack <- function(x, plotTypes, units, rotation, gap.width, data.CN, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new(x, plotType=plotTypes, unit=units)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "inside")
+ }
+}
+
+plotcircos.font <- function(x, color, plotTypes, units, rotation, gap.width, cexLabel, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr, data.CN){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new.font(x, plotType=plotTypes, unit=units, cexlabel=cexLabel)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="outer"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "outside")
+ }
+ circos.genomicTrackPlotRegion(ylim = c(0, 1),bg.col = color, bg.border = NA, track.height = 0.05)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "inside")
+ }
+}
+
+plotcircos.notrack.font <- function(x, plotTypes, units, rotation, gap.width, cexLabel, data.CN, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new.font(x, plotType=plotTypes, unit=units, cexlabel=cexLabel)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "inside")
+ }
+}
+
+plotcircos.cyto <- function(x, plotTypes, units, rotation, gap.width, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr, data.CN){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new(x, plotType = plotTypes, unit=units)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="outer"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "outside")
+ }
+ circos.genomicTrackPlotRegion(x, ylim = c(0, 1), bg.border = NA,
+ track.height = 0.05, panel.fun = function(region, value, ...){
+ col = cytoband.col(value[[2]])
+ circos.genomicRect(region, value, ybottom = 0,
+ ytop = 1, col = col, border = NA, ...)
+ xlim = get.cell.meta.data("xlim")
+ circos.rect(xlim[1], 0, xlim[2], 1, border = "black")
+ }, cell.padding = c(0, 0, 0, 0))
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "inside")
+ }
+}
+
+plotcircos.cyto.font <- function(x, plotTypes, units, rotation, gap.width, cexLabel, labeltextchr, poslabelschr, heightlabelschr, marginlabelschr, data.CN){
+ circos.par("start.degree"=90-rotation, "gap.degree"=gap.width, cell.padding=c(0,0,0,0), track.margin=c(0,0))
+ circos.genomicInitialize.new.font(x, plotType=plotTypes, unit=units, cexlabel=cexLabel)
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="outer"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "outside")
+ }
+ circos.genomicTrackPlotRegion(x, ylim = c(0, 1), bg.border = NA,
+ track.height = 0.05, panel.fun = function(region, value, ...){
+ col = cytoband.col(value[[2]])
+ circos.genomicRect(region, value, ybottom = 0,
+ ytop = 1, col = col, border = NA, ...)
+ xlim = get.cell.meta.data("xlim")
+ circos.rect(xlim[1], 0, xlim[2], 1, border = "black")
+ }, cell.padding = c(0, 0, 0, 0))
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1 && poslabelschr=="inner"){
+ circos.genomicLabels(data.CN, labels.column = 4, connection_height = heightlabelschr, track.margin = c(0.01,marginlabelschr), side = "inside")
+ }
+}
+
+circos.genomicInitialize.new <-
+ function (data, sector.names = NULL, major.by = NULL, unit = "", plotType, tickLabelsStartFromZero = TRUE, track.height = 0.05,
+ ...)
+ {
+ if(is.factor(data[[1]])){
+ fa = levels(data[[1]])
+ }
+ else {
+ fa = unique(data[[1]])
+ }
+ if(!is.null(sector.names)){
+ if(length(sector.names) != length(fa)){
+ stop("length of `sector.names` and length of sectors differ.")
+ }
+ }
+ else {
+ sector.names = fa
+ }
+ names(sector.names) = fa
+ x1 = tapply(data[[2]], data[[1]], min)[fa]
+ x2 = tapply(data[[3]], data[[1]], max)[fa]
+ op = circos.par("cell.padding")
+ ow = circos.par("points.overflow.warning")
+ circos.par(cell.padding = c(0, 0, 0, 0), points.overflow.warning = FALSE)
+ circos.initialize(factor(fa, levels = fa), xlim = cbind(x1,
+ x2), ...)
+ if(any(plotType %in% c("axis", "labels"))){
+ circos.genomicTrackPlotRegion(data, ylim = c(0, 1), bg.border = NA,
+ track.height = track.height, panel.fun = function(region,
+ value, ...){
+ sector.index = get.cell.meta.data("sector.index")
+ xlim = get.cell.meta.data("xlim")
+ if(tickLabelsStartFromZero){
+ offset = xlim[1]
+ if(is.null(major.by)){
+ xlim = get.cell.meta.data("xlim")
+ major.by = .default.major.by()
+ }
+ major.at = seq(xlim[1], xlim[2], by = major.by)
+ major.at = c(major.at, major.at[length(major.at)] +
+ major.by)
+ if(major.by > 1e+06){
+ major.tick.labels = paste((major.at - offset)/1e+06,
+ "MB", sep = "")
+ }
+ else if(major.by > 1000){
+ major.tick.labels = paste((major.at - offset)/1000,
+ "KB", sep = "")
+ }
+ else {
+ major.tick.labels = paste((major.at - offset),
+ "bp", sep = "")
+ }
+ }
+ else {
+ if(is.null(major.by)){
+ xlim = get.cell.meta.data("xlim")
+ major.by = .default.major.by()
+ }
+ major.at = seq(floor(xlim[1]/major.by) * major.by,
+ xlim[2], by = major.by)
+ major.at = c(major.at, major.at[length(major.at)] +
+ major.by)
+ if(major.by > 1e+06){
+ major.tick.labels = paste(major.at/1e+06,
+ "MB", sep = "")
+ }
+ else if(major.by > 1000){
+ major.tick.labels = paste(major.at/1000,
+ "KB", sep = "")
+ }
+ else {
+ major.tick.labels = paste(major.at, "bp",
+ sep = "")
+ }
+ }
+
+ if(unit==""){ major.tick.labels <- gsub("[mkbp]","",major.tick.labels,ignore.case = T)}
+
+ if(all(c("axis", "labels") %in% plotType)){
+ circos.axis(h = 0, major.at = major.at, labels = major.tick.labels,
+ labels.cex = 0.49 * par("cex"), labels.facing = "clockwise",
+ major.tick.percentage = 0.2)
+ circos.text(mean(xlim), 1.2, labels = sector.names[sector.index],
+ cex = par("cex")-0.1, adj = c(0.5, -0.1*par("cex")*6-(par("cex")-1)*3), niceFacing = TRUE)
+ }
+ else if("labels" %in% plotType){
+ circos.text(mean(xlim), 0, labels = sector.names[sector.index],
+ cex = par("cex")-0.1, adj = c(0.5, -0.1*par("cex")*6-(par("cex")-1)*3), niceFacing = TRUE)
+ }
+ else if("axis" %in% plotType){
+ circos.axis(h = 0, major.at = major.at, labels = major.tick.labels,
+ labels.cex = 0.49 * par("cex"), labels.facing = "clockwise",
+ major.tick.percentage = 0.2)
+ }
+ })
+ }
+ circos.par(cell.padding = op, points.overflow.warning = ow)
+ return(invisible(NULL))
+ }
+
+circos.genomicInitialize.new.font <-
+ function (data, sector.names = NULL, major.by = NULL, unit = "", plotType, tickLabelsStartFromZero = TRUE, track.height = 0.05, cexlabel,
+ ...)
+ {
+ if(is.factor(data[[1]])){
+ fa = levels(data[[1]])
+ }
+ else {
+ fa = unique(data[[1]])
+ }
+ if(!is.null(sector.names)){
+ if(length(sector.names) != length(fa)){
+ stop("length of `sector.names` and length of sectors differ.")
+ }
+ }
+ else {
+ sector.names = fa
+ }
+ names(sector.names) = fa
+ x1 = tapply(data[[2]], data[[1]], min)[fa]
+ x2 = tapply(data[[3]], data[[1]], max)[fa]
+ op = circos.par("cell.padding")
+ ow = circos.par("points.overflow.warning")
+ circos.par(cell.padding = c(0, 0, 0, 0), points.overflow.warning = FALSE)
+ circos.initialize(factor(fa, levels = fa), xlim = cbind(x1,
+ x2), ...)
+ if(any(plotType %in% c("axis", "labels"))){
+ circos.genomicTrackPlotRegion(data, ylim = c(0, 1), bg.border = NA,
+ track.height = track.height, panel.fun = function(region,
+ value, ...){
+ sector.index = get.cell.meta.data("sector.index")
+ xlim = get.cell.meta.data("xlim")
+ if(tickLabelsStartFromZero){
+ offset = xlim[1]
+ if(is.null(major.by)){
+ xlim = get.cell.meta.data("xlim")
+ major.by = .default.major.by()
+ }
+ major.at = seq(xlim[1], xlim[2], by = major.by)
+ major.at = c(major.at, major.at[length(major.at)] +
+ major.by)
+ if(major.by > 1e+06){
+ major.tick.labels = paste((major.at - offset)/1e+06,
+ "MB", sep = "")
+ }
+ else if(major.by > 1000){
+ major.tick.labels = paste((major.at - offset)/1000,
+ "KB", sep = "")
+ }
+ else {
+ major.tick.labels = paste((major.at - offset),
+ "bp", sep = "")
+ }
+ }
+ else {
+ if(is.null(major.by)){
+ xlim = get.cell.meta.data("xlim")
+ major.by = .default.major.by()
+ }
+ major.at = seq(floor(xlim[1]/major.by) * major.by,
+ xlim[2], by = major.by)
+ major.at = c(major.at, major.at[length(major.at)] +
+ major.by)
+ if(major.by > 1e+06){
+ major.tick.labels = paste(major.at/1e+06,
+ "MB", sep = "")
+ }
+ else if(major.by > 1000){
+ major.tick.labels = paste(major.at/1000,
+ "KB", sep = "")
+ }
+ else {
+ major.tick.labels = paste(major.at, "bp",
+ sep = "")
+ }
+ }
+
+ if(unit==""){ major.tick.labels <- gsub("[mkbp]","",major.tick.labels,ignore.case = T)}
+
+ if(all(c("axis", "labels") %in% plotType)){
+ circos.axis(h = 0, major.at = major.at, labels = major.tick.labels,
+ labels.cex = 0.49 * cexlabel, labels.facing = "clockwise",
+ major.tick.percentage = 0.2)
+ circos.text(mean(xlim), 1.2, labels = sector.names[sector.index],
+ cex = cexlabel, adj = c(0.5, -0.1*cexlabel*6-(cexlabel-1)*3), niceFacing = TRUE)
+ }
+ else if("labels" %in% plotType){
+ circos.text(mean(xlim), 0, labels = sector.names[sector.index],
+ cex = cexlabel, adj = c(0.5, -0.1*cexlabel*6-(cexlabel-1)*3), niceFacing = TRUE)
+ }
+ else if("axis" %in% plotType){
+ circos.axis(h = 0, major.at = major.at, labels = major.tick.labels,
+ labels.cex = 0.49 * cexlabel, labels.facing = "clockwise",
+ major.tick.percentage = 0.2)
+ }
+ })
+ }
+ circos.par(cell.padding = op, points.overflow.warning = ow)
+ return(invisible(NULL))
+ }
+
+.default.major.by = function(sector.index = get.cell.meta.data("sector.index"),
+ track.index = get.cell.meta.data("track.index")){
+ d = circos.par("major.by.degree")
+ cell.start.degre = get.cell.meta.data("cell.start.degree", sector.index, track.index)
+ tm = reverse.circlize(c(cell.start.degre, cell.start.degre-d), rep(get.cell.meta.data("cell.bottom.radius", sector.index = sector.index, track.index = track.index), 2))
+ major.by = abs(tm[1, 1] - tm[2, 1])
+ digits = as.numeric(gsub("^.*e([+-]\\\\d+)$", "\\\\1", sprintf("%e", major.by)))
+ major.by = round(major.by, digits = -1*digits)
+ return(major.by)
+}
+
+get_most_inside_radius = function() {
+ tracks = get.all.track.index()
+ if(length(tracks) == 0) {
+ 1
+ }else{
+ n = length(tracks)
+ get.cell.meta.data("cell.bottom.radius", track.index = tracks[n]) - get.cell.meta.data("track.margin", track.index = tracks[n])[1] - circos.par("track.margin")[2]
+ }
+}',file="code.R",append=TRUE,sep="\n")
+cat("",file="code.R",append=TRUE,sep="\n")
+cat(paste("data.C.name <- ",'"',data.C.name,'"',sep=""),file="code.R",append=TRUE,sep="\n")
+cat('data.C <- data.frame(fread(data.C.name),stringsAsFactors=F)',file="code.R",append=TRUE,sep="\n")
+cat("data.C[,2] <- as.numeric(data.C[,2])
+data.C[,3] <- as.numeric(data.C[,3])",file="code.R",append=TRUE,sep="\n")
+cat(paste('data.T.file <- c("',paste(uploadTrackfile.export,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+if(!is.null(uploadTrackfile.export)){
+ cat("data.T <- lapply(1:length(data.T.file),function(x){
+ if(!is.null(data.T.file[x])){
+ data.frame(fread(data.T.file[x]),stringsAsFactors=F)
+ }
+ })",file="code.R",append=TRUE,sep="\n")
+}
+
+if(!is.null(data.CN.name)){
+ cat(paste("data.CN.name <- ",'"',data.CN.name,'"',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('data.CN <- data.frame(fread(data.CN.name),stringsAsFactors=F)',file="code.R",append=TRUE,sep="\n")
+ cat("data.CN[,2] <- as.numeric(data.CN[,2])
+ data.CN[,3] <- as.numeric(data.CN[,3])",file="code.R",append=TRUE,sep="\n")
+}else{
+ cat('data.CN <- NULL',file="code.R",append=TRUE,sep="\n")
+}
+cat(paste('data.N.file <- c("',paste(markTrackfile.export,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+if(!is.null(markTrackfile.export)){
+ cat(paste("uploadtrack <- c(",paste(uploadtrack.export,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat("data.N <- lapply(1:10,function(x){
+ if(uploadtrack[x] == 2 && nchar(data.N.file[x])>0){
+ data.frame(fread(data.N.file[x]),stringsAsFactors=F)
+ }
+ })",file="code.R",append=TRUE,sep="\n")
+}
+if(length(data.T) == 0){
+ cat("data.T <- NULL",file="code.R",append=TRUE,sep="\n")
+}
+cat(paste("trackindx <- c(",paste(trackindx,collapse =","),")",sep=""),"data.N <- data.N[trackindx]",file="code.R",append=TRUE,sep="\n")
+if(length(data.N) == 0){
+ cat("data.N <- NULL",file="code.R",append=TRUE,sep="\n")
+}
+
+if(!linksTrack.export){
+ cat("data.L <- NULL",file="code.R",append=TRUE,sep="\n")
+}else if(linksTrack.export && !is.null(linksFile.export)){
+ cat(paste("data.L <- data.frame(fread(",'"',linksFile.name,'"',"),stringsAsFactors=F)",sep=""),file="code.R",append=TRUE,sep="\n")
+ if(ncol(data.L)==6 | ncol(data.L)==7){
+ cat("data.L1 <- data.L[,1:3]
+ data.L2 <- data.L[,4:6]
+ data.L1[,2] <- as.numeric(data.L1[,2])
+ data.L1[,3] <- as.numeric(data.L1[,3])
+ data.L2[,2] <- as.numeric(data.L2[,2])
+ data.L2[,3] <- as.numeric(data.L2[,3])
+ data.L1$num <- 1:nrow(data.L1)
+ data.L2$num <- 1:nrow(data.L2)
+ rownames(data.L1) <- data.L1$num
+ rownames(data.L2) <- data.L2$num",file="code.R",append=TRUE,sep="\n")
+ }
+}
+if(!is.null(data.L)){
+ if(nchar(hltdataLinks)!=0){
+ cat(paste('hltdataLinks <- "',hltdataLinks,'"',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('tmpL <- matrix(strsplit(hltdataLinks, "\\n")[[1]])
+ colnamesL <- c("chr","start","end","color")
+ datL <- matrix(0, length(tmpL), length(colnamesL))
+ colnames(datL) <- colnamesL
+ for(l in 1:length(tmpL)){
+ rowL <- strsplit(tmpL[l], ",")[[1]]
+ if(length(rowL)==4){
+ datL[l,] <- rowL
+ }
+ }
+ datL <- data.frame(datL,stringsAsFactors=F)
+ datL$start <- as.numeric(datL$start)
+ datL$end <- as.numeric(datL$end)
+ datL$color <- datL$color
+ queryL <- GRanges(seqnames = datL$chr,ranges=IRanges(start=datL$start,end=datL$end),seqinfo=NULL)
+ subj1 <- GRanges(seqnames = data.L1[,1],ranges=IRanges(start=data.L1[,2],end=data.L1[,3]),seqinfo=NULL)
+ subj2 <- GRanges(seqnames = data.L2[,1],ranges=IRanges(start=data.L2[,2],end=data.L2[,3]),seqinfo=NULL)
+ indx1 <- findOverlaps(queryL,subj1)
+ indx1 <- data.frame(indx1,stringsAsFactors=F)
+ indx1$queryHits <- as.numeric(indx1$queryHits)
+ indx1$subjectHits <- as.numeric(indx1$subjectHits)
+ hltregion1 <- data.L1[indx1$subjectHits,]
+ data.LL1 <- data.L1
+ hltregion1$color <- datL$color[indx1[,1]]
+ indx2 <- findOverlaps(queryL,subj2)
+ indx2 <- data.frame(indx2,stringsAsFactors=F)
+ indx2$queryHits <- as.numeric(indx2$queryHits)
+ indx2$subjectHits <- as.numeric(indx2$subjectHits)
+ hltregion2 <- data.L2[indx2$subjectHits,]
+ data.LL2 <- data.L2
+ hltregion2$color <- datL$color[indx2[,1]]',file="code.R",append=TRUE,sep="\n")
+ }
+}
+if(!is.null(data.T)){
+ for(k in 1:length(data.T)){
+ if(nchar(hltdata.List[[k]])>0){
+ assign(paste("hltdata",k,sep=""),hltdata.List[[k]])
+ cat(paste("hltdata",k,' <- "',get(paste("hltdata",k,sep="")),'"',sep=""),file="code.R",append=TRUE,sep="\n")
+ }else{
+ assign(paste("hltdata",k,sep=""),NULL)
+ cat(paste("hltdata",k,' <- ""',sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ }
+}
+cat('hltregion.List <- list()',file="code.R",append=TRUE,sep="\n")
+cat('if(!is.null(data.T)){
+ for(k in 1:length(data.T)){
+ data.TT <- data.T[[k]]
+ hltregion.List[[k]] <- ""',file="code.R",append=TRUE,sep="\n")
+cat(paste('if(nchar(get(paste("hltdata",k,sep="")))>0){'),file="code.R",append=TRUE,sep="\n")
+cat('tmp <- matrix(strsplit(get(paste("hltdata",k,sep="")), "\\n")[[1]])
+ myColnames <- c("chr","start","end","color")
+ data <- matrix(0, length(tmp), length(myColnames))
+ colnames(data) <- myColnames
+ for(p in 1:length(tmp)){
+ myRow <- strsplit(tmp[p], ",")[[1]]
+ if(length(myRow)==4){
+ data[p,] <- myRow
+ }
+ }
+ data <- data.frame(data,stringsAsFactors=F)
+ data$start <- as.numeric(data$start)
+ data$end <- as.numeric(data$end)
+ query <- GRanges(seqnames = data$chr,ranges=IRanges(start=data$start,end=data$end),seqinfo=NULL)
+ subj <- GRanges(seqnames = data.TT[,1],ranges=IRanges(start=data.TT[,2],end=data.TT[,3]),seqinfo=NULL)
+ indx <- findOverlaps(query,subj)
+ indx <- data.frame(indx,stringsAsFactors=F)
+ indx$queryHits <- as.numeric(indx$queryHits)
+ indx$subjectHits <- as.numeric(indx$subjectHits)
+ hltregion <- data.TT[indx$subjectHits,]
+ hltregion$color <- data$color[indx[,1]]
+ hltregion$id <- paste(hltregion[,1],hltregion[,2],hltregion[,3],sep="")
+ hltregion.List[[k]] <- hltregion
+ }
+ }
+ }',file="code.R",append=TRUE,sep="\n")
+cat("",file="code.R",append=TRUE,sep="\n")
+cat(paste('pdf("shinyCircos.pdf", width=',widthSize,"/72,"," height=",heightSize,"/72)",sep=""),paste('## svg("shinyCircos.svg", width=',widthSize,"/72,"," height=",heightSize,"/72)",sep=""),file="code.R",append=TRUE,sep="\n")
+## *** The gap width ***
+repnumgap <- round(length(unique(data.C[,1]))/length(gap.width))+1
+gap.width <- rep(gap.width, repnumgap)[1:length(unique(data.C[,1]))]
+gap.width <- as.numeric(gap.width)
+rotation <- gap.width[length(gap.width)]/2
+if(fontsize=="custom"){
+ cat(paste("cexlabel <- ",cexlabel,sep=""),file="code.R",append=TRUE,sep="\n")
+ if(length(legendtext)!=0 && addlegend==1 && poslegend==1){
+ cat("par(oma=c(0,0,0,0), mar=c(9,0.5,1,9.5), xpd=TRUE, cex=cexlabel-0.1)",file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat("par(mar=c(0.6,0.6,0.6,0.6), cex=cexlabel-0.1)",file="code.R",append=TRUE,sep="\n")
+ }
+}else{
+ cat(paste("fontsize <- ",fontsize,sep=""),file="code.R",append=TRUE,sep="\n")
+ if(length(legendtext)!=0 && addlegend==1 && poslegend==1){
+ cat("par(oma=c(0,0,0,0), mar=c(9,0.5,1,9.5), xpd=TRUE, cex=fontsize-0.05)",file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat("par(mar=c(0.6,0.6,0.6,0.6), cex=fontsize-0.05)",file="code.R",append=TRUE,sep="\n")
+ }
+}
+cat(paste('trackChr <- "',trackChr,'"',sep=""),file="code.R",append=TRUE,sep="\n")
+cat(paste("labelChr <- ",'"',labelChr,'"',sep=""),paste("unitChr <- ",'"',unitChr,'"',sep=""),paste("rotation <- ",rotation,sep=""),paste("gap.width <- c(",paste(gap.width,collapse = ","),")",sep=""),paste("labeltextchr <- ",labeltextchr,sep=""),
+ paste("poslabelschr <- ",'"',poslabelschr,'"',sep=""),paste("heightlabelschr <- ",heightlabelschr,sep=""),paste("marginlabelschr <- ",marginlabelschr,sep=""),file="code.R",append=TRUE,sep="\n")
+if(datatypeChr=="general"){
+ if(trackChr=="track" && fontsize!="custom"){
+ colorChr <- gsub("0x","#", colorChr)
+ repnumcol <- round(length(unique(data.C[,1]))/length(colorChr))+1
+ colorChr <- rep(colorChr, repnumcol)[1:length(unique(data.C[,1]))]
+ cat(paste('colorChr <- c("',paste(colorChr,collapse = '","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('plotcircos(data.C, color=colorChr, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr, data.CN=data.CN)',file="code.R",append=TRUE,sep="\n")
+ }else if(trackChr=="track" && fontsize=="custom"){
+ repnumcol <- round(length(unique(data.C[,1]))/length(colorChr))+1
+ colorChr <- rep(colorChr, repnumcol)[1:length(unique(data.C[,1]))]
+ cat(paste('colorChr <- c("',paste(colorChr,collapse = '","'),'")',sep=""),paste("cexlabel <- ",paste(cexlabel,collapse = ","),sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('plotcircos.font(data.C, color=colorChr, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, cexLabel=cexlabel-0.1, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr, data.CN=data.CN)',file="code.R",append=TRUE,sep="\n")
+ }else if(trackChr!="track" && fontsize!="custom"){
+ cat(paste("cexlabel <- ",paste(cexlabel,collapse = ","),sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('plotcircos.notrack(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, data.CN=data.CN, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr)',file="code.R",append=TRUE,sep="\n")
+ }else if(trackChr!="track" && fontsize=="custom"){
+ cat(paste("cexlabel <- ",paste(cexlabel,collapse = ","),sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('plotcircos.notrack.font(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, cexLabel=cexlabel-0.1, data.CN=data.CN, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr)',file="code.R",append=TRUE,sep="\n")
+ }
+}else{
+ if(fontsize!="custom"){
+ cat(paste("cexlabel <- ",paste(cexlabel,collapse = ","),sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('plotcircos.cyto(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr, data.CN=data.CN)',file="code.R",append=TRUE,sep="\n")
+ }else if(fontsize=="custom"){
+ cat(paste("cexlabel <- ",paste(cexlabel,collapse = ","),sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('plotcircos.cyto.font(data.C, plotTypes=unique(c(labelChr,"axis")), units=unitChr, rotation=rotation, gap.width=gap.width, cexLabel=cexlabel-0.1, labeltextchr=labeltextchr, poslabelschr=poslabelschr, heightlabelschr=heightlabelschr, marginlabelschr=marginlabelschr, data.CN=data.CN)',file="code.R",append=TRUE,sep="\n")
+ }
+}
+if(!is.null(data.T)){
+ cat("takindx <- 1",file="code.R",append=TRUE,sep="\n")
+ if(!is.null(data.CN) && ncol(data.CN)==4 && labeltextchr==1){
+ cat("takindx <- takindx+2",file="code.R",append=TRUE,sep="\n")
+ }
+ cat(paste('typeTrack <- c("',paste(typeTrack,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ for(i in 1:length(data.T)){
+ cat(paste("i <- ",i,sep=""),file="code.R",append=TRUE,sep="\n")
+ data.TT <- data.T[[i]]
+ tktype <- typeTrack[i]
+ data.TT[,2] <- as.numeric(data.TT[,2])
+ data.TT[,3] <- as.numeric(data.TT[,3])
+ data.NN <- data.N[[i]]
+ ## *** The fill color for track ***
+ data.TT$num <- 1:nrow(data.TT)
+ cat("data.TT <- data.T[[i]]
+ tktype <- typeTrack[i]
+ data.TT[,2] <- as.numeric(data.TT[,2])
+ data.TT[,3] <- as.numeric(data.TT[,3])
+ data.NN <- data.N[[i]]
+ data.TT$num <- 1:nrow(data.TT)",file="code.R",append=TRUE,sep="\n")
+ if(tktype!="rect" && tktype!="heatmap" && tktype!="ideogram"){
+ coltypeTrack <- as.numeric(coltypeTk[i])
+ cat("data.TTC <- NULL",paste("coltypeTrack <- ",coltypeTrack,sep=""),file="code.R",append=TRUE,sep="\n")
+ if(coltypeTrack==2){
+ tkcolor <- colorTrack[i]
+ tkcolor <- gsub("\\s","",strsplit(tkcolor,",")[[1]])
+ tkcolor <- gsub('\\"',"",tkcolor)
+ tkcolor <- gsub("0x","#", tkcolor)
+ cat(paste('tkcolor <- c("',paste(tkcolor,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ }else if((coltypeTrack==3 && ("color" %in% colnames(data.TT))) | (coltypeTrack==3 && ncol(data.T[[i]])==4 && colnames(data.TT)[4]=="stack")){
+ tkcolor <- colorcusTrack[i]
+ tkcolor <- unlist(strsplit(tkcolor,";"))
+ cat(paste('tkcolor <- c("',paste(tkcolor,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ tkcolor <- data.frame(id=tkcolor,stringsAsFactors=F)
+ tkcolor$group <- gsub("\\:.*","",tkcolor$id)
+ tkcolor$cols <- gsub(".*\\:","",tkcolor$id)
+ tkcolor$group <- gsub(" ","",tkcolor$group)
+ tkcolor$cols <- gsub(" ","",tkcolor$cols)
+ colname <- colnames(data.TT)
+ tkcolor <- unique(data.TTC$cols)
+ data.TT <- data.TT[,1:4]
+ cat('tkcolor <- data.frame(id=tkcolor,stringsAsFactors=F)
+ tkcolor$group <- gsub("\\\\:.*","",tkcolor$id)
+ tkcolor$cols <- gsub(".*\\\\:","",tkcolor$id)
+ tkcolor$group <- gsub(" ","",tkcolor$group)
+ tkcolor$cols <- gsub(" ","",tkcolor$cols)',file="code.R",append=TRUE,sep="\n")
+ cat('colname <- colnames(data.TT)
+ if("color" %in% colnames(data.TT)){
+ data.TTC <- merge(data.TT,tkcolor,by.x="color",by.y="group",all.x=T)
+ }else if(colnames(data.TT)[4]=="stack"){
+ data.TTC <- merge(data.TT,tkcolor,by.x="stack",by.y="group",all.x=T)
+ }
+ data.TTC <- data.TTC[c(colname,"cols")]
+ data.TTC$cols[is.na(data.TTC$cols)] <- "grey"
+ tkcolor <- unique(data.TTC$cols)
+ data.TT <- data.TT[,1:4]',file="code.R",append=TRUE,sep="\n")
+ cat(paste('tkcolor <- c("',paste(tkcolor,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ }else if(coltypeTrack==1 && ("color" %in% colnames(data.TT))){
+ tkcolor <- tkcolor.export[[i]]
+ data.TT <- data.TT[,1:4]
+ cat(paste('tkcolor <- c("',paste(tkcolor,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('tkcolor <- data.frame(group=unique(data.TT$color),cols=tkcolor,stringsAsFactors=F)',file="code.R",append=TRUE,sep="\n")
+ cat('colname <- colnames(data.TT)
+ data.TTC <- merge(data.TT,tkcolor,by.x="color",by.y="group",all.x=T)
+ data.TTC <- data.TTC[c(colname,"cols")]
+ data.TTC$cols[is.na(data.TTC$cols)] <- "grey"
+ tkcolor <- unique(data.TTC$cols)
+ data.TT <- data.TT[,1:4]',file="code.R",append=TRUE,sep="\n")
+ }else if(coltypeTrack==1 && ncol(data.T[[i]])==4 && colnames(data.TT)[4]=="stack"){
+ tkcolor <- tkcolor.export[[i]]
+ data.TT <- data.TT[,1:4]
+ cat(paste('tkcolor <- c("',paste(tkcolor,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('tkcolor <- data.frame(group=unique(data.TT$stack),cols=tkcolor,stringsAsFactors=F)
+ colname <- colnames(data.TT)',file="code.R",append=TRUE,sep="\n")
+ cat('data.TTC <- merge(data.TT,tkcolor,by.x="stack",by.y="group",all.x=T)
+ data.TTC <- data.TTC[c(colname,"cols")]
+ data.TTC$cols[is.na(data.TTC$cols)] <- "grey"
+ tkcolor <- unique(data.TTC$cols)
+ data.TT <- data.TT[,1:4]',file="code.R",append=TRUE,sep="\n")
+ }else{
+ tkcolor <- tkcolor.export[[i]]
+ cat(paste('tkcolor <- c("',paste(tkcolor,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ if(nchar(data.TTC.export[[i]])>0){
+ data.TTC <- data.TTC.export[[i]]
+ }else{
+ data.TTC <- NULL
+ }
+ if(!is.null(data.TTC)){
+ cat('data.TTC <- data.TTC[order(data.TTC$num),]
+ rownames(data.TTC) <- NULL
+ data.TTC$num <- NULL',file="code.R",append=TRUE,sep="\n")
+ }
+ data.TT$num <- NULL
+ cat('data.TT$num <- NULL',file="code.R",append=TRUE,sep="\n")
+ if(ncol(data.TT)==5 && ("color" %in% colnames(data.TT))){
+ data.TT <- data.TT[,1:4]
+ cat('data.TT <- data.TT[,1:4]',file="code.R",append=TRUE,sep="\n")
+ }else if(c(ncol(data.TT)==5 | ncol(data.TT)==6 | ncol(data.TT)==7) && ("pch" %in% colnames(data.TT)) && !("color" %in% colnames(data.TT))){
+ data.TT <- data.TT[,1:4]
+ tkcolor <- tkcolor[1]
+ cat('data.TT <- data.TT[,1:4]
+ tkcolor <- tkcolor[1]',file="code.R",append=TRUE,sep="\n")
+ }
+ }
+ ## *** The backgroud color for track ***
+ tkbgcol <- bgcolTrack[i]
+ tkbgcol <- gsub("\\s","",strsplit(tkbgcol,",")[[1]])
+ tkbgcol <- gsub('\\"',"",tkbgcol)
+ tkbgcol <- gsub("0x","#", tkbgcol)
+ repnumcol <- round(length(unique(data.C[,1]))/length(tkbgcol))+1
+ tkbgcol <- rep(tkbgcol, repnumcol)[1:length(unique(data.C[,1]))]
+ cat(paste('tkbgcol <- c("',paste(tkbgcol,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ ## *** The track margin ***
+ tkmargin <- marginTrack[i]
+ tkmargin <- as.numeric(tkmargin)
+ cat(paste("tkmargin <- ",tkmargin,sep=""),file="code.R",append=TRUE,sep="\n")
+ ## *** The track height ***
+ tkheight <- heightTrack[i]
+ tkheight <- as.numeric(tkheight)
+ cat(paste("tkheight <- ",tkheight,sep=""),file="code.R",append=TRUE,sep="\n")
+ ## *** The y coordinates of baselines ***
+ tklinecoord <- baselineTrack[i]
+ tklinecoord <- as.numeric(unlist(strsplit(tklinecoord,",")))
+ cat(paste("tklinecoord <- c(",paste(tklinecoord,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ ## *** The symbol type & point size***
+ if(ncol(data.T[[i]])==4 && colnames(data.T[[i]])[4]=="stack"){
+ symboltype <- symbolTrack[i]
+ symboltype <- as.numeric(unlist(strsplit(symboltype,",")))
+ symboltype <- rep(symboltype, length(unique(data.T[[i]][,4])))[1:length(unique(data.T[[i]][,4]))]
+ pointsize <- as.numeric(pointsizeTrack[1])
+ cat(paste("symboltype <- c(",paste(symboltype,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat(paste("pointsize <- c(",pointsize,")",sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ ## *** The baselines color ***
+ tklinecolor <- colorlineTrack[i]
+ if(nchar(tklinecolor)!=0){
+ tklinecolor <- gsub('\\"',"",tklinecolor)
+ tklinecolor <- gsub("0x","#", tklinecolor)
+ tklinecolor <- unlist(strsplit(tklinecolor,","))
+ tklinecolor <- rep(tklinecolor, length(tklinecoord))[1:length(tklinecoord)]
+ cat(paste('tklinecolor <- c("',paste(tklinecolor,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat(paste('tklinecolor <- "',tklinecolor,'"',sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ if(ncol(data.T[[i]])==4 && colnames(data.T[[i]])[4]=="stack"){
+ tklinecol <- gsub('\\"',"",tklinecolor)
+ tklinecol <- gsub("0x","#", tklinecol)
+ tklinecol <- unlist(strsplit(tklinecol,","))
+ tklinecol <- rep(tklinecol, length(unique(data.T[[i]][,4])))[1:length(unique(data.T[[i]][,4]))]
+ cat(paste('tklinecol <- c("',paste(tklinecol,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ ## *** The fill color for track ***
+ hmapcols <- gsub('\\"',"",colhmapTrack[i])
+ hmapcols <- unlist(strsplit(hmapcols,"\\."))
+ cat(paste('hmapcols <- c("',paste(hmapcols,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ ## *** Add connection ***
+ lineshmap <- lineshmapTrack[i]
+ if(lineshmap==1){
+ heightlines <- heightlinesTrack[i]
+ marginlines <- marginlinesTrack[i]
+ cat(paste("heightlines <- ",heightlines,sep=""),paste("marginlines <- ",marginlines,sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ ## *** Add border ***
+ tkborder <- borderTrack[i]
+ cat(paste('tkborder <- "',tkborder,'"',sep=""),file="code.R",append=TRUE,sep="\n")
+ gridsborder <- gridsborderTrack[i]
+ if(gridsborder=="add"){
+ tkbordercol <- colgridsborderTrack[i]
+ cat(paste('tkbordercol <- c("',tkbordercol,'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ if(nchar(tkbordercol)==0){
+ tkbordercol <- NA
+ cat(paste("tkbordercol <- ",tkbordercol,sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ }else{
+ tkbordercol <- NA
+ cat(paste("tkbordercol <- ",tkbordercol,sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ ## *** The bar direction ***
+ tkbardir <- directionTrack[i]
+ cat(paste("tkbardir <- ",tkbardir,sep=""),file="code.R",append=TRUE,sep="\n")
+ if(tkbardir==2){
+ tkbarvalue <- barBoundary[i]
+ tkbarcol1 <- coldir1Track[i]
+ tkbarcol2 <- coldir2Track[i]
+ tktransparency <- transparencyTrack[i]
+ tkbarcol1 <- adjustcolor(tkbarcol1, alpha.f = tktransparency)
+ tkbarcol2 <- adjustcolor(tkbarcol2, alpha.f = tktransparency)
+ cat(paste("tkbarvalue <- ",tkbarvalue,sep=""),paste("tktransparency <- ",tktransparency,sep=""),paste('tkbarcol1 <- "',tkbarcol1,'"',sep=""),paste('tkbarcol2 <- "',tkbarcol2,'"',sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ ## *** The data color ***
+ tkrectcol <- rectTrack[i]
+ ## *** Select color ***
+ selrectcol <- rectcolTrack[i]
+ cat(paste("tkrectcol <- ",tkrectcol,sep=""),paste("selrectcol <- ",selrectcol,sep=""),file="code.R",append=TRUE,sep="\n")
+ if(tkrectcol==1){
+ cat(paste('rectcols <- c("',paste(rectcols,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ }else if(tkrectcol==2 && selrectcol==2){
+ cat(paste('rectcols <- c("',rectcols,'")',sep=""),"data.TT[,4] <- rectcols",file="code.R",append=TRUE,sep="\n")
+ }else if(tkrectcol==2 && selrectcol==3){
+ rectcols <- rectcoldiscusTrack[i]
+ rectcols <- unlist(strsplit(rectcols,";"))
+ cat(paste('rectcols <- c("',paste(rectcols,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('rectcols <- data.frame(id=rectcols,stringsAsFactors=F)
+ rectcols$group <- gsub("\\\\:.*","",rectcols$id)
+ rectcols$cols <- gsub(".*\\\\:","",rectcols$id)
+ rectcols$group <- gsub(" ","",rectcols$group)
+ rectcols$cols <- gsub(" ","",rectcols$cols)
+ colname <- colnames(data.TT)[1:3]
+ data.TT <- merge(data.TT,rectcols,by.x=colnames(data.TT)[4],by.y="group",all.x=T)
+ data.TT <- data.TT[c(colname,"cols")]',file="code.R",append=TRUE,sep="\n")
+ }
+ ## *** The transparency of color ***
+ tktransparency <- transparencyTrack[i]
+ cat(paste("tktransparency <- ",tktransparency,sep=""),file="code.R",append=TRUE,sep="\n")
+ if((tktype!="rect" && tktype!="heatmap" && tktype!="ideogram") | (tktype=="line" && fillareaTrack[i]!="add")){
+ tkcolor <- adjustcolor(tkcolor, alpha.f = tktransparency)
+ cat(paste('tkcolor <- c("',paste(tkcolor,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ cat('data.TTT <- data.T[[i]]
+ data.TTT$id <- paste(data.TTT[,1],data.TTT[,2],data.TTT[,3],sep="")
+ data.TTT$num <- 1:nrow(data.TTT)',file="code.R",append=TRUE,sep="\n")
+ cat(paste("transparencyHlt <- c(",paste(transparencyHlt,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ ## *** The links margin ***
+ if(i != length(data.T)){
+ lkmargin <- 0
+ }else{
+ lkmargin <- marginLinks
+ }
+ cat(paste("lkmargin <- ",lkmargin,sep=""),file="code.R",append=TRUE,sep="\n")
+ if(tkborder=="add"){
+ tkborder <- "grey"
+ cat(paste('tkborder <- "',tkborder,'"',sep=""),file="code.R",append=TRUE,sep="\n")
+ }else{
+ tkborder <- NA
+ cat(paste("tkborder <- ",tkborder,sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ columns <- c(1:ncol(data.TT))[-c(1:3)]
+ cat(paste("columns <- c(",paste(columns,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1){
+ cat("takindx <- takindx+2",file="code.R",append=TRUE,sep="\n")
+ }
+ if(poslabels[i]=="inner"){
+ cat("takindx <- takindx-2",file="code.R",append=TRUE,sep="\n")
+ }
+ if(tktype=="line"){
+ cat(paste("selreaTrack <- c(",paste(selreaTrack,collapse =","),")",sep=""),paste('fillareaTrack="',fillareaTrack,'"',sep=""),file="code.R",append=TRUE,sep="\n")
+ ## *** Fill the area ***
+ if(fillareaTrack[i]!="add"){
+ area <- FALSE
+ borderset <- NA
+ lwdnum <- 1
+ cat(paste("area <- ",area,sep=""),paste("borderset <- ",borderset,sep=""),paste("lwdnum <- ",lwdnum,sep=""),file="code.R",append=TRUE,sep="\n")
+ }else if(fillareaTrack[i]=="add" && selreaTrack[i]==1){
+ area <- TRUE
+ lwdnum <- 0.2
+ cat(paste("area <- ",area,sep=""),paste("lwdnum <- ",lwdnum,sep=""),file="code.R",append=TRUE,sep="\n")
+ }else if(fillareaTrack[i]=="add" && selreaTrack[i]==2){
+ area <- TRUE
+ borderset <- NA
+ if(nchar(borderareaTrack[i])!=0){
+ borderset <- adjustcolor(borderareaTrack[i],alpha.f = tktransparency)
+ }
+ lwdnum <- 0.2
+ cat(paste("area <- ",area,sep=""),paste("borderset <- ",borderset,sep=""),paste("lwdnum <- ",lwdnum,sep=""),file="code.R",append=TRUE,sep="\n")
+ }
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")',file="code.R",append=TRUE,sep="\n")
+ }
+ if(ncol(data.T[[i]])==4 && colnames(data.T[[i]])[4]=="stack"){
+ cat('bed_list <- lapply(unique(data.T[[i]][,4]),function(x){
+ if(coltypeTrack==2){
+ data.TT[data.TT[,4] %in% x,1:3]
+ }else{
+ data.TTC[data.TTC[,4] %in% x,1:3]
+ }
+ })',file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicTrackPlotRegion(bed_list, stack = TRUE, track.height = tkheight, track.margin = c(lkmargin,tkmargin),
+ bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region, value, ...){
+ i = getI(...)
+ if(coltypeTrack==1){
+ circos.genomicLines(region, value, col=tkcolor[i], lty=1, ...)
+ }else if(coltypeTrack==2){
+ circos.genomicLines(region, value, col=tkcolor[1], lty=1, ...)
+ }else if(coltypeTrack==3){
+ circos.genomicLines(region, value, col=tkcolor[i], lty=1, ...)
+ }
+ })',file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat('data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin),
+ bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ if((coltypeTrack==1 && !("color" %in% colnames(data.T[[i]]))) | coltypeTrack==2){
+ if(length(columns)==1){
+ tkcolor <- tkcolor[1]
+ }else{
+ tkcolor <- c(tkcolor,rep("grey",length(columns)))
+ tkcolor <- tkcolor[1:length(columns)]
+ }
+ if(selreaTrack[i]==1 | fillareaTrack[i]!="add"){
+ borderset <- adjustcolor(tkcolor,alpha.f = tktransparency)
+ }
+ circos.genomicLines(region, value, numeric.column=columns-3, col=borderset, area=area, border=tkcolor, lwd=lwdnum, lty=1, ...)
+ }
+ })',file="code.R",append=TRUE,sep="\n")
+ if(coltypeTrack==3 && ncol(data.TTC)>=6 && ("cols" %in% colnames(data.TTC))){
+ cat('data.TTC$id <- paste(data.TTC[,1],data.TTC[,2],data.TTC[,3],sep="")
+ data.TTC$num <- 1:nrow(data.TTC)
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ lapply(unique(dat$cols),function(m){
+ datt <- dat[dat$cols %in% m,]
+ ind <- which(data.TTC$id %in% datt$id)
+ datt.fil <- na.omit(unique(data.TTC[ind,]))
+ datt.fil <- datt.fil[datt.fil[,1] %in% x,]
+ rownum <- datt.fil$num
+ rownumdif <- diff(rownum)
+ indx <- which(rownumdif != 1)
+ indx1 <- c(0,indx)
+ rownumdif1 <- c(1,rownumdif)
+ if(length(indx)==0){
+ rownumdif1 <- 1
+ }else{
+ for(k in 1:length(which(rownumdif!=1))){
+ rownumdif1[(indx1[k]+1):indx[k]] <- k
+ if(k==length(which(rownumdif!=1))){
+ rownumdif1[(indx[k]+1):length(rownumdif1)] <- k+1
+ }
+ }
+ }
+ datt.fil$indx <- rownumdif1
+ lapply(unique(rownumdif1),function(h){
+ datt.fill <- datt.fil[datt.fil$indx == h,]
+ minnum <- min(datt.fill$num)
+ datt.fill <- rbind(datt.fill,as.character(c(dat[dat$num==(minnum-1),],h)))
+ datt.fill[,2] <- as.numeric(datt.fill[,2])
+ datt.fill[,3] <- as.numeric(datt.fill[,3])
+ datt.fill[,4] <- as.numeric(datt.fill[,4])
+ datt.fill$indx <- as.numeric(datt.fill$indx)
+ datt.fill <- datt.fill[!is.na(datt.fill[,2]),]
+ datt.fill <- datt.fill[order(datt.fill[,2],datt.fill[,3]),]
+ if(selreaTrack[i]==1 | fillareaTrack[i]!="add"){
+ borderset <- adjustcolor(m,alpha.f = tktransparency)
+ }
+ circos.lines((datt.fill[,2]+datt.fill[,3])/2,datt.fill[,4], col=borderset, area=area, border=m, lwd=lwdnum, lty=1)
+ })
+ })
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(coltypeTrack==1 && ("color" %in% colnames(data.T[[i]])) && ("cols" %in% colnames(data.TTC))){
+ cat('data.TTC$id <- paste(data.TTC[,1],data.TTC[,2],data.TTC[,3],sep="")
+ data.TTC$num <- 1:nrow(data.TTC)
+ lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ lapply(unique(dat$cols),function(m){
+ datt <- dat[dat$cols %in% m,]
+ ind <- which(data.TTC$id %in% datt$id)
+ datt.fil <- na.omit(unique(data.TTC[ind,]))
+ datt.fil <- datt.fil[datt.fil[,1] %in% x,]
+ rownum <- datt.fil$num
+ rownumdif <- diff(rownum)
+ indx <- which(rownumdif != 1)
+ indx1 <- c(0,indx)
+ rownumdif1 <- c(1,rownumdif)
+ if(length(indx)==0){
+ rownumdif1 <- 1
+ }else{
+ for(k in 1:length(which(rownumdif!=1))){
+ rownumdif1[(indx1[k]+1):indx[k]] <- k
+ if(k==length(which(rownumdif!=1))){
+ rownumdif1[(indx[k]+1):length(rownumdif1)] <- k+1
+ }
+ }
+ }
+ datt.fil$indx <- rownumdif1
+ lapply(unique(rownumdif1),function(h){
+ datt.fill <- datt.fil[datt.fil$indx == h,]
+ minnum <- min(datt.fill$num)
+ datt.fill <- rbind(datt.fill,as.character(c(dat[dat$num==(minnum-1),],h)))
+ datt.fill[,2] <- as.numeric(datt.fill[,2])
+ datt.fill[,3] <- as.numeric(datt.fill[,3])
+ datt.fill[,4] <- as.numeric(datt.fill[,4])
+ datt.fill$indx <- as.numeric(datt.fill$indx)
+ datt.fill <- datt.fill[!is.na(datt.fill[,2]),]
+ datt.fill <- datt.fill[order(datt.fill[,2],datt.fill[,3]),]
+ if(selreaTrack[i]==1 | fillareaTrack[i]!="add"){
+ borderset <- adjustcolor(m,alpha.f = tktransparency)
+ }
+ circos.lines((datt.fill[,2]+datt.fill[,3])/2,datt.fill[,4], col=borderset, area=area, border=m, lwd=lwdnum, lty=1)
+ })
+ })
+ })',file="code.R",append=TRUE,sep="\n")
+ }
+ assign("hltTrack",hltTrack.List[[i]])
+ assign("hltdata",hltdata.List[[i]])
+ if(hltTrack==1 && !is.null(nrow(hltregion.List[[i]])) && nrow(hltregion.List[[i]])>0 && (length(columns)==1 | colnames(data.T[[i]])[5]=="color")){
+ cat('assign("hltregion",hltregion.List[[i]])
+ hlttransparency <- transparencyHlt[i]
+ hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
+ hltregion$color <- gsub("0x","#", hltregion$color)
+ chrr <- unique(hltregion[,1])
+ lapply(chrr, function(x){
+ datt <- hltregion[hltregion[,1] %in% x,]
+ trackk <- data.TTT[data.TTT[,1] %in% x,]
+ trackk <- trackk[!trackk$id %in% datt$id,]
+ col <- unique(datt$color)
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ lapply(col, function(m){
+ dattt <- datt[datt$color %in% m,]
+ ind <- which(data.TTT$id %in% dattt$id)
+ ind <- unique(c(ind-1,ind,ind+1))
+ dattt.fil <- na.omit(unique(data.TTT[ind,]))
+ dattt.fil <- dattt.fil[dattt.fil[,1] %in% x,]
+ dattt.fil <- dattt.fil[order(dattt.fil$num),]
+ dattt.fil$groups <- c(diff(dattt.fil$num),diff(dattt.fil$num)[1])
+ dattt.fill <- dattt.fil[dattt.fil$groups==1,]
+ borderset <- m
+ circos.lines((dattt.fill[,2]+dattt.fill[,3])/2,dattt.fill[,4], col=borderset, area=area, border=m, lwd=lwdnum, lty=1)
+ })
+ if("color" %in% colnames(trackk)){
+ data.TTC$id <- paste(data.TTC[,1],data.TTC[,2],data.TTC[,3],sep="")
+ data.TTC1 <- data.TTC[!data.TTC$id %in% datt$id,]
+ indd <- which(data.TTC1$id %in% trackk$id)
+ indd <- unique(c(indd-1,indd,indd+1))
+ trackkk <- na.omit(unique(data.TTC1[indd,]))
+ trackkk <- trackkk[trackkk[,1] %in% x,]
+ lapply(unique(trackkk$cols),function(f){
+ trackkkk <- trackkk[trackkk$cols %in% f,]
+ rownum <- as.numeric(rownames(trackkkk))
+ rownumdif <- diff(rownum)
+ indx <- which(rownumdif != 1)
+ indx1 <- c(0,indx)
+ rownumdif1 <- c(1,rownumdif)
+ if(length(indx)==0){
+ rownumdif1 <- 1
+ }else{
+ for(k in 1:length(which(rownumdif!=1))){
+ rownumdif1[(indx1[k]+1):indx[k]] <- k
+ if(k==length(which(rownumdif!=1))){
+ rownumdif1[(indx[k]+1):length(rownumdif1)] <- k+1
+ }
+ }
+ }
+ trackkkk$indx <- rownumdif1
+ lapply(unique(rownumdif1),function(h){
+ trackkkkk <- trackkkk[trackkkk$indx == h,]
+ minnum <- min(as.numeric(rownames(trackkkkk)))
+ trackkkkk <- rbind(trackkkkk,as.character(c(trackkk[rownames(trackkk)==(minnum-1),]),h))
+ trackkkkk[,2] <- as.numeric(trackkkkk[,2])
+ trackkkkk[,3] <- as.numeric(trackkkkk[,3])
+ trackkkkk[,4] <- as.numeric(trackkkkk[,4])
+ trackkkkk$indx <- as.numeric(trackkkkk$indx)
+ trackkkkk <- trackkkkk[!is.na(trackkkkk[,2]),]
+ trackkkkk <- trackkkkk[order(trackkkkk[,2],trackkkkk[,3]),]
+ if(selreaTrack[i]==1 | fillareaTrack[i]!="add"){
+ borderset <- adjustcolor(f,alpha.f = tktransparency)
+ }
+ circos.lines((trackkkkk[,2]+trackkkkk[,3])/2,trackkkkk[,4], col=borderset, area=area, border=f, lwd=lwdnum, lty=1)
+ })
+ })
+ }else{
+ rownum <- as.numeric(rownames(trackk))
+ rownumdif <- diff(rownum)
+ indx <- which(rownumdif != 1)
+ indx1 <- c(0,indx)
+ rownumdif1 <- c(1,rownumdif)
+ if(length(indx)==0){
+ rownumdif1 <- 1
+ }else{
+ for(k in 1:length(which(rownumdif!=1))){
+ rownumdif1[(indx1[k]+1):indx[k]] <- k
+ if(k==length(which(rownumdif!=1))){
+ rownumdif1[(indx[k]+1):length(rownumdif1)] <- k+1
+ }
+ }
+ }
+ trackk$indx <- rownumdif1
+ lapply(unique(rownumdif1),function(h){
+ trackkkkk <- trackk[trackk$indx == h,]
+ if(selreaTrack[i]==1 | fillareaTrack[i]!="add"){
+ borderset <- adjustcolor(tkcolor,alpha.f = tktransparency)
+ }
+ circos.lines((trackkkkk[,2]+trackkkkk[,3])/2,trackkkkk[,4], col=borderset[1], area=area, border=tkcolor[1], lwd=lwdnum, lty=1)
+ })
+ }
+ })',file="code.R",append=TRUE,sep="\n")
+ }
+ }
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")',file="code.R",append=TRUE,sep="\n")
+ }
+ }else if(tktype=="point"){
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")',file="code.R",append=TRUE,sep="\n")
+ }
+ if(ncol(data.T[[i]])==4 && colnames(data.T[[i]])[4]=="stack"){
+ cat('bed_list <- lapply(unique(data.T[[i]][,4]),function(x){
+ if(coltypeTrack==2){
+ data.TT[data.TT[,4] %in% x,1:3]
+ }else{
+ data.TTC[data.TTC[,4] %in% x,1:3]
+ }
+ })',file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicTrackPlotRegion(bed_list, stack = TRUE, track.height = tkheight, track.margin = c(lkmargin,tkmargin),
+ bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region, value, ...){
+ i = getI(...)
+ if(coltypeTrack==1){
+ circos.lines(CELL_META$cell.xlim, c(i, i), lty = 2, col = tklinecol[i])
+ circos.genomicPoints(region, value, pch = symboltype[i], cex = pointsize, col = tkcolor[i],...)
+ }else if(coltypeTrack==2){
+ circos.lines(CELL_META$cell.xlim, c(i, i), lty = 2, col = tklinecol[i])
+ circos.genomicPoints(region, value, pch = symboltype[i], cex = pointsize, col = tkcolor[1],...)
+ }else if(coltypeTrack==3){
+ circos.lines(CELL_META$cell.xlim, c(i, i), lty = 2, col = tklinecol[i])
+ circos.genomicPoints(region, value, pch = symboltype[i], cex = pointsize, col = tkcolor[i],...)
+ }
+ })',file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat('data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin),
+ bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ if(!("cex" %in% colnames(data.T[[i]])) && !("pch" %in% colnames(data.T[[i]])) && ((coltypeTrack==1 && !("color" %in% colnames(data.T[[i]]))) | coltypeTrack==2)){
+ if(length(columns)==1){
+ tkcolor <- tkcolor[1]
+ }else{
+ tkcolor <- c(tkcolor,rep("grey",length(columns)))
+ tkcolor <- tkcolor[1:length(columns)]
+ }
+ circos.genomicPoints(region, value, numeric.column=columns-3, col=tkcolor, cex=0.6, pch=16, ...)
+ }
+ })',file="code.R",append=TRUE,sep="\n")
+ if(!("cex" %in% colnames(data.T[[i]]))){
+ if(coltypeTrack==3 && ("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ cat('lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=0.6, pch=dat$pch)
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(coltypeTrack==3 && ncol(data.TTC)>=6 && !("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ cat('lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=0.6, pch=16)
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(coltypeTrack!=3 && ("pch" %in% colnames(data.T[[i]])) && ("color" %in% colnames(data.T[[i]]))){
+ cat('lapply(unique(data.T[[i]][,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.T[[i]][data.T[[i]][,1] %in% x,]
+ tkcols <- data.TTC$cols[data.TTC[,1] %in% x]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(tkcols,alpha.f = tktransparency), cex=0.6, pch=dat$pch)
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(("pch" %in% colnames(data.T[[i]])) && !("color" %in% colnames(data.T[[i]]))){
+ cat('lapply(unique(data.T[[i]][,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.T[[i]][data.T[[i]][,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=tkcolor, cex=0.6, pch=dat$pch)
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(coltypeTrack==1 && ("color" %in% colnames(data.T[[i]])) && !("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ cat('lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=0.6, pch=16)
+ })',file="code.R",append=TRUE,sep="\n")
+ }
+ }else if("cex" %in% colnames(data.T[[i]])){
+ if(coltypeTrack==3 && ("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ cat('lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=dat$cex, pch=dat$pch)
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(coltypeTrack==3 && ncol(data.TTC)>=6 && !("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ cat('lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=dat$cex, pch=16)
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(coltypeTrack!=3 && ("pch" %in% colnames(data.T[[i]])) && ("color" %in% colnames(data.T[[i]]))){
+ cat('lapply(unique(data.T[[i]][,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.T[[i]][data.T[[i]][,1] %in% x,]
+ tkcols <- data.TTC$cols[data.TTC[,1] %in% x]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(tkcols,alpha.f = tktransparency), cex=dat$cex, pch=dat$pch)
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(("pch" %in% colnames(data.T[[i]])) && !("color" %in% colnames(data.T[[i]]))){
+ cat('lapply(unique(data.T[[i]][,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.T[[i]][data.T[[i]][,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=tkcolor, cex=dat$cex, pch=dat$pch)
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(coltypeTrack==1 && ("color" %in% colnames(data.T[[i]])) && !("pch" %in% colnames(data.TTC)) && ("cols" %in% colnames(data.TTC))){
+ cat('lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=adjustcolor(dat$cols,alpha.f = tktransparency), cex=dat$cex, pch=16)
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(!("color" %in% colnames(data.T[[i]])) && !("pch" %in% colnames(data.TTC))){
+ cat('lapply(unique(data.T[[i]][,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.T[[i]][data.T[[i]][,1] %in% x,]
+ circos.points((dat[,2]+dat[,3])/2,dat[,4], col=tkcolor[1], cex=dat$cex, pch=16)
+ })',file="code.R",append=TRUE,sep="\n")
+ }
+ }
+ assign("hltTrack",hltTrack.List[[i]])
+ assign("hltdata",hltdata.List[[i]])
+ if(hltTrack==1 && !is.null(nrow(hltregion.List[[i]])) && nrow(hltregion.List[[i]])>0 && (length(columns)==1 | any(c("color","pch","cex") %in% colnames(data.T[[i]])))){
+ cat('assign("hltregion",hltregion.List[[i]])
+ hlttransparency <- transparencyHlt[i]
+ hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
+ hltregion$color <- gsub("0x","#", hltregion$color)
+ chrr <- unique(hltregion[,1])
+ lapply(chrr, function(x){
+ datt <- hltregion[hltregion[,1] %in% x,]
+ trackk <- data.TTT[data.TTT[,1] %in% x,]
+ trackk <- trackk[!trackk$id %in% datt$id,]
+ col <- unique(datt$color)
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ if(!"pch" %in% colnames(data.TTT)){
+ dattt_pch <- 16
+ trackk_pch <- 16
+ }else{
+ trackk_pch <- trackk$pch
+ }
+ if(!"cex" %in% colnames(data.TTT)){
+ dattt_cex <- 0.6
+ trackk_cex <- 0.6
+ }else{
+ trackk_cex <- trackk$cex
+ }
+ lapply(col, function(m){
+ dattt <- datt[datt$color %in% m,]
+ if("pch" %in% colnames(data.TTT)){
+ dattt_pch <- dattt$pch
+ }
+ if("cex" %in% colnames(data.TTT)){
+ dattt_cex <- dattt$cex
+ }
+ circos.points((dattt[,2]+dattt[,3])/2,dattt[,4], col=m, cex=dattt_cex, pch=dattt_pch)
+ })
+ if("color" %in% colnames(trackk) && coltypeTrack!=2){
+ data.TTC$id <- paste(data.TTC[,1],data.TTC[,2],data.TTC[,3],sep="")
+ trackkk <- data.TTC[data.TTC$id %in% trackk$id,]
+ trackkk <- trackkk[trackkk[,1] %in% x,]
+ lapply(unique(trackkk$cols),function(f){
+ trackkkk <- trackkk[trackkk$cols %in% f,]
+ if("cex" %in% colnames(trackkkk)){
+ trackk_cex <- trackkkk$cex
+ }
+ if("pch" %in% colnames(trackkkk)){
+ trackk_pch <- trackkkk$pch
+ }
+ circos.points((trackkkk[,2]+trackkkk[,3])/2,trackkkk[,4], col=adjustcolor(f,alpha.f = tktransparency), cex=trackk_cex, pch=trackk_pch)
+ })
+ }else{
+ circos.points((trackk[,2]+trackk[,3])/2,trackk[,4], col=tkcolor[1], cex=trackk_cex, pch=trackk_pch)
+ }
+ })',file="code.R",append=TRUE,sep="\n")
+ }
+ }
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")',file="code.R",append=TRUE,sep="\n")
+ }
+ }else if(tktype=="bar"){
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")',file="code.R",append=TRUE,sep="\n")
+ }
+ cat('data.TT[,ncol(data.TT)] <- as.numeric(data.TT[,ncol(data.TT)])
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ if(!("color" %in% colnames(data.T[[i]])) && !("cols" %in% colnames(data.TTC))){
+ if(length(columns)==1 && tkbardir==1){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ if(coltypeTrack==1){
+ circos.genomicRect(region, value, numeric.column=columns-3, ytop.column = 1, ybottom = min(data.TT[,4]), col=tkcolor, border = NA, ...)
+ }
+ }else if(length(columns)==1 && tkbardir==2){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ tkbarvalue <- as.numeric(tkbarvalue)
+ indx <- value[,1] > tkbarvalue
+ if(length(value[indx,])!=0 && length(value[!indx,])!=0){
+ circos.genomicRect(region[indx,], value[indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol1, border = NA, ...)
+ circos.genomicRect(region[!indx,], value[!indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol2, border = NA, ...)
+ }else if(length(value[indx,])!=0 && length(value[!indx,])==0){
+ circos.genomicRect(region[indx,], value[indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol1, border = NA, ...)
+ }else if(length(value[indx,])==0 && length(value[!indx,])!=0){
+ circos.genomicRect(region[!indx,], value[!indx,], ytop.column = 1, ybottom = tkbarvalue, col=tkbarcol2, border = NA, ...)
+ }
+ }else if(length(columns)==2 && tkbardir==1){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ if(coltypeTrack!=3){
+ tkcolor <- c(tkcolor,rep("grey",length(columns)))
+ tkcolor <- tkcolor[1:length(columns)]
+ circos.genomicRect(region, value, ytop.column = 1, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkcolor[1], border = NA, ...)
+ circos.genomicRect(region, value, ytop.column = 2, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkcolor[2], border = NA, ...)
+ }
+ }else if(length(columns)==2 && tkbardir==2){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ circos.genomicRect(region, value, ytop.column = 1, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkbarcol1, border = NA, ...)
+ circos.genomicRect(region, value, ytop.column = 2, ybottom = min(c(data.TT[,4],data.TT[,5])), col=tkbarcol2, border = NA, ...)
+ }
+ }
+ if(length(columns)==1 && tkbardir==1 && coltypeTrack==2){
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ circos.genomicRect(region, value, numeric.column=columns-3, ytop.column = 1, ybottom = min(data.TT[,4]), col=tkcolor[1], border = NA, ...)
+ }
+ })',file="code.R",append=TRUE,sep="\n")
+ if(length(columns)==1 && tkbardir==1 && coltypeTrack==3 && ncol(data.TTC)>=6 && ("cols" %in% colnames(data.TTC))){
+ cat('lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.rect(xleft=dat[,2], xright=dat[,3],ytop=dat[,4],ybottom=rep(get.cell.meta.data("ylim")[1],nrow(dat)), col=adjustcolor(dat$cols,alpha.f = tktransparency), border = NA)
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(length(columns)==1 && tkbardir==1 && coltypeTrack==1 && ncol(data.TTC)>=6 && ("cols" %in% colnames(data.TTC))){
+ cat('lapply(unique(data.TTC[,1]),function(x){
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ dat <- data.TTC[data.TTC[,1] %in% x,]
+ circos.rect(xleft=dat[,2], xright=dat[,3],ytop=dat[,4],ybottom=rep(get.cell.meta.data("ylim")[1],nrow(dat)), col=adjustcolor(dat$cols,alpha.f = tktransparency), border = NA)
+ })',file="code.R",append=TRUE,sep="\n")
+ }
+ assign("hltTrack",hltTrack.List[[i]])
+ assign("hltdata",hltdata.List[[i]])
+ if(hltTrack==1 && !is.null(nrow(hltregion.List[[i]])) && nrow(hltregion.List[[i]])>0 && tkbardir==1 && length(columns)==1){
+ cat('assign("hltregion",hltregion.List[[i]])
+ hlttransparency <- transparencyHlt[i]
+ hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
+ hltregion$color <- gsub("0x","#", hltregion$color)
+ chrr <- unique(hltregion[,1])
+ lapply(chrr, function(x){
+ datt <- hltregion[hltregion[,1] %in% x,]
+ trackk <- data.TTT[data.TTT[,1] %in% x,]
+ trackk <- trackk[!trackk$id %in% datt$id,]
+ col <- unique(datt$color)
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ lapply(col, function(m){
+ dattt <- datt[datt$color %in% m,]
+ ylim <- get.cell.meta.data("ylim")
+ circos.rect(xleft=dattt[,2], xright=dattt[,3],ytop=dattt[,4],ybottom=rep(ylim[1],nrow(dattt)), col=m, border = NA)
+ })
+ circos.rect(xleft=trackk[,2], xright=trackk[,3],ytop=trackk[,4],ybottom=rep(get.cell.meta.data("ylim")[1],nrow(trackk)), col=tkcolor[1], border = NA)
+ })',file="code.R",append=TRUE,sep="\n")
+ }else if(hltTrack==1 && !is.null(nrow(hltregion.List[[i]])) && nrow(hltregion.List[[i]])>0 && tkbardir==2 && length(columns)==1){
+ cat('assign("hltregion",hltregion.List[[i]])
+ hlttransparency <- transparencyHlt[i]
+ hltregion$color <- adjustcolor(hltregion$color, alpha.f = hlttransparency)
+ hltregion$color <- gsub("0x","#", hltregion$color)
+ chrr <- unique(hltregion[,1])
+ lapply(chrr, function(x){
+ datt <- hltregion[hltregion[,1] %in% x,]
+ trackk <- data.TTT[data.TTT[,1] %in% x,]
+ trackk <- trackk[!trackk$id %in% datt$id,]
+ col <- unique(datt$color)
+ if(trackChr=="track"){
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+2, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }else{
+ circos.updatePlotRegion(sector.index = x, track.index=takindx+1, bg.col = tkbgcol[which(unique(data.C[,1])==x)], bg.border = tkborder)
+ }
+ if(nchar(tklinecolor[1])!=0){
+ xlim <- get.cell.meta.data("xlim")
+ ylim <- get.cell.meta.data("ylim")
+ for(k in 1:length(tklinecoord)){
+ y1 <- as.numeric(quantile(ylim,probs=tklinecoord[k]))
+ circos.lines(x=xlim,y=c(y1,y1), col=tklinecolor[k], lwd=0.1)
+ }
+ }
+ lapply(col, function(m){
+ dattt <- datt[datt$color %in% m,]
+ ylim <- get.cell.meta.data("ylim")
+ tkbarvalue <- as.numeric(tkbarvalue)
+ indx <- dattt[,4] > tkbarvalue
+ value <- dattt[,4]
+ region <- dattt[,c(1:3)]
+ if(length(value[indx])!=0 && length(value[!indx])!=0){
+ circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=m, border = NA)
+ circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=m, border = NA)
+ }else if(length(value[indx])!=0 && length(value[!indx])==0){
+ circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=m, border = NA)
+ }else if(length(value[indx])==0 && length(value[!indx])!=0){
+ circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=m, border = NA)
+ }
+ })
+ tkbarvalue <- as.numeric(tkbarvalue)
+ indx <- trackk[,4] > tkbarvalue
+ value <- trackk[,4]
+ region <- trackk[,c(1:3)]
+ if(length(value[indx])!=0 && length(value[!indx])!=0){
+ circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=tkbarcol1, border = NA)
+ circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=tkbarcol2, border = NA)
+ }else if(length(value[indx])!=0 && length(value[!indx])==0){
+ circos.rect(xleft=region[indx,2], xright=region[indx,3], ytop = value[indx], ybottom = rep(tkbarvalue,length(value[indx])), col=tkbarcol1, border = NA)
+ }else if(length(value[indx])==0 && length(value[!indx])!=0){
+ circos.rect(xleft=region[!indx,2], xright=region[!indx,3], ytop = value[!indx], ybottom = rep(tkbarvalue,length(value[!indx])), col=tkbarcol2, border = NA)
+ }
+ })',file="code.R",append=TRUE,sep="\n")
+ }
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")',file="code.R",append=TRUE,sep="\n")
+ }
+ }else if(tktype=="rect"){
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")',file="code.R",append=TRUE,sep="\n")
+ }
+ if(tkrectcol==2){
+ if(selrectcol==1){
+ cat("data.TT[,4] <- as.numeric(as.factor(data.TT[,4]))
+ dat.T <- data.TT",file="code.R",append=TRUE,sep="\n")
+
+ selcol <- tkcolor.export[[i]]
+ cat(paste('selcol <- c("',paste(selcol,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat("data.TT[,4] <- selcol[data.TT[,4]]
+ circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin = c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ circos.genomicRect(region, value, col=adjustcolor(value[[1]],alpha.f = tktransparency), border = NA, ...)
+ })",file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat("circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin = c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ circos.genomicRect(region, value, col=adjustcolor(value[[1]],alpha.f = tktransparency), border = NA, ...)
+ })",file="code.R",append=TRUE,sep="\n")
+ }
+ }else{
+ cat("dat.T <- data.TT
+ f <- colorRamp2(breaks = c(min(data.TT[,4]), mean(data.TT[,4]), max(data.TT[,4])), colors = rectcols)
+ circos.genomicTrackPlotRegion(data.TT, ylim=c(0,1),track.height = tkheight, track.margin = c(lkmargin,tkmargin), bg.col = tkbgcol, bg.border = tkborder, panel.fun = function(region,value,...){
+ circos.genomicRect(region, value, col=adjustcolor(f(value[[1]]),alpha.f = tktransparency), border = NA, ...)
+ })",file="code.R",append=TRUE,sep="\n")
+ }
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")',file="code.R",append=TRUE,sep="\n")
+ }
+ }else if(tktype=="heatmap"){
+ cat("data.TT$num <- NULL",file="code.R",append=TRUE,sep="\n")
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")',file="code.R",append=TRUE,sep="\n")
+ }
+ cat("break1 <- min(as.numeric(as.matrix(data.TT[,-c(1:3)])))
+ break2 <- max(as.numeric(as.matrix(data.TT[,-c(1:3)])))
+ midpoint <- (break1+break2)/2
+ f <- colorRamp2(breaks = c(break1, midpoint, break2), colors = hmapcols)",file="code.R",append=TRUE,sep="\n")
+ if(is.na(tkbordercol)){
+ if(lineshmap==2){
+ cat('circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin), stack = TRUE,
+ panel.fun = function(region, value, ...){
+ circos.genomicRect(region, value, col = f(value[[1]]),
+ border = f(value[[1]]), posTransform = posTransform.default, ...)
+ }, bg.border = NA)',file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat('circos.genomicPosTransformLines(data.TT, posTransform = posTransform.default,
+ horizontalLine = "top", track.height = heightlines, track.margin = c(0,marginlines))
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin), stack = TRUE,
+ panel.fun = function(region, value, ...){
+ circos.genomicRect(region, value, col = f(value[[1]]),
+ border = f(value[[1]]), posTransform = posTransform.default, ...)
+ }, bg.border = NA)',file="code.R",append=TRUE,sep="\n")
+ }
+ }else{
+ if(lineshmap==2){
+ cat('circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin), stack = TRUE,
+ panel.fun = function(region, value, ...){
+ circos.genomicRect(region, value, col = f(value[[1]]), lwd = 0.1,
+ border = tkbordercol, posTransform = posTransform.default, ...)
+ }, bg.border = NA)',file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat('circos.genomicPosTransformLines(data.TT, posTransform = posTransform.default,
+ horizontalLine = "top", track.height = heightlines, track.margin = c(0,marginlines))
+ circos.genomicTrackPlotRegion(data.TT, track.height = tkheight, track.margin = c(lkmargin,tkmargin), stack = TRUE,
+ panel.fun = function(region, value, ...){
+ circos.genomicRect(region, value, col = f(value[[1]]), lwd = 0.1,
+ border = tkbordercol, posTransform = posTransform.default, ...)
+ }, bg.border = NA)',file="code.R",append=TRUE,sep="\n")
+ }
+ }
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")',file="code.R",append=TRUE,sep="\n")
+ }
+ }else if(tktype=="ideogram"){
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="outer"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "outside")',file="code.R",append=TRUE,sep="\n")
+ }
+ cat('circos.genomicIdeogram(data.TT,track.height = tkheight, track.margin = c(lkmargin,tkmargin))',file="code.R",append=TRUE,sep="\n")
+ if(!is.null(data.NN) && ncol(data.NN)==4 && labeltext[i]==1 && poslabels[i]=="inner"){
+ cat(paste("heightlabels <- c(",paste(heightlabels,collapse =","),")",sep=""),paste("marginlabels <- c(",paste(marginlabels,collapse =","),")",sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('circos.genomicLabels(data.NN, labels.column = 4, connection_height = heightlabels[i], track.margin = c(0.01,marginlabels[i]), side = "inside")',file="code.R",append=TRUE,sep="\n")
+ }
+ }
+ cat(paste('poslabels <- c("',paste(poslabels,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('if(poslabels[i]=="inner"){
+ takindx <- takindx+3
+ }else{
+ takindx <- takindx+1
+ }',file="code.R",append=TRUE,sep="\n")
+ }
+}
+
+if(!is.null(data.L) && linksTrack.export){
+ if(is.null(data.T)){
+ cat(paste("marginLinks <- ",marginLinks,sep=""),file="code.R",append=TRUE,sep="\n")
+ cat("circos.par(track.margin = c(0,marginLinks))",file="code.R",append=TRUE,sep="\n")
+ }
+ cat(paste("transparencyLinks <- ",transparencyLinks,sep=""),file="code.R",append=TRUE,sep="\n")
+ cat("rou <- get_most_inside_radius()
+ rou <- rou[1]",file="code.R",append=TRUE,sep="\n")
+ if(colorLinks==2){
+ splitcol <- ":" %in% unlist(strsplit(selcolorLinks,""))
+ if(ncol(data.L)==7 && colnames(data.L)[7]=="color" && splitcol){
+ selcolorLinks <- unlist(strsplit(selcolorLinks,";"))
+ cat(paste('selcolorLinks <- c("',paste(selcolorLinks,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('data.L$num <- 1:nrow(data.L)
+ selcolorLinks <- data.frame(id=selcolorLinks,stringsAsFactors=F)
+ selcolorLinks$group <- gsub("\\\\:.*","",selcolorLinks$id)
+ selcolorLinks$cols <- gsub(".*\\\\:","",selcolorLinks$id)
+ selcolorLinks$group <- gsub(" ","",selcolorLinks$group)
+ selcolorLinks$cols <- gsub(" ","",selcolorLinks$cols)
+ data.LC <- merge(data.L,selcolorLinks,by.x="color",by.y="group",all.x=T)
+ data.LC$cols[is.na(data.LC$cols)] <- "grey"
+ data.LC <- data.LC[order(data.LC$num),]
+ data.LC$num <- NULL
+ rownames(data.LC) <- NULL
+ data.L$num <- NULL
+ colLinks <- adjustcolor(data.LC$cols, alpha.f = transparencyLinks)',file="code.R",append=TRUE,sep="\n")
+ }else if(ncol(data.L)==6 && !splitcol){
+ cat("colLinks <- adjustcolor(selcolorLinks, alpha.f = transparencyLinks)",file="code.R",append=TRUE,sep="\n")
+ }
+ if(highlightLinks==1 && (!is.null(hltregion1.export) | !is.null(hltregion2.export))){
+ cat(paste("transparencyhltLinks <- ",transparencyhltLinks,sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('colL <- unique(datL[,4])
+ colL <- adjustcolor(colL, alpha.f = transparencyhltLinks)
+ colL <- gsub("0x","#", colL)
+ hltregion1$color <- adjustcolor(hltregion1$color, alpha.f = transparencyhltLinks)
+ hltregion1$color <- gsub("0x","#", hltregion1$color)
+ hltregion2$color <- adjustcolor(hltregion2$color, alpha.f = transparencyhltLinks)
+ hltregion2$color <- gsub("0x","#", hltregion2$color)
+ linkk1 <- data.LL1[!data.LL1$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
+ linkk2 <- data.LL2[!data.LL2$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
+ colindx <- (!data.LL1$num %in% c(hltregion1$num,hltregion2$num)) & (!data.LL2$num %in% c(hltregion1$num,hltregion2$num))',file="code.R",append=TRUE,sep="\n")
+ if(ncol(data.L)==7 && colnames(data.L)[7]=="color"){
+ cat("circos.genomicLink(linkk1, linkk2, rou = rou, col = colLinks[colindx], border = NA)",file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat("circos.genomicLink(linkk1, linkk2, rou = rou, col = colLinks, border = NA)",file="code.R",append=TRUE,sep="\n")
+ }
+ cat("lapply(colL, function(x){
+ hltregion11 <- hltregion1[hltregion1$color %in% x,]
+ hltregion12 <- data.LL2[data.L2$num %in% hltregion11$num,]
+ hltregion12 <- hltregion12[,c(1:3)]
+ hltregion11 <- hltregion11[,c(1:3)]
+ hltregion22 <- hltregion2[hltregion2$color %in% x,]
+ hltregion21 <- data.LL1[data.L1$num %in% hltregion22$num,]
+ hltregion21 <- hltregion21[,c(1:3)]
+ hltregion22 <- hltregion22[,c(1:3)]
+ if(nrow(hltregion11)!=0){
+ circos.genomicLink(hltregion11, hltregion12, rou = rou, col = x, border = NA)
+ }
+ if(nrow(hltregion22)!=0){
+ circos.genomicLink(hltregion21, hltregion22, rou = rou, col = x, border = NA)
+ }
+ })",file="code.R",append=TRUE,sep="\n")
+ }else{
+ if(!(ncol(data.L)==6 && splitcol)){
+
+ cat("data.L1 <- data.L[,c(1:3)]
+ data.L2 <- data.L[,c(4:6)]
+ circos.genomicLink(data.L1, data.L2, rou = rou, col = colLinks, border = NA)",file="code.R",append=TRUE,sep="\n")
+ }
+ }
+ }else{
+ if(ncol(data.L)==7 && colnames(data.L)[7]=="color"){
+ cat(paste('linkscolor.export <- c("',paste(linkscolor.export,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('groupnum <- length(unique(data.L[,7]))
+ randcolorLinks <- data.frame(group=unique(data.L[,7]), cols=linkscolor.export, stringsAsFactors=F)
+ data.LC <- merge(data.L,randcolorLinks,by.x="color",by.y="group",all.x=T)
+ colLinks <- adjustcolor(data.LC$cols, alpha.f = transparencyLinks)',file="code.R",append=TRUE,sep="\n")
+ }
+ if(highlightLinks==1 && (!is.null(hltregion1.export) | !is.null(hltregion2.export))){
+ cat(paste("transparencyhltLinks <- ",transparencyhltLinks,sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('colL <- unique(datL[,4])
+ colL <- adjustcolor(colL, alpha.f = transparencyhltLinks)
+ colL <- gsub("0x","#", colL)
+ hltregion1$color <- adjustcolor(hltregion1$color, alpha.f = transparencyhltLinks)
+ hltregion1$color <- gsub("0x","#", hltregion1$color)
+ hltregion2$color <- adjustcolor(hltregion2$color, alpha.f = transparencyhltLinks)
+ hltregion2$color <- gsub("0x","#", hltregion2$color)
+ linkk1 <- data.LL1[!data.LL1$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
+ linkk2 <- data.LL2[!data.LL2$num %in% c(hltregion1$num,hltregion2$num),][,c(1:3)]
+ colindx <- (!data.LL1$num %in% c(hltregion1$num,hltregion2$num)) & (!data.LL2$num %in% c(hltregion1$num,hltregion2$num))',file="code.R",append=TRUE,sep="\n")
+ if(ncol(data.L)==7 && colnames(data.L)[7]=="color"){
+ cat("circos.genomicLink(linkk1, linkk2, rou = rou, col = colLinks[colindx], border = NA)",file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat(paste('linkscolor.export <- c("',paste(linkscolor.export,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat("circos.genomicLink(linkk1, linkk2, rou = rou, col = linkscolor.export, border = NA)",file="code.R",append=TRUE,sep="\n")
+ }
+ cat("lapply(colL, function(x){
+ hltregion11 <- hltregion1[hltregion1$color %in% x,]
+ hltregion12 <- data.LL2[data.L2$num %in% hltregion11$num,]
+ hltregion12 <- hltregion12[,c(1:3)]
+ hltregion11 <- hltregion11[,c(1:3)]
+ hltregion22 <- hltregion2[hltregion2$color %in% x,]
+ hltregion21 <- data.LL1[data.L1$num %in% hltregion22$num,]
+ hltregion21 <- hltregion21[,c(1:3)]
+ hltregion22 <- hltregion22[,c(1:3)]
+ if(nrow(hltregion11)!=0){
+ circos.genomicLink(hltregion11, hltregion12, rou = rou, col = x, border = NA)
+ }
+ if(nrow(hltregion22)!=0){
+ circos.genomicLink(hltregion21, hltregion22, rou = rou, col = x, border = NA)
+ }
+ })",file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat("data.L1 <- data.L1[,c(1:3)]
+ data.L2 <- data.L2[,c(1:3)]",file="code.R",append=TRUE,sep="\n")
+ if(ncol(data.L)==7 && colnames(data.L)[7]=="color"){
+ cat("circos.genomicLink(data.L1, data.L2, rou = rou, col = colLinks, border = NA)",file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat(paste('linkscolor.export <- c("',paste(linkscolor.export,collapse ='","'),'")',sep=""),file="code.R",append=TRUE,sep="\n")
+ cat("circos.genomicLink(data.L1, data.L2, rou = rou, col = linkscolor.export, border = NA)",file="code.R",append=TRUE,sep="\n")
+ }
+ }
+ }
+}
+n <- length(legendtext)
+if(n!=0 && addlegend==1){
+ if(poslegend==1 && fontsize!="custom"){
+ xleft <- 1.2+(as.numeric(fontsize)-1)*0.25
+ }else if(poslegend==1 && fontsize=="custom"){
+ xleft <- 1.2+(as.numeric(cexlabel)-1)*0.25
+ }else{
+ xleft <- -0.01
+ }
+ xright <- xleft+0.02
+ ybottom <- -0.13*0.22/10-n*0.03
+ ytop <- -0.13*0.22/10+n*0.03
+ len <- ytop-ybottom
+ gap <- len/(n-0.8)
+ cat(paste("n <- ",n,sep=""),paste("xleft <- ",xleft,sep=""),paste("xright <- ",xright,sep=""),paste("ybottom <- ",ybottom,sep=""),paste("ytop <- ",ytop,sep=""),paste("len <- ",len,sep=""),paste("gap <- ",gap,sep=""),file="code.R",append=TRUE,sep="\n")
+ cat('for(i in 1:n){
+ assign(paste("n",i,sep=""),legendtext[i])
+ }',file="code.R",append=TRUE,sep="\n")
+ cat('rect(xleft, ybottom, xright, ytop, col = "black")
+ polygon(x=c(xleft-0.01,(xleft+xright)/2,xright+0.01), y=c(ybottom,ybottom-0.02,ybottom), col="black")
+ text(x=xleft-0.08, y=ybottom, labels="inner", cex=0.95)',file="code.R",append=TRUE,sep="\n")
+ if(n!=1){
+ cat('text(x=xleft-0.08, y=ytop-0.02, labels="outer", cex=0.95)',file="code.R",append=TRUE,sep="\n")
+ }
+ if(n==1){
+ cat('text(x=xleft-0.08, y=ytop-0.01, labels="outer", cex=0.95)
+ text(x=xright+0.025, y=ytop-0.04, labels=get("n1"), cex=1, adj=c(0,0))',file="code.R",append=TRUE,sep="\n")
+ }else{
+ cat('for(i in 1:n){
+ text(x=xright+0.028, y=ytop-gap*(i-1)-0.025, labels=get(paste("n",i,sep="")), cex=1, adj=c(0,0))
+ }',file="code.R",append=TRUE,sep="\n")
+ }
+}
+cat("dev.off()",file="code.R",append=TRUE,sep="\n")
+cat("circos.clear()",file="code.R",append=TRUE,sep="\n")
+
+out <<- readLines("code.R")
+file.remove("code.R")
+
+
+
+
+
diff --git a/www/figures/1.jpg b/www/figures/1.jpg
index 4caef94..8af7c11 100644
Binary files a/www/figures/1.jpg and b/www/figures/1.jpg differ
diff --git a/www/figures/10.jpg b/www/figures/10.jpg
index ac45a65..909becc 100644
Binary files a/www/figures/10.jpg and b/www/figures/10.jpg differ
diff --git a/www/figures/11.jpg b/www/figures/11.jpg
index cf401ad..a59c687 100644
Binary files a/www/figures/11.jpg and b/www/figures/11.jpg differ
diff --git a/www/figures/14.jpg b/www/figures/14.jpg
index 076819f..985643f 100644
Binary files a/www/figures/14.jpg and b/www/figures/14.jpg differ
diff --git a/www/figures/18.jpg b/www/figures/18.jpg
index 4217ccb..afcee81 100644
Binary files a/www/figures/18.jpg and b/www/figures/18.jpg differ
diff --git a/www/figures/2.jpg b/www/figures/2.jpg
index a655e08..9f4be5f 100644
Binary files a/www/figures/2.jpg and b/www/figures/2.jpg differ
diff --git a/www/figures/20.jpg b/www/figures/20.jpg
index 11de916..11fffb6 100644
Binary files a/www/figures/20.jpg and b/www/figures/20.jpg differ
diff --git a/www/figures/22.jpg b/www/figures/22.jpg
index adad3a2..88858bf 100644
Binary files a/www/figures/22.jpg and b/www/figures/22.jpg differ
diff --git a/www/figures/23.jpg b/www/figures/23.jpg
index f757260..4a3f660 100644
Binary files a/www/figures/23.jpg and b/www/figures/23.jpg differ
diff --git a/www/figures/24.jpg b/www/figures/24.jpg
index 9af0953..bf0b3ab 100644
Binary files a/www/figures/24.jpg and b/www/figures/24.jpg differ
diff --git a/www/figures/25.jpg b/www/figures/25.jpg
index a14fffa..d029392 100644
Binary files a/www/figures/25.jpg and b/www/figures/25.jpg differ
diff --git a/www/figures/26.jpg b/www/figures/26.jpg
index 42d548a..47e6741 100644
Binary files a/www/figures/26.jpg and b/www/figures/26.jpg differ
diff --git a/www/figures/27.jpg b/www/figures/27.jpg
index 7f686ad..1e004e2 100644
Binary files a/www/figures/27.jpg and b/www/figures/27.jpg differ
diff --git a/www/figures/28.jpg b/www/figures/28.jpg
index 45b48fd..962a661 100644
Binary files a/www/figures/28.jpg and b/www/figures/28.jpg differ
diff --git a/www/figures/29.jpg b/www/figures/29.jpg
index 503b162..8c13624 100644
Binary files a/www/figures/29.jpg and b/www/figures/29.jpg differ
diff --git a/www/figures/3.jpg b/www/figures/3.jpg
index f64267a..8b53668 100644
Binary files a/www/figures/3.jpg and b/www/figures/3.jpg differ
diff --git a/www/figures/30.jpg b/www/figures/30.jpg
index cfdb8d8..6089170 100644
Binary files a/www/figures/30.jpg and b/www/figures/30.jpg differ
diff --git a/www/figures/31.jpg b/www/figures/31.jpg
new file mode 100644
index 0000000..e8d20a7
Binary files /dev/null and b/www/figures/31.jpg differ
diff --git a/www/figures/32.jpg b/www/figures/32.jpg
new file mode 100644
index 0000000..4a38a53
Binary files /dev/null and b/www/figures/32.jpg differ
diff --git a/www/figures/33.jpg b/www/figures/33.jpg
new file mode 100644
index 0000000..fe674e4
Binary files /dev/null and b/www/figures/33.jpg differ
diff --git a/www/figures/34.jpg b/www/figures/34.jpg
new file mode 100644
index 0000000..141b094
Binary files /dev/null and b/www/figures/34.jpg differ
diff --git a/www/figures/35.jpg b/www/figures/35.jpg
new file mode 100644
index 0000000..b81fda6
Binary files /dev/null and b/www/figures/35.jpg differ
diff --git a/www/figures/36.jpg b/www/figures/36.jpg
new file mode 100644
index 0000000..68e2cdf
Binary files /dev/null and b/www/figures/36.jpg differ
diff --git a/www/figures/37.jpg b/www/figures/37.jpg
new file mode 100644
index 0000000..5e77871
Binary files /dev/null and b/www/figures/37.jpg differ
diff --git a/www/figures/38.jpg b/www/figures/38.jpg
new file mode 100644
index 0000000..c5e51a7
Binary files /dev/null and b/www/figures/38.jpg differ
diff --git a/www/figures/39.jpg b/www/figures/39.jpg
new file mode 100644
index 0000000..cd469b6
Binary files /dev/null and b/www/figures/39.jpg differ
diff --git a/www/figures/4.jpg b/www/figures/4.jpg
index 00c9324..64b2665 100644
Binary files a/www/figures/4.jpg and b/www/figures/4.jpg differ
diff --git a/www/figures/40.jpg b/www/figures/40.jpg
new file mode 100644
index 0000000..cbb5154
Binary files /dev/null and b/www/figures/40.jpg differ
diff --git a/www/figures/41.jpg b/www/figures/41.jpg
new file mode 100644
index 0000000..a64d464
Binary files /dev/null and b/www/figures/41.jpg differ
diff --git a/www/figures/42.jpg b/www/figures/42.jpg
new file mode 100644
index 0000000..4dab3a0
Binary files /dev/null and b/www/figures/42.jpg differ
diff --git a/www/figures/43.jpg b/www/figures/43.jpg
new file mode 100644
index 0000000..7cbbbfc
Binary files /dev/null and b/www/figures/43.jpg differ
diff --git a/www/figures/44.jpg b/www/figures/44.jpg
new file mode 100644
index 0000000..d913c71
Binary files /dev/null and b/www/figures/44.jpg differ
diff --git a/www/figures/45.jpg b/www/figures/45.jpg
new file mode 100644
index 0000000..8a317e0
Binary files /dev/null and b/www/figures/45.jpg differ
diff --git a/www/figures/46.jpg b/www/figures/46.jpg
new file mode 100644
index 0000000..334b31e
Binary files /dev/null and b/www/figures/46.jpg differ
diff --git a/www/figures/47.jpg b/www/figures/47.jpg
new file mode 100644
index 0000000..41ff0e8
Binary files /dev/null and b/www/figures/47.jpg differ
diff --git a/www/figures/48.jpg b/www/figures/48.jpg
new file mode 100644
index 0000000..0cb2098
Binary files /dev/null and b/www/figures/48.jpg differ
diff --git a/www/figures/49.jpg b/www/figures/49.jpg
new file mode 100644
index 0000000..f8ca897
Binary files /dev/null and b/www/figures/49.jpg differ
diff --git a/www/figures/5.jpg b/www/figures/5.jpg
index 014b114..5e56b38 100644
Binary files a/www/figures/5.jpg and b/www/figures/5.jpg differ
diff --git a/www/figures/50.jpg b/www/figures/50.jpg
new file mode 100644
index 0000000..235743f
Binary files /dev/null and b/www/figures/50.jpg differ
diff --git a/www/figures/6.jpg b/www/figures/6.jpg
index 159de1a..e9e68bf 100644
Binary files a/www/figures/6.jpg and b/www/figures/6.jpg differ
diff --git a/www/figures/7.jpg b/www/figures/7.jpg
index 3122707..10e93c0 100644
Binary files a/www/figures/7.jpg and b/www/figures/7.jpg differ
diff --git a/www/figures/8.jpg b/www/figures/8.jpg
index 73ebb79..cda87b2 100644
Binary files a/www/figures/8.jpg and b/www/figures/8.jpg differ
diff --git a/www/figures/9.jpg b/www/figures/9.jpg
index 79e61d7..ccc4ea7 100644
Binary files a/www/figures/9.jpg and b/www/figures/9.jpg differ
diff --git a/www/figuresmall/1.jpg b/www/figuresmall/1.jpg
new file mode 100644
index 0000000..b62dadb
Binary files /dev/null and b/www/figuresmall/1.jpg differ
diff --git a/www/figuresmall/10.jpg b/www/figuresmall/10.jpg
new file mode 100644
index 0000000..8c28ec0
Binary files /dev/null and b/www/figuresmall/10.jpg differ
diff --git a/www/figuresmall/11.jpg b/www/figuresmall/11.jpg
new file mode 100644
index 0000000..b055293
Binary files /dev/null and b/www/figuresmall/11.jpg differ
diff --git a/www/figuresmall/12.jpg b/www/figuresmall/12.jpg
new file mode 100644
index 0000000..acb568f
Binary files /dev/null and b/www/figuresmall/12.jpg differ
diff --git a/www/figuresmall/13.jpg b/www/figuresmall/13.jpg
new file mode 100644
index 0000000..a9fce26
Binary files /dev/null and b/www/figuresmall/13.jpg differ
diff --git a/www/figuresmall/14.jpg b/www/figuresmall/14.jpg
new file mode 100644
index 0000000..1698641
Binary files /dev/null and b/www/figuresmall/14.jpg differ
diff --git a/www/figuresmall/15.jpg b/www/figuresmall/15.jpg
new file mode 100644
index 0000000..9620a80
Binary files /dev/null and b/www/figuresmall/15.jpg differ
diff --git a/www/figuresmall/16.jpg b/www/figuresmall/16.jpg
new file mode 100644
index 0000000..4aa7dc5
Binary files /dev/null and b/www/figuresmall/16.jpg differ
diff --git a/www/figuresmall/17.jpg b/www/figuresmall/17.jpg
new file mode 100644
index 0000000..50fbaec
Binary files /dev/null and b/www/figuresmall/17.jpg differ
diff --git a/www/figuresmall/18.jpg b/www/figuresmall/18.jpg
new file mode 100644
index 0000000..a375253
Binary files /dev/null and b/www/figuresmall/18.jpg differ
diff --git a/www/figuresmall/19.jpg b/www/figuresmall/19.jpg
new file mode 100644
index 0000000..ea5fbc1
Binary files /dev/null and b/www/figuresmall/19.jpg differ
diff --git a/www/figuresmall/2.jpg b/www/figuresmall/2.jpg
new file mode 100644
index 0000000..5ed6a8f
Binary files /dev/null and b/www/figuresmall/2.jpg differ
diff --git a/www/figuresmall/20.jpg b/www/figuresmall/20.jpg
new file mode 100644
index 0000000..5bdb630
Binary files /dev/null and b/www/figuresmall/20.jpg differ
diff --git a/www/figuresmall/21.jpg b/www/figuresmall/21.jpg
new file mode 100644
index 0000000..133841f
Binary files /dev/null and b/www/figuresmall/21.jpg differ
diff --git a/www/figuresmall/22.jpg b/www/figuresmall/22.jpg
new file mode 100644
index 0000000..15020f0
Binary files /dev/null and b/www/figuresmall/22.jpg differ
diff --git a/www/figuresmall/23.jpg b/www/figuresmall/23.jpg
new file mode 100644
index 0000000..5218a5e
Binary files /dev/null and b/www/figuresmall/23.jpg differ
diff --git a/www/figuresmall/24.jpg b/www/figuresmall/24.jpg
new file mode 100644
index 0000000..1c22544
Binary files /dev/null and b/www/figuresmall/24.jpg differ
diff --git a/www/figuresmall/25.jpg b/www/figuresmall/25.jpg
new file mode 100644
index 0000000..f3a87b0
Binary files /dev/null and b/www/figuresmall/25.jpg differ
diff --git a/www/figuresmall/26.jpg b/www/figuresmall/26.jpg
new file mode 100644
index 0000000..4a15095
Binary files /dev/null and b/www/figuresmall/26.jpg differ
diff --git a/www/figuresmall/27.jpg b/www/figuresmall/27.jpg
new file mode 100644
index 0000000..fbc594f
Binary files /dev/null and b/www/figuresmall/27.jpg differ
diff --git a/www/figuresmall/28.jpg b/www/figuresmall/28.jpg
new file mode 100644
index 0000000..19469cc
Binary files /dev/null and b/www/figuresmall/28.jpg differ
diff --git a/www/figuresmall/29.jpg b/www/figuresmall/29.jpg
new file mode 100644
index 0000000..1e09d03
Binary files /dev/null and b/www/figuresmall/29.jpg differ
diff --git a/www/figuresmall/3.jpg b/www/figuresmall/3.jpg
new file mode 100644
index 0000000..6031d88
Binary files /dev/null and b/www/figuresmall/3.jpg differ
diff --git a/www/figuresmall/30.jpg b/www/figuresmall/30.jpg
new file mode 100644
index 0000000..978f280
Binary files /dev/null and b/www/figuresmall/30.jpg differ
diff --git a/www/figuresmall/31.jpg b/www/figuresmall/31.jpg
new file mode 100644
index 0000000..43f81f6
Binary files /dev/null and b/www/figuresmall/31.jpg differ
diff --git a/www/figuresmall/32.jpg b/www/figuresmall/32.jpg
new file mode 100644
index 0000000..3c1fbe2
Binary files /dev/null and b/www/figuresmall/32.jpg differ
diff --git a/www/figuresmall/33.jpg b/www/figuresmall/33.jpg
new file mode 100644
index 0000000..d589b74
Binary files /dev/null and b/www/figuresmall/33.jpg differ
diff --git a/www/figuresmall/34.jpg b/www/figuresmall/34.jpg
new file mode 100644
index 0000000..76ef5f1
Binary files /dev/null and b/www/figuresmall/34.jpg differ
diff --git a/www/figuresmall/35.jpg b/www/figuresmall/35.jpg
new file mode 100644
index 0000000..db348f1
Binary files /dev/null and b/www/figuresmall/35.jpg differ
diff --git a/www/figuresmall/36.jpg b/www/figuresmall/36.jpg
new file mode 100644
index 0000000..3d9c3af
Binary files /dev/null and b/www/figuresmall/36.jpg differ
diff --git a/www/figuresmall/37.jpg b/www/figuresmall/37.jpg
new file mode 100644
index 0000000..a954a23
Binary files /dev/null and b/www/figuresmall/37.jpg differ
diff --git a/www/figuresmall/38.jpg b/www/figuresmall/38.jpg
new file mode 100644
index 0000000..a9062bc
Binary files /dev/null and b/www/figuresmall/38.jpg differ
diff --git a/www/figuresmall/39.jpg b/www/figuresmall/39.jpg
new file mode 100644
index 0000000..7a635e0
Binary files /dev/null and b/www/figuresmall/39.jpg differ
diff --git a/www/figuresmall/4.jpg b/www/figuresmall/4.jpg
new file mode 100644
index 0000000..cf46c0c
Binary files /dev/null and b/www/figuresmall/4.jpg differ
diff --git a/www/figuresmall/40.jpg b/www/figuresmall/40.jpg
new file mode 100644
index 0000000..274b496
Binary files /dev/null and b/www/figuresmall/40.jpg differ
diff --git a/www/figuresmall/41.jpg b/www/figuresmall/41.jpg
new file mode 100644
index 0000000..b2b7a73
Binary files /dev/null and b/www/figuresmall/41.jpg differ
diff --git a/www/figuresmall/42.jpg b/www/figuresmall/42.jpg
new file mode 100644
index 0000000..90bbe08
Binary files /dev/null and b/www/figuresmall/42.jpg differ
diff --git a/www/figuresmall/43.jpg b/www/figuresmall/43.jpg
new file mode 100644
index 0000000..5d40122
Binary files /dev/null and b/www/figuresmall/43.jpg differ
diff --git a/www/figuresmall/44.jpg b/www/figuresmall/44.jpg
new file mode 100644
index 0000000..170fb5b
Binary files /dev/null and b/www/figuresmall/44.jpg differ
diff --git a/www/figuresmall/45.jpg b/www/figuresmall/45.jpg
new file mode 100644
index 0000000..f152c0e
Binary files /dev/null and b/www/figuresmall/45.jpg differ
diff --git a/www/figuresmall/46.jpg b/www/figuresmall/46.jpg
new file mode 100644
index 0000000..f002b99
Binary files /dev/null and b/www/figuresmall/46.jpg differ
diff --git a/www/figuresmall/47.jpg b/www/figuresmall/47.jpg
new file mode 100644
index 0000000..5bde50b
Binary files /dev/null and b/www/figuresmall/47.jpg differ
diff --git a/www/figuresmall/48.jpg b/www/figuresmall/48.jpg
new file mode 100644
index 0000000..c2f71f3
Binary files /dev/null and b/www/figuresmall/48.jpg differ
diff --git a/www/figuresmall/49.jpg b/www/figuresmall/49.jpg
new file mode 100644
index 0000000..5f7581a
Binary files /dev/null and b/www/figuresmall/49.jpg differ
diff --git a/www/figuresmall/5.jpg b/www/figuresmall/5.jpg
new file mode 100644
index 0000000..ccba5b2
Binary files /dev/null and b/www/figuresmall/5.jpg differ
diff --git a/www/figuresmall/50.jpg b/www/figuresmall/50.jpg
new file mode 100644
index 0000000..1f60c02
Binary files /dev/null and b/www/figuresmall/50.jpg differ
diff --git a/www/figuresmall/6.jpg b/www/figuresmall/6.jpg
new file mode 100644
index 0000000..d8285ac
Binary files /dev/null and b/www/figuresmall/6.jpg differ
diff --git a/www/figuresmall/7.jpg b/www/figuresmall/7.jpg
new file mode 100644
index 0000000..0a86d0e
Binary files /dev/null and b/www/figuresmall/7.jpg differ
diff --git a/www/figuresmall/8.jpg b/www/figuresmall/8.jpg
new file mode 100644
index 0000000..6798db9
Binary files /dev/null and b/www/figuresmall/8.jpg differ
diff --git a/www/figuresmall/9.jpg b/www/figuresmall/9.jpg
new file mode 100644
index 0000000..d37ba00
Binary files /dev/null and b/www/figuresmall/9.jpg differ
diff --git a/www/shinyCircos_Help_Manual.pdf b/www/shinyCircos_Help_Manual.pdf
new file mode 100644
index 0000000..9ea36c7
Binary files /dev/null and b/www/shinyCircos_Help_Manual.pdf differ
|
|
|
|
|
|
|
|