实验记录 |somatic.pl的运行2

2023-11-30 09:40
文章标签 运行 记录 实验 somatic pl

本文主要是介绍实验记录 |somatic.pl的运行2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一个同学分享了一个网盘文件,上面有gatk相关的文件,所以我尝试下载,是否能够使用。
参考链接:https://blog.csdn.net/xxxie_/article/details/100111991
我的心态是崩的,原来早就有同学分享到网盘里了。
我也有匆匆浏览过这个网页,但是没有注意到它在文后的一个分享。
还是要静下来去做事吧!

现在已经有一个文件了,把它放在合适的文件夹下,重新跑程序,看看结果。
移动完成。
重新跑代码。
perl somatic.pl NA NA example/example_dataset/sequencing/SRR7246238_1.fastq.gz example/example_dataset/sequencing/SRR7246238_2.fastq.gz 32 hg19 /home/zxx/QBRC/geneome/hg19/hg19.fa /usr/lib/jvm/jdk1.8.0_181/bin/java human 1 /home/zxx/QBRC/disambiguate_pipeline

毫无疑问,又出现了一堆的错误,但是希望没有之前的问题。

MESSAGE: Could not read file /home/zxx/QBRC/geneome/hg19/hg19.fa_resource/1000G_phase1.snps.high_confidence.hg19.vcf because file ‘/home/zxx/QBRC/geneome/hg19/hg19.fa_resource/1000G_phase1.snps.high_confidence.hg19.vcf’ does not exist

ERROR MESSAGE: Could not read file /home/zxx/QBRC/geneome/hg19/hg19.fa_resource/dbsnp.hg19.vcf because file ‘/home/zxx/QBRC/geneome/hg19/hg19.fa_resource/dbsnp.hg19.vcf’ does not exist

ERROR MESSAGE: Could not read file /home/zxx/QBRC/human/tumor/tumor_bqsr because it does not exist

还是配置文件的问题,难道不能一起出现吗?
好的,我继续下载这一部分。

下载完成(2021/05/15)。
现在将移动硬盘中的文件移动到指定目录下。
经过上次的经验积累,我发现用正规途径(移动指令或交互式界面操作)比手动的拖放,更不容易造成文件的损坏。
所以,我现在用文件的移动指令,在进行此次操作。
类如:
cp dbsnp_138.hg19.vcf.idx.gz /home/zxx/QBRC/geneome/hg19/hg19.fa_resource
这样操作之后的话,就是在指定的文件夹下进行解压。我学会了批量的操作。
因为是.gz结尾的文件,于是选择使用解压指令gunzip
gunzip *.gz
我很喜欢这种批量的操作。
另外,我最近还想学习一下shell语言中的循环是怎么一回事。感觉直接用shell脚步批量跑很方便。之前有接触过,但是没有认真的研究过。
截止到现在,我的四个文件复制移动完成。
我决定重新运行一下代码。
不过,在此之前,需要改一下dbsnp文档的名字。
mv dbsnp_138.hg19.vcf dbsnp.hg19.vcf
后来报错显示,1000那个文档也需要改名字——粗心的我。
继续改名字。
mv 1000G_phase1.snps.high_confidence.hg19.sites.vcf 1000G_phase1.snps.high_confidence.hg19.vcf
实践证明,还是交互式的处理比较方便(更加适合现在的我)。

好的,现在切换到somatic.pl所在的路径下,重新运行代码。
perl somatic.pl NA NA example/example_dataset/sequencing/SRR7246238_1.fastq.gz example/example_dataset/sequencing/SRR7246238_2.fastq.gz 32 hg19 /home/zxx/QBRC/geneome/hg19/hg19.fa /usr/lib/jvm/jdk1.8.0_181/bin/java human 1 /home/zxx/QBRC/disambiguate_pipeline

另外,参考昨天那个somatic.pl的calling流程,如果是gatk相关文件缺失导致报错的话,说明程序已经运行到中间步骤了。
重新运行之后,产生了新的错误。但幸运的是,不是以前的错误了。
我重新进行分析。

ERROR MESSAGE: Lexicographically sorted human genome sequence detected in reference. Please see http://gatkforums.broadinstitute.org/discussion/58/companion-utilities-reordersamfor more information.

Error details: reference contigs = [chr10, chr11, chr11_gl000202_random, chr12, chr13, chr14, chr15, chr16, chr17_ctg5_hap1, chr17, chr17_gl000203_random, chr17_gl000204_random, chr17_gl000205_random, chr17_gl000206_random, chr18, chr18_gl000207_random, chr19, chr19_gl000208_random, chr19_gl000209_random, chr1, chr1_gl000191_random, chr1_gl000192_random, chr20, chr21, chr21_gl000210_random, chr22, chr2, chr3, chr4_ctg9_hap1, chr4, chr4_gl000193_random, chr4_gl000194_random, chr5, chr6_apd_hap1, chr6_cox_hap2, chr6_dbb_hap3, chr6, chr6_mann_hap4, chr6_mcf_hap5, chr6_qbl_hap6, chr6_ssto_hap7, chr7, chr7_gl000195_random, chr8, chr8_gl000196_random, chr8_gl000197_random, chr9, chr9_gl000198_random, chr9_gl000199_random, chr9_gl000200_random, chr9_gl000201_random, chrM, chrUn_gl000211, chrUn_gl000212, chrUn_gl000213, chrUn_gl000214, chrUn_gl000215, chrUn_gl000216, chrUn_gl000217, chrUn_gl000218, chrUn_gl000219, chrUn_gl000220, chrUn_gl000221, chrUn_gl000222, chrUn_gl000223, chrUn_gl000224, chrUn_gl000225, chrUn_gl000226, chrUn_gl000227, chrUn_gl000228, chrUn_gl000229, chrUn_gl000230, chrUn_gl000231, chrUn_gl000232, chrUn_gl000233, chrUn_gl000234, chrUn_gl000235, chrUn_gl000236, chrUn_gl000237, chrUn_gl000238, chrUn_gl000239, chrUn_gl000240, chrUn_gl000241, chrUn_gl000242, chrUn_gl000243, chrUn_gl000244, chrUn_gl000245, chrUn_gl000246, chrUn_gl000247, chrUn_gl000248, chrUn_gl000249, chrX, chrY

ERROR MESSAGE: Could not read file /home/zxx/QBRC/human/tumor/realigned.bam because java.io.FileNotFoundException: human/tumor/realigned.bam (No such file or directory)

ERROR MESSAGE: Could not read file /home/zxx/QBRC/human/tumor/tumor_bqsr because it does not exist

这个程序是串联的,所以,后面的错误往往是前面的错误所引起的,我现在主要要做的就是解决前面出现的这个错误。

具体的解决思路:
百度翻译了一下,报错的主要的意思是:

参考基因组中检测到按字典排序的人类基因组序列

了解到这一点之后,我们看一下具体的细节。果然是字典排序的方式。

chr10, chr11, chr12, chr13, chr14, chr15, chr16, chr17, chr18, chr19, chr1, chr20, chr21, chr22, chr2, chr3, chr4, chr5, chr6, chr7, chr8, chr9, chrM, chrUn,chrX, chrY

这里补充一下,什么是字典排序(这个之前建索引的时候有接触过)?
参考链接:百度百科-字典排序

设想一本英语字典里的单词,何者在前何者在后?
显然的做法是先按照第一个字母、以 a、b、c……z 的顺序排列;如果第一个字母一样,那么比较第二个、第三个乃至后面的字母。如果比到最后两个单词不一样长(比如,sigh 和 sight),那么把短者排在前。
通过这种方法,我们可以给本来不相关的单词强行规定出一个顺序。“单词”可以看作是“字母”的字符串,而把这一点推而广之就可以认为是给对应位置元素所属集合分别相同的各个有序多元组规定顺序。

所以,在这里的话,是不太希望用字典排序这种方式吗?
我预估问题出现在了索引上。
我们打开看一下我们上次建的两个参考基因组的索引(dictfai)。
head hg19.dict

@HD VN:1.6
@SQ SN:chr10 LN:135534747 M5:988c28e000e84c26d552359af1ea2e1d UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr11 LN:135006516 M5:98c59049a2df285c76ffb1c6db8f8b96 UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr11_gl000202_random LN:40103 M5:06cbf126247d89664a4faebad130fe9c UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr12 LN:133851895 M5:51851ac0e1a115847ad36449b0015864 UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr13 LN:115169878 M5:283f8d7892baa81b510a015719ca7b0b UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr14 LN:107349540 M5:98f3cae32b2a2e9524bc19813927542e UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr15 LN:102531392 M5:e5645a794a8238215b2cd77acb95a078 UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr16 LN:90354753 M5:fc9b1a7b42b97a864f56b348b06095e6 UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr17_ctg5_hap1 LN:1680828 M5:d89517b400226d3b56e753972a7ca

head hg19.fa.fai

chr10 135534747 7 50 51
chr11 135006516 138245456 50 51
chr11_gl000202_random 40103 275952126 50 51
chr12 133851895 275993039 50 51
chr13 115169878 412521979 50 51
chr14 107349540 529995262 50 51
chr15 102531392 639491800 50 51
chr16 90354753 744073827 50 51
chr17_ctg5_hap1 1680828 836235693 50 51
chr17 81195210 837950145 50 51

从上面两个文件的内容看,确实都是报错中显示的“字典排序”的类型。但是,除了字典排序,还有什么排序类型呢?
而且我建立参考索引的过程是按照官网进行操作的。
那么,到这里,我们还有最后一点线索,就是错误中提示的去官网: http://gatkforums.broadinstitute.org/discussion/ ,查看是否有比较好的建议。
以“Lexicographically”作为关键词进行搜索,找到了5篇与之相关的文章。
在这里插入图片描述
其中,可以参考一下这篇文章。或许可以帮助我们更好的理解运行的机制(2021/05/15 9:20)。
https://gatk.broadinstitute.org/hc/en-us/articles/360057440671-SortSam-Picard-

一般情况下,参考基因组的排序方式有两种:
(1)第1种是按照mapping到的参考基因组的坐标上下游顺序来排序,是samtools的默认排序方法
(2)第2种是按照reads name进行排序,需要增加一个-n参数。

我们来分别尝试体验一下。上一次我们生成索引,采用的指令是:
samtools faidx hg19.fa
这样一种构建索引的方式,是如何构建的呢?
这个索引好像是直接通过samtools对fasta进行排序的。而fasta又来源于我们原始的那些染色体序列,通过cat合并而成。

所以,究竟怎样才好呢?我在这个地方卡住了。

48265987+Edison19991109@users.noreply.github.com
33228841+tianshilu@users.noreply.github.com
curl “https://api.github.com/users/MenglinC/repos?type=owner&sort=updated” -s
| sed -nE ‘s#^.“name”: “([^”]+)",.KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲\1#p' \ …#\2#p’|sort -u
如何通过github用户名找到该用户的邮箱
https://api.github.com/users/Edison19991109/events/public

经过上面一段尝试,我决定使用VPN。
于是联系了某宝客服,在12:08,我终于自己能够人生中第一次连上谷歌了。
我激动的心情,就像是村里通电了一样。
不得不说,好的工具能够让我们便宜许多。
以“Lexicographically sorted human genome sequence detected in reference.”为关键词进行搜索:
得到如下解答:
在这里插入图片描述可以同时比较一下bing的对于同一个问题的检索结果。所以总结得出一个好的搜索引擎是多么的重要。
在这里插入图片描述所以,我买的是一周的时间。在这一周的时间内,要好好利用资源。
但是,比较遗憾的是这个vpn只能应用于window平台。
所以,我只能在window这边找到比较合适的解决方案之后,在Linux那边集中的处理与尝试。

这个问题,具体的建议如下:
参考链接:https://www.biostars.org/p/63337/

  1. MESSAGE: Lexicographically sorted human genome sequence detected in reads.
    For safety’s sake the GATK requires human contigs in karyotypic order: 1, 2, …, 10, 11, …, 20, 21, 22, X, Y with M either leading or trailing these contigs

所以,正常的顺序应该是:

chr1,chr2,chr3,chr4 etc.

参考链接:https://www.biostars.org/p/331664/
这篇文章就在探讨,如何将自己的数据按照这种方式进行排序。
参考链接:https://gatk.broadinstitute.org/hc/en-us/articles/360035532232?id=1328

Version-specific alert for GATK 3.5
In version 3.5, we added some beefed-up VCF sequence dictionary validation. Unfortunately, as a side effect of the additional checks, some users have experienced an error that starts with “ERROR MESSAGE: Lexicographically sorted human genome sequence detected in variant.” that is due to unintentional activation of a check that is not necessary. This will be fixed in the next release; in the meantime -U ALLOW_SEQ_DICT_INCOMPATIBILITY can be used (with caution) to override the check.

重新sort我们的fasta格式的文件(我觉得这就是我要找的答案)。

  • Sort your reference

samtools faidx reference.fa

`cut -f1 reference.fa.fai|sort -k1V|parallel -k 'samtools faidx reference.fa {}' > ref_sorted.fa`
  • Create a dictionary for the sorted ref
    java -jar picard.jar CreateSequenceDictionary R=ref_sorted.fa O=ref_sorted.dict

  • Reorder bam file
    java -jar picard.jar ReorderSam I=original.bam O=reordered.bam R=ref_sorted.fa CREATE_INDEX=TRUE

选择尝试这种解决方案(记得备份),觉得归根到底还是自己的基础太差,不会使用指令进行文件操作,等一下我要好好分析一下上面这个shell指令的意思。

首先cut指令在shell中,是截取字符串的意思。参数-f1截取第一个字段。对应到文件中,就是字符chr10等等。

chr10 135534747 7 50 51
chr11 135006516 138245456 50 51
chr11_gl000202_random 40103 275952126 50 51
chr12 133851895 275993039 50 51
chr13 115169878 412521979 50 51

|在linux中的意思是分割两个命令的管道符。
sort 是linux中的排序指令。-k1指定为第一列。
parallel多进程并行运算。
修改代码为:
cut -f1 hg19.fa.fai | sort -k1V|parallel -k 'samtools faidx hg19.fa {}' > hg19_sorted.fa

得到了文件hg19_sorted.fa并将其更名为hg19.fa
mv hg19_sorted.fa hg19.fa

在这个基础上,重新创建索引文件。

  • hg19.dict
    gatk CreateSequenceDictionary -R hg19.fa
    需要一定的时间。创建完成之后,我们看一下,结果文件是否是我们想要的顺序。
    有点开心,是我们想要的这种格式。

@HD VN:1.6
@SQ SN:chr1 LN:249250621 M5:1b22b98cdeb4a9304cb5d48026a85128 UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr1_gl000191_random LN:106433 M5:d75b436f50a8214ee9c2a51d30b2c2cc UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr1_gl000192_random LN:547496 M5:325ba9e808f669dfeee210fdd7b470ac UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr2 LN:243199373 M5:a0d9851da00400dec1098a9255ac712e UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr3 LN:198022430 M5:641e4338fa8d52a5b781bd2a2c08d3c3 UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr4 LN:191154276 M5:23dccd106897542ad87d2765d28a19a1 UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr4_ctg9_hap1 LN:590426 M5:fa24f81b680df26bcfb6d69b784fbe36 UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr4_gl000193_random LN:189789 M5:dbb6e8ece0b5de29da56601613007c2a UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr4_gl000194_random LN:191469 M5:6ac8f815bf8e845bb3031b73f812c012 UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr5 LN:180915260 M5:0740173db9ffd264d728f32784845cd7 UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr6 LN:171115067 M5:1d3a93a248d92a729ee764823acbbc6b UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa
@SQ SN:chr6_apd_hap1 LN:4622290 M5:fe71bc63420d666884f37a3ad79f3317 UR:file:/home/zxx/QBRC/geneome/hg19/hg19.fa

以同样的方式,依据新的参考基因组,创建fai参考索引。

  • hg19.fa.fai
    samtools faidx hg19.fa
    同样的,也是我们想要的那种格式。

chr1 249250621 6 60 61
chr1_gl000191_random 106433 253404827 60 61
chr1_gl000192_random 547496 253513056 60 61
chr2 243199373 254069683 60 61
chr3 198022430 501322385 60 61
chr4 191154276 702645195 60 61
chr4_ctg9_hap1 590426 896985392 60 61
chr4_gl000193_random 189789 897585681 60 61
chr4_gl000194_random 191469 897778656 60 61
chr5 180915260 897973323 60 61
chr6 171115067 1081903844 60 61
chr6_apd_hap1 4622290 1255870844 60 61
chr6_cox_hap2 4795371 1260570188 60 61
chr6_dbb_hap3 4610396 1265445497 60 61

不得不说GATK相当挑剔。

所以,到这里,再次运行命令行。
perl somatic.pl NA NA example/example_dataset/sequencing/SRR7246238_1.fastq.gz example/example_dataset/sequencing/SRR7246238_2.fastq.gz 32 hg19 /home/zxx/QBRC/geneome/hg19/hg19.fa /usr/lib/jvm/jdk1.8.0_181/bin/java human 1 /home/zxx/QBRC/disambiguate_pipeline

当然,又出了一堆的问题。
剩下的报错,放到下一个实验记录里解释。

这篇关于实验记录 |somatic.pl的运行2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/436547

相关文章

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

如何在运行时修改serialVersionUID

优质博文:IT-BLOG-CN 问题 我正在使用第三方库连接到外部系统,一切运行正常,但突然出现序列化错误 java.io.InvalidClassException: com.essbase.api.base.EssException; local class incompatible: stream classdesc serialVersionUID = 90314637791991

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d

win7+ii7+tomcat7运行javaWeb开发的程序

转载请注明出处:陈科肇 1.前提准备: 操作系统:windows 7 旗舰版   x64 JDK:jdk1.7.0_79_x64(安装目录:D:\JAVA\jdk1.7.0_79_x64) tomcat:32-bit64-bit Windows Service Installer(安装目录:D:\0tomcat7SerV) tomcat-connectors:tomcat-connect