生信教程 | 基于PSMC估计有效群体大小

2023-10-18 06:36

本文主要是介绍生信教程 | 基于PSMC估计有效群体大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

PSMC 模型使用单个个体的完整二倍体序列中的信息来推断种群规模变化的历史。它最初于 2011 年发布,现已成为基因组学领域非常流行的工具。在本教程中,我们将逐步完成为 PSMC 生成必要的输入数据的步骤,并在发布的猛犸象数据上运行它。

数据

Genome: https://www.ncbi.nlm.nih.gov/datasets/genome/GCF_000001905.1/

Bam: https://www.ebi.ac.uk/ena/browser/view/ERX935618

这些数据最初是从 Broad 研究所(大象参考基因组)和 ENA( bam 文件)下载的。如果您自己下载数据,则需要在开始之前使用 samtools 索引 fasta 文件和 BAM 文件。

请注意,对于此分析,我们从 BAM 文件开始,其中包含已映射到参考基因组(在本例中为大象)的读数。要在您自己的数据上运行 PSMC,您需要首先将您的读数映射到参考基因组,然后再调整这些脚本。

Install


conda create -n psmc  -c bioconda psmc samtools bcftools

conda activate psmc

索引数据

# genome
samtools faidx loxAfr4.fa 

# bam
samtools index P964.bam

Call consensus 序列

从映射读数开始,第一步是生成 FASTQ 格式的一致序列。为此,我们将使用 samtools/bcftools 工具,遵循论文中描述的方法。

生成consensus序列背后的基本思想是首先使用 samtools mpileup 获取映射读取并生成 VCF 文件。然后,bcftools 使用原始共识调用模型生成consensus序列,并通过 vcfutils.pl 转换为 fastq(带有一些额外的过滤)。

  • 由于 Palkopoulou 等人仅分析了常染色体,因此我们将做同样的事情,依赖于参考文献中 27 个常染色体被命名为 chr1 - chr27 。
samtools mpileup -Q 30 -q 30 -u -v -f loxAfr4.fa -r $CHR P964.bam | bcftools call -c |  \
vcfutils.pl vcf2fq -d 5 -D 34 -Q 30 > P964.$CHR.fq

# $CHR: chr1 - chr27

这将对齐的 bam 文件和参考基因组作为输入,使用 samtools 生成 mpileup,使用 bcftools call consensus序列,然后过滤并将共有序列转换为 fastq 格式,将每个染色体的结果写入单独的 fastq 文件。一些参数解释:

  1. samtools:

    • mpileup中的-Q和-q分别确定baseQ和mapQ的截止值
    • -v 告诉 mpileup 生成 vcf 输出,-u 表示应该解压缩
    • -f 是使用的参考fasta(需要建立索引)
    • -r 是调用 mpileup 的区域(在本例中,是基于数组任务 id 的特定染色体)
    • P964.bam是要使用的bam文件
  2. bcftools:

    • call -c 使用原始调用方法从 mpileup call consensus 序列
  3. vcfutils.pl:

    • -d 5 和 -d 34 确定允许 vcf2fq 的最小和最大覆盖范围,该范围之外的任何内容都会被过滤
    • -Q 30 将均方根映射质量最小值设置为 30

PSMC

PSMC 使用 consensus fastq 文件,并推断种群规模的历史。尽管需要多种参数来控制模型拟合的细节,但我们将遵循 Palkopoulou 等人的做法并使用默认值。

我们需要做的第一件事是将所有单染色体 fastq 文件合并到一个consensus序列中,我们将使用 unix 工具 cat 来完成此操作。

cat P964.chr*.fq > P964.consensus.fq

现在我们需要将此 fastq 文件转换为 PSMC 的输入格式:

$PSMC_HOME/utils/fq2psmcfa P964.consensus.fq > P964.psmcfa

然后我们可以使用默认选项运行 PSMC——但请注意,我们指定 -p 参数,因为论文中报告的默认值与当前默认值不同。

psmc -p "4+25*2+4+6" -o P964.psmc P964.psmcfa

最后,我们使用论文中报告的每代突变率 -u 和以年为单位的世代时间 -g 绘制 PSMC 图。因为论文没有给出他们如何绘制绘图的确切参数,所以这可能看起来与图有点不同,但它会非常接近。

$PSMC_HOME/utils/psmc_plot.pl -u 3.83e-08 -g 31 -p P964_plot P964.psmc

本文由 mdnice 多平台发布

这篇关于生信教程 | 基于PSMC估计有效群体大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

一文教你PyCharm如何有效地添加源与库

《一文教你PyCharm如何有效地添加源与库》在使用PyCharm进行Python开发的时候,很多时候我们需要添加库或者设置源,下面我们就来和大家详细介绍一下如何在PyCharm中添加源和库吧... 在使用PyCharm进行python开发的时候,很多时候我们需要添加库或者设置源。这些操作可以帮助我们更方便

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统