我正在使用一个名为 Snakemake 的 python-dsl,如下所示:
from bx.intervals.cluster import ClusterTree
from epipp.config import system_prefix, include_prefix, config, expression_matrix
config["name"] = "correlate_chip_regions_and_rna_seq"
bin_sizes = {"H3K4me3": 1000, "PolII": 200, "H3K27me3": 200}
rule all:
input:
expand("data/{bin_size}_{modification}.bed", zip,
bin_size=bin_sizes.values(), modification=bin_sizes.keys())
rule get_gene_expression:
input:
expression_matrix
output:
"data/expression/series.csv"
run:
expression_matrix = pd.read_table(input[0])
expression_series = expression_matrix.sum(1).sort_values(ascending=False)
expression_series.to_csv(output[0], sep=" ")
Run Code Online (Sandbox Code Playgroud)
我想对run:块内的东西运行 yapf 。
是否有可能让 yapf 忽略 python 中不存在的内容,例如rule关键字等,而只在文件的特定部分使用它?
snakemake是一个类似python的make替代品,它更倾向于工作流而不是编译.它非常好,但也很新,我似乎无法在Emacs中找到它的模式.我只想要一些非常简单的东西:从基本模式的一个非常小的修改,所以我在仔细阅读emacs手册,我在init.el中启动了以下内容:
(define-derived-mode snake-mode fundamental-mode
...
)
Run Code Online (Sandbox Code Playgroud)
像make一样,snakemake对缩进很严格(实际的tab"\ t"字符,而不是当一个TAB类型时默认的emacs行为).当我改为输入"Cq TAB"时,它会在缓冲区中放置一个真正的制表符:这是有效的,我在基本模式下使用Snakefile尝试它并且它运行得很好.因此,为了避免在每次我想在此模式下使用TAB键入"Cq TAB"时,我想要对snake模式进行的第一个添加是将TAB键重新绑定为"Cq TAB"(或类似的东西).所以我仔细阅读了emacs手册并尝试了:
(define-derived-mode snake-mode fundamental-mode
(global-set-key (kbd "\t") (kbd "C-q \t"))
...
)
Run Code Online (Sandbox Code Playgroud)
但是这个和其他替代方案都不起作用...也许重新绑定像TAB键这样的标准键不是推荐的做法?
我想要的蛇模式的另一个补充是它根据python强调语法(但没有任何python行为,例如,python缩进行为)
总而言之,如果文件名为"Snakefile",那么在创建"蛇形模式"时只需对基本模式进行这2个简单修改,并且还可以调用蛇形模式,但我已经花了几个小时阅读emacs手册和做一些谷歌搜索,似乎我甚至没有接近.这很简单,我很确定它是可能的; 任何建议?
谢谢
穆雷