Linux与生信的结合

学完了理论,开始实践一下吧
主要参考了jimmy提供的练习题

一、在主目录下面创建/tmp文件夹,并且使其中包含 1/2/3/4/5 格式的文件夹系列

mkdir -p /tmp/1/2/3/4/5
如果要删除的话,使用rm -r 1/

二、在创建好的文件夹下面,比如我的是 /home/u1239/tmp/1/2/3/4/5 ,里面创建文本文件 xi.txt,并输入内容,例如Hello world, Welcome to bioinfoplanet, Nice to see you。三句话分行显示

echo -e "Hello world,\nWelcome to bioinfoplanet,\nNice to see you" | tee /tmp/1/2/3/4/5/xi.txt
利用管道符将echo输出的内容赋给tee命令;tee命令作用是:将接收到的数据一份输出到屏幕,一份到文件

三、在tmp/下创建 1~5这5个文件夹,然后每个文件夹下面继续创建 1~5这5个文件夹, 并查看

mkdir -p /tmp/{1..5}/{1..5} , 然后tree查看

四、增加一点难度:我想在练习三的每个目录中都放进去一个文件xi.txt,内容还是练习二的内容

echo {1..5}/{1..5} |xargs -n1 cp xi.txt
删除1~5这5个文件夹及其子文件夹:rm -r {1..5}

五、下载 http://www.biotrainee.com/jmzeng/igv/test.bed 文件,统计该文件总共有几行,含有 H3K4me3 的是第几行

统计行数:cat test.bed | wc -l
包含H3K4me3: cat test.bed | grep -n "H3K4me3"

六、下载 http://www.biotrainee.com/jmzeng/rmDuplicate.zip 文件,并且解压,查看里面的文件夹结构

wget http://www.biotrainee.com/jmzeng/rmDuplicate.zip && unzip *.zip
查看结构 tree rmDuplicate

七、打开第六题解压的文件,进入 rmDuplicate/samtools/single 文件夹里面,查看后缀为 .sam 的文件,搞清楚生物信息学里面的SAM/BAM定义是什么【另外关于sam头部注释信息在tmp.header中】

SAM的全称是sequence alignment/map format, 主要用于测序序列mapping到基因组上的结果表示
BAM是SAM的二进制压缩文件,不能像sam可以用less查看,它需要用samtools view打开
SAM分数据通常有两部分,头部注释信息(header section )和主体比对结果部分 (alignment section)

  • 注释信息:SAM文件产生以及被处理过程的一个记录,@开头,包括这么几项:

    • @HD,说明符合标准的版本、对比序列的排列顺序

      @HD VN:1.0 SO:coordinate (排序类型)
      头部区第一行,VN是格式版本;SO表示比对排序的类型,有unknown(default),unsorted,queryname和coordinate几种。

      samtools软件在进行行排序后不能自动更新bam文件的SO值,而picard却可以

    • @SQ,参考序列说明@SQ

      SN:chr1 LN:248956422 (序列ID及长度)
      SN是参考序列名;LN是参考序列长度;每个参考序列为一行

    • @RG,比对上的序列(read)说明

      @RG ID:sample01 (样品基本信息)
      1个sample的测序结果为1个Read Group,每个sample可以有多个文库的测序结果
      这些内容可以用下面👇程序添加,这些内容可以在形成sam时加入,其中ID是必须要有的
      bwa mem -R “@RG\tID:$sample\tSM:$sample\tLB:WES\tPU:Illumina\t PL:Miseq"
      【ID:样品ID号;SM:样本名;LB:文库名;PU:测序仪;PL:测序平台】
      【注意一定要在@RG后加入\t,字段之间用tag分割,否则运行错误】

    • @PG,使用的程序说明
      @PG ID:bowtie2 PN:bowtie2 VN:2.2.9

    • @CO,任意的说明信息

  • 主体部分:11个主列和1个可选列,之间用tab分割【如果某一列为或者0,说明这一列没有信息】*

    • 第一列:QNAME—比对的序列名称
      例如:SRR1042600.42157053 ,也就是read ID
      如果reads比对到多条序列或者某条序列的多个位置,相同的名字会出现多次。
      【有可能read比对到两个位置,mate也比对到两个位置,这样这一条reads就有四次相同名字出现】
      Illumina有两种双端测序方式:PE测序和MP测序。
      MP测序中:read表示本条read,mate表示pair中的另一条read;或者在PE测序中用read1,read2表示

    • 第二列:Flag
      read mapping情况的数字表示,较少的数字记录表示当前序列的匹配情况
      1: 表示序列PE双端测序,read是序列的一条
      2: read和参考序列完全比对,没有插入缺失等
      4: 这个序列没有比对上
      8: 这个序列的另一端没有比对上
      16: 这个序列比对到参考序列负链上
      32: 这个序列的另一端比对到参考序列负链上
      64: 表示这个序列是read / read1
      128: 表示这个序列是mate / read2
      256: 这个序列是次优的比对结果,它是secondary
      【一条序列可能比对到参考序列的多个位置,只有一个是首要的比对位置】
      512:序列QC时失败,被过滤掉 --> 不常用
      1024:PCR或测序错误产生的重复reads --> 不常用
      2048: 补充匹配的序列 --> 不常用

      比如flag 99=64+32+2+1, 意思就是:来自于双端测序的read1,且匹配的非常好,对应的read2匹配到了负链(该read1为正链);
      83=64+16+2+1表示read1完全匹配负链,
      而147=128+16+2+1表示双端测序的read2完全匹配负链
      163=128+32+2+1 表示read1完全匹配负链
      161=163-2,81=83-2. 表明这些read不是完全匹配,存在插入缺失
      
      #常见的FLAGs:
      其中一条reads没有map上: 73, 133, 89 121, 165, 181, 101, 117, 153, 185, 59, 137
      【PE测序的两条read可能同时出现上面的数字,可能表示一条没有匹配上,另一条完美匹配,也可能都不匹配。因此这个数字并不能精确告诉你,哪条read是匹配上的,只能模糊的说,他判断出有这种情况,要再结合CIGAR判断】
      两条reads都没有map上: 77,141
      比对上了,方向也对,也在插入大小(insert size)内: 99, 147, 83, 163
      比对上了,也在插入大小(insert size)内, 但是反向不对:67, 131, 115, 179
      单一配对,就是插入大小(insert size)不对: 81, 161, 97, 145, 65, 129, 113, 177
      
    • 第三列:Rname
      read比对的那条序列的序列名称,与头部注释文件中@SQ中的SN对应;没有比对上用*

    • 第四列:POS
      read比对到RNAME这条序列的最左边的位置(从1开始计数,没有比对上,此处为0)

    • 第五列:MAPQ
      mapping的质量值,即这段序列匹配到参考序列某段的概率值,结果= -10log10(Err) , 一般为0-60,60表示比对率最高
      假如一条read比对到了两处,但是Q值不同,一般Q值大的那个比对的真实性更高

    • 第六列:GIGAR
      reads比对到Rname的具体情况,使用数字+字母表示

      CIGAR 值 BAM 含义
      M 0 alignment match (can be a sequence match or mismatch)
      I 1 insertion to the reference
      D 2 deletion from the reference
      N 3 skipped region from the reference
      S 4 soft clipping (clipped sequences present in SEQ)
      H 5 hard clipping (clipped sequences NOT present in SEQ)
      P 6 padding (silent deletion from padded reference)
      = 7 sequence match
      X 8 sequence mismatch

      S和H一般用于read前后出现大部分的错配,但是中间能够比对上的情况
      H只出现在CIGAR的首末尾;S与H在CIGAR中一般组合出现,但也有只存在S的情况
      S表示序列会出现在SEQ中,H则不会出现在SEQ列中
      M与=的差别:M能配对,但可能存在某个碱基的差异,=表示完全匹配
      对于mRNA比对到基因组这种情况,N的出现代表内含子存在
      M/I/S/=/X这5项的加和应该与序列长度相等

    • 【以下第7-9列是mate的信息,如果是单端测序,这几列没有意义】
      第七列:RNEXT
      双端测序中read2比对到的参考序列名称【也就是mate比对到的染色体号】=表示read1、read2都比对到了同一条;*表示没有序列名称;如果read2匹配到的和read1不同,那么RNEXT会更换名称

    • 第八列:PNEXT

      read2/mate比对到参考序列上的第一个碱基位置【read1的是第四列的POS】

    • 第九列:TLEN
      估计的模板片段长度,就是read寻找到了参考序列的哪些区域;
      当mate/read2位于本序列上游时(就是位于read1之前),该值为负值;
      PE测序中,利用这个TLEN值可以推测出文库的平均大小

    • 第十列:segment序列

    • 第十一列:segment质量值

    • 可选列:
      格式一般为TAG:TYPE:VALUE ,例如:NM:i:4

      NM:i 经过编辑的序列长度(edit distance)
      MD:Z 错配位置/碱基(mismatching positions/bases)
      AS:i 匹配得分(Alignment score)
      XS:i 第二好的匹配得分(suboptimal alignment score)
      YS:i mate序列匹配的得分
      BC: 条码序列(barcode sequence)
      

八、bam文件的生成与查看

#使用bowtie2进行mapping,bowtie2速度上比较有优势,而且输出的结果就是SAM格式的
#1.建立fa文件索引,以人类基因组hg19为例,设定前缀为hg19
bowtie2-build hg19.fa hg19 --> 将会生成好几个前缀hg19,后缀bt2的文件
#2.将PE测序数据比对到基因组
bowtie2 -q --phred64 -p8 --no-unal -x hg19 -1 read1.fq.gz -2 read2.fq.gz -S paired.sam
#-q:输入格式为fq
#--phred 33设定碱基质量值(默认33,现在一般测得都是33)
#-p:线程数
#--no-unal:将没有比对上的剔除(--no-unalignment)
#-x:bowtie2的index参考序列
#-S:设置输出sam名称

#3. 使用samtools将sam转bam
samtools view -b -S file.sam > file.bam
#还能将bam转sam
samtools view -h file.bam > file.sam

#4. bam文件读取查看
samtools view xxx.bam |less 
#如果只想查看header信息,就加一个-H参数 (-h:显示header信息)

九、查看使用的参考基因组有多少染色体

第八题中,我们使用了hg19基因组,用bowtie2比对得到sam,又转为bam
因此,我们直接对bam进行操作
操作流程:查看bam的头注释文件中的第二列SN:chrxxx,其中包含了染色体信息--> sed去掉数字前的信息 -->对数字排序
samtools view -H tmp.rmdup.bam | cut -f2 | sed -e 's/SN:chr//g' | sort -n

十、rmDuplicate/samtools/single中的sorted.bam文件中,统计第二列各flag个数

samtools view tmp.sorted.bam | cut -f2 | sort -n | uniq -c

同理也可以在rmDuplicate/samtools/paired中的sorted.bam文件中统计flag

**十一、下载 http://www.biotrainee.com/jmzeng/sickle/sickle-results.zip 文件,并且解压,进入解压后的文件夹test1_fastqc,找到 fastqc_data.txt 文件,统计 以>>开头的有多少行 **

cat fastqc_data.txt | grep '>>' | wc -l
结果会显示24行

十二、下载 http://www.biotrainee.com/jmzeng/tmp/hg38.tss (存储转录起始位点信息)文件,在NCBI中找到自己感兴趣的基因对应的 refseq数据库 ID(这里我以乳腺癌BRCA1为例),然后找到它在hg38.tss 文件的哪一行

RefSeq

这里搜索的是第一个RefSeq ID
cat hg38.tss | grep 'NM_007294'
得到结果 NM_007294 chr17 43123483 43127483 1

关于RefSeq数据库:详细的会在之后的更新中介绍,关于各个数据库的使用豆豆和花花会整理

RefSeq数据库中所有的数据是一个非冗余的、提供参考标准的数据,包括染色体、基因组(细胞器、病毒、质粒)、蛋白、RNA等。refseq序列是NCBI筛选过的非冗余数据库,比GeneBank准确。
关于它的ID:NM开头的表示标准序列,XM表示预测的蛋白编码序列,NR表示非编码蛋白的mRNA序列,AF开头的表示克隆序列,BC开头的表示模板序列
另外,你可能见过gi|4557284|ref|NM_000646.1|[4557284]这种格式
gi就是代表genebank identifier;ref就是对应的refseq中的ID啦

十三、解析hg38.tss 文件,统计每条染色体的基因个数

cut -f2 hg38.tss |cut -d'_' -f1 | sort |uniq -c | sort -rn

 6157 chr1
   5880 chr19
   5782 chr6
   4090 chr2
   3794 chr17
   3577 chr11
   3395 chr3
   3014 chr12
   2838 chr10
   2821 chr5
   2785 chr7
   2696 chr16
   2561 chrX
   2377 chr15
   2310 chr9
   2277 chr4
   2221 chr8
   1982 chr14
   1692 chr20
   1410 chr22
   1133 chr13
    895 chr21
    883 chr18
    414 chrY
     32 chrUn
      2 chrM
#chrM是线粒体染色体
#chrUn是不能准确地放到特定染色体上的基因组DNA克隆重叠群

十四、统计hg38.tss 文件中NM和NR开头的序列,了解NM和NR开头的含义

统计NM开头
cat hg38.tss | grep 'NM' | wc -l
同理可以统计NR开头
NM开头的表示标准序列,可以转录成蛋白质的基因
NR非编码蛋白的mRNA序列

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容