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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mybatis(5)参数处理+语句查询

参数处理&#xff0b;语句查询 1、简单单个参数2、Map参数3、实体类参数4、多参数5、Param注解6、语句查询6.1 返回一个实体类对象6.2 返回多个实体类对象 List<>6.3 返回一个Map对象6.4 返回多个Map对象 List<Map>6.5 返回一个大Map6.6 结果映射6.6.1 使用resultM…

Windows10安装配置nodejs环境

一、下载 下载地址&#xff1a;https://nodejs.cn/download/ ​ 二、安装 1、找到node-v16.17.0-x64.msi安装包, 根据默认提示安装, 过程中间的弹窗不勾选 2、安装完成后, 打开powershell(管理员身份) ​ 3、命令行输入 node -v 和 npm -v 如下图所示则nodejs安装成功 ​ 三…

A27 STM32_HAL库函数 之 IRDA通用驱动 -- B -- 所有函数的介绍及使用

A27 STM32_HAL库函数 之 IRDA通用驱动 -- B -- 所有函数的介绍及使用 1 该驱动函数预览1.11 HAL_IRDA_DMAPause1.12 HAL_IRDA_DMAResume1.13 HAL_IRDA_DMAStop1.14 HAL_IRDA_Abort1.15 HAL_IRDA_AbortTransmit1.16 HAL_IRDA_AbortReceive1.17 HAL_IRDA_Abort_IT1.18 HAL_IRDA_A…

JavaScript Promise与async/await

Promise与async/await 为什么要使用他们如何使用.then() 和.catch()如何将相同的代码转换成sync和Await关键字 为什么要使用他们 前面学习了JavaScript的简单类型&#xff08;例如 数字和字符串&#xff09;&#xff0c;我们的代码会按顺序从上往下执行 console.log(1111); c…

并发编程之ConcurrentHashMap源码分析

1. 主源码逻辑 final V putVal(K key, V value, boolean onlyIfAbsent) {if (key null || value null) throw new NullPointerException();// 1.计算key对应的hashint hash spread(key.hashCode());int binCount 0;// 2. 进行自旋 for (Node<K,V>[] tab table;;) {N…

Win11启用HyperV

Win11启用HyperV 编辑一个txt&#xff0c;输入下面的指令 pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txtfor /f %%i in (findstr /i . hyper-v.txt 2^>nul) do dism /online /norestart /add-package:"%SystemRoot%…

PLC中连接外部现场设备和CPU的桥梁——输入/输出(I/O)模块

输入&#xff08;Input&#xff09;模块和输出&#xff08;Output&#xff09;模块简称为I/O模块&#xff0c;数字量&#xff08;Digital&#xff0c;又称为开关量&#xff09;输入模块和数字量输出模块简称为DI模块和DQ模块&#xff0c;模拟量&#xff08;Analog&#xff09;输…

第3章 数据

第3章 数据 学习笔记书后练习问题3问题7问题10问题11问题21 学习笔记 value value - 0; 通常用于将字符转换为其对应的整数值enum Jar_Type { CUP, PINT, QUART, HALF_GALLON, GALLON }; 这些符号名的实际值都是整型值&#xff0c;例如&#xff0c;CUP 是0&#xff0c;PINT …

Android安卓写入WIFI热点自动连接NDEF标签

本示例使用的发卡器&#xff1a;Android Linux RFID读写器NFC发卡器WEB可编程NDEF文本/网址/海报-淘宝网 (taobao.com) package com.usbreadertest;import android.os.Bundle; import android.view.MenuItem; import android.view.View; import android.widget.EditText; impo…

JAVA算法训练营打卡总结

目录 初心 目标 挑战 总结 初心 过完年后&#xff0c;突然发现自毕业后到现在已经工作将近两年&#xff0c;在这段时间中除了工作和备考软考外&#xff0c;也就是算法偶尔的刷几道&#xff0c;其它没有什么实际上的提升。 抱着现在的时间不去提升那以后就更没时间提升的心…

LabVIEW频谱感知实验平台

LabVIEW频谱感知实验平台 在当前的通信网络中&#xff0c;频谱资源的高效利用成为了研究和实践的重要方向之一。随着无线通信技术的快速发展&#xff0c;传统的固定频谱分配策略已无法满足日益增长的通信需求&#xff0c;因此&#xff0c;频谱感知技术作为认知无线电的核心组成…

Zed 捕获图像+测距

Zed 捕获图像测距 1. 导入相关库2. 相机初始化设置3. 获取中心点深度数据4. 计算中心点深度值5. 完整代码5. 实验效果 此代码基于官方代码基础上进行改写&#xff0c;主要是获取zed相机深度画面中心点的深度值&#xff0c;为yolo测距打基础。 1. 导入相关库 import pyzed.sl …

iview中基于upload源代码组件封装更为完善的上传组件

业务背景 最近接了一个用iview为基础搭建的vue项目&#xff0c;在开需求研讨会议的时候&#xff0c;我个人提了一个柑橘很合理且很常规的建议&#xff0c;upload上传文件支持同时上传多个并且可限制数量。当时想的是这不应该很正常吗&#xff0c;但是尴尬的是&#xff1a;只有…

【Proteus】蜂鸣器播放音乐

按键按一次&#xff0c;蜂鸣器响一次 &#xff0c;LCD1602同步。 #include <REGX52.H> #include <INTRINS.H>unsigned int keynum; sbit RSP3^0; //** sbit RWP3^1; //** sbit EP3^2; //** sbit buzzerP1^5; void delay(unsigned int n)//1ms {unsigned char a,…

SpringMVC接收参数方式讲解

PathVariable 该注解用于接收具有Restful风格的参数&#xff0c;如/api/v1/1001&#xff0c;最终userId的值为1001。 如下代码中&#xff0c;使用name属性可以指定GetMapping中的id名称与之对应&#xff0c;从而可以自定义参数名称userId&#xff0c;而不是使用默认名称id G…

虹科Pico汽车示波器 | 免拆诊断案例 | 2016款保时捷911 GT3 RS车发动机异响

一、故障现象 一辆2016款保时捷911 GT3 RS车&#xff0c;搭载4.0 L水平对置发动机&#xff08;型号为MA176&#xff09;&#xff0c;累计行驶里程约为4.2万km。车主反映&#xff0c;1星期前上过赛道&#xff0c;现在发动机有“哒哒”异响。 二、故障诊断 接车后试车&#xff…

51.基于SpringBoot + Vue实现的前后端分离-校园志愿者管理系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用SpringBoot Vue框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SpringBoot Vue技术的校园志愿者管理系统设计与实现管理工…

正则表达式中 “$” 并不是表示 “字符串结束”

△△请给“Python猫”加星标 &#xff0c;以免错过文章推送 作者&#xff1a;Seth Larson 译者&#xff1a;豌豆花下猫Python猫 英文&#xff1a;Regex character “$” doesnt mean “end-of-string” 转载请保留作者及译者信息&#xff01; 这篇文章写一写我最近在用 Python …

C++ 内存分区管理

一、栈区&#xff08;Stack&#xff09; 栈区用来存储函数的参数值、局部变量的值等数据。栈区是自动分配和释放的&#xff0c;函数执行时会在栈区分配空间&#xff0c;函数执行结束时会自动释放这些空间。栈区的数据是连续分配的&#xff0c;由系统自动管理。 注意事项&…

普通人赚钱途径大盘点:从搬砖到玩转智慧,财富之路任你探索

在生活的大舞台上&#xff0c;每个人都在以自己的方式演绎着赚钱的故事。作为普通人&#xff0c;我们或许没有显赫的财富背景&#xff0c;但赚钱的途径却是多种多样&#xff0c;等待我们去发掘。今天&#xff0c;就让我来为大家盘点一下普通人赚钱的常见途径&#xff0c;看看哪…