试题来源于生信菜鸟团论坛的生信人的linux考试
(试题是生信菜鸟团论坛上爬过来的,使用的服务器是转发生信技能树推文在朋友圈集3个赞换的,学习的教程是生信技能树放在B站上的。
神呀,保佑Jimmy大神吧,愿他老人家福寿、安康~~~)
重点: (去可视化概念+练习) 了解 命令+参数+文件 的模式
基础知识: cd -, cd .. , cd -, history, !5 , /home/ , /tmp/ , >,&,jobs,nohup 1,2,0
文件目录操作:ls,cd,pwd,mkdir,rm,mv,cp,touch,head,tail,less,more
系统管理: df,du,top,free,ps,ipconfig,netstat,ssh,scp,
用户权限:chown,chgrp,groups,ls
文本操作:awk,grep,sed,paste,cat,diff,wc,vi
使用腾讯云实验室的linux服务器:https://cloud.tencent.com/developer/labs/lab/10000
参考 生物信息学常见1000个软件的安装代码! 来安装软件。
如果学完了,理论上你看下面的总结应该是有茅塞顿开的感觉。
linux命令行文本操作一文就够
linux系统环境变量一文就够
构建shell脚本一文就够
一、在任意文件夹下面创建形如 1/2/3/4/5/6/7/8/9 格式的文件夹系列。
mkdir -p 1/2/3/4/5/6/7/8/9
tree 1

二、在创建好的文件夹下面,比如我的是 /Users/jimmy/tmp/1/2/3/4/5/6/7/8/9 ,里面创建文本文件 me.txt
cd tmp0/1/2/3/4/5/6/7/8/9
vim me.txt

三、在文本文件 'me.txt' 里面输入内容:
Go to: http://www.biotrainee.com/
I love bioinfomatics.
And you ?
cat me.txt

四、删除上面创建的文件夹 1/2/3/4/5/6/7/8/9 及文本文件 me.txt
cd tmp0
rm -r 1

五、在任意文件夹下面创建 folder1~5这5个文件夹,然后每个文件夹下面继续创建 folder1~5这5个文件夹,效果如下:
mkdir -pv folder_{1..5}/folder_{1..5} # -v表示显示创建过程
ls
ls */
tree

六、在第五题创建的每一个文件夹下面都 创建第二题文本文件 me.txt ,内容也要一样。(这个题目难度超纲,建议一个月后再回过头来做--确实很难!)
vim txt.sh
bash -x txt.sh
tree


七,再次删除掉前面几个步骤建立的文件夹及文件
# 匹配删除(不删除脚本)
rm -r folder_*

八、下载 http://www.biotrainee.com/jmzeng/igv/test.bed 文件,后在里面选择含有 H3K4me3 的那一行是第几行,该文件总共有几行。
wget -c http://www.biotrainee.com/jmzeng/igv/test.bed # -c为断点续传
grep -n H3K4me3 test.bed
grep -no H3K4me3 test.bed #只显示匹配上的
grep -n --color H3K4me3 test.bed #给匹配项加上颜色(注意color前面是两个-)
wc -l test.bed

九、下载 http://www.biotrainee.com/jmzeng/rmDuplicate.zip 文件,并且解压,查看里面的文件夹结构
wget -c http://www.biotrainee.com/jmzeng/rmDuplicate.zip
unzip rmDuplicate.zip
tree rmDuplicate
# 6 directories, 30 files

十、打开第九题解压的文件,进入 rmDuplicate/samtools/single 文件夹里面,查看后缀为 .sam 的文件,搞清楚 生物信息学里面的SAM/BAM 定义是什么。
cd rmDuplicate/samtools/single
less tmp.sam
cat tmp.sam | head # 默认前十行

关于sam和bam:
- SAM(Sequence Alignment/Map)格式是一种通用的比对格式,用来存储reads到参考序列的比对信息。
- SAM是一种序列比对格式标准,由Sanger制定,是以TAB为分割符的文本格式。主要应用于测序序列mapping到基因组上的结果表示,当然也可以表示任意的多重比对结果。
- SAM分为两部分,注释信息(header section)和比对结果部分(alignment section)。
- 行:除注释外,每一行是一个read。
- BAM是SAM的二进制格式,因此两者格式相同,只是BAM文件占用储存空间更小,运算更快
(来自简书作者@井底蛙蛙呱呱呱)
十一、安装 samtools 软件
wget -c https://sourceforge.net/projects/samtools/files/samtools/1.8/samtools-1.8.tar.bz2
tar -xvf samtools-1.8.tar.bz2 #参数或者为-jxvf,但-xvf可以识别两种压缩文件
cd samtools-1.8/
make

十二、打开 后缀为BAM 的文件,找到产生该文件的命令。 提示一下命令是:/home/jianmingzeng/biosoft/bowtie/bowtie2-2.2.9/bowtie2-align-s --wrapper basic-0 -p 20 -x /home/jianmingzeng/reference/index/bowtie/hg38 -S /home/jianmingzeng/data/public/allMouse/alignment/WT_rep2_Input.sam -U /tmp/41440.unp
/home/data/vip114/samtools-1.8/samtools view tmp.rmdup.bam
# 不能像sam文件那样用less命令打开,会出现一堆乱码
# bam文件里是没有产生该文件的命令的,在tmp.header文件里找
tail -n 3 tmp.header

十三题、根据上面的命令,找到我使用的参考基因组 /home/jianmingzeng/reference/index/bowtie/hg38
具体有多少条染色体。
less tmp.header |head #查看
grep -o -E "SN:chr[0-9]+|SN:chr[a-zA-Z]+" tmp.header | uniq # uniq 只会去除紧邻的重复项
grep -o -E "SN:chr[0-9]+|SN:chr[a-zA-Z]+" tmp.header |sort| uniq
#method 2
grep -o -E "SN:chr[0-9]+|SN:chr[a-zA-Z]+" tmp.header |sort -u
grep -o -E "SN:chr[0-9]+|SN:chr[a-zA-Z]+" tmp.header |sort| uniq|wc -l


十四题、上面的后缀为BAM
的文件的第二列,只有 0 和 16 两个数字,用 cut/sort/uniq
等命令统计它们的个数。
/home/data/vip114/samtools-1.8/samtools view tmp.rmdup.bam |cut -f 2|sort -n|uniq -dc

十五题、重新打开
rmDuplicate/samtools/paired
文件夹下面的后缀为BAM
的文件,再次查看第二列,并且统计
/home/data/vip114/samtools-1.8/samtools view tmp.rmdup.bam |cut -f 2|sort -n|uniq -dc

十六题、下载 http://www.biotrainee.com/jmzeng/sickle/sickle-results.zip
文件,并且解压,查看里面的文件夹结构, 这个文件有2.3M,注意留心下载时间及下载速度。
wget -c http://www.biotrainee.com/jmzeng/sickle/sickle-results.zip
ls -lh
unzip sickle-results.zip
tree sickle-results

十七题、解压 sickle-results/single_tmp_fastqc.zip
文件,并且进入解压后的文件夹,找到 fastqc_data.txt
文件,并且搜索该文本文件以 >>
开头的有多少行?
unzip single_tmp_fastqc.zip
cd single_tmp_fastqc/
ls
less fastqc_data.txt
grep ^\>\> fastqc_data.txt |cat -n

十八题、下载 http://www.biotrainee.com/jmzeng/tmp/hg38.tss
文件,去NCBI找到TP53/BRCA1
等自己感兴趣的基因对应的 refseq数据库
ID,然后找到它们的hg38.tss
文件的哪一行。eg: TP53(tumor protein p53): https://www.ncbi.nlm.nih.gov/gene/7157
wget -c http://www.biotrainee.com/jmzeng/tmp/hg38.tss
grep NM_001126113 hg38.tss #不需要小数点

十九题、解析hg38.tss
文件,统计每条染色体的基因个数。
cat hg38.tss |head
cat hg38.tss |cut -f 2 >chr.txt
grep -o -E "chr[0-9]{1,2}|chr[a-zA-Z]{1,2}" chr.txt >chr2.txt
wc -l chr.txt
wc -l chr2.txt
sort chr2.txt |uniq -dc
#将以上命令写成一行
cat hg38.tss |cut -f 2|grep -o -E "chr[0-9]{1,2}|chr[a-zA-Z]{1,2}"|sort| uniq -dc

没有看明白为什么grep -o -E "chr[0-9]{1,2}|chr[a-zA-Z]{1,2}" chr.txt >chr2.txt
之后,chr.txt和chr2.txt的列数还是一样的?

卖萌哥的答案稍微易懂一些:
head hg38.tss
head hg38.tss |awk '{print $2}' #取出第二列
head hg38.tss |awk '{print $2}'|sort| uniq -c #计数
cat hg38.tss |awk '{print $2}' |sort | uniq -c |grep -v '_' # 反向获取:排除带“_”的染色体行

二十题、解析hg38.tss
文件,统计NM
和NR
开头的熟练,了解NM
和NR
开头的含义。
grep -o -E "NM|NR" hg38.tss |sort |uniq -dc

NM:转录组产物的序列mRNA
NR:非编码的转录组序列ncRNA
网友评论