DEXseq2分析

isoform usage是常見的RNA seq下游分析流程求厕,常見的包也是DEXseq2。但是用它跑自己的數(shù)據(jù)一直報錯,跑示例數(shù)據(jù)是能夠work的翔始。

names(x) <- value: 'names' atrribute [9] must be the same length as the vector [1]

網(wǎng)上很多教程都是對示例數(shù)據(jù)進(jìn)行講解心俗,解決不了我的問題举畸『溃看報錯信息感覺是gff文件格式對不上俄周,看了源代碼,它的版本很久了疚顷,要求gff文件里“exon_number”為“exonic_part_number”武契、“transcript_id”為“transcripts”、第三列類型為“exonic_part”荡含。要改的地方太多了,所以我自己改了它的源代碼來跑届垫。

要求輸入文件有:

  1. 以exon為單元的reads count文件
  2. gff文件

獲得reads count文件——HTseq

# 安裝
conda install -c bioconda htseq
htseq-count -f bam -c all.exon.count.csv -n 40 --append-output  -t exon -i gene_id -i exon_number \
/data/workdir/FRAL190036196.sort.bam \
/data/workdir/FRAL190036198.sort.bam \
/data/workdir/FRAL190036258.sort.bam.........\
/data/workdir/information/hg38/gencode_new.v40.gtf
# -f  輸入文件格式
# -c  輸出文件名
# -n 線程數(shù)
#  --append-output  所有結(jié)果合并輸出一個結(jié)果文件释液,每列為一個樣本
# -t  識別gtf第三列的exon為計算reads count的單元
# -i  結(jié)果文件第一列為id,為gene_id:exon_number的格式
装处!非常耗時误债,建議用多點線程跑浸船。一個樣本單線程差不多一個半小時

在這我多輸出了一列g(shù)ene name,完全沒必要


結(jié)果文件

分隔各列為一個文件的腳本

# samples.txt為樣本名寝蹈,每行一個樣本
sf="samples.txt"
for i in {2..469};
do
    s_num=$((i-1))
    s=$(sed -n "${s_num}p" "${sf}")
    awk -v col="$((i+1))" '{OFS = "\t"} {print $1,$col}' all.exon.count.tsv > "split_sample_exon_count/${s}.txt"
done

接下來用R跑

# DEXseq分析
library("DEXSeq")
samples_label <- read.delim("D:/data/465_sample_group.txt")
countFiles <- list.files("D:/data/extData_exonnumber/", pattern=".txt$", full.names=TRUE)
gffFile <- list.files("D:/data/DEXseq", pattern="gff$", full.names=TRUE)
sampleTable <- data.frame(row.names=samples_label$Sample,
                          condition=samples_label$group)
sample_names <- samples_label$Sample
countFileNames <- sub("\\.txt$", "", basename(countFiles))
# 根據(jù)樣本名稱排序 countFiles
sorted_countFiles <- countFiles[order(match(countFileNames, sample_names))]

# 大部分都沒有動李命,只做了細(xì)微改變
modify_DEXSeqDataSetFromHTSeq = function (sorted_countFiles, sampleTable, design = ~sample + exon + 
                                         condition:exon, gffFile = NULL){
  if (!all(sapply(sorted_countFiles, class) == "character")) {
    stop("The countfiles parameter must be a character vector")
  }
  lf <- lapply(sorted_countFiles, function(x) read.table(x, header = FALSE, 
                                                         stringsAsFactors = FALSE))
  if (!all(sapply(lf[-1], function(x) all(x$V1 == lf[1]$V1)))) 
    stop("Count files have differing gene ID column.")
  dcounts <- sapply(lf, `[[`, "V2")
  rownames(dcounts) <- gsub("_PAR_Y","",lf[[1]][, 1])
  dcounts <- dcounts[substr(rownames(dcounts), 1, 1) != "_",]
  rownames(dcounts) <- sub(":", ":E", rownames(dcounts))
  colnames(dcounts) <- sorted_countFiles
  splitted <- strsplit(rownames(dcounts), ":")
  exons <- sapply(splitted, "[[", 2)
  genesrle <- sapply(splitted, "[[", 1)
  if (!is.null(gffFile)) {
    aggregates <- read.delim(gffFile, stringsAsFactors = FALSE, header = FALSE)
    colnames(aggregates) <- c("chr", "source", "class", 
                              "start", "end", "ex", "strand", "ex2", "attr")
    aggregates$strand <- gsub("\\.", "*", aggregates$strand)
    aggregates <- aggregates[which(aggregates$class == "exon"),]
    aggregates$attr <- gsub("\"|=|;", " ", aggregates$attr)
    aggregates$gene_id <- sub(".*gene_id\\s(\\S+).*", "\\1", aggregates$attr)
    transcripts <- gsub(".*transcript_id\\s(\\S+).*", "\\1", aggregates$attr)
    exonids <- gsub(".*exon_number\\s(\\S+).*", "\\1", aggregates$attr)
    exoninfo <- GRanges(as.character(aggregates$chr), IRanges(start = aggregates$start, 
                                                              end = aggregates$end), strand = aggregates$strand)
    names(exoninfo) <- paste(aggregates$gene_id, exonids, sep = ":E")
    names(transcripts) <- rownames(exoninfo)
    if (!all(rownames(dcounts) %in% names(exoninfo))) {
      stop("Count files do not correspond to the flattened annotation file")
    }
    matching <- match(rownames(dcounts), names(exoninfo))
    stopifnot(all(names(exoninfo[matching]) == rownames(dcounts)))
    stopifnot(all(names(transcripts[matching]) == rownames(dcounts)))
    dxd <- DEXSeqDataSet(dcounts, sampleTable, design, exons, 
                         genesrle, exoninfo[matching], transcripts[matching])
    return(dxd)
  }
  else {
    dxd <- DEXSeqDataSet(dcounts, sampleTable, design, exons, 
                         genesrle)
    return(dxd)
  }
}

dxd <- modify_DEXSeqDataSetFromHTSeq(
  sorted_countFiles,
  sampleData=sampleTable,
  design= ~sample + exon + condition:exon,
  flattenedfile=gffFile)

# 差異分析
dxr <- DEXSeq(dxd)

沒跑完,實在是太慢了箫老,數(shù)據(jù)量太大封字,R直接死機(jī)了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市耍鬓,隨后出現(xiàn)的幾起案子阔籽,更是在濱河造成了極大的恐慌,老刑警劉巖牲蜀,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笆制,死亡現(xiàn)場離奇詭異,居然都是意外死亡涣达,警方通過查閱死者的電腦和手機(jī)在辆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來度苔,“玉大人匆篓,你說我怎么就攤上這事×煮Γ” “怎么了奕删?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疗认。 經(jīng)常有香客問我完残,道長,這世上最難降的妖魔是什么横漏? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任谨设,我火速辦了婚禮,結(jié)果婚禮上缎浇,老公的妹妹穿的比我還像新娘扎拣。我一直安慰自己,他們只是感情好素跺,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布二蓝。 她就那樣靜靜地躺著,像睡著了一般指厌。 火紅的嫁衣襯著肌膚如雪刊愚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天踩验,我揣著相機(jī)與錄音鸥诽,去河邊找鬼商玫。 笑死,一個胖子當(dāng)著我的面吹牛牡借,可吹牛的內(nèi)容都是我干的拳昌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼钠龙,長吁一口氣:“原來是場噩夢啊……” “哼炬藤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起俊鱼,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤刻像,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后并闲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體细睡,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年帝火,在試婚紗的時候發(fā)現(xiàn)自己被綠了溜徙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡犀填,死狀恐怖蠢壹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情九巡,我是刑警寧澤图贸,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站冕广,受9級特大地震影響疏日,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜撒汉,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一沟优、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧睬辐,春花似錦挠阁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至丰刊,卻和暖如春坡慌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背藻三。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工洪橘, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棵帽。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓熄求,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逗概。 傳聞我的和親對象是個殘疾皇子弟晚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

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