拿到snp的rawdata后如何使用GATK进行筛选(GATK硬筛选文档翻译)

news2024/10/12 18:16:36

这篇文档旨在提供一些关于我们通常推荐的硬性过滤逻辑的见解,作为 VQSR(我们通常推荐用于过滤生殖系短变异的方法)的替代方法。希望这篇指南能够帮助您适应这些推荐,或者开发出适用于与我们常用数据集显著不同的数据集的新过滤方法。

需要注意的是,本文中描述的注释是针对在群体水平上调用的样本,用以过滤掉那些不可信赖的数据位点,即使使用 VQSR,过滤的也是变异位点,而不是单个样本的数据。

有关如何实际应用硬性过滤的说明,请参阅 JEXL 过滤表达式和 SelectVariants 及 VariantFiltration 工具文档。

目录

  1. 概述
  2. 可视化注释值的分布
  3. QualByDepth(QD)
  4. FisherStrand(FS)
  5. StrandOddsRatio(SOR)
  6. RMSMappingQuality(MQ)
  7. MappingQualityRankSumTest(MQRankSum)
  8. ReadPosRankSumTest(ReadPosRankSum)

1. 概述

硬性过滤是指为一个或多个注释选择特定的阈值,并剔除任何注释值超出该阈值的变异。注释是指描述每个变异的属性或统计信息,例如该变异位点周围的序列上下文如何、有多少读取覆盖了该位点、每个等位基因有多少读取覆盖、前向与反向方向上读取的比例等。

这种方法的局限性在于,它迫使我们单独考虑每个注释维度,最终可能因为一个注释表现不好而丢弃好的变异,或者为了保留好的变异而保留不好的变异。

相比之下,VQSR 更加强大,因为它使用机器学习算法从数据中学习出好变异(真阳性)和坏变异(假阳性)的注释特征。这使得我们能够根据不同维度上的聚类情况筛选变异,摆脱单一维度阈值的限制。

然而,这种方法需要大量变异和高质量的已知变异资源。对于使用小型基因面板或非模式生物的研究人员来说,这可能无法实现,因此只能依赖硬性过滤。

2. 可视化注释值的分布

一种帮助理解硬性过滤的方法是可视化特定管线调用出的真集(truth set)中的注释值分布。这些分布由管线方法学和序列数据的物理特性共同塑造;因此,对于某种数据生成技术和分析管线的组合,您可以根据真集的分布推导出过滤阈值。

可视化数据的来源

我们对一个完整基因组的三重体(样本 NA12878、NA12891 和 NA12892,之前已预处理)进行了变异调用,使用的是 HaplotypeCaller 的 GVCF 模式,生成了每个样本的 GVCF 文件。然后,我们使用 GenotypeGVCFs 对这些 GVCF 进行了联合调用,生成了三重体的未过滤 VCF 集合。最后,我们对三重体 VCF 运行了 VQSR,得到过滤后的集合。我们将通过的变异视为真变异,而过滤掉的变异视为假变异。注意,这个过程也可以通过使用 NA12878 的 Genome in a Bottle 真集作为资源对原始集合进行注释来实现(尽管结果不完全相同,但足够相似)。

接着,我们使用 VariantsToTable 提取了所有调用的注释值,并将其加载到 RStudio 进行绘图。

绘图方法和解释说明

我们为六个推荐的注释绘制了图,这些注释通常具有高度信息性:QD、FS、SOR、MQ、MQRankSum 和 ReadPosRankSum。同样的原则适用于 GATK 工具生成的大多数其他注释。

所有显示的图表都是使用 R 中的 ggplot2 库生成的密度图。x 轴是注释值,y 轴是密度值。密度图下的面积表示观察到注释值的概率。因此,图表下的总面积等于 1。如果您想知道在 0 到 1 之间观察到注释值的概率,则需要计算该区间下曲线下的面积。

简而言之,这些图显示了对于特定的变异集,注释值的分布是什么样的。需要注意的是,当我们在同一图表上比较两个或多个变异集时,需要记住它们包含的变异数量可能非常不同,因此在分布中某一部分的变异数量是不可比的;只有它们的比例是可比的。

3. QualByDepth (QD)

1. 什么是 QD?

QD 是一个注释,表示变异的置信度(从 QUAL 字段得出)除以非纯合参考(non-hom-ref)样本的未过滤深度。它的作用是对变异的质量进行归一化,避免由于深度覆盖过高而导致的置信度膨胀

简单来说,QD 是对变异质量进行调整,以避免高覆盖率的数据人为增加变异的置信度。比直接使用 QUAL 或 DP 更好,因为它考虑了数据覆盖的变化情况。

2. 为什么要过滤 QD 低于 2 的变异?

在硬性过滤中,常规推荐是过滤掉 QD 低于 2 的变异。让我们来看看原因:

QD 值的分布:

对于未经过滤的变异,QD 值可以在 0 到 40 之间分布。大多数变异的 QD 值分布在两个峰之间:大约在 QD = 12 和 QD = 32。这两个峰分别对应于在调用的样本中,异质性(杂合子,heterozygous)和纯合变异(homozygous-variant)的变异。这是因为纯合变异的样本提供的支持变异的读取数是杂合变异样本的两倍。

在分布的左边,可以看到 QD 在 0 到 5 之间的“肩部”区域。低 QD 值表明该变异位点可能存在质量问题。

过滤 QD 小于 2 的原因:

我们看到,VQSR(变异质量评分再校正)过滤掉的变异大多集中在 QD 低于 5 的区域。这意味着这些变异在数据中表现出较低的置信度或被认为是伪影。通常,建议使用 QD = 2 作为硬性过滤的阈值,以剔除质量较差的变异。虽然有些变异的 QD 值低于 2,但仍可能通过 VQSR,因此我们需要在硬性过滤中做出权衡。

3. 如何解读 QD 过滤中的异常情况?

虽然 QD 低于 2 的变异通常被认为质量较差,但有时我们会发现 VQSR 过滤掉了一些 QD 大于 30 的变异!这意味着尽管这些变异通过了硬性过滤的 QD 阈值,但在其他注释维度上表现不佳,被视为伪影。

同样,VQSR 也可能通过一些 QD 小于 2 的变异,说明这些变异可能在其他维度上表现良好。如果我们仅根据 QD 进行硬性过滤,可能会丢失这些变异。

总结:

- **QD 的作用**:用于归一化变异的质量,避免深度覆盖过高导致置信度膨胀。
- **过滤阈值**:通常推荐过滤掉 QD 低于 2 的变异,以移除质量较差的位点。
- **注意事项**:硬性过滤只能根据单一维度判断,可能会丢失一些在其他维度上表现良好的变异。


4. FisherStrand (FS)

1. 什么是 FS?

**FS(Fisher Strand)** 是一个 Phred 标度的概率值,用来评估是否在位点上存在链偏性(strand bias)。链偏性指的是备用等位基因在正向链(forward strand)和反向链(reverse strand)上出现的频率是否不同于参考等位基因。如果在正向和反向链上看到备用等位基因的频率明显不同,这可能表明该位点的数据有问题。

FS 通过 Fisher 精确检验(Fisher’s Exact Test)计算得出,这是一种用于处理小样本量数据的统计检验方法。

FS 的解读:
  • 当位点没有或很少存在链偏性时,FS 值接近 0。
  • 如果 FS 值较大,则表示该位点可能存在显著的链偏性,这通常是序列错误或测序技术问题的表现。
2. FS 值的分布

我们来看看 FS 值在未经过滤的变异中的分布:

  • FS 值的范围很广,有些变异的 FS 值接近 400。然而,大多数变异的 FS 值低于 10。
  • 在未过滤的变异集中,几乎所有变异的 FS 值都低于 100。
3. 为什么推荐过滤掉 FS 大于 60 的变异?

在硬性过滤中,我们通常建议过滤掉 FS 值大于 60 的变异。让我们来看看原因:

VQSR 过滤后的分布:
  • 在通过 VQSR 的变异和未通过 VQSR 的变异中,我们可以看到,大多数未通过 VQSR 的变异的 FS 值都大于 55。换句话说,这些变异有显著的链偏性,是数据不可信的信号。
  • 基于此,硬性过滤时建议过滤掉 FS 值大于 60 的变异,以去除具有显著链偏性的假阳性变异。

不过要注意,虽然将 FS 阈值设置为 60 能过滤掉许多假阳性变异,但仍会保留一些假阳性。如果我们将阈值设得更低(如低于 55),虽然能移除更多的假阳性,但也可能会失去一些真阳性。

4. FS 与相关注释的区别

在评估链偏性时,除了 FS 之外,还有两个相关的注释:SBSOR

  • SB(Strand Bias):提供每个等位基因在正向和反向链上支持的原始读取数。
  • SOR(Strand Odds Ratio):使用另一种统计检验方法来评估链偏性。SOR 更适合处理高覆盖度的数据

与 FS 不同,SB 是原始读取计数,而 FS 是基于 Fisher 精确检验的概率值。FS 会受到测序深度的影响,在某些情况下可能会过度惩罚那些位于外显子末端的变异,而 SOR 则可以更好地处理这种情况。

总结:
  • FS 的作用:用于检测链偏性,FS 值越大表示偏性越强,变异的可信度越低。
  • 过滤阈值:通常建议过滤掉 FS 值大于 60 的变异。
  • 注意事项:FS 是检测链偏性的一种常用方法,但在高覆盖度数据中,SOR 可能更为合适。

5. StrandOddsRatio (SOR)

1. 什么是 SOR?

SOR(Strand Odds Ratio) 是一种用来评估链偏性的新方法,使用类似对称优势比检验(symmetric odds ratio test)的方式进行估算。链偏性(strand bias)是指在正向和反向链上看到备用等位基因的比例差异较大,这可能表明数据质量存在问题。

SOR 之所以被引入,是因为 FS(Fisher Strand) 注释有时会过度惩罚那些发生在外显子末端的变异。在这些位置,常常只能在某个方向的链上覆盖到读取数,导致 FS 给出的结果显示出偏性。SOR 考虑了覆盖到两种等位基因的读取数的比例,从而更好地处理这种情况。

SOR 的特点:
  • SOR 值越高,表示链偏性越强
  • SOR 是针对高覆盖度数据设计的,因此相比 FS,它在覆盖较高的情况下表现更好。
2. SOR 值的分布

让我们来看看未经过滤的变异集中 SOR 值的分布:

  • SOR 值的范围从 0 到大于 9,大多数变异的 SOR 值小于 3,几乎所有的变异 SOR 值都低于 9
  • 我们可以看到 SOR 值较大的变异数量较少,但存在一个长尾,SOR 值可以超过 9。
3. 为什么推荐过滤掉 SOR 大于 3 的变异?

在硬性过滤中,我们通常推荐过滤掉 SOR 值大于 3 的变异。让我们来看看原因:

VQSR 过滤后的分布:
  • 在通过 VQSR 的变异和未通过 VQSR 的变异中,我们看到大多数 SOR 值大于 3 的变异都未通过 VQSR 过滤。
  • 尽管有些 SOR 值小于 3 的变异也未能通过 VQSR,但硬性过滤时使用 3 作为阈值,可以去除那些显示出显著偏性的长尾变异。

这个阈值的选择是基于观察到的注释值分布。设定 SOR = 3 的阈值可以移除表现出较强链偏性的变异,而不会过多地丢失潜在的好变异。

4. FS 与 SOR 的区别

尽管 FS 和 SOR 都是用来评估链偏性,但它们的适用场景有所不同:

  • FS:基于 Fisher 精确检验,适用于低覆盖度的数据,但在高覆盖度数据中可能会过度惩罚某些区域的变异。
  • SOR:使用优势比检验,专为高覆盖度数据设计,避免了 FS 在处理外显子末端变异时的不足。

因此,如果数据覆盖度较高,SOR 通常比 FS 更能准确反映变异的真实性。

总结:
  • SOR 的作用:用于评估链偏性,SOR 值越高,偏性越强,变异的可信度越低。
  • 过滤阈值:通常建议过滤掉 SOR 值大于 3 的变异,以去除那些显示出显著偏性的假阳性。
  • 注意事项:SOR 是针对高覆盖度数据设计的,通常比 FS 更适合处理这种数据。

6. RMSMappingQuality (MQ)

1. 什么是 MQ?

MQ(Root Mean Square Mapping Quality) 是一个注释,表示某个位点上所有读取的根均方(RMS)比对质量。与直接计算平均比对质量不同,MQ 通过计算每个读取比对质量的平方平均值再开方,以反映该位点的总体比对质量。这个值可以帮助我们评估该变异位点的整体比对准确性。

MQ 的特点:
  • MQ 值越高,表明在该位点上,读取的比对质量越好
  • 理想情况下,如果位点上的比对质量良好,MQ 值应该接近 60。
2. MQ 值的分布

我们可以看看未经过滤的变异的 MQ 值分布:

  • 大多数变异的 MQ 值集中在大约 60 左右,显示出高质量的比对。
  • 通常我们建议在硬性过滤时,过滤掉 MQ 值小于 40 的变异。这是因为低于 40 的 MQ 值表明在该位点上的比对质量较差。
3. 为什么推荐过滤掉 MQ 小于 40 的变异?

MQ 反映了一个变异位点的比对质量,因此较低的 MQ 值通常表明该位点的数据不够可信。在硬性过滤中,推荐的阈值是过滤掉 MQ 值低于 40 的变异。

VQSR 过滤后的分布:
  • 在通过 VQSR 的变异和未通过 VQSR 的变异中,几乎所有通过 VQSR 的变异的 MQ 值都在 60 附近,而未通过 VQSR 的变异通常有较低的 MQ 值。
  • 通过使用 MQ = 40 作为硬性过滤的阈值,可以去除那些比对质量不佳的变异。

尽管有些研究者可能会选择更严格的阈值(例如过滤掉 MQ 小于 50 的变异),但我们推荐的阈值是较为宽松的 40,以保留更多可能是可信的变异。

4. 如何解释高 MQ 但被 VQSR 过滤的变异?

虽然大多数通过 VQSR 的变异的 MQ 值接近 60,但有些未通过 VQSR 的变异也有接近 60 的 MQ 值。这表明,即使比对质量良好,其他维度上的注释可能显示出这些变异存在问题。因此,仅依靠 MQ 进行硬性过滤无法捕捉所有伪影。

总结:
  • MQ 的作用:用于评估变异位点的比对质量,MQ 值越高,表示比对质量越好。
  • 过滤阈值:通常建议过滤掉 MQ 值小于 40 的变异。
  • 注意事项:虽然 MQ 能反映比对质量,但无法单独确定变异的真实性,因此应结合其他注释一起分析。

7. MappingQualityRankSumTest (MQRankSum)

1. 什么是 MQRankSum?

MQRankSum 是一个基于 u 值的 z 近似值,来自比对质量的秩和检验(Rank Sum Test)。它用于比较支持参考等位基因和支持备用等位基因的读取的比对质量。如果备用等位基因的读取比对质量明显低于参考等位基因,那么该变异可能不可靠。

MQRankSum 的解读:
  • 正值表示支持备用等位基因的读取的比对质量高于支持参考等位基因的读取
  • 负值:表示支持参考等位基因的读取的比对质量高于支持备用等位基因的读取。
  • 接近 0 的值最好,表明支持参考和备用等位基因的读取在比对质量上没有明显差异。
2. MQRankSum 值的分布

让我们看看未经过滤的变异的 MQRankSum 值的分布:

  • MQRankSum 的值通常在 -10.5 到 6.5 之间分布。我们的推荐硬性过滤阈值是 -12.5
  • 在我们的数据集中,没有任何变异的 MQRankSum 小于 -10.5。这意味着硬性过滤使用 -12.5 作为阈值将不会移除任何变异。
3. 为什么选择 -12.5 作为 MQRankSum 的硬性过滤阈值?

硬性过滤推荐的阈值是 -12.5,这个阈值相对宽松,意在保留大多数潜在的好变异。一般来说,如果您观察到 MQRankSum 值低于 -12.5,说明备用等位基因的比对质量比参考等位基因差得多,可能是错误的变异。因此,使用这个阈值来过滤掉这些可能的假阳性变异是合理的。

VQSR 过滤后的分布:
  • 在通过 VQSR 的变异和未通过 VQSR 的变异中,负值较低(例如小于 -2.5)的变异往往未通过 VQSR 过滤,而值接近 0 的变异通常会通过 VQSR。
  • 这表明,尽管选择 -12.5 作为阈值不会过滤掉我们数据集中的任何变异,但将阈值设置得更严格(如 -2.5)可能会移除更多不可信的变异。
4. 如何调整 MQRankSum 的阈值?

每个数据集的注释分布可能不同,因此在使用硬性过滤时,建议根据您特定的数据集调整阈值。虽然 -12.5 是推荐的宽松阈值,但如果在您的数据集中发现很多 MQRankSum 小于 -2.5 的变异不可信,您可以考虑将阈值调整为更严格的 -2.5。

总结:
  • MQRankSum 的作用:比较支持参考等位基因和备用等位基因的读取的比对质量,判断它们之间是否有显著差异。
  • 过滤阈值:通常建议使用 -12.5 作为硬性过滤阈值,但可以根据数据集进行调整。
  • 注意事项:该注释主要用于检测备用等位基因和参考等位基因在比对质量上的显著差异,因此结合其他注释进行判断更为可靠。

这就是关于 MappingQualityRankSumTest (MQRankSum) 的详细介绍。如果没有问题,我们可以继续讲解最后一个注释 ReadPosRankSumTest (ReadPosRankSum)
很好!接下来我们讲解最后一个注释 ReadPosRankSumTest (ReadPosRankSum)

8. ReadPosRankSumTest (ReadPosRankSum)

1. 什么是 ReadPosRankSum?

ReadPosRankSum 是一个基于 u 值的 z 近似值,来自位点位置的秩和检验(Rank Sum Test)。它用于比较读取中的参考等位基因和备用等位基因在读取中的位置差异。如果备用等位基因的读取位置明显集中在读取的末端,而参考等位基因的读取分布均匀,则该变异可能是不可靠的。

ReadPosRankSum 的解读:
  • 负值:表示备用等位基因的读取更常出现在读取的末端位置。因为在读取的末端区域,测序错误更为常见,所以这通常是不好的信号。
  • 正值:表示参考等位基因的读取更多出现在读取的末端位置。
  • 接近 0 的值是最佳情况,表明参考等位基因和备用等位基因在读取中的位置分布相似,数据质量较为可信。
2. ReadPosRankSum 值的分布

我们来看一下未经过滤的变异集中 ReadPosRankSum 值的分布:

  • 未经过滤的变异的 ReadPosRankSum 值大多数在 -4 到 4 之间
  • 硬性过滤的推荐阈值是过滤掉 ReadPosRankSum 值小于 -8 的变异。然而在我们的数据集中,没有任何变异的 ReadPosRankSum 值小于 -8。
3. 为什么推荐过滤掉 ReadPosRankSum 小于 -8 的变异?
  • 负值:负的 ReadPosRankSum 值表明备用等位基因的读取位置通常在读取的末端,这在测序中容易引入错误。因此,负的 ReadPosRankSum 值较低的变异(如小于 -8)可能是不可信的变异。
  • 阈值设定:虽然在我们的数据集中没有值小于 -8 的变异,但在不同数据集上,使用 -8 作为阈值可以过滤掉那些备用等位基因读取集中在读取末端的伪变异。
VQSR 过滤后的分布:
  • 当我们查看通过 VQSR 的变异和未通过 VQSR 的变异时,可以看到,VQSR 过滤掉的变异通常具有较低的 ReadPosRankSum 值(小于 -1.0)或较高的值(大于 3.5)。
  • 硬性过滤使用 -8 作为阈值,可以保留大部分可信的变异,同时移除那些位置分布明显异常的变异。
4. 如何调整 ReadPosRankSum 的阈值?

正如其他注释一样,您可以根据数据集的具体情况调整 ReadPosRankSum 的阈值。例如,如果在您的数据集中有许多 ReadPosRankSum 值较高或较低的变异表现不佳,您可以将阈值调整得更严格,过滤掉更多不可信的变异。

总结:
  • ReadPosRankSum 的作用:用于比较参考和备用等位基因在读取中的位置分布,负值通常表示备用等位基因更多出现在读取末端,可能是伪变异。
  • 过滤阈值:通常建议使用 -8 作为过滤阈值,但您可以根据数据集的具体情况调整这一阈值。
  • 注意事项:ReadPosRankSum 注释帮助识别备用等位基因是否集中在读取的末端,这是一个测序错误可能集中的区域,因此结合其他注释一起使用可以提高变异的鉴别能力。

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

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

相关文章

基于vue框架的党建系统j9hzh(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:组织管理员,成员,通知公告,组织信息,组织成员,入党材料,会议信息,活动签到,消息通知,学习视频 开题报告内容 基于Vue框架的党建系统开题报告 一、研究背景 随着信息技术的飞速发展,党建工作作为党的建设的重要组成部分&am…

单脉冲阵列和差波束形成实现比幅测角法(MATLAB仿真)

单脉冲阵列和差波束形成实现比幅测角法(MATLAB仿真) 文章目录 前言一、和差波束形成二、比幅测角法原理三、MATLAB仿真四、MATLAB仿真代码(超详细)单脉冲阵列和差波束形成实现比幅测角法MATLAB仿真超详细代码 总结 前言 单脉冲雷达天线要求产生一个主瓣…

Mysql—高可用集群MHA

1:什么是MHA? MHA(Master High Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切…

GitLab Runner 通过 Pipeline 流水线实现持续集成 CI

文章目录 1、基础环境2、安装 Docker3、安装 GitLab4、安装 JDK5、安装 Maven6、安装 GitLab Runner7、注册 GitLab Runner8、上传 GitLab9、配置 Pipeline 1、基础环境 本次演示搭建,我使用的是阿里云服务器,配置如下: 服务器1:…

web 0基础第一节 文本标签

这是一个html文件的基本结构 在vs code 中使用英文的 ! 可快捷设置这样的结构 <!-- --> 是在html写注释的结构 <!DOCTYPE html> <!--标识当前文档类型为html--> <html> …

由于找不到msvcp140.dll而陷入困境?从系统更新到文件修复的全方位应对策略

由于找不到msvcp140.dll&#xff0c;不少电脑用户陷入了困惑之中。在计算机的复杂生态系统里&#xff0c;dll&#xff08;动态链接库&#xff09;文件是一种共享的资源库&#xff0c;而msvcp140.dll更是与特定的编程环境和软件运行息息相关。它就像是一座桥梁&#xff0c;连接着…

企业内部文档安全外发如何挑选合适的外发系统?

企业文档的外发不仅关系到运营效率&#xff0c;更是信息安全的重要组成部分。面对B2B模式下文档交换的普遍性和重要性&#xff0c;企业内部文档的安全外发成为了众多公司关注的重点之一。 随着互联网技术的发展&#xff0c;企业之间的合作越来越紧密&#xff0c;文档的交流也变…

数字电路尚硅谷学习笔记

学习视频&#xff1a;01_数字电路_从零搭建计算机引导_哔哩哔哩_bilibili 第1章数字电路基础 1.引言 数字电路是现代科技和工程领域中不可或缺的基础。从计算机系统到通信设备&#xff0c;从家庭电子产品到工业自动化&#xff0c;数字电路无处不在&#xff0c;影响着我们的生…

传智杯 第六届—E

题目描述&#xff1a; leafee 最近爱上了 abb 型语句&#xff0c;比如“叠词词”、“恶心心”。 leafee 拿到了一个只含有小写字母的字符串&#xff0c;她想知道有多少个 "abb" 型的子序列&#xff1f; 定义&#xff1a; abb 型字符串满足以下条件&#xff1a; 字符…

JQuery基本操作(一)

获取表单元素的值 $(选择器).val(); //获取 $(选择器).val(值); //赋值 <body><div>用户名&#xff1a;<input type"text" id"userName"/><button id"get">获取值</button><button id"set">设…

GDAL:windows安装GDA

GDAL&#xff1a;windows安装GDA gdal 中文版官网文档地址&#xff1a;https://www.osgeo.cn/gdal/ 英文官方文档地址&#xff1a;https://www.gisinternals.com/release.php GDAL&#xff08;Geospatial Data Abstraction Library&#xff09;是一个开源的地理空间数据处理库…

【零基础学懂算法】:动态规划算法

前言&#xff1a;本系列文章旨在介绍笔试题中常见的算法&#xff0c;面向算法零基础小白&#xff0c;以最简单直白的语言方便你更快的理解算法原理和使用方法。 目录 一.算法思想与原理 1. 什么是状态&#xff1f; 2. 什么是状态转移方程&#xff1f; 二.动态规划做题步骤 …

umi build 打包后production工程发布到xampp或node服务, 代理proxy的设置流程;

umi发布打包会有代理问题&#xff0c;官方没给出具体操作步骤&#xff1b;下面介绍两种运行环境proxy的设置方法&#xff1b; 核心问题&#xff0c;为什么本地dev环境可以代理成功&#xff0c;而放在服务器或xampp上&#xff0c;或nginx 上就不能正常访问其它端口或链接&#…

光明乳业乳品四厂勇闯TPM世界级奖终审,开创中国乳品行业新纪元

近日&#xff0c;中国乳品行业的标志性事件在光明乳业乳品四厂隆重上演&#xff0c;该厂迎来了TPM&#xff08;全面生产维护&#xff09;世界级奖项的终审评审&#xff0c;这不仅是光明乳业发展历程中的重大突破&#xff0c;也是中国乳品行业首次冲击该领域最高荣誉——TPM世界…

另一个ssh server, handy-sshd

Handy-SSHD 是一个轻量级、高性能的 SSH 服务器解决方案&#xff0c;旨在为开发者和系统管理员提供便捷的远程访问功能。它基于现代加密技术&#xff0c;确保数据传输的安全性和保密性。Handy-SSHD 具有简单易用的配置选项&#xff0c;支持多种认证方式&#xff0c;包括密码和公…

光伏项目难管理的问题如何解决?

1.数字化管理平台的应用 数字化是当前解决光伏项目管理难题的关键手段之一。通过建立统一的数字化管理平台&#xff0c;可以实现对光伏电站的远程监控、数据分析、故障预警及运维调度等功能。这类平台通常集成有智能算法&#xff0c;能够实时分析电站运行数据&#xff0c;及时…

【Python】 列表解析 语法 实例展示 说明统统一顿明白!!!

列表解析 根据已有列表&#xff0c;高效创建新列表的方式。 列表解析是Python迭代机制的一种应用&#xff0c;它常用于实现创建新的列表&#xff0c;因此用在[]中。 语法&#xff1a; [expression for iter_val in iterable] [expression for iter_val in iterable if con…

动态规划——多状态动态规划问题

目录 一、打家劫舍 二、打家劫舍 II 三、删除并获得点数 四、粉刷房子 五、买卖股票的最佳时机含冷冻期 六、买卖股票的最佳时机含手续费 七、买卖股票的最佳时机III 八、买卖股票的最佳时机IV 一、打家劫舍 打家劫舍 第一步&#xff1a;确定状态表示 当我们每次…

navicat下载教程(包会的)

官网地址&#xff1a;Navicat | 下载 Navicat Premium 14 天免费 Windows、macOS 和 Linux 的试用版 第三方官网&#xff1a;https://pan.baidu.com/s/1kTgxwX84TPEqVfals38Mvw 一、下载navicat安装包 步骤1---试用版本 步骤2---下载windws系统的navicat 步骤3---查看安装…

ES6总结

1.let和const以及与var区别 1.1 作用域 var&#xff1a; 变量提升&#xff08;Hoisting&#xff09;&#xff1a;var 声明的变量会被提升到其作用域的顶部&#xff0c;但赋值不会提升。这意味着你可以在声明之前引用该变量&#xff08;但会得到 undefined&#xff09;。 con…