小编mba*_*ete的帖子

Snakemake:将命令行参数传递给脚本

我正在使用一些带有snakemake的python脚本来自动化工作流程。这些脚本接受命令行参数,虽然我可以用snakemake.input[0]snakemake.output[0]等替换它们,但我不愿意这样做,因为我也希望能够在 Snakemake 之外使用它们。

解决这个问题的一种自然方法(我一直在做的)是将它们作为 ashell而不是script. 然而,当我这样做时,依赖图就被破坏了;我更新了脚本,DAG 认为不需要重新运行任何内容。

有没有办法将命令行参数传递给脚本但仍将它们作为脚本运行?

编辑:一个例子

我的Python脚本

import argparse

parser = argparse.ArgumentParser()
parser.add_argument("-o", type=str)
args = parser.parse_args()

with open(args.o, "w") as file:
    file.write("My file output")
Run Code Online (Sandbox Code Playgroud)

我的蛇形档案

rule some_rule:
    output: "some_file_name.txt"
    shell: "python my_script.py -o {output}"
Run Code Online (Sandbox Code Playgroud)

snakemake

5
推荐指数
1
解决办法
4483
查看次数

ggplot2循环数据的密度

我有一个数据集,x代表一年中的某一天(比如生日),我想创建一个密度图.此外,由于我有一些分组信息(比如男孩或女孩),我想使用ggplot2制作密度图的功能.

起初很容易:

require(ggplot2); require(dplyr)
bdays <- data.frame(gender = sample(c('M', 'F'), 100, replace = T), bday = sample(1:365, 100, replace = T))
bdays %>% ggplot(aes(x = bday)) + geom_density(aes(color = factor(gender)))
Run Code Online (Sandbox Code Playgroud)

然而,由于边缘效应,这给出了很差的估计.我想应用这样一个事实:我可以使用圆形坐标,使得365 + 1 = 1 - 12月31日之后的一天是1月1日.我知道该circular软件包提供了此功能,但我没有使用stat_function()调用实现它的任何成功.它对我来说特别有用,ggplot2因为我希望能够使用方面,aes调用等.

此外,为了澄清,我想看起来像geom_density- 我不是在寻找像下图所示的极坐标图:使用ggplot2的圆形密度图.

statistics r ggplot2 kernel-density

4
推荐指数
1
解决办法
603
查看次数

Makefile:从数字序列生成目标

我有兴趣从互联网上的某个位置下载年度数据。我有一个GetYearData.py执行此操作的 python 脚本,将年份和输出文件名作为命令行参数。我想一次在几年的数据上运行这个脚本;我想使用 Make,这样如果我更改开始或结束年份,我就不必重新下载所有数据。

我可以用一个非常简单的 Makefile 做一年:

data/YearData_2000.txt  :  GetYearData.py
  python $< --year 2000 --outfile $@
Run Code Online (Sandbox Code Playgroud)

但是,我想这样做一个循环(或类似的构造),以便在 bash 中的序列中的每一年YEARS=($(seq $(SYEAR) 1 $(EYEAR)))- 我传递--year $(Y)给我的脚本并为--outfile?

makefile gnu-make

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

标签 统计

ggplot2 ×1

gnu-make ×1

kernel-density ×1

makefile ×1

r ×1

snakemake ×1

statistics ×1