Snakemake - 如何使用文件的每一行作为输入?

2024-03-21

我需要使用文件的每一行tissuesused.txt作为snakemake中并行规则的输入。我想总共大约有 48 个工作机会。

for line in $(cat tissuesused.txt)
do
   echo "Sorting $line.phen_fastqtl.bed to $line/$line.pheno.bed..."
   bedtools sort -header -i $line/$line.phen_fastqtl.bed > $line/$line.pheno.bed 
   echo "bgzipping $line/$line.pheno.bed..."
   bgzip -f $line/$line.pheno.bed
   #figure out where tabix outputs
   echo "Indexing $line/$line.pheno.bed.gz..."
   tabix -p bed $line/$line.pheno.bed.gz
done

我该如何在snakemake中做到这一点?我在网上找不到任何关于此的信息。这项工作发生在管道的中途,因此我不知道如何在蛇文件的顶部为尚不存在的文件定义一个函数。我只想创建一个字符串列表,每个字符串都包含在以下位置找到的一种人体组织的缩写tissuesused.txt。我找到了一个Snakemake 文档中的部分 https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#functions-as-input-files看起来它们可能相关,但我不确定如何将其应用到我的案例中。先感谢您。

编辑: 这是我到目前为止所拥有的,不确定它是否会起作用:

def fileAsList(file):
    with open(file) as f:
        for line in f:
            lis = []
            spl = line.split()
            lis.append(spl[0])
        return lis
...
rule sort_zip_ind_pheno:
    input:
        tis=fileAsList("tissuesused.txt"),
        chk=".make_tis_dirs.chkpnt"
    output:
        touch(".sort_zip_ind_pheno.chkpnt")
    shell:
        "bedtools sort -header -i {input.tis}/{input.tis}.phen_fastqtl.bed > \
        {input.tis}/{input.tis}.pheno.bed;"
        "bgzip -f {input.tis}/{input.tis}.pheno.bed;"
        "tabix -p bed {input.tis}/{input.tis}.pheno.bed.gz"

请告诉我这是否有意义。


我想你正在寻找的是检查站 https://snakemake.readthedocs.io/en/stable/snakefiles/rules.html#data-dependent-conditional-execution在《蛇形》中。看一下这个例子:

checkpoint get_tissue:
    output:
        "tissuesused.txt"
    run:
        with open(output[0], 'a') as f:
            for i in range(9):
                f.write(f"{i}\n")


rule read_tissue:
    output:
        "tissue_{n}.txt"
    shell:
        """
        echo "this is tissue {wildcards.n}" > {output}
        """


def read_tissues_output(wildcards):
    with open(checkpoints.get_tissue.get().output[0]) as f:
        samples = [sample for sample in f.read().split('\n') if len(sample) > 0]  # we dont want empty lines
        return expand("tissue_{sample}.txt", sample=samples)

rule all:
    input:
        read_tissues_output

并运行它

snakemake --until all

规则所有用途read_tissues_output作为输入函数(正如您在问题中指定的那样)。然后该函数尝试打开检查点的输出get_tissue,如果它还不存在,它将生成它。一旦输出存在,​​函数就会读取文件,并返回我们想要生成的文件(tissue_{1-10}). Rule read_tissue可以为我们生成然后(并行)生成这些文件。

edit:

组织使用.txt:

WHLBLD
TESTIS
THYROID

蛇形锉刀

def read_tissues_output():
    with open('tissuesused.txt') as f:
        samples = [sample for sample in f.read().split('\n') if len(sample) > 0]  # we dont want empty lines
        return expand("tissue_{sample}.txt", sample=samples)

rule all:
    input:
        read_tissues_output()


rule read_tissue:
    output:
        "tissue_{n}.txt"
    shell:
        """
        echo "this is tissue {wildcards.n}" > {output}
        """
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Snakemake - 如何使用文件的每一行作为输入? 的相关文章

  • Python 3 - 如何从高维数据制作马赛克图?

    我有一个 pandas DataFrame data pd read csv r C data path demographics csv sep print data PersonID Married No of Children Sex
  • 如何在Django表单中设置密码显示/隐藏眼睛按钮

    首先 我将尝试使用原生 HTML 和 jquery 来解决这个问题 但我想以 Django 形式解决这个问题 而不需要任何脚本 我会尝试this https itsolutionstuff com post bootstrap show h
  • 将 python filedialog 限制为特定文件类型

    我创建了以下试用代码来制作一个程序 该程序将 Excel 工作表加载到数据框中 然后将该数据框保存到另一个 Excel 工作表 所有用户选择 import os import pandas from pandas import ExcelW
  • 在 Python 3.5 64 位上通过 pip 安装 OpenCV

    我尝试安装 OpenCV 但找不到任何合适的 pip 软件包 我决定上网查找有关如何安装它的官方文档 并发现this https opencv python tutroals readthedocs io en latest py tuto
  • pyqt5调用url时处于无响应状态

    我刚刚在 pyqt 中实现了登录 但在调用 url 和获取响应之间 qt 窗口显示无响应状态 谁能建议我如何避免不响应状态 code class Login QDialog def init self height width parent
  • TensorFlow 未编译为使用 SSE(等)指令,但这些指令是可用的

    我第一次使用一些示例代码运行 TensorFlow 运行代码时我收到以下警告 有谁知道为什么会发生这种情况以及如何解决它 2017 03 31 02 12 59 346109 W c tf jenkins home workspace re
  • OpenAI 耳语; FileNotFoundError: [WinError 2] 系统找不到指定的文件

    我想看看 OpenAI Whisper 看看是否能找到一些适合它的个人应用程序 我去了 github 并按照说明进行了设置 我的主系统是 Windows 11 我收到此错误 FileNotFoundError WinError 2 系统找不
  • OS X Mavericks 上的 Python 3 分段错误

    我在 OS X Mavericks 上使用 Python 3 时遇到了分段错误 关于如何解决这个问题有什么建议吗 我尝试从Python站点重新安装该包 但这没有效果 如何在系统上重新编译 Python 3 这个问题的存在是因为这个bug h
  • 在Python子目录中创建文件?

    在我的 Python 脚本中 我需要在子目录中创建一个新文件而不更改目录 并且需要从当前目录不断编辑该文件 My code os mkdir datetime dst for ip in open list txt with open ip
  • 如何使用Python3将ruamel.yaml转换为dict?

    我想要一个dict or OrderedDict from ruamel yaml 我正在使用 Python 3 8 如果有帮助的话 很乐意切换到 3 9 from ruamel yaml import YAML from collecti
  • Python - 重写 print()

    我正在使用 mod wsgi 想知道是否可以覆盖 print 命令 因为它没用 这样做是行不通的 print myPrintFunction 因为这是一个语法错误 Print 不是 Python 2 x 中的函数 因此这不能直接实现 但是
  • Python 3.7 Windows 不支持 dbm.gnu 吗?

    做的时候 import dbm gnu 在适用于 Windows 的标准 Python 3 7 6 64 上 我得到 文件 C Python37 lib dbm gnu py 第 3 行 位于从 gdbm 导入 ModuleNotFound
  • Python 3.8 的点子

    如何安装适用于 Python 3 8 的 Pip 我将 3 8 设置为我的默认 Python 版本 sudo apt install python3 8 pip gives 无法找到包 python3 8 pip 和跑步 python3 8
  • 将画布的鼠标坐标转换为地理坐标

    我正在尝试使用 Python Tkinter 创建包含意大利所有城市的地图Canvas 我在网上找到了一张意大利地图的图片 其中突出显示了一些城市 并将其插入到我的Canvas 之后 我使用一个函数来确定 2 个突出显示的城市的画布坐标 i
  • django 2.0 中的错误 404 静态文件

    我试图在 django 2 0 中找到我的所有静态文件 但是当我只运行服务器时 我收到 404 错误 这是我的设置代码 STATIC URL static STATIC ROOT var www example com static STA
  • Python 双星号不是 **kwargs,而是在函数调用本身上使用

    在这里观看 https youtu be F5mRW0jo U4 t 9267 https youtu be F5mRW0jo U4 t 9267 他继续写下电话 Product objects create my form cleaned
  • sklearn pipeline + keras顺序模型-如何获取历史记录?

    Keras https keras io模型 当 fit被调用时 返回一个历史对象 如果我将此模型用作 sklearn 管道的一步 是否可以检索它 顺便说一句 我正在使用 python 3 6 提前致谢 History 回调记录每个时期的训
  • 使用 python-shell 持续交换数据

    我需要从节点运行一些 python 脚本 由于我的 python 脚本使用复杂的结构 我认为如果只加载这些结构一次 然后使用这些结构运行一些特定的脚本 任务 会更好 在节点上 我想永远运行一个脚本 或者直到我说它可以终止 并继续向该脚本发送
  • Python ttk.combobox 强制发布/打开

    我正在尝试扩展 ttk 组合框类以允许自动建议 我到目前为止的代码运行良好 但我想让它在输入一些文本后显示下拉列表 而不从小部件的输入部分移除焦点 我正在努力解决的部分是找到一种强制下拉的方法 在 python 文档中我找不到任何提及这一点
  • 默认可变参数的惯用方式

    在 python 中 如果直接将可变类型设置为默认参数 则会出现众所周知的边缘情况 def foo x return x y foo y append 1 print foo 通常的解决方法是将参数默认为None然后将其放入体内 然而 有

随机推荐

  • 级联空引用异常检查?

    有没有办法在 C 中进行通用级联空引用检查 我想要实现的是 如果我试图访问一个字符串变量 它是类 C 的一部分 而类 C 又在类 B 中 而类 B 又在 A 中 ABC str 如果我传入 A 我必须检查 A 是否为空 然后检查 B 是否为
  • 使用 smack 库的 GCM NoResponseException:回复超时内未收到响应

    我是 gcm 新手 我尝试使用 Smack API 连接到 GCM 的云连接服务器 XMPP 一开始还好 我的代码 uid 123456789 apiKey A B XMPPTCPConnectionConfiguration Builde
  • 当其中任意 1 个组合框发生更改时,列表框中的所有组合框都会发生变化

    我有一个ListBox在绑定到的表单上ObservableCollection自定义类型 每个项目内都有一个ComboBox绑定到枚举类型 当窗口加载时 所有ComboBoxes 默认为某个值 当我改变SelectedItem对于任何一个
  • 如何设置“git集群”

    我们正在考虑将我们的源代码版本控制系统从 Subversion 更改为 Git 我们正在突破当前设置的限制 并认为使用 git 会更好 我们一直在办公室使用主服务器 并在数据中心运行镜像 镜像配置为代理传入主服务器的提交 这样 两台机器就像
  • 为什么 emacs 中的 vc-git 和 magit 忽略我的 git 配置设置?

    我正在使用 magit 运行 emacs 24 1 1 的官方 Windows 二进制文件 当我提交文件时 日志中显示的用户名和电子邮件将从我的帐户和计算机名称中删除 而不是使用全局 git 配置或此重现的本地设置中设置的值 从 git b
  • 如何向数组添加元素?

    如何向现有数组添加元素 我有数组 Array 0 gt Array user id gt 1 user login gt Saibamen user password gt 4028a0e356acc947fcd2bfshfh3w26gds
  • SDL2 升起窗口而不给予焦点

    我需要在窗口上显示工具提示 我正在使用工具提示创建第二个窗口 并使用 SDL RaiseWindow 将其带到顶部 然而 这样做会导致工具提示窃取焦点 这不是我想要的 有没有办法在不改变焦点的情况下将窗口置于顶部 另外 有没有办法在不改变窗
  • inDither = true Android

    有人可以解释一下设置时到底发生了什么吗抖动 true在 Android 中配置位图的上下文中 在 Developer Android 上可以阅读有关静态变量的信息 Config RGB 565 根据源的配置 此配置可能会产生轻微的视觉伪影
  • 为什么Java的SimpleDateFormat不是线程安全的? [复制]

    这个问题在这里已经有答案了 请用代码示例说明为什么 SimpleDateFormat 不是线程安全的 这堂课有什么问题 是SimpleDateFormat的格式化函数的问题 请给出在课堂上演示此错误的代码 FastDateFormat 是线
  • 如何在PyUsb中绑定/取消绑定USB设备?

    我需要在 python 脚本上打开 关闭多个 USB 设备 我可以使用 PyUsb 绑定和取消绑定 USB 设备吗 我可以使用 shell 命令来做到这一点 关闭电源 echo device nuber gt sys bus usb dri
  • SQLite - 表约束唯一和列约束唯一之间有什么区别?

    关于 SQLite 的问题 在 CREATE TABLE SQL 中 我们可以通过以下任一方式添加 UNIQUE 约束 列约束或表约束 我的问题很简单 他们的工作方式不同吗 我能发现的唯一区别是 在表约束中 可能有多个indexed col
  • 找出 MySQL 在 Mac OS X 上的安装位置

    如何找出 Mac OS X 10 7 9 上 MySQL 的安装位置 我安装了 MAMP 所以我认为它与此安装捆绑在一起 要检查 MAMP 的 MySQL 版本 请在终端中使用以下命令 Applications MAMP Library b
  • DOCX w:t(文本)元素跨越多个 w:r(运行)元素?

    我们编写了一个软件 可以从 Word 文档的内部 XML 文件中处理 XML 并用替换值替换某些代码 有时我们发现此类代码在多次运行之间被破坏 以下是我们有时会遇到的此类情况的示例
  • 为子类添加额外的“方法”

    这是一个概念性问题 旨在了解如何在 C 中完成 OOP 技术 我知道它不实用或不推荐 并且有许多语言可以更好地实现此目的 但我只是看看作为初学者如何完成它到 C 假设我有一个名为的基础对象Thing 它将有一些数据和一些功能 然后我想添加另
  • 出现 TypeError:this.props 在 ReactJs 上未定义

    我正在尝试做教程 https facebook github io react docs tutorial html https facebook github io react docs tutorial html import Reac
  • 带有“fromCharCode”(字符长度)的 Javascript 映射数组

    以下内容来自 Chrome 控制台中的交互式会话 myarray gt 67 65 84 String fromCharCode 67 gt C String fromCharCode 67 length gt 1 String fromC
  • 可利用的 C# 函数 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这个问题类似于可利用的 PHP 函数 https stackoverflow com questions 3115559 exploi
  • Kendo UI 绑定弹出编辑器中的下拉值

    我有一个 Kendo 网格 它可以选择使用弹出编辑器添加新记录 弹出编辑器中的一个字段是 DropDownList 当我打开弹出编辑器时 我从下拉列表中预先选择了第一条记录 由于我预先选择了它 我希望它在网格内自动创建 绑定 当按 更新 时
  • Python 会缓存重复访问的文件吗?

    我想知道 Python 是否足够聪明 可以缓存重复访问的文件 例如当使用 pandas 读取相同的 CSV 或多次 unpickle 相同的文件时 这是否是 Python 的责任 还是应该由操作系统来处理 不 Python 只是一种语言 它
  • Snakemake - 如何使用文件的每一行作为输入?

    我需要使用文件的每一行tissuesused txt作为snakemake中并行规则的输入 我想总共大约有 48 个工作机会 for line in cat tissuesused txt do echo Sorting line phen