2019-11-09 BAM和SAM格式文件shell練習(xí)

題目來(lái)源:http://www.bio-info-trainee.com/3578.html
首先使用bowtie2軟件自帶的測(cè)試數(shù)據(jù)生成sam/bam文件,代碼如下(這里bowtie2是直接使用可執(zhí)行文件,也可以source激活后直接使用):

mkdir -p ~/biosoft
cd ~/biosoft
wget https://sourceforge.net/projects/bowtie-bio/files/bowtie2/2.3.4.3/bowtie2-2.3.4.3-linux-x86_64.zip 
unzip bowtie2-2.3.4.3-linux-x86_64.zip 
cd ~/biosoft/bowtie2-2.3.4.3-linux-x86_64/example/reads
../../bowtie2 -x ../index/lambda_virus -1 reads_1.fq -2 reads_2.fq > tmp.sam
# samtools view -bS tmp.sam >tmp.bam

命令解釋?zhuān)?a target="_blank">參考生信技能樹(shù)):
bowtie的使用分為兩步,首先建立索引,之后進(jìn)行比對(duì)。
建索引:
基本命令:bowtie2-build your-fastq-file.fa your-index-name
example中的read已經(jīng)建立好了索引,索引位置及前綴為../index/lambda_virus
比對(duì)基本格式 :
單端測(cè)序:Bowtie –x tmp –U(表示單端) reads.fa –S hahahhha.sam
雙端測(cè)序:Bowtie –x tmp -1 reads1.fa -2 reads2.fa –S hahahha.sam

  • ../../bowtie2 還沒(méi)有將bowtie2寫(xiě)入環(huán)境變量,因此使用bowtie2需要寫(xiě)明全路徑
  • ../index/lambda_virus 表示建立好的索引文件
  • -S 后接輸出文件名
    總結(jié):將reads1.fa及reads2.fa 兩條序列比對(duì)至索引文件../index/lambda_virus上 比對(duì)后產(chǎn)生tmp.sam文件
  1. 統(tǒng)計(jì)共多少條reads(pair-end reads這里算一條)參與了比對(duì)參考基因組
less -SN tmp.sam | wc -l
20003
  1. 統(tǒng)計(jì)共有多少種比對(duì)的類(lèi)型(即第二列數(shù)值有多少種)及其分布。
less -SN tmp.sam | sed '1,3d' | cut -f 2|sort -n | uniq -c
     24 65
    165 69
    153 73
    213 77
      2 81
   4650 83
    136 89
   4516 99
    125 101
     16 113
     24 129
    153 133
    165 137
    213 141
   4516 147
    125 153
      2 161
   4650 163
    136 165
     16 177
  1. 篩選出比對(duì)失敗的reads,看看序列特征。
less -SN tmp.sam | grep -v '^@' |cut -f 1-10|grep -v 'M' |cut -f 10 |head
GCGTNGTACNNGNNGATGNTTACGACTAANACTTNNNNNTNCNGNNT
ANTGGNTNAGCGGNCGNAGNGNTCNGNAGCNANNAANCTGNTATGNTNNNTNNATCNNNCNNNNGTGNNAANNNCCAGNNNNGGCNNNNCATACANNNTNNNCNTNNNTACANNATANNCGNNATTNNACNGTNNCGNGNNCCGNGTNNNNN
NNTNNNNNAGNTNAANANANGTNTTGNGAANCTNNANACNNCTTTTNNNNTATGNTNNTNAGCCTAG
TTGNNCNNATATNNTAGATCGATATCTTTATNTCGAGCAAAGCAAA
NNNGANNNTGCTCGNCAANNNNANNNNTTTCCTTNTNCGGNCCNGNAATNATNACANNATGNNGNAANCGNNGNTTNTTNTNCAGGNCCTCTGNNGCNNANGCNCANGNNNTNTNNNNCNTNGNNGNCNNNCCGNAATNNNCTGNNGNCNTNGTNTCTGNCTNNNAGNNGNCGAANCTANNGANCCATANNTN
TTCGGNNCGCNNNNAAANAGGCTGAGCACGGTGTACGTCAGNCCGGAAAAGTGC
NNNGNTGTACCGGCTGTCTGGTATGTATGAGTTTGTGGTGAATAATGCCCCTGAACAGACAGAGGACGCCGGGCCCGCAGAGCCTGTTTCTGCGGGAAAGTGTTCGACGGTGAGCTGAGNTTTGCCCTGAAACTGG
less -SN tmp.sam |grep -v '^@' | cut -f 6 | grep -v 'M' | wc -l
1005
less -SN tmp.sam |grep -v '^@' |awk ' $6 =="*"  {print $0}' |wc -l
1005
less -SN tmp.sam |grep -v '^@' |awk '{if ( $6 =="*")  print $0}' |wc -l
  1. 比對(duì)失敗的reads區(qū)分成單端失敗和雙端失敗情況,并且拿到序列ID
less -SN tmp.sam |grep -v "^@" |awk '{if ($6=="*") print}' |cut -f1|sort -n |uniq -c|grep -w 2 #顯示兩端都沒(méi)有比對(duì)上的id, -w參數(shù)表示精確匹配。
less -SN tmp.sam |grep -v "^@" |awk '{if ($6=="*") print}' |cut -f1|sort -n |uniq -c|grep -w 1
  1. 篩選出比對(duì)質(zhì)量值大于30的情況(看第5列)
less -SN tmp.sam |grep -v "^@" |awk '{if ($5 > 30) print $0}' |cut -f5|sort -n |uniq -c
  1056 40
 17576 42

sam文件中,第一列為ID,第二列為比對(duì)類(lèi)型,第三列是參考基因組信息,第四列為坐標(biāo),第五列為質(zhì)量值,第6列為比對(duì)信息,第十列為堿基序列

  1. 篩選出比對(duì)成功,但是并不是完全匹配的序列
cat tmp.sam |grep -v "^@" |cut -f 6,10|grep [IDPSH]|wc -l

M:alignment match (can be a sequence match or mismatch)

表示read可mapping到第三列的序列上,則read的堿基序列與第三列的序列堿基相同,表示正常的mapping結(jié)果,M表示完全匹配,但是無(wú)論reads與序列的正確匹配或是錯(cuò)誤匹配該位置都顯示為M

I:insertion to the reference

表示read的堿基序列相對(duì)于第三列的RNAME序列,有堿基的插入

D:deletion from the reference

表示read的堿基序列相對(duì)于第三列的RNAME序列,有堿基的刪除

N:skipped region from the reference

表示可變剪接位置

P:padding (silent deletion from padded reference)

S:soft clipping (clipped sequences present in SEQ)

H:hard clipping (clipped sequences NOT present in SEQ)

clipped均表示一條read的序列被分開(kāi),之所以被分開(kāi),是因?yàn)閞ead的一部分序列能匹配到第三列的RNAME序列上,而被分開(kāi)的那部分不能匹配到RNAME序列上。

"="表示正確匹配到序列上

"X"表示錯(cuò)誤匹配到序列上

而H只出現(xiàn)在一條read的前端或末端,但不會(huì)出現(xiàn)在中間,S一般會(huì)和H成對(duì)出現(xiàn),當(dāng)有H出現(xiàn)時(shí),一定會(huì)有一個(gè)與之對(duì)應(yīng)的S出現(xiàn)

例如:

162M89S

162H89M

149M102S

149H102M

40S211M

20M1D20M211H

S可以單獨(dú)出現(xiàn),而H必須有與之對(duì)應(yīng)的S出現(xiàn)時(shí)才可能出現(xiàn),不可在相同第一列的情況下單獨(dú)出現(xiàn)

N:如果是mRNA-to-genome,N出現(xiàn)的位置代表內(nèi)含子,其它比對(duì)形式出現(xiàn)N時(shí)則沒(méi)有具體解釋

M/I/S/=/X:這些數(shù)值的加和等于第10列SEQ的長(zhǎng)度

  1. 篩選出inset size長(zhǎng)度大于1250bp的 pair-end reads
less -SN tmp.sam | grep -v '^@' | awk '{if( $9 > 1250 || $9 < -1250) print $0}' |wc -l
80
less -SN tmp.sam | grep -v '^@' | awk ' $9 > 1250 || $9 < -1250 { print $0}' |wc -l
80
  1. 統(tǒng)計(jì)參考基因組上面各條染色體的成功比對(duì)reads數(shù)量.

less -SN tmp.sam | grep -v '^@' | cut -f 3 | sort |uniq -c
      426 *
  19574 gi|9626243|ref|NC_001416.1|
  1. 篩選出原始fq序列里面有N的比對(duì)情況
less -SN tmp.sam | grep -v '^@' |cut  -f  10 | grep 'N' |wc -l
12934

  1. 篩選出原始fq序列里面有N,但是比對(duì)的時(shí)候卻是完全匹配的情況
less -SN tmp.sam | grep -v '^@' |cut  -f  6,10 |grep 'N'|cut -f 1|grep -v [IDNPSH] |grep 'M'|wc -l
10632
less -SN tmp.sam | grep -v '^@' |awk ' $10 ~ "N" {print $0}' | awk '$6 !~  "[IDNPSH]" {print $0}'| awk '$6 !~ "*" {print $0}' |wc -l
10632
less -SN tmp.sam | grep -v '^@' |awk ' $10 ~ "N" {print $0}' | awk '$6 !~  "[IDNPSH]" {print $0}'| awk '$6 != "*" {print $0}' |wc -l
10632
less -SN tmp.sam | grep -v  '^@' | awk '{if ($10 ~ "N") print $0}' | awk '{ if ($6 !~ "[IDNPSH]")  print $0} '| awk '{if  ($6 != "*") print $0}'  | wc -l
10632
less -SN tmp.sam | grep -v  '^@' | awk '{if ($10 ~ "N") print $0}' | awk '{ if ($6 !~ "[IDNPSH]")  print $0} '| awk '{if  ($6 != "\*") print $0}'  | wc -l
awk: cmd. line:1: warning: escape sequence `\*' treated as plain `*'  # awk命令提示"*"字符不需要轉(zhuǎn)義符
10632 
less -SN tmp.sam | grep -v '^@' | awk '$10 ~ "N" && $6 !~ "[IDNPSH]"  && $6 != "*" {print $0}'|wc -l
10632
less -SN tmp.sam | grep -v '^@'| awk '{if ($10 ~ "N" && $6 !~ "[IDNPSH]"  && $6 != "*") print $0}' |wc -l
10632
  1. sam文件里面的頭文件行數(shù)
less -SN tmp.sam | grep  '^@' |wc -l
3
  1. sam文件里每一行的tags個(gè)數(shù)一樣嗎
less -SN tmp.sam | grep -v '^@' |cut -f 12- | less -SN
  1. sam文件里每一行的tags個(gè)數(shù)分別是多少個(gè)
less -SN tmp.sam | grep -v '^@' |cut -f 12| wc -l
20000
less -SN tmp.sam | grep -v '^@' |cut -f 20| wc -l
20000 #第12列和行數(shù)與第20列一致,說(shuō)明每一行的tags數(shù)量相同,均為9個(gè)
  1. sam文件里記錄的參考基因組染色體長(zhǎng)度分別是?
less -SN tmp.sam |grep '^@' |grep 'LN'
@SQ SN:gi|9626243|ref|NC_001416.1|  LN:48502
  1. 找到比對(duì)情況有insertion情況的
less -SN tmp.sam | grep -v '^@' | awk ' $6 ~ "I"  {print $0}' | wc -l
66
  1. 找到比對(duì)情況有deletion情況的
less -SN tmp.sam | grep -v '^@' | awk ' $6 ~ "I"  {print $0}' | wc -l
1843
  1. 取出位于參考基因組某區(qū)域的比對(duì)記錄,比如 5013到50130 區(qū)域
less -SN tmp.sam| grep -v '^@' | awk '$4 > 5013 && $4 < 50130 && $8 > 5013 && \
  $8 < 50130 && $6 != "*" { print $0}' |wc -l
17072
  1. 把sam文件按照染色體以及起始坐標(biāo)排序
less -SN tmp.sam| grep -v '^@' | sort   -k 4 -n | awk '$4 != 0 {print $0}'|wc -l
19574
less -SN tmp.sam| grep -v '^@' | sort  -t ' ' -k 4 -n | awk '$4 != 0 {print $0}'|wc -l
19574
  1. 找到 102M3D11M 的比對(duì)情況,計(jì)算其reads片段長(zhǎng)度
less -SN tmp.sam| grep -v '^@' | grep -w  '102M3D11M'| awk '{print length($10)}'
113
  1. 安裝samtools軟件后使用samtools軟件的各個(gè)功能?chē)L試把上述題目重新做一遍。
    其它概念題
    高通量測(cè)序數(shù)據(jù)分析中,序列與參考序列的比對(duì)后得到的標(biāo)準(zhǔn)文件為什么文件?
    sam文件是一種比對(duì)后的文件,能直接查看嗎?
    Sam/Bam文件分為兩部分,一部分以@開(kāi)頭的是什么序列,另一部分是什么序列?
    Sam文件除頭文件,以什么符號(hào)分割文本的,比對(duì)部分信息一行是多少列?你能用awk計(jì)算列數(shù)嗎?
    Sam/Bam文件的@SQ開(kāi)頭的行是什么?你能生成一個(gè)文本,兩列,一列是參考基因組染色體/sca id,一列是長(zhǎng)度嗎?
    Sam文件的比對(duì)位置是從1還是0開(kāi)始的?
    常見(jiàn)CIGAR 字符串各字母代表的意義
    比對(duì)質(zhì)量的數(shù)字是哪一列?越大比對(duì)質(zhì)量越好還是越小越好?
    Sam文件的flag是第幾列,數(shù)字代表什么意義?是怎么計(jì)算來(lái)的?
    Sam文件怎么轉(zhuǎn)bam文件?用什么指令?為什么要轉(zhuǎn)換?
    Bam文件查看用什么指令?如果需要查看頭文件需要增加參數(shù)?
    Bam文件為什么要排序?排序后的bam和未排序的bam頭文件和chr position列有什么區(qū)別?
    Bam文件建索引的指令是什么?
    Bam文件可視化用什么工具?查看時(shí)需要建立索引嗎?
    Bam文件統(tǒng)計(jì)reads比對(duì)情況用samtools的哪一個(gè)子命令?
    SE測(cè)序和PE測(cè)序的所比對(duì)后得到的sam文件的區(qū)別在哪里?
    Bam能用gzip再壓縮嗎?
    Sam文件通常由哪些比對(duì)軟件得到的
    Sam/Bam文件能轉(zhuǎn)成fastq文件嗎?
    有時(shí)候不能通過(guò)文件名的后綴來(lái)區(qū)別是sam還是bam,你是怎么區(qū)別的?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,024評(píng)論 3 413
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,285評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,548評(píng)論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,328評(píng)論 6 404
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 54,878評(píng)論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評(píng)論 3 439
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,098評(píng)論 0 286
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,616評(píng)論 1 331
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,554評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,725評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評(píng)論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,971評(píng)論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,361評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,613評(píng)論 1 280
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,339評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,695評(píng)論 2 370