Biostar_handbook||charpter 15_16 腳本進階_數(shù)據(jù)可視化

Charpter 15 Advanced Command Line

背景

在Linux下的數(shù)據(jù)分析從質(zhì)控到比對到后續(xù)分析等猩谊,每一步都需要獨立的軟件去實現(xiàn),并且在一些步驟之間還需要對數(shù)據(jù)的格式進行轉(zhuǎn)換。而想要整合這些軟件去實現(xiàn)“一鍵式”的分析,就需要去學習一些進階腳本的寫法了。

編程語言包括兩類:編譯型語言(complied programs)和解釋型語言(interpreted programs)。編譯型語言更符合底層計算機語言裙盾,故程序運行效率高速度快,但上手存在一定的困難他嫡。解釋型語言更符合人類語言番官,有其特殊的解釋器來解析程序語言,上手較方便钢属,但程序運行效率沒有編譯型語言高徘熔。

生物信息里生物汪首先學習的還是編譯型語言:主要包括Perl,Python淆党,R酷师,AWK等∪疚冢基本語言運用熟練了有需求再看看編譯型語言C山孔,能更好的理解計算機數(shù)據(jù)處理。

AWK

入門時學習Perl的慕匠,也練習下用perl單行實現(xiàn)書中AWK的效果吧

### 數(shù)據(jù)下載
wget http://data.biostarhandbook.com/bam/demo.bam
samtools view demo.bam |cut -f 1,3,4 |head

### AWK看指定行饱须,并進行簡單的計算
samtools view demo.bam | awk '{ print $3,$2,$1, 10^(-$5/10) }' |head

###perl 單行實現(xiàn)
samtools view demo.bam | perl -alne ' print "$F[2]\t$F[1]\t$F[0]",10**(-$F[4]/10) '

AWK 基本格式 :awk 'CONDITION { ACTIONS }', awk 'CONDITION1 { ACTIONS1 } CONDITION2 { ACTIONS2 } CONDITION3 { ACTIONS3 }'

### AWK 篩選指定列小于60的值
samtools view demo.bam | awk '$5 < 60 { print $5 }'

##Perl oneliner
samtools view demo.bam | perl -alne 'print $F[4] if $F[4] < 60'

AWK默認是對每行的空白部分(spaces, tabs)為分隔符

  • 指定分隔符awk -F '\t',相同與Perl單行的 -F(需與-a參數(shù)一起)台谊。
  • NR 指行數(shù),number of row
  • NF 指列數(shù)譬挚, number of columns
###計算TLEN插入片段長度大于0的平均值锅铅。
samtools view -f 2 demo.bam |awk ' $9 > 0 {sum+=$9 ; count+=1} END{print sum/count} '

### perl oneliner
samtools view -f 2 demo.bam |perl -alne ' if($F[8]>0){$sum+=$F[8];$count+=1 } END{print $sum/$count}'

## 加了個time 看awk比perl運行速度更快一些

BioAwk-c參數(shù)等

##檢測sam中cigar有deletion
samtools view -f 2 demo.bam |bioawk -c sam '$cigar ~ /D/{print $cigar}'|wc -l
## perl 單行
samtools view -f 2 demo.bam | perl -alne ' print $F[5] if $F[5]=~/D/ ' |wc -l


不同condition和不同的action

samtools depth demo.bam | awk ' $3 <= 3 { $1="LO" } $3 > 3 { $1="HI" } { print $0 }'

## perl oneliner
samtools depth demo.bam |perl -alne 'if($F[2]<=3){$F[0]="LO";print "$F[0]\t$F[1]\t$F[2]"}else{$F[0]="HI"; print "$F[0]\t$F[1]\t$F[2]"}'

腳本scripts

bash腳本的一些基本用法:

  • 開頭 #!/bin/bash
  • 設置糾錯參數(shù)(Dead programs tell no lies): set -ueo pipefail
  • 基本變量 NAME=JOHN.... ${NAME}(注意變量賦值=前后不能有空格,使用變量用${NAME})
  • 命令行參數(shù):NAME=$1(相當于perl里的$ARGV[0])
  • 對于絕對地址的文件:
    • 文件名(basename{FULL})
    • 后綴${FULL#*.}
    • 前綴${FULL%.*}
  • 將命令結(jié)果賦予一個變量`ls -1 |wc -l`
  • ls -1 -1參數(shù)的使用
  • 并行處理parallelparallel --verbose --eta
    • --verbose : 指具體并行處理的命令行
    • --eta:指具體處理的時間
    • find . -name '*.fastq' -print0 |parallel -0 --verbose "grep ATGC {} >{}.out"
    • ls * |parallel -i -verbose "grep ATGC {} > {}.OUT"
### bash的一些詭異變量處理

# Suppose this is the full path.
FULL=/data/foo/genome.fasta.tar.gz

# To make it: genome.fasta.tar.gz
NAME=$(basename ${FULL})

# To make it: fasta.tar.gz
EXT1=${FULL#*.}

# To get only the extension: gz
EXT2=${FULL##*.}

# To get the other side: /data/foo/genome.fasta.tar
START=${FULL%.*}
START=${FULL%%.*}

### 獲取SRR數(shù)據(jù)10000行并質(zhì)控
#
# Usage: getproject.sh PRJN NUM
#
# Example: bash getproject.sh PRJNA257197 3
#
# This program downloads a NUM number of experiments from an SRA Bioproject
# identified by the PRJN number then runs FastQC quality reports before
# and after trimming the data for quality.

# Immediately stop on errors.
set -ueo pipefail

# The required parameter is the run id.
PRJN=$1

# How many experimental runs to get.
NUM=$2

# What is the conversion limit for each data.
LIMIT=10000

# This is an internal variable that holds the selected ids.
SRA=short.ids

# Keep only the required number of ids.
cat ids.csv | head -${NUM} > $SRA

# Place an echo before each command to see what will get executed when it runs.
cat $SRA | xargs -n 1 -I {} echo fastq-dump --split-files -X ${LIMIT} {}

# Generate the commands for fastqc.
cat $SRA | xargs -n 1 -I {} echo fastqc {}_1.fastq {}_2.fastq

# Generate the commands for trimmomatic.
# Here we run it with the -baseout flag to generatevfile extension of .fq.
cat $SRA | xargs -n 1 -I {} echo trimmomatic PE -baseout {}.fq {}_1.fastq {}_2.fastq SLIDINGWINDOW:4:30

# Run FastQC on the new data that matches the *.fq extension.
cat $SRA |  xargs -n 1 -I {} echo fastqc {}_1P.fq {}_2P.fq 

Charpter 16 DATA Visualization

背景

永遠不能輕易的就相信電腦,大腦才是最強有力的分析工具减宣。

能夠可視化的數(shù)據(jù)包括:FASTA, BED, GFF, SAM/BAM

常用的數(shù)據(jù)可視化工具包括:

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盐须,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子漆腌,更是在濱河造成了極大的恐慌贼邓,老刑警劉巖阶冈,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異塑径,居然都是意外死亡女坑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門统舀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匆骗,“玉大人,你說我怎么就攤上這事誉简〉锞停” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵闷串,是天一觀的道長瓮钥。 經(jīng)常有香客問我,道長烹吵,這世上最難降的妖魔是什么骏庸? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮年叮,結(jié)果婚禮上具被,老公的妹妹穿的比我還像新娘。我一直安慰自己只损,他們只是感情好一姿,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著跃惫,像睡著了一般叮叹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上爆存,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天蛉顽,我揣著相機與錄音,去河邊找鬼先较。 笑死携冤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的闲勺。 我是一名探鬼主播曾棕,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼菜循!你這毒婦竟也來了翘地?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎衙耕,沒想到半個月后昧穿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡橙喘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年时鸵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渴杆。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡寥枝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出磁奖,到底是詐尸還是另有隱情囊拜,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布比搭,位于F島的核電站冠跷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏身诺。R本人自食惡果不足惜蜜托,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望霉赡。 院中可真熱鬧橄务,春花似錦、人聲如沸穴亏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗓化。三九已至棠涮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刺覆,已是汗流浹背严肪。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谦屑,地道東北人驳糯。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像伦仍,于是被迫代替她去往敵國和親结窘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容