diff --git a/R/demo.R b/R/demo.R index 2fda006..0b61d17 100644 --- a/R/demo.R +++ b/R/demo.R @@ -26,11 +26,7 @@ demo_sc_data <- function() { #' @examples geneinfo_demo <- demo_geneinfo() demo_geneinfo <- function() { - gene1 <- c("A1BG", "A1BG", "A2MP1", "Aco1", "Alb1") - gene2 <- c("A1B", "ABG", "A2MP", "Aco", "Alb") - species <- c("Human", "Human", "Human", "Mouse", "Rat") - geneinfo_demo <- data.frame(symbol = gene1, synonyms = gene2, species = species, stringsAsFactors = FALSE) - return(geneinfo_demo) + return(head(geneinfo)) } #' @title Demo data of mir_info @@ -41,12 +37,7 @@ demo_geneinfo <- function() { #' @examples mir_info_demo <- demo_mir_info() demo_mir_info <- function() { - miRNA <- c("hsa-miR-1", "hsa-miR-1", "hsa-miR-1", "hsa-miR-1", "mmu-miR-105", "rno-miR-106b") - miRNA_mature <- c("hsa-miR-1-5p", "hsa-miR-1-5p", "hsa-miR-1-3p", "hsa-miR-1-3p", "mmu-miR-105", "rno-miR-106b-5p") - gene <- c("MIR1-1", "MIR1-2","MIR1-1", "MIR1-2", "Mir105", "Mir106b") - species <- c("Human", "Human", "Human", "Human", "Mouse", "Rat") - mir_info_demo <- data.frame(miRNA = miRNA, miRNA_mature = miRNA_mature, gene = gene, species = species, stringsAsFactors = FALSE) - return(mir_info_demo) + return(head(mir_info)) } #' @title Demo data of mir2tar @@ -57,10 +48,5 @@ demo_mir_info <- function() { #' @examples mir2tar_demo <- demo_mir2tar() demo_mir2tar <- function() { - miRNA <- c("hsa-miR-1", "hsa-miR-1", "mmu-miR-105", "rno-miR-106b") - miRNA_mature <- c("hsa-miR-1-5p", "hsa-miR-1-3p", "mmu-miR-105", "rno-miR-106b-5p") - target_gene <- c("BDNF", "RBM28", "Abl2", "Mcl1") - species <- c("Human", "Human", "Mouse", "Rat") - mir2tar_demo <- data.frame(miRNA = miRNA, miRNA_mature = miRNA_mature, target_gene = target_gene, species = species, stringsAsFactors = FALSE) - return(mir2tar_demo) + return(head(mir2tar)) } diff --git a/R/methods.R b/R/methods.R index e26d82a..01f1b4c 100644 --- a/R/methods.R +++ b/R/methods.R @@ -135,7 +135,7 @@ find_hvtg <- function(object, pvalue = 0.05, log2fc = 0.5, min_cell_num = 10, nf #' @description Find expressed miRNAs among all cells and generate background distribution for permutation test #' @param object miRTalk object after \code{\link{create_miRTalk}} #' @param mir_info A data.frame of the system data containing information of EV-derived miRNA of \code{'Human'}, \code{'Mouse'} or \code{'Rat'}. see \code{\link{demo_mir_info}} -#' @param mir2tar A data.frame of the system data containing relationship of miRNA and its target genes for \code{'Human'}, \code{'Mouse'} or \code{'Rat'}. see \code{\link{demo_mir2tar}} +#' @param mir2tar A data.frame of the system data containing miRNA-target interactions for \code{'Human'}, \code{'Mouse'} or \code{'Rat'}. see \code{\link{demo_mir2tar}} #' @param min_percent Min percent of expressed cells for target genes of miRNA. Default is \code{0.05} #' @param database Which database of miRNA-target interactions to use, "miRTarBase" and/or "TarBase". Default is the "miRTarBase". It can also be "TarBase" or c("miRTarBase", "TarBase") #' @param resolution Correct to precursor or mature miRNAs. Use 'precursor' or 'mature'. Default is \code{'mature'} @@ -253,7 +253,6 @@ find_miRNA <- function(object, mir_info, mir2tar, min_percent = 0.05, database = #' @param min_percent Min percent of expressed cells for target genes of miRNA. Default is \code{0.05} #' @param pvalue Cutoff of p value. Default is \code{0.05} #' @param if_filter_miRNA Whether to filter the significantly highly expressed miRNAs. Default is FALSE -#' @param if_consider_condition Whether to infer for each condition. Default is TRUE #' @param if_doParallel Use doParallel. Default is TRUE #' @param use_n_cores Number of CPU cores to use. Default is 4 #' @return miRTalk object containing the inferred cell-cell communications mediated by EV-derived miRNAs @@ -262,7 +261,7 @@ find_miRNA <- function(object, mir_info, mir2tar, min_percent = 0.05, database = #' @importFrom correlation correlation #' @export -find_miRTalk <- function(object, min_cell_num = 10, min_percent = 0.05, pvalue = 0.05, per_num = 1000, if_filter_miRNA = FALSE, if_consider_condition = TRUE, if_doParallel = TRUE, use_n_cores = 4) { +find_miRTalk <- function(object, min_cell_num = 10, min_percent = 0.05, pvalue = 0.05, per_num = 1000, if_filter_miRNA = FALSE, if_doParallel = TRUE, use_n_cores = 4) { # check input if (!is(object, "miRTalk")) { stop("Invalid class for object: must be 'miRTalk'!") diff --git a/R/plot.R b/R/plot.R index 1fb9f6a..32a6d55 100644 --- a/R/plot.R +++ b/R/plot.R @@ -928,7 +928,6 @@ plot_miR_bubble <- function(object, condition = NULL, celltype = NULL, miRNA = N #' @param miRNA which miRNAs to use. Default is to plot all inferred miRNAs in senders. #' @param edge_color Colors for the edges from the sender cell type #' @param edge_type Types for the edges from the sender cell type. Default is \code{"circle"}. \code{"big.arrow"} for big arrow, "triangle" for triangle, "ellipse" for ellipse, "curved" for curved. Details see \code{\link[circlize]{chordDiagram}} -#' @param show_type which type of miRNAs to show, \code{"prob"} or \code{"score"} for inferred miRNAs-target interactions. Default is \code{"prob"} #' @param text_size Size of text labels. Default is \code{0.5} #' @param y_scale y_scale to adjust the text. Default is \code{1} #' @param ... parameters pass to \code{\link[circlize]{chordDiagram}}, e.g., link.arr.width, link.arr.length, link.arr.col diff --git a/README.md b/README.md index 0362498..51096d5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # miRTalk -[![R-CMD-check](https://img.shields.io/badge/R--CMD--check-passing-brightgreen?logo=github)](https://github.com/multitalk/miRTalk/actions/runs/5220129987) [![miRTalkDB](https://img.shields.io/badge/miRTalkDB-v1.0-yellow)](https://github.com/multitalk/miRTalk/tree/main/data) [![miRTalk-tutorial](https://img.shields.io/badge/miRTalk-tutorial-blue)](https://raw.githack.com/multitalk/miRTalk/main/vignettes/tutorial.html) +[![R-CMD-check](https://img.shields.io/badge/R--CMD--check-passing-brightgreen?logo=github)](https://github.com/multitalk/miRTalk/actions) [![miRTalkDB](https://img.shields.io/badge/miRTalkDB-v1.0-yellow)](https://github.com/multitalk/miRTalk/tree/main/data) [![miRTalk-tutorial](https://img.shields.io/badge/miRTalk-tutorial-blue)](https://raw.githack.com/multitalk/miRTalk/main/vignettes/tutorial.html) ### Extracellular vesicle-derived miRNA-mediated cell-cell communication inference for single-cell transcriptomic data diff --git a/man/find_miRNA.Rd b/man/find_miRNA.Rd index 336454f..a0ad366 100644 --- a/man/find_miRNA.Rd +++ b/man/find_miRNA.Rd @@ -24,7 +24,7 @@ find_miRNA( \item{mir_info}{A data.frame of the system data containing information of EV-derived miRNA of \code{'Human'}, \code{'Mouse'} or \code{'Rat'}. see \code{\link{demo_mir_info}}} -\item{mir2tar}{A data.frame of the system data containing relationship of miRNA and its target genes for \code{'Human'}, \code{'Mouse'} or \code{'Rat'}. see \code{\link{demo_mir2tar}}} +\item{mir2tar}{A data.frame of the system data containing miRNA-target interactions for \code{'Human'}, \code{'Mouse'} or \code{'Rat'}. see \code{\link{demo_mir2tar}}} \item{min_percent}{Min percent of expressed cells for target genes of miRNA. Default is \code{0.05}} diff --git a/man/find_miRTalk.Rd b/man/find_miRTalk.Rd index b6198ae..e008427 100644 --- a/man/find_miRTalk.Rd +++ b/man/find_miRTalk.Rd @@ -11,7 +11,6 @@ find_miRTalk( pvalue = 0.05, per_num = 1000, if_filter_miRNA = FALSE, - if_consider_condition = TRUE, if_doParallel = TRUE, use_n_cores = 4 ) @@ -27,8 +26,6 @@ find_miRTalk( \item{if_filter_miRNA}{Whether to filter the significantly highly expressed miRNAs. Default is FALSE} -\item{if_consider_condition}{Whether to infer for each condition. Default is TRUE} - \item{if_doParallel}{Use doParallel. Default is TRUE} \item{use_n_cores}{Number of CPU cores to use. Default is 4} diff --git a/man/plot_miR2tar_chord.Rd b/man/plot_miR2tar_chord.Rd index f2c2911..0030769 100644 --- a/man/plot_miR2tar_chord.Rd +++ b/man/plot_miR2tar_chord.Rd @@ -40,8 +40,6 @@ plot_miR2tar_chord( \item{y_scale}{y_scale to adjust the text. Default is \code{1}} \item{...}{parameters pass to \code{\link[circlize]{chordDiagram}}, e.g., link.arr.width, link.arr.length, link.arr.col} - -\item{show_type}{which type of miRNAs to show, \code{"prob"} or \code{"score"} for inferred miRNAs-target interactions. Default is \code{"prob"}} } \value{ Chord plot of EV-derived miRNAs and target genes diff --git a/vignettes/tutorial.html b/vignettes/tutorial.html index 41faff4..f7979cc 100644 --- a/vignettes/tutorial.html +++ b/vignettes/tutorial.html @@ -7,7 +7,7 @@ - + miRTalk tutorial @@ -37,18 +37,6 @@ */ if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); - +"use strict";var n,i="";e.exports=function(t,e){if("string"!=typeof t)throw new TypeError("expected a string");if(1===e)return t;if(2===e)return t+t;var r=t.length*e;if(n!==t||void 0===n)n=t,i="";else if(i.length>=r)return i.substr(0,r);for(;r>i.length&&e>1;)1&e&&(i+=t),e>>=1,t+=t;return i=(i+=t).substr(0,r)}},{}],278:[function(t,e,r){(function(t){(function(){e.exports=t.performance&&t.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}}).call(this)}).call(this,void 0!==n?n:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],279:[function(t,e,r){"use strict";e.exports=function(t){for(var e=t.length,r=t[t.length-1],n=e,i=e-2;i>=0;--i){var a=r,o=t[i];(l=o-((r=a+o)-a))&&(t[--n]=r,r=l)}var s=0;for(i=n;i0){if(a<=0)return o;n=i+a}else{if(!(i<0))return o;if(a>=0)return o;n=-(i+a)}var s=33306690738754716e-32*n;return o>=s||o<=-s?o:f(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],c=r[1]-n[1],u=t[2]-n[2],f=e[2]-n[2],p=r[2]-n[2],d=a*c,m=o*l,g=o*s,v=i*c,y=i*l,x=a*s,b=u*(d-m)+f*(g-v)+p*(y-x),_=7771561172376103e-31*((Math.abs(d)+Math.abs(m))*Math.abs(u)+(Math.abs(g)+Math.abs(v))*Math.abs(f)+(Math.abs(y)+Math.abs(x))*Math.abs(p));return b>_||-b>_?b:h(t,e,r,n)}];function d(t){var e=p[t.length];return e||(e=p[t.length]=u(t.length)),e.apply(void 0,t)}function m(t,e,r,n,i,a,o){return function(e,r,s,l,c){switch(arguments.length){case 0:case 1:return 0;case 2:return n(e,r);case 3:return i(e,r,s);case 4:return a(e,r,s,l);case 5:return o(e,r,s,l,c)}for(var u=new Array(arguments.length),f=0;f0&&o>0||a<0&&o<0)return!1;var s=n(r,t,e),l=n(i,t,e);if(s>0&&l>0||s<0&&l<0)return!1;if(0===a&&0===o&&0===s&&0===l)return function(t,e,r,n){for(var i=0;i<2;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),c=r[i],u=n[i],f=Math.min(c,u);if(Math.max(c,u)=n?(i=f,(l+=1)=n?(i=f,(l+=1)>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,s=a(t[o],e);s<=0?(0===s&&(i=o),r=o+1):s>0&&(n=o-1)}return i}function u(t,e){for(var r=new Array(t.length),i=0,o=r.length;i=t.length||0!==a(t[g],s)););}return r}function f(t,e){if(e<0)return[];for(var r=[],i=(1<>>u&1&&c.push(i[u]);e.push(c)}return s(e)},r.skeleton=f,r.boundary=function(t){for(var e=[],r=0,n=t.length;r>1:(t>>1)-1}function x(t){for(var e=v(t);;){var r=e,n=2*t+1,i=2*(t+1),a=t;if(n0;){var r=y(t);if(r>=0)if(e0){var t=k[0];return g(0,M-1),M-=1,x(0),t}return-1}function w(t,e){var r=k[t];return c[r]===e?t:(c[r]=-1/0,b(t),_(),c[r]=e,b((M+=1)-1))}function T(t){if(!u[t]){u[t]=!0;var e=s[t],r=l[t];s[r]>=0&&(s[r]=e),l[e]>=0&&(l[e]=r),A[e]>=0&&w(A[e],m(e)),A[r]>=0&&w(A[r],m(r))}}var k=[],A=new Array(a);for(f=0;f>1;f>=0;--f)x(f);for(;;){var S=_();if(S<0||c[S]>r)break;T(S)}var E=[];for(f=0;f=0&&r>=0&&e!==r){var n=A[e],i=A[r];n!==i&&C.push([n,i])}})),i.unique(i.normalize(C)),{positions:E,edges:C}};var n=t("robust-orientation"),i=t("simplicial-complex")},{"robust-orientation":284,"simplicial-complex":295}],298:[function(t,e,r){"use strict";e.exports=function(t,e){var r,a,o,s;if(e[0][0]e[1][0]))return i(e,t);r=e[1],a=e[0]}if(t[0][0]t[1][0]))return-i(t,e);o=t[1],s=t[0]}var l=n(r,a,s),c=n(r,a,o);if(l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;if(l=n(s,o,a),c=n(s,o,r),l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;return a[0]-s[0]};var n=t("robust-orientation");function i(t,e){var r,i,a,o;if(e[0][0]e[1][0])){var s=Math.min(t[0][1],t[1][1]),l=Math.max(t[0][1],t[1][1]),c=Math.min(e[0][1],e[1][1]),u=Math.max(e[0][1],e[1][1]);return lu?s-u:l-u}r=e[1],i=e[0]}t[0][1]0)if(e[0]!==o[1][0])r=t,t=t.right;else{if(l=c(t.right,e))return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l;if(l=c(t.right,e))return l;t=t.left}}return r}function u(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function f(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}s.prototype.castUp=function(t){var e=n.le(this.coordinates,t[0]);if(e<0)return-1;this.slabs[e];var r=c(this.slabs[e],t),i=-1;if(r&&(i=r.value),this.coordinates[e]===t[0]){var s=null;if(r&&(s=r.key),e>0){var u=c(this.slabs[e-1],t);u&&(s?o(u.key,s)>0&&(s=u.key,i=u.value):(i=u.value,s=u.key))}var f=this.horizontal[e];if(f.length>0){var h=n.ge(f,t[1],l);if(h=f.length)return i;p=f[h]}}if(p.start)if(s){var d=a(s[0],s[1],[t[0],p.y]);s[0][0]>s[1][0]&&(d=-d),d>0&&(i=p.index)}else i=p.index;else p.y!==t[1]&&(i=p.index)}}}return i}},{"./lib/order-segments":298,"binary-search-bounds":31,"functional-red-black-tree":69,"robust-orientation":284}],300:[function(t,e,r){"use strict";var n=t("robust-dot-product"),i=t("robust-sum");function a(t,e){var r=i(n(t,e),[e[e.length-1]]);return r[r.length-1]}function o(t,e,r,n){var i=-e/(n-e);i<0?i=0:i>1&&(i=1);for(var a=1-i,o=t.length,s=new Array(o),l=0;l0||i>0&&u<0){var f=o(s,u,l,i);r.push(f),n.push(f.slice())}u<0?n.push(l.slice()):u>0?r.push(l.slice()):(r.push(l.slice()),n.push(l.slice())),i=u}return{positive:r,negative:n}},e.exports.positive=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c>=0&&r.push(s.slice()),n=c}return r},e.exports.negative=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c<=0&&r.push(s.slice()),n=c}return r}},{"robust-dot-product":281,"robust-sum":289}],301:[function(t,e,r){!function(){"use strict";var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function e(t){return i(o(t),arguments)}function n(t,r){return e.apply(null,[t].concat(r||[]))}function i(r,n){var i,a,o,s,l,c,u,f,h,p=1,d=r.length,m="";for(a=0;a=0),s.type){case"b":i=parseInt(i,10).toString(2);break;case"c":i=String.fromCharCode(parseInt(i,10));break;case"d":case"i":i=parseInt(i,10);break;case"j":i=JSON.stringify(i,null,s.width?parseInt(s.width):0);break;case"e":i=s.precision?parseFloat(i).toExponential(s.precision):parseFloat(i).toExponential();break;case"f":i=s.precision?parseFloat(i).toFixed(s.precision):parseFloat(i);break;case"g":i=s.precision?String(Number(i.toPrecision(s.precision))):parseFloat(i);break;case"o":i=(parseInt(i,10)>>>0).toString(8);break;case"s":i=String(i),i=s.precision?i.substring(0,s.precision):i;break;case"t":i=String(!!i),i=s.precision?i.substring(0,s.precision):i;break;case"T":i=Object.prototype.toString.call(i).slice(8,-1).toLowerCase(),i=s.precision?i.substring(0,s.precision):i;break;case"u":i=parseInt(i,10)>>>0;break;case"v":i=i.valueOf(),i=s.precision?i.substring(0,s.precision):i;break;case"x":i=(parseInt(i,10)>>>0).toString(16);break;case"X":i=(parseInt(i,10)>>>0).toString(16).toUpperCase()}t.json.test(s.type)?m+=i:(!t.number.test(s.type)||f&&!s.sign?h="":(h=f?"+":"-",i=i.toString().replace(t.sign,"")),c=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",u=s.width-(h+i).length,l=s.width&&u>0?c.repeat(u):"",m+=s.align?h+i+l:"0"===c?h+l+i:l+h+i)}return m}var a=Object.create(null);function o(e){if(a[e])return a[e];for(var r,n=e,i=[],o=0;n;){if(null!==(r=t.text.exec(n)))i.push(r[0]);else if(null!==(r=t.modulo.exec(n)))i.push("%");else{if(null===(r=t.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(r[2]){o|=1;var s=[],l=r[2],c=[];if(null===(c=t.key.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(s.push(c[1]);""!==(l=l.substring(c[0].length));)if(null!==(c=t.key_access.exec(l)))s.push(c[1]);else{if(null===(c=t.index_access.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");s.push(c[1])}r[2]=s}else o|=2;if(3===o)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");i.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}n=n.substring(r[0].length)}return a[e]=i}void 0!==r&&(r.sprintf=e,r.vsprintf=n),"undefined"!=typeof window&&(window.sprintf=e,window.vsprintf=n)}()},{}],302:[function(t,e,r){"use strict";e.exports=function(t,e){if(t.dimension<=0)return{positions:[],cells:[]};if(1===t.dimension)return function(t,e){for(var r=i(t,e),n=r.length,a=new Array(n),o=new Array(n),s=0;sn|0},vertex:function(t,e,r,n,i,a,o,s,l,c,u,f,h){var p=(o<<0)+(s<<1)+(l<<2)+(c<<3)|0;if(0!==p&&15!==p)switch(p){case 0:u.push([t-.5,e-.5]);break;case 1:u.push([t-.25-.25*(n+r-2*h)/(r-n),e-.25-.25*(i+r-2*h)/(r-i)]);break;case 2:u.push([t-.75-.25*(-n-r+2*h)/(n-r),e-.25-.25*(a+n-2*h)/(n-a)]);break;case 3:u.push([t-.5,e-.5-.5*(i+r+a+n-4*h)/(r-i+n-a)]);break;case 4:u.push([t-.25-.25*(a+i-2*h)/(i-a),e-.75-.25*(-i-r+2*h)/(i-r)]);break;case 5:u.push([t-.5-.5*(n+r+a+i-4*h)/(r-n+i-a),e-.5]);break;case 6:u.push([t-.5-.25*(-n-r+a+i)/(n-r+i-a),e-.5-.25*(-i-r+a+n)/(i-r+n-a)]);break;case 7:u.push([t-.75-.25*(a+i-2*h)/(i-a),e-.75-.25*(a+n-2*h)/(n-a)]);break;case 8:u.push([t-.75-.25*(-a-i+2*h)/(a-i),e-.75-.25*(-a-n+2*h)/(a-n)]);break;case 9:u.push([t-.5-.25*(n+r+-a-i)/(r-n+a-i),e-.5-.25*(i+r+-a-n)/(r-i+a-n)]);break;case 10:u.push([t-.5-.5*(-n-r-a-i+4*h)/(n-r+a-i),e-.5]);break;case 11:u.push([t-.25-.25*(-a-i+2*h)/(a-i),e-.75-.25*(i+r-2*h)/(r-i)]);break;case 12:u.push([t-.5,e-.5-.5*(-i-r-a-n+4*h)/(i-r+a-n)]);break;case 13:u.push([t-.75-.25*(n+r-2*h)/(r-n),e-.25-.25*(-a-n+2*h)/(a-n)]);break;case 14:u.push([t-.25-.25*(-n-r+2*h)/(n-r),e-.25-.25*(-i-r+2*h)/(i-r)]);break;case 15:u.push([t-.5,e-.5])}},cell:function(t,e,r,n,i,a,o,s,l){i?s.push([t,e]):s.push([e,t])}});return function(t,e){var r=[],i=[];return n(t,r,i,e),{positions:r,cells:i}}}};var o={}},{"ndarray-extract-contour":251,"zero-crossings":318}],303:[function(t,e,r){(function(r){(function(){"use strict";e.exports=function t(e,r,i){i=i||{};var o=a[e];o||(o=a[e]={" ":{data:new Float32Array(0),shape:.2}});var s=o[r];if(!s)if(r.length<=1||!/\d/.test(r))s=o[r]=function(t){for(var e=t.cells,r=t.positions,n=new Float32Array(6*e.length),i=0,a=0,o=0;o0&&(f+=.02);var p=new Float32Array(u),d=0,m=-.5*f;for(h=0;hMath.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,l=0;l<3;++l)a+=t[l]*t[l],o+=i[l]*t[l];for(l=0;l<3;++l)i[l]-=o/a*t[l];return s(i,i),i}function h(t,e,r,i,a,o,s,l){this.center=n(r),this.up=n(i),this.right=n(a),this.radius=n([o]),this.angle=n([s,l]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var c=0;c<16;++c)this.computedMatrix[c]=.5;this.recalcMatrix(0)}var p=h.prototype;p.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},p.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},p.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,n=0,i=0,a=0;a<3;++a)i+=e[a]*r[a],n+=e[a]*e[a];var l=Math.sqrt(n),u=0;for(a=0;a<3;++a)r[a]-=e[a]*i/n,u+=r[a]*r[a],e[a]/=l;var f=Math.sqrt(u);for(a=0;a<3;++a)r[a]/=f;var h=this.computedToward;o(h,e,r),s(h,h);var p=Math.exp(this.computedRadius[0]),d=this.computedAngle[0],m=this.computedAngle[1],g=Math.cos(d),v=Math.sin(d),y=Math.cos(m),x=Math.sin(m),b=this.computedCenter,_=g*y,w=v*y,T=x,k=-g*x,A=-v*x,M=y,S=this.computedEye,E=this.computedMatrix;for(a=0;a<3;++a){var L=_*r[a]+w*h[a]+T*e[a];E[4*a+1]=k*r[a]+A*h[a]+M*e[a],E[4*a+2]=L,E[4*a+3]=0}var C=E[1],P=E[5],I=E[9],O=E[2],z=E[6],D=E[10],R=P*D-I*z,F=I*O-C*D,B=C*z-P*O,N=c(R,F,B);R/=N,F/=N,B/=N,E[0]=R,E[4]=F,E[8]=B;for(a=0;a<3;++a)S[a]=b[a]+E[2+4*a]*p;for(a=0;a<3;++a){u=0;for(var j=0;j<3;++j)u+=E[a+4*j]*S[j];E[12+a]=-u}E[15]=1},p.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r};var d=[0,0,0];p.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;d[0]=i[2],d[1]=i[6],d[2]=i[10];for(var o=this.computedUp,s=this.computedRight,l=this.computedToward,c=0;c<3;++c)i[4*c]=o[c],i[4*c+1]=s[c],i[4*c+2]=l[c];a(i,i,n,d);for(c=0;c<3;++c)o[c]=i[4*c],s[c]=i[4*c+1];this.up.set(t,o[0],o[1],o[2]),this.right.set(t,s[0],s[1],s[2])}},p.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=(Math.exp(this.computedRadius[0]),i[1]),o=i[5],s=i[9],l=c(a,o,s);a/=l,o/=l,s/=l;var u=i[0],f=i[4],h=i[8],p=u*a+f*o+h*s,d=c(u-=a*p,f-=o*p,h-=s*p),m=(u/=d)*e+a*r,g=(f/=d)*e+o*r,v=(h/=d)*e+s*r;this.center.move(t,m,g,v);var y=Math.exp(this.computedRadius[0]);y=Math.max(1e-4,y+n),this.radius.set(t,Math.log(y))},p.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},p.setMatrix=function(t,e,r,n){var a=1;"number"==typeof r&&(a=0|r),(a<0||a>3)&&(a=1);var o=(a+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var s=e[a],l=e[a+4],f=e[a+8];if(n){var h=Math.abs(s),p=Math.abs(l),d=Math.abs(f),m=Math.max(h,p,d);h===m?(s=s<0?-1:1,l=f=0):d===m?(f=f<0?-1:1,s=l=0):(l=l<0?-1:1,s=f=0)}else{var g=c(s,l,f);s/=g,l/=g,f/=g}var v,y,x=e[o],b=e[o+4],_=e[o+8],w=x*s+b*l+_*f,T=c(x-=s*w,b-=l*w,_-=f*w),k=l*(_/=T)-f*(b/=T),A=f*(x/=T)-s*_,M=s*b-l*x,S=c(k,A,M);if(k/=S,A/=S,M/=S,this.center.jump(t,q,G,Y),this.radius.idle(t),this.up.jump(t,s,l,f),this.right.jump(t,x,b,_),2===a){var E=e[1],L=e[5],C=e[9],P=E*x+L*b+C*_,I=E*k+L*A+C*M;v=R<0?-Math.PI/2:Math.PI/2,y=Math.atan2(I,P)}else{var O=e[2],z=e[6],D=e[10],R=O*s+z*l+D*f,F=O*x+z*b+D*_,B=O*k+z*A+D*M;v=Math.asin(u(R)),y=Math.atan2(B,F)}this.angle.jump(t,y,v),this.recalcMatrix(t);var N=e[2],j=e[6],U=e[10],V=this.computedMatrix;i(V,e);var H=V[15],q=V[12]/H,G=V[13]/H,Y=V[14]/H,W=Math.exp(this.computedRadius[0]);this.center.jump(t,q-N*W,G-j*W,Y-U*W)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},p.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},p.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},p.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter;var i=(n=n||this.computedUp)[0],a=n[1],o=n[2],s=c(i,a,o);if(!(s<1e-6)){i/=s,a/=s,o/=s;var l=e[0]-r[0],f=e[1]-r[1],h=e[2]-r[2],p=c(l,f,h);if(!(p<1e-6)){l/=p,f/=p,h/=p;var d=this.computedRight,m=d[0],g=d[1],v=d[2],y=i*m+a*g+o*v,x=c(m-=y*i,g-=y*a,v-=y*o);if(!(x<.01&&(x=c(m=a*h-o*f,g=o*l-i*h,v=i*f-a*l))<1e-6)){m/=x,g/=x,v/=x,this.up.set(t,i,a,o),this.right.set(t,m,g,v),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(p));var b=a*v-o*g,_=o*m-i*v,w=i*g-a*m,T=c(b,_,w),k=i*l+a*f+o*h,A=m*l+g*f+v*h,M=(b/=T)*l+(_/=T)*f+(w/=T)*h,S=Math.asin(u(k)),E=Math.atan2(M,A),L=this.angle._state,C=L[L.length-1],P=L[L.length-2];C%=2*Math.PI;var I=Math.abs(C+2*Math.PI-E),O=Math.abs(C-E),z=Math.abs(C-2*Math.PI-E);I0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(p(t),0,t)}function m(t){return new Uint16Array(p(2*t),0,t)}function g(t){return new Uint32Array(p(4*t),0,t)}function v(t){return new Int8Array(p(t),0,t)}function y(t){return new Int16Array(p(2*t),0,t)}function x(t){return new Int32Array(p(4*t),0,t)}function b(t){return new Float32Array(p(4*t),0,t)}function _(t){return new Float64Array(p(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(p(t),0,t):d(t)}function T(t){return s?new BigUint64Array(p(8*t),0,t):null}function k(t){return l?new BigInt64Array(p(8*t),0,t):null}function A(t){return new DataView(p(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=f[e];return r.length>0?r.pop():new a(t)}r.free=function(t){if(a.isBuffer(t))f[n.log2(t.length)].push(t);else{if("[object ArrayBuffer]"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},r.freeUint8=r.freeUint16=r.freeUint32=r.freeBigUint64=r.freeInt8=r.freeInt16=r.freeInt32=r.freeBigInt64=r.freeFloat32=r.freeFloat=r.freeFloat64=r.freeDouble=r.freeUint8Clamped=r.freeDataView=function(t){h(t.buffer)},r.freeArrayBuffer=h,r.freeBuffer=function(t){f[n.log2(t.length)].push(t)},r.malloc=function(t,e){if(void 0===e||"arraybuffer"===e)return p(t);switch(e){case"uint8":return d(t);case"uint16":return m(t);case"uint32":return g(t);case"int8":return v(t);case"int16":return y(t);case"int32":return x(t);case"float":case"float32":return b(t);case"double":case"float64":return _(t);case"uint8_clamped":return w(t);case"bigint64":return k(t);case"biguint64":return T(t);case"buffer":return M(t);case"data":case"dataview":return A(t);default:return null}return null},r.mallocArrayBuffer=p,r.mallocUint8=d,r.mallocUint16=m,r.mallocUint32=g,r.mallocInt8=v,r.mallocInt16=y,r.mallocInt32=x,r.mallocFloat32=r.mallocFloat=b,r.mallocFloat64=r.mallocDouble=_,r.mallocUint8Clamped=w,r.mallocBigUint64=T,r.mallocBigInt64=k,r.mallocDataView=A,r.mallocBuffer=M,r.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,f[t].length=0}}).call(this)}).call(this,void 0!==n?n:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"bit-twiddle":32,buffer:3,dup:65}],309:[function(t,e,r){"use strict";function n(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;e0&&(a=n.size),n.lineSpacing&&n.lineSpacing>0&&(o=n.lineSpacing),n.styletags&&n.styletags.breaklines&&(s.breaklines=!!n.styletags.breaklines),n.styletags&&n.styletags.bolds&&(s.bolds=!!n.styletags.bolds),n.styletags&&n.styletags.italics&&(s.italics=!!n.styletags.italics),n.styletags&&n.styletags.subscripts&&(s.subscripts=!!n.styletags.subscripts),n.styletags&&n.styletags.superscripts&&(s.superscripts=!!n.styletags.superscripts));return r.font=[n.fontStyle,n.fontVariant,n.fontWeight,a+"px",n.font].filter((function(t){return t})).join(" "),r.textAlign="start",r.textBaseline="alphabetic",r.direction="ltr",h(function(t,e,r,n,a,o){r=r.replace(/\n/g,""),r=!0===o.breaklines?r.replace(/\/g,"\n"):r.replace(/\/g," ");var s="",l=[];for(p=0;p-1?parseInt(t[1+i]):0,l=a>-1?parseInt(r[1+a]):0;s!==l&&(n=n.replace(S(),"?px "),g*=Math.pow(.75,l-s),n=n.replace("?px ",S())),m+=.25*x*(l-s)}if(!0===o.superscripts){var c=t.indexOf("+"),u=r.indexOf("+"),f=c>-1?parseInt(t[1+c]):0,h=u>-1?parseInt(r[1+u]):0;f!==h&&(n=n.replace(S(),"?px "),g*=Math.pow(.75,h-f),n=n.replace("?px ",S())),m-=.25*x*(h-f)}if(!0===o.bolds){var p=t.indexOf("b|")>-1,d=r.indexOf("b|")>-1;!p&&d&&(n=v?n.replace("italic ","italic bold "):"bold "+n),p&&!d&&(n=n.replace("bold ",""))}if(!0===o.italics){var v=t.indexOf("i|")>-1,y=r.indexOf("i|")>-1;!v&&y&&(n="italic "+n),v&&!y&&(n=n.replace("italic ",""))}e.font=n}for(h=0;h",a="",o=i.length,s=a.length,l="+"===e[0]||"-"===e[0],c=0,u=-s;c>-1&&-1!==(c=r.indexOf(i,c))&&-1!==(u=r.indexOf(a,c+o))&&!(u<=c);){for(var f=c;f=u)n[f]=null,r=r.substr(0,f)+" "+r.substr(f+1);else if(null!==n[f]){var h=n[f].indexOf(e[0]);-1===h?n[f]+=e:l&&(n[f]=n[f].substr(0,h+1)+(1+parseInt(n[f][h+1]))+n[f].substr(h+2))}var p=c+o,d=r.substr(p,u-p).indexOf(i);c=-1!==d?d:u+s}return n}function u(t,e){var r=n(t,128);return e?a(r.cells,r.positions,.25):{edges:r.cells,positions:r.positions}}function f(t,e,r,n){var i=u(t,n),a=function(t,e,r){for(var n=e.textAlign||"start",i=e.textBaseline||"alphabetic",a=[1<<30,1<<30],o=[0,0],s=t.length,l=0;l=0?e[a]:i}))},has___:{value:y((function(e){var n=v(e);return n?r in n:t.indexOf(e)>=0}))},set___:{value:y((function(n,i){var a,o=v(n);return o?o[r]=i:(a=t.indexOf(n))>=0?e[a]=i:(a=t.length,e[a]=i,t[a]=n),this}))},delete___:{value:y((function(n){var i,a,o=v(n);return o?r in o&&delete o[r]:!((i=t.indexOf(n))<0)&&(a=t.length-1,t[i]=void 0,e[i]=e[a],t[i]=t[a],t.length=a,e.length=a,!0)}))}})};d.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},delete:{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),"function"==typeof r?function(){function n(){this instanceof d||x();var e,n=new r,i=void 0,a=!1;return e=t?function(t,e){return n.set(t,e),n.has(t)||(i||(i=new d),i.set(t,e)),this}:function(t,e){if(a)try{n.set(t,e)}catch(r){i||(i=new d),i.set___(t,e)}else n.set(t,e);return this},Object.create(d.prototype,{get___:{value:y((function(t,e){return i?n.has(t)?n.get(t):i.get___(t,e):n.get(t,e)}))},has___:{value:y((function(t){return n.has(t)||!!i&&i.has___(t)}))},set___:{value:y(e)},delete___:{value:y((function(t){var e=!!n.delete(t);return i&&i.delete___(t)||e}))},permitHostObjects___:{value:y((function(t){if(t!==m)throw new Error("bogus call to permitHostObjects___");a=!0}))}})}t&&"undefined"!=typeof Proxy&&(Proxy=void 0),n.prototype=d.prototype,e.exports=n,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():("undefined"!=typeof Proxy&&(Proxy=void 0),e.exports=d)}function m(t){t.permitHostObjects___&&t.permitHostObjects___(m)}function g(t){return!("weakmap:"==t.substr(0,"weakmap:".length)&&"___"===t.substr(t.length-3))}function v(t){if(t!==Object(t))throw new TypeError("Not an object: "+t);var e=t[l];if(e&&e.key===t)return e;if(s(t)){e={key:t};try{return o(t,l,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch(t){return}}}function y(t){return t.prototype=null,Object.freeze(t)}function x(){h||"undefined"==typeof console||(h=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}}()},{}],314:[function(t,e,r){var n=t("./hidden-store.js");e.exports=function(){var t={};return function(e){if(("object"!=typeof e||null===e)&&"function"!=typeof e)throw new Error("Weakmap-shim: Key must be object");var r=e.valueOf(t);return r&&r.identity===t?r:n(e,t)}}},{"./hidden-store.js":315}],315:[function(t,e,r){e.exports=function(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,"valueOf",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}},{}],316:[function(t,e,r){var n=t("./create-store.js");e.exports=function(){var t=n();return{get:function(e,r){var n=t(e);return n.hasOwnProperty("value")?n.value:r},set:function(e,r){return t(e).value=r,this},has:function(e){return"value"in t(e)},delete:function(e){return delete t(e).value}}}},{"./create-store.js":314}],317:[function(t,e,r){"use strict";var n,i=function(){return function(t,e,r,n,i,a){var o=t[0],s=r[0],l=[0],c=s;n|=0;var u=0,f=s;for(u=0;u=0!=p>=0&&i.push(l[0]+.5+.5*(h+p)/(h-p)),n+=f,++l[0]}}};e.exports=(n={funcName:{funcName:"zeroCrossings"}.funcName},function(t){var e={};return function(r,n,i){var a=r.dtype,o=r.order,s=[a,o.join()].join(),l=e[s];return l||(e[s]=l=t([a,o])),l(r.shape.slice(0),r.data,r.stride,0|r.offset,n,i)}}(i.bind(void 0,n)))},{}],318:[function(t,e,r){"use strict";e.exports=function(t,e){var r=[];return e=+e||0,n(t.hi(t.shape[0]-1),r,e),r};var n=t("./lib/zc-core")},{"./lib/zc-core":317}]},{},[6])(6)}))}).call(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}]},{},[27])(27)})); +
plot_miRTalk_heatmap(object = obj)
+
+ +

+# use condition parameter to plot results under different conditions separately

plot_miRTalk_sankey()

@@ -4605,6 +4667,8 @@

plot_miRTalk_sankey()

  • object miRTalk object after find_miRTalk()
  • +
  • condition which conditions to plot. Default is plot all +conditions
  • celltype which cell types to plot by order. Default is to plot all cell types
  • miRNA which miRNAs to use. Default is to plot all @@ -4615,8 +4679,8 @@

    plot_miRTalk_sankey()

    type, whose length must be equal to celltype, Or use “NO” to cancel it
  • show_type which type of miRNAs to show, “number”, -“activity”, or “score” for sum of inferred miRNAs number and activity, -respectively, or “prob” for max probability. Default is “number”
  • +“EVmiR_score”, or “score” for sum of inferred miRNAs number, +EVmiR_score, and MiTI_score, respectively. Default is “number”
  • if_show_autocrine Whether to show autocrine. Default is FALSE
  • edge_alpha Transparency of edge. Default is 0.5
  • @@ -4627,9 +4691,11 @@

    plot_miRTalk_sankey()

  • ... parameters pass to networkD3::sankeyNetwork
-
plot_miRTalk_sankey(object = obj)
-
- +
plot_miRTalk_sankey(object = obj)
+
+ +

+# use condition parameter to plot results under different conditions separately

plot_miR_heatmap()

@@ -4637,6 +4703,8 @@

plot_miR_heatmap()

  • object miRTalk object after find_miRTalk()
  • +
  • condition which conditions to plot. Default is plot all +conditions
  • celltype which cell types to plot. Default is to plot all cell types
  • miRNA which miRNAs to plot. Default is to plot all @@ -4650,9 +4718,41 @@

    plot_miR_heatmap()

  • ... parameters pass to heatmaply::heatmaply, e.g., grid_color, grid_width
-
plot_miR_heatmap(object = obj)
-
- +
plot_miR_heatmap(object = obj)
+
+ +

+# use condition parameter to plot results under different conditions separately
+
+
+

plot_target_heatmap()

+

Parameters of plot_target_heatmap()see below:

+
    +
  • object miRTalk object after +find_miRTalk()
  • +
  • condition which conditions to plot. Default is plot all +conditions
  • +
  • celltype which cell types to plot. Default is to plot +all cell types
  • +
  • targetgenes which targetgenes to plot. Default is to +plot all inferred target genes in receivers
  • +
  • limits A parameter used in +heatmaply::heatmaply, a two dimensional numeric vector +specifying the data range for the scale. Default is 0-1
  • +
  • text_size Size of text labels. Default is 10
  • +
  • if_horizontal Whether to plot with the horizontal +direction. Default is TRUE
  • +
  • viridis_option option in +viridis::scale_color_viridis, can be “A”, “B”, “C”, “D”, +“E”, “F”, “G”, “H”. Default is “D”.
  • +
  • ... parameters pass to +heatmaply::heatmaply, e.g., grid_color, grid_width
  • +
+
plot_target_heatmap(object = obj, celltype = "Bcell")
+
+ +

+# use condition parameter to plot results under different conditions separately

plot_miR_bubble()

@@ -4660,6 +4760,8 @@

plot_miR_bubble()

  • object miRTalk object after find_miRTalk()
  • +
  • condition which conditions to plot. Default is plot all +conditions
  • celltype which cell types to plot. Default is to plot all cell types
  • miRNA which miRNAs to plot. Default is to plot all @@ -4672,8 +4774,10 @@

    plot_miR_bubble()

    viridis::scale_color_viridis, can be “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”. Default is “D”.
-
plot_miR_bubble(object = obj)
-

+
plot_miR_bubble(object = obj)
+

+

+# use condition parameter to plot results under different conditions separately

plot_miR2tar_chord()

@@ -4681,6 +4785,8 @@

plot_miR2tar_chord()

  • object miRTalk object after find_miRTalk()
  • +
  • condition which conditions to plot. Default is plot all +conditions
  • celltype_sender Name of celltype_sender. One or more cell types
  • celltype_receiver Name of celltype_receiver. One or @@ -4695,16 +4801,16 @@

    plot_miR2tar_chord()

    type. Default is “circle”, “big.arrow” for big arrow, “triangle” for triangle, “ellipse” for ellipse, “curved” for curved. Details see circlize::chordDiagram
  • -
  • show_type which type of miRNAs to show, “prob” or -“score” for inferred miRNAs-target interactions. Default is “prob”
  • text_size Size of text labels. Default is 0.5
  • y_scale y_scale to adjust the text. Default is 1
  • ... parameters pass to circlize::chordDiagram, e.g., link.arr.width, link.arr.length, link.arr.col
-
plot_miR2tar_chord(obj, celltype_sender = "Tumor", celltype_receiver = "Stromal")
-

+
plot_miR2tar_chord(obj, celltype_sender = "Tumor", celltype_receiver = "Bcell")
+

+

+# use condition parameter to plot results under different conditions separately

plot_miR2tar_circle()

@@ -4712,6 +4818,8 @@

plot_miR2tar_circle()

  • object miRTalk object after find_miRTalk()
  • +
  • condition which conditions to plot. Default is plot all +conditions
  • celltype_sender Name of celltype_sender. One or more cell types
  • celltype_receiver Name of celltype_receiver. One or @@ -4720,17 +4828,22 @@

    plot_miR2tar_circle()

    celltype_receiver nodes, or use “NO” to make it simple
  • miRNA which miRNAs to use. Default is to plot all inferred miRNAs
  • +
  • node_size Size of node. Default is 3
  • edge_color Colors for the edges from the sender cell type
  • text_size Size of text labels. Default is 3
  • edge_width y_scale to adjust the text. Default is 0.5
  • +
  • if_show_legend Whether to show legends. Default is +FALSE
-
plot_miR2tar_circle(obj, celltype_sender = "Tumor", celltype_receiver = "Stromal")
-

-

-plot_miR2tar_circle(obj, celltype_sender = "Tumor", celltype_receiver = "Stromal", celltype_color = "NO")
-

+
plot_miR2tar_circle(obj, celltype_sender = "Tumor", celltype_receiver = "Bcell")
+

+

+plot_miR2tar_circle(obj, celltype_sender = "Tumor", celltype_receiver = "Bcell", celltype_color = "NO")
+

+

+# use condition parameter to plot results under different conditions separately

plot_miR2tar_heatmap()

@@ -4738,14 +4851,14 @@

plot_miR2tar_heatmap()

  • object miRTalk object after find_miRTalk()
  • +
  • condition which conditions to plot. Default is plot all +conditions
  • celltype_sender Name of celltype_sender. One or more cell types
  • celltype_receiver Name of celltype_receiver. One or more cell types
  • miRNA which miRNAs to use. Default is to plot all inferred miRNAs
  • -
  • show_type which type of miRNAs to show, “prob” or -“score” for inferred miRNAs-target interactions. Default is “prob”
  • text_size Size of text labels. Default is 3
  • if_horizontal Whether to plot with the horizontal direction. Default is TRUE
  • @@ -4755,165 +4868,172 @@

    plot_miR2tar_heatmap()

  • ... parameters pass to heatmaply::heatmaply, e.g., grid_color
-
plot_miR2tar_heatmap(obj, celltype_sender = "Tumor", celltype_receiver = "Stromal", grid_color = "black")
-
- +
plot_miR2tar_heatmap(obj, celltype_sender = "Tumor", celltype_receiver = "Bcell", grid_color = "black")
+
+ +

+# use condition parameter to plot results under different conditions separately

Note

-
-

To get pathways of target genes, use -get_pathways()

-

Parameters of get_pathways() see below:

+
+

We add analysis of functional annotations for a miRNA and its target +gene, for example, overlapped/shared pathways, use +get_miRTalk_pathway(). Detailed see the wiki +page

+

Parameters of get_miRTalk_pathway() see below:

  • object miRTalk object after find_miRTalk()
  • -
  • pathways A data.frame of the system data containing -gene-gene interactions and pathways from KEGG and Reactome for ‘Human’, -‘Mouse’ or ‘Rat’. see demo_pathways()
  • +
  • gene2path A data.frame of the system data containing +gene-related pathways from KEGG, Reactome, GO_BP, Wikipathways
  • +
  • mir2path A data.frame of the system data containing +miRNA-related pathways from KEGG, Reactome, GO_BP, Wikipathways
  • +
  • miRNA which miRNAs to analyze. Default is all inferred +miRNAs in senders.
  • +
  • targetgenes which targetgenes to analyze. Default is +all inferred target genes in receivers.
-
# demo_pathways
-demo_pathways()
-#>      src dest                    pathway species
-#> 1 CDKN1A CDK2      p53 signaling pathway   Human
-#> 2 CDKN1A CDK4      p53 signaling pathway   Human
-#> 3   CDK2 TP53      p53 signaling pathway   Human
-#> 4   Akt1 Atf2 PI3K-Akt signaling pathway   Mouse
-#> 5 Tcirg1 Ppa1  Oxidative phosphorylation     Rat
-
-# get pathways
-obj_pathways <- get_pathways(obj, pathways = pathways)
-head(obj_pathways)
-#>     target_genes        id                      pathway species
-#> 330        ALDOA hsa:00010 Glycolysis / Gluconeogenesis   Human
-#> 331        ALDOA hsa:00010 Glycolysis / Gluconeogenesis   Human
-#> 332        ALDOA hsa:00010 Glycolysis / Gluconeogenesis   Human
-#> 333        ALDOA hsa:00010 Glycolysis / Gluconeogenesis   Human
-#> 335        ALDOA hsa:00010 Glycolysis / Gluconeogenesis   Human
-#> 337        ALDOA hsa:00010 Glycolysis / Gluconeogenesis   Human
+
# get pathways
+res_pathway <- get_miRTalk_pathway(object = obj,
+                                     gene2path = gene2path,
+                                     mir2path = mir2path,
+                                     miRNA = "hsa-miR-133a-3p",
+                                     targetgenes = "ANXA2")
+
+str(res_pathway[[1]]$miRNA_term) # pathways for hsa-miR-133a-3p
+#>  chr [1:382] "CELLULAR RESPONSE TO GLUCOCORTICOID STIMULUS" "ANGIOGENESIS" ...
+
+str(res_pathway[[2]]$target_gene_term) # pathways for ANXA2
+#>  chr [1:173] "THE PROCESS IN WHICH INACTIVE PLASMINOGEN IS PROCESSED TO ACTIVE PLASMIN. THIS PROCESS INCLUDES CLEAVAGE AT AN "| __truncated__ ...
+
+res_pathway[[3]]$miRNA_term # overlapped/shared pathways
+#>  [1] "ANGIOGENESIS"                                                                          
+#>  [2] "INNATE IMMUNE SYSTEM"                                                                  
+#>  [3] "GENE AND PROTEIN EXPRESSION BY JAK-STAT SIGNALING AFTER INTERLEUKIN-12 STIMULATION"    
+#>  [4] "SIGNALING BY INTERLEUKINS"                                                             
+#>  [5] "INTERLEUKIN-12 SIGNALING"                                                              
+#>  [6] "MUSCLE CONTRACTION"                                                                    
+#>  [7] "NEUTROPHIL DEGRANULATION"                                                              
+#>  [8] "SMOOTH MUSCLE CONTRACTION"                                                             
+#>  [9] "OSTEOCLAST DEVELOPMENT"                                                                
+#> [10] "MUSCLE CONTRACTION"                                                                    
+#> [11] "INTERLEUKIN-12 FAMILY SIGNALING"                                                       
+#> [12] "NEUTROPHIL DEGRANULATION"                                                              
+#> [13] "POSITIVE REGULATION OF LOW-DENSITY LIPOPROTEIN PARTICLE CLEARANCE"                     
+#> [14] "POSITIVE REGULATION OF TRANSCRIPTION BY RNA POLYMERASE II"                             
+#> [15] "POSITIVE REGULATION OF RECEPTOR-MEDIATED ENDOCYTOSIS INVOLVED IN CHOLESTEROL TRANSPORT"
-
-

To get GO terms of target genes, use get_gene2go()

-

Parameters of get_gene2go() see below:

+
+

We add analysis of potential of circulating miRNAs and organ‐organ +communication, use get_miRTalk_circulating_score(). +Detailed see the wiki +page

+

Parameters of get_miRTalk_circulating_score() see +below:

  • object miRTalk object after find_miRTalk()
  • -
  • gene2go A data.frame of the system data containing GO -terms for ‘Human’, ‘Mouse’ or ‘Rat’. see -demo_gene2go()
  • -
  • if_show_negative Whether to show the results with -negative regulation. Default is TRUE.
-
# demo_gene2go
-demo_gene2go()
-#>   symbol              GO_term species
-#> 1   A1BG   molecular_function   Human
-#> 2   A1BG extracellular region   Human
-#> 3   A1BG  extracellular space   Human
-#> 4   Zzz3          DNA binding   Mouse
-#> 5    Zyx    metal ion binding     Rat
-
-# get pathways
-obj_gene2go <- get_gene2go(obj, gene2go = gene2go)
-head(obj_gene2go)
-#>      symbol evidence   qualifier
-#> 2851 DNAJB6      IDA involved_in
-#> 2854 DNAJB6      IEA involved_in
-#> 2865 DNAJB6      IDA involved_in
-#> 2866 DNAJB6      IMP involved_in
-#> 6714   NME6      IBA involved_in
-#> 6715   NME6      IDA involved_in
-#>                                                                                        GO_term
-#> 2851 negative regulation of cysteine-type endopeptidase activity involved in apoptotic process
-#> 2854                                       negative regulation of transcription, DNA-templated
-#> 2865                                            negative regulation of inclusion body assembly
-#> 2866                                            negative regulation of inclusion body assembly
-#> 6714                                                        negative regulation of cell growth
-#> 6715                                                        negative regulation of cell growth
-#>        PubMed category species
-#> 2851 11896048  Process   Human
-#> 2854        -  Process   Human
-#> 2865 21231916  Process   Human
-#> 2866 20889486  Process   Human
-#> 6714 21873635  Process   Human
-#> 6715 10618642  Process   Human
-
-
-

To plot the sparse expression of miRNA genes in scRNA-seq, you can -use the Nebulosa::plot_density()

-
Nebulosa::plot_density(object = obj_seurat, features = "MIR24-2")
-
sessionInfo()
-#> R version 4.1.1 (2021-08-10)
-#> Platform: x86_64-w64-mingw32/x64 (64-bit)
-#> Running under: Windows 10 x64 (build 19045)
-#> 
-#> Matrix products: default
-#> 
-#> locale:
-#> [1] LC_COLLATE=Chinese (Simplified)_China.936 
-#> [2] LC_CTYPE=Chinese (Simplified)_China.936   
-#> [3] LC_MONETARY=Chinese (Simplified)_China.936
-#> [4] LC_NUMERIC=C                              
-#> [5] LC_TIME=Chinese (Simplified)_China.936    
-#> 
-#> attached base packages:
-#> [1] parallel  stats     graphics  grDevices utils     datasets  methods  
-#> [8] base     
-#> 
-#> other attached packages:
-#> [1] miRTalk_1.0       doParallel_1.0.17 iterators_1.0.13  foreach_1.5.1    
-#> 
-#> loaded via a namespace (and not attached):
-#>   [1] circlize_0.4.13       plyr_1.8.6            igraph_1.2.7         
-#>   [4] lazyeval_0.2.2        sp_1.4-5              splines_4.1.1        
-#>   [7] crosstalk_1.2.0       listenv_0.8.0         scattermore_0.7      
-#>  [10] ggplot2_3.3.6         digest_0.6.28         ca_0.71.1            
-#>  [13] htmltools_0.5.2       viridis_0.6.2         fansi_0.5.0          
-#>  [16] magrittr_2.0.1        tensor_1.5            cluster_2.1.2        
-#>  [19] ROCR_1.0-11           limma_3.50.0          globals_0.14.0       
-#>  [22] graphlayouts_0.7.1    matrixStats_0.61.0    spatstat.sparse_3.0-0
-#>  [25] prettyunits_1.1.1     rmdformats_1.0.3      colorspace_2.0-2     
-#>  [28] ggrepel_0.9.1         xfun_0.30             dplyr_1.0.7          
-#>  [31] crayon_1.4.2          jsonlite_1.7.2        progressr_0.9.0      
-#>  [34] spatstat.data_3.0-0   survival_3.2-11       zoo_1.8-9            
-#>  [37] glue_1.4.2            polyclip_1.10-0       registry_0.5-1       
-#>  [40] gtable_0.3.0          webshot_0.5.4         leiden_0.3.9         
-#>  [43] future.apply_1.8.1    shape_1.4.6           abind_1.4-5          
-#>  [46] scales_1.1.1          pheatmap_1.0.12       DBI_1.1.1            
-#>  [49] miniUI_0.1.1.1        Rcpp_1.0.7            progress_1.2.2       
-#>  [52] viridisLite_0.4.0     xtable_1.8-4          reticulate_1.22      
-#>  [55] spatstat.core_2.3-0   datawizard_0.6.2      htmlwidgets_1.5.4    
-#>  [58] httr_1.4.2            RColorBrewer_1.1-2    ellipsis_0.3.2       
-#>  [61] Seurat_4.1.1          ica_1.0-2             pkgconfig_2.0.3      
-#>  [64] farver_2.1.0          sass_0.4.0            uwot_0.1.10          
-#>  [67] deldir_1.0-6          utf8_1.2.2            labeling_0.4.2       
-#>  [70] tidyselect_1.1.1      rlang_0.4.12          reshape2_1.4.4       
-#>  [73] later_1.3.0           munsell_0.5.0         tools_4.1.1          
-#>  [76] generics_0.1.1        ggridges_0.5.3        evaluate_0.14        
-#>  [79] stringr_1.4.0         fastmap_1.1.0         heatmaply_1.4.0      
-#>  [82] yaml_2.2.1            goftest_1.2-3         knitr_1.36           
-#>  [85] fitdistrplus_1.1-6    tidygraph_1.2.0       purrr_0.3.4          
-#>  [88] RANN_2.6.1            dendextend_1.16.0     ggraph_2.0.5         
-#>  [91] pbapply_1.5-0         future_1.23.0         nlme_3.1-152         
-#>  [94] mime_0.12             correlation_0.8.3     compiler_4.1.1       
-#>  [97] plotly_4.10.0         png_0.1-7             spatstat.utils_3.0-1 
-#> [100] tibble_3.1.5          tweenr_1.0.2          bslib_0.3.1          
-#> [103] stringi_1.7.5         highr_0.9             rgeos_0.5-9          
-#> [106] lattice_0.20-44       Matrix_1.3-4          vctrs_0.3.8          
-#> [109] pillar_1.6.4          lifecycle_1.0.1       networkD3_0.4        
-#> [112] spatstat.geom_3.0-3   lmtest_0.9-38         jquerylib_0.1.4      
-#> [115] GlobalOptions_0.1.2   RcppAnnoy_0.0.19      insight_0.18.5       
-#> [118] data.table_1.14.2     cowplot_1.1.1         irlba_2.3.3          
-#> [121] seriation_1.4.0       httpuv_1.6.3          patchwork_1.1.1      
-#> [124] R6_2.5.1              bookdown_0.25         promises_1.2.0.1     
-#> [127] TSP_1.2-1             KernSmooth_2.23-20    gridExtra_2.3        
-#> [130] parallelly_1.28.1     codetools_0.2-18      MASS_7.3-54          
-#> [133] assertthat_0.2.1      SeuratObject_4.1.0    sctransform_0.3.3    
-#> [136] bayestestR_0.13.0     hms_1.1.1             mgcv_1.8-36          
-#> [139] grid_4.1.1            rpart_4.1-15          tidyr_1.1.4          
-#> [142] rmarkdown_2.13        Rtsne_0.15            ggforce_0.3.3        
-#> [145] shiny_1.7.1
+
library(ggplot2)
+# get circulating miRNAs
+res_circulating <- get_miRTalk_circulating_score(obj)
+str(res_circulating)
+#> 'data.frame':    164 obs. of  7 variables:
+#>  $ miRNA            : chr  "hsa-miR-146a-5p" "hsa-miR-146a-5p" "hsa-miR-146a-5p" "hsa-miR-146a-5p" ...
+#>  $ tissue_TarBase   : chr  "Kidney; Pleura; Lymphatic tissue; Cervix; Bone marrow; Umbilical vein; Pancreas; Brain - Motor cortex; Brain - "| __truncated__ "Kidney; Pleura; Lymphatic tissue; Cervix; Bone marrow; Umbilical vein; Pancreas; Brain - Motor cortex; Brain - "| __truncated__ "Kidney; Pleura; Lymphatic tissue; Cervix; Bone marrow; Umbilical vein; Pancreas; Brain - Motor cortex; Brain - "| __truncated__ "Kidney; Pleura; Lymphatic tissue; Cervix; Bone marrow; Umbilical vein; Pancreas; Brain - Motor cortex; Brain - "| __truncated__ ...
+#>  $ score            : num  0.661 0.661 0.661 0.661 0.661 ...
+#>  $ miR_gene         : chr  "MIR146A" "MIR146A" "MIR146A" "MIR146A" ...
+#>  $ celltype_receiver: chr  "Tcell" "Tumor" "Bcell" "Bcell" ...
+#>  $ target_gene      : chr  "MYLK" "CD80" "SPP1" "HSPA1A" ...
+#>  $ condition        : chr  "condition" "condition" "condition" "condition" ...
+
+#plotting
+res_circulating$celltype_receiver <- paste0(res_circulating$condition,"_",res_circulating$celltype_receiver)
+res_circulating <- unique(res_circulating[,c("miRNA","score","celltype_receiver")])
+res_cir_plot <- reshape2::dcast(data = res_circulating, formula = miRNA ~ celltype_receiver, value.var = "score", fun.aggregate = mean, fill = 0)
+rownames(res_cir_plot) <- res_cir_plot$miRNA
+res_cir_plot <- res_cir_plot[,-1]
+heat_col <- viridis::viridis(n = 256, alpha = 1, begin = 0, end = 1, option = "D")
+heatmaply::heatmaply(x = as.matrix(res_cir_plot), colors = heat_col, limits = c(0,1),dendrogram = "none",  margins = c(60,100,40,20), titleX = FALSE, main = "Circulating potential", branches_lwd = 0.1, fontsize_row = 10, fontsize_col = 10, labCol = colnames(res_cir_plot), labRow = rownames(res_cir_plot), heatmap_layers = theme(axis.line=element_blank()))
+
+ +
sessionInfo()
+#> R version 4.2.1 (2022-06-23)
+#> Platform: x86_64-pc-linux-gnu (64-bit)
+#> Running under: CentOS Linux 7 (Core)
+#> 
+#> Matrix products: default
+#> BLAS:   /slurm/soft/R/4.2.1/lib64/R/lib/libRblas.so
+#> LAPACK: /slurm/soft/R/4.2.1/lib64/R/lib/libRlapack.so
+#> 
+#> locale:
+#>  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
+#>  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
+#>  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
+#>  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
+#>  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
+#> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
+#> 
+#> attached base packages:
+#> [1] parallel  stats     graphics  grDevices utils     datasets  methods  
+#> [8] base     
+#> 
+#> other attached packages:
+#> [1] ggplot2_3.4.2     miRTalk_1.0       doParallel_1.0.17 iterators_1.0.14 
+#> [5] foreach_1.5.2    
+#> 
+#> loaded via a namespace (and not attached):
+#>   [1] circlize_0.4.15        plyr_1.8.8             igraph_1.5.0          
+#>   [4] lazyeval_0.2.2         sp_2.0-0               splines_4.2.1         
+#>   [7] crosstalk_1.2.0        listenv_0.9.0          scattermore_1.2       
+#>  [10] digest_0.6.31          ca_0.71.1              htmltools_0.5.5       
+#>  [13] viridis_0.6.3          fansi_1.0.4            magrittr_2.0.3        
+#>  [16] tensor_1.5             cluster_2.1.3          ROCR_1.0-11           
+#>  [19] limma_3.54.2           globals_0.16.2         graphlayouts_1.1.0    
+#>  [22] matrixStats_1.0.0      spatstat.sparse_3.0-2  prettyunits_1.1.1     
+#>  [25] rmdformats_1.0.4       colorspace_2.1-0       ggrepel_0.9.3         
+#>  [28] xfun_0.39              dplyr_1.1.2            crayon_1.5.2          
+#>  [31] jsonlite_1.8.5         progressr_0.13.0       spatstat.data_3.0-1   
+#>  [34] survival_3.3-1         zoo_1.8-12             glue_1.6.2            
+#>  [37] polyclip_1.10-4        registry_0.5-1         gtable_0.3.3          
+#>  [40] webshot_0.5.5          leiden_0.4.3           future.apply_1.11.0   
+#>  [43] shape_1.4.6            abind_1.4-5            scales_1.2.1          
+#>  [46] pheatmap_1.0.12        spatstat.random_3.1-5  miniUI_0.1.1.1        
+#>  [49] Rcpp_1.0.10            progress_1.2.2         viridisLite_0.4.2     
+#>  [52] xtable_1.8-4           reticulate_1.30        datawizard_0.12.0     
+#>  [55] htmlwidgets_1.6.2      httr_1.4.6             RColorBrewer_1.1-3    
+#>  [58] ellipsis_0.3.2         Seurat_4.3.0.1         ica_1.0-3             
+#>  [61] pkgconfig_2.0.3        farver_2.1.1           sass_0.4.6            
+#>  [64] uwot_0.1.14            deldir_1.0-9           utf8_1.2.3            
+#>  [67] labeling_0.4.2         tidyselect_1.2.0       rlang_1.1.1           
+#>  [70] reshape2_1.4.4         later_1.3.1            munsell_0.5.0         
+#>  [73] tools_4.2.1            cachem_1.0.8           cli_3.6.1             
+#>  [76] generics_0.1.3         ggridges_0.5.4         evaluate_0.21         
+#>  [79] stringr_1.5.0          fastmap_1.1.1          heatmaply_1.5.0       
+#>  [82] yaml_2.3.7             goftest_1.2-3          knitr_1.43            
+#>  [85] fitdistrplus_1.1-11    tidygraph_1.3.0        purrr_1.0.1           
+#>  [88] RANN_2.6.1             dendextend_1.17.1      ggraph_2.1.0          
+#>  [91] pbapply_1.7-0          future_1.32.0          nlme_3.1-157          
+#>  [94] mime_0.12              correlation_0.8.5      compiler_4.2.1        
+#>  [97] rstudioapi_0.14        plotly_4.10.2          png_0.1-8             
+#> [100] spatstat.utils_3.0-5   tibble_3.2.1           tweenr_2.0.2          
+#> [103] bslib_0.5.0            stringi_1.7.12         highr_0.10            
+#> [106] lattice_0.20-45        Matrix_1.5-4.1         vctrs_0.6.3           
+#> [109] networkD3_0.4          pillar_1.9.0           lifecycle_1.0.3       
+#> [112] spatstat.geom_3.2-1    lmtest_0.9-40          jquerylib_0.1.4       
+#> [115] GlobalOptions_0.1.2    RcppAnnoy_0.0.20       insight_0.20.1        
+#> [118] data.table_1.14.8      cowplot_1.1.1          irlba_2.3.5.1         
+#> [121] seriation_1.5.4        httpuv_1.6.11          patchwork_1.1.2       
+#> [124] R6_2.5.1               bookdown_0.40          promises_1.2.0.1      
+#> [127] TSP_1.2-4              KernSmooth_2.23-20     gridExtra_2.3         
+#> [130] parallelly_1.36.0      codetools_0.2-18       MASS_7.3-57           
+#> [133] assertthat_0.2.1       withr_2.5.0            SeuratObject_4.1.3    
+#> [136] sctransform_0.3.5      bayestestR_0.13.2      hms_1.1.3             
+#> [139] grid_4.2.1             tidyr_1.3.0            rmarkdown_2.22        
+#> [142] Rtsne_0.16             spatstat.explore_3.2-1 ggforce_0.4.1         
+#> [145] shiny_1.7.4