跟着NC学cfDNA全基因组片段化丰度谱分析

news2024/11/15 17:57:17

继续我们的跟着NC学系列,前面分享的是关于16S扩增子测序和宏基因组数据分析的。考虑到我们有许多小伙伴是做人类基因组方面的,这次分享一篇癌症早筛方面的,血液DELFI全基因组片段化丰度谱检测的分析框架。题目是:Detection and characterization of lung cancer using cell-free DNA fragmentomes。

文章虽然不是特别新,发表于2021年, 可代码和数据公开地相当彻底,甚至包括建模代码和模型,适合我们学习。文章主要内容是研究者对LUCAS发现队列(365位受试者)血液样本cfDNA进行低深度全基因组测序,计算获得全基因组片段化丰度谱,并且基于此利用机器学习构建了DELFI肺癌诊断模型并且进行交叉验证。将独立验证队列(431位受试者)用于评估肺癌诊断模型的表现,证明了DELFI在早期肺癌的诊断作用。研究思路如下图所示:

关于文章内容的解读方面,已经有很多啦,这里不再重复,大家可以搜索,比如这个公众号的推文,算法原理方面解读地也比较清楚啦,这里重点分享一下分析代码方面的。

repo总体结构

此workflowr中有4个文件夹。

  • (1) analysis -包含生成论文每个图形所需的代码。

  • (2) code -这包含rpcr和rLucas(分析中广泛使用的两个包)、一些具有必要功能的单独r脚本,以及与模型创建有关的4个文件夹。

    对3个队列的模型进行了训练和评估:a.LUCAS队列(158例非癌症,129例癌症)。b.排除既往癌症的LUCAS队列。c.LUCAS队列不包括以前的癌症,仅限于50-80岁的吸烟者。

    MODEL_CODE具有训练每个队列上的模型以及执行来自第一个队列的模型的外部验证所需的代码。Models_c1、Models_c2和Models_c3包含训练好的模型。对于前两个队列,培训了两个模型架构,对于第三个队列,只训练了一个。

  • (3) data -这包含用于训练模型和生成图形的原始数据。

  • (4) docs -包含分析中的markdown和html,以及生成的图形。

这个存储库可以在Github上获得,可以作为一个workflowr运行,以生成一个链接了所有代码和图形的网页。

代码概览

前处理

代码主要集中在code/preprocessing文件夹。
首先precess.sh脚本调用以下脚本,这些脚本执行以下操作:

  • fastp.sh --将FASTQ使用fastp质控。
  • align.sh --bowtie2和samtools生成bam文件。
  • post_alignment.sh --sambamba和samtools生成bed文件。
  • bed_to_granges.sh --将前面步骤生成的bed文件转换为R中的Granges。
  • gc_count ts.sh --为每个GC层的片段计数创建一个表。用于在片段级进行GC校正。
  • bin_right ted.sh --为每个样本创建bin级别数据。

然后,分别运行getZcore res.shgetCoverage.sh以生成z-Score和Coverage特性。
最后,FeatureMatrix.sh生成可用于后续建模的最终特征矩阵。
create-training-set.r和create-testing-set.r和生成完整的特征矩阵,包括临床数据,用于训练和验证本文使用的模型。
必须从GitHub安装以下库:
看起来是不同的测序仪也需要相应的校正,可见研究还是很严谨的。
用于目标GC分布的PlamaToolsNovaseq.hg19和用于noveseq参考样品的bins(未在论文中使用)。
https://github.com/cancer-genomics/PlasmaToolsNovaseq.hg19。
用于目标GC分布的PlamaToolsHiseq.hg19和用于HiSeq参考样品的bins(使用)。
https://github.com/cancer-genomics/PlasmaToolsHiseq.hg19
precess.shfastp.sh为例来欣赏下代码,很规范和整洁,qsub任务提交,注释清晰,值得我们好好学习。想要复现文章的结果,基本上只需要修改下软件和参考文件的路径即可。
首先来看precess.sh

#!/bin/bash
#$ -cwd
#$ -j y
#$ -l mem_free=1G
#$ -l h_vmem=1G
# Job resource option: max runtime
#$ -l h_rt=96:00:00
qsub fastp.sh
qsub -hold_jid_ad fastp.sh align.sh
qsub -hold_jid_ad align.sh post_alignment.sh
qsub -hold_jid_ad post_alignment.sh,align.sh bed_to_granges.sh
qsub -hold_jid_ad post_alignment.sh,bed_to_granges.sh,align.sh gc_counts.sh
qsub -hold_jid post_alignment.sh,bed_to_granges.sh,gc_counts.sh,align.sh bin_corrected.sh

再来看下fasp.sh:

#!/bin/bash
#$ -cwd
#$ -j y
#$ -l h_fsize=100G
#$ -l mem_free=10G
#$ -l h_vmem=10G
#$ -l h_rt=96:00:00
## #$ -pe local 8
#$ -t 1-41

module load bowtie2 # 使用了module,感兴趣的同学可以搜索相关教程进行学习
module load samtools

PATH="/users/scristia/.linuxbrew/bin:$PATH"
FASTP=/users/scristia/fastp
CORES=1 ##CORES=8

umask g+w

# Inputs,文件夹设置很洁癖
fqdir="../fastq"
outdir="../bam"
beddir="../bed"
scratchdir="tmp"
outdirfastp=$outdir/fastp

# Main
mkdir -p $outdir $outdir/dup_metrics $outdir/fastp $beddir $scratchdir

samplepath=$(find $fqdir -maxdepth 1 -name "*.fastq.gz" | \
    sed 's/.\{12\}$//' | \
    sort -u | \
    head -n $SGE_TASK_ID | \
    tail -n 1)
sample=$(basename $samplepath | awk '{ gsub("_WGS", "") ; print $0 }')

echo $sample

read1fq=$samplepath\_R1.fastq.gz
read2fq=$samplepath\_R2.fastq.gz

# Trimming with fastp
echo Trimming $sample with fastp
read1fqpaired=$scratchdir/$sample.paired.R1.fastq.gz
read2fqpaired=$scratchdir/$sample.paired.R2.fastq.gz

if [ -f $read1fqpaired ]; then
   echo Sample $sample has been processed. Exiting.
   exit 0
fi

json=$outdirfastp/$sample.json
html=$outdirfastp/$sample.html
$FASTP -i $read1fq -I $read2fq -o $read1fqpaired -O $read2fqpaired \
    -Q -z 1 --detect_adapter_for_pe -j $json -h $html -w $CORES

建模

也是非常详尽的代码,一步一步完整公开,这里就不再列出了,感兴趣的同学可以直接阅读原文查看repo的code/model_code/文件夹。当然,作者2019年也发表过一篇NC,代码公开也很完整,这里也放在这(文末的参考4和5),供大家参考对比。

分享就先到这里啦,学起来呀!虽然人工智能时代强势来临,这对于我们来说可能是更多地学习,用好AI,如果不想躺平的话,加油各位!

附:

1.workflowr简介

R中有组织的 + 可重现 + 可共享的数据科学框架,Workflowr结合了编程(knitr和rmarkdown)和版本控制(通过git2r的Git)来生成一个包含时间戳记,版本控制和文档化的结果的网页。任何R用户都可以快速轻松地使用它。其设计的初衷是助研究人员以促进有效的进行项目管理,可重复性的分析,同时进行协作和对结果进行共享
workflowr示例网页

2. 一个缺少文件的处理

在学习使用的过程中,发现code/preprocessing/01-bed-to-granges.r中缺少cytosine_ref.rds这么个文件,如果对基因组不太熟悉可能不太好解决,有帅哥提出了这个issue。作者也贴心地给出了解决方案和原因(文件体积太大,有3G), 附在这里:

# repo里多数包是用bioconductor安装的
library(GenomicRanges)
library(Biostrings)
library(BSgenome.Hsapiens.UCSC.hg19)
library(Homo.sapiens)
cytosines <- vmatchPattern("C", Hsapiens)
saveRDS(cytosines, 'cytosine_ref.rds')

参考资料:

[1] Mathios, D. et al. Detection and characterization of lung cancer using cell-free DNA fragmentomes. Nat Commun 12, 5060, doi:10.1038/s41467-021-24994-w (2021).
[2] https://www.sohu.com/a/575968290_100148274?qq-pf-to=pcqq.group
[3] https://github.com/cancer-genomics/reproduce_lucas_wflow
[4] Ulz, P. et al. Inference of transcription factor binding from cell-free DNA enables tumor subtype prediction and early detection. Nat Commun 10, 4666, doi:10.1038/s41467-019-12714-4 (2019).
[5] https://github.com/cancer-genomics/delfi_scripts

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

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

相关文章

Fast-RCNN网络详解

文章目录 一、前言二、Fast-RCNN原理步骤2.1候选区域的生成2.2.ROI Pooling层2.3.分类器2.4.边界框的预测2.5.损失计算2.5.1.分类损失2.5.2.边界框回归损失 三、总结参考博客与视频、代码 一、前言 前面学习了SS算法、R-CNN网络&#xff0c;接下来继续学习Fast-RCNN网络。 本…

KingbaseES V8R3 备份恢复系列之 -- sys_rman备份过程分析

​ 案例说明&#xff1a; 本案例通过对KingbaseES sys_rman物理备份过程的详细描述&#xff0c;有助于在执行sys_rman过程中发生故障的分析。适用版本&#xff1a; KingbaseES V8R3 一、sys_rman执行过程简介 1. 调用select sys_start_backup()开始备份&#xff0c;sys_start_b…

028python-配置文件

配置文件&#xff1a;以properties 、config、ini、log4j等结尾的都是配置文件&#xff0c;里面的参数改一下&#xff0c;项目就可以按照不同的方式执行出来&#xff1b; configparser 可以去读取配置信息&#xff0c;configparser里面的类模块ConfigParser&#xff1b;配置文件…

SpringMVC 笔记

1. SpringMVC 简介 1.1 什么是MVC MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M&#xff1a;Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为实体类Bean&#xff…

Linux安装Docker(这应该是你看过的最简洁的安装教程)

Docker是一种开源的容器化平台&#xff0c;可以将应用程序及其依赖项打包成一个可移植的容器&#xff0c;以便在不同的环境中运行。Docker的核心是Docker引擎&#xff0c;它可以自动化应用程序的部署、扩展和管理&#xff0c;同时还提供了一个开放的API&#xff0c;可以与其他工…

一文带你了解MySQL之连接原理

前言 本文章收录在MySQL性能优化原理实战专栏&#xff0c;点击此处查看更多优质内容。 搞数据库一个避不开的概念就是Join&#xff0c;翻译成中⽂就是连接。相信很多小伙伴初学连接的时候有些一脸懵&#xff0c;理解了连接的语义之后又可能不明白各个表中的记录到底是怎么连起…

用iOS版ChatGPT第一步:手把手带你注册美区Apple ID!(史上最简单)

大家好&#xff0c;我是鸟哥。 前两天ChatGPT官方毫无征兆的上线了iOS版&#xff0c;和网页版的相比功能和响应速度都提升了N个档次&#xff0c;具体看这篇文章&#xff1a;iOS版ChatGPT突然上线&#xff01;Plus用户笑疯了&#xff01; 但是呢&#xff0c;目前iOS版只在美区…

玩客云刷NAS

测试路由器支持IPV6 参考 这里 我用的是TPlink WDR7660 支持IPV6 主要设置桥模式 玩客云刷写固件 参考 这里 还有这里 玩客云固定IP 参考这里 sudo armbian-config 选择Network 选择有线网络->ip 选择static 然后根据自己情况进行设置 点击OK即可 更新国内源 参考这里 证书…

那就别担心了(DFS优化)30行代码简单易懂

下图转自“英式没品笑话百科”的新浪微博 —— 所以无论有没有遇到难题&#xff0c;其实都不用担心。 博主将这种逻辑推演称为“逻辑自洽”&#xff0c;即从某个命题出发的所有推理路径都会将结论引导到同一个最终命题&#xff08;开玩笑的&#xff0c;千万别以为这是真正的逻辑…

最简单的 goland package 教程包括自定义包的使用

一、Hello World项目 一切从最简单开始&#xff1a; mkdir myappcd myappgo mod init myapp // myapp是主项目名 这行命令将生成一个go.mod文件&#xff0c;这个文件会记录所有的包的依赖关系&#xff0c;一个空的go.mod只有项目名称和go版本号. nano main.go : package mai…

VMware虚拟机三种网络模式详解之NAT(地址转换模式)

VMware虚拟机三种网络模式详解 NAT&#xff08;地址转换模式&#xff09; 二、NAT&#xff08;地址转换模式&#xff09; 刚刚我们说到&#xff0c;如果你的网络ip资源紧缺&#xff0c;但是你又希望你的虚拟机能够联网&#xff0c;这时候NAT模式是最好的选择。NAT模式借助虚拟…

[组合数学]母函数与递推关系

文章目录 母函数---解决计数组合 球相同 盒子不同 不能是空 C n − 1 m − 1 \quad C_{n-1}^{m-1} Cn−1m−1​数的拆分 递推关系常系数线性齐次递推关系常系数线性非齐次递推关系汉诺塔递推关系 母函数—解决计数 普母函数—组合问题 指母函数—排列问题 f(x) ∑ i 1 n a i…

阿里云服务器开放端口的正确方式(超详细新版教程)

阿里云服务器端口怎么打开&#xff1f;云服务器ECS端口在安全组中开启&#xff0c;轻量应用服务器端口在防火墙中打开&#xff0c;阿里云服务器网以80端口为例&#xff0c;来详细说下阿里云服务器端口开放图文教程&#xff0c;其他的端口如8080、3306、443、1433也是同样的方法…

VMware虚拟机三种网络模式详解之Host-Only(仅主机模式)

VMware虚拟机三种网络模式详解 Host-Only&#xff08;仅主机模式&#xff09; 三、Host-Only&#xff08;仅主机模式&#xff09; Host-Only模式其实就是NAT模式去除了虚拟NAT设备&#xff0c;然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机…

CAR-T细胞疗法在实体瘤研究中的挑战和新进展

什么是CAR-T? CAR-T是Chimeric Antigen Receptor T-cell&#xff08;嵌合抗原受体T细胞&#xff09;的缩写。它是通过将人体自身的T细胞进行基因改造&#xff0c;使其具有针对肿瘤细胞的抗原特异性&#xff0c;从而增强免疫系统对肿瘤细胞的攻击能力。CAR-T治疗的过程&#xf…

OJ练习第107题——二叉搜索子树的最大键值和

二叉搜索子树的最大键值和 力扣链接&#xff1a;1373. 二叉搜索子树的最大键值和 题目描述 给你一棵以 root 为根的 二叉树 &#xff0c;请你返回 任意 二叉搜索子树的最大键值和。 二叉搜索树的定义如下&#xff1a; 任意节点的左子树中的键值都 小于 此节点的键值。 任意…

SpringBoot——IOC与AOP

文章目录 IOC AOP一、 分层解耦1.1 IOC - 控制反转 详细1.2 DI - 依赖注入 详解 二、AOP2.1 了解2.2 快速入门 - AOP 开发步骤2.2.1 Maven依赖2.2.2 代码实现2.2.3 AOP 应用场景及优势 2.3 核心概念2.3.1 连接点 - JoinPoint2.3.2 AOP执行流程 2.4 通知2.4.1 通知类型2.4.2 通知…

百度贴吧视频发布软件视频教程(操作十分简单)

百度贴吧视频发布软件视频教程(操作十分简单) 软件有月卡、季卡、半年卡、年卡 【有时软件个别卡种售空&#xff0c;价格有上涨下降&#xff0c;关注获取当日价格】 我现在正在发帖的一个实时的一个画面&#xff0c;就是有很多同学问我就是喜羊羊今天还好跑吗&#xff0c;明天…

linux入门---通信的理解和匿名管道

这里写目录标题 为什么有通信通信的两个标准通信的本质管道通信的本质如何实现管道通信管道文件的特点管道的特征如何理解指令上的管道 为什么有通信 在我们的生活中有很多地方都需要用到通信&#xff0c;比如说出去玩要告诉伙伴们我们到哪了&#xff0c;做一件事的时候得通过…

MySQL基础(三十七)主从复制

1. 主从复制概述 1.1 如何提升数据库并发能力 此外&#xff0c;一般应用对数据库而言都是“ 读多写少 ”&#xff0c;也就说对数据库读取数据的压力比较大&#xff0c;有一个思路就是采用数据库集群的方案&#xff0c;做 主从架构 、进行 读写分离 &#xff0c;这样同样可以提…