问题标签 [pyranges]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
232 浏览

python - pythonic相当于R Granges中的reduce() - 如何折叠范围数据?

在 R 中(尽管冗长):

这是一个测试data.frame

首先,我制作 Granges 对象:

然后我减少间隔以折叠成新的农庄对象:

现在将一个新列附加到原始数据帧,以确认哪些行属于相同的连续“块”。

输出:

我如何在 Python 中做到这一点?我知道 pybedtools,但据我所知,这需要我将 data.frame 保存到磁盘。任何帮助表示赞赏。

0 投票
2 回答
767 浏览

python - 发现数百万范围/间隔之间的重叠

我试图找到至少重叠用户设置的某个最小重叠长度的间隔对。间隔来自这个熊猫数据框:

其中start_pos是间隔开始的地方,end_pos是间隔结束的地方。read_length 是间隔的长度。

数据按 start_pos 排序。

该程序应具有以下输出格式:

query_id1 -- query_id2 -- 读取长度1 -- 读取长度2 -- 重叠长度

我在具有高达 512gb RAM 和 4x Intel Xeon E7-4830 CPU(32 核)的计算节点上运行该程序。

我尝试运行自己的代码来查找重叠部分,但运行时间太长。

这是我尝试过的代码,

同样,我在计算节点上运行了这段代码,但在我最终取消作业之前它运行了几个小时。

我还尝试使用两个包来解决这个问题——PyRanges,以及一个名为 IRanges 的 R 包,但它们也需要很长时间才能运行。我已经看过关于区间树和一个名为 pybedtools 的 python 库的帖子,我计划下一步研究它们。

任何反馈将不胜感激


编辑:对于最小重叠长度,比如 800,前 5 行应该是这样的,

因此,query_id1 和 query_id2 不能相同。此外,没有重复(即 A 和 B 之间的重叠不应在输出中出现两次)。

0 投票
1 回答
762 浏览

python - Pyranges中重叠和相交方法的区别

来自类似名称包的 Pyranges 类有两种功能略有不同的方法: intersectoverlay。相交方法描述与重叠的方法描述非常相似:Return overlapping subintervals.vsReturn overlapping intervals. 我无法完全看出这两者之间的区别(是的,我注意到了那个sub前缀)。

是否overlap旨在显示至少在一个位置重叠的完整间隔?

0 投票
1 回答
266 浏览

python - 使用 pyranges 库,如何检查染色体位置是否包含在任何区间中?

我有一个包含变体信息的 .vcf 文件和一个包含区域研究信息的 .bed 文件。我正在使用pyranges库来读取 .bed 文件。我想过滤掉 .vcf 文件中位于 .bed 文件中指定的研究区间内的所有变体。由于 pyranges 提供了一个 pandas 数据框,我可以遍历每一行并检查我的变体位置的包含情况;但是,我正在寻找一个可以帮助我实现这一目标的 API。

例子:

是否有 API 来查找染色体“chr1”的染色体位置 125 是否位于任何区间内。在上述情况下,它将为 True,因为 125 位于区间 100 - 150 中。

0 投票
1 回答
250 浏览

python - 如何在执行连接之前将染色体名称转换为 pyranges 中的相同格式

我有多个 .bed 文件,我想对它们执行连接、交集等操作。我正在使用pyranges库来读取 .bed 文件并执行这些操作。由于 .bed 文件允许命名带有或不带有“chr”前缀的染色体,我想在执行操作之前将不同 .bed 文件中的所有染色体名称格式化为相同的格式。因此,操作会产生预期的输出。

我试过了,

使用上面的代码,染色体名称被格式化,但染色体名称在 pyranges 中的映射保持不变。因此,join 或 query py1["1"] 之类的操作无法按预期工作。

有没有办法使用 pyranges 获得所需的行为?