```{css, echo=FALSE, eval=T} body { counter-reset: counter-rchunks; } :root { --pale-blue: #5A7B9C; --strong-blue: #003366; --blue: #303F9F; --light-blue: #a6b5c6; --light-gray: #f6f6f6; }
padding-left: 3em; }
padding-left: 3em; } div.sourceCode { counter-increment: counter-rchunks; position: relative; overflow: visible; } div.sourceCode::before { content: 'Code [' counter(counter-rchunks) ']: '; display: inline; position: absolute; left: -5em; font-size: 0.7em; color: var(--blue); }
background:var(--pale-blue); border-top:solid 10px var(--pale-blue); }
color: white; } .title { text-align: center; color: var(--strong-blue); } .subtitle { color: var(--strong-blue); } h1, h2, h3, h4, h5, h6, legend { color: var(--pale-blue); }
color: var(--pale-blue); background-image: linear-gradient(180deg,var(--pale-blue),var(--pale-blue)); }
background-color: var(--pale-blue); }
background-color: var(--pale-blue); }
background-color: var(--light-gray) !important; }
background-color: var(--light-blue); color: white; }
background-color: var(--light-blue); } code { color: var(--strong-blue); }
``` {r cssjs, results="asis", echo=FALSE, message=FALSE, eval=TRUE}
# <!-- pkgdown -->
# <!-- jquery --><script src="js/jquery.min.js" crossorigin="anonymous"></script>
myfile <- "js/jquery.min.js"
if (file.exists(myfile)) {
cat(paste0('<script src="', myfile, '" crossorigin="anonymous"></script> <!-- # -->'))
}
# <!-- clipboard.js --><script src="js/clipboard.min.js" crossorigin="anonymous"></script>
myfile <- "js/clipboard.min.js"
if (file.exists(myfile)) {
cat(paste0('<script src="', myfile, '" crossorigin="anonymous"></script>'))
}
myfile <- "js/hideOutput.js"
if (file.exists(myfile)) {
cat(paste0('<script src="', myfile, '" crossorigin="anonymous"></script>'))
}
# <!-- Font Awesome icons --><link rel="stylesheet" href="css/all.minMod.css" crossorigin="anonymous">
myfile <- "css/all.minMod.css"
if (file.exists(myfile)) {
cat(paste0('<link rel="stylesheet" href="', myfile, '" crossorigin="anonymous">'))
}
# <!-- Bootstrap --><link rel="stylesheet" href="css/bootstrap.minO.css" crossorigin="anonymous">
myfile <- "css/bootstrap.minO.css"
if (file.exists(myfile)) {
cat(paste0('<link rel="stylesheet" href="', myfile, '" crossorigin="anonymous">'))
}
# <!-- # <script src="js/bootstrap.min.js" crossorigin="anonymous"></script> -->
myfile <- "js/bootstrap.min.js"
if (file.exists(myfile)) {
cat(paste0('<script src="', myfile, '" crossorigin="anonymous"></script> <!-- # -->'))
}
myfile <- "js/pkgdown2.js"
if (file.exists(myfile)) {
cat(paste0('<script src="', myfile, '"></script> <!-- # -->'))
}
# Create myheader.html line1 <- '<script src="https://kit.fontawesome.com/af0a13599b.js" crossorigin="anonymous"></script>' line2 <- '<link rel="shortcut icon" href="../man/figures/logo.png" />' file <- "myheader.html" if (Sys.info()["sysname"] == "Windows") { # check internet response res <- !as.logical(system(paste("ping", "www.google.com"))) if (res) { write(line1, file = file) write(line2, file = file, append = TRUE) } } else { write(line1, file = file) write(line2, file = file, append = TRUE) } require(idiogramFISH) knitr::opts_chunk$set(eval = TRUE) pasteLinks <- function(link) { cat(paste0( " </br> Jupyter interactive version: <br> </br> <table> <tr> <td> [<img src='../man/figures/colab-badge.svg'>](https://colab.research.google.com/github/fernandoroa/IFjupyter/blob/main/", note, "){target='_blank'}  </td> <td>   <img src='../man/figures/GitHub-Mark-120px-plus.png' height=25 width=25> [Github](https://github.com/fernandoroa/IFjupyter/blob/main/", note, "){target='_blank'} </td> <td>   [Raw](https://github.com/fernandoroa/IFjupyter/raw/main/", note, "){target='_blank'} </td> </tr> </table> </br> " )) }
``` {r, echo=F, message=FALSE, fig.show = "hold", fig.align = "default", results="asis"}
if (requireNamespace("RCurl", quietly = TRUE)) {
# version of manual
v <- sub("Version: ", "", readLines("../DESCRIPTION")[3])
# v<-tryCatch(suppressWarnings(rvcheck:::check_github_gitlab("ferroao/idiogramFISH", "gitlab")$latest_version), error=function(e) NA )
pkg <- "idiogramFISH"
link <- tryCatch(suppressWarnings(badger::badge_custom("Documentation", paste(pkg, v), "cornflowerblue")), error = function(e) NA)
if (!is.na(link)) {
svglink <- gsub("\[|\]|!|\(|\)", "", link)
manual_cont <- tryCatch(suppressWarnings(RCurl::getURLContent(svglink)), error = function(e) NA)
if (!is.na(manual_cont)) {
manual_contFile <- "../man/figures/manual.svg"
writeLines(manual_cont, con = manual_contFile)
manual_contFile <- normalizePath(manual_contFile)
knitr::include_graphics(manual_contFile)
# cat(paste0(" ,")" ) )
}
}
} # rcurl
# Introduction {-} <!-- <div style="width:150px;"> --> <div style="float: right; width: 20%"> ```r img1_path <- "../man/figures/logo.png" if (file.exists(img1_path)) { cat(paste0("<img src=", img1_path, ">")) }
The goal of idiogramFISH functions or shiny-app is to plot karyotypes, plasmids and circular chr. having a set of data.frames for chromosome data and optionally marks' data [@Roa2021]. Karyotypes can also be plotted in concentric circles.
It is possible to calculate also chromosome and karyotype indexes [@Watanabe1999;@Zarco1986new] and classify chromosome morphology in the categories of Levan [-@Levan1964], and Guerra [-@Guerra1986d].
Six styles of marks are available: square (squareLeft), dots, cM (cMLeft), cenStyle, upArrow (downArrow), exProtein (inProtein) (column style in dfMarkColor data.frame); its legend (label) (parameter legend) can be drawn inline or to the right of karyotypes. Three styles of centromere are available: rounded, triangle and inProtein (cenFormat parameter). Chromosome regions (column chrRegion in dfMarkPos data.frame) for monocentrics are p, q, cen, pcen, qcen. The last three cannot accommodate most mark styles, but can be colored. The region w can be used both in monocentrics and holocentrics.
IdiogramFISH was written in R [@R-base] and also uses crayon [@R-crayon], tidyr [@R-tidyr], plyr [@plyr2011] and dplyr packages [@R-dplyr]. Documentation was written with R-packages roxygen2 [@R-roxygen2], usethis [@R-usethis], bookdown [@bookdown2016], knitr [@Xie2015], pkgdown [@R-pkgdown], Rmarkdown [@rmarkdown2018], rvcheck [@R-rvcheck], badger [@R-badger], kableExtra [@R-kableExtra], rmdformats [@R-rmdformats] and RCurl [@R-RCurl]. For some vignette figures, packages rentrez [@rentrez2017], phytools [@phytools2012], ggtree [@ggtree2018], ggplot2 [@ggplot22016] and ggpubr [@R-ggpubr] were used.
In addition, the shiny app runBoard() uses shiny [@R-shiny], shinydashboard [@R-shinydashboard], rhandsontable [@R-rhandsontable], gtools [@R-gtools] and rclipboard [@R-rclipboard].
docker pull fercyto/idiogramfish # Run the image docker run -d -p 8080:8080 fercyto/idiogramfish
In your internet browser go to localhost:8080
# Stop the container
docker ps
docker stop {container id}
``` {r, echo=F, message=FALSE, fig.show = "hold", fig.align = "default", results="asis"}
if (requireNamespace("RCurl", quietly = TRUE)) { cranversion <- "https://www.r-pkg.org/badges/version/idiogramFISH" cranversion_cont <- tryCatch(suppressWarnings(RCurl::getURLContent(cranversion)), error = function(e) NA)
if (!is.na(cranversion_cont)) {
cranversion_contFile <- "../man/figures/cranversion.svg"
writeLines(cranversion_cont, con = cranversion_contFile)
cranversion_contFile <- normalizePath(cranversion_contFile)
# knitr::include_graphics(cranversion_contFile)
# cat(paste0(",")" ) )
cat(paste0(", ")"))
} # cran version
# crandownloads<-"https://cranlogs.r-pkg.org/badges/grand-total/idiogramFISH?color=orange" # crandownloads_cont <- tryCatch(suppressWarnings(RCurl::getURLContent(crandownloads) ), error=function(e) NA )
doibadge <- "https://zenodo.org/badge/DOI/10.5281/zenodo.3579417.svg" doibadge_cont <- tryCatch(suppressWarnings(RCurl::getURLContent(doibadge)), error = function(e) NA)
if (!is.na(doibadge_cont)) { doibadge_contFile <- "../man/figures/doibadge.svg" writeLines(doibadge_cont, con = doibadge_contFile) doibadge_contFile <- normalizePath(doibadge_contFile)
cat(paste0(" [, ")](https://doi.org/10.5281/zenodo.3579417)"))
} # doi } # rcurl
You can install idiogramFISH from [CRAN](https://cran.r-project.org/package=idiogramFISH) with:
``` r
install.packages("idiogramFISH")
Windows users: To avoid installation of packages in OneDrive
.libPaths("D:R/lib") # for example .libPaths() # set or read libraries
To do that permanently: Search (magnifier) "environment variables" and set R_LIBS_USER to
D:\R\lib (example)
``` {r, echo=F, message=FALSE, fig.show = "hold", fig.align = "default", results="asis"} if (requireNamespace("RCurl", quietly = TRUE)) { # cran version v <- "NEWS" # tryCatch(suppressWarnings(rvcheck::check_cran("idiogramFISH")$latest_version), error=function(e) NA )
link <- tryCatch(suppressWarnings(badger::badge_custom("gitlab", paste(v), "orange", "?logo=gitlab")), error = function(e) NA) if (!is.na(link)) { svglink <- gsub("\[|\]|!|\(|\)", "", link) news_cont <- tryCatch(suppressWarnings(RCurl::getURLContent(svglink)), error = function(e) NA) if (!is.na(news_cont)) { news_cont_contFile <- "../man/figures/NEWS.svg" writeLines(news_cont, con = news_cont_contFile) cat(paste0(", "){target='_blank'}")) } } } # rcurl
<!-- [CRAN archive](https://cran.r-project.org/src/contrib/Archive/idiogramFISH/) --> ``` {r, echo=F, message=FALSE, fig.show = "hold", fig.align = "default", results="asis"} if (requireNamespace("RCurl", quietly = TRUE)) { archivelink <- tryCatch(suppressWarnings(badger::badge_custom("CRAN", "archive", "gray")), error = function(e) NA) if (!is.na(archivelink)) { svgnewdownlink <- gsub("\\[|\\]|!|\\(|\\)", "", archivelink) archive_cont <- tryCatch(suppressWarnings(RCurl::getURLContent(svgnewdownlink)), error = function(e) NA) } if (!is.na(archive_cont)) { archive_contFile <- "../man/figures/archive.svg" writeLines(archive_cont, con = archive_contFile) cat(paste0("[, ")](https://cran.r-project.org/src/contrib/Archive/idiogramFISH/){target='_blank'}")) } } # rcurl
``` {r, echo=F, message=FALSE, fig.show = "hold", fig.align = "default", results="asis"} if (requireNamespace("RCurl", quietly = TRUE)) { newdownlink <- tryCatch(suppressWarnings(badger::badge_custom("CRAN", "downloads", "green")), error = function(e) NA) if (!is.na(newdownlink)) { svgnewdownlink <- gsub("\[|\]|!|\(|\)", "", newdownlink) realdo_cont <- tryCatch(suppressWarnings(RCurl::getURLContent(svgnewdownlink)), error = function(e) NA) } if (!is.na(realdo_cont)) { realdo_contFile <- "../man/figures/realdownloads.svg" writeLines(realdo_cont, con = realdo_contFile) # message # link cat(paste0(", "){target='_blank'}")) } } # rcurl
<div class="goright95"> <a href="#content">top <i class="fa fa-caret-square-o-up" aria-hidden="true"></i></a> </div> ## Need help? {-} ### Manual in Bookdown style {-} ``` {r, echo=F, message=FALSE, fig.show = "hold", fig.align = "default", results="asis"} if (requireNamespace("RCurl", quietly = TRUE)) { # version of manual # v<-tryCatch(suppressWarnings(rvcheck:::check_github_gitlab("ferroao/idiogramFISH", "gitlab")$latest_version), error=function(e) NA ) # cran version v <- tryCatch(suppressWarnings(rvcheck::check_cran("idiogramFISH")$latest_version), error = function(e) NA) pkg <- "idiogramFISH" link <- tryCatch(suppressWarnings(badger::badge_custom("bookdown", paste(pkg, v), "orange")), error = function(e) NA) if (!is.na(link)) { svglink <- gsub("\\[|\\]|!|\\(|\\)", "", link) manual_cont <- tryCatch(suppressWarnings(RCurl::getURLContent(svglink)), error = function(e) NA) if (!is.na(manual_cont)) { bookdown_contFile <- "../man/figures/cranmanualbookdown.svg" writeLines(manual_cont, con = bookdown_contFile) # manual_contFile <- normalizePath(manual_contFile) # knitr::include_graphics(manual_contFile) cat(paste0("[, ")](https://ferroao.gitlab.io/manualidiogramfish/)")) } } } # rcurl
``` {r, echo=F, message=FALSE, fig.show = "hold", fig.align = "default", results="asis"} if (requireNamespace("RCurl", quietly = TRUE)) { # version of manual # v<-sub("Version: ","",readLines("DESCRIPTION")[3]) v <- tryCatch(suppressWarnings(rvcheck:::check_github_gitlab("ferroao/idiogramFISH", "gitlab")$latest_version), error = function(e) NA) # cran version # v<-tryCatch(suppressWarnings(rvcheck::check_cran("idiogramFISH")$latest_version), error=function(e) NA )
pkg <- "idiogramFISH" pkglink <- tryCatch(suppressWarnings(badger::badge_custom("pkgdown", paste(pkg, v), "cornflowerblue")), error = function(e) NA) if (!is.na(pkglink)) { pkgsvglink <- gsub("\[|\]|!|\(|\)", "", pkglink) develpkgmanual_cont <- tryCatch(suppressWarnings(RCurl::getURLContent(pkgsvglink)), error = function(e) NA) if (!is.na(develpkgmanual_cont)) { pkgdownmanual_contFile <- "../man/figures/pkgdownver.svg" writeLines(develpkgmanual_cont, con = pkgdownmanual_contFile) cat(paste0(", " )")) } } } # rcurl
### Vignettes {-} Online: ``` {r, echo=F, message=FALSE, fig.show = "hold", fig.align = "default", results="asis"} if (requireNamespace("RCurl", quietly = TRUE)) { # version of manual # v<-sub("Version: ","",readLines("DESCRIPTION")[3]) v <- tryCatch(suppressWarnings(rvcheck:::check_github_gitlab("ferroao/idiogramFISH", "gitlab")$latest_version), error = function(e) NA) # cran version # v<-tryCatch(suppressWarnings(rvcheck::check_cran("idiogramFISH")$latest_version), error=function(e) NA ) pkg <- "idiogramFISH" link <- tryCatch(suppressWarnings(badger::badge_custom("vignettes", paste(pkg, v), "cornflowerblue")), error = function(e) NA) if (!is.na(link)) { vignettelink <- gsub("\\[|\\]|!|\\(|\\)", "", link) vignettemanual_cont <- tryCatch(suppressWarnings(RCurl::getURLContent(vignettelink)), error = function(e) NA) if (!is.na(vignettemanual_cont)) { vignettemanual_contFile <- "../man/figures/develmanualvignette.svg" writeLines(vignettemanual_cont, con = vignettemanual_contFile) # manual_contFile <- normalizePath(manual_contFile) # knitr::include_graphics(manual_contFile) cat(paste0("[, ")](https://ferroao.gitlab.io/idiogramfishhelppages)")) } } } # rcurl
Launch vignettes from R for the installed version:
library(idiogramFISH) packageVersion("idiogramFISH") browseVignettes("idiogramFISH")
print(citation("idiogramFISH"), bibtex = FALSE)
To write citation to file:
sink("idiogramFISH.bib") toBibtex(citation("idiogramFISH")) sink()
img1_path <- "../man/figures/kofi1.png" img1_path <- normalizePath(img1_path) if (file.exists(img1_path)) { cat(paste0("[Fernando Roa](https://ferroao.gitlab.io/curriculumpu/){target='_blank'} <a href='https://ko-fi.com/X7X71PZZG' target='_blank'><img src=", img1_path, " width=\"10%\">")) } else { cat(paste0("[Fernando Roa](https://ferroao.gitlab.io/curriculumpu/){target='_blank'}")) }
``` {r, echo=F, message=FALSE, fig.show = "hold", fig.align = "default", results="asis", eval=FALSE}
cat("
")
[Mariana PC Telles](http://lattes.cnpq.br/4648436798023532) ```r # automatically create a bib database for R packages, this is currently not used by vignette refs/packages2.bib knitr::write_bib(c( .packages(), "bookdown", "knitr", "rmarkdown", "devtools", "pkgdown", "crayon", "ggtree", "ggplot2", "ggpubr", "phytools", "plyr", "dplyr", "tidyr", "rentrez" ), "refs/packages2.bib")
chapterFile_jupyter <- "../parts/01-jupyter.Rmd" if (file.exists(chapterFile_jupyter)) { childExists_jupyter <- TRUE child_docs_jupyter <- chapterFile_jupyter } else { childExists_jupyter <- FALSE child_docs_jupyter <- "" }
chapterFile_first <- "../parts/02-first.Rmd" if (file.exists(chapterFile_first)) { childExists_first <- TRUE child_docs_first <- chapterFile_first } else { childExists_first <- FALSE child_docs_first <- "" }
chapterFile_minimal <- "../chaptersBLOCK/03-minimal.Rmd" if (file.exists(chapterFile_minimal)) { childExists_minimal <- TRUE child_docs_minimal <- chapterFile_minimal } else { childExists_minimal <- FALSE child_docs_minimal <- "" }
cat("# Minimal Examples")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#minimal-examples)")
note <- "03-minimal.ipynb" pasteLinks(note)
chapterFile_plotting <- "../chaptersBLOCK/04-plotting.Rmd" if (file.exists(chapterFile_plotting)) { childExists_plotting <- TRUE child_docs_plotting <- chapterFile_plotting } else { childExists_plotting <- FALSE child_docs_plotting <- "" }
cat("# Plotting chromosomes")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#plotting-chromosomes)")
note <- "04-plotting.ipynb" pasteLinks(note)
chapterFile_multiple <- "../chaptersBLOCK/05-multiple.Rmd" if (file.exists(chapterFile_multiple)) { childExists_multiple <- TRUE child_docs_multiple <- chapterFile_multiple } else { childExists_multiple <- FALSE child_docs_multiple <- "" }
cat("# Several OTUs")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#multiple-otus)")
note <- "05-multiple.ipynb" pasteLinks(note)
chapterFile_units <- "../chaptersBLOCK/06-units.Rmd" if (file.exists(chapterFile_units)) { childExists_units <- TRUE child_docs_units <- chapterFile_units } else { childExists_units <- FALSE child_docs_units <- "" }
cat("# Changing Units")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#changing-units)")
note <- "06-units.ipynb" pasteLinks(note)
chapterFile0 <- "../chaptersBLOCK/07-gish.Rmd" if (file.exists(chapterFile0)) { childExists0 <- TRUE child_docs0 <- chapterFile0 } else { childExists0 <- FALSE child_docs0 <- "" }
cat("# GISH")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#gish)")
note <- "07-gish.ipynb" pasteLinks(note)
chapterFile1 <- "../chaptersBLOCK/08-groups.Rmd" if (file.exists(chapterFile1)) { childExists1 <- TRUE child_docs1 <- chapterFile1 } else { childExists1 <- FALSE child_docs1 <- "" }
cat("# Using groups")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#groups)")
note <- "08-groups.ipynb" pasteLinks(note)
chapterFile2 <- "../chaptersBLOCK/09-circular.Rmd" if (file.exists(chapterFile2)) { childExists2 <- TRUE child_docs2 <- chapterFile2 } else { childExists2 <- FALSE child_docs2 <- "" }
cat("# Circular plots")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#circular-plots)")
note <- "09-circular.ipynb" pasteLinks(note)
chapterFile3 <- "../chaptersBLOCK/10-phylogeny.Rmd" if (file.exists(chapterFile3)) { childExists3 <- TRUE child_docs3 <- chapterFile3 } else { childExists3 <- FALSE child_docs3 <- "" }
cat("# Plotting alongside phylogeny")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#plotting-alongside-phylogeny)")
note <- "10-phylogeny.ipynb" pasteLinks(note)
chapterFile <- "../chaptersBLOCK/11-citrushelp.Rmd" if (file.exists(chapterFile)) { childExists <- TRUE child_docs <- chapterFile } else { childExists <- FALSE child_docs <- "" }
cat("# *Citrus*")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#citrus)")
note <- "11-citrushelp.ipynb" pasteLinks(note)
chapterFile4 <- "../chaptersBLOCK/12-human.Rmd" if (file.exists(chapterFile4)) { childExists4 <- TRUE child_docs4 <- chapterFile4 } else { childExists4 <- FALSE child_docs4 <- "" }
cat("# Human karyotype")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#human-karyotype)")
note <- "12-human.ipynb" pasteLinks(note)
chapterFile_param <- "../chaptersBLOCK/13-functions.Rmd" if (file.exists(chapterFile_param)) { childExists_param <- TRUE child_docs_param <- chapterFile_param } else { childExists_param <- FALSE child_docs_param <- "" }
cat("# Functions")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#functions)")
chapterFile_data <- "../chaptersBLOCK/14-datasets.Rmd" if (file.exists(chapterFile_data)) { childExists_data <- TRUE child_docs_data <- chapterFile_data } else { childExists_data <- FALSE child_docs_data <- "" }
cat("# Datasets")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#datasets)")
chapterFile_news <- "../chaptersBLOCK/15-news.Rmd" if (file.exists(chapterFile_news)) { childExists_news <- TRUE child_docs_news <- chapterFile_news } else { childExists_news <- FALSE child_docs_news <- "" }
cat("# News {-}")
cat("[https://ferroao.gitlab.io/idiogramfishhelppages](https://ferroao.gitlab.io/idiogramfishhelppages/#news)")
::: {#refs_normal} :::
::: {#refs_software} :::
::: {#refs_shiny} :::
::: {#refs_docs} :::
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.