论文阅读(十):用可分解图模型模拟连锁不平衡
1.论文链接:Modeling Linkage Disequilibrium with Decomposable Graphical Models
摘要:
本章介绍了使用可分解的图形模型(DGMs)表示遗传数据,或连锁不平衡(LD),各种下游应用程序之前的依赖。首先,一般的学习算法进行审查:计划的基础上马尔可夫链蒙特卡罗和相关的模拟退火策略进行了说明。然而,对于易于处理的高维数据,它表明,采样的DGM的空间是有效地取代DGM的表示-连接树的采样。然后,第一个应用被认为是:二倍体数据的相位插补,其中包括推断潜在的遗传相单倍型的基础上观察到的遗传非相基因型。特别是,研究表明,在二倍体数据的情况下,将模型估计步骤与定相步骤解耦可以实现整个学习过程的可扩展性。本章最后通过四个应用说明了DGMs的潜力。
关键词:连锁不平衡,阶段插补,可分解图模型
本章介绍了使用可分解的图形模型(DGMs)表示遗传数据,或连锁不平衡(LD),各种下游应用程序之前的依赖。首先,根据DGMs的定义,回顾了一般的模型估计算法:描述了基于马尔可夫链蒙特卡罗(MCMC)的方案和相关的模拟退火策略。然而,对于易于处理的高维数据,它表明,采样的DGMs的空间是有效地取代与采样的DGMs表示的连接树。然后,第一个应用程序被认为是二倍体数据的相位插补,其中包括推断潜在的遗传相单倍型的基础上观察到的遗传非相基因型。还讨论了各种策略,旨在使模型估计的全基因组规模。这些策略包括限制图中允许的边的长度,其中长度是以碱基对为单位的物理距离或序数由边连接的轨迹之间的距离。特别地,示出了在二倍体数据的情况下,将模型估计步骤与定相步骤解耦允许整个估计过程的可缩放性。本章最后通过四个应用实例说明了分布式灰色模型的潜力。同样,第一个应用程序涉及分阶段,用于插补基因型缺失时的数据,无论是由于随机检测脱落,或故意丢弃基因座的检测,出于成本原因。此外,在概率模型中加入基因分型误差项,使我们能够检测和校正基因分型误差。用于LD建模的图形模型的第二个有用应用是从联合分布进行模拟的能力。因此,可以在LD下进行基因滴模拟,即模拟家系中相关个体的基因型。在第三种应用中,DGM的变量集被扩展以允许表示表型的变量,典型地是与任何个体相关联的疾病、协变量和群体分层信息。在这一行,讨论了一个案例研究,重点是检测因果遗传变异。最后,DGMs还可以用于混合建模的目的,这是当个体的祖先来自混合种群时出现的情况。详细地介绍了模型的自适应性,并给出了数值实验结果.本章最后对序列数据建模的未来工作进行了一些推测:越来越多的人使用高通量方法对单个DNA分子进行测序,以评估个体的遗传变异;本章解释了如何调整DGM,以解释该过程中使用比对程序所固有的偏倚。
10.1介绍
10.2方法
10.2.1可分解的图形模型
重要的是要认识到图只是图模型的一部分:团边缘的形式和参数也是必需的。在公式(10 - 4)中,我们把团和分隔边缘当作完全指定的艾德;然而,它们可能依赖于参数值,而这些参数值可能必须被估计。在一般的贝叶斯估计框架下,假设这些参数的先验,并得到参数值和图结构的联合后验分布。然而,由于我们的兴趣主要是在图形结构,我们的目标是解决大量变量的问题,我们使用简单的最大似然参数估计。对于完整的贝叶斯处理的例子,读者可以参考Jones等人的工作。[19]或Giudici和绿色[12]。
最重要的元素是可分解图的连接树表示。考虑另一个图,其中G的团是顶点,并且每对这样的顶点由一条边连接,该边由相应的团对的交集的基数加权。则此图的任何最重生成树J都是G的一棵联树。请注意,虽然以这种方式定义,但有更有效的方法来定义J [30]。联合树具有联合性质,即包含G的任何顶点子集的团形成J的单个连通子树。联合树存在当且仅当G是可分解的[13],并且一般来说,G将有许多不同的等价联合树,这些等价联合树可以通过托马斯和绿色的方法来枚举[38];也就是说,在可分解图和连接树之间存在一对多的对应关系。正如我们将在下面看到的,连接树是G的一种表示,它允许有效的操作。
注意,当G由几个不连通的分支组成时,许多作者定义了一个相应的联结森林。然而,我们遵循托马斯和绿色[37],通过添加与子树之间的空分隔符相关联的边,将连接森林的子树连接成单个连接树。这个连接树显然具有连接属性,避免了必须考虑多个特殊情况。
最后,我们应该考虑为什么限制DGM是可取的。这主要是因为易处理性。模型估计在这一类中要有效得多[19],特别是当我们考虑大量变量时。更重要的是,我们估计的模型的可能应用将需要使用只能在DGM上执行的前向-后向方法。对于某些应用,例如无条件模拟,可分解性并不重要,贝叶斯网络中的前向算法可以有效地做到这一点[5]。贝叶斯网络中正向模拟的一个很好的例子是遗传学中常用的基因丢弃方法,用于模拟系谱或家谱中的基因[25]。基因移植的工作原理是首先根据等位基因在种群中的随机分布将等位基因分配给系谱的建立者。然后,顾名思义,通过模仿简单的孟德尔遗传,等位基因代代相传。这个过程是一个有效的方法来模拟基因型的亲属,即使是大而复杂的谱系。最近的版本也模拟重组过程,因此模拟多个遗传基因座的等位基因[1],我们将在下面考虑扩展。相比之下,有效地模拟系统中所有变量的值,以子集的值为条件,需要两阶段的向前向后方法。为了使用它,不可分解的图必须被三角化,也就是说,用冗余边填充到一个等价的可分解模型中:例如,我们用形式为P(X)的冗余因子乘以(10.2)
此外,前向-后向方法的易处理性由集团边缘中的状态数决定,对于多项式模型,集团边缘的数量是集团大小的指数;因此,我们不仅需要可分解性,还需要具有小集团的DGM [22]。
10.2.2估计可分解的图形模型
10.2.3通过阶段插补应用于二倍体数据
10.2.4全基因组范围的估计
在连锁不平衡估计中经常遇到的第二个问题是规模问题。在图形模型估计的大多数应用中,100到200个变量的系统被认为是中等规模的问题[19],1000或更多的问题是大问题;然而,LD问题比这大几个数量级。目前的基因分型系统检测超过100万个特定艾德基因位点的基因型,主要是SNP,但也有一些CNV,而测序方法可以潜在地检测所有个体的变异,包括那些以前不知道是多态性的位置。回想一下,人类基因组大约有3 000 000 000个碱基长,据估计,多态性的发生率约为每1000个碱基1个。因此,通过基因组测序测定的全基因组分析可能涉及300万个变量。在某种程度上,如果我们单独考虑22对常染色体,因为它们是独立分离的,这个问题就会得到缓解;然而,较大的染色体仍然会有几十万个多态性。为了解决这个问题,我们可以利用LD的本地特性。虽然等位基因关联的其他原因,如人口混合和自然选择,可以在遥远的多态性之间,甚至在不同染色体上的多态性之间形成相关性,但重组诱导的shuing使LD成为一个更加局部化的效应。因此,考虑对条件独立图的结构的限制来表示这种定位并利用多态性沿染色体的线性排列沿着是有意义的。
口宽度大于最大边长。然后将窗口沿列表移动沿着,移动量等于其长度的一半,并在新窗口上运行估计。在[2]中显示,对于HapMap约鲁巴1号染色体数据集,最大边长20和窗口宽度250是最佳的[31]。在这个应用程序中,使用了两个窗口。首先,采用MCMC方法对后验图分布进行抽样.第二,MCMC方法用于最大化后验概率。在这些窗口中按此顺序应用这些方案相当于应用模拟退火,其中温度最初设置为1,但在过程中途瞬时切换为0。两个窗口在估计步骤之间都沿着移动其宽度的一半,最大化窗口紧随采样窗口之后。以这种方式,不必同时保持估计数据集中每个个体的所有位点处的数据。只需要每个阶段两个窗口所跨越的轨迹的数据。因此,即使对于1000个或更多个体的大数据集,处理器存储约束也不限制可以在同一模型中考虑的基因座的数量。请注意,为了实现这一点,数据需要按locus-by-individual数组排列。
除了模型和单倍型频率,fastPHASE和BEAGLE等程序还输出训练集中个体的定相单倍型。FitGMLD也在模型设置阶段执行阶段化;但是,该阶段化仅使用每个窗口在处理时的本地信息。相比之下,虽然它是以分段的方式估计的,但产生的图形模型是代表数据中遗传基因座的完整范围内的单倍型的联合分布的单个结构。因此,FitGMLD仅输出图形模型,而阶段化延迟到另一个称为Complete的程序。在整个图形模型中的完整读数和一组个体列表的可能不完整的未定相的基因型,并输出完整的定相单倍型。采用与第10.2.3小节中所述相同的方法进行该阶段调整。输出每个个体的后验最大定相,或从后验随机插补。在这个阶段,虽然我们同时存储所有基因座的数据,但我们每次只需要为一个个体这样做。因此,空间再次不是限制因素;但是,现在需要从逐个位点的输入数组中读取数据。
边长限制和模型估计步骤与定相步骤的解耦的效果是DGM估计可以在非常大量的基因座上进行。虽然使用FitGMLD建立模型需要相当长的计算时间,但[2]中显示这与基因座数量和个体数量呈线性增长。重要的是,一旦估计了LD的DGM,Complete程序就可以非常快速地估算或模拟完整的定相单倍型。虽然替代分阶段方法的重点是获得单一的最佳估算,但现在可以对多重估算进行抽样,以更好地反映和检查重建不确定性的影响。对于非常少量的基因座,列出所有可能的单倍型重建及其后验概率也是可行的;然而,可能的重建数量使得这对于大量基因座是不可行的。在某些情况下,可以通过将LD的图形模型与后续分析中使用的变量结合到一个更大的图形模型中来评估单倍型不确定性的影响。然后可以使用前向-后向算法精确地执行后验单倍型分布上的积分。然而,这可能需要大量的编程工作,并且导出的图形模型可能不容易处理。通过多重随机插补来评估单倍型重建的不确定性更简单:Complete可用于生成多个随机插补数据集,然后使用现有的单倍型分析程序进行分析。所需的插补数量将在很大程度上取决于所估计的单倍型的频率和对它们的具体使用,因此很难提出一般性的建议。然而,作为一个粗略的指导,[34]表明,为了估计第10.3.2小节中描述的SNP条纹统计的累积分布,1000次模拟给出了非常一致的结果。
其他模型限制也被考虑,例如,条件独立图必须是区间图的限制[32]。区间图是这样的图,其中每个顶点与真实的线的区间相关联,并且当且仅当区间重叠一定量时,顶点是连通的。由于每个区间都覆盖了其相应遗传基因座的位置,这就成为LD的一个很有吸引力的结构,因为它代表了LD在基因座周围的位置和范围。然而,实证研究表明,边长限制处理在第10.2.4小节给出了更准确的插补[2]。适当的区间图也被考虑[11]。一个适当的区间图是一个区间图的进一步要求,即所有的区间都是相同的长度。这样做的结果是,图具有简单线性结构的连接树表示。虽然对一般LD方法不太有用,但这种简单性证明对混合映射有用,如我们下面讨论的。
10.3应用
我们现在考虑将LD的图形模型应用于一些特定的遗传问题。
10.3.1步骤
LD建模最常见的用途是从非定相基因型估计定相单倍型。当基因型缺失时,该相同的过程也将插补等位基因,所述基因型缺失是由于随机测定脱落,或在故意不测定的基因座处,例如,由于成本。由于我们将基因分型误差项纳入图形模型,因此我们也能够检测和纠正可能的基因分型误差。在本小节中,我们将说明使用HapMap项目对来自尼日利亚约鲁巴人群的60名个体进行基因分型的1号染色体上的223 110个位点进行定相和插补的计算成本[31]。为此使用了三个程序:TransposeLinkage将标准LINKAGE [21]格式的个体-基因座阵列转换为基因座-个体阵列; FitGMLD,用于图形模型;完成,用于子节10.2.3中描述的定相。有关这些程序的完整信息可从JPSGCS wiki页面获得。以下所有程序均在单个Intel 2.80 GHz CPU上运行。
到目前为止,模型估计是该过程中计算要求最高的部分。计算时间是基因座数量的线性函数[2];然而,估计1号染色体的完整LD模型仍然需要8小时的过夜运行。图10.2显示了FitGMLD输出的图表类型的一个典型例子。这张图显示了从60个约鲁巴人中估计的1号染色体上前1000个SNP位点的LD结构的条件独立图。所描绘的图是在估计过程的四分之三左右发生的图。步行窗口没有为左下角所示的前750个位点建立模型,但尚未达到右上角所示的最终250个位点。图中最终250个位点的部分仍处于初始状态,这是一个二阶马尔可夫结构。
与使用FitGMLD进行建模相比,使用Complete进行阶段化非常快。在172秒内发现了LD模型和观察到的基因型的所有60个个体的最大后验概率阶段。这包括36秒读取图形模型并设置内部表示,以及每个个体2.27秒读取数据,将LD图形模型应用于该数据,并运行向前-向后算法以获得后验最可能定相。
对于从后验概率分布模拟单体型,计算经济学甚至更好。表10 - 1给出了一系列模拟所需的时间。这些跑步时间可以用以下方式总结:如果n是个人的数量,s是所需的模拟次数,则所需的总时间为
因此,单个随机定相的边际成本为0.229秒。由于这里考虑的基因座的数量是223110,这对应于每个模拟、每个人、每百万个基因座大约一秒。
10.3.2无条件模拟
LD的图形模型的另一个有用的应用是能够从联合分布进行模拟,而无需通过观察对任何变量进行加权或加权。采用这种方法[33]来扩展多位点基因丢弃方法[1]以允许LD。首先,从LD模型模拟多位点创始人单倍型。然后,通过模仿染色体从父母到O的随机分离,允许重组,就像其他基因丢弃方法一样,分配他们的孩子和其他后代的单倍型。在适当的LD结构下,以这种方式模拟的谱系基因型然后可以用于获得统计检验的经验p值,该统计检验依赖于观察亲属共享的等位基因。这种等位基因共享统计已被提出来检测区域与特定的表型使用密集测定的基因型数据在大型,扩展的谱系。这个问题的传统方法,称为连锁分析,是计算对数似然比统计。这些统计量比较了在标记基因座和推定表型基因座处等位基因的分离独立的零假设下观察到标记数据和表型的概率与在分离相关的替代方案下观察到标记数据和表型的概率,因为基因座是物理连锁的。用多个标记计算这样的统计依赖于标记之间的连锁平衡(LE)的假设。虽然这是一个非常合理的假设,为高信息量,但稀疏,微卫星数据的方法被设计利用,这是站不住脚的密集标记基因座。因此,提出了替代办法。托马斯等人。[36]和Leibon等人。[23]提出了一种简单的SNP条纹统计,该统计对连续基因座的运行进行计数,在该连续基因座处,受相同疾病影响的亲属共享共同的SNP等位基因。在没有连锁的零假设下,等位基因共享的长条纹应该是罕见的,但在任何影响个体被选择的疾病的基因周围更常见。因此,长条纹表明从共同祖先继承的潜在共享基因组片段,因此,可能是导致疾病的基因的位置。没有分析方法来评估这种统计量的统计意义,但零分布可以用基因下降来模拟。托马斯[33]通过这种模拟表明,在无连锁的零假设下,LD下产生的等位基因共享的随机条纹远长于LE下,从而说明当使用SNP条纹统计时,LE的不适当假设可能导致假阳性结果。
SNP条纹统计数据首先应用于一个由8名前列腺癌男性组成的家系,该家系选自一个较大的犹他州家系。以前的传统连锁分析,使用一组稀疏的约500个微卫星标记,在较大的谱系中显示了与1号染色体区域连锁的证据[7]。当一个相对密集的全基因组100 000个SNP标记集的数据可用于该家系时,它被视为测试SNP划线方法的机会。所有8个个体共享的1号染色体上最长的SNP条纹是64个位点长,并且发生在先前鉴定的艾德连锁区域内。8个中至少有7个共享的最长基因组片段长度为495,并且也位于先前的连锁区域内。考虑到基因分型错误的可能性,或者一个病例可能是由于共享遗传学以外的原因造成的,即所谓的散发病例,因此考虑了八个病例中的七个病例的共享。使用从52个犹他州对照估计的LD模型在无连锁的零假设下模拟SNP条纹的长度。还使用LE下的常规基因丢弃来模拟SNP条纹。对于8名受试者中至少7名共享的部分,LD模型下的经验p值为0.01,LE模型下的p值为0.012。然而,对于所有8名男性共享的情况,LD下的经验p值为0.034,而LE假设下的p值为0.0037,这是一个数量级的差异,因此再次表明需要正确解释标记之间的LD,以避免长SNP条纹的显著性。
10.3.3表型和协变量
由于DGM估计是一种通用方法,因此没有必要将所涉及的变量限制在遗传位点。我们还可以引入代表表型的变量,通常是疾病、协变量和与任何个体相关的群体分层信息。这些变量的值被复制并附加到代表个体单倍型的估算的完整多变量观察中的每一个,以给出关于扩展变量系统的一组观察。这些应用程序通常需要扩展现有的标准程序,以建立系统的变量,但图形建模估计机器可以像以前一样应用,因此,给表型,协变量和遗传基因座之间的依赖结构的估计。
该方法用于分析遗传学分析研讨会17的数据[3]。GAW17数据集是一个模拟的外显子组序列数据集,其中疾病性状是随机得出的,假设它是常见的,并受到许多(大多数是罕见的)变体的影响。三个定量的遗传决定的表型,相互关联,也进行了模拟,作为年龄,性别,种族和吸烟状况的主题。数量表型、年龄、性别和吸烟状况与该病相关。研究人员创建了两组数据:一组使用已知谱系中的密切相关的个体,另一组使用从大量人群中随机抽样的无关个体。阿贝尔和托马斯[3]分析了无关个体的数据。
由于模型的复杂性和所涉及的基因座数量,我们将估计过程分为两轮。在第一轮的模型设定中,我们分别为每个染色体估计了一个图形模型.对于每条染色体,估计了染色体上所有基因座等位基因、所有表型、种族和所有协变量的完整联合分布。从这些染色体模型中,我们删除了所有在条件独立图中的节点与代表表型、协变量或种族的任何节点之间的距离超过三步的基因座。然后,在第二轮中,对所有保留的基因座、表型、协变量和种族进行了组合图形模型估计。所有直接相关的变异,即,由一个单一的边缘连接,与任何非位点变量在这一最终阶段被认为是显着相关.图10.3是一个典型的例子。在这里,有真正的因果变异,用红色圈,被发现是显着相关的,无论是与auctionation状态(a)或数量性状Q1.此外,该模型检测到协变量和结局之间的相关性的适当、复杂模式。虽然,如本例所示,该方法具有较高的错误发现率(FDR),但它正确恢复了结果和协变量之间的关系,并具有合理的检测因果遗传变异的能力。在检测到的致病变异中,有几种常见的变异具有相对较大的影响。然而,该方法在检测罕见变异体和对表型影响很小的变异体方面也取得了一些成功。
10.3.4混合映射
虽然如上所述,当样本个体代表单个种群时,解释种群分层是简单的,但更有趣的问题是对混合建模,即当个体的祖先来自种群的混合时。第一代混合的人将有一个单倍型从每个父母的人口;然而,在随后的几代,重组的过程将创建单倍型组成的片段混合从祖先的人口。混合的问题是映射的祖先片段上的每一个单倍型的一个人与混合种族。这种映射可以用于以适应性方式在整个基因组中对研究个体的样本进行分层,并避免潜在的错误结果。当混合群体具有特定表型的不同发生率时,它也可以用于定位影响该性状的基因。例如,这种方法已被用于在美国黑人研究中绘制前列腺癌的基因座[9]。
在最近的工作中,我们使用了从一组祖先群体中估计的DGMs来提高统计功效,鲁棒性和混合推断的范围[4]。为此,我们已经开发了一种方法来估计一个联合的人口LD模型的非混合个人从两个或两个以上的人口。虽然更一般的可分解模型通常是首选的,出于易处理性的原因,我们限制我们的搜索条件独立图中的轨迹连接在一个适当的区间图。包括一个额外的变量来指示每个样本成员的种族,并且该变量与条件独立图中的所有其他变量相连接。图10.4的顶部显示了这样估算的结构类型的一个小例子。
掺合料推断。该图说明了连锁不平衡(LD)和混合的图形模型是如何从一个模型中构建的,该模型允许混合人种个体的染色体片段的不同来源的群体,该模型是从一个群体选择的非混合个体的样本中估计的。上面所示的初始模型具有代表在适当区间图中连接的遗传位点处的等位基因的变量。基因座从左到右的顺序受基因组沿着基因座的物理顺序的限制.每个等位基因变量(以浅灰色显示)都与祖先指示符(以深灰色显示)相连。由于抽样的个体没有混合,因此有一个单一的、全球性的祖先指标。在混合模型中,如下图所示,全局祖先指标被一系列局部指标所取代,每个局部指标对应于适当区间图中的每个小集团。局部祖先指标在一阶马尔可夫链中连接,该链具有惩罚起源国人口之间过度、不切实际的翻转的作用。
这个联合人口LD模型,然后扩展到允许混合物取代单一的,全球的种族变量由一系列的本地种族变量,一个适当的间隔图的每个集团。种族变量通过成对函数串联连接,所述成对函数对种族变量不一致的状态给出低概率,并且因此惩罚沿基因组沿着种族指标之间的过度切换。包含单个种族变量的集团的集团边缘直接取自原始全局模型。包含两个种族变量的集团的集团边际是通过在给定两个种族变量的值的边际上对来自全局模型的边际求平均来获得的。这样得到的图模型的条件独立图如图10.4的底部所示。这个扩展的模型,一旦估计了一组参考人群,然后可以用来估计当地的祖先沿着混合个体的单倍型。此外,对于LD的典型图形模型,它可以用于混合群体的定相和插补。HAPMIX软件[28]基本上扩展了fastPHASE算法以允许混合,在许多方面是相当的;然而,它只允许两个祖先群体的混合,并且对基因分型错误敏感。用于混合作图的DGMs允许多个祖先群体和稳健的建模基因分型错误它们还可以更准确地重建混合物图,如表10.2所示。所示结果是针对HapMap欧洲和约鲁班血统的模拟混合群体。使用BEAGLE [6]对无关的欧洲人和约鲁班人进行分阶段研究,并将其分为训练集和测试集。我们使用BEAGLE来创建这个分阶段的数据,因为它共享相同的底层模型,使用Complete可能更有利于我们的方法,而使用fastPHASE可能更有利于HAPMIX。测试集的单倍型被用作群体创始人,并将基因放入一个大型的20代谱系中,以便通过随机交配和重组发生混合。测试所得的基因型,没有基因型错误,以及随机改变1%或2%的基因型。然后使用HAPMIX程序和我们的DGM软件估计每个基因座的非洲等位基因的数量,使用LD模型估计的训练单倍型。该表给出了非洲等位基因的实际数量和估计数量之间的相关性,这些等位基因是所有测试个体和所有基因座的平均值。
10.4序列数据的应用
参考文献
略
相关文章:

论文阅读(十):用可分解图模型模拟连锁不平衡
1.论文链接:Modeling Linkage Disequilibrium with Decomposable Graphical Models 摘要: 本章介绍了使用可分解的图形模型(DGMs)表示遗传数据,或连锁不平衡(LD),各种下游应用程序之…...

Python中容器类型的数据(上)
若我们想将多个数据打包并且统一管理,应该怎么办? Python内置的数据类型如序列(列表、元组等)、集合和字典等可以容纳多项数据,我们称它们为容器类型的数据。 序列 序列 (sequence) 是一种可迭代的、元素有序的容器类型的数据。 序列包括列表 (list)…...

PySPARK带多组参数和标签的SparkSQL批量数据导出到S3的程序
设计一个基于多个带标签SparkSQL模板作为配置文件和多组参数的PySPARK代码程序,实现根据不同的输入参数自动批量地将数据导出为Parquet、CSV和Excel文件到S3上,标签和多个参数(以“_”分割)为组成导出数据文件名,文件已…...

蓝桥杯备考:模拟算法之字符串展开
P1098 [NOIP 2007 提高组] 字符串的展开 - 洛谷 | 计算机科学教育新生态 #include <iostream> #include <cctype> #include <algorithm> using namespace std; int p1,p2,p3; string s,ret; void add(char left,char right) {string tmp;for(char ch left1;…...

使用LLaMA-Factory对AI进行认知的微调
使用LLaMA-Factory对AI进行认知的微调 引言1. 安装LLaMA-Factory1.1. 克隆仓库1.2. 创建虚拟环境1.3. 安装LLaMA-Factory1.4. 验证 2. 准备数据2.1. 创建数据集2.2. 更新数据集信息 3. 启动LLaMA-Factory4. 进行微调4.1. 设置模型4.2. 预览数据集4.3. 设置学习率等参数4.4. 预览…...

@Nullable 注解
文章目录 解释 Nullable 注解注解的组成部分:如何使用 Nullable 注解a. 标注方法返回值:b. 标注方法参数:c. 标注字段: 结合其他工具与 Nonnull 配合使用总结 Nullable 注解在 Java 中的使用场景通常与 Nullability(空…...

Arduino大师练成手册 -- 控制 AS608 指纹识别模块
要在 Arduino 上控制 AS608 指纹识别模块,你可以按照以下步骤进行: 硬件连接 连接指纹模块:将 AS608 指纹模块与 Arduino 连接。通常,AS608 使用 UART 接口进行通信。你需要将 AS608 的 TX、RX、VCC 和 GND 引脚分别连接到 Ardu…...

Mask R-CNN与YOLOv8的区别
Mask R-CNN与YOLOv8虽然都是深度学习在计算机视觉领域的应用,但它们属于不同类型的视觉框架,各有特点和优势。 以下是关于 Mask R-CNN 和 YOLOv8 的详细对比分析,涵盖核心原理、性能差异、应用场景和选择建议: 1. 核心原理与功能…...

在Ubuntu上使用Docker部署DeepSeek
在Ubuntu上使用Docker部署DeepSeek,并确保其可以访问公网网址进行对话,可以按照以下步骤进行: 一、安装Docker 更新Ubuntu的软件包索引: sudo apt-get update安装必要的软件包,这些软件包允许apt通过HTTPS使用存储库…...

MySQL的覆盖索引
MySQL的覆盖索引 前言 当一个索引包含了查询所需的全部字段时,就可以提高查询效率,这样的索引又被称之为覆盖索引。 以MySQL常见的三种存储引擎为例:InnoDB、MyISAM、Memory,对于覆盖索引提高查询效率的方式均不同,…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.12 连续数组:为什么contiguous这么重要?
2.12 连续数组:为什么contiguous这么重要? 目录 #mermaid-svg-wxhozKbHdFIldAkj {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wxhozKbHdFIldAkj .error-icon{fill:#552222;}#mermaid-svg-…...

在React中使用redux
一、首先安装两个插件 1.Redux Toolkit 2.react-redux 第一步:创建模块counterStore 第二步:在store的入口文件进行子模块的导入组合 第三步:在index.js中进行store的全局注入 第四步:在组件中进行使用 第五步:在组件中…...

lstm预测
import numpy as np import pandas as pd import tensorflow as tf import math import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler from keras.layers import LSTM,Activation,Dense,Dropout# 时间序列数据转换为监督学习的格式 def creatXY(d…...

《 C++ 点滴漫谈: 二十五 》空指针,隐秘而危险的杀手:程序崩溃的真凶就在你眼前!
摘要 本博客全面解析了 C 中指针与空值的相关知识,从基础概念到现代 C 的改进展开,涵盖了空指针的定义、表示方式、使用场景以及常见注意事项。同时,深入探讨了 nullptr 的引入及智能指针在提升代码安全性和简化内存管理方面的优势。通过实际…...

【AI】探索自然语言处理(NLP):从基础到前沿技术及代码实践
Hi ! 云边有个稻草人-CSDN博客 必须有为成功付出代价的决心,然后想办法付出这个代价。 目录 引言 1. 什么是自然语言处理(NLP)? 2. NLP的基础技术 2.1 词袋模型(Bag-of-Words,BoWÿ…...

2025年Android开发趋势全景解读
文章目录 一、界面开发:从"手写代码"到"智能拼装"1.1 Jetpack Compose实战进化1.2 淘汰XML布局的三大信号 二、AI融合开发:无需炼丹的普惠智能2.1 设备端AI三大杀手级应用2.2 成本对比:设备端VS云端AI 三、跨平台演进&am…...

C#面试常考随笔11:Dictionary<K, V>、Hashtable的内部实现原理是什么?效率如何?
Dictionary<K, V> 底层数据结构:使用哈希表(Hash Table),由一个数组和链表(或在.NET Core 2.1 及之后版本中,当链表长度达到一定阈值时转换为红黑树)组成。数组中的每个元素称为一个桶&a…...

Linux防火墙基础
一、Linux防火墙的状态机制 1.iptables是可以配置有状态的防火墙,其有状态的特点是能够指定并记住发送或者接收信息包所建立的连接状态,其一共有四种状态,分别为established invalid new related。 established:该信息包已建立连接&#x…...

Qt u盘自动升级软件
Qt u盘自动升级软件 Chapter1 Qt u盘自动升级软件u盘自动升级软件思路:step1. 获取U盘 判断U盘名字是否正确, 升级文件是否存在。step2. 升级step3. 升级界面 Chapter2 Qt 嵌入式设备应用程序,通过U盘升级的一种思路Chapter3 在开发板上运行的…...

【Conda 和 虚拟环境详细指南】
Conda 和 虚拟环境的详细指南 什么是 Conda? Conda 是一个开源的包管理和环境管理系统,支持多种编程语言(如Python、R等),最初由Continuum Analytics开发。 主要功能: 包管理:安装、更新、删…...

Python递归函数深度解析:从原理到实战
Python递归函数深度解析:从原理到实战 递归是计算机科学中重要的编程范式,也是算法设计的核心思想之一。本文将通过20实战案例,带你深入理解Python递归函数的精髓,掌握递归算法的实现技巧。 一、递归函数核心原理 1.1 递归三要…...

OpenGL学习笔记(五):Textures 纹理
文章目录 纹理坐标纹理环绕方式纹理过滤——处理纹理分辨率低的情况多级渐远纹理Mipmap——处理纹理分辨率高的情况加载与创建纹理 ( <stb_image.h> )生成纹理应用纹理纹理单元练习1练习2练习3练习4 通过上一篇着色部分的学习,我们可以…...

【TypeScript】基础:数据类型
文章目录 TypeScript一、简介二、类型声明三、数据类型anyunknownnervervoidobjecttupleenumType一些特殊情况 TypeScript 是JavaScript的超集,代码量比JavaScript复杂、繁多;但是结构更清晰 一、简介 为什么需要TypeScript? JavaScript的…...

Notepad++消除生成bak文件
设置(T) ⇒ 首选项... ⇒ 备份 ⇒ 勾选 "禁用" 勾选禁用 就不会再生成bak文件了 notepad怎么修改字符集编码格式为gbk 如图所示...

Android NDK
Android NDK环境 D:\Android SDK\ndk\25.2.9519653 使用clang而不用gcc D:\Android SDK\ndk\25.1.8937393\toolchains\llvm\prebuilt\windows-x86_64\bin\clang --version 查看是否安装成功clang ptrace 在 C 语言中,ptrace 已经被 Linux 内核实现࿰…...

内部知识库助力组织智力激发与信息共享实现业绩增长
内容概要 内部知识库是企业知识管理的核心组件,具有不可估量的重要性。通过构建有效的知识库,组织能够将孤立的知识和信息整合成为一个系统性的体,极大提高员工访问和利用这些信息的能力。这不仅简化了决策过程,还通过减少重复劳…...

通过F12收集的信息
按 F12 键打开浏览器的开发者工具(DevTools)可以获取部分操作系统和中间件信息,但能力有限。以下是具体说明: 一、通过 F12 收集的信息 1. 客户端操作系统信息 - Console 控制台 通过 JavaScript 直接获取客户端操作系统信息&am…...

用Python替代OpenMV IDE显示openmv USB 图像
原理是利用openmv的usb模仿串口,然后用Python代码打开串口接收 能替代openmv ide 跑48帧图像 Python端需要的依赖: 需要的是: from ultralytics import YOLO import cv2 import numpy as np from serial import Serial import time from co…...

c语言:编译和链接(详解)
前言 要将编译和链接,就不得不提及编译器是如何运作的,虽然这部分知识是针对于要创造编译器和创作语言的人所需要清楚的,但作为c语言的学习者也需要了解一下,修炼内功,尤其是对于想学习c的人而言。 编译器的运作过程…...

数据结构【单链表操作大全详解】【c语言版】(只有输入输出为了方便用的c++)
单链表操作的C/C实现详解 在数据结构中,单链表是一种非常基础且重要的数据结构。它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。今天我们就来深入探讨用C/C实现的单链表及其各种操作。 一、单链表的定义 const int N 1e5; //单链表 t…...