🎨
booknote
  • Zpliu'Booknote
  • ggplot2
    • 不继承原有数据
    • Untitled Folder 1
      • 直方图绘制
    • 02基于Github笔记实现
    • 回归分析
    • 饼图
    • Theme函数
    • 直方图
    • 分面
    • pheatmap
    • 折线图
    • 桑基图
    • GO富集分析图
    • jupyter内使用R
    • 维恩图
    • 自定义图例
    • ggridges 山峦图
    • GO气泡图
    • 散点图
    • 从数据框中计算频率
    • 箱型图
  • 前端操作
    • 实例练习
      • 动态搜索网页
        • 后端
          • Node 服务框架
          • primer数据表的增删改查
          • 前端post请求
          • login 验证
          • Vue模板
            • Vue-router前端渲染
            • main.vue
          • 基于cookie登录验证
          • 使用mysql包进行数据库的交互
          • 数据库表
            • 学生信息表
            • 用户登录表
            • mysql 事务
            • 教师表
            • 引物表
          • mysql服务
          • html模板页面
            • 错误模板页
          • 08文件上传与下载
        • 解决webpack打包后文件过大问题
        • 前端
          • vue
            • 基于element-ui框架
            • 06 个人主页
            • 08上传组件el-upload
            • element-ui
            • Vue 构建前端框架
            • login登录界面
            • 07表格多选
            • show-data页面
          • vue-cookie
          • vue-router
            • 路由组件传参
        • Appach代理服务转发node
      • pie-progress
        • 01
      • 登录界面
      • Untitled
    • JavaScript
      • fasta文件校验
      • codewar中的练习题
      • 6kyu
      • chapter03
        • 数据类型
      • tweenjs
    • css
      • CSS布局
      • 02定位
    • 前端使用ajax进行异步请求
    • gitbook
    • html
      • 03表格
      • Vue星空
    • Log for study
  • 可变剪切
    • 第六次分析
      • 设计引物
      • 多倍化过程中的变化3
      • 不同棉种间AS的差异
      • At与Dt中不存在保守转录本的基因
      • AS调控基因表达
      • 多倍化过程中变化2
      • 可变剪切统计
      • 可变剪切的进化分析
      • 保守AS模式的鉴定
      • 提纲
      • 可变剪切的翻译分析
      • 多倍化过程中isoform的变化
      • 表观遗传在AS中的作用
      • 全长转录本数据的统计
      • 表观遗传在AS中的作用2
    • 03表观遗传与可变剪切
    • 数据处理流程
      • 计算同源基因间AS的保守程度
      • 重新开始鉴定AS.md
      • 统计IR保守性比例
      • 基因分类
      • 20200111可变剪切数目统计
      • 完全保守的基因对
      • 20200315
      • 20200214
      • 第三个结果
      • 20191230对AS类型进行定义
      • AS保守程度的统计
      • 20200219合并IR
      • 20200320
      • IR事件保守的长度
      • 分析同源基因中发生IR事件的频率
      • 保守的IR的长度统计
      • 筛选基因用于GO富集分析
      • 2020102把没有发生剪切事件的位置找出来
      • 对剪切事件进行分类
      • 06比较不同棉种中isform的差异
      • 甲基化数据处理
      • 寻找motif
      • 根据IR的保守程度对基因进行GO富集分析
      • 分析同源基因间可变剪切的差异
      • 基于前面已经分好的类进行统计
      • 寻找同源基因对应的位点
      • 对同源基因的剪切事件进行分类.md
      • 分析染色体上各种特征
      • HIN1下游调控基因的分析
      • intron 分布
      • 20200102GO富集分析
      • 01全长转录组数据处理
      • 甲基化重复间的处理
    • 文献理解
      • 10核小体定位决定外显子识别
      • 22
      • 09梨树中两个亚基因组经历unbiased 进化
      • 11RNA介导的局部染色质修饰对可变剪切的调控
      • 19讨论染色质开放程度与IR的关系
      • 03植物中的表观遗传
      • 06甲基化在拟南芥开花过程中的研究
      • 20可变剪切的进化
      • 14干旱积累对HIN1蛋白剪切效率的影响
      • 18内含子保留事件中不断变化的范式和调控方式
      • 04从RNA-seq研究可变剪切
      • 16多种RNA-seq策略揭示棉花中高精度的转录态势
      • 07ChIp-seq测序原理 chromatin immunoprecipitation
      • 05甲基化测序数据比对原理
      • 13使用iso-seq分析高粱转录本数据
      • 15POWERDRESS与HDA9相互作用促进去乙酰化
      • 12通过转录与染色质结构的耦合调控可变剪切
      • 英语句子
      • paper list
      • 01多组学数据揭示表观遗传
      • 02A global survey of alternative splicing in allopolyploid cotton: landscape, complexity and regulat
      • 17可变剪切与表观遗传导致白血病
      • 21smallRNA与DNA甲基化
    • 文章提纲
    • AS多倍化过程中的变化
    • 软件使用
      • 01三代测序Iso-seq
      • Bedtools
      • iso-seq测序2.0版本
      • 02Chip-seq操作流程
      • EMBOSS
      • 05鉴定duplicate gene
      • 07kobas本地进行注释
      • MEME本地化
      • DNA甲基化分析流程
      • stringtie
    • 第7个结果
    • 原始数据处理
      • 01三代测序数据原理
      • 02测序read数目统计
    • 第8个结果
    • 第五次分析
      • isoform水平分析
      • rmats2sashimiplot
      • 可变剪切的鉴定
      • 使用单个样本的数据进行AS分析
    • 表观遗传
    • 保守AS的鉴定
    • 第四次分析了
      • 甲基化计算
      • AS统计
      • 分析IR在各个基因组的保守性
    • 第三次对AS进行统计
      • 鉴定DRMs区域
      • 04
      • 重新下载原始数据进行比对
      • 02
      • 01
    • 第三个结果
    • 原始read的分类
    • 表观数据分析
    • 从RNA-seq研究可变剪切
  • 文献
    • 表观遗传
      • 植物中甲基化机制以及靶向操纵工具
    • 陈增建老师
      • 文章
    • 可变剪切
      • Post-transcriptional splicing of nascent RNA contributes to widespread intron retention in plants
      • Variant phasing and haplotypic expression from long-read sequencing in maize
      • 02
      • 01
      • 可变剪接的研究进展及展望
      • 06
      • Co-expression networks reveal the tissue-specific regulation of transcription and splicing
    • panGenome
      • 番茄中广泛的结构变异对基因表达和性状改良中的作用
    • TWAS
      • TWAS解读
    • 数量遗传older
      • Reinventing quantitative genetics for plant breeding: something old, something new, something borrow
    • Untitled 1
    • 多倍化
      • Measuring and interpreting transposable element expression
      • Homoeolog expression bias and expression level dominance (ELD) in four tissues of natural allotetrap
    • 转录调控
      • 指导植物RNA聚合酶II转录的‘GPS’
      • 02综述
    • 3D基因组
      • Methods for mapping 3D chromosome architecture
      • 由粘连蛋白介导的人类基因组中染色体loop图谱
      • 经典Hi-C文献
      • 小麦染色质被组装成基因组疆域和转录工厂
      • Lamina-associated domains: peripheral matters and internal affairs
      • Three-dimensional chromatin landscapes in T cell acute lymphoblastic leukemia
      • Disruption of chromatin folding domains by somatic genomic rearrangements in human cancer
      • Evolutionary dynamics of 3D genome architecture following polyploidization in cotton
      • On the existence and functionality of topologically associating domains
    • Untitled
    • GWAS
      • Population Genomic Analysis and De Novo Assembly Reveal the Origin of Weedy Rice as an Evolutionary
  • CRISP Case9
    • sgRNA设计
    • 01编辑效率检测
    • Hi-TOM
    • 02检查单株覆盖度
  • python
    • matplotlib
      • 图片的基本设置
      • 韦恩图
      • 折线图
      • 堆积直方图
      • 散点图
      • imshow绘制热图
    • 爬虫
      • 根据关键字获取对应的基因
      • TE
    • 多进程
    • 基于模块化编程
    • pybedtools
      • 01API
    • 高级特性
      • 列表操作
      • pickle
    • SOS
      • Script of scripts (SOS)
    • python 解析命令行参数
    • 简单实现python多进程
    • gffutils
      • gffutils
    • 多线程读取文件
    • rpy2
      • 在jupyter中调用R代码
    • pandas
      • 取数据
    • pysam
      • 01API接口
  • cottonWeb
    • 初始化项目
    • views
      • login
      • 404页面
      • register页面
    • 后端
      • Hi-C
      • 错误代码合集
      • SequenceServer搭建网页服务
      • 手把手教你搭建JBrowse-初始化应用
      • 优化JBrowse
    • Vue中使用Echarts
    • 2配置axios请求
    • 07搜索框实时推荐
    • 动画效果
    • layout布局
    • mysql
      • 基因操作
    • 路由配置
  • Vue
    • vue-route
      • 路由
    • Vue中发起ajax请求
    • 计算属性和侦听器
    • provide inject
    • 列表渲染
    • 自定义指令
    • 事件处理
    • Vue项目
      • 九宫格实现
      • 使用vue-resource进行ajax请求
      • 在项目中使用v-router
      • 新闻页面
      • 项目迁移
      • 使用Mint UI组件库
    • 案例操作
      • 02基于Github笔记实现
      • 实现购物车功能
      • Vue组建化
      • todomvc实现日程安排
    • 页面组件化
    • Vue 实例化操作
    • vue
    • 动画的渲染
    • 模板语法
    • class & style
    • 13 动画和过渡效果
    • 02guide
    • 深入了解组件化
    • 表单输入绑定
    • 条件渲染v-if
    • vue-chartjs
      • 起步
  • 并行计算
    • 实验室考试
    • 计算圆周率PI
    • 04.forthClass
    • 使用python3中的threading模块进行简单的并行计算
    • test
      • lastTest
      • 111
    • 第三节课作业
    • 05 test
    • 04test
    • 05homework
    • 04homework
    • OpenMP
    • 集群结构
    • CPU核、多线程、多进程
    • 05Class
    • 06class
    • 07class
    • 08class
  • WebPack
    • 打包css文件
    • 基于Webpack进行Vue开发
    • 处理url 图片
    • webpack 打包Vue
    • 基于webpack的路由操作
    • webpack
  • VueCLI
    • 03组件批量注册
    • 04拖拽插件
    • 05axios跨域问题
    • 07时间轴
    • Blast+ 网页实现
    • VueCLI 安装
    • axios请求
  • Script
    • 转录因子结合位点预测
    • BinomTest
  • mysql
    • 常见函数
      • 常见函数
      • 函数
    • 查询
      • 排序查询
      • 联合查询
      • 基本查询语句
    • 字段约束条件
    • SQLyog
    • 修改
      • 修改
    • powerdesigner数据库模型设计
    • 插入
      • 插入数据
    • 事务
      • 事务
    • 添加新用户
    • 视图
      • 视图
  • 文本编辑器
    • vscode 连接数据库
    • Vue模板补齐
    • visual Studio Code
  • source_code
    • Untitled
    • 并行计算
      • 04test
    • 公众号
      • RNA-seq
    • Untitled 1
  • GWAS
    • QQ-plot
  • RNA-seq
    • 01AnalysisFlow
    • 02脚本批量提交
    • 差异表达基因
    • 文献
      • 01SPL1赋予植物热忍受能力
    • 02 建库方式
  • Linux
    • LSF
    • 02诺和致源下载数据
    • 配置阿里yum源
    • linux三剑客
    • 云梯
    • 取文件相同列
    • root基本命令
    • 服务器网站数据搬迁
    • shell脚本激活Conda环境
    • 使用vscode与服务端R交互
    • 如何使用Conda
    • vim常见使用方法
    • oh-my-zsh
    • bash中的字典与数组
  • SNP分子标记
    • vcf文件处理
  • 生信软件
    • samtools
    • bedtools
    • annovar注释SNP
    • HiC-Pro安装
    • Untitled
    • bwa使用
  • Hi-C
    • 软件
      • HiCPlotter安装
      • pre程序
    • 20200102计算共线性区间保守的boundary
    • 20200108保守的TAD
    • PanGenome
      • PanGenome与各个元件进行注释
      • Pan-Genome数据比对
      • 鉴定两个基因组之间重排
  • node
    • mysql
      • 使用Promise封装
      • 基本的SQL语句
      • mysql的增删改查
      • 在node中使用mysql
    • session与cookie保留用户登录状态
    • MongoDB
      • MongoDB中的SQL语句
      • MongoDB 数据库
      • mongoose中一些常用的查询语句
      • :pig_nose: node中使用MongoDB的实例
      • MongoDB关联查询
      • 设计数据模型
    • 保持数据库处于连接状态
    • npm
    • node中路由设计
    • express中中间件的概念
    • art-template模块的用法
    • curd增删改查的使用
    • Promise 异步编程
    • 关于express框架的学习
    • express-session
    • 配置log4js
  • Cell-Ranger
    • count输出文件夹
      • ANALYSIS
      • feature_bc_matrix文件夹
      • Analysis 结果
      • BARcoded BAM
    • CellRanger aggr
    • 10X genomics测序中用到的术语
    • single sample Analysis
    • Cell Ranger count使用手册
  • HOX3
    • 03共表达分析
    • 01RNA-seq
    • 02基因差异表达分析
  • vue-admin
    • 项目目录结构
  • R
    • dplyr
      • dpylr
      • 过滤数据框
  • 系统遗传学
    • 翻译综述
    • 从脊椎动物的视角解析衰老的遗传机制
    • 01
  • eQTL
    • PEER
      • PEER方法
      • 软件使用
    • 群体结构
      • bcftools
  • sQTL
    • HISAT2比对
    • 02数据处理
  • 资源
    • hexo服务搭建
    • 转录因子数据库
    • 前端资源
    • 01 优雅的PPT设计
    • 文章书写规范
  • SVG
    • 01起步
  • 王悦瑾
    • Bash练习题
    • Bash脚本
    • 9_28起步
  • ES6
    • 模板字符串
    • promise源码解析
    • 01
  • scRNAseq
    • 干细胞不对称分裂
      • Root stem cell niche organizer specification by molecular convergence of PLETHORA and SCARECROW tran
    • 茉莉酸代谢
    • 老年痴呆
  • 多倍体进化
    • 棉花进化
    • 棉属A基因组的起源与进化
  • Vuex
    • 解构前端登录请求
    • VueX
  • ElementUI
    • 源码学习
      • 01drawer
    • Element UI:rocket:
  • reference周记
    • 第一期
    • test
  • 苏柃
    • Bash练习
Powered by GitBook
On this page
  • 1.对原始数据进行过滤
  • 2.使用Bismark进行甲基化的检测
  • 2.1 准备基因组索引文件
  • 2.2 进行比对
  • 2.3 过滤比对得到的bam文件
  • 2.4 提取对应的甲基化位点
  • 2.5基于统计上的显著性提取对应的位点
  • CHH文件太大了分开跑
  • 合并多个文件的内容
  • 统计没有甲基化的位点与发生了甲基化的位点
  • 在python中进行多重测验
  • 参考

Was this helpful?

  1. 可变剪切
  2. 软件使用

DNA甲基化分析流程

PreviousMEME本地化Nextstringtie

Last updated 4 years ago

Was this helpful?

1.对原始数据进行过滤

java -jar trimmomatic-0.32.jar PE -threads 18 -phred33 R1.fastq R2.fastq -baseout 输出文件目录/文件前缀 ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 LEADING:10 TRAILING:10 SLIDINGWINDOW:4:20 MINLEN:50 >log.${ID}.trim 2>err.${ID}.trim

2.使用Bismark进行甲基化的检测

参考文档

2.1 准备基因组索引文件

  • 程序会对基因组序列进行C->T and G->A 的转化

  • 之后使用hisat2-build进行索引的构建

#指定基因组文件所在文件夹
./bismark_genome_preparation --hisat2 travis_files/
#之后会生成两个转化后的基因组文件,及对应的索引
├── Bisulfite_Genome
│   ├── CT_conversion
│   │   ├── BS_CT.1.ht2
│   │   ├── BS_CT.2.ht2
│   │   ├── BS_CT.3.ht2
│   │   ├── BS_CT.4.ht2
│   │   ├── BS_CT.5.ht2
│   │   ├── BS_CT.6.ht2
│   │   ├── BS_CT.7.ht2
│   │   ├── BS_CT.8.ht2
│   │   └── genome_mfa.CT_conversion.fa
│   └── GA_conversion
│       ├── BS_GA.1.ht2
│       ├── BS_GA.2.ht2
│       ├── BS_GA.3.ht2
│       ├── BS_GA.4.ht2
│       ├── BS_GA.5.ht2
│       ├── BS_GA.6.ht2
│       ├── BS_GA.7.ht2
│       ├── BS_GA.8.ht2
│       └── genome_mfa.GA_conversion.fa

2.2 进行比对

  • geneme_folder 指定基因组文件夹

  • --hisat2 使用hisat2进行比对

  • non_direction 跟建库方式有关 默认是direction

  • -L 设置种子序列长度

  • -N 设置允许错配数 只在bowtie2模式下有用后面要考虑 --score-min L,0,-0.2

  • --parallel 指定核心数

  • -p 指定线程数

  • --known-splicesite-infile 提供剪切位点文件,只在hisat2比对模式下可用

  • -o 输出文件前缀

bismark  --genome_folder travis_files  --hisat2    --non_directional -1 travis_files/test_R1.fastq.gz  -2 travis_files/test_R2.fastq.gz  -L  30 -N 1 -o  test

产生可变剪切位点文件

## 使用cufflinks内的脚本将gff3转化为gtf
gff2gtf_cufflinks -T  Graimondii_221_v2.1.gene.gff3 -o  Graimondii_221_v2.1.gene.gtf
## 使用hisat2中脚本提取可变剪切
extract_splice_sites.py Graimondii_221_v2.1.gene.gtf   >Graimondii_221_v2.1.gene_splice.txt

进行hisat2模式的比对,lsf脚本

softwarwPath=~/software/Bismark-0.22.1/ 
genomePath=基因组文件夹
splicePath=可变剪切文件
R1Path=./../D4.R1.trimed.fastq.gz 
R2Path=./../D4.R2.trimed.fastq.gz

${softwarwPath}/bismark_genome_preparation  --hisat2 ${genomePath} >log.bismark_genome_preparation 2>err.bismark_genome_preparation

${softwarwPath}/bismark --genome_folder ${genomePath} --hisat2    --non_directional --known-splicesite-infile ${splicePath} -1 ${R1Path} -2 ${R2Path} -L 30 -N 1 -o ./ -p 5

2.3 过滤比对得到的bam文件

当使用全基因组进行亚硫酸氢盐处理得到的文库时,建议进行这一步操作,去除 Bismark 比对的重复reads, 因为PCR跑的循环数多了的话,会导致另外一条链上比对到的read数增加。

  • excessive PCR amplification

  • Sequences which align to the same genomic position but on different strands are scored individually.

# 当对双端测序数据进行去重时,bam文件需要安装read名字排好序
# bismark的输出结果是排好序的
deduplicate_bismark  -p -o 输出文件前缀 --output_dir 输出目录 --bam  比对后的BAM输出文件

### 批量脚本
softwarwPath=~/software/Bismark-0.22.1/ 
fileName=D1.R1

${softwarwPath}/deduplicate_bismark  -p -o  ${fileName} --output_dir ./ --bam ${fileName}.trimed_bismark_hisat2_pe.bam
  • -p 指定为双端测序

  • -o 输出文件前缀

  • --output_dir 输出文件目录

  • --bam 最终去重后为BAM格式

2.4 提取对应的甲基化位点

将比对的bam文件经过过滤之后,使用Bismark methylation extractor 提取程序,在默认参数下使用

bismark_methylation_extractor -p  --parallel 2  --bedGraph --gzip  -o ./   ./${fileName}.deduplicated.bam
  • -p 指定双端测序数据

  • --parallel 指定核数

  • --bedGraph 输出bed文件

  • --gzip 输出文件使用gzip压缩

因为甲基化的数据量非常大,程序根据甲基化的类型结合比对时,链的关系可以得到12个文件

OT      original top strand
CTOT    complementary to original top strand

OB      original bottom strand
CTOB    complementary to original bottom strand
# 3种甲基化 CpG CHG CHH *4 =12个文件

当然对链特异性甲基化数据不感兴趣时,也可以使用--comprehensive参数,只生成3中甲基化的报告文件,文件的数据是由四种链进行合成的

2.5基于统计上的显著性提取对应的位点

在进行建库的时候,使用了λ噬菌体的基因组来获得Bisufite处理的转化效率,大概是99.4%,接下来使用二项分布对每个位点甲基化的显著性进行检验

  • 每个甲基化的C被转化的概率为99.4%;不被转化的概率为0.6%,所以总体服从(n,0.006)的二项分布

  • 进行假设检验,使用p-value=0.05作为阈值,当某个甲基化位点达到阈值,才被认为是真实的

  • 同时至少有3条read支持这个甲基化位点

自己写了一个python脚本进行统计,每个甲基化位点的甲基化概率

import sys
import gzip

'''
python $0 bismark输出文件 最终统计文件
最终文件名字以gz结尾
'''
with gzip.open(sys.argv[1], 'r') as inputfile:
    Alllines = inputfile.readlines()
Allindex = {}
for i in range(1, len(Alllines)):
    Alllines[i] = Alllines[i].decode()  # 对byte字符进行解码
    index = Alllines[i].strip("\n").split(
        "\t")[2]+"~"+Alllines[i].strip("\n").split("\t")[3]

    Allindex[index] = [0, 0]


for i in range(1, len(Alllines)):
    tag = Alllines[i].strip("\n").split("\t")[1]
    index = Alllines[i].strip("\n").split(
        "\t")[2]+"~"+Alllines[i].strip("\n").split("\t")[3]
    if(tag == '+'):
        Allindex[index][0] += 1
    else:
        Allindex[index][1] += 1

with gzip.open(sys.argv[2], 'w') as outputfile:
    for key in Allindex:
        outstr = key.split("~")[0]+"\t"+key.split("~")[
            1]+"\t"+str(Allindex[key][0])+"\t"+str(Allindex[key][1])+"\n"
        outputfile.write(str.encode(outstr))

输出结果

  • 前两列,甲基化的位置

  • 支持该位点的read数目

  • 不支持该位点的read数目

Chr05   68302093        3       0
Chr05   68302156        2       0
Chr05   68302192        3       0
Chr05   68302203        3       0
Chr05   68302237        1       1
Chr05   68302282        3       0

进行二项分布检验

运行脚本Rscript bunomTest.R test.txt

  • 对每个位点,假定的甲基化位点reads超过3条的进行二项分布检验

    没有超过3个read的位点会被抛弃掉,在之后的分析中会带来偏差

  • 在每个没有被甲基化位点仍旧保持C的概率为0.006,H0假设,该位点是由于试剂的原因导致原本没有甲基化的C仍旧保持为C,因此当p-value小于阀值时,拒绝原假设,认为这个C位点并不是由于试剂的原因,而是真实存在的甲基化位点

# bunomTest.R脚本如下
args <- commandArgs(TRUE)
indata <- args[1]
mydata <- read.table(indata,header=F)
myindex <- NULL ;
p.values <- NULL ;
for (i in 1:dim(mydata)[1]){
   if(mydata[i,3]>=3){
    count <- mydata[i,3]+mydata[i,4] 
      p.value <- dbinom(mydata[i,3],count,0.006)
     if (p.value <= 1e-5){
      myindex <- c(myindex, i) ;
      p.values <- c(p.values, p.value) ;
   }
}
}
outdata <- cbind(mydata[myindex,],as.numeric(p.values))
outfileName <- paste(strsplit(indata,'\\.')[[1]][1],"binomTest_result.txt",sep="_")
write.table(outdata,file=outfileName,quote=FALSE,sep="\t",col.name=FALSE,row.name=FALSE)

得到的结果文件

Chr12    13159675    4    0    1.296e-09
Chr12    13159661    5    0    7.77599999999999e-12
Chr12    13159642    9    0    1.0077696e-20
Chr12    13159618    12    0    2.17678233599999e-27

进行多重比较检验,使用FDR方法

FDR:错误拒接率,意思就是错误的拒绝了H0假设,是假阳性,通过FDR校验保证数据总体假阳性不超过阈值,并且进行多重校验的数据集是需要满足二项分布的数据集的p-value和read数目超过3的。

#原始数据格式,V5为p-value值
           V1       V2 V3 V4          V5           
1       Chr13 13682239  4  0 1.29600e-09 
2       Chr13 13682246  3  0 2.16000e-07 
3       Chr13 13682254  3  1 8.58816e-07 l
4 tig00019827    35589  3  1 8.58816e-07 
5 tig00019827    35602  3  1 8.58816e-07 
6 tig00019827    35609  3  0 2.16000e-07 
testdata=read.table("./test.txt")
testdata$V6= p.adjust(testdata$V5,"fdr",dim(testdata)[1])
write.table(testdata[testdata$V6<=0.05,],"111",sep="\t",col.names=F,row.names=F,quote=F)

fdr_correction.R

在提交任务的时候,文件路径不能有.不然有错误

args <- commandArgs(TRUE)
indata <- args[1]
mydata <- read.table(indata,header=F)
mydata$V6= p.adjust(mydata$V5,"fdr",dim(mydata)[1])
outfileName <- paste(strsplit(indata,'\\.')[[1]][1],"fdr_result.txt",sep="_")
write.table(mydata[mydata$V6<=0.05,],file=outfileName,quote=FALSE,sep="\t",col.name=FALSE,row.name=FALSE)

CHH文件太大了分开跑

split -l 行数 原始文件  分割文件前缀

对每个文件分别提取支持的read与不支持的read

合并多个文件的内容

直接使用awk将多个文件的内容进行合并

merge.sh

#!/bin/bash 

cat ./split*|awk -F "\t" '{a[$1"~"$2][1]+=$3;a[$1"~"$2][2]+=$4}END{for(i in a){split(i,b,"~");print b[1]"\t"b[2]"\t"a[i][1]"\t"a[i][2]}}' >merge_end
bsub -q high -M 200G -e merge.err -R span[hosts=1] -n 1 -J merge "bash merge.sh"

统计没有甲基化的位点与发生了甲基化的位点

  • 由于测序深度的原因,在计算DNA甲基化的时候,有点胞嘧啶可能没有被测到可能会导致结果偏低,因此仅仅考虑被测到的胞嘧啶。

  • 区域内所有甲基化C位点总的reads数/区域内总的覆盖度

    FDR值达到显著性的支持read数/FDR达到显著性支持read数+FDR达到显著性不支持数+FDR没有达到显著性值的read数

    检测到的坐标 支持的read数,不支持的read数,FRD值
    Ghir_D02    4969712    4969712    0    12    0.994
    Ghir_A13    66114242    66114242    12    0    1.11882196473219e-26
    Ghir_D07    17177217    17177217    16    0    3.31847691703274e-35

在python中进行多重测验

import panda as pd 
import numpy as np
import statsmodels.stats.multitest as multi
##读取原始数据
data=pd.read_csv("./CpG_read_count_bionormal.txt",sep="\t",header=None,low_memory=False)
##删除一些SRR开头的行
dropRow=data[data[0].str.startswith('SRR')]
data.drop(dropRow.index,inplace=True)
##对p-value进行多重校验,获得数组
a=multipletests(np.array(data[4]))
a[1]返回FDR的值
##在原有数据框上添加FDR列
data.loc[:,'fdr']=multi.multipletests(np.array(data[4]))[1]
##查看指定位置的值
data[data[1]==67304209]
##增加同一个坐标作为bed文件
data.loc[:,5]=data[1]
##调整输出顺序
data=data[[0,1,5,2,3,4,'fdr']]
##输出到新的文件

参考

前面的R脚本太慢了,数据量大的话要跑很久很久,使用我另外写的一个python多进程脚本

FDR矫正

https://github.com/FelixKrueger/Bismark/tree/master/Docs
https://zpliu.gitbook.io/booknote/script/binomtest
https://github.com/FelixKrueger/Bismark/tree/master/Docs
https://blog.csdn.net/zhu_si_tao/article/details/71077703