homer进行motif分析 ChIP-seq
【怪毛匠子-整理】
5 2月 2013 | 程序员
HOMER是一个使用perl和C写成的motif分析工具。之前在分析clip-seq分析时,按照文献中材料和方法所写的流程进行分析,却无法得到与文献一致的结果。想来多半是文章发表时,并没有把所有的细节写清楚,导致我在重复时参数选择方面并没有与原作者保持一致。另一个原因是基因组几经修改,原本的hg17的数据无法下载到,只能下载到liftover到hg18的数据。为此,进行了一下google research,发现这个叫做homer的工具,很不错。HOMER主要用于分析基于NGS或者micorarrays的ChIP-Seq,ChIP-Chip数据。也可以分析DNase-Seq,GRO-Seq之类的数据。
HOMER并不能用于查找差异表达的基因,基因表达图谱分析,或者在已知的motif数据库当中去搜索motif。HOMER还有一个缺点,那就是没有用户界面,只能通过命令行形式工作。
HOMER的在分析motif时需要两组数据,一个是感兴趣的数据,另一个是背景数据。如果没有背景数据,HOMER会首先生成随机数据做为背景数据用于motif分析。在生成背景数据时,HOMER会考虑几个方面,一个是要避免CpG岛,一个是可以首先考虑目标数据的上下游的序列。
一但目标数据和背景数据确定了之后,HOMER就开始使用使用马尔可夫3级模型生成确定长度的motif,使用cummulative hypergeometric distribution来分析哪个motif是相对于背景数据而言在目标数据中富集了。当富集的简单motif确定之后,再基于目标数据进行微调以得到精确的motif。
之后的工作就是在已知的motif中去查找相类的motif。这里的已知motif不是来自于任何数据库,而是由作者从发表的ChIP-Seq实验中收集的。
HOMER比较适合分析长度8以上的motif。HOMER还可以进行有倾向性的motif搜索,这需要使用到参数opt 。比如:
findMotifsGenome.pl peaks.txt hg18r OutputDirectory -opt motif1.motif -len 30
对于比较长的motif,比如说长度20的motif,如果mismatch还是使用默认的话不一定会合适,这时可以使用-mis参数来设置可以mismatch多少个碱基,比如-mis 4等等。
HOMER的安装可以说有一点难度,但也不是特别难。首先要下载安装Ghostscript,seqlogo(2.8.1以上版本其实是可以工作的很好的,但安装文件说不行。)以及blat。安装好这些工具,然后把它们的工作目录都加入到PATH中去。比如使用PATH=$PATH:/path/to/blat:/path/to/seqlogo等等。
你的系统需要事先安装好GNU C++ compiler, perl, make, zip/unzip以及wget。
然后下载configureHomer.pl到你希望的安装目录,使用
perl configureHomer.pl |
来下载所需要的文件,以及自动安装好HOMER。
安装好之后,可以使用
perl ./configureHomer.pl -list |
来查看可能安装的数据,比如说我们接下来需要使用到的hg18基因组。
perl ./configureHomer.pl -install hg18 |
下面就是试用HOMER。我们先去UCSC下载所需要的fox2.clip数据。参数如下图所示
下载到数据后,我们运行命令
findMotifsGenome.pl fox2.clip.bed hg18 fox2.clip.rna -len 6 -rna > fox2.clip.rna.log 2>&1 & |
。然后打开fox2.clip.rna.log文件来查看程序的运行进展。运行结束之后打开fox2.clip.rna目录中的homerResults.html文件,可以看到下面类似的结果:
如果我们看到排在第一的是UGCAUG,那么就说明安装正常了。接下来就可以使用自己的数据来运行HOMER了。
homer进行motif分析 ChIP-seq的更多相关文章
- TCP ------ 抓包分析(seq ack)
总结: 1.ACK包可以和其他包合在一起,比如ACK包可以携带数据 2.可以接收多个数据包后,一次性给一个应答,不用每个数据包一一对应给应答 3.在通信过程中,通过接收到的包的ack值可以判断是否是上 ...
- HOMER | MEME | 转录因子的靶基因预测
Finding Enriched Motifs in Genomic Regions (findMotifsGenome.pl) 在指定区域做motif enrichment,大大降低了假阳性. ME ...
- ChIP-seq 学习内容
chip-seq 流程图 书籍资料 工具 UCSU 安装 使用 原理 手册 Swiss在线分析工具 短序列比对工具 BWA 流程 格式处理 序列比对 peak-calling motif 可视化 输出 ...
- 表观 | Enhancer | ChIP-seq | 转录因子 | 数据库专题
需要长期更新! 参考:生信修炼手册 enhancer的基本概念: 长度几十到几千bp,作用是提高靶基因活性,属于顺式作用原件,DNA作用到DNA,转录因子就是反式,是结合到DNA的蛋白. 1981年, ...
- ChIP-seq技术介绍|易基因
大家好,这里是专注表观组学十余年,多组学科研服务领跑者的易基因. 染色质免疫沉淀后测序(ChIP seq)是一种针对DNA结合蛋白.组蛋白修饰或核小体的全基因组分析技术.由于二代测序技术的巨大进步,C ...
- 计算机网络(11)-----TCP连接的建立和释放
TCP连接的建立和释放 概述 TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程,运输连接有三个阶段:连接建立,数据传送和连接释放. TCP连接的建立 如图所示,假定A主机是客户端程序, ...
- 测序深度和覆盖度(Sequencing depth and coverage)
总是跑数据,却对数据一无所知,这说不过去吧. 看几篇文章吧 Sequencing depth and coverage: key considerations in genomic analyses( ...
- iOS,Android网络抓包教程之tcpdump
现在的移动端应用几乎都会通过网络请求来和服务器交互,通过抓包来诊断和网络相关的bug是程序员的重要技能之一.抓包的手段有很多:针对http和https可以使用Charles设置代理来做,对于更广泛的协 ...
- 如何在 Android 手机上实现抓包?
如何在 Android 手机上实现抓包? http://www.zhihu.com/question/20467503 我想知道某个应用究竟在数据提交到哪里,提交了什么.网上的教程太复杂,不想麻烦.有 ...
随机推荐
- Hadoop 2.7.4 HDFS+YRAN HA删除datanode和nodemanager
当前集群 主机名称 IP地址 角色 统一安装目录 统一安装用户 sht-sgmhadoopnn-01 172.16.101.55 namenode,resourcemanager /usr/local ...
- easyui tagbox 自动触发回车事件
新版本的 easyui 加入了 tagbox 控件,允许用户通过回车分隔的方式输入多项数据.但这个控件有一些不便,就是每输入完一项必须按回车键确认,用户很容易在输入完最后一项后忘记按回车就直接提交表单 ...
- ng-packagr 打包报错 Public property X of exported class has or is using name 'Observable' from external module “/rxjs/internal/Observable” but cannot be named
old import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; @Injectable( ...
- MySQL union all排序问题
mysql中多个查询结果排序后union之后是混乱的,可以在各个查询结果最后加limit 999999999再union,参考https://blog.csdn.net/chenyao1994/art ...
- 将一个js项目改造成vue项目
本地环境:node版本:8.11.4 vue版本:3.4.1; 开发工具vscode 1.创建一个空的vue项目(vue create bigdata_reprot_web) 2.找到项目的空白页,改 ...
- test--1
void(document.body.innerHTML.replace(/"return DeletePost\((\d+),([^"]+)\)"/g, functio ...
- numpy通用函数
numpy的通用函数可以对数组进行向量化操作,可以提高数组元素的重复计算的效率. 一.numpy的算数运算符都是对python内置符的封装 算数运算符 >>> import nump ...
- shutil
import shutil#功能是将db文件中的内容拷贝到haha这个文件中去,但是haha原有的内容会被清空#shutil.copyfileobj(open('db','r',encoding='u ...
- js的关于for的语句
JavaScript for...in 语句 for...in 语句用于对数组或者对象的属性进行循环操作. for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作. ...
- 微信POST请求接收不到数据问题
用微信的wx.request发送POST请求,发现返回结果总是“请填写正确的用户名及密码”.后台查看一下,发现没有获取到值.于是就去网上查了一下. wx.request post 的 content- ...