我有一个我想要进行单元测试的发电机对象.它经历一个循环,当在循环结束时,某个变量仍为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)
那么如何测试生成器函数中是否引发异常?
我使用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以使其包含全名?
我有以下示例数据:
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, …
我有一个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?
我有一个项目,我使用epydoc记录.现在我正在尝试切换到狮身人面像.我为epydocs格式化了所有文档字符串,使用B {},L {}等进行粗体,链接等,并使用@ param,@ return,@ raise等来解释输入,输出,异常等.
所以现在我转向sphinx它失去了所有这些功能.有没有一种自动方式将为epydocs格式化的文档字符串转换为为sphinx格式化的文档字符串?
我有一个恼人的错误,它已经弹出,我不知道它来自哪里.错误是:
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.
我怎么能找到这个?
我想获得给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脚本输入中的倒数第二个参数呢?
我必须经常搜索几个.7z(用LZMA压缩)文件.我没有足够的内存来同时解压缩或将存档更改为.gz.目前我解压缩一个,搜索我需要的东西,删除提取的内容,解压缩下一个.我想以与gzip相同的方式浏览档案:
f = gzip.open('archive.gz')
for i in f:
do stuff
Run Code Online (Sandbox Code Playgroud)
有一个模块/方法用.7z文件吗?
我有以下功能
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)
但除了它看起来不是一个好的解决方案之外,数字直到脚本结束才会打印。有没有好的方法可以做到这一点?
我有一个数据帧列表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)