查看原文
其他

Julia 处理 bigWig 文件

JunJunLab 老俊俊的生信笔记 2022-08-17


看不清你,也看不清我自己

1引言

今天分享 julia GenomicFeatures 中的 BigWig 模块,来读取和处理 bigwig 文件。

2安装

add BigWig

3介绍

也是三种基本类型:

  • Reader type: BigWig.Reader
  • Writer type: BigWig.Writer
  • Element type: BigWig.Record

示例:

# Import the BigWig module.
using GenomicFeatures

# 打开 bigwig 文件
reader = open(BigWig.Reader, "data.cov.bw")

# 迭代指定区间
for record in eachoverlap(reader, Interval("Chr2"50016000))
    # 提取起始和终止位置,及信号值
    startpos = BigWig.chromstart(record)
    endpos = BigWig.chromend(record)
    value = BigWig.value(record)
    # and do something...
end

# 关闭文件
close(reader)

BigWig.values 可以直接获取指定区间的信号值,返回的使 vector:

# Get values in Chr2:5001-6000 as a vector of 1000 elements.
BigWig.values(reader, Interval("Chr2"50016000))

逐行迭代所有的数据也可以:

reader = open(BigWig.Reader, "data.cov.bw")
for record in reader
    # ...
end
close(reader)

创建 bigwig 文件:

# Open an output file.
file = open("data.cov.bw""w")

# Initialize a bigWig writer.
writer = BigWig.Writer(file, [("chr1"2000), ("chr2"1000)])

# Write records.
write(writer, ("chr1",   11001.0))
write(writer, ("chr1"1012002.1))
# ...
write(writer, ("chr2",  511503.2))

# Close the writer (this closes the file, too).
close(writer)

可以获取数据的相关参数:

# 获取染色体名称及长度,返回元组
chromlist(reader::BigWig.Reader)::Vector{Tuple{String,Int}}
# 获取指定区间的信号值,返回向量
values(reader::BigWig.Reader, interval::Interval)::Vector{Float32}
# 获取染色体名称
chrom(record::Record)::String
# 获取染色体id
chromid(record::Record)::UInt32
# 获取起始位置
chromstart(record::Record)::Int
# 获取终止位置
chromend(record::Record)::Int
# 获取信号值
value(record::Record)::Float32

4结尾

感兴趣的小伙伴可以去尝试一下。




  老俊俊生信交流群 ,QQ,


老俊俊微信:


知识星球:



今天的分享就到这里了,敬请期待下一篇!

最后欢迎大家分享转发,您的点赞是对我的鼓励肯定

如果觉得对您帮助很大,赏杯快乐水喝喝吧!



  





Julia 笔记之元组

GFF3 处理 GFF 注释文件

Sam 文件 flag 研究

Ribo-seq 质控之 reads 分布特征

Julia 笔记之字典

Cell 文章代码重改复现测试

Julia 笔记之数组

Julia 笔记之函数

Molecular Cell 文章主图结果复现

Julia 笔记之循环和条件语句

◀...

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存