码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 生信分析进阶2 - 利用GC含量的Loess回归矫正reads数量


    在NGS数据比对后,需要矫正GC偏好引起的reads数量误差可用loess回归算法,使用R语言对封装的loess算法实现。

    在NIPT中,GC矫正对检测结果准确性非常重要,具体研究参考以下文章。

    Noninvasive Prenatal Diagnosis of Fetal Trisomy 18 and Trisomy 13 by Maternal Plasma DNA Sequencing
    链接地址:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3130771/
    在这里插入图片描述窗口划分可参考文章:

    生信软件8 - bedtools进行窗口划分、窗口GC含量、窗口测序深度和窗口SNP统计

    获取参考基因组大小

    以hg19参考基因组为例。

    # 安装python库
    pip install pyfaidx
    
    # 保留chr1-chr22 chrX chrY
    faidx reference/hg19.fasta -i chromsizes|grep -E -v '_|chrM' > hg19.genome.size
    
    

    hg19.genome.size

    划分基因组窗口

    以1000kb划分为例。

    bedtools makewindows -g hg19.genome.size -w 1000000 > hg19.1000kb.bed
    

    hg19.1000kb.bed

    划分窗口

    bedtools nuc -fi /reference/hg19.fasta -bed hg19.1000kb.bed|cut -f 1-3,5 > hg19.1000kb.gc.bed
    
    

    hg19.1000kb.gc.bed

    统计窗口reads和GC含量

    bedtools coverage -a hg19.1000kb.bed -b sample.sorted.bam > sample.count
    

    sample.count

    整理数据

    paste <(grep -v '#' hg19.1000kb.gc.bed) <(cut -f4 sample.count)|sed '1i chr\tstart\tend\tGC\treads' > sample.gc.count
    
    # 对上面linux命令进行拆分,上面代码过于复杂,运行可能会报错
    ####################################################
    # 过滤header
    grep -v '#' hg19.1000kb.gc.bed > hg19.1000kb.gc.bed.tmp
    
    # 获取第4列 reads数量, 并删除首行header
    cut -f4 sample.count|sed '1d' > sample.count.tmp
    
    # 拼接2个tmp文件,并插入header
    paste hg19.1000kb.gc.bed.tmp sample.count.tmp|sed '1i chr\tstart\tend\tGC\treads' > sample.gc.count
    
    rm *tmp
    
    

    sample.gc.count

    利用GC含量的Loess回归矫正reads数量

    R语言实现。

    # loess_gc_correct.R
    # Useage: Rscript loess_gc_correct.R /path/sample.gc.count /path/sample.gc.corrected.count
    
    args=commandArgs(T)
    # 输入文件路径
    gc.reads.file <- args[1]
    # 输出文件路径
    gc.reads.corrected.file <- args[2]
    
    # 读取输入文件
    raw.data <- read.table(gc.reads.file, sep='\t', head=TRUE)
    
    # loess regression 进行GC矫正reads数量
    gc.count.loess <- loess(reads~GC,
                           data = raw.data,
                           control = loess.control(surface = "direct"), degree=2) 
    
    prediction <- predict(gc.count.loess, raw.data$GC)
    
    raw.data$corrected_reads <- as.integer(prediction)
    
    # 保存
    write.table(raw.data, file = gc.reads.corrected.file,
                sep = '\t', quote = FALSE)
    
    

    矫正后结果

    矫正后文件

    生信分析进阶文章合辑【每周更新至少一次】

    生信分析进阶1 - HLA分析的HLA区域reads提取及bam转换fastq

  • 相关阅读:
    laravel框架介绍(一) 开发环境配置
    追求技术之美:云计算开发者的自我修养
    基于javaweb+mysql的教务选课管理系统(管理员、教师、学生)
    win10换ubuntu
    Mybiosource丨Mybiosource重组病毒果蝇蛋白wntless方案
    Python 打印素数
    高等数学(第七版)同济大学 总习题四(前半部分) 个人解答
    AI | 第6章 深度学习 TensorFlow2 使用 keras 构建神经网络
    在家怎么做芋圆 芋圆的做法
    编程题练习@9-7
  • 原文地址:https://blog.csdn.net/LittleComputerRobot/article/details/138616670
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号