通常我們手裡有乙個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 目標區間 可以...