jolars / eulerr Goto Github PK
View Code? Open in Web Editor NEWArea-Proportional Euler and Venn Diagrams with Ellipses
Home Page: https://jolars.github.io/eulerr/
License: GNU General Public License v3.0
Area-Proportional Euler and Venn Diagrams with Ellipses
Home Page: https://jolars.github.io/eulerr/
License: GNU General Public License v3.0
Out of all venn implementations in R, yours is by far superior in terms of graphics output, correctly implementing the polygon clipping to render stacked polygons in accurate color.
With this in mind, would it be possible to implement also the non-proportional layout of the diagram, just for the cases with highly overlapping categories and/or many categories, where the proportional layout is tricky to present all the combinations. This way, we could utilize your excellent graphics while presenting the complex or sparse venns.
Thanks in advance!
As per title. I'm using latest Mac/R.
Incidentally I tried installing eulerr dev version but that failed on Mac with:
ld: warning: directory not found for option '-L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2'
ld: library not found for -lgfortran
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [eulerr.so] Error 1
ERROR: compilation failed for package ‘eulerr’
* removing ‘/Users/robinedwards/Documents/R/library/3.3/eulerr’
* restoring previous ‘/Users/robinedwards/Documents/R/library/3.3/eulerr’
Error: Command failed (1)
Hi,
Really nice package, very useful to create multiple Euler diagrams using categories with the by option.
But I have a problem since for some of my logical vectors, I have only FALSE values corresponding to one or multiple categories.
Is there a way to actually see that instead of having an error ( Error in stats::optimize(discdisc, interval = c(abs(r1 - r2), sum(r1, : 'xmin' not less than 'xmax' )? Like a box with missing categories or something similar?
Because the fact of missing TRUE values in some categories can be a very important result.
Hope it is possible, thanks !
Both the vignettes are mangled because %\VignetteEngine{knitr::knitr}
was mistakenly left out of the .Rnw documents. See for instance https://cran.r-project.org/web/packages/eulerr/vignettes/introduction.pdf.
I have pushed a hotfix that I hope will be accepted on CRAN.
Modified example from the euler documentation page:
comb<-list(B = c("a", "ab", "ac", "abc"),
A = c("b", "ab", "bc", "abc"),
C = c("c", "ac", "bc", "abc"))
plot(euler(comb))
plot(euler(comb), auto.key=T)
Compare the two plots, the labels are not correctly named when using auto.key = T
:
> sessionInfo()
R version 3.4.3 (2017-11-30)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=Swedish_Sweden.1252 LC_CTYPE=Swedish_Sweden.1252
[3] LC_MONETARY=Swedish_Sweden.1252 LC_NUMERIC=C
[5] LC_TIME=Swedish_Sweden.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] eulerr_3.0.1
loaded via a namespace (and not attached):
[1] compiler_3.4.3 tools_3.4.3 Rcpp_0.12.14 grid_3.4.3 lattice_0.20-35
Sorry - I have another question and after re-reading everything I still can't figure it out.
Regardless of whether I plot with ellipses or circles, A&C are never shown to overlap by 7501. Instead that intersection is shown to be contained entirely within B&C. There are other examples within the datasets (for example the quantity shown for D is wrong) but that's a prominent one.
plot(euler(
c("A"=10487, "B"=13190, "C"=15675, "D"=3519,
"A&B"=8302,
"A&C"=7501,
"A&D"=2986,
"B&C"=10276,
"B&D"=2914,
"C&D"=0,
"A&B&C"=5791,
"A&B&D"=2511,
"B&C&D"=0,
"A&B&C&D"=0
),
input = "union"
),
quantities = TRUE,
lty=1:4,
legend=TRUE
)
cts <- c(27, 7, 17, 12, 12, 11, 5, 0, 12, 0, 1, 1, 0, 4, 0, 1, 0, 4, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1)
nms <- c("A", "B", "C", "D", "E", "F", "A&B", "A&C", "A&D", "A&E", "A&F", "B&C", "B&D", "B&E", "B&F", "C&D", "C&E", "C&F", "D&E", "D&F", "E&F", "A&B&C", "A&B&D", "A&B&E", "A&B&F", "A&C&D", "A&C&E", "A&C&F", "A&D&E", "A&D&F", "A&E&F", "B&C&D", "B&C&E", "B&C&F", "B&D&E", "B&D&F", "B&E&F", "C&D&E", "C&D&F", "C&E&F", "D&E&F", "A&B&C&D", "A&B&C&E", "A&B&C&F", "A&B&D&E", "A&B&D&F", "A&B&E&F", "A&C&D&E", "A&C&D&F", "A&C&E&F", "A&D&E&F", "B&C&D&E", "B&C&D&F", "B&C&E&F", "B&D&E&F", "C&D&E&F", "A&B&C&D&E", "A&B&C&D&F", "A&B&C&E&F", "A&B&D&E&F", "A&C&D&E&F", "B&C&D&E&F", "A&B&C&D&E&F")
venn <- structure(combs_cnt, names=combs_txt)
plot(euler(venn, shape="ellipse"), quantities=T)
For example, there should be a total of 49 in the circle for A, but this plot shows only 46. A alone, A&B, A&D, A&F and A&D&F are correct, but A&C&D, A&B&D&E and A&B&C&D&E&F are missing.
Any advice?
Hi,
I want change the position of the main title from top to topright.
I set adj and line in eulerr_options(), but it doesn't work,
what should I do?
Thanks.
I have been using EulerR 4.1.0 with data frame input with variables looking something this:
Apple Banana Orange
1 0 1
0 1 0
0 0 1
1 1 0
Unfortunately, this doesn't seem to be compatible with the most recent EulerR 5.0.0 version. Would it be possible to preserve this original input format? I've tried other work arounds, but it gets pretty ugly. I'm not an R master, so I wouldn't be surprised if I'm missing something here. Any advice would be much appreciated.
Many thanks!
Thanks for providing a great online tool!
It would be really useful if it were possible to only provide lists of items as input such that eulerr calculates the overlaps automatically, similar to what is possible here: http://bioinformatics.psb.ugent.be/webtools/Venn/
Hi,
I am starting to use your package (the diagrams look much better than with other packages) for plotting 3 sets of genes and their intersections. I get this table after fitting:
Is there any way of making the function not to "ignore" the a&b&c intersection?
Nice package, I particularly like that it adjusts for overlap size and doesn't require Java!
Is there a way to label all regions (either unique or overlapping) with the number of objects it contains?
Hi,
First of all, thank you very much for this great package!
I was wondering if it would be easy and/or useful to have the percentage printed as well as the numbers of elements in each set.
Something maybe similar to the print.mode = c("raw", "percent")
(from the VennDiagram package), to be added as parameter.
So that the output would look like this:
Example:
library(venneuler)
Venn_info<-euler(c(
"A" = 931,
"B" = 669,
"C" = 463,
"D" = 336,
"A&B" = 1933,
"A&C" = 78,
"A&D" = 33,
"B&C" = 51,
"B&D" = 27,
"C&D" = 155,
"A&B&C" = 217,
"A&B&D" = 80,
"A&C&D" = 31,
"B&C&D" = 11,
"A&B&C&D"= 76))
plot(Venn_info,quantities = TRUE)
Number and color of "A&C&D" do not plot.
This issue was raised by @Cumol in #48
Cat1 Ca2 Cat3 Cat4 Cat5
1 FALSE FALSE TRUE TRUE FALSE
2 FALSE FALSE FALSE TRUE FALSE
3 FALSE FALSE TRUE FALSE FALSE
4 FALSE FALSE FALSE FALSE FALSE
5 FALSE FALSE FALSE TRUE FALSE
6 TRUE TRUE TRUE TRUE FALSE
I tried to create a a sixth category "Cat6" that is TRUE when all other 5 categories are false but I got the following error when running euler on that:
Error in fit_diagram(combinations, "euler", input, shape, control, ...) :
!any(combinations < 0) is not TRUE
In addition: Warning message:
In dummy_code(combinations, sep = sep, factor_names = factor_names) :
NAs introduced by coercion
Make sure that plotting order is: descending order in size and "white" last.
When there are over 6 groups, the calculated fitted.value is set to 0 for some of the intersect area.
Code sample:
plot(euler(c(A = 2, B = 114, C = 42, D = 21, E = 13, F = 59, G = 8,
"A&B" = 5, "A&C" = 8, "A&D" = 2, "A&E" = 5, "A&F" = 21, "A&G" = 1)),
quantities = TRUE)
Hi,
in my script that I used to draw VENN diagrams I used the following to color the plot:
VENN_all <- plot(venn(vsHD_reg_0.05[, 3:6]), edges = T, quantities = T, fills = c("#377eb8", "#4daf4a", "#984ea3", "#ff7f00"))
Unfortunately this doesn't have an effect anymore and no colors are printed anymore. Also, I noticed that the shape of the VENN diagram changed a bit with emphasis on the parts without overlap.
Is this a bug or is there a way to fix it?
Thank you!
Sebastian
A year ago, in eulerr version 3, I would use the combination of coef() and label() to extract the data necessary for plotting with ggplot. Now in version 5 with the label function gone, I wonder whether you could expose a function allowing to extract the data underlying the plot.
Hi,
Last year, I used your website and plot beautiful figures. Recently, the website updates.
I have to install the eulerr by install.packages("eulerr") in my R interface,
When I set the parameter of "ellipse", it has no change. Because I don't want to show the area that is 0.
That's my code:
library(eulerr)
fit=euler(c(
"A"=1,"B"=4,"C"=2,"A&B"=0,"A&C"=0,"B&C"=1,"A&B&C"=3))
plot(fit,fill=c("red","yellow","skyblue"),alpha=0.5,shape="ellipse",legend=T,quantities=TRUE)
How to solve this problem?
Thanks very much!
Just came across your package while looking for a replacement for venneuler. I'm confused by your labels and drawings. It seems like the quantities it is showing are not disjoint? Given your example data fit1 in the vignette, I would expect to see that B and C are entirely contained with A, and I would also expect that C would have "0" that is in the section belonging only to C and similarly for B. Am I misunderstanding? Thanks!
fit1 <- euler(c("A" = 25, "B" = 5, "C" = 5,
"A&B" = 5, "A&C" = 5, "B&C" = 3,
"A&B&C" = 3))
This SO response suggests that the following should work to generate multiple euler plots in shared axes.
# devtools::install_github("jolars/eulerr")
library(eulerr)
library(latticeExtra)
p1 <- plot(euler(c(A = 1, B = 8, "A&B" = 1)))
p2 <- plot(euler(c(A = 1, C = 1, "A&C" = 1)))
c(p1, p2, x.same = TRUE, y.same = TRUE)
However, this is the result:
$name
[1] "euler.diagram"
$gp
NULL
$vp
viewport[euler.vp]
$children
(gTree[canvas.grob])
$childrenOrder
euler_grob
"canvas.grob"
$name
[1] "euler.diagram"
$gp
NULL
$vp
viewport[euler.vp]
$children
(gTree[canvas.grob])
$childrenOrder
euler_grob
"canvas.grob"
$x.same
[1] TRUE
$y.same
[1] TRUE
> session_info()
─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 3.5.3 (2019-03-11)
os macOS Mojave 10.14.3
system x86_64, darwin15.6.0
ui X11
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz America/Chicago
date 2019-03-27
─ Packages ───────────────────────────────────────────────────────────────────
package * version date lib source
assertthat 0.2.1 2019-03-21 [1] CRAN (R 3.5.2)
backports 1.1.3 2018-12-14 [1] CRAN (R 3.5.0)
callr 3.2.0 2019-03-15 [1] CRAN (R 3.5.2)
cli 1.1.0 2019-03-19 [1] CRAN (R 3.5.2)
colorout 1.2-0 2018-09-20 [1] Github (jalvesaq/colorout@cc5fbfa)
crayon 1.3.4 2017-09-16 [1] CRAN (R 3.5.0)
desc 1.2.0 2019-03-04 [1] Github (r-lib/desc@ef9e3a4)
devtools * 2.0.1 2018-10-26 [1] CRAN (R 3.5.1)
digest 0.6.18 2018-10-10 [1] CRAN (R 3.5.1)
eulerr * 5.1.0.9000 2019-03-27 [1] Github (jolars/eulerr@0e14b54)
fortunes 1.5-4 2016-12-29 [1] CRAN (R 3.5.0)
fs 1.2.6 2018-08-23 [1] CRAN (R 3.5.0)
glue 1.3.1 2019-03-12 [1] CRAN (R 3.5.2)
htmltools 0.3.6.9003 2019-03-11 [1] local
htmlwidgets 1.3 2019-03-13 [1] Github (ramnathv/htmlwidgets@c998fae)
lattice * 0.20-38 2018-11-04 [1] CRAN (R 3.5.3)
latticeExtra * 0.6-28 2016-02-09 [1] CRAN (R 3.5.0)
magrittr 1.5 2014-11-22 [1] CRAN (R 3.5.0)
memoise 1.1.0.9000 2019-02-01 [1] Github (hadley/memoise@1650ad7)
pkgbuild 1.0.3 2019-03-20 [1] CRAN (R 3.5.2)
pkgload 1.0.2 2018-10-29 [1] CRAN (R 3.5.1)
polyclip 1.10-0 2019-03-14 [1] CRAN (R 3.5.2)
polylabelr 0.1.0 2018-11-02 [1] CRAN (R 3.5.0)
prettyunits 1.0.2 2015-07-13 [1] CRAN (R 3.5.0)
processx 3.3.0 2019-03-10 [1] CRAN (R 3.5.2)
ps 1.3.0 2018-12-21 [1] CRAN (R 3.5.1)
R6 2.4.0 2019-02-14 [1] CRAN (R 3.5.2)
RColorBrewer * 1.1-2 2014-12-07 [1] CRAN (R 3.5.0)
Rcpp 1.0.1 2019-03-17 [1] CRAN (R 3.5.2)
remotes 2.0.2 2018-10-30 [1] CRAN (R 3.5.1)
rlang 0.3.2 2019-03-21 [1] CRAN (R 3.5.2)
rprojroot 1.3-2 2018-01-03 [1] CRAN (R 3.5.0)
sessioninfo 1.1.1 2018-11-05 [1] CRAN (R 3.5.0)
testthat 2.0.1 2018-10-13 [1] CRAN (R 3.5.0)
usethis * 1.4.0.9000 2018-10-05 [1] Github (r-lib/usethis@1e3c6a6)
withr 2.1.2 2018-03-15 [1] CRAN (R 3.5.0)
[1] /Library/Frameworks/R.framework/Versions/3.5/Resources/library
Please try running the following:
library(eulerr)
data <- c(A = 500,
B = 400,
C = 400,
"A&B" = 30,
"A&C" = 40,
"B&C" = 15,
"A&B&C" = 120)
fit <- euler(data, shape = "circle")
plot(fit,
edge = TRUE,
quantities = TRUE,
labels = TRUE)
The intersection A&B&C (120) is not displayed at all. The problem goes away if I change the 'shape' parameter to "ellipse", but I want to keep the circle shape.
Fyi I'm using the latest version (5.1.0).
Thanks.
the image is big and the legend is out of the border. How can i change the image size or font size?
I am just starting to use your package (thanks for the contribution) and find that the datasets are not available. On a separate note, I am not available to compile the newest code, but the binaries worked. (I am on an older Mac running OS X 10.10.5) Thanks.
Hi Jolars,
Sorry to ask again another feature but is it possible to add the scale into the legend.
As my circles are going from 1 to 1377 and sometimes crossing only for small amount, if I add the quantities it is unreadable.
I provided you an example here :
Or if you can suggest an other way to be able to see as much as possible the information for datasets like mine.
Thanks a lot in advance !
I love the work here and the improvements over venneuler. One thing that was nice with venneuler was the ability to extract the plotting parameters from the object allowing one to plot in any graphing system as I show in this gist: https://gist.github.com/trinker/31edc08d0a4ec4c73935a23040c2f6cb and producing something like:
#2 is a related issue that could be solved in a general way that has some function that produced plot parameters and the actual method converts that object to a visual representation in base, grid, ggplot2 or what ever system you desired.
Is there a way to currently pull the plot parameters from the fit object?
Hello,
I am using the eulerr package, and I would like to plot several euler diagrams side by side using par().
for other plots this works fine, but when I plot the fit made with euler it doesn't work.
fit1 is the endproduct of euler(...)
here I try to plot the same figure twice, next to eachother:
par(mfrow=c(1,2))
plot(fit1, quantities = TRUE)
plot(fit1, quantities = TRUE)
is there any way to do it?
kind regards,
Judith
Right now we can get stuff like
original fitted residuals regionError
A 505 1127.857 -622.857 0
B 443 990.018 -547.018 0
C 2150 4801.502 -2651.502 0
A&B 429 957.809 -528.809 0
A&C 1932 4314.885 -2382.885 0
B&C 1643 3670.466 -2027.466 0
A&B&C 3230 7214.434 -3984.434 0
diagError: 0
stress: 0
With the VennDiagram
package the user can have numbers directly on the plots which you can see here. Having the option to put the counts (i.e. the original
in the eulerr
class output) would be useful.
Hello,
thank you so much for the nice Euler diagram implementation in R. I only have one question for you. I was looking at the plot.euler
page and I wasn't able to find a way to plot a number outside the circles representing the items that are "outside" the euler diagrams and not belong to those grouping variables. Is there a way to do it?
Thanks a lot,
Gian
Hi,
I'm trying to produce a Venn digram for a set of combinations, given as a named vector:
vals <- c(329,88,3,40,12,2,330,5,25,4,1,22,17,2,1,540,18,7,11,3,3,1,1,1,3,32,7,69,5,2,3,396,14,5,1,1,18,1,5,1,3,21,8,1,40,23,1,37,11,754,288,561,66,3,167,3,35,599,18,8,2,5,1,2,1,1,56,4,1,1,3,2,2,10,1,1,14,4,1,6,1,2,42,6,27,11,4,1,747,17,4,7,2,13,7,4,63,2,3,5,22,8,2,117,4,2,2,1,5,15,5,26,3,80,1,3,17,42,20,1,74,66,3,9,5)
names(vals) <- c("a.1&c.1&b.1&d.1&e.1","a.1&c.1&b.1&d.1","a.1&b.1&d.1&e.1","a.1&c.1&d.1&e.1","a.1&c.1&b.1&e.1","a.1&c.1&e.1&f.1","c.1&b.1&d.1&e.1","a.1&c.1&e.1","a.1&b.1&d.1","a.1&d.1&e.1","a.1&c.1&b.1","a.1&c.1&d.1","a.1&b.1&e.1","c.1&b.1&d.1","c.1&b.1&e.1","c.1&d.1&e.1","b.1&d.1&e.1","a.0&b.1&d.1&e.1","a.0&c.1&d.1&e.1","a.1&c.1&b.1&e.0","c.0&b.1&d.1&e.1","a.0&c.0&b.1&d.1&e.1","a.1&e.1","a.1&b.1","a.1&c.1","a.1&d.1","c.1&b.1","c.1&d.1","c.1&e.1","c.1&f.1","b.1&e.1","b.1&d.1","d.1&e.1","a.0&b.1&e.1","a.0&b.1&d.1","a.0&c.1&d.1","a.0&d.1&e.1","a.1&c.1&e.0","a.0&c.1&e.1","a.1&b.1&e.0","a.0&c.1&b.1","a.1&b.0&e.1","a.1&c.1&d.0","a.0&e.1&f.1","c.0&b.1&e.1","c.0&b.1&d.1","c.0&e.1&f.1","c.1&d.1&e.0","a.0&c.0&b.1&e.1","a.0&c.1&d.1&e.0","a.0&c.0&b.1&d.1","a.1&c.1&b.0&e.0","a.1","c.1","b.1","d.1","e.1","f.1","a.0&e.1","a.0&b.1","a.0&d.1","a.0&c.1","a.1&e.0","a.1&b.0","a.1&c.0","a.1&d.0","c.0&e.1","c.1&b.0","c.0&d.1","c.1&d.0","c.1&e.0","c.0&b.1","b.0&e.1","b.1&e.0","b.0&d.1","b.1&d.0","d.0&e.1","d.1&e.0","a.0&c.0&e.1","a.0&c.0&b.1","a.0&c.1&e.0","a.1&d.0&e.0","a.1&b.0&e.0","a.1&c.0&e.0","a.0&c.0&d.1","c.0&d.1&e.0","c.1&b.0&d.0","c.1&b.0&e.0","c.0&b.0&e.1","c.0&b.0&d.1","b.0&d.1&e.0","c.1&b.0&d.0&e.0","a.1&c.0&b.0&d.0&e.0","a.0","c.0","b.0","d.0","e.0","f.0","a.0&c.0","a.0&e.0","a.0&d.0","a.0&b.0","c.0&b.0","c.0&d.0","c.0&e.0","b.0&e.0","b.0&d.0","d.0&e.0","a.0&c.0&d.0","a.0&c.0&b.0","a.0&c.0&e.0","a.0&b.0&e.0","a.0&d.0&e.0","c.0&d.0&e.0","c.0&b.0&e.0","c.0&b.0&d.0","b.0&d.0&e.0","a.0&c.0&d.0&e.0","a.0&c.0&b.0&d.0","a.0&c.0&b.0&e.0","a.0&b.0&d.0&e.0","a.0&c.0&e.0&f.0","c.0&b.0&d.0&e.0","a.0&c.0&b.0&d.0&e.0")
Running:
euler.obj <- eulerr::euler(vals)
Throws this error:
Error in f(x, ...) : Mat::min(): object has no elements
Any idea?
Thanks
Why 3 items which are shared over all groups is not plotted?
I am guessing, "fitted"
column is 0.000
, so it is getting excluded from plot. How do we force it to plot?
Here is the code:
# R version 3.4.2 (2017-09-28)
# Platform: x86_64-w64-mingw32/x64 (64-bit)
# Running under: Windows 7 x64 (build 7601) Service Pack 1
# eulerr_4.1.0
library(eulerr)
library(UpSetR)
colSums(dat)
# Group1 Group2 Group3
# 518 75 583
# These 3 are getting excluded, why?
dat[ rowSums(dat) == 3, ]
# Group1 Group2 Group3
# [1,] TRUE TRUE TRUE
# [2,] TRUE TRUE TRUE
# [3,] TRUE TRUE TRUE
# I am guessing, "fitted" column is 0, so it is getting excluded from plot?
fit2 <- euler(dat)
# original fitted residuals regionError
# Group1 201 195.827 5.173 0.001
# Group2 72 70.147 1.853 0.000
# Group3 266 259.154 6.846 0.001
# Group1&Group2 0 0.000 0.000 0.000
# Group1&Group3 314 305.920 8.080 0.001
# Group2&Group3 0 0.000 0.000 0.000
# Group1&Group2&Group3 3 0.000 3.000 0.004
#
# diagError: 0.004
# stress: 0
plot(fit2, quantities = TRUE, labels = list(font = 2, col = "blue"))
Testing with upset plot, it shows the overlap for 3 groups:
upset(data.frame(dat * 1),
sets = colnames(dat),
keep.order = TRUE,
point.size = 5, line.size = 2, text.scale = 2,
mb.ratio = c(0.55, 0.45), order.by = "freq")
Here is the data:
# dput(dat)
dat <- structure(c(TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE,
FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE,
FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE,
FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE,
TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE,
FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE,
FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,
FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE,
TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE,
TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,
TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE,
TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE,
TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE,
TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE,
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE,
FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE,
FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE,
TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE,
TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE,
TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE,
TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE,
TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE,
TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE,
TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE,
FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE,
FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE,
TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE,
TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE,
TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE,
TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE,
TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE,
TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE,
TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE,
FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE,
FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE,
TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE,
FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE,
TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE,
TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE,
TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE,
TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE,
FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE,
TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,
TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE,
TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE,
FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE,
FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE,
FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE,
FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE,
TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE,
TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE,
TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE,
TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE,
FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE,
TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE,
TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE,
FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE,
FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE,
TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE,
FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE,
FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE,
FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE,
TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE,
TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE,
TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE,
FALSE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE,
TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE,
TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE,
FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE,
FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE,
FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE,
TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE,
TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE,
FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE,
TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE,
FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE,
TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE,
FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,
FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE,
FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE,
TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE,
TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE,
FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE,
TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE,
TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE,
FALSE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE,
TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,
FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE,
TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE,
TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE,
FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE,
FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE,
TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE,
TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE,
TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE,
FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE,
TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE,
FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE,
TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE, TRUE,
FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE,
TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE,
TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE,
TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE,
TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE,
TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE,
TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE), .Dim = c(856L,
3L), .Dimnames = list(NULL, c("Group1", "Group2", "Group3")))
Yes, it is silly to have single group venn. But it makes sense when working with shinyapps. For example when we want to select/deselect from list of groups to plot.
Say we have 10 groups in checkboxGroupInput
, and we preselect 1,2,3
as a default, then user unticks 1,2
, (now we have only 1 group and get error), and wants to tick group 5 and 6.
Apparently this issue was raised for list type (in #33) and it also applies to matrix type, meaning that setting shape = "ellipse" when applying euler(...) to a matrix does not change anything as compared to the default (shape = "circle).
Hi @jolars ,
Cool tool ran in to an issue i see here https://stackoverflow.com/a/40212405/5382742 you can use key option to remove legends from within the plot is it missing in the new version?
Or am i missing something?
Thanks
Hi - I am trying to install the package but failed. The problem seems to be from GenSA package. Please see the error message and sessionInfo below. Hope you can help. Thank you
install.packages("eulerr")
Installing package into ‘/home2/pwicha/R/x86_64-pc-linux-gnu-library/3.3’
(as ‘lib’ is unspecified)
also installing the dependency ‘GenSA’
downloaded 47 KB
downloaded 871 KB
sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux Server 7.5 (Maipo)
locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8
[4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] stringr_1.4.0 bindrcpp_0.2.2 plotly_4.9.0 ggplot2_3.1.0 openxlsx_4.1.0 biomaRt_2.30.0
loaded via a namespace (and not attached):
[1] zip_1.0.0 Rcpp_0.12.19 pillar_1.3.0 plyr_1.8.4
[5] bindr_0.1.1 bitops_1.0-6 tools_3.3.2 bit_1.1-14
[9] digest_0.6.18 memoise_1.1.0 jsonlite_1.6 RSQLite_2.1.1
[13] tibble_1.4.2 gtable_0.2.0 viridisLite_0.3.0 pkgconfig_2.0.2
[17] rlang_0.3.0.1 DBI_1.0.0 rstudioapi_0.8 yaml_2.2.0
[21] parallel_3.3.2 withr_2.1.2 dplyr_0.7.7 httr_1.3.1
[25] IRanges_2.8.2 S4Vectors_0.12.2 htmlwidgets_1.3 bit64_0.9-7
[29] stats4_3.3.2 grid_3.3.2 tidyselect_0.2.5 Biobase_2.34.0
[33] glue_1.3.0 data.table_1.11.8 R6_2.3.0 AnnotationDbi_1.36.2
[37] XML_3.98-1.16 blob_1.1.1 purrr_0.2.5 tidyr_0.8.1
[41] magrittr_1.5 BiocGenerics_0.20.0 scales_1.0.0 htmltools_0.3.6
[45] assertthat_0.2.0 colorspace_1.3-2 stringi_1.2.4 RCurl_1.95-4.11
[49] lazyeval_0.2.1 munsell_0.5.0 crayon_1.3.4
Hi Johan,
I believe , ...
is missing from the end of this line:
Line 544 in 032e784
Because of this, e.g. ellipse
shape cannot be used with list input.
Thanks!
Following example from the vignette:
library(eulerr)
# Input in the form of a named numeric vector
fit1 <- euler(c("A" = 25, "B" = 5, "C" = 5,
"A&B" = 5, "A&C" = 5, "B&C" = 3,
"A&B&C" = 3))
# Input as a matrix of logicals
set.seed(1)
mat <- cbind(
A = sample(c(TRUE, TRUE, FALSE), size = 50, replace = TRUE),
B = sample(c(TRUE, FALSE), size = 50, replace = TRUE),
C = sample(c(TRUE, FALSE, FALSE, FALSE), size = 50, replace = TRUE)
)
fit2 <- euler(mat)
#This one plots nicely as in vignette
plot(fit2)
#This one is transparent, but the "lty" seems to have no effect, all lines are solid.
plot(fit2, fill = "transparent", lty = 1:3, fontface = 4)
And R session info:
sessionInfo()
R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252 LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] eulerr_1.1.0
loaded via a namespace (and not attached):
[1] assertthat_0.2.0 tools_3.3.2 Rcpp_0.12.10 grid_3.3.2 lattice_0.20-35
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.