上周(Bioinformatic Data Skills 学习专题(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 这些网站进行学习
写脚本需要记得模块化和可重复性
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包等等,灵活机动
同样地,我们也可以用不同编程语言实现我们的目的
模块化的代码可以复用
可以使用 echo $0
/ echo $SHELL
看看当前使用的shell脚本,适合bioinformatics的shell是zshell
重定向:充满了美感和速度(Speed and Beauty in One)
标准输出 >
, 脚本后跟 2>list.strerr
重定向错误
标准输入 一般被忽略,很多时候可以用
|
替换
脚本流程的交互和终止:hangup/kill
&
跟在脚本后面可以在后台挂起(background process),需要保持运行shell的开启。可以用 jobs
查看
通过 ps
查看当前shell运行的程序,找到pid ,用 kill pid
终止挂起的程序
用 echo $?
查看上一脚本运行是否正常,脚本间可以用 && 或 || 连用,使短循环成立,感觉在脚本循环的时候特别有用
nohup: 可以用于长时间运行脚本或程序
通配符(wildcards)和括号在指令替换里的简单应用
echo'There are $(grep -c '^>' input.fasta) entries in my FASTA file.'
这里$()获得了grep得到的信息,然后输出到echo的内容中
mkdir results-$(date+%F)
创建特定日期的目录
little tricks
alias 的妙用: aliastoday='date +%F'
,当前环境下today就可返回日期,用于各种文件和日志的命名,如 mkdir results-$(today)
善用unix/linux内置函数(Unix staples)而不是大段代码(其实是一切从简的原则?),大段代码维护成本很高,传播也不容易。这一部分可以说是生信数据分析的核心。
那么何时使用,如何合适地使用pipeline呢,先以文本处理为例讲起(今后的学习其实也一直贯穿着这种思维)。
Text类型的数据
在生物信息数据范围主要有 bed, gtf/gff. SAM, tabular BLAST, VCF 多数以tab键分隔
查看类:head/tail/less
提取类:grep提取某个字段/cut提取某列/awk结合前两者,有更强大的功能
整合类:column整列/sort用于排序/join合并列
简单例子
用tab整理数据格式:
>before
aftergrep -B / grep -A 分别时before和after 用grep 找到的那行
sort-k1,1V-k2,2nexample2.bed
通过在k后面加V可以将第一列字符串中的数字按照数字大小而不是字符格式排序,很有用(如染色体排序)
sort+ uniq找到文本中unique字符串
值得一提的是bioawk真乃利器,留到下次专题再细细道来。
查看文件格式 生信数据多是以ASCII编码的,可以用128个字符(7bit)代表质量,主要包括大小写字母、数字和特殊不可见的字符。
可以用 file
查看文件格式 hexdump
用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信息设置服务器和用户登录权限和端口
分屏/后台运行: tmux/screen,就是background process更方便的版本 详细可以参考 有可能是最简单的tmux入门教程
sed/awk/bioawk简介(第七章后部)
Git and Data (5~6章)
联系客服