BigWig是一个能用于加载到基因组浏览器上展示的格式。它的格式比较复杂,不适合直接阅读,通常由BedGraph文件转换而来。

在R语言中可以通过rtracklayerexport.bw输入和输出BigWig文件。

默认情况下,我们导入的数据集是GRanges格式

test_path <- system.file("tests", package = "rtracklayer")
test_bw <- file.path(test_path, "test.bw")
gr <- import(test_bw)
gr

输出信息如下

gr
GRanges object with 9 ranges and 1 metadata column:seqnames    ranges strand |     score<Rle> <IRanges>  <Rle> | <numeric>[1]     chr2     1-300      * |        -1[2]     chr2   301-600      * |     -0.75[3]     chr2   601-900      * |      -0.5[4]     chr2  901-1200      * |     -0.25[5]     chr2 1201-1500      * |         0[6]    chr19 1501-1800      * |      0.25[7]    chr19 1801-2100      * |       0.5[8]    chr19 2101-2400      * |      0.75[9]    chr19 2401-2700      * |         1-------seqinfo: 2 sequences from an unspecified genome

我们可以通过设定import里的as参数,使其读取为RleList

rle <- import(test_bw, as = "RleList")
rle

输出信息如下

RleList of length 2
$chr2
numeric-Rle of length 243199373 with 5 runsLengths:       300       300       300       300 243198173Values :        -1     -0.75      -0.5     -0.25         0$chr19
numeric-Rle of length 59128983 with 6 runsLengths:     1500      300      300      300      300 59126283Values :        0     0.25      0.5     0.75        1        0

如果要输出BigWig文件,也只要保证提供的对象是GRanges或RleList, 只不过要保证一定要有score列表示信号强度。

export.bw(rle, "test.bw")

假如要用R语言输出下面这个GRanges对象为BigWig

gr <- GRanges(seqnames=Rle(c("chr1", "chr2", "chr1", "chr3"), c(1, 3, 2, 4)),ranges=IRanges(1:10, end=10),strand=Rle(strand(c("-", "+", "*", "+", "-")), c(1, 2, 2, 3, 2)),seqlengths=c(chr1=11, chr2=12, chr3=13))

那么思路就是

  1. 获取染色体的长度
  2. 将染色体按照一定宽度分窗, 可用函数为tileslidingWindows
  3. 统计每个窗口的read数, 需要用到函数coverage, ViewsViewSums
  4. 输出BigWig

代码实现:

# 获取染色体长度
chromSizes <- GRanges(c("chr1","chr2","chr3"), IRanges(1,c(11,12,13)))
# 按照宽度2进行分窗
windows <- tile(chromSizes, width = 2)
# 统计每个窗口的read数
cvg <- coverage(gr)
cov_by_wnd <- Views(cvg, windows)
sum_by_wnd <- viewSums(cov_by_wnd)
for(i in seq_along(windows)){mcols(windows[[i]])['score'] <- sum_by_wnd[[i]]
}
# 输出
seqlengths(windows) <- c(11,12,13)
export.bw(unlist(windows), "tmp.bw")

用rtracklayer读取和输出BigWig相关推荐

  1. php csv文件的读取,写入,输出下载操作详解

    2019独角兽企业重金招聘Python工程师标准>>> php对csv文件的读取,写入,输出下载操作. 代码: <?php $file = fopen('text.csv',' ...

  2. python 多数据输出到txt_详解python读取和输出到txt

    读取txt的数据和把数据保存到txt中是经常要用到的,下面我就总结一下. 读txt文件 python常用的读取文件函数有三种read().readline().readlines() 以读取上述txt ...

  3. java在文本区输出方法_Java文件的几种读取、输出方式

    1.字节流----对文件读取(速度慢) /** * 字节流---文件的读取,输出(缺点:速度慢) * * @throws Exception */ @Test public void testIO1( ...

  4. MFC匿名管道原理详解、函数总结、调用实例(用MFC的匿名管道读取CMD输出内容)(C++语言)

    本博客主要总结MFC中匿名管道的原理和具体调用实例,以及调用匿名管道三个核心函数各个参数用法详解,具体的如下所述. 博主在做项目时,遇到一个问题.用程序调用一个进程,然后读取进程输出信息.但是,博主用 ...

  5. Java POI SXSSFWorkbook 读取模板,输出

    Java POI 用 SXSSFWorkbook 读取模板,输出 公司的项目,用户投诉,说只要点击模板下载功能,就会导致整个服务全部停掉. 之前这个功能由于数据量并没有那么多,所以一直都没有发生过这种 ...

  6. php 读取文件自身内容,与读取文件输出内容

    一,读取文件 先解释一下,什么是读取文件本身,什么叫读取文件输入内容.举个例子test.php里面的内容<?php echo "test"; ?> 1,读取文件本身就是 ...

  7. RDKit|一站式搞定分子读取、输出、可视化

    文章目录 一.简介 二.读取分子 2.1.读SMILES/SMARTS 2.1.1.直接读字符串 2.1.2.文件批量读取 2.1.3.文本批量读取 2.1.4.DataFrame批量读取 2.2.读 ...

  8. matlab读取类别数据,Matlab-含有不同数据类型的csv文件的读取和输出

    今天就来谈谈csv文件的读取和输出,此篇博文更偏重于自己学习过程的一个记录.平时习惯将数据输出为xlsx文件,但也有不少时候需要输出为csv,之前读取csv文件还是先使用bat程序将文件后缀改为txt ...

  9. php输出的例子,php 文件读取与读取文件输出内容例子

    php读取文件有很多的方法了,我们下文来为各位介绍一些常用的文件读取与输入读取文件内容的例子. 一,读取文件 先解释一下,什么是读取文件本身,什么叫读取文件输入内容.举个例子test.php里面的内容 ...

最新文章

  1. boost库 tbb_c++ 最简单的TBB示例
  2. Gitbook简易教程
  3. 形似棺材的“抗震救生床”,你会要吗?
  4. centos 初学者_初学者:如何在Outlook 2013中创建和管理任务
  5. A1075.PAT Judge
  6. sqlserver:(2):window下SQL server数据库数据源的配置
  7. 面向数据自治开放的数据盒模型
  8. shell mysql e_shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作...
  9. 围棋提子后的子放哪_围棋入门知识点:围棋规则 —— 禁入点
  10. 正则匹配指定单词后的所有数字_Python正则表达式理解用法
  11. 设置Panel的布局管理器为BorderLayout,分别向其中的每个区域加入一个按钮
  12. rocketmq4.x快速入门指南
  13. POJ2513Colored Sticks
  14. 配置LVS + Keepalived高可用负载均衡集群之图文教程
  15. Kafka权威指南,Kafka消费者
  16. php hscan,hgetall 替代 hscan的用法详解。
  17. Cisco NX-OS 基础配置指南(持续更新)
  18. 讨论BUCK、BOOST、BUCK-BOOST电路CCM模式下的设计参数计算
  19. Java微信授权小程序获取用户昵称头像等基本信息
  20. 中国最早用计算机是什么时候,中国最早的计算机,“神威太湖之光”

热门文章

  1. Kaggle ICML2013 fer2013人脸表情识别/面部表情识别:训练、调优、调试与踩坑
  2. 通知提示音修改默认铃声
  3. MAC IDEA启动后卡住不动
  4. 数据标签处理:python将xml文件转换为txt,csv格式
  5. 进销存ERP系统、销售单、采购单、退货单、库存管理、库存盘点、调拨、借入、借出、出库、入库、归还单、收款单、付款单、资金流水、销售报表、采购报表、库存报表、财务报表、商品库、电商erp、连锁erp
  6. Webpack:Loader学习—— Pitching Loader
  7. 10_OpenCV读取原始raw(raw10和raw8),转换成rgb和灰度图,并显示
  8. 超准的普通话水平测试,敢不敢进来做一下!
  9. 服务器硬盘可以换盘位吗,RAID里的硬盘可以互换槽位吗
  10. 带你了解什么是MySQL数据库(八)数据库锁机制