打开APP
userphoto
未登录

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

开通VIP
Bioinformatic Data Skills 学习专题(2):一些基础的shell脚本和服务器指令

内容回顾

    上周(Bioinformatic Data Skills 学习专题(1))简单介绍了这本书,稍作回顾:

  1. 这本书适用对象需要的一些基础

  • 有编程基础: 没有的话可以先进行python的学习(Books like Bioinformatics Programming Using Python by Mitchell L. Model (O’Reilly, 2009), Learning Python, 5th Edition, by Mark Lutz (O’Reilly, 2013), and Python in a Nutshell, 2nd, by Alex Martelli (O’Reilly, 2006) are great to get started. )。

  • 会使用emacs/vim/sublime text等文本编辑器

  • 熟悉常见的linux指令

  • 了解一定生物学知识:经历菜鸟团这么长时间的背景介绍,大家应该相当熟悉这一部分的知识了,假如没有请点击文末部分进行学习:)。

  • 熟悉正则表达式:可以通过http://regex101.com 和 http://www.debug‐gex.com 这些网站进行学习

Chapter3: shell进阶

写脚本需要记得模块化和可重复性

This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.—Doug McIlory

shell脚本模块化的特点:

  • 容易trouble shooting

  • 针对特定模块可以替换不同方法,比如找差异表达基因,简单的衡量标准就是foldchange,复杂的就有R包等等,灵活机动

  • 同样地,我们也可以用不同编程语言实现我们的目的

  • 模块化的代码可以复用

了解shell

  1. 可以使用 echo $0 / echo $SHELL 看看当前使用的shell脚本,适合bioinformatics的shell是zshell

  2. 重定向:充满了美感和速度(Speed and Beauty in One)

  • 标准输出 >, 脚本后跟 2>list.strerr重定向错误

  • 标准输入  一般被忽略,很多时候可以用 |替换

  1. 脚本流程的交互和终止:hangup/kill

  • &跟在脚本后面可以在后台挂起(background process),需要保持运行shell的开启。可以用 jobs查看

  • 通过 ps查看当前shell运行的程序,找到pid ,用 kill pid终止挂起的程序

  • 用 echo $?查看上一脚本运行是否正常,脚本间可以用 && 或 || 连用,使短循环成立,感觉在脚本循环的时候特别有用

  • nohup: 可以用于长时间运行脚本或程序

  1. 通配符(wildcards)和括号在指令替换里的简单应用

  • echo'There are $(grep -c '^>' input.fasta) entries in my FASTA file.'这里$()获得了grep得到的信息,然后输出到echo的内容中

  • mkdir results-$(date+%F) 创建特定日期的目录

  1. little tricks

  • alias 的妙用: aliastoday='date +%F',当前环境下today就可返回日期,用于各种文件和日志的命名,如 mkdir results-$(today)

Chapter 7 Unix Data Tools(前部)

善用unix/linux内置函数(Unix staples)而不是大段代码(其实是一切从简的原则?),大段代码维护成本很高,传播也不容易。这一部分可以说是生信数据分析的核心。

那么何时使用,如何合适地使用pipeline呢,先以文本处理为例讲起(今后的学习其实也一直贯穿着这种思维)。

  1. Text类型的数据

  • 在生物信息数据范围主要有 bed, gtf/gff. SAM, tabular BLAST, VCF 多数以tab键分隔

    • 查看类:head/tail/less

    • 提取类:grep提取某个字段/cut提取某列/awk结合前两者,有更强大的功能

    • 整合类:column整列/sort用于排序/join合并列

  • 简单例子

    用tab整理数据格式:

    •  >before

      after

    • grep -B / grep -A 分别时before和after 用grep 找到的那行

    • sort-k1,1V-k2,2nexample2.bed通过在k后面加V可以将第一列字符串中的数字按照数字大小而不是字符格式排序,很有用(如染色体排序)

    • sort+ uniq找到文本中unique字符串

值得一提的是bioawk真乃利器,留到下次专题再细细道来。


  1. 查看文件格式 生信数据多是以ASCII编码的,可以用128个字符(7bit)代表质量,主要包括大小写字母、数字和特殊不可见的字符。

  • 可以用 file查看文件格式 hexdump

Chapter 4 服务器相关(remote machines)

  1. 用ssh链接远程服务器

  • 简单使用 ssh username@host,可以配置~/.ssh/config命名host, port, user.

  • 免密登陆: ssh-keygen-b2048生成本地密钥和公共密钥 ~/.ssh/id_rsa.pub,将公共密钥内容拷贝到服务器的~/.ssh/ahuthorized_keys即可使用(本质是ssh-agent 在后台管理)。可以用ssh-add添加别的成员。

  • 除了登陆服务器,还可以参考ssh 的文件传输 scp 和 sftp;通过~/.ssh/config信息设置服务器和用户登录权限和端口

  1. 分屏/后台运行: tmux/screen,就是background process更方便的版本 详细可以参考 有可能是最简单的tmux入门教程

下文预告

  • sed/awk/bioawk简介(第七章后部)

  • Git and Data (5~6章)



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
如何查看服务器RAID卡信息的SHELL脚本和命令介绍 | MySQLOPS 数据库与运维自动化技术分享
Linux Shell脚本实现根据进程名杀死进程
原创-公司项目部署交付环境预检查shell脚本
使用Shell脚本查找程序对应的进程ID,并杀死进程
在shell脚本里如何表示回车?
使用siri远程控制电脑开关机.pdf
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服