课程简介

课时8小时(2天),介绍linux。

第一天

首先呢,第一节课就讲了怎么用虚拟机载入已经制作好的虚拟镜像。 第二节是历史课,先对自己做了自我介绍,做实验的,博士后开始转行搞生物信息,纯自学成才(还学的这么厉害,我非常佩服)。 先从什么是window/unix/linux谈起,介绍了这几个的区别和历史进程,介绍了linux的读音,mac的OS和linux的有些类似。 然后开始login用户,学习简单的命令。 第三节课用到了挂在的本地目录地址,在目录下写了第一个shell脚本(helloworld.sh)。 由于安装的是极简版的CentOS,所以先从下载firefox和gedit以及gedit插件开始,然后还修改了gedit的首选项。 shebang line别忘了写。 可能还顺便讲了一下C语言的helloworld写法。

第二天

开始讲更多的linux命令,和ncbi数据库。中间还扯到了Joseph Lister Hill捐助了好多钱用来建立数据库(是哪个我忘了)。

虚拟机载入

首先,这个课程已经提前为大家制作了虚拟镜像,只要下载VirtualBox。

第一步,新建一个虚拟机。根据已有镜像文件CentOS-64bit选择linux和RedHat64bit,给虚拟机起个名字,一路next,但最后要选择加载已有镜像。

img

img

第二步,在镜像创建之后,选择设置,在里面将虚拟机和外部电脑桌面的互动打开。

img

第三步,选择本地磁盘存储,一定要勾选自动挂载(automount),这样在/media/文件夹下可以出现你的本地磁盘目录。例如:/media/sf_CB2/。 在folder path这一项中,选择other,就可以找到本地文件夹了。

img

设置完之后可以运行start,开始玩虚拟机!

关机时可以选择保存现有的操作,这样就不用重复启动系统,直接点开始,就能进入桌面。

img

Linux 命令

CB2讲述的linux相关内容有:

  • –help 查看帮助 ls--help
  • man 查看详细帮助 man ls
  • info 查看详细信息 info ls
  • apropos 在一些特定的包含系统命令的简短描述的数据库文件里查找关键字,然后把结果送到标准输出 apropos ls
  • 重定向和管道 重定向>写入文件;>>追加写入文件; cat abc.txt | less 管道符号|用于链接两个命令,前一个命令的输出将作为后一个命令的输入。
  • cat 标准输出(打印到屏幕)文件内容 cat abc.txt
  • more 类似于cat,more以分页的显示形式显示内容 more abc.txt
  • wc 统计文档的行数,单词数,字节数 wc abc.txt
  • head 用来显示文档的开头内容,标准输出(打印到屏幕) head abc.txt
  • tail 用来显示文档的结尾内容,标准输出(打印到屏幕) tail abc.txt
  • alias
  • 路径(pwd, ., ..) pwd可以显示当前路径
  • 环境变量 (export)
  • 执行程序
  • echo 终端打印输出 echo "hello world"
  • 打包和解压缩(tar, gz, bzip2, xz -_,- 一下子讲这么多,记得过来就怪了
  • cut 剪切文件的某一列或者某几列 cut -f 1 abc.txt (剪切第一列,并输入第一列到屏幕)
  • sort 文件按某列排序 cat abc.txt | sort
  • uniq 文件按某列去除冗余 cat abc.txt | sort | uniq
  • wget 下载网上的文件
  • grep 查找关键词 grep "hello" abc.txt
  • tr 对来自标准输入的字符进行替换、压缩和删除。
  • find 查找文件
  • rsync 海量文件的快速准确备份,复制,删除
  • unison 文件同步工具
  • ls 目录文件列表
  • cp 拷贝
  • rm 删除
  • mv 移动
  • cd 进入目录 cd /home/abc
  • mkdir 创建文件夹
  • yum/dnf/apt-get 下载软件包的命令(ubuntu用apt-get)
  • chmod 改变文件的权限

Hello World! 脚本


#!/bin/bash

echo "Hello World!"

课程用到的命令

所有下面的工作最好都在挂载的外部文件夹中操作

cd /media/sf_CB2

下载软件

yum install firefox
yum downgrade http://vault.centos.org/7.1.1503/os/x86_64/Packages/pygobject3-3.8.2-6.el7.x86_64.rpm http://vault.centos.org/7.1.1503/os/x86_64/Packages/pygobject3-base-3.8.2-6.el7.x86_64.rpm
yum install gedit gedit-plugins

下载蛋白质氨基酸序列

wget ftp://ftp.ebi.ac.uk/pub/databases/Pfam/current_release/proteomes/9606.tsv.gz

查找上述氨基酸序列文件中第七列名称中重复次数最高的名称

zcat 9606.tsv.gz | tail -n+4 | cut -f 7 | sort | uniq -c | sort -gr

下载ncib斑马鱼数据

wget -r -A.faa ftp://ftp.ncbi.nlm.nih.gov/genomes/archive/old_refseq/Drosophila_melanogaster/RELEASE_5_48/

将斑马鱼数据复制到当前目录下的faa文件夹中

find ftp.ncbi.nlm.nih.gov/ -name "*.faa" -exec cp {} ./faa \;

安装tree,查看目录结构

yum install tree

tree ./

将所有.faa文件合并成一个dm.faa文件

cat ./faa/*.faa > dm.faa 

计算dm.faa文件中的氨基酸序列条数

cat dm.faa | grep ">" | wc -l

计算dm.faa文件中的氨基酸数量

cat dm.faa | grep -v ">" | tr -d "\n" | wc -c

作业

Problem 1

wget ftp://ftp.ebi.ac.uk/pub/databases/Pfam/current_release/proteomes/9606.tsv.gz
zcat 9606.tsv.gz | tail -n+4 | cut -f 7 | sort | uniq -c | sort -gr

Problem 2

wget -r -A.faa ftp://ftp.ncbi.nih.gov/genomes/archive/old_refseq/Bacteria/Yersinia_pestis*

Problem 3

find ftp.ncbi.nih.gov/genomes/archive/old_refseq/Bacteria/ -name "*.faa" -exec cp {} ./ypest \;

cat ./ypest/*.faa >  ypest.faa

cat ypest.faa| grep ">" | wc -l

Problem 4

下载

wget ftp://ftp.ncbi.nlm.nih.gov/genomes/archive/old_refseq/Bacteria/Escherichia_coli_K_12_substr__MG1655_uid57779/NC_000913.faa

写脚本计算

提示:

Performing Math Calculation in Bash

shell float number in expr

How to use expr on float?

#!/bin/bash

faa=$1

c=`cat $faa | grep ">" | wc -l`

l=`cat $faa| grep -v ">" | tr -d "\n" | wc -c`

result1=`expr $l/$c`
result2=$(expr "$l"/"$c")
result3=$(($l/$c))
result4=$(awk 'BEGIN{print $l/$c}')
result5=$(echo "scale=6;$l/$c"|bc)

echo $result1
echo $result2
echo $result3
echo $result4
echo $result5


好长时间没有写课程相关的东西了,学过好几门生物信息学课程,从中可以学到不同老师的教学风格。现在回首,看看研究生时期的生物信息学II(动物所韩老师 -_-b 第一次错写成春雨了,自己都吓了一跳),仅一次内容,介绍了LAMP的初级核心命令,照顾了不同平台尤其是windows平台的同学(在课上使用Cygwin和PuTTY)。

这学期学Bioinformatics computing,每次课程内容很多,连上4个小时,让非计算背景的人无从下手(尤其是连windows安装软件都困难的360用户们对,我就是在喷国内的流氓软件)。 虽然内容极为丰富使用,但没有照顾到非linux用户,前两次课程效果不好。

先对比一下之前的生物信息学II,讲述了linux的相关内容有:

  • PuTTY
  • passwd
  • exit
  • pwd
  • ls
  • man
  • cp
  • vi
  • more
  • cd
  • mkdir
  • su
  • chmod
  • chgrp
  • usermod
  • cat
  • rm
  • find
  • 执行程序
  • 如何进入www目录
  • mysql
  • php (简单带过)
  • alias

CB2讲述的linux相关内容有:

  • –help
  • man
  • info
  • apropos
  • 重定向和管道
  • cat
  • more
  • wc
  • head
  • tail
  • alias
  • 路径(pwd, ., ..)
  • 环境变量 (export)
  • 执行程序
  • echo
  • 打包和解压缩(tar, gz, bzip2, xz -_,- 一下子讲这么多,记得过来就怪了
  • cut
  • sort
  • uniq
  • wget
  • grep
  • tr
  • find
  • rsync
  • unison
  • ls
  • cp
  • rm
  • mv
  • cd
  • mkdir

两个列表凑一凑,就是最全的常用命令集合了。

如果让我讲这个课程的话,如果非要统一使用linux,那就绝对不使用虚拟机,直接用u盘安装可写入型的linux系统安装盘。每次上课,插上u盘换系统,直接使用,可以更新安装软件,所有文件都保存在挂载的电脑磁盘上。可以省掉不少麻烦。

这次还来回换了2次系统,去年上课用fedora,今年上课,一开始让我装32位xubuntu,结果上课当天换成了64位的CentOS,结果我帮助的人在建立虚拟机时我都给人家装错了(RedHat/Ubuntu)_-_

还有最开始的学的生物信息学I,这个怎么评价呢?院士的课怎么学都是好(听老师侃侃而谈很有意思),算法部分还是很有用的,虽然都是课下自学,当时在礼堂课上根本就听不懂,我问的问题竟然由于声音太小,在视频里什么都听不见orz。不知道他老人家现在还开不开课了。

不多说了,赶紧写总结,希望这次BioComp的课程学生对老师的评价不要太低。-,-


八月一日将系统升级,拥抱Fedora24,谢天谢地升级很顺利。

新版本的字体有了很大改进,在终端下显示很清晰舒服,但是在文件浏览器下字体有些单薄。

Fedora

字体如下所示:

Font in Fedora

不是为什么升级完,jekyll没法用了。

提示错误信息 > /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require’: libruby.so.2.2: cannot open shared object file: No such file or directory

索性删除ruby*和所有Gem安装的包(gem uninstall -aIx),重新安装一次,即可。


NIPT(Noninvasive prenatal testing)非侵入式产前检测,国内一般称作“无创DNA产前检测技术”。之前一直没有时间看,这个技术究竟怎么从母亲的血液中测胎儿的DNA,现在有时间了,赶紧记录一下原理。

NIPT技术细分为两种:一种是测CNV,另一种是测SNP。 在2012年时比较流行的4中具体方式是1: 1. Sequenom 公司:定量,短序列全基因组测序,并且评估胚胎DNA含量 2. Verinata 公司:定量,短序列全基因组深度测序,不评估胚胎的DNA含量 3. Ariosa 公司:定量,目标区域扩增,并且根据SNP频率来确定胚胎DNA含量 4. Natera 公司:基于非定量的SNP,分析等位基因频率(这个方法中用白细胞的测序结果作为母亲的基因型)

其中重点要说明的是,测CNV是不用区分母亲和胎儿的DNA的,首先,我们明确母亲没有任何一种三体综合征和染色体缺失,那么在这种条件下仍然检测出一定比例的三倍体或者单倍体,那么就说明是胚胎出现了问题。

从测序角度来说就是测序深度越高越精确,对于测序结果是否说明有染色体异常,用假设检验(Z-score)来估计其异常程度。

下图比较了四个公司的方法的准确性,可以看到对于21三体综合征是最准确的,对于18三体综合征和单倍体的检测准确性低。

Imgur

测不准的原因在于测序技术有GC偏好性,并且在13和X染色体上表现得很明显2

NIPT方法目前主要还是用于测染色体倍增或者缺失(截至2013年),对于一些微缺失和微倍增( microdeletions and microduplication )用芯片的方法也开展了检测研究。

我个人的理解,孕妇首先应该做常规血检和B超检查,如果检查认为有问题,可以先做一个无创DNA产前检测来确认一下,如果无创也指示有问题或者数值处于临界值,那么继续做羊水穿刺来确定。

我本认为技术应该很高超,结果看完相关网络资料发现不用区分母婴的DNA时,方法也就很常规了。


又来补课了,这三部太经典了,一口气看完,每一部都很有意思。

里面的梗是在是太多了:

  • 没想到霸王龙的小手原来在十几年前已经是个梗了。
  • 企鹅叫Wheezy,马上想到Linux/Debian,结果查看百科,原来所有Debian的发行版本号命名都来自这部片子。
  • I am your father!
  • 第三部的越狱,比TV系列剧越狱难度还高。
  • 玩具里还有一只龙猫。

看完之后去翻资料,原来在2014年还出了个短篇,2018年还可能要有第四部。Andy的玩具传承给了Bonnie,不知道第四部会有什么样的故事(据说是去找Bo)。

最后再喊一句 To Infinity and Beyond!(英文博客的subtitle出处)