PS-ZB转座子分析流程2-重新分析并总结

数据处理

数据质控
随机挑出九个序列进行比对,结果如下:
在这里插入图片描述所有序列前面的部分序列均完全相同,怀疑是插入的转座子序列,再随机挑选9个序列进行比对,结果如下:
在这里插入图片描述
结果相同,使用cutadapt将该段序列修剪。

nohup cutadapt -g GTGTCAAATACTTATTTTCCCCGCTGTA -o ps_fastpTrimmed.cutadapt.fq PS_fastpTrimmed.fastq &

在这里插入图片描述可以看到,大部分数据均经历了修剪,我们再随机选择部分数据进行比对,查看修剪情况。
在这里插入图片描述
结果表明修剪成功。

比对

bwa mem -t 32 ../../001.blastFORcgspy/human.ref.bwaindex/GCF_000001405.40_GRCh38.p14_genomic.fna 002.ps_fastpTrimmed.cutadapt.fq > 003.ps_fastpTrimmed.cutadapt.sam &

(这里遇到了一点小bug,使用nohup挂后台的时候,居然把处理的过程信息输入到了我的结果文件中,导致我后面将sam文件转换为bam文件的时候一直在报错,去掉nohup后重新运行程序bug解除,可恶可恶!)

去除表头

awk '!/@SQ/' 003.ps_fastpTrimmed.cutadapt.sam > 003.ps_fastpTrimmed.cutadapt.1.sam &

查看比对结果
在这里插入图片描述可以看到,一些数据的比对质量良好,但也有部分数据未能成功比对。

反向验证1

公司提供的结果中,总共有6107个插入位点,并且未对其支持的reads数进行质控,见下图
在这里插入图片描述前三列是插入位点的染色体以及物理位置,第四列是正负链信息,第五列是插入的转座子名称,第六列是插入位点支持reads数。

由于该数据中给出了插入位点的物理位置,我们可以根据给出的物理位置去验证是否存在对应的序列,可以使用bedtools工具的coverage功能统计给定的物理位置上覆盖的reads数。

数据预处理

首先,我们需要将比对结果的sam文件进行转换,使用samtools工具将比对结果的sam文件转换为bam文件

samtools view -bS 003.ps_fastpTrimmed.cutadapt.sam > 004.ps_fastpTrimmed.cutadapt.bam &

接着对bam文件进行排序

samtools sort 004.ps_fastpTrimmed.cutadapt.bam -o 005.psseq.sorted.bam &

然后,使用samtools的depth命令统计所有位点覆盖的reads数:

samtools depth 005.psseq.sorted.bam > 006.depth.txt &

公司的结果文件中,给的位点是以染色体号的形式命名的,而参考基因组是以染色体编码的形式命名的,所以需要进行替换。(为了方便,此步骤直接使用excel完成的,需要注意的是选择单元格匹配即可)
替换后,使用awk将位点的染色体号与物理位置合并,获得一个只有物理位置的结果文件(文件1),和一个基与比对文件生成的具有物理位置和reads数的文件(文件2)。(实现类似于excel中vlookup函数的功能)

#准备需要查找(第一列)并返回对应值(第二列)文件
awk '{print $1 "+"$2 , $3}' 006.psseq.depth.txt > 006.psseq.depth.1.txt
#准备待查找的文件(仅一列)
awk '{print $1 "+"$2}' ps_reducedIns.1.txt > ps_reducedIns.merged.txt
#可选项,不影响查找,但是排序后更加便于观察
sort -o 006.psseq.depth.1.sorted.txt -t $'\t' -k1,1 006.psseq.depth.1.txt

使用awk实现excel中的vlookup函数的功能。

awk 'FNR==NR {arr[$1] = $2; next} {print $0, arr[$1]}' 006.psseq.depth.1.txt ps_reducedIns.merged.txt > psseq.psresult.overlap.txt

观察结果
在这里插入图片描述
使用excel进行统计分析
在这里插入图片描述
在ps的6107个结果中,仅有183(2.9%)个位点能找到对应的reads数,在之前生成的depth文件中手动查找验证那些找不到reads数的位点用以核实是否代码是否有问题,结果表明:这些空值位点在depth文件中都找不到。

使用ZB的结果对PS的测序比对结果进行匹配,流程如上所属

#准备待查找的文件(仅一列)
awk '{print $1 "+"$2}' zb_reducedIns.1.txt > zb_reducedIns.merged.txt
awk 'FNR==NR {arr[$1] = $2; next} {print $0, arr[$1]}' 006.psseq.depth.1.txt zb_reducedIns.merged.txt > psseq.zbresult.overlap.txt

查看结果
在这里插入图片描述
居然很多都能找到对应的位点,使用excel统计一下
在142694个位点中,有21795(15.2%)个位点能够找到,提示PS和ZB的结果与测序文件结果给反了。继续进行多重验证

分析ZB的结果

观察ZB的测序结果
在这里插入图片描述
同样存在转座子序列,进行修剪

cutadapt -g TGCGCCTTATAGTGCGGAAAATACGGTA -o zb_fastpTrimmed.cutadapt.fq ../ZB_w_118_fastpTrimmed.fastq &

在这里插入图片描述
表明修剪成功
进行比对

bwa mem -t 32 ../../001.blastFORcgspy/human.ref.bwaindex/GCF_000001405.40_GRCh38.p14_genomic.fna zb_fastpTrimmed.cutadapt.fq > 003.zb_fastpTrimmed.cutadapt.sam &
samtools view -bS 003.zb_fastpTrimmed.cutadapt.sam > 004.zb_fastpTrimmed.cutadapt.bam &
samtools sort 004.zb_fastpTrimmed.cutadapt.bam -o 004.zbseq.sorted.bam &

查找

awk 'FNR==NR {arr[$1] = $2; next} {print $0, arr[$1]}' 006.zbseq.depth.merged.txt zb_reducedIns.merged.txt > zbseq.zbresult.overlap.txt &
awk 'FNR==NR {arr[$1] = $2; next} {print $0, arr[$1]}' 006.zbseq.depth.merged.txt ps_reducedIns.merged.txt > zbseq.psresult.overlap.txt &

查看结果
在公司给出的142694个ZB位点中,在ZB测序数据中仅能找到196个(0.13%)位点具有reads数支持。
而在公司给出的6107个PS位点中,在ZB测序数据中能找到2042个(33.4%)位点具有reads数支持。

反向验证2

由于反向验证1的结果提示PS和ZB的测序数据与给出的位点结果可能反了,使用bedtools的coverage功能直接调出该位点覆盖的reads数。

数据预处理

需要将公司给出的位点的结果的染色体号和物理位置信息提取出来,做成bed格式,用于bedtools数据处理。

bedtools coverage -a ps_reducedIns.1bp.txt -b 005.psseq.sorted.bam > psseq.psresult.readsnumber.bed &
bedtools coverage -a zb_reducedIns.1bp.txt -b 005.psseq.sorted.bam > psseq.zbresult.readsnumber.bed &

在这里插入图片描述
这里是公司给的ps位点对应的ps测序数据的reads结果,可以看到很多位点都没有对应的reads数覆盖。使用excel进行统计,发现在公司给出的6107个位点中,在ps测序数据中仅能找到191(3.1%)个位点具有覆盖的reads。与之前的结果类似。
在这里插入图片描述
这里是公司给的zb位点对应的ps测序数据的reads结果,可以看到reads数覆盖的位点明显变多。使用excel进行统计,发现在公司给出的142694个位点中,在ps测序数据中能找到42302(29.6%)个位点具有覆盖的reads。与之前的结果类似。

对ZB的测序数据开展类似处理
在公司的给出的6107个ps位点中,有2102(34.4%)个位点在zb测序数据中具有覆盖的reads,而在公司给出的142694个zb微电子红,有200(0.14%)个位点在zb测序数据中具有覆盖的reads,与反向验证1的结果类似。

由于怀疑是基因组版本不一样导致位点数的物理位置出现了变化,进而导致了这些位点找不到覆盖的reads数,尝试扩展位点附近的序列进行覆盖书统计。
先查看插入位点极其上下5bp的序列的覆盖情况。数据准备流程如前所述
在公司给出的6107个ps位点中,在ps测序数据中仅能找到212个(3.4%)位点具有覆盖的reads。而在公司给出的142694个zb位点中,在ps测序数据中能找到142518个(99.8%)位点具有覆盖的reads。
在公司给出的6107个ps位点中,在zb测序数据中能找到6105个(99.9)位点具有覆盖的reads。而在公司给出的142694个zb位点中,在zb测序数据中仅能找到230(0.16%)位点具有覆盖的reads。
以上结果表明,结合插入位点附近的位点用于查看,覆盖率明显上升(zbseq-psresult,psseq-zbresult),表明可能确实是由基因组版本导致插入位点的统计出现了微小差异,并且测序数据与对应的额结果给反了。于是,我们查询了原文给出的参考基因组版本,使用的UCSC数据中的参考基因组,稍后正向验证的时候下载UCSC数据库中的参考基因组进行正向分析

正向分析

正向分析使用统计比对上的reads的边缘位点的策略,由于sam文件仅给出了比对到基因组上的最左边碱基的物理位置,所以对于匹配到正脸的数据,取其最匹配上的第一个碱基的物理位置即可,而对于匹配到负链的数据,使用匹配上的第一个碱基的物理位置加上比对上的碱基数即可得出匹配到负链的实际插入位点的物理位置。分析流程如下:
接之前的比对结果

#去除表头
awk '!/@SQ/' 003.ps_fastpTrimmed.cutadapt.sam > 004.psseq.1.sam &
#去除首行
awk '!/@PG/' 004.psseq.1.sam > 005.psseq.2.sam &
#去除没有比对上的数据
awk '$4 != 0' 005.psseq.2.sam > 006.psseq.3.sam
#数据从42497873行变为了31422261,约22%的数据没有比对上#
#提取数据的前六行信息用于分析
awk '{print $1, $2, $3, $4, $5, $6}' 006.psseq.3.sam > 007.psseq.4.sam &

统计一下比对到±链的reads数量

awk '{count[$2]++} END {for (word in count) print word, count[word]}' 007.psseq.4.sam > 008.strandnumber &
0 8280752
16 23141011
2048 292
2064 206

分别提取比对到正链和负链的信息用于分析

#提取正链
awk '$2 == 0' 007.psseq.4.sam > 009.psseq.5.+.sam &
#提取负链
awk '$2 == 16' 007.psseq.4.sam > 009.psseq.5.-.sam &

统计位于正链的插入位点的数量

#将染色体号和物理位置连接起来,防止将不同染色体的相同物理位置统计到一起
awk '{print $1 , $2 , $3 "+" $4 , $5 ,$6}' 009.psseq.5.+.sam > 009.psseq.5.+.1.sam &
#统计插入位点的数量
awk '{count[$3]++} END {for (word in count) print word, count[word]}' 009.psseq.5.+.1.sam > 009.psseq.5.+.2.txt &
#去除reads数小于5的位点
awk '$2 > 4 {print}' 009.psseq.5.+.2.txt > 009.psseq.5.+.3.txt &

将结果比对到公司给的ps结果中,仅有2个位点有reads数
而在比对到公司给的zb结果中,有70个位点有reads数
数量实在太少,可能是之前的质控丢失了部分数据。

@SQ     SN:NC_000001.11 LN:248956422
@SQ     SN:NC_000002.12 LN:242193529
@SQ     SN:NC_000003.12 LN:198295559
@SQ     SN:NC_000004.12 LN:190214555
@SQ     SN:NC_000005.10 LN:181538259
@SQ     SN:NC_000006.12 LN:170805979
@SQ     SN:NC_000007.14 LN:159345973
@SQ     SN:NC_000008.11 LN:145138636
@SQ     SN:NC_000009.12 LN:138394717
@SQ     SN:NC_000010.11 LN:133797422
@SQ     SN:NC_000011.10 LN:135086622
@SQ     SN:NC_000012.12 LN:133275309
@SQ     SN:NC_000013.11 LN:114364328
@SQ     SN:NC_000014.9  LN:107043718
@SQ     SN:NC_000015.10 LN:101991189
@SQ     SN:NC_000016.10 LN:90338345
@SQ     SN:NC_000017.11 LN:83257441
@SQ     SN:NC_000018.10 LN:80373285
@SQ     SN:NC_000019.10 LN:58617616
@SQ     SN:NC_000020.11 LN:64444167
@SQ     SN:NC_000021.9  LN:46709983
@SQ     SN:NC_000022.11 LN:50818468
@SQ     SN:NC_000023.11 LN:156040895
@SQ     SN:NC_000024.10 LN:57227415
awk '{count[$7]++} END {for (word in count) print word, count[word]}' 002.readsNUMBER.ZB.bed > freq.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/560676.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OerOerlikonTCO1200欧瑞康LPCVD system操作使用说明

OerOerlikonTCO1200欧瑞康LPCVD system操作使用说明

常见的经典目标检测算法

目标检测是计算机视觉领域的一个核心任务,它涉及到识别图像中的物体并确定它们的位置。以下是一些常见的经典目标检测算法: R-CNN系列 R-CNN(Region-based Convolutional Neural Network)是一种用于目标检测的算法,它…

PyQt5开发的DSP信号仿真系统

PyQt5开发的DSP信号仿真系统 1、效果图 2、功能 具备的功能: 1、生成基础信号波形[正弦波,脉冲函数,阶跃函数,斜坡函数, 锯齿波,方波,常见非周期波形,sinc函数] 2、各基础波形可以叠加 3、可展示FFT频谱、信号卷积、功率频谱密度估计 4、可以读取音频信号及分析 5、各…

第23天:安全开发-PHP应用后台模块SessionCookieToken身份验证唯一性

第二十三天 一、PHP后台身份验证模块实现 二、Cookie&Session技术&差异 1.生成cookie的原理图过程:见上图 客户端向服务器发送HTTP请求。服务器检查请求头中是否包含cookie信息。如果请求头中包含cookie信息,则服务器使用该cookie来识别客户端…

Android Studio Iguana | 2023.2.1配置优化

一. 前言 本篇文章记录最新版本的Android Studio的配置优化,写这篇文章的是由于电脑中的AS工具更新版本覆盖安装后,AS会经常卡死,Debug的时候也经常莫名其妙的断掉,非常影响工作效率,所以重新把配置环境整理一下&#…

保姆级教程!QRCNN-BiLSTM一键实现多变量回归区间预测!区间预测全家桶再更新!

​ 声明:文章是从本人公众号中复制而来,因此,想最新最快了解各类智能优化算法及其改进的朋友,可关注我的公众号:强盛机器学习,不定期会有很多免费代码分享~ 今天对我们之前推出的区间预测全家桶进行…

详解数据在内存中的存储

系列文章目录 第一章 C语言基础知识 第二章 C语言控制语句 第三章 C语言函数详解 第四章 C语言数组详解 第五章 C语言操作符详解 第六章 C语言指针详解 第七章 C语言结构体详解 文章目录 1. 数据类型 1.1 基本数据类型 1.2 派生数据类型 2. 整形在内存中的存储 2.1 …

AOP基础-动态代理

文章目录 1.动态代理1.需求分析2.动态代理的核心3.代码实例1.Vehicle.java2.Car.java3.Ship.java4.VehicleProxyProvider.java(动态代理模板)5.测试使用 2.动态代理深入—横切关注点1.需求分析2.四个横切关注点3.代码实例1.Cal.java2.CalImpl.java3.VehicleProxyProvider02.jav…

第 2 章:FFmpeg简介

2.1 历史 历史 一些相关术语介绍: 容器(Container)格式:一种文件封装格式,里边主要包含了流,一般会使用一个特定的后缀名标识,例如.mov、.avi、.wav等。流 (Stream)&am…

大语言模型隐私防泄漏:差分隐私、参数高效化

大语言模型隐私防泄漏:差分隐私、参数高效化 写在最前面题目6:大语言模型隐私防泄漏Differentially Private Fine-tuning of Language Models其他初步和之前的基线微调模型1微调模型2通过低秩自适应进行微调( 实例化元框架1) 在隐…

pta L1-063 吃鱼还是吃肉

L1-063 吃鱼还是吃肉 分数 10 全屏浏览 切换布局 作者 陈越 单位 浙江大学 国家给出了 8 岁男宝宝的标准身高为 130 厘米、标准体重为 27 公斤;8 岁女宝宝的标准身高为 129 厘米、标准体重为 25 公斤。 现在你要根据小宝宝的身高体重,给出补充营养的…

浅谈 刷算法题时遇到运行超时异常 的解决办法

文章目录 一、背景介绍二、解决办法2.1 C/C 语言2.2 Java 语言2.2.1 ACM模式下 Java的I/O原理 三、模板详情 一、背景介绍 最近在牛客、leetcode 刷算法题时发现一个奇怪的问题,明明解题思路、所用算法与题解一致,并且在本地IDE运行是通过的&#xff0c…

【HTML】H5新增元素记录

H5 新增元素特性 1. 语义化标签 语义化标签的好处: 对于浏览器来说,标签不够语义化对于搜索引擎来说,不利于SEO的优化 语义化标签: header:头部元素nav:导航section:定义文档某个区域的元素article:内容元素aside…

深度学习:Pytorch分布式训练

深度学习:Pytorch分布式训练 简介模型并行数据并行参考文献 简介 在深度学习领域,模型越来越庞大、数据量不断增加,训练这些大型模型越来越耗时。通过在多个GPU或多个节点上并行地训练模型,我们可以显著减少训练时间。此外&#…

python学习 | 我有两个dataframe,想通过某1列进行匹配

需求 我有两个dataframe,第1个dataframe A的columns是[‘id’, ‘A’, ‘B’, ‘C’],第2个dataframe B的columns是[‘id’, ‘1’, ‘2’, ‘3’],其中’id’列A是B的子集,我想通过’id’列进行匹配,把A给扩充成[‘i…

js 特定索引下拆分字符串并组建成新的字符串数据

要在特定索引处拆分字符串,请使用 slice 方法获取字符串的两个部分,例如 str.slice(0, index) 返回字符串的一部分,但不包括提供的索引,而 str.slice(index) 返回字符串的其余部分。 过程:我们创建一个可重用的变量&a…

「GO基础」目录

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

删除word中下划线的内容

当试卷的题目直接含答案,不利用我们刷题。这时如果能够把下划线的内容删掉,那么将有利于我们复习。 删除下划线内容的具体做法: ①按ctrl H ②点格式下面的字体 ③选择下划线线型中的_____ ④勾选使用通配符并在查找内容中输入"?&qu…

Linux 序列化、反序列化、实现网络版计算器

目录 一、序列化与反序列化 1、序列化(Serialization) 2、反序列化(Deserialization) 3、Linux环境中的应用实例 二、实现网络版计算器 Sock.hpp TcpServer.hpp Jsoncpp库 Protocol.hpp 类 Request 类 Response 辅助函…

SQLite数据库中JSON 函数和运算符(二十七)

返回:SQLite—系列文章目录 上一篇:维护SQLite的私有分支(二十六) 下一篇:SQLite—系列文章目录 ​1. 概述 默认情况下,SQLite 支持 29 个函数和 2 个运算符 处理 JSON 值。还有两个表值函数可用于分解 JSON 字…