打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python攻克第1关:批量调用

说来惭愧,生信进坑20年,工作也十余年了,我竟然一直不会Python。

上学时学的Perl,后来又自学了点R,就一直这么用下来啦。

不是说Perl和R不好,只是这几年Python实在太厉害,出了好多厉害的包和工具,很多牛到极点的生信程序也都是用python编写的。

想来想去,不会python,实在是不好意思说自己是做生信工作的。

一咬牙一跺脚,学吧,哪怕年龄大点,脑袋笨点,孩子闹腾点,学的慢点,总归是能学会的(吧?)

所以,屏幕前的你,要不要也一起来学呢?

今天,先攻克第一关,如何用python批量调用其他程序呢?

先假设一个场景,我们Miseq测序一轮产生了10株菌的测序数据,文件名从Sample1到Sample10。现在我们希望将其依次与参考基因组(Ref.genome)比对。比对程序为bowtie2。如果是一个个运行,也不是不行,但未免太慢了。我们想批量运行该如何做呢?

实际上,各种语言,包括shell脚本都能实现这个功能,不过从学习python的角度,我们还是尝试写下我们第一行的python脚本吧~

Let us Go!  python攻克第一关:批量调用

#!/usr/bin/env pythonimport subprocessref_genome="Ref.fasta"subprocess.run(["bowtie2-build",ref_genome,"ref_genome_index"])
for i in range(1,11): input_file="Sample{}.fq".format(i) print(input_file) out_file="Sample{}.sam".format(i) bowtie2_commend=["bowtie2","-x","ref_genome_index","-U",input_file,"-S",out_file] print(" ".join(bowtie2_comment)) subprocess.run(["bowtie2","-x","ref_genome_index","-U",input_file,"-S",out_file])

下面开始逐行解释以上程序哈

第1行:永远的第一行 从#!/usr/bin/env python开头 含义是告诉计算机,下面你要开始用python运行喽

第2行:import subprocess 导入subprocess包,用于在python中启动子进程

第3-4行:告知计算机参考基因组的文件名(此处需准备好Ref.fasta,并放置于当前运行目录下),并启动bowtie2-build命令建库(注:此步是bowtie2比对程序的需求)

第6-12行:从1到10依次运行bowite2比对程序。用for循环。range(1,11)指从1到10。用format给与名字。用print打印命令行。用subprocess.run运行bowtie2子程序。注意:循环过程中的每一行(7~12行),开头要缩进!python是用缩进来代表层级关系的,这点和perl非常的不同。

以上,12行程序结束了我们场景所需要的批量调用工作。我完成了自己的第一个python小脚本。

你也学会了吗?如果你有好玩有趣的场景,也可以留言哦~让我们一起看看,怎么用python来实现它。

长按关注




公众号名称:微微悦明

科学的乐趣是获得新知识的喜悦~

高通量测序、大数据病原微生物检测和监测健康大数据行业资讯记录与分享

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
高通量测序数据的比对小结----bwa、bowtie、bowtie2、samtools
Python 执行 shell 命令
Python3中使用subprocess库接受中文的方法
Python调用外部命令编程实例
Python:如何运行外部的linux/unix命令/程序
ACM在线测评系统评测程序设计与python实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服