【问题标题】:Is there any way to use parallel to speed up a plotVenn() process?有什么方法可以使用并行来加速 plotVenn() 过程?
【发布时间】:2020-04-30 19:10:11
【问题描述】:

我正在尝试制作一个有 15 组的维恩图。我可以用 9 来完成,使用 nVennR 包,但我必须绘制 22 次以压缩结果。

myV <- createVennObj(nSets = 9, sNames = c( "NN","AdINI","AdTAR",
                                            "NN con NBI",
                                            "NN sin NBI",
                                            "AdINI con NBI",
                                            "AdINI sin NBI",
                                            "AdTAR con NBI",
                                            "AdTAR sin NBI"))

myV <- setVennRegion(myV, c("NN con NBI", "NN"), 4343)
myV <- setVennRegion(myV, c("NN sin NBI", "NN"), 22526)
myV <- setVennRegion(myV, c("AdINI con NBI", "AdINI"), 2032)
myV <- setVennRegion(myV, c("AdINI sin NBI", "AdINI"), 9545)
myV <- setVennRegion(myV, c("AdTAR con NBI", "AdTAR"), 2641)
myV <- setVennRegion(myV, c("AdTAR sin NBI", "AdTAR"), 10125)
i=0
while (i<22) {
        myV <- plotVenn(nVennObj = myV, outFile='democentro.svg')
        i=i+1
}

这花了几分钟,但结果却如我所料: 现在我想对 15 组做同样的事情。因为在上一张图表中,较小的集合被分成两部分。我试过这样做,但这个过程永远不会结束,即使是第一个情节。

有什么方法可以充分发挥我电脑的潜力吗?

by the way, I'm using Windows 10 and I have 16 [GB] of RAM

【问题讨论】:

    标签: r performance plot parallel-processing venn-diagram


    【解决方案1】:

    nVennR 模块是 CPU 密集型的,RAM 不是问题。实际问题是每行的点数随着集合的数量非线性地增加。我微调了该行为,以便可以尽可能快地渲染多达九个集合。我一直在研究新版本的算法,它会丢弃不必要的点,并且对于像你这样的情况可以更快。不幸的是,我无法将此版本移植到R(我相信Rcpp 存在范围界定问题)。

    您可以从https://github.com/vqf/nVenn 试用该版本。您将在此处找到有关如何准备文件的说明。您甚至可以在https://github.com/vqf/nVenn/tree/master/binaries/Win 下载Windows 的二进制文件。

    【讨论】:

    • 非常感谢您的回答,我的朋友!感谢您创建 nVenn,这太棒了。我创建了描述维恩图区域的 txt 文件。 15 组等于 2^15 = 32,768 个组合 +15 个名称 + 1 个标题 = 32,784 行。在这一步之后我被卡住了,因为我不熟悉 perl ...我下载了 ATOM 并安装了 Run Script 包,但我无法运行脚本。我收到以下错误:“perl”不被识别为内部或外部命令、可运行程序或批处理文件
    • 这意味着你没有安装 perl。你可以从strawberryperl.com下载它
    • 嗯,你是对的,我为我的业余行为道歉。现在我可以运行脚本,但没有得到任何结果。我确定 txt 文件与 .pl 位于同一文件夹中,并且具有您描述的结构 === Group analysis === === nVenn input === nVenn v1.2 0 0 [Finished in 0.092s]。再次感谢您的帮助!
    • 你可以使用feed_venn_noheader.pl创建输入文件(类似于perl feed_venn_noheader.pl file1 file2 ... &gt;venn.txt。这应该创建文件venn.txt作为输入。如果你运行nVenn.exe,你会得到一个提示要求输入文件。如果你运行nVennOGL.exe,输入文件必须在同一个文件夹中,并且它的名字必须是venn.txt。对于这个应用程序,我推荐nVennOGL.exe,因为你可以控制阶段按ESC 进行模拟。当您对结果满意时,只需按ESC,然后再按一次直到它停止。
    • 我想我已经接近了,但我仍然不能。我用你在 ex1、ex2 和 ex3 中展示的组创建了所有 txt 文件。当我运行perl feed_venn_noheader.pl file1.txt ... file10.txt &gt;venn.txt 时,它返回以下错误:Bareword "venn" not allowed while "strict subs" in use at D:\ ...\feed_venn_noheader.pl line 83 我读到它可能可以通过引用来解决,但我不能——或者我不知道该怎么做。
    猜你喜欢
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2011-10-22
    • 2016-02-16
    • 1970-01-01
    相关资源
    最近更新 更多