Code Monkey home page Code Monkey logo

superexacttest's Introduction

SuperExactTest CRAN Downloads Total downloads

Current version 1.1.2

Description

SuperExactTest is an R package for statistical testing and visualization of mult-set intersections.

Installation

SuperExactTest is available from CRAN so the simplest way to install in R is by running install.packages("SuperExactTest").

To install the latest update from here in github, run devtools::install_github("mw201608/SuperExactTest") in R.

Reference

Minghui Wang, Yongzhong Zhao, and Bin Zhang (2015) Efficient Test and Visualization of Multi-Set Intersections. Scientific Reports 5: 16923.

Vignette

Detailed description about the package and sample analysis code is available from vignette("set_html",package="SuperExactTest") (link) after installation.

SuperExactTest shiny

A shiny application has been deployed at shinyapps.io (see also github), allowing users to run and visualize SuperExactTest analysis online.

Examples

1 Show selected overlapping elements

library(SuperExactTest)
set.seed(1234)
#generate random strings
n=400
r_strings <- do.call(paste0, replicate(5, sample(LETTERS, n, TRUE), FALSE))
input=lapply(c(40,60,80,200),function(x,s) sample(s,x),s=r_strings)
Result=supertest(input,n=n)
#Plot the intersections with a split y-axis and 
#show elements of the intersections with no more than 20 elements
#png('examples/ex1.png',width=2000,height=2000,res=300)
plot(Result, Layout="landscape", sort.by="size", keep=FALSE,
	bar.split=c(70,180), show.elements=TRUE, elements.cex=0.7,
	elements.list=subset(summary(Result)$Table,Observed.Overlap <= 20),
	show.expected.overlap=TRUE,expected.overlap.style="hatchedBox",
	color.expected.overlap='red')
#dev.off()

sample output

Assign discrete colors to denote the sets that are involved in each intersection by setting color.on to NULL or a vector of colors.

#png('examples/ex1color.png',width=2000,height=2000,res=300)
plot(Result, Layout="landscape", sort.by="size", keep=FALSE,
	bar.split=c(70,180), show.elements=TRUE, elements.cex=0.7,
	elements.list=subset(summary(Result)$Table,Observed.Overlap <= 20),
	show.expected.overlap=TRUE,expected.overlap.style="hatchedBox",
	color.expected.overlap='red', color.on = NULL)
#dev.off()

sample output

2 Sort and/or subset intersection bars for plotting

As of version 1.0.7, we can change the order of the intersection bars in a customized way through option sort.by. For example, let us switch the orders of the fourth and fifth bars in the above figure.

#First extract the intersection barcodes ordered by size
order1=names(sort(Result$overlap.sizes,decreasing=TRUE))
#Then switch the orders of the fourth and fifth element
order2=order1[c(1:3,5,4,6:length(order1))]
print(order1)
print(order2)
#Now plot with the new order
#png('examples/ex2.png',width=2000,height=2000,res=300)
plot(Result, Layout="landscape", sort.by=order2, keep=FALSE,
        bar.split=c(70,180), show.elements=TRUE, elements.cex=0.7,
        elements.list=subset(summary(Result)$Table,Observed.Overlap <= 20),
        show.expected.overlap=TRUE,expected.overlap.style="hatchedBox",
        color.expected.overlap='red', color.on = NULL)
#dev.off()

sample output

With this option sort.by, we can also show a subset of the intersection bars easily. Eg, let us plot the 10 largest overlaps.

order3=order1[1:10]
#png('examples/ex2b.png',width=2000,height=2000,res=300)
plot(Result, Layout="landscape", sort.by=order3,
        bar.split=c(70,180), show.elements=TRUE, elements.cex=0.7,
        elements.list=subset(summary(Result)$Table,Observed.Overlap <= 20),
        show.expected.overlap=TRUE,expected.overlap.style="hatchedBox",
        color.expected.overlap='red', color.on = NULL)
#dev.off()

sample output

3 Flip the bars upside down

We can also flip the bars upside down using option flip.vertical=TRUE.

#png('examples/ex3.png',width=2000,height=2000,res=300)
plot(Result, Layout="landscape", sort.by=order2, keep=FALSE,
        bar.split=c(70,180), show.elements=TRUE, elements.cex=0.7,
        elements.list=subset(summary(Result)$Table,Observed.Overlap <= 20),
        show.expected.overlap=TRUE,expected.overlap.style="hatchedBox",
        color.expected.overlap='red', color.on = NULL, flip.vertical=TRUE)
#dev.off()

sample output

4 Show fold enrichment

Show fold enrichment rather than overlp size on top of the bars (since v1.0.7.1).

#png('examples/ex4.png',width=2000,height=2000,res=300)
plot(Result, Layout="landscape", sort.by=order2, keep=FALSE,
        bar.split=c(70,180), show.elements=TRUE, elements.cex=0.7,
		show.fold.enrichment=TRUE,
		elements.list=subset(summary(Result)$Table,Observed.Overlap <= 20),elements.rot=45,
        show.expected.overlap=TRUE,expected.overlap.style="hatchedBox",
        color.expected.overlap='red', color.on = NULL)
#dev.off()

sample output

5 Place multiple SuperExactTest plots on the same page

We can combine multiple SuperExactTest plots on the same page by setting new.gridPage = FALSE. For example, to arrange two SuperExactTest figures side by side, we can:

#png('examples/ex5.png',width=4000,height=2000,res=300)
grid.newpage()
vp0 <- viewport(layout = grid.layout(1, 2))
vp1 <- viewport(layout.pos.col = 1, layout.pos.row = 1, name = "plot_left")
vp2 <- viewport(layout.pos.col = 2, layout.pos.row = 1, name = "plot_right")
vps <- vpTree(vp0, vpList(vp1, vp2))
pushViewport(vps)
seekViewport("plot_left")
plot(Result, Layout="landscape", sort.by='size', keep=FALSE,
        bar.split=c(70,180), show.fold.enrichment=TRUE,
        show.expected.overlap=TRUE, expected.overlap.style="hatchedBox",
        color.expected.overlap='red', color.on = NULL,
        title = 'Figure A. Landscape layout', new.gridPage = FALSE)
seekViewport("plot_right")
plot(Result, Layout="circular", sort.by='size', keep=FALSE,
        show.expected.overlap=TRUE,expected.overlap.style="hatchedBox",
        color.expected.overlap='red', color.on = NULL,
        title = 'Figure B. Circular layout', new.gridPage = FALSE)
#dev.off()

sample output

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.