小编Nie*_*ein的帖子

如何在生成器对象中使用unittest的self.assertRaises和异常?

我有一个我想要进行单元测试的发电机对象.它经历一个循环,当在循环结束时,某个变量仍为0我引发异常.我想对此进行单元测试,但我不知道如何.以此示例生成器为例:

class Example():
    def generatorExample(self):
        count = 0
        for int in range(1,100):
            count += 1
            yield count   
        if count > 0:
             raise RuntimeError, 'an example error that will always happen'
Run Code Online (Sandbox Code Playgroud)

我想做的是

class testExample(unittest.TestCase):
    def test_generatorExample(self):
        self.assertRaises(RuntimeError, Example.generatorExample)
Run Code Online (Sandbox Code Playgroud)

但是,生成器对象不是可密封的,这给出了

TypeError: 'generator' object is not callable
Run Code Online (Sandbox Code Playgroud)

那么如何测试生成器函数中是否引发异常?

python unit-testing generator

10
推荐指数
1
解决办法
1万
查看次数

如何强制标签适合VennDiagram?

我使用VennDiagram使用以下示例代码制作维恩图:

library(VennDiagram)
venn.diagram(list(shams_90d = 1:3, shams_90d_4h = 2:4, sham3__shams_90d = 3:5,
             sham3_90d__shams = 5:7, sham3_90d__shams_4h = 6:9),
             fill = c("red", "green", "blue", "yellow", "purple"),
             alpha = c(0.5, 0.5,0.5, 0.5, 0.5), cex = 1,cat.fontface = 2,
             lty =1, filename = "trial2.emf");
Run Code Online (Sandbox Code Playgroud)

这给出了这个数字:

在此输入图像描述

图中左侧和右侧的名称被截断,底部也有一点名称.我尝试改变宽度,但这使得维恩图本身变宽,名字仍然被切断.

如何通过在图表的左侧和右侧添加更多的空格,或者将名称更多地推向维恩图来制作VennDiagram以使其包含全名?

r venn-diagram

10
推荐指数
1
解决办法
4099
查看次数

如何使用png设备为heatmap.2绘图添加更多边距?

我有以下示例数据:

sel = structure(c(1.29955, 2.52295, 1.11021, 2.52008, 8.20255, 8.50118, 
                  5.82189, 5.8108, 1.55928, 8.2552, 5.25119, 5.55055, 1.22525, 
                  3.152, 3.9299, 5.50921, 5.25591, 5.11218, 1.55951, 2.5525, 
                  9.2358, 2.0928, 5.2538, 2.5539, 8.52592, 2.59521, 5.55858, 
                  5.92955, 2.22089, 1.52105), 
         .Dim = c(10L, 3L), .Dimnames = list(c("a", "b", 
         "c", "d", "e", "f", "g", "h", 
         "i", "j"), c("Label.1", "Label.2", "Label.3")))
Run Code Online (Sandbox Code Playgroud)

我使用此代码绘制图形:

col = c("#FF0000", "#FF0000", "#FF0000")
par(mar=c(7,4,4,2)+0.1) 
png(filename='test.png', width=800, height=750)
heatmap.2(sel, col=redgreen(75), scale="row", ColSideColors=col,
          key=TRUE, symkey=FALSE, density.info="none", trace="none")
graphics.off()
Run Code Online (Sandbox Code Playgroud)

这给了我这个热图:

在此输入图像描述

如您所见,x轴标签被切断.我试图使par(mar=c(7,4,4,2)+0.1)(从默认值par(mar=c(5,4,4,2)+0.1))更大的边距,但这不会改变标签被切断的方式.

我试图改变lmat, …

png r margins heatmap

10
推荐指数
1
解决办法
3万
查看次数

如何为ggplot的aes使用数据框的名称和rownames?

我有一个enrichment_df看起来像这样的数据框

                                         meclocycline pimozide isocorydine alvespimycin
day1_day3__sham3_strict_enrichment             -0.869    0.855      -0.859        0.539
hour4_day1_day3__sham3_strict_enrichment       -0.294    0.268      -0.539       -0.120
day7_day14__sham3_strict_enrichment            -0.333    0.404       0.297        0.233
day90__sham3_strict_enrichment                 -0.511   -0.657      -0.519        0.184
day14__sham3_strict_enrichment                 -0.239   -0.420       0.513       -0.422
day7__sham3_strict_enrichment                  -0.394   -0.380      -0.408        0.337
Run Code Online (Sandbox Code Playgroud)

我想用/sf/answers/1625979141/中的示例制作一个重叠的条形图.我希望填充为rownames,x轴为colnames.我尝试绘制它

ggplot(enrichment_df, aes_string(names(enrichment_df), fill = rownames(enrichment_df))) + 
geom_bar(position = 'identity', alpha = .3)
Run Code Online (Sandbox Code Playgroud)

但是,这会给出错误 object 'day1_day3__sham3_strict_enrichment' not found

如何在ggplot的aes(或aes_string)中使用rownames和colnames?

r ggplot2

10
推荐指数
1
解决办法
1万
查看次数

从epydoc的文档字符串格式切换到sphinx文档字符串格式的自动方式?

我有一个项目,我使用epydoc记录.现在我正在尝试切换到狮身人面像.我为epydocs格式化了所有文档字符串,使用B {},L {}等进行粗体,链接等,并使用@ param,@ return,@ raise等来解释输入,输出,异常等.

所以现在我转向sphinx它失去了所有这些功能.有没有一种自动方式将为​​epydocs格式化的文档字符串转换为为sphinx格式化的文档字符串?

python docstring converter epydoc python-sphinx

9
推荐指数
2
解决办法
1835
查看次数

如何找出我的错误来自哪里?

我有一个恼人的错误,它已经弹出,我不知道它来自哪里.错误是:

Error   31  Unable to copy file "app.config" to "bin\Debug\Framework.Tests.dll.config". Could not find file 'app.config'.   Framework.Tests
Run Code Online (Sandbox Code Playgroud)

问题是,我在任何地方都没有bin\Debug文件夹,并且它没有说它试图复制app.config的位置.双击错误不会将我带到任何试图复制的代码,所以这对我也没有帮助.所以我不知道应该在哪里制作app.config.

我怎么能找到这个?

.net c# visual-studio

7
推荐指数
1
解决办法
4946
查看次数

如何从shell脚本获取倒数第二个参数?

我想获得给shell程序的第二个最后一项.目前我这样做:

file1_tmp="${@: -2}"
oldIFS=$IFS
IFS=" "
count=0
for value in $file1; do
  if [[ count -e 0 ]]; then
    file1=$value
  fi
    count=1
done
oldIFS=$IFS 
Run Code Online (Sandbox Code Playgroud)

我确信有一种更简单的方法可以做到这一点.那么如何从尽可能少的行中获取shell脚本输入中的倒数第二个参数呢?

unix bash arguments sh

7
推荐指数
4
解决办法
7893
查看次数

是否有相当于.zz文件的gzip.open()?

我必须经常搜索几个.7z(用LZMA压缩)文件.我没有足够的内存来同时解压缩或将存档更改为.gz.目前我解压缩一个,搜索我需要的东西,删除提取的内容,解压缩下一个.我想以与gzip相同的方式浏览档案:

f = gzip.open('archive.gz')
for i in f:
    do stuff
Run Code Online (Sandbox Code Playgroud)

有一个模块/方法用.7z文件吗?

python windows 7zip archive

6
推荐指数
1
解决办法
2769
查看次数

打印 pool.map_async 的进度

我有以下功能

from multiprocessing import Pool
def do_comparison(tupl):
    x, y = tupl # unpack arguments
    return compare_clusters(x, y)

def distance_matrix(clusters, condensed=False):
    pool = Pool()
    values = pool.map_async(do_comparison, itertools.combinations(clusters, 2)).get()
    do stuff
Run Code Online (Sandbox Code Playgroud)

是否可以打印进度pool.map_async(do_comparison, itertools.combinations(clusters, 2)).get()?我通过像这样向 do_comparison 添加计数来尝试它

count = 0
def do_comparison(tupl):
    global count
    count += 1
    if count % 1000 == 0:
        print count
    x, y = tupl # unpack arguments
    return compare_clusters(x, y)
Run Code Online (Sandbox Code Playgroud)

但除了它看起来不是一个好的解决方案之外,数字直到脚本结束才会打印。有没有好的方法可以做到这一点?

python multiprocessing

6
推荐指数
1
解决办法
5325
查看次数

如何对同一列中的数据帧列表中的所有数据帧进行排序?

我有一个数据帧列表dataframes_list.举个例子,我把它dput(dataframes_list)放在底部.我想对列中列表中的所有数据帧进行排序enrichment.我可以用一个数据帧排序

first_dataframe <- dataframes_list[[1]]
sorted_dataframe <- first_dataframe[order(first_dataframe$enrichment),] 
Run Code Online (Sandbox Code Playgroud)

我如何为每个数据帧执行此操作dataframes_list

例如dataframes_list:

list(structure(list(rank = c(1, 2, 3, 4, 5, 6), cmap.name = c("meclocycline", 
"pimozide", "isocorydine", "alvespimycin", "15-delta prostaglandin J2", 
"naloxone"), mean = c(-0.471, 0.504, -0.49, 0.193, 0.296, -0.383
), n = c(4, 4, 4, 12, 15, 6), enrichment = c(-0.869, 0.855, -0.859, 
0.539, 0.476, -0.694), p = c("0.00058", "0.00058", "0.00068", 
"0.00072", "0.00122", "0.00199"), specificity = c("0", "0.0302", 
"0", "0.069", "0.2961", "0.0155"), percent.non.null = …
Run Code Online (Sandbox Code Playgroud)

sorting r dataframe

6
推荐指数
2
解决办法
2715
查看次数