小编Man*_*thy的帖子

Snakemake:使用run指令时如何实现log指令?

logSnakemake 允许使用指定日志文件名称的参数为每个规则创建日志。将输出结果通过管道传输到此日志相对简单shell,但我无法找出记录输出输出的方法run(即 python 脚本)。

一种解决方法是将 python 代码保存在脚本中,然后从 shell 运行它,但我想知道是否还有另一种方法?

snakemake

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

Snakemake - 无法从输出文件中确定输入文件中的通配符

我对snakemake很陌生,而且对python也不太熟悉(所以抱歉,这可能是一个非常基本的愚蠢问题):

我目前正在构建一个管道来使用atlas分析一组 bamfiles 。这些 bam 文件位于不同的文件夹中,不应移动到公共文件夹中。因此,我决定提供一个如下所示的示例列表(这只是一个示例,实际上示例可能位于完全不同的驱动器上):

Sample     Path
Sample1    /some/path/to/my/sample/
Sample2    /some/different/path/
Run Code Online (Sandbox Code Playgroud)

并将其加载到我的 config.yaml 中:

sample_file: /path/to/samplelist/samplslist.txt
Run Code Online (Sandbox Code Playgroud)

现在到我的 Snakefile:

import pandas as pd

#define configfile with paths etc.
configfile: "config.yaml"

#read-in dataframe and define Sample and Path
SAMPLES = pd.read_table(config["sample_file"])
BAMFILE = SAMPLES["Sample"]
PATH = SAMPLES["Path"]

rule all:
    input:
        expand("{path}{sample}.summary.txt", zip, path=PATH, sample=BAMFILE)

#this works like a charm as long as I give the zip-function in the rules 'all' and 'summary':

rule indexBam:
    input: 
        "{path}{sample}.bam"
    output:
        "{path}{sample}.bam.bai"
    shell:
        "samtools …
Run Code Online (Sandbox Code Playgroud)

python pipeline python-3.x snakemake

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

通过蛇形规则限制作业数量

是否可以通过蛇形规则中的特定规则来限制要运行的作业数量?--jobs全局控制一次允许运行多少个作业,但是我想通过特定规则进行限制。

这是因为,我有一个特定的规则,该规则最多可以同时用于两个作业。但是,如果我设置--jobs为20,则会导致该特定规则中的工具崩溃。我在LSF群集中使用snakemake v5.2.0。

snakemake

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

snakemake 集群脚本 ImportError snakemake.utils

我有一个奇怪的问题,它来来去去,我真的不知道什么时候以及为什么。
我正在运行这样的蛇形管道:

conda activate $myEnv    
snakemake -s $snakefile --configfile test.conf.yml --cluster "python $qsub_script" --latency-wait 60 --use-conda -p -j 10 --jobscript "$job_script"
Run Code Online (Sandbox Code Playgroud)

我在 conda 环境中安装了 snakemake 5.9.1(也尝试降级到 5.5.4)。
如果我只运行这个命令,这工作正常,但是当我将此命令 qsub 到我正在使用的 PBS 集群时,我收到一个错误。我的 qsub 脚本如下所示:

#PBS stuff...

source ~/.bashrc
hostname
conda activate PGC_de_novo

cd $workDir
snakefile="..."
qsub_script="pbs_qsub_snakemake_wrapper.py"
job_script="..."
snakemake -s $snakefile --configfile test.conf.yml --cluster "python $qsub_script" --latency-wait 60 --use-conda -p -j 10 --jobscript "$job_script" >out 2>err
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息是:

...
Traceback (most recent call last):
  File "/path/to/pbs_qsub_snakemake_wrapper.py", line 6, in <module>
    from snakemake.utils …
Run Code Online (Sandbox Code Playgroud)

python hpc pbs conda snakemake

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

如何设置在 Tkinter Entry 小部件中查看文本结尾?

我正在制作一个 GUI 界面,以使我的脚本可供普通用户使用。我的问题是 - 我有一个条目小部件,当用户使用浏览按钮选择文件时,它将“文件路径”作为值。问题是条目小部件显示文件路径的开头(左端),但我更希望看到文件路径的右端。

这是我的脚本。

from Tkinter import *
from tkFileDialog import askopenfilename

app = Tk()
app.title("ABC")
app.geometry("300x100")

def browse_for_file(entry_name, filetype):
    File_path = askopenfilename(filetypes = filetype)
    entry_name.delete(0, END)
    entry_name.insert(0, File_path)

templ_filename = StringVar()
templ_entry = Entry(app, textvariable = templ_filename, width = 30)
templ_entry.grid(row = 3, column = 1, sticky=W)

filetype_fasta = [('fasta files', '*.fasta'), ('All files', '*.*')]
button_templ = Button(app, text = 'Browse', width =6, command = lambda:browse_for_file(templ_entry, filetype_fasta))
button_templ.grid(row = 3, column = 2)

app.mainloop()
Run Code Online (Sandbox Code Playgroud)

python tkinter alignment python-2.7 tkinter-entry

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

在 Snakemake 脚本中使用 argparse

是否可以将自定义命令行参数传递给snakemake脚本?我已经尝试过,但是执行 Snakefile 会导致argparseerror snakemake: error: unrecognized arguments: -zz。下面是一个示例脚本。

import argparse

def get_args():
    parser = argparse.ArgumentParser(description='Compares Illumina and 10x VCFs using RTG vcfeval')

    # required main arguments
    parser.add_argument('-zz', metavar='--filename', dest='fn', help='Filename', required=True)

    # parse arguments
    args = parser.parse_args()

    fn = args.fn
    return fn

fn = get_args()

rule test_1:
    input:
        fn + "/example.txt"
    shell:
        "echo Using file {input}"
Run Code Online (Sandbox Code Playgroud)

python command-line-arguments argparse python-3.x snakemake

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