本来以为有bai文件就说明是流程运行是完整的,事实上我还是太年轻,最近处理一个 600个病人的肿瘤WES数据,走流程过程发现卡在CNVKIT,部分样本出现了:

File "pysam/libcalignmentfile.pyx", line 729, in pysam.libcalignmentfile.AlignmentFile.__cinit__

File "pysam/libcalignmentfile.pyx", line 930, in pysam.libcalignmentfile.AlignmentFile._open

File "pysam/libchtslib.pyx", line 364, in pysam.libchtslib.HTSFile.check_truncation

IOError: no BGZF EOF marker; file may be truncated

很明显,是bam文件有问题!

为什么bam文件报错

因为这 600个病人的肿瘤WES数据我是批量运行的,日志也是一大堆,没有心情去检查到底是哪个步骤出错。(主要是最近服务器抽风,一半的节点成为了僵尸)

就先调出错误的样本,重新跑一次流程。简单的脚本检查,发现我输出的bam文件都是有bai文件的,如下:

ls *bam|while read id;do (ls -lh ${id/bam/bai});done

也就是说,一个不完整的bam文件,软件仍然是可以为它构建bai索引文件的!

而且诡异的是

samtools view T_recal.bam|head # 没有问题

samtools view T_recal.bam|tail # 报错

# [W::bam_hdr_read] EOF marker is absent. The input is probably truncated.

报错如下:

[W::bam_hdr_read] EOF marker is absent. The input is probably truncated.

[E::bgzf_read] bgzf_read_block error -1 after 31 of 32 bytes

[main_samview] truncated file.

而且两个统计命令,虽然都报错,其中有的有结果,有的没有结果。

samtools flagstat $sample.bam > ${sample}.alignment.flagstat & ## 能统计

samtools stats  $sample.bam > ${sample}.alignment.stat &  ## 空着

结果如下:

-rw-rw-r-- 1 jianmingzeng jianmingzeng    0 Dec 28 17:44 K1_recal.alignment.stat

-rw-rw-r-- 1 jianmingzeng jianmingzeng    0 Dec 28 17:58 K2_recal.alignment.stat

-rw-rw-r-- 1 jianmingzeng jianmingzeng    0 Dec 28 19:55 S1_recal.alignment.stat

-rw-rw-r-- 1 jianmingzeng jianmingzeng    0 Dec 28 19:53 S2_recal.alignment.stat

挑选出错误的bam文件

既然上面是tail报错,就批量写脚本

ls *bam|while read id;do (echo $id; samtools view $id|tail -1);done

但是肿瘤WGS样本通常是测序量不小,这个运行速度令人发指,最后还是成功发现了那些报错样本

K1_recal.bam

[W::bam_hdr_read] EOF marker is absent. The input is probably truncated.

--

K2.bam

[W::bam_hdr_read] EOF marker is absent. The input is probably truncated.

--

S1.bam

[W::bam_hdr_read] EOF marker is absent. The input is probably truncated.

--

S2.bam

[W::bam_hdr_read] EOF marker is absent. The input is probably truncated.

因为一直以来都是串shell脚本来跑流程,所以遇到了这个问题,不知道大家使用其它流程语言是不是就方便很多呢?

欢迎大家讨论!

bam文件读取_检测bam文件的完整度-流程之殇相关推荐

  1. bam文件读取_把bam文件读入R,并且转为grange对象

    把bam文件读入R,并且转为grange对象 假如你的Windows电脑有个bam文件,不想传输到linux服务器去使用samtools等命令行工具来探索它,就可以使用R语言! 有成熟的R包可以把ba ...

  2. dat文件读取_微信dat文件如何查看

    dat转码软件使用说明 可以百度 远芳小憩 查看小店内的软件 各位同学下载软件后,如何操作?如何找到dat文件?如何使用?又有哪些注意事项呢? 这里会为大家一一道来. 问题1 :如果下载失败怎么办? ...

  3. dat文件读取_比特币blk.dat文件结构及读取软件

    比特币节点(Bitcoin Core)的~/.bitcoin/blocks/目录中的blk.dat 文件中包含了节点接收到的原始区块数据,这些数据文件构成了比特币区块链的基础,同时也是区块链数据分析获 ...

  4. java压缩文件读取_用Java读取/写入压缩和非压缩文件

    java压缩文件读取 这篇文章的主要原因是尝试不要重复自己( DRY ),因为通常,我会遇到递归的需求,即读写压缩的和非压缩的文件(主要是JSON和CSV). 首先让我们看看如何读取文本文件. 注意我 ...

  5. rfa 文件读取_「rfa」rfa文件用什么软件打开? - seo实验室

    rfa 后缀名.rfa的用什么软件可以打开?什么是文件扩展名为RFA?有没有人给您发送过RFA文件,而您却不知道该如何打开?可能您在电脑上发现了一个 RFA文件却不知道这是做什么用的?windows ...

  6. nginx 上传文件漏洞_浅谈文件上传漏洞(其他方式绕过总结)

    前言 上一篇文章简单的介绍了绕过客户端检测,现在总结一下其他方式绕过. 正文 1.1 服务端MIME类型检测绕过 检测原理:用户上传文件时,服务器会获取这个文件的MIME值,与事先设置好的进行比对,如 ...

  7. c语言实现指定路径文件读取_C语言实现文件复制功能(包括文本文件和二进制文件)...

    文件的复制是常用的功能,要求写一段代码,让用户输入要复制的文件以及新建的文件,然后对文件进行复制.能够复制的文件包括文本文件和二进制文件,你可以复制1G的电影,也可以复制1Byte的txt文档.实现文 ...

  8. python文件读取输出-Python 读写文件中数据

    1 需求 在文件 h264.txt 中的数据如图1,读入该文件中的数据,然后将第1列的地址删除,然后将数据输出到h264_out.txt中: 图1 h264.txt 数据截图 图2 输出文件 h264 ...

  9. python文件读取数据-Python从文件中读取数据

    一.读取整个文件内容 在读取文件之前,我们先创建一个文本文件resource.txt作为源文件. resource.txt my name isjoker, I am18years old, How ...

  10. python中文件读取不出来_Python文件读取

    一文件读取 aa.txt: 登鹳雀楼 白日依山尽,黄河入海流. 欲穷千里目,更上一层楼. 1读取整个文件 filename = 'E:/COLDDEMO/Python/src/FirstDay/文件读 ...

最新文章

  1. poj3683(2-SAT)
  2. sed的基本用法和高级用法
  3. php关于路由,PHP URL路由类实例
  4. sts,eclipse里面配置tomcat
  5. Python数据结构与算法(第五天)
  6. mysql1526错误_mysql 分区 1526错误
  7. RabbitMQ之比较好的资料
  8. 视频创作助力企业营销
  9. C#结构体中数组的分配
  10. Oracle : 使用JDBC连接ORACLE的三种URL格式
  11. 机器学习:神经网络的模型构建
  12. adaboost java_Adaboost的java实现 | 学步园
  13. 水很深的深度学习-Task02机器学习基础
  14. UnityShader中插值平滑曲线
  15. 关于Java String类的理解
  16. docker配置mysql 中间件 ProxySQL
  17. 如何通过rancher部署k8s集群
  18. 操作系统:磁盘结构和磁盘块号计算方法
  19. GRUB2配置文件grub.cfg详解(GRUB2实战手册)
  20. 8.4 内存映射文件

热门文章

  1. Spring 实体类依赖注入属性的三种方式
  2. JetBrains下载历史版本(IDEA、PyCharm、WebStorm、PhpStorm等)
  3. 划分离散数学定义_《离散数学》学习记录 - 集合论
  4. 简单理解格拉姆矩阵(Gram matrix)
  5. java实现网页评分_Java web分级测试评分C级感受
  6. Python调用百度API进行动植物识别
  7. 微软远程桌面mac/ios/android客户端
  8. Axure8实现最常见的左侧动态导航
  9. Python输出emoji表情包
  10. thymeleaf模板引擎即时生效的问题