bedtools 篩選重合區間 注釋bed區間

2021-10-20 19:05:59 字數 1437 閱讀 4485

通常我們手裡有乙個bed區間的範圍,但只看這個沒有什麼概念,所以,要對這個bed區間進行注釋,看看都是什麼基因。

anno_file =

'gs.anno'

bed_file =

'44.bed'

# 目標bed區間 我的是4列,但只用裡前三列

target_gene_file =

'44_gene_list.txt'

# 想要保留的基因名稱

out_file =

'gs.anno.tx'

# 結果檔案 4 列

with

open

(target_gene_file)

as f_gene:

target_gene_list = f_gene.read(

).strip(

).split(

'\n'

)with

open

(anno_file)

as f_anno:

anno_list =

[i.split(

'\t'

)for i in f_anno.read(

).strip(

).split(

'\n')]

# 篩選所需要的的基因位置

tx_list =

for line_anno_list in anno_list:

if line_anno_list[-1

]in target_gene_list::3

]+ line_anno_list[-1

:])# 寫出篩選後的 bed&gene 對應檔案

with

open

(out_file,

'w')

as f_out:

for out_line_list in tx_list:

f_out.write(

'\t'

.join(out_line_list)

+'\n'

)

調整後的格式樣式:

**如下(示例):

bedtools intersect -a 44.bed -b gs.anno.tx -loj > out_file_loj

awk -v ofs=

"\t"

"" out_file_loj |

uniq

> out_file_loj_uniq

bedtools groupby -i out_file_loj_uniq -g 1,2,3 -c 4 -o collapse > out_file_loj_uniq_collapse

區間重合 c

給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。先排序 按照...

演算法 區間重合推斷

題目描寫敘述 給定乙個源區間 x,y 和n個無序的目標區間 x1,y1 x2,y2 xn,y,推斷給定的源區間 x,y 在不在目標區間內。比如 給定源區間 1 6 和目標區間 1 2 2 4 4 9 就可以覺得區間 1 6 在目標區間內,由於源區間的並集為 1 9 試想一下,如今在這種乙個目標區間的...

程式設計之美 區間重合判斷

問題描述 給定乙個源區間 x,y 和若干個無序的目標區間 x0,y0 x1,y1 x2,y2 xn,yn 判斷源區間是否在目標區間內。思路 1 分解源區間 把目標區間逐一的對映在源區間上,可以將源區間分解為更小的區間。最後看是否能將源區間全部分解。例如 源區間 目標區間 step 1 目標區間 可以...