miRNA-seq分析流程

参考0
参考1
miRNA预测工具miRDeep-P2简明教程
植物miRNA靶基因预测
下机数据整理汇总
find -name ./msj *.clean.fastq.gz |xargs -i cp {} ./msj/clean/
查找所有的质控过的数据,移动到clean文件夹。
我的是水稻的miRNA数据。所以先下载水稻的各种文件。
下载地址
包括基因组序列、基因组注释、基因组蛋白质注释、基因组cds序列。
下载miRNA数据
下载miRNA注释文件

1. 测序下机数据质控、去接头、检测分布

1.1 质控fastqc
fastqc -i ./clean/*.fastq.gz -t 4 #4个进程同时运行
1.2 去接头
miRNA的一般用cutadapt,同时去掉reads中的adapter,低质量的reads以及过长过短的reads。
cutadapt下载安装配置环境变量,参考官网
环境变量在~/.bashsrc_profile
去掉接头。

cutadapt -a AGATCGGAAGAG --quality-base 33 -m 10 -q 20 --discard-untrimmed -o $Co1.fa >cutadapt.info

具体的接头文件,在fastqc的输出文件中,找adapter可以看到。
1.3 检测片段分布
新建length-distribute.py
python 代码如下:

#!/usr/bin/env/ python3
#Author:Frank
import sys
miRNA_len={}
#此处的60长度根据你的每行数据的最长长度设置,过小可能会报错。
for i in range(0,60):
    miRNA_len[i]=0
for i in open(sys.argv[1]):
    if i.startswith('@') or i.startswith('+'):
        continue
    length=len(i)-1
    miRNA_len[length] += 1
for i in miRNA_len:
    print(str(i)+"\t"+str(miRNA_len[i]/2))

使用方法:
示例:python3 length-distribute.py ./merge/S168-Na-1_L1.fastq >S168-1.stat
实际使用脚本循环所有数据:


2. 拼接

miRNA拼接最好使用bowtie,而不是bowtie2.详情地址
2.1 bowtie的使用
-建立索引

bowtie-build  -f genome.fasta genome.fa &
bowtie-build  -f miRNA.fa miRNA.fa &
bowtie -q -v 2 -l 10 -k 15 genome.fa C01.fa -S c01.sam 2>mapping.info

此处比对我实际使用的脚本循环,因为样本量太多了。

name_array=(Co1 S168-Na STTM168 Co1-Na) 
for ((n=0;n<4;n++));
do 
    for ((i=1;i<4;i++));
    do
         read="./merge/"${name_array[$n]}"-"$i"_L1.fastq"
         bowtie -q -v 2 -l 10 -k 15 genome.fa $read -S ${name_array[$n]}"-"$i".sam" 2>>mapping.info
    done
done

在输出文件mapping.info中可以找到mapping到的比率。
整体在90%以上,数据比较好。

对于miRNA比对一般有2种方式,一种是比对到基因组上,另一种是比对到对应物种的miRNA数据库中。此处的genome.fa是基因组文件。

-mi.fa 是把miRNA.fa的U碱基转换成T碱基。
-miRNA.fa 是原始的从mirbase下载的茎环结构的数据,自己命名。
bowtie分别构建上述三个基因组的索引文件。
参考曾建明多年前的 提问,miRNA比对到mirBase的miRNA数据库时,是需要把U转换为T的。
但是事实上,转变碱基之后的比对效果仍然很低(0.1-0.2%)。不知道原因。所以我暂时使用的是和基因组的比对结果。

3. 安装使用HTSeq(非root用户)(据说可以使用featurecount替代HTSeq)

作为非root用户,安装许多软件非常头疼。总是没有权限。
先在GitHub下载htseq。
下载地址

unzip  htseq-master
python setup.py build install --user

安装完成,添加环境变量。

vim ~/.bash_profile
export PATH=$HOME/chaim/.local/bin:$PATH

重启终端,测试htseq。
htseq-count -h
会出现相应的帮助信息。
HTSeq-count使用API

htseq统计counts的脚本

#!/bin/bash
name_array=(Co1 S168-Na STTM168 Co1-Na)
for ((n=0;n<4;n++));
do
        for ((num=1;num<4;num++));
        do
                htseq-count -s no -t miRNA -i ID -o ${name_array[$n]}"-"$num".hc.sam" ${name_array[$n]}"-"$num".sam" miRNA.gff3 | tee ${name_array[$n]}"-"$num".count"
                ls ${name_array[$n]}"-"$num".count" >> count.list
                #echo ${name_array[$n]}"-"$num"count"
        done
done

吐槽一下,水稻基因组本身是有2种命名格式的,基因注释是有Chr1和Chr01的格式的。所以一定要看清楚自己的注释文件和Sam文件的格式是否一致,否则会出现counts=0.

4. 表达量差异分析(R语言中操作)

无生物学重复使用DEGseq,有生物学重复使用DESeq2
无生物学重复DEGseq(以下代码摘自引用1,未经过实践。)

library("DEGseq")
#BT_0_1
geneExpMatrix1<- readGeneExp("ht.genotype_data1.txt", geneCol=1, valCol=3)
geneExpMatrix2<- readGeneExp("ht.genotype_data2.txt", geneCol=1, valCol=2)
write.table(geneExpMatrix1[30:31,],row.names=FALSE)
write.table(geneExpMatrix2[30:31,],row.names=FALSE)
pdf(file="data1_2.pdf")
layout(matrix(c(1,2,3,4,5,6),3, 2, byrow=TRUE))
par(mar=c(2,2, 2, 2))
DEGexp(geneExpMatrix1=geneExpMatrix1,geneCol1=1, expCol1=2, groupLabel1="data1",geneExpMatrix2=geneExpMatrix2,geneCol2=1, expCol2=2,groupLabel2="data2",method="MARS",outputDir="05DEmiRNA/DEGSeq")
dev.off()

有生物学重复DESeq2 (RNA-seq也可以使用它计算表达量)
使用DESeq2之前先生成矩阵,使用prepDE.py
python2.7 /disks/backup/chaim/soft/prepDE.py -i gtf2
gtf2文件内容

library("DESeq")data=read.table("ht.genotype_data.txt",header=TRUE,row.names=1)pd=data.frame(row.names=colnames(data),condition=c("data3","data3","data4","data4"),libType=c("single-end","single-end","single-end","single-end"))ps=pd$libType=="single-end"ct=data[,ps]condition=pd$condition[ps]cds=newCountDataSet(ct,condition)cds= estimateSizeFactors(cds)sizeFactors(cds)cds= estimateDispersions(cds)res=nbinomTest(cds,"data3","data4")write.table(res,file="data3_data4.xls")quit()

5. miRNA样本配对mRNA表达量获取

参考
差异表达分析
生信菜鸟团
weibo

6.miRNA-mRNA表达相关下游分析

image.png

>当前进展,该设计脚本跑python的数据分析,等待htseq的运行结果。因忙于毕业考博事宜,此项目停更。很抱歉!<

你可能感兴趣的:(miRNA-seq分析流程)