Commit 5ff70f6d authored by Christian Arnold's avatar Christian Arnold
Browse files

Changed repository structure, removed GRaNIEdev, various small changes to...

Changed repository structure, removed GRaNIEdev, various small changes to code,  more changes and preparations follow
parent da7498b1
Pipeline #28884 passed with stage
in 12 seconds
......@@ -54,11 +54,7 @@ Imports:
tibble,
tidyselect,
readr,
grid
Depends:
R (>= 3.6),
tidyverse,
topGO,
grid,
tidyr,
dplyr,
stats,
......@@ -66,6 +62,10 @@ Depends:
graphics,
magrittr,
tibble
Depends:
R (>= 3.6),
tidyverse,
topGO
Suggests:
knitr,
BSgenome.Hsapiens.UCSC.hg19,
......@@ -95,5 +95,5 @@ License: LGPL (>= 3)
LazyData: true
URL: https://grp-zaugg.embl-community.io/GRaNIE
BugReports: https://git.embl.de/grp-zaugg/GRaNIE/issues
RoxygenNote: 7.1.1
RoxygenNote: 7.1.2
Config/testthat/edition: 3
......@@ -279,7 +279,11 @@ addData <- function(GRN, counts_peaks, normalization_peaks = "DESeq_sizeFactor",
stopifnot(c("chr", "start", "end", "peakID", "isFiltered") %in% colnames(GRN@data$peaks$consensusPeaks))
futile.logger::flog.info(paste0("Check for overlapping peaks..."))
consensus.gr = .constructGRanges(GRN@data$peaks$consensusPeaks, seqlengths = .getChrLengths(genomeAssembly), GRN@config$parameters$genomeAssembly)
# Assume 0-based exclusive format, see https://arnaudceol.wordpress.com/2014/09/18/chromosome-coordinate-systems-0-based-1-based/ and http://genome.ucsc.edu/FAQ/FAQformat.html#format1 for details
consensus.gr = .constructGRanges(GRN@data$peaks$consensusPeaks, seqlengths = .getChrLengths(genomeAssembly), GRN@config$parameters$genomeAssembly, zeroBased = TRUE)
overlappingPeaks = which(GenomicRanges::countOverlaps(consensus.gr ,consensus.gr) >1)
......@@ -4280,13 +4284,6 @@ performAllNetworkAnalyses <- function(GRN, ontology = c("BP", "MF"),
background = "neighborhood",
clustering = "louvain",
communities = seq_len(10), display = "byRank",
TF_rankType = "degree",
TF_topNodes_n = 0.1,
TF_names = NULL,
TF_plot_topn_pvalue = 30,
TF_plot_p = 0.05,
TF_plot_nSignificant = 3,
TF_plot_nGO = 10,
outputFolder = NULL,
forceRerun = FALSE) {
......@@ -4310,17 +4307,6 @@ performAllNetworkAnalyses <- function(GRN, ontology = c("BP", "MF"),
GRN = plotCommunitiesEnrichment(GRN, outputFolder = outputFolder, display = display, communities = communities, forceRerun = forceRerun)
GRN = calculateTFEnrichment(GRN, rankType = TF_rankType, n = TF_topNodes_n, TF.names = TF_names,
ontology = ontology, algorithm = algorithm,
statistic = statistic, background = background,
forceRerun = forceRerun)
GRN = plotTFEnrichment(GRN, rankType = TF_rankType, n = TF_topNodes_n, TF.names = TF_names,
topn_pvalue = TF_plot_topn_pvalue, p = TF_plot_p,
nSignificant = TF_plot_nSignificant, nGO = TF_plot_nGO,
outputFolder = outputFolder, forceRerun = forceRerun)
.printExecutionTime(start)
......@@ -4705,7 +4691,7 @@ calculateCommunitiesEnrichment <- function(GRN,
communitiesDisplay = stats::na.omit(communitiesCount$community[communities])
}
futile.logger::flog.info(paste0("Running enrichment analysis for all ", length(communitiesDisplay)," communities. This may take a while..."))
futile.logger::flog.info(paste0("Running enrichment analysis for all communities. This may take a while..."))
mapping = .getGenomeObject(GRN@config$parameters$genomeAssembly, type = "packageName")
......
......@@ -225,7 +225,9 @@
if (nFilesToProcessTotal == 0) {
stop(paste0("No files to process in folder ", directory, " that fulfill the desired criteria (", patternCur, ")."))
message = paste0("No files to process in folder ", directory, " that fulfill the desired criteria (", patternCur, ").")
.checkAndLogWarningsAndErrors(NULL, message, isWarning = FALSE)
} else {
futile.logger::flog.info(paste0("The following", nFilesToProcessTotal, "files were found:\n", paste0(filesToProcess.vec, collapse = "\n ")))
......@@ -385,25 +387,31 @@
}
}
.constructGRanges <- function(annotation, seqlengths = NULL, genomeAssembly, stopIfError = TRUE, ...) {
.constructGRanges <- function(annotation, seqlengths = NULL, genomeAssembly, zeroBased = TRUE, stopIfError = TRUE, ...) {
# Check if all start and end coordinates a
# Check if all start and end coordinates are valid
sharedErrorMessage = paste0("This should not happen and may indicate a wrong genome assembly version. Check the validity of the input data and the parameters of the script. Are these really ", genomeAssembly, " coordinates? ")
invalidEnd = which(annotation$end > seqlengths[as.character(annotation$chr)] | annotation$end < 0)
if (length(invalidEnd) > 0) {
futile.logger::flog.error(paste0(length(invalidEnd), " sequences have ends outside of the chromosome boundaries (e.g., sequences ",
paste0(invalidEnd[seq_len(min(5, length(invalidEnd)))], collapse = ","), "). This should not happen and may indicate a wrong genome assembly version. Check the validity of the input data and the parameters of the script. Are these really ", genomeAssembly, " coordinates?"))
stop()
message = paste0(length(invalidEnd), " sequences have ends outside of the chromosome boundaries (e.g., sequences ",
paste0(invalidEnd[seq_len(min(5, length(invalidEnd)))], collapse = ","), ").", sharedErrorMessage)
.checkAndLogWarningsAndErrors(NULL, message, isWarning = FALSE)
}
# Check if all start and end coordinates a
# Check if all start and end coordinates are valid and inside the chromosomes
invalidStart = which(annotation$start > seqlengths[as.character(annotation$chr)] | annotation$start < 0)
if (length(invalidStart) > 0) {
futile.logger::flog.error(paste0(length(invalidStart), " sequences have ends outside of the chromosome boundaries (e.g., sequences ",
paste0(invalidStart[seq_len(min(5, length(invalidStart)))], collapse = ","), "). This should not happen and may indicate a wrong genome assembly version. Check the validity of the input data and the parameters of the script. Are these really ", genomeAssembly, " coordinates?"))
stop()
message = paste0(length(invalidStart), " sequences have ends outside of the chromosome boundaries (e.g., sequences ",
paste0(invalidStart[seq_len(min(5, length(invalidStart)))], collapse = ","), ").", sharedErrorMessage)
.checkAndLogWarningsAndErrors(NULL, message, isWarning = FALSE)
}
gr = GenomicRanges::makeGRangesFromDataFrame(annotation, keep.extra.columns = TRUE, seqinfo = seqlengths, ...)
gr = GenomicRanges::makeGRangesFromDataFrame(annotation, keep.extra.columns = TRUE, seqinfo = seqlengths, starts.in.df.are.0based = zeroBased, ...)
# Check whether there are out-of-bound sequences, and abort if there are. This should not happen
seq_outOfBound = which(end(gr) > seqlengths(gr)[as.character(GenomeInfoDb::seqnames(gr))])
......@@ -412,13 +420,9 @@
index = seq_len(min(length(seq_outOfBound),10))
annotation_faultyEntries = paste0((GenomeInfoDb::seqnames(gr)[seq_outOfBound] %>% as.character())[index], ":", start(gr)[seq_outOfBound][index] , "-", end(gr)[seq_outOfBound][index], collapse = ",")
if (stopIfError ) {
futile.logger::flog.error(paste0(length(seq_outOfBound), " sequences are outside of the chromosome boundaries (e.g., ", annotation_faultyEntries, "). This should not happen and may indicate a wrong genome assembly version. Check the validity of the input data and the parameters of the script. Are these really ", genomeAssembly, " coordinates?"))
stop()
} else {
futile.logger::flog.warn(paste0(length(seq_outOfBound), " sequences are outside of the chromosome boundaries (e.g., ", annotation_faultyEntries, "). This should not happen and may indicate a wrong genome assembly version. Check the validity of the input data and the parameters of the script. Are these really ", genomeAssembly, " coordinates?"))
}
message = paste0(length(seq_outOfBound), " sequences are outside of the chromosome boundaries (e.g., ", annotation_faultyEntries, "). This should not happen and may indicate either a wrong genome assembly version or that coordinates are not 0-based (see the Documentation). Check the validity of the input data and the parameters of the script. Are these really ", genomeAssembly, " coordinates?")
.checkAndLogWarningsAndErrors(NULL, message, isWarning = !stopIfError)
}
......
......@@ -985,7 +985,7 @@ plotDiagnosticPlots_peakGene <- function(GRN,
GRN = .addFunctionLogToObject(GRN)
# For compatibility reasons, re-crete the genes and peaks annotation if not present in the object
# For compatibility reasons, re-create the genes and peaks annotation if not present in the object
if (! "peak.annotation" %in% colnames(GRN@annotation$consensusPeaks)) {
GRN = .populatePeakAnnotation(GRN)
}
......@@ -1138,6 +1138,11 @@ plotDiagnosticPlots_peakGene <- function(GRN,
nCur = length(xlabels_peakGene_r.class)
xlabels_peakGene_r.class[setdiff(seq_len(nCur), c(1, floor(nCur/2), nCur))] <- ""
# For the last plot, which is wider, we label a few more
xlabels_peakGene_r.class2 = levels(peakGeneCorrelations.all$peak_gene.r.class)
nCur = length(xlabels_peakGene_r.class2)
xlabels_peakGene_r.class2[setdiff(seq_len(nCur), c(1, floor(nCur/4), floor(nCur/2), floor(nCur/4*3), nCur))] <- ""
xlabels_peakGene_praw.class = levels(peakGeneCorrelations.all$peak_gene.p.raw.class)
nCur = length(xlabels_peakGene_praw.class)
xlabels_peakGene_praw.class[setdiff(seq_len(nCur), c(1, floor(nCur/2), nCur))] <- ""
......@@ -1246,7 +1251,9 @@ plotDiagnosticPlots_peakGene <- function(GRN,
geom_bar(stat = "identity", position="dodge", na.rm = TRUE, width = 0.5) +
geom_hline(yintercept = 1, linetype = "dotted") +
xlab(xlabel) + ylab("Ratio") +
scale_fill_manual("Class", values = c(r_pos_class, dist_class), labels = c("real", "permuted", "r+ (r>0)", "r- (r<=0)")) + # labels vector can be kind of manually specified here because the levels were previosly defined in a certain order
scale_fill_manual("Class", values = c(dist_class, r_pos_class),
labels = c("real", "permuted", "r+ (r>0)", "r- (r<=0)"),
) + # labels vector can be kind of manually specified here because the levels were previosly defined in a certain order
scale_x_discrete(labels = xlabels_peakGene_praw.class) +
theme_bw() +
#theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 8), strip.background = element_blank(), strip.placement = "outside", axis.title.y = element_blank()) +
......@@ -1276,7 +1283,7 @@ plotDiagnosticPlots_peakGene <- function(GRN,
geom_line(aes(peak_gene.r.class, nnorm, group = class, color= class), stat = "identity") +
scale_fill_manual("Group", labels = names(dist_class), values = dist_class) +
scale_color_manual("Group", labels = names(dist_class), values = dist_class) +
scale_x_discrete(labels = xlabels_peakGene_r.class, drop = FALSE) +
scale_x_discrete(labels = xlabels_peakGene_r.class2, drop = FALSE) +
theme_bw() + theme(legend.position = "none") +
xlab(xlabel) + ylab("Abundance") +
theme_main +
......@@ -1312,10 +1319,15 @@ plotDiagnosticPlots_peakGene <- function(GRN,
xlabel = paste0("Correlation raw\np-value (binned)")
mainTitle = paste0("Summary QC (TF: ", TFCur, ", gene type: ", paste0(geneTypesSelected, collapse = "+"), ", ", .prettyNum(range), " bp promoter range)")
allVars = c("peak.GC.class", "peak.annotation", "peak.width", "peak.mean","peak.median",
allVars = c("peak.GC.class", "peak.width", "peak.mean","peak.median",
"peak.CV", "gene.median", "gene.mean", "gene.CV", "peak.gene.combined.CV")
# If ChIPseeker is not installed, remove peak.annotation from it
if ("peak.annotation" %in% colnames(peakGeneCorrelations.all)) {
allVars = c(allVars, "peak.annotation")
}
for (varCur in allVars) {
#next
# Save memory and prune the table and add only the variable we need here
......@@ -2599,7 +2611,7 @@ plotTFEnrichment <- function(GRN, rankType = "degree", n = 0.1, TF.names = NULL,
}
# plot the comparative heatmap:
for (ontologyCur in names(purrr::transpose(purrr::transpose(GRN@stats$Enrichment[["byTF"]])$results))){
for (ontology in names(purrr::transpose(purrr::transpose(GRN@stats$Enrichment[["byTF"]])$results))){
enrichmentData = purrr::transpose(purrr::transpose(GRN@stats$Enrichment[["byTF"]])$results)[[ontologyCur]][TFset]
......
......@@ -5,11 +5,7 @@
"Welcome to the ", utils::packageName(), " package and thank you for using our software. This is ", utils::packageName(), " version ", utils::packageVersion(utils::packageName()),".\n",
"All project-related information, guidance, help, documentation and ways to contact us can be found here: https://grp-zaugg.embl-community.io/GRaNIE\n",
"You may also check the R help\n"
"All project-related information, guidance, help, documentation and ways to contact us can be found in the R help or here:\nhttps://grp-zaugg.embl-community.io/GRaNIE\n"
)
packageStartupMessage(message)
......
......@@ -4,6 +4,13 @@ The companion packages *GRaNIE* (**G**ene **R**egul**a**tory **N**etwork **I**nf
This page describes *GRaNIE*. For *GRaNPA*, please visit [this page](https://grp-zaugg.embl-community.io/GRaNPA).
**Please use the following citation:**
GRaNIE and GRaNPA: Inference and evaluation of enhancer-mediated gene regulatory networks applied to study macrophages. Aryan Kamal, Christian Arnold, Annique Claringbould, Rim Moussa, Neha Daga, Daria Nogina, Maksim Kholmatov, Nila Servaas, Sophia Mueller-Dott, Armando Reyes-Palomares, Giovanni Palla, Olga Sigalova, Daria Bunina, Caroline Pabst, Judith B. Zaugg. bioRxiv 2021.12.18.473290; doi: https://doi.org/10.1101/2021.12.18.473290
### Summary
*Towards a data-driven cell-type specific regulatory network including enhancers*
......
......@@ -17,10 +17,10 @@ navbar:
desc: Bla
href: articles/quickStart.html
navbar: Test
- text: Introduction
desc: Learn what the GRaNIE package is and what you can use it for
navbar: Intro
href: articles/Introduction.html
- text: Package Details
desc: Learn what the GRaNIE package is and what you can use it for, including all methodological details
navbar: Methods
href: articles/packageDetails.html
- text: Workflow example
desc: Learn how to use the GRaNIE package with a full workflow example
href: articles/workflow.html
......@@ -36,11 +36,11 @@ articles:
navbar: Getting started
contents:
- quickStart
- title: Introduction
desc: Learn what the GRaNIE package is and what you can use it for
navbar: Introductory Vignette
- title: Package Details
desc: Learn what the GRaNIE package is and what you can use it for, including all methodological details
navbar: Package Details
contents:
- Introduction
- packageDetails
- title: Workflow example
desc: Learn how to use the GRaNIE package with a full workflow example
navbar: Workflow Vignette
......
<!-- Generated by pkgdown: do not edit by hand -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!-- Generated by pkgdown: do not edit by hand --><html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Page not found (404) • GRaNIE</title>
<!-- jquery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<!-- Bootstrap -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/flatly/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script>
<!-- bootstrap-toc -->
<link rel="stylesheet" href="bootstrap-toc.css">
<script src="bootstrap-toc.js"></script>
<!-- Font Awesome icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" />
<!-- clipboard.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script>
<!-- headroom.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script>
<!-- pkgdown -->
<link href="pkgdown.css" rel="stylesheet">
<script src="pkgdown.js"></script>
<meta property="og:title" content="Page not found (404)" />
<!-- mathjax -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script>
<!--[if lt IE 9]>
<title>Page not found (404) • GRaNIEdev</title>
<!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><!-- Bootstrap --><link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/flatly/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="bootstrap-toc.css">
<script src="bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous">
<!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="pkgdown.css" rel="stylesheet">
<script src="pkgdown.js"></script><meta property="og:title" content="Page not found (404)">
<!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-530L9SXFM1"></script>
<script>
<![endif]--><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=G-530L9SXFM1"></script><script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-530L9SXFM1');
</script>
</head>
<body data-spy="scroll" data-target="#toc">
</head>
<body data-spy="scroll" data-target="#toc">
<div class="container template-title-body">
<header>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
......@@ -80,14 +37,14 @@
<span class="icon-bar"></span>
</button>
<span class="navbar-brand">
<a class="navbar-link" href="index.html">GRaNIE</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">0.14.4</span>
<a class="navbar-link" href="index.html">GRaNIEdev</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="">0.14.4</span>
</span>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>
<li>
<a href="index.html"></a>
</li>
<li>
......@@ -100,11 +57,11 @@
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<li>
<a href="articles/quickStart.html">Getting Started</a>
</li>
<li>
<a href="articles/Introduction.html">Introduction</a>
<a href="articles/packageDetails.html">Package Details</a>
</li>
<li>
<a href="articles/workflow.html">Workflow example</a>
......@@ -118,19 +75,17 @@
<a href="news/index.html">Changelog &amp; News</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
</ul>
</div><!--/.nav-collapse -->
</div><!--/.container -->
</div><!--/.navbar -->
<ul class="nav navbar-nav navbar-right"></ul>
</div>
<!--/.nav-collapse -->
</div>
<!--/.container -->
</div>
<!--/.navbar -->
</header>
<div class="row">
</header><div class="row">
<div class="contents col-md-9">
<div class="page-header">
<h1>Page not found (404)</h1>
......@@ -141,31 +96,31 @@ Content not found. Please use links in the navbar.
</div>
<div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar">
<nav id="toc" data-toggle="toc" class="sticky-top">
<h2 data-toc-skip>Contents</h2>
<nav id="toc" data-toggle="toc" class="sticky-top"><h2 data-toc-skip>Contents</h2>
</nav>
</div>
</div>
</div>
<footer>
<div class="copyright">
<p>Developed by Christian Arnold, Judith Zaugg, Rim Moussa.</p>
<footer><div class="copyright">
<p></p>
<p>Developed by Christian Arnold, Judith Zaugg, Rim Moussa.</p>
</div>
<div class="pkgdown">
<p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.6.1.</p>
<p></p>
<p>Site built with <a href="https://pkgdown.r-lib.org/" class="external-link">pkgdown</a> 2.0.2.</p>
</div>
</footer>
</div>
</div>
</body>
</html>
This diff is collapsed.
// Pandoc 2.9 adds attributes on both header and div. We remove the former (to
// be compatible with the behavior of Pandoc < 2.8).
document.addEventListener('DOMContentLoaded', function(e) {
var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");
var i, h, a;
for (i = 0; i < hs.length; i++) {
h = hs[i];
if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
a = h.attributes;
while (a.length > 0) h.removeAttribute(a[0].name);
}
});
<!-- Generated by pkgdown: do not edit by hand -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Articles • GRaNIE</title>
<!-- jquery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<!-- Bootstrap -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/flatly/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script>
<!-- bootstrap-toc -->
<link rel="stylesheet" href="../bootstrap-toc.css">
<script src="../bootstrap-toc.js"></script>
<!-- Font Awesome icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" />
<!-- clipboard.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script>
<!-- headroom.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script>
<!-- pkgdown -->
<link href="../pkgdown.css" rel="stylesheet">
<script src="../pkgdown.js"></script>
<meta property="og:title" content="Articles" />
<!-- mathjax -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script>
<!--[if lt IE 9]>
<!-- Generated by pkgdown: do not edit by hand --><html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Articles • GRaNIEdev</title><!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><!-- Bootstrap --><link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/3.4.0/flatly/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous"><script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="../bootstrap-toc.css"><script src="../bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous"><!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet"><script src="../pkgdown.js"></script><meta property="og:title" content="Articles"><!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-530L9SXFM1"></script>
<script>
<![endif]--><!-- Global site tag (gtag.js) - Google Analytics --><script async src="https://www.googletagmanager.com/gtag/js?id=G-530L9SXFM1"></script><script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-530L9SXFM1');
</script>
</script></head><body data-spy="scroll" data-target="#toc">
</head>
<body data-spy="scroll" data-target="#toc">
<div class="container template-article-index">
<header>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<header><div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false">
......@@ -80,14 +22,13 @@
<span class="icon-bar"></span>
</button>
<span class="navbar-brand">
<a class="navbar-link" href="../index.html">GRaNIE</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">0.14.4</span>
<a class="navbar-link" href="../index.html">GRaNIEdev</a>
<span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="">0.14.4</span>
</span>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>
<ul class="nav navbar-nav"><li>
<a href="../index.html"></a>
</li>