bedtools coverage 獲取每個位置的測序深度

1.bedtools 文檔

$ bedtools --version
bedtools v2.31.1coverage      Compute the coverage over defined intervals.
Usage:bedtools coverage [OPTIONS] -a <FILE> \-b <FILE1, FILE2, ..., FILEN>(or):coverageBed [OPTIONS] -a <FILE> \-b <FILE1, FILE2, ..., FILEN>注意: As of version 2.24.0, the coverage tool has changed such that the coverage is computed for the A file, not the B file. This changes the command line interface to be consistent with the other tools. 

從2.24.0版本開始,計算的是A文件的覆蓋度,而不是B文件。

重要參數:

  • https://bedtools.readthedocs.io/en/latest/content/tools/coverage.html

## bedtools coverage -a positions.bed -b aligned_reads.bam -d > position_depth.txt

-a BAM/BED/GFF/VCF file “A”. Each feature in A is compared to B in search of overlaps. Use “stdin” if passing A with a UNIX pipe.

-b One or more BAM/BED/GFF/VCF file(s) “B”. Use “stdin” if passing B with a UNIX pipe. NEW!!!: -b may be followed with multiple databases and/or wildcard (*) character(s).

-d Report the depth at each position in each A feature. Positions reported are one based. Each position and depth follow the complete A feature.

2.測試

(1) 準備bed文件

$ cd /home/wangjl/tmp找到一個IGV的峰圖范圍
$ cat positions.bed
chr1	246766959	246768109

(2)運行

$ bedtools coverage -a positions.bed -b /datapool/wangjl/scPolyA-seq2/chenxi/PBMC/cluster_bam/RNA/RNA_cluster0.pA_reads.sorted.bam -d > position_depth.txt
# 20:09->20:11
警告:***** WARNING: File /datapool/wangjl/scPolyA-seq2/chenxi/PBMC/cluster_bam/RNA/RNA_cluster0.pA_reads.sorted.bam has inconsistent naming convention for record:GL000008.2	47002	47037	A01758:191:HGG7FDSX5:3:1561:3830:23844_AGTAAACC_TCCACCGTAT	255	-***** WARNING: File /datapool/wangjl/scPolyA-seq2/chenxi/PBMC/cluster_bam/RNA/RNA_cluster0.pA_reads.sorted.bam has inconsistent naming convention for record:GL000008.2	47002	47037	A01758:191:HGG7FDSX5:3:1561:3830:23844_AGTAAACC_TCCACCGTAT	255	-

(3)查看輸出文件

可見,前三列和輸入的-a bed文件一致,第四列是逐個堿基位置編號,第五列是該位置的測序深度。

246768109-246766959=1150, 可見,這是一個半開半閉區間。比如 1-2 只算1個堿基,到底哪邊開呢?一般是 [)。在 (5)中我們做測試。

$ wc position_depth.txt1150  5750 36843 position_depth.txt
$ head position_depth.txt
chr1	246766959	246768109	1	17
chr1	246766959	246768109	2	17
chr1	246766959	246768109	3	17
...
$ tail position_depth.txt
...
chr1	246766959	246768109	1148	19
chr1	246766959	246768109	1149	19
chr1	246766959	246768109	1150	19

(4)R繪圖,和IGV峰圖比較

按照x=第4列,y=5th畫圖

$ R
> dat=read.table("position_depth.txt")
> plot(dat$V4, dat$V5, type="o", cex=0.5)

縮小到長寬基本一致,看起來還是挺像IGV峰圖的。
在這里插入圖片描述
圖1:上圖是IGV圖,下圖是逐位點的測序深度連線圖。

(5)驗證 bedtools 對bed是取左閉右開區間

在IGV中找到最高峰附近的1bp
目測: 8 上有reads,9上沒有。

$ cat positions2.bed
chr1	246767468	246767469$ bedtools coverage -a positions2.bed -b /datapool/wangjl/scPolyA-seq2/chenxi/PBMC/cluster_bam/RNA/RNA_cluster0.pA_reads.sorted.bam -d > position_depth2.txt$ cat position_depth2.txt
chr1	246767468	246767469	1	15

說明1.單個堿基,2.有reads。支持[)區間。

2)再次測試:chr1 246767468 246767470
輸出:
$ cat position_depth2.txt
chr1 246767468 246767470 1 15
chr1 246767468 246767470 2 15
失敗,竟然都有reads?!
難道,是取了滑動平均值?取平均就不是按位點取測序深度了。

3)再試,爭取測試到有reads和無reads的分界線

發現往后延申坐標不行,都是15。而往前延申坐標可以!

$ cat positions2.bed
chr1	246767458	246767470
輸出:
$ cat position_depth2.txt
chr1	246767458	246767470	1	80
chr1	246767458	246767470	2	78
chr1	246767458	246767470	3	60
chr1	246767458	246767470	4	53
chr1	246767458	246767470	5	53
chr1	246767458	246767470	6	53
chr1	246767458	246767470	7	53
chr1	246767458	246767470	8	53
chr1	246767458	246767470	9	46
chr1	246767458	246767470	10	46 #這個位置應該是58+10-1=67
chr1	246767458	246767470	11	15
chr1	246767458	246767470	12	15

推測:15就是本該是0的背景噪音了?

結論:

  • i) bedtools取bed區間時,按照左閉右開區間。
  • ii) bed記錄的坐標是0-based,就是igv(1-based)看到的坐標減去1。

推理: 我想要某個點的 pos=8 的reads 深度,該怎么設置bed?

  • i)bedtools 就需要設置 [pos, pos+1)位置;
  • ii)寫成bed格式要坐標-1,就是 chr pos-1 pos,也就是 chr 7 8

驗證1: 取pos=8的深度,igv有

	$ cat positions2.bedchr1	246767467	246767468輸出:$ cat position_depth2.txtchr1	246767467	246767468	1	46

驗證2: 取pos=9的深度,igv看沒

	$ cat positions2.bedchr1	246767467	246767469輸出:$ cat position_depth2.txtchr1	246767467	246767469	1	46chr1	246767467	246767469	2	15

在這里插入圖片描述
圖2:使用的樣本為 cluster0。IGV坐標中 pos=8有reads,pos=9沒有reads。

結論:IGV和位點深度量化相對大小是一致的,絕對大小不一致。

  • IGV 最高點是38,最低點是0。圖1中IGV最高也才到66,還是低于(5)-3中的最高值80。
  • IGV繼續放大pos=9,還是有零星2個reads的,也比bedtools給出的低。
    說明:IGV可能做了取子集?只是展示了bam的一部分?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77914.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77914.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77914.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

反向代理和DDNS的區別是什么?

反向代理&#xff08;Reverse Proxy&#xff09;和動態域名解析&#xff08;DDNS&#xff0c;Dynamic Domain Name System&#xff09;是兩種不同的網絡技術&#xff0c;雖然它們都與外部訪問內部服務相關&#xff0c;但解決的問題和應用場景完全不同。具體區別如下&#xff1a…

縮放點積注意力

Scaled Dot-Product Attention 論文地址 https://arxiv.org/pdf/1706.03762 注意力機制介紹 縮放點積注意力是Transformer模型的核心組件&#xff0c;用于計算序列中不同位置之間的關聯程度。其核心思想是通過查詢向量&#xff08;query&#xff09;和鍵向量&#xff08;key&am…

可吸收聚合物:醫療科技與綠色未來的交匯點

可吸收聚合物&#xff08;Biodegradable Polymers&#xff09;作為生物醫學工程的核心材料&#xff0c;正引領一場從“金屬/塑料植入物”到“智能降解材料”的范式轉移。根據QYResearch&#xff08;恒州博智&#xff09;預測&#xff0c;2031年全球可吸收聚合物市場銷售額將突破…

房地產項目績效考核管理制度與績效提升

房地產項目績效考核管理制度的核心目的是通過合理的績效考核機制&#xff0c;提升項目的整體運作效率&#xff0c;并鼓勵項目團隊成員的積極性。該制度適用于所有房地產項目部工作人員&#xff0c;涵蓋了項目經理和項目成員的考核。考核的主要內容包括項目經理和項目部成員的工…

【算法筆記】動態規劃基礎(一):dp思想、基礎線性dp

目錄 前言動態規劃的精髓什么叫“狀態”動態規劃的概念動態規劃的三要素動態規劃的框架無后效性dfs -> 記憶化搜索 -> dp暴力寫法記憶化搜索寫法記憶化搜索優化了什么&#xff1f;怎么轉化成dp&#xff1f;dp寫法 dp其實也是圖論首先先說結論&#xff1a;狀態DAG是怎樣的…

pytorch 51 GroundingDINO模型導出tensorrt并使用c++進行部署,53ms一張圖

本專欄博客第49篇文章分享了將 GroundingDINO模型導出onnx并使用c++進行部署,并嘗試將onnx模型轉換為trt模型,fp16進行推理,可以發現推理速度提升了一倍。為此對GroundingDINO的trt推理進行調研,發現 在GroundingDINO-TensorRT-and-ONNX-Inference項目中分享了模型導出onnx…

一個關于相對速度的假想的故事-6

既然已經知道了速度是不能疊加的&#xff0c;同時也知道這個疊加是怎么做到的&#xff0c;那么&#xff0c;我們實際上就知道了光速的來源&#xff0c;也就是這里的虛數單位的來源&#xff1a; 而它的來源則是&#xff0c; 但這是兩個速度的比率&#xff0c;而光速則是一個速度…

深度學習激活函數與損失函數全解析:從Sigmoid到交叉熵的數學原理與實踐應用

目錄 前言一、sigmoid 及導數求導二、tanh 三、ReLU 四、Leaky Relu五、 Prelu六、Softmax七、ELU八、極大似然估計與交叉熵損失函數8.1 極大似然估計與交叉熵損失函數算法理論8.1.1 伯努利分布8.1.2 二項分布8.1.3 極大似然估計總結 前言 書接上文 PaddlePaddle線性回歸詳解…

Python內置函數---breakpoint()

用于在代碼執行過程中動態設置斷點&#xff0c;暫停程序并進入調試模式。 1. 基本語法與功能 breakpoint(*args, kwargs) - 參數&#xff1a;接受任意數量的位置參數和關鍵字參數&#xff0c;但通常無需傳遞&#xff08;默認調用pdb.set_trace()&#xff09;。 - 功能&#x…

從零手寫 RPC-version1

一、 前置知識 1. 反射 獲取字節碼的三種方式 Class.forName("全類名") &#xff08;全類名&#xff0c;即包名類名&#xff09;類名.class對象.getClass() (任意對象都可調用&#xff0c;因為該方法來自Object類&#xff09; 獲取成員方法 Method getMethod(St…

ARINC818協議(六)

上圖中&#xff0c;紅色虛線上面為我們常用的simple mode簡單模式&#xff0c;下面和上面的結合在一起&#xff0c;就形成了extended mode擴展模式。 ARINC818協議 container header容器頭 ancillary data輔助數據 視頻流 ADVB幀映射 FHCP傳輸協議 R_CTRL:路由控制routing ctr…

PyCharm 鏈接 Podman Desktop 的 podman-machine-default Linux 虛擬環境

#工作記錄 PyCharm Community 連接到Podman Desktop 的 podman-machine-default Linux 虛擬環境詳細步驟 1. 準備工作 確保我們已在 Windows 系統中正確安裝并啟動了 Podman Desktop。 我們將通過 Podman Desktop 提供的名為 podman-machine-default 的 Fedora Linux 41 WSL…

小白自學python第一天

學習python的第一天 一、常用的值類型&#xff08;先來粗略認識一下~&#xff09; 類型說明數字&#xff08;number&#xff09;包含整型&#xff08;int&#xff09;、浮點型&#xff08;float&#xff09;、復數&#xff08;complex&#xff09;、布爾&#xff08;boolean&…

初階數據結構--排序算法(全解析!!!)

排序 1. 排序的概念 排序&#xff1a;所謂排序,就是使一串記錄&#xff0c;按照其中的某個或某些些關鍵字的大小&#xff0c;遞增或遞減的排列起來的操作。 2. 常見的排序算法 3. 實現常見的排序算法 以下排序算法均是以排升序為示例。 3.1 插入排序 基本思想&#xff1a;…

Android studio開發——room功能實現用戶之間消息的發送

文章目錄 1. Flask-SocketIO 后端代碼后端代碼 2. Android Studio Java 客戶端代碼客戶端代碼 3. 代碼說明 SocketIO基礎 1. Flask-SocketIO 后端代碼 后端代碼 from flask import Flask, request from flask_socketio import SocketIO, emit import uuidapp Flask(__name_…

4.LinkedList的模擬實現:

LinkedList的底層是一個不帶頭的雙向鏈表。 不帶頭雙向鏈表中的每一個節點有三個域&#xff1a;值域&#xff0c;上一個節點的域&#xff0c;下一個節點的域。 不帶頭雙向鏈表的實現&#xff1a; public class Mylinkdelist{//定義一個內部類&#xff08;節點&#xff09;stat…

Sentinel數據S2_SR_HARMONIZED連續云掩膜+中位數合成

在GEE中實現時&#xff0c;發現簡單的QA60是無法去云的&#xff0c;最近S2地表反射率數據集又進行了更新&#xff0c;原有的屬性集也進行了變化&#xff0c;現在的SR數據集名稱是“S2_SR_HARMONIZED”。那么&#xff1a; 要想得到研究區無云的圖像&#xff0c;可以參考執行以下…

理解計算機系統_網絡編程(1)

前言 以<深入理解計算機系統>(以下稱“本書”)內容為基礎&#xff0c;對程序的整個過程進行梳理。本書內容對整個計算機系統做了系統性導引,每部分內容都是單獨的一門課.學習深度根據自己需要來定 引入 網絡是計算機科學中非常重要的部分,筆者過去看過相關的內…

【2025】Datawhale AI春訓營-RNA結構預測(AI+創新藥)-Task2筆記

【2025】Datawhale AI春訓營-RNA結構預測&#xff08;AI創新藥&#xff09;-Task2筆記 本文對Task2提供的進階代碼進行理解。 任務描述 Task2的任務仍然是基于給定的RNA三維骨架結構&#xff0c;生成一個或多個RNA序列&#xff0c;使得這些序列能夠折疊并盡可能接近給定的目…

vim 命令復習

命令模式下的命令及快捷鍵 # dd刪除光所在行的內容 # ndd從光標所在行開始向下刪除n行 # yy復制光標所在行的內容 # nyy復制光標所在行向下n行的內容 # p將復制的內容粘貼到光標所在行以下&#xff08;小寫&#xff09; # P將復制的內容粘貼到光標所在行以上&#xff08;大寫&…