camunda流程定义表无数据_[Python04] 学习snakemake,三步轻松搭建生信流程!

59f07b6439ff60cb02ea40fc710c60bd.png

随着学习的不断深入,分析的数据越来越多。你会发现,日常生信分析不过是调用一些相同的函数或者包分析不同的数据,换汤不换药。

那么,如何把分析过程流程化,让数据像工厂的流水线一样自动被处理?

最简单的法子,就是用shell命令写个for循环。

进阶还可以设置下多进程(参考梨酱:[Linux 1] Shell“ 多线程”,提高工作效率)。

但是,用shell写流程存在一些问题

- shell 命令一旦断掉,如何判断中间文件的完整性?
- 下次想要修改流程,重新修改shell 脚本太麻烦!
- 想删掉/保留中间文件,但是代码好复杂?
......

有没有更简捷、少掉头发的办法,把分析的过程“组装”到一起,让电脑“自行”处理数据呢?

那就赶紧用 Snakemake 吧!!!

(Snakemake 翻成中文是“盘蛇”?Σ(っ °Д °;)っ误)

为什么要用 Snakemake ?

Snakemake的优点:

- 支持多线程
- 支持断点运行
- 支持shell命令,还可以和 Python 库结合使用

行,现在我们知道 Snakemake 比 shell 更好用了。

搓手手,那么如何使用 Snakemake 呢?

来试试栗子 ~

0. 安装 snakemake

conda install -c bioconda snakemake -y # -y 表示安装时不询问

1.简单入门,合并两个文件

# 创建两个文本文件
echo "a" > a.txt
echo "b" > b.txt# 创建一个 snakefile 文件
$ touch snakefile# 打开 snakefile 并写入以下代码,然后保存退出
rule test: # 类似Python中的def func,用rule定义一个名为“test”的流程input: # 定义"test"流程中的输入文件expand("{file}.txt", file=["a", "b"]) # snakemake流程中的替换文件的规则,类似于shell中的*.txtoutput: # 定义“test”流程中的输出文件merged.txt # 输出文件名shell: # 表示我们执行的shell命令cat {input} > {output} # 将我们定义的输入文件用cat命令合并输出到output定义的文件# 在shell中运行
$ snakemake

你会发现,Snakemake 定义的 rule 分为 input、output 和 shell 三个部分。

但是,它只支持 shell 命令吗?

不,只要你将 shell 改为 run,也可以使用 Python 或者 R 代码。如下↓

rule test1: # 用rule定义一个名为“test1”的流程input: # 定义"test1"流程中的输入文件expand("{file}.txt", file=["a", "b"]) # snakemake流程中的替换文件的规则,类似于shell中的*.txtoutput: # 定义“test”流程中的输出文件merged.txt # 输出文件名run: #  输入并执行 Python 代码data1 = open("a.txt").read() #读取 a 文件中的所有内容data2 = open("b.txt").read() #读取 b 文件中的所有内容 data = data1 + data2 # 合并到 data 中

你还可以将 run 改为 scripts,执行自定义的 Python 脚本。

2. 将上例延伸——如何合并两个gtf文件?

rule merge_novel_and_known:input: novel="samples/cuffmerge/novel_transcript_gn.gtf", known=GTFoutput: "samples/new_annotation/all_transcripts.gtf"params: gtf=GTF, fa=FASTAmessage: "--- Merging known and novel transcripts."shell:  """cat {input.novel} {input.known} > {output}""" 

你能说出每一行代码的意思吗?

提示:
params 指定程序运行的参数
message 运行该rule时,终端给出的提示信息

其实,每一个 rule 就像是一个代码模块积木

我们利用 Snakemake,先搭建基础的rule积木,接下来只要按顺序把它们放在一起,就可以拼凑出完整的流程!

之后在处理其他类似数据时,只需要略微更改目录等信息,便可复用流程。

何乐而不为?

3. 进阶,如何用 Snakemake 写 Chip-Seq 分析流程?

提示:
1. [软件使用 3] 使用MACS2分析ChIP-seq数据,快速入门!
2. Writing a RNA-Seq workflow with snakemake. Denis Puthier & Aitor Gonzalez. 2 Nov 2015.

如果有任何问题或者建议,可以在评论中留言~

疫情期间,希望大家都能保护好自己!

在家也可以好好学习写代码呀~

ヾ(◍°∇°◍)ノ゙

梨酱:[R 01] 不要一直用ggplot2啦,尝试用ggpubr画图吧!​zhuanlan.zhihu.com
70243f79aae10c61880ba6f833ad9719.png
梨酱:[Python 3] 5分钟学会3种方法给模块添加路径!​zhuanlan.zhihu.com
3a0faa169aab9a73d8a4110675f5db0d.png
梨酱:[论文写作 1] 如何用word批量制作三线表?​zhuanlan.zhihu.com
c5f7740af6bc7d431790d34444f2ce01.png

参考:

  1. Snakemake Tutorial.
  2. Writing a RNA-Seq workflow with snakemake. Denis Puthier & Aitor Gonzalez. 2 Nov 2015.
  3. snakemake使用笔记. 井底蛙蛙呱呱呱. 简书. 2018.
  4. snakemake--我最喜欢的流程管理工具. 徐洲更hoptop. 简书. 2018.
  5. 生物信息学100个基础问题 —— 番外5:使用Snakemake快速搭建生信分析流程. 孟浩巍. 知乎. 2019.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于centos5.8源码安装nginx之LNMP

LNMP 指的是什么呢,这里可以“望文生义”,其是linux NGINX Mysql PHP的组合。每一种工具的安装都有其特长来吸引我们去使用它,对此就要了解其组合的各个工具的特点:Linux:不用多说,这是我们都熟知的以开…

cheatengine找不到数值_“不会找问题”,只配在底层,最高效的思维方式导图,人生开挂!...

点击右上角【关注】,每天获取企业经营管理秘籍!总裁周刊,与您一同成长!声明:文章来源于zhang_liangj,不代表高管周刊立场,如有异议,请私信!文|张良计现在,我们…

比乐高便宜十倍!4合1电动遥控积木玩法百变

▲数据汪特别推荐点击上图进入玩酷屋小木用真金白银来给大家送礼物啦,特别感谢这些年一直以来大家对我们的支持,才让我们越做越好。(点我参与送礼活动)前几天与同事在聊天,他说小时候的梦想就是拥有很多很多的玩具。没…

python类库32[多线程同步Lock+RLock+Semaphore+Event]

2019独角兽企业重金招聘Python工程师标准>>> 一 多线程同步 由于CPython的python解释器在单线程模式下执行,所以导致python的多线程在很多的时候并不能很好地发挥多核cpu的资源。大部分情况都推荐使用多进程。 python的多线程的同步与其他语言基本相同…

加个ing是什么意思_take的意思竟然是“要求”?奇奇怪怪的熟词僻义打卡终于来了!...

慢慢来,比较快。只要不喊停,我们就继续。考研人被玩坏了,出题人:只要我不承认,就没有人能阻止我。下面盘点一下出题人的x操作:2020年英语二完形:trying,乍一看是不是和“尝试”有关&…

每日一笑 | 今天是植树节,我想在你心里种点逼树

全世界只有3.14 % 的人关注了数据与算法之美(图片来源于网络,侵权删)

怎么用计算机计算出选手最后得分,WPS技巧:TRIMMEAN函数计算选手得分

如图1就是某大奖赛的选手评分情况表。在“最后得分”一项中,我们可以用LARGE函数或SMALL函数来计算,如在J3中输入下面的公式:AVERAGE(LARGE(B3:I3,{2,3,4,5,6,7}))即可以得到正确的结果。这里,我们介绍ET提供的内部平均值函数——…

Windows 程序包管理器 1.0 正式发布

在 Microsoft Build 2021 开发者大会上,微软正式发布 Windows Package Manager(程序包管理器)1.0 正式版,目前在 GitHub 上已有超过 1600 个程序包可供下载。Windows 程序包管理器是一个综合的程序包管理器解决方案,由…

围棋天才柯洁怒怼央视国际记者,用实力斩获清华大学免试资格

全世界只有3.14 % 的人关注了数据与算法之美3月10 日,国家体育总局发布了《2019年优秀运动员免试入学推荐名单》,一批在体育领域获得亮眼成就的运动员们,将获得中国各所高校的免试入学机会。在名单上,数据汪找到一个熟悉的名字——…

计算机专业杀毒,计算机病毒查杀

面对计算机病毒日益剧增,普通人的电脑中病毒的几率越来越大,学习几招查杀病毒的方法,有助于保持系统安全运行也避免一些不必要的损失。下面是学习啦小编跟大家分享的是计算机病毒查杀,欢迎大家来阅读学习。计算机病毒查杀步骤/方法…

Azure 上的网站如何识别不同国家和地区的用户

点击上方蓝字关注“汪宇杰博客”导语跨国服务的网站通常需要针对不同国家和地区的用户显示不同的内容。通常我们会根据用户的IP地址识别Ta所在的国家和地区,而自己编写代码以及购买和维护IP数据库,或使用三方的IP数据服务,是潜在的996成本。虽…

中小学不得在校内设置食品经营场所,量子摩尔定律问世,美团运营摩拜亏45亿,英伟达史上最大手笔收购,这就是今天的大新闻。...

今天是3月12日农历二月初六今天星期二去吃饭老板问要饭的吗一兄弟说我要饭的我要饭怎么觉得这对话有点怪怪下面是今天的大新闻中小学不得在校内设置食品经营场所(中国新闻网)据教育部网站消息,由教育部、国家市场监督管理总局、国家卫生健康委…

轮廓处理函数详细

ApproxChains用多边形曲线逼近 Freeman 链 CvSeq* cvApproxChains( CvSeq* src_seq, CvMemStorage* storage, int methodCV_CHAIN_APPROX_SIMPLE, double parameter0, int minimal_perimeter0, int recursive0 ); src_seq涉及其它链的链指针storage存储多边形线段位置的缓存m…

html5与课程思政,“课程思政”怎样做

[本站讯 ]为了提升学校教师的课程思政意识和课程思政建设水平,提高课程思政优秀案例征集水平,5月21日,教学促进与教师发展中心举办了课程思政专题线上分享会.中心主任张树永出席会议,120位教师通过雨课堂参加了直播活动.“课程思政”怎样做?教学案例设计…

Windows 11 快速体验:开始菜单居中,全系圆角设计!

系统类型:Windows 11 专业工作站版 系统版本:Dev系统版本号:OS Build 21996.1任务栏 Windows 11 任务栏上的“开始”菜单和应用程序图标由此前 Windows 操作系统中的“左对齐”样式变为“居中”。如果你不喜欢“居中”可以通过个性化设置更改…

数学建模,还得这样学!

最近天气逐渐晴朗回温(伊芙布德干内库毛德川状态暂时告一阶段),数学建模的热度也在逐步回温(据说大家开始了数学建模知识储备),常有小伙伴私聊小天咨询关于数学建模的事情。春节假期也已经过去,…

测试Live Writer 发表博客

2019独角兽企业重金招聘Python工程师标准>>> 测试成功!!! 转载于:https://my.oschina.net/bonelwh/blog/125845

WPF 菜单栏滚动到顶部后固定的两种方法

最近项目中有这么个需求:菜单栏滚动到顶部后固定在顶部,专业的名词叫吸顶。。这在移动端还是比较常见的。看看效果:下面直接看看代码喽,代码不多:第一种方法思路:写一个和菜单一模一样的菜单,放…

eeprom 数据偶尔变成ff_关于水电站冗余配置下监控系统下发调节令偶尔不动作的案例分析...

点击上方“E小水电”,“星标或置顶公众号”关键时刻,第一时间送达摘要:吉勒布拉克水电站冗余配置下机组PLC组网运行,后台监控系统下发调节令,调节不动作或偶尔动作现象分析。引言吉勒布拉克机组自动化控制为冗余主备双…

美国明确警告德国,3G退网5G手机不需要换号,抽烟酗酒学生不能认定为家庭经济困难,大学食堂凭运动步数打折,这就是今天的大新闻。...

今天是3月13日农历二月初七今天星期三一切都风平浪静下面是今天的大新闻美国明确警告德国放弃华为(环球新闻)7日,德国经济部长彼得•阿尔特迈尔(PeterAltmaier)明确表态,德国不想将华为排除在本国5G建设外。随后,这位部…