每天科技网

件测评来咯科学家爱命令行的5个理由|《自然》技术特写你们想

每天科技网 1

原文作者:Jeffrey M. Perkel

命令行界面看起来有点吓人,就可以使用软件,但能下好多繁杂的计算任务。只要知道自己在做什么。

Jennifer Johnson的PI给了她一个简单的任务。2018年起,不需要占用任何硬盘空间。轻巧的优点往往吸引了批喜好简洁的粉丝。今天笔者挑选了市面上主流的几款在线思维导图软件,他们的团队给1300只赤狐(Vulpes vulpes)的DNA进行了测序,分别从产品的定位、性能、功能等方面展开了使用测评并进行了总结,实验室负责人想知道他们到底收集了多少碱基,希望可以帮到有需要的朋友。测评产品本次,以及这些碱基和参考基因组有多匹配。

Johnson是伊利诺伊学厄巴纳-香槟分校的生物信息学家,我们选择了五款比较知名的在线思维导图软件,她手上有所需的数据,其中包含了来自海外的Coggle。首先我们从产品定位、聚焦行业以及服务模式来对比下这几款产品的差异之处。从上图我们可以看出来五款产品虽然都是在线思维导图,但是这些数据分散在她硬盘各处。最简单的解决方法也是最繁琐的:打开每个文件,但是前三款产品百度脑图、亿图脑图和Coggle定位都是纯粹的思维导图工具,找到所需信息,后两者则是一个整合型工具,关掉文件,幕布是把纲和思维导图结合了起来,如此重复1300次。因此Johnson用了另外一个方法,ProcessOn不仅能做流程图还支持做思维导图。在盈利模式上,那就是使用命令行。

Illustration by The Project Twins

命令行也叫shell,是一个基于文本界面的强工具,用户可以通过简单的指令创造,查找,分类或操作文件,在这个过程中并不需要使用鼠标。macOS 和 Unix系统自带命令行,Windows系统的话,也可以通过一些免费工具,比如Windows Subsystem for Linux和 MobaXterm调用。目前有好几个不同的shell系统(多数是兼容的),其中最受欢迎的是Bash,它是Bourne again shell的简称,也是对它在1989年替代的Bourne shell系统的致敬。

Bash是由一系列小工具集构成的,它使用的编程语言已经很成熟,其中包括grep(文本搜索工具),和for loops(对多个文件进行重复操作)。Johnson让计算机终端扫描硬盘,查找测序文件,从中提取所需的信息,然后把它们编译到一个整洁的表格里。她说:“整个过程花了我10分钟不到。”重计算这些数据原本会花去整整一天。

许多涉及计算的学科(比如生物信息)严重依赖命令行。不过,Jeroen Janssens说,命令行能惠及所有研究者,他是荷兰Data Science Workshops 的主要讲师,2014年出版的Data Science at the Command Line一书的作者。“鼠标无法进行批量操作”,他说。比如,给一个文件改名称只需要点击就好,但是要给成千上万的文件改名称的话,这么做就太累人了。

在此我们给家介绍5种命令行操作方式,它们可以让你的计算研究变得更简单。

文件整理

Shell中最强的功能,概就是可以对多个文件执行重复的简单操作。比如,研究人员可以系统化地给文件重命名,在文件名中添加时间戳,或者把文件转成另一个格式。(你可以到https://github.com/jperkel/nature_bash看我们的代码例子)

在做博士后研究时,Casey Greene的导师要求汇报中所有的图表都要用黑色背景。Greene说自己挺擅长打开图像编辑器、修改背景颜色,然后重复再重复。

但某一刻我意识到,就算用相对好用的免费软件,人生不是用来做这种事的:持续不断地输入图片、更改背景颜色。” Greene说,他现在已经是科罗拉多学医学院健康人工智能中心。因此,他开始使开源的图像处理工具ImageMagick,用for loop对所有文件进行了同样的操作:

for file in *.png; do convert $file -channel RGB -negate -modulate 100,100,200 out_$file; done;

处理量数据

有些数据集就是太了。伊利诺伊学厄巴纳-香槟分校的信息科学家Elizabeth Wickes在处理一个数字对象标识符(DOI)的研究项目时,她收集了数百万XML文件。但是把这些文件整合到一个版本控制库,让她的计算机系统过载了,“GitHub Desktop客户端和我的系统索引当机了。”但是,使用命令行的“git”工具后,她在一个半小时里就顺利解决了问题。

得克萨斯农工学的演化生物学家Lynette Strickland也有相似经历。她记录了入侵物种狮子鱼(Pterois sp.)的数百万基因突变数据。微软的Excel只有约万行,对于它来说这个数据量过于庞。因此,Strickland用shell来查找超出某个质量阈值的记录(电子表格行),导出所需的列,再把数据保存到一个新的文件中。她使用的指令类似于这样(假设质量分数在第4列,阈值是50,所需的列数是1-4):

awk -F, ‘{ if ($4 > 50) print $0 }’ datafile.csv | cut -d, -f1-4 > newdatafile.csv

她说:“通过使用shell来提取我需要的特定信息,我就可以把数据浓缩成能研究和可视化的东西。”

操作数据表

Shell指令执行看似简单的操作。比如cut指令可以从数据表中提取一列或多列数据。wc可以统计字数,行数或字符数。awk可以过滤符合某个条件的行。sed可以操作字符串。不过这些简单的指令可以通过pipe(‘|’)联合起来,这是一种可以把某个shell工具的输出转为另一个工具的输入的功能,这样就可以创造强的自定义工作流。Tom Ryder说:“这就是我们说的行云流水——让事情系统化地运行。” 他是2018年出版的Bash Quick Start Guide一书的作者,一位新西兰的系统管理员。

例如,下面这个命令可以把5个工具集组合起来,用于统计某个基因表达数据表中某个特定基因名字的数量:

cut -f1 GEOdataset.csv | sed -E ‘s/^>//’ | sort | uniq | wc -l

在这个命令中,包含名称的第一列的数据被提取出来(cut),去掉开头的某个于符号(sed),按照字母顺序排序,把表单转化为特征值(uniq),然后把行数(基因名字行)打印到屏幕(wc)。

让工作并行化

Christina Koch是威斯康星学麦迪逊分校的研究计算协调者,她所在的计算机中心提供超过1. 4万个节点和太字节储存器的远程连接。Koc,假设某个生物信息学家要分析基因表达数据表,而在他们自己的计算机上每个表要用一天的时间才能处理完,而研究者有60个这样的数据表,“那么就要花整整两个月昼夜不停的计算才能处理完毕。”但是,如果把工作流通过secure shell的ssh指令(打开远程系统的加密门户)发送给计算机集群,研究者就可以让60台计算机进行并行运算,“只需要一天就能计算完毕,不需要两个月。”

即使没有这么强的计算能力,利用“ssh”命令也可以远程工作,在疫情期间这个指令特别有用。在2020年封城期间,加拿道格拉斯心理卫生学研究所的系统管理员和程序员Gabriel Devenyi努力确保他所在机构的研究者能高效工作,无论他们被隔离在哪里。“如果没有这个命令行,学生们什么也做不了。”

自动化

shell 的命令可以保存在名为脚本的文本文件中,脚本可以保存、分享和版本控制,以便提高可复制性。它们也可以自动化运行。使用cron命令,用户可以规定脚本运行的时间。

Wickes说,一些网站会询问用户是否打算在非高峰访问时间段进行内容抓取,比如PubMed 文献数据库的非高峰时间是东标准时间晚上9点到凌晨5点之间,“你可以让脚本只在设定时间运行。”此外,用户也可以每天把数据下载到自己的电脑上,因为许多公用系统会定期清除旧的文件。

警告:无法撤回操作

shell的弊端在于它的界面比较吓人,一般只有一个美元符号和一个指针。Janssens说,“有些人觉得望而生畏。”shell本身也没提供什么帮助。她还提到,shell还“不容许错误”,错打了一次空格就可能会改变命令的含义,也没有什么命令会询问你是否知道自己在干什么,“如果你有系统权限,shell就会认为你希望它执行你所给的指令”,Devenyi说,“于是你能做各种危险的事情。”

典型例子是rm -rf *——这个命令会删除当前目录下所有文件和子文件。如果你是在错误目录中执行这个命令,可能弄丢重要文件。Johnson说,“我们都干过这种事。”所以务必小心。

有一个避免这个错误的窍门:使用echo命令来确保你是在对正确的文件执行操作。Greene说:“重要经验:在执行前先echo。”一些命令还带有dry-run模式,会报告它们将要干什么。还有一种叫做interactive模式,在执行任务前会先提示用户。用户还可以设置一些变量,避免计算机覆盖文件,或在出错时退出(分别是noclobber和pipefail)。还有就是要避免在有管理员权限的情况下执行命令。

Wickes说:“生活猝不及防,科研有时也是。”shell可以处理那些意料之外。Koc,除此之外,它还很好玩。“它特别强,我在用它的时候感觉自己就是个酷酷的科技宅,你会感觉自己很能干。”

原文以Five reasons why researchers should learn to love the command line标题发表在2021年2月2日的《自然》的技术特写版块上

nature

doi: 10.1038/d41586-021-00263-0

点击阅读原文查看英文原文

好书推荐

钇氧锝元素故事出书啦!不可错过的元素科普经典之作

来自Nature Chemistry

100余位

世界科学家

118

化学元素

120

文章

金涌院士 化学会 化工学会

推荐阅读

《自然的音符:118种化学元素的故事》由Nature自然科研译自《自然-化学》(Nature Chemistry)的In Your Element专栏。是所有图书中为数不多的,覆盖当前全已发现的118种化学元素的科普图书,每一种元素都是邀请世界上对它研究深入的科学家之一撰写,专业权威,生动有趣。适合中学生及以上所有对化学元素感兴趣的读者阅读。本书由Nature Chemistry高级编辑作序。随书赠送覆盖118种化学元素的元素周期表明信片。

版权声明:

本文由施普林格·自然上海办公室负责翻译。中文内容仅供参考,一切内容以英文原版为准。欢迎转发至朋友圈,如需转载,请邮件China@nature.com。未经授权的翻译是侵权行为,版权方将保留追究法律责任的权利。

2021 Springer Nature Limited. All Rights Reserved

星标我们,记得点赞、在看+转发哦!

佳能相机怎么设置前帘同步

d3200尼康怎么调相机

索尼相机一键虚化怎么用

顺丰快递不能发车牌吗为什么

邮政快递为什么总是很慢

什么是中通快递号码

北京快递什么时候恢复申通

小红书数据分析免费平台有哪些

济南搜狗seo优化技术

标签:命令行 shell johnson bash