Python 數值區間處理(py part)

2021-10-10 07:42:17 字數 2060 閱讀 3248

存在多個不連續的數值區間,如 [1,10] 、[20,50] 、[100,200] … ,此時該如何高效判斷乙個數值在這些區間內?

生物學資料分析中,有時需要判斷 snps 是否在 chipseq 或 atacseq 的 peak 區域內,並刪除掉不在這些區域內的 snps。在這些需求中, peak 區間的數量可能達到數萬之多,如何僅用一次迴圈就能達到目的?

pip install py-part
from part import interval
(1) 生成左閉右開的單個整數區間

interval = interval[

int]

(lower_value=

10, upper_value=20)

print

(interval)

# [10;20)

bool_ =

12in interval

print

(bool_)

# true

(2) 預設情況下,生成的區間為左閉右開,可以通過upper_closedlower_closed進行設定。如下,生成左開右閉的區間。

interval = interval[

int]

(lower_value=

10, upper_value=

20, upper_closed=

true

, lower_closed=

false

)print

(interval)

# (10;20]

(3) 生成字元區間

interval = interval[

str]

(lower_value=

"abc"

, upper_value=

"def"

, upper_closed=

true

)# ['abc';'def']

(4) 兩個區間是否存在交集判斷

a = interval[

int]

(lower_value=

10, upper_value=20)

b = interval[

int]

(lower_value=

15, upper_value=30)

# 判斷a與b區間是否存在交集

a.overlaps(b)

# true

(5) 判斷兩個區間是否具有相同的起點或終點

a = interval[

int]

(lower_value=

10, upper_value=20)

b = interval[

int]

(lower_value=

15, upper_value=30)

# 判斷a與b區間的起點是否相同

a.starts(b)

# false

# 判斷a與b區間的終點是否相同

a.finishes(b)

# false

(6) 利用frozenintervalset構造多個區間

from part import frozenintervalset
每個區間用乙個元組表示,所有區間通過列表傳遞給 frozenintervalset 函式。例如:

a = frozenintervalset[

int]([

2,(6

,7),

(8,9

,none),

(10,11

,true

,true)]

)print

(a)# [2;2] | [6;7) | (8;9) | [10;11]

其它方法參照官方文件

python內建數值處理函式

absdivmodfloathexintmaxminoctpowround作為python內建數值處理函式。絕對值函式,返回當前數值的絕對值。abs 5 5 abs 9.3 9.3求商和餘數,將兩個 非複數 作為實參,返回商和餘數。等同於 a b,a b divmod 4 2 2,0 divmod ...

python做數值積分 積分區間為小數 數值積分

一.組合梯形公式 數值積分 問題描述 組合梯形公式求函式f x 2 sin 2 sqrt x 的積分近似值。輸入形式 在螢幕上依次輸入積分上限 下限和等距子區間個數。輸出形式 輸出使用組合梯形公式求得的積分近似值。樣例1輸入 1 6 10 樣例1輸出 8.19385457 樣例1說明 輸入 積分上限...

特徵處理 數值特徵處理

專案工作流程 標準化標籤,將標籤值統一轉換成range 標籤值個數 1 範圍內 簡單來說 labelencoder 是對不連續的數字或者文字進行編號 one hot的基本思想 將離散型特徵的每一種取值都看成一種狀態,若你的這一特徵中有n個不相同的取值,那麼我們就可以將該特徵抽象成n種不同的狀態,on...