【R包】pathlinkR转录组数据分析和可视化利器

介绍
通常情况下,基因表达研究如微阵列和RNA-Seq会产生数百到数千个差异表达基因(deg)。理解如此庞大的数据集的生物学意义变得非常困难,尤其是在分析多个条件和比较的情况下。该软件包利用途径富集和蛋白-蛋白相互作用网络,促进了差异基因表达结果的可视化和下游分析,帮助研究人员从基因表达研究中发现潜在的生物学和病理生理学。
我们在这个包中包含了一个基因表达结果的示例数据集,作为对象“exampleDESeqResults”。这是一个由2个数据帧组成的列表,使用包中的‘ results() ’函数生成BiocStyle::Biocpkg(“DESeq2”)’ (Love et al. 2014)。数据来自一项RNA-Seq研究,该研究调查了入院时(T1)的COVID-19和非COVID-19败血症患者与大约1周后(T2)在ICU的情况,并随时间索引(即T2 vs T1) (an et al. 2023)。
安装
安装该R包
# We'll also be using some functions from dplyr
# BiocManager::install("pathlinkR", version="devel")
library(dplyr)
library(pathlinkR)
基因表达火山图
在基因表达研究中,通常首先进行的可视化分析之一是识别差异表达基因(DEGs)的数量。这些基因通常是通过设定特定的倍数变化和统计显著性阈值来定义的。调整后的p值小于0.05和绝对倍数变化大于1.5被用作默认阈值,尽管可以指定任何值。pathlinkR 包含了一个名为 eruption() 的函数,用于创建火山图。
data("exampleDESeqResults")eruption(rnaseqResult=exampleDESeqResults[[1]],title=names(exampleDESeqResults[1])
)

对于定制火山图,有多种选项可供选择,包括:
- 调整阈值
- 切换显著基因和非显著基因的颜色
- 改变标记基因的数量
- 调整x轴和y轴的范围
- 绘制对数2(log2)或非对数2的倍数变化(以更好地感知变化幅度)
- 突出显示特定感兴趣的基因集
data("sigoraDatabase")
interferonGenes <- sigoraDatabase %>% filter(pathwayName == "Interferon Signaling") %>% pull(ensemblGeneId)eruption(rnaseqResult=exampleDESeqResults[[1]],title=names(exampleDESeqResults[1]),highlightGenes=interferonGenes,highlightName="Interferon genes (red)",label="highlight",nonlog2=TRUE,n=10
)

可视化比较中的倍数变化
除了创建火山图外,我们还可以通过热图来可视化特定通路(例如通过pathwayEnrichment()识别为显著的通路)中涉及的差异表达基因(DEGs)。plotFoldChange()函数通过接收DESeq2::results()数据框的输入列表(与pathwayEnrichment()类似),并为组成基因的倍数变化创建热图来实现这一点。
plotFoldChange(inputList=exampleDESeqResults,pathName="Interferon alpha/beta signaling"
)

为了定制化,提供了多种选项,包括:
- 缩短每次比较的名称
- 提供一个自定义的基因列表进行可视化,并添加一个信息性的标题
- 在热图单元格中使用对数2倍数变化
- 交换默认的行和列,并在行(比较)之间添加分隔
exampleDESeqResultsRenamed <- setNames(exampleDESeqResults,c("Pos", "Neg")
)plotFoldChange(exampleDESeqResultsRenamed,manualTitle="Signature genes",genesToPlot=c("CD4", "CD8A","CD8B", "CD28", "ZAP70"),geneFormat="hgnc",colSplit=c("Pos", "Neg"),log2FoldChange=TRUE,colAngle=45,clusterRows=FALSE,clusterColumns=TRUE,invert=TRUE
)

构建和可视化蛋白质-蛋白质相互作用网络
pathlinkR 包含用于构建和可视化蛋白质-蛋白质相互作用(PPI)网络的工具。在这里,我们利用从 InnateDB 收集的 PPI 数据,生成在基因表达分析中识别的差异表达基因(DEGs)之间的相互作用列表。这些相互作用随后可以在 R 中用于构建 PPI 网络,同时提供了多种选项来控制网络的类型,例如支持一级、最小或零级网络。实现这一目标的两个主要函数是 ppiBuildNetwork() 和 ppiPlotNetwork()。
让我们继续查看 COVID 阳性患者随时间变化的差异表达基因(DEGs),使用显著的 DEGs 来构建一个 PPI 网络。由于我们输入的数据框包含了所有测量的基因(而不仅仅是显著的基因),我们将使用 filterInput=TRUE 选项,以确保网络仅由通过标准阈值(如上所述)的基因构建。由于我们正在可视化 DEGs 的网络,让我们通过指定 fillType="foldChange" 来给节点上色,以指示它们失调的方向(即上调或下调)。
exNetwork <- ppiBuildNetwork(rnaseqResult=exampleDESeqResults[[1]],filterInput=TRUE,order="zero"
)ppiPlotNetwork(network=exNetwork,title=names(exampleDESeqResults)[1],fillColumn=LogFoldChange,fillType="foldChange",label=TRUE,labelColumn=hgncSymbol,legend=TRUE
)

带有蓝色标签的节点(例如STAT1、FBXO6、CDH1等)是网络中的枢纽节点,即那些具有高介数中心性得分的基因。用于确定枢纽节点的统计量可以在ppiBuildNetwork()函数中通过“hubMeasure”选项进行设置。
exNetworkInterferon <- mutate(exNetwork,isInterferon = if_else(name %in% interferonGenes, "y", "n")
)ppiPlotNetwork(network=exNetworkInterferon,title=names(exampleDESeqResults)[1],fillColumn=isInterferon,fillType="categorical",catFillColours=c("y"="red", "n"="grey"),label=TRUE,labelColumn=hgncSymbol,legend=TRUE,legendTitle="Interferon\ngenes"
)

富集网络和提取子网络
pathlinkR 包含两个用于进一步分析蛋白质-蛋白质相互作用(PPI)网络的函数。首先,ppiEnrichNetwork() 函数会使用网络的节点表来测试富集的 Reactome 通路或 Hallmark 基因集。
exNetworkPathways <- ppiEnrichNetwork(network=exNetwork,analysis="hallmark",filterResults="default",geneUniverse = rownames(exampleDESeqResults[[1]])
)exNetworkPathways

其次,ppiExtractSubnetwork() 函数可以从起始网络中提取一个最小连通的子网络,使用富集通路中的基因作为提取的“起始”节点。例如,下面我们将使用上述 Hallmark 富集的结果,从“干扰素γ反应”项中提取一个基因子网络,然后绘制这个缩减后的网络,并突出显示通路中的基因。
exSubnetwork <- ppiExtractSubnetwork(network=exNetwork,pathwayEnrichmentResult=exNetworkPathways,pathwayToExtract="INTERFERON GAMMA RESPONSE"
)ppiPlotNetwork(network=exSubnetwork,fillType="oneSided",fillColumn=degree,label=TRUE,labelColumn=hgncSymbol,legendTitle="Degree"
)

或者,您也可以使用ppiExtractSubnetwork()函数中的genesToExtract参数,提供您自己的基因集(一个包含Ensembl ID的字符向量)来提取为子网络。
进行通路富集分析
通路富集的核心概念是过度表达:也就是说,我们差异表达基因(DEG)列表中属于特定通路的基因数量是否比随机情况下预期的更多?为了计算这一点,最简单的方法是比较某个通路中的 DEGs 与所有 DEGs 的比例,以及数据库中所有通路中的基因与该通路中所有基因的比例。pathlinkR 主要使用 Reactome 数据库(Fabregat 等,2017)来实现这一目的。
过度表达分析可能出现的一个问题是,假设每个通路中的每个基因在属于该通路方面具有“相等”的价值。实际上,一种蛋白质可以具有多种(有时是非常不同的)功能,并且属于多个通路,例如蛋白激酶。还有一些通路与细胞机制有相当大的重叠,如 TLR 通路。这可能导致多个相似通路或甚至不相关的“假阳性”富集,使得解析结果变得非常困难。
一种解决方案是使用独特的基因对,正如 r BiocStyle::CRANpkg("sigora") 包的创建者所描述的(Foroushani 等,2013)。这种方法减少了由于多面性基因导致的相似和不相关通路的数量,更多地关注可能与基础生物学相关的通路。这种方法是 pathlinkR 中 pathwayEnrichment() 函数的默认方法。
pathwayEnrichment() 函数的输入是一个数据框列表(每个来自 DESeq2::results()),默认情况下会将基因分为上调和下调两类,然后分别对每组进行通路富集分析。列表中数据框的名称应表明在 DESeq2 结果中进行的比较,因为它将用于识别结果。对于 analysis="sigora",我们还需要提供一个基因对签名库(gpsRepo),其中包含要测试的通路和基因对。将此参数保留为“默认”将使用 sigora 中的 reaH GPS 库,包含人类 Reactome 通路。或者,也可以提供自己的 GPS 库;有关如何制作的详细信息,请参阅 ??sigora::makeGPS()。
## Note the structure of `exampleDESeqResults`: a named list of results from
## DESeq2
exampleDESeqResultsenrichedResultsSigora <- pathwayEnrichment(inputList=exampleDESeqResults,analysis="sigora",filterInput=TRUE,gpsRepo="default"
)head(enrichedResultsSigora)

对于那些仍然倾向于传统的过度表达分析的人,我们提供了通过设置analysis="reactome"来使用r BiocStyle::Biocpkg("ReactomePA")(Yu 等,2016)进行分析的选项。在使用这种方法时,我们建议提供一个基因全集,作为富集测试的背景;这里我们将使用 DESeq2 测试显著性的所有基因(即计数矩阵中的所有基因),在运行测试之前将它们转换为 Entrez 基因 ID。详情请参阅我们的 Github 页面 上的完整手册。
除了在设置analysis为“sigora”或“reactome”时使用的 Reactome 数据库外,我们还提供了使用 Molecular Signatures Database (MSigDb) 中的 Hallmark 基因集 进行过度表达分析。这些是 50 个基因集,代表“具有协调表达的特定、明确定义的生物学状态或过程”(Liberzon 等,2015)。与更细致的 Reactome 通路相比,这个数据库提供了关于关键生物学过程的更高级别的总结
enrichedResultsHm <- pathwayEnrichment(inputList=exampleDESeqResults,analysis="hallmark",filterInput=TRUE,split=TRUE
)head(enrichedResultsHm)

最后,用户在进行富集分析时也可以使用来自 KEGG 的数据。通过设置analysis="kegg",可以使用传统的过度表达分析;或者通过指定analysis="sigora"和gpsRepo="kegH",可以使用基于基因对的方法。
绘制通路富集分析结果
现在我们已经得到了来自多个比较的大量通路富集分析结果,是时候将它们可视化了。plotPathways()函数通过将Reactome通路(或Hallmark基因集)分组到父组下,并指示每个通路在每个比较中是上调还是下调,从而帮助我们轻松识别哪些通路在不同的差异表达基因(DEG)列表中是共享的或独特的。由于通常会有许多通路,您可以将绘图分成多列(最多3列),并截断通路名称以使结果更容易展示。
有时,一个通路可能在同一个DEG列表中的上调和下调基因中都富集(这种情况通常发生在较大的通路中)。这种现象会用一个白色星号表示,其中显示更显著(调整后的p值更低)的方向。您还可以更改比较的角度/标签,或者在标签下方添加每个比较中的DEG数量。最后,您可以指定要包含在可视化的通路或顶级通路组。
pathwayPlots(pathwayEnrichmentResults=enrichedResultsSigora, columns=2
)

这些绘图也可以进行多种调整:
- 基于顶级通路分组,仅显示与免疫相关的通路
- 改变用于调整后p值的颜色缩放
- 压缩比较名称以便更好地适应绘图,并使其水平显示
- 在比较名称下方添加用于富集的DEGs数量
- 增加通路名称的截断截止值,以便显示更多单词
从这些结果中,你可以看到,尽管许多免疫系统通路在COVID-19和非COVID-19脓毒症患者中随时间朝同一方向变化,但有一些独特的通路脱颖而出,大多与干扰素信号传导有关(“干扰素信号传导”、“干扰素γ信号传导”、“干扰素α/β信号传导”、“ISG15抗病毒机制”)。这可能反映了COVID-19患者早期抗病毒反应的增强,这种反应随时间减弱,而非COVID-19脓毒症患者则没有变化。
pathwayPlots(pathwayEnrichmentResults=enrichedResultsSigora,specificTopPathways="Immune System",colourValues=c("#440154", "#FDE725"),newGroupNames=c("COVID\nPositive", "COVID\nNegative"),showNumGenes=TRUE,xAngle="horizontal",nameWidth=50
)

从富集通路生成网络
pathlinkR 包含将基于 Reactome 的方法(“sigora”或“reactomepa”)的通路富集结果转换为网络的函数,通过计算分配给每个通路的基因的重叠来确定它们之间的相似性。在这些网络中,每个通路是一个节点,它们之间的连接或边是通过距离度量来确定的。可以设置一个阈值,当两个通路之间的相似性达到最小值时,它们被认为是相连的,并且会在它们的节点之间绘制一条边。
我们提供了一个预先计算好的 Reactome 通路距离矩阵,该矩阵是使用 Jaccard 距离生成的,但也支持使用多种距离度量。一旦创建了这个通路相互作用的“基础”,就可以使用 createPathnet() 函数构建通路网络:
data("sigoraDatabase")pathwayDistancesJaccard <- getPathwayDistances(pathwayData = sigoraDatabase)startingPathways <- pathnetFoundation(mat=pathwayDistancesJaccard,maxDistance=0.8
)# Get the enriched pathways from the "COVID Pos Over Time" comparison
exPathwayNetworkInput <- enrichedResultsSigora %>% filter(comparison == "COVID Pos Over Time")myPathwayNetwork <- pathnetCreate(pathwayEnrichmentResult=exPathwayNetworkInput,foundation=startingPathways
)
另一种可视化方法
pathnetGGraph(myPathwayNetwork,labelProp=0.1,nodeLabelSize=3,nodeLabelOverlaps=8,segColour="red",themeBaseSize = 12
)

填充的节点(通路)是富集的通路(即由pathwayEnrichment()输出的通路)。节点的大小与统计显著性相关,而边的厚度与两个相连通路的相似性有关。
pathnetVisNetwork(myPathwayNetwork)

仅使用差异表达基因(DEGs)生成通路网络
另一种选择是在生成通路网络信息时仅使用差异表达基因(DEGs),具体方法如下:
candidateData <- sigoraExamples %>%filter(comparison == "COVID Pos Over Time") %>% select(pathwayId, genes) %>%tidyr::separate_rows(genes, sep=";") %>%left_join(sigoraDatabase,by=c("pathwayId", "genes" = "hgncSymbol"),multiple="all") %>%relocate(pathwayId, ensemblGeneId, "hgncSymbol"=genes, pathwayName) %>%distinct()## Now that we have a smaller table in the same format as sigoraDatabase, we
## can construct our own matrix of pathway distances
candidateDistData <- getPathwayDistances(pathwayData=candidateData,distMethod="jaccard"
)candidateStartingPathways <- pathnetFoundation(mat=candidateDistData,maxDistance=0.9
)candidatesAsNetwork <- pathnetCreate(pathwayEnrichmentResult=filter(sigoraExamples, comparison == "COVID Pos Over Time"),foundation=candidateStartingPathways,trim=FALSE
)pathnetVisNetwork(candidatesAsNetwork, nodeLabelSize=30)

系统信息
R version 4.4.1 (2024-06-14)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 22.04.5 LTSMatrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.10.0
LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.10.0locale:[1] LC_CTYPE=en_CA.UTF-8 LC_NUMERIC=C [3] LC_TIME=en_CA.UTF-8 LC_COLLATE=en_CA.UTF-8 [5] LC_MONETARY=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8 [7] LC_PAPER=en_CA.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C time zone: America/Vancouver
tzcode source: system (glibc)attached base packages:
[1] stats4 stats graphics grDevices utils datasets methods
[8] base other attached packages:[1] DESeq2_1.46.0 SummarizedExperiment_1.36.0[3] Biobase_2.66.0 MatrixGenerics_1.18.0 [5] matrixStats_1.4.1 GenomicRanges_1.58.0 [7] GenomeInfoDb_1.42.0 IRanges_2.40.0 [9] S4Vectors_0.44.0 BiocGenerics_0.52.0
[11] pathlinkR_1.2.0 dplyr_1.1.4
[13] BiocStyle_2.34.0 loaded via a namespace (and not attached):[1] RColorBrewer_1.1-3 rstudioapi_0.17.1 jsonlite_1.8.9 [4] shape_1.4.6.1 magrittr_2.0.3 ggtangle_0.0.4 [7] magick_2.8.5 farver_2.1.2 rmarkdown_2.28 [10] GlobalOptions_0.1.2 fs_1.6.5 zlibbioc_1.52.0 [13] vctrs_0.6.5 memoise_2.0.1 ggtree_3.14.0 [16] rstatix_0.7.2 tinytex_0.53 htmltools_0.5.8.1 [19] S4Arrays_1.6.0 broom_1.0.7 Formula_1.2-5 [22] gridGraphics_0.5-1 SparseArray_1.6.0 sass_0.4.9 [25] bslib_0.8.0 htmlwidgets_1.6.4 plyr_1.8.9 [28] cachem_1.1.0 igraph_2.1.1 lifecycle_1.0.4 [31] iterators_1.0.14 pkgconfig_2.0.3 gson_0.1.0 [34] Matrix_1.7-1 R6_2.5.1 fastmap_1.2.0 [37] GenomeInfoDbData_1.2.13 clue_0.3-65 aplot_0.2.3 [40] enrichplot_1.26.1 digest_0.6.37 colorspace_2.1-1 [43] patchwork_1.3.0 AnnotationDbi_1.68.0 RSQLite_2.3.7 [46] ggpubr_0.6.0 vegan_2.6-8 labeling_0.4.3 [49] fansi_1.0.6 httr_1.4.7 polyclip_1.10-7 [52] abind_1.4-8 mgcv_1.9-1 compiler_4.4.1 [55] bit64_4.5.2 withr_3.0.2 doParallel_1.0.17 [58] backports_1.5.0 BiocParallel_1.40.0 carData_3.0-5 [61] viridis_0.6.5 DBI_1.2.3 highr_0.11 [64] ggforce_0.4.2 R.utils_2.12.3 ggsignif_0.6.4 [67] MASS_7.3-61 DelayedArray_0.32.0 rjson_0.2.23 [70] permute_0.9-7 tools_4.4.1 ape_5.8 [73] R.oo_1.26.0 glue_1.8.0 nlme_3.1-166 [76] GOSemSim_2.32.0 grid_4.4.1 reshape2_1.4.4 [79] cluster_2.1.6 fgsea_1.32.0 generics_0.1.3 [82] gtable_0.3.6 R.methodsS3_1.8.2 tidyr_1.3.1 [85] data.table_1.16.2 car_3.1-3 tidygraph_1.3.1 [88] utf8_1.2.4 XVector_0.46.0 ggrepel_0.9.6 [91] foreach_1.5.2 pillar_1.9.0 stringr_1.5.1 [94] yulab.utils_0.1.7 circlize_0.4.16 splines_4.4.1 [97] tweenr_2.0.3 treeio_1.30.0 lattice_0.22-6
[100] bit_4.5.0 tidyselect_1.2.1 GO.db_3.20.0
[103] ComplexHeatmap_2.22.0 locfit_1.5-9.10 Biostrings_2.74.0
[106] knitr_1.48 gridExtra_2.3 bookdown_0.41
[109] xfun_0.49 graphlayouts_1.2.0 visNetwork_2.1.2
[112] stringi_1.8.4 UCSC.utils_1.2.0 lazyeval_0.2.2
[115] ggfun_0.1.7 yaml_2.3.10 evaluate_1.0.1
[118] codetools_0.2-20 ggraph_2.2.1 tibble_3.2.1
[121] qvalue_2.38.0 BiocManager_1.30.25 ggplotify_0.1.2
[124] cli_3.6.3 munsell_0.5.1 jquerylib_0.1.4
[127] Rcpp_1.0.13 png_0.1-8 parallel_4.4.1
[130] ggplot2_3.5.1 blob_1.2.4 clusterProfiler_4.14.0
[133] DOSE_4.0.0 tidytree_0.4.6 viridisLite_0.4.2
[136] sigora_3.1.1 scales_1.3.0 purrr_1.0.2
[139] crayon_1.5.3 GetoptLong_1.0.5 rlang_1.1.4
[142] cowplot_1.1.3 fastmatch_1.1-4 KEGGREST_1.46.0
参考
- https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1012422
相关文章:
【R包】pathlinkR转录组数据分析和可视化利器
介绍 通常情况下,基因表达研究如微阵列和RNA-Seq会产生数百到数千个差异表达基因(deg)。理解如此庞大的数据集的生物学意义变得非常困难,尤其是在分析多个条件和比较的情况下。该软件包利用途径富集和蛋白-蛋白相互作用网络&…...
PyCharm 的使用 + PyCharm快捷键 + 切换中文界面
2025 - 02 - 27 - 第 62 篇 Author: 郑龙浩 / 仟濹 【PyCharm的使用】 文章目录 如何使用Pycharm1 新建工程,新建 .py 文件,运行2 常用快捷键3 其他快捷键 - DeepSeek 总结如下**代码编辑****导航与定位****查找与替换****运行与调试****代码重构****其…...
1.68M 免安装多格式图片批量转 webp 无广告软件推荐
软件介绍 今天要给大家分享一款超实用的图片处理工具,它能实现多格式图片向 webp 格式的转换,无论是 jpg、png、tif、gif 还是 webp 格式自身的图片,都能批量且借助多线程技术进行转换。 直接打开就能用,体积小巧,仅 …...
总结gcc与msvc在标准库实现上的不同
1. std::string::data()的返回类型区别 在C17以及之前的标准中,std::string::data()仅有一个返回类型const char *,MSVC遵守了这个规定。而GCC很早就有非标准扩展,重载了一个 char *data() noexcept;C20标准引入了这个非标准扩展。...
《Qt窗口动画实战:Qt实现呼吸灯效果》
Qt窗口动画实战:Qt实现呼吸灯效果 在嵌入式设备或桌面应用中,呼吸灯效果是一种常见且优雅的UI动画,常用于指示系统状态或吸引用户注意。本文将介绍如何使用Qt动画框架实现平滑的呼吸灯效果。 一、实现原理 利用Qt自带的动画框架来实现&…...
Rider 安装包 绿色版 Win/Mac/Linux 适合.NET和游戏开发者使用 2025全栈开发终极指南:从零配置到企业级实战
下载链接: https://pan.baidu.com/s/1cfkJf6Zgxc1XfYrVpwtHkA?pwd1234 导语:JetBrains Rider以跨平台支持率100%、深度.NET集成和智能代码分析能力,成为2025年全栈开发者的首选工具。本文涵盖环境配置、核心功能、框架集成、性能调优、团队…...
CVE-2025-1094: 通过 WebSocket 的 SQL 注入到 RCE
该存储库包含一个针对 CVE-2025-1094 的概念验证(PoC)漏洞利用,该漏洞存在于 PostgreSQL 中,允许通过 WebSocket 劫持将 SQL 注入(SQLi)攻击升级为远程代码执行(RCE)。 概述 该漏洞利用 PostgreSQL 中的 SQL 注入漏洞,注入恶意代码读取敏感文件(如 /etc/passwd),…...
详解Tomcat下载安装以及IDEA配置Tomcat(2023最新)
目录 步骤一:首先确认自己是否已经安装JDK步骤二:下载安装Tomcat步骤三:Tomcat配置环境变量步骤四:验证Tomcat配置是否成功步骤五:为IDEA配置Tomcat 步骤一:首先确认自己是否已经安装JDK jdk各版本通用安…...
AI如何通过大数据分析提升制造效率和决策智能化
人工智能(AI)与大数据技术的融合,不仅重新定义了生产流程,更让企业实现了从“经验驱动”到“数据智能驱动”的跨越式升级。 从“模糊经验”到“精准洞察” 传统制造业依赖人工经验制定生产计划,但面对复杂多变的市…...
开源程序wordpress在海外品牌推广中的重要作用
WordPress作为全球最流行的开源内容管理系统(CMS),在全球网站搭建中占据超过40%的市场份额。其强大的功能、灵活性和易用性使其成为企业进行海外品牌推广的首选平台。以下是WordPress在海外品牌推广中的重要性分析: 1. 多语言支持与本地化 WordPress通…...
kafka-关于ISR-概述
一. 什么是ISR ? Kafka 中通常每个分区都有多个副本,其中一个副本被选举为 Leader,其他副本为 Follower。ISR 是指与 Leader 副本保持同步的 Follower 副本集合。ISR 机制的核心是确保数据在多个副本之间的一致性和可靠性,同时在 …...
Android 8.0 (API 26) 对广播机制做了哪些变化
大部分隐式广播无法通过静态注册接收,除了以下白名单广播: ACTION_BOOT_COMPLETED ACTION_TIMEZONE_CHANGED ACTION_LOCALE_CHANGED ACTION_MY_PACKAGE_REPLACED ACTION_PACKAGE_ADDED ACTION_PACKAGE_REMOVED 需要以动态注册方案替换: cl…...
使用 Polars 进行人工智能医疗数据分析(ICU数据基本测试篇)
引言 在医疗领域,数据就是生命的密码,每一个数据点都可能蕴含着拯救生命的关键信息。特别是在 ICU 这样的重症监护场景中,医生需要实时、准确地了解患者的病情变化,以便做出及时有效的治疗决策。而随着医疗技术的飞速发展&#x…...
超过DeepSeek、o3,Claude发布全球首个混合推理模型,并将完成新一轮35亿美元融资...
Anthropic于2025年2月25日发布全球首个“混合推理”AI模型Claude 3.7 Sonnet,并在融资层面取得重大进展,计划完成35亿美元的新一轮融资,估值将达615亿美元。以下是核心信息整理: 技术突破:双思维模型与代码能力 1. 混合…...
# C# 中堆(Heap)与栈(Stack)的区别
在 C# 中,堆和栈是两种不同的内存分配机制,它们在存储位置、生命周期、性能和用途上存在显著差异。理解堆和栈的区别对于优化代码性能和内存管理至关重要。 1. 栈(Stack) 1.1 定义 栈是一种后进先出(LIFO࿰…...
OmniParser v2本地部署(2)部署omnitool(包含自动化控制工具)
1 配置omniparserserver 1.1 配置conda环境、下载依赖和权重 我建议按照OmniParser v2本地部署(1)部署OmniParser_v2模型先设置一次,其中所创造的conda环境,和这一步相似 1.2 启动omniparserserver 进入OmniParser/omnitool/o…...
“深入解析 SQL Server 子查询:从基础到应用”
目录 引言什么是子查询? 子查询的定义子查询的类型 子查询的使用 标量子查询多行子查询多列子查询相关子查询 子查询的性能优化子查询的实际案例总结 引言 在 SQL Server 中,子查询是一种强大的工具,允许我们在一个查询中嵌套另一个查询&am…...
音频进阶学习十六——LTI系统的差分方程与频域分析一(频率响应)
文章目录 前言一、差分方程的有理式1.差分方程的有理分式2.因果系统和ROC3.稳定性与ROC 二、频率响应1.定义2.幅频响应3.相频响应4.群延迟 总结 前言 本篇文章会先复习Z变换的有理分式,这是之前文章中提过的内容,这里会将差分方程和有理分式进行结合来看…...
JavaWeb-ServletContext应用域接口
文章目录 ServletContext接口简介获取一个ServletContext对象ServletContext接口中的相关方法获取应用域配置参数关于应用域参数的配置要求getContextPath获取项目路径getRealPath获取真实路径log系列方法添加相关日志增删查应用域属性 ServletContext接口简介 ServletContext…...
为什么@Autowired 在属性上被警告,在 setter 方法上不被警告
在 Spring 开发中,Autowired 注解常用于实现依赖注入。它可以应用于类的 属性、构造器 或 setter 方法 上。然而,当 Autowired 注解在 属性 上使用时,IntelliJ IDEA 等 IDE 会给出 Field injection is not recommended 的警告,而在…...
SQL命令详解之操作数据表
操作数据表 操作数据表是数据库管理系统中用于存储、管理和操作数据的核心结构。数据表通常由行和列组成,每一列代表一种数据类型(例如,整数、字符、日期等),而每一行代表一条记录(即数据项&a…...
Linux 下使用tracepath进行网络诊断分析
简介 tracepath 命令是 Linux 中的一个网络诊断工具,类似于 traceroute ,但专门用于跟踪到目标主机的网络路径,同时自动处理路径MTU发现。这是一种简单的方法,可以找出机器和远程目的地之间的跃点,同时还可以识别沿途…...
四、表关系与复杂查询
一、表关系设计与约束 1. 表关系类型与实现 关系类型实现方式示例场景一对一共享主键 或 外键唯一约束用户 ↔ 用户详细信息一对多外键约束部门 ↔ 员工多对多中间表 联合主键学生 ↔ 课程 2. 核心约束类型 -- 完整表创建示例(含约束) CREATE TABLE…...
Qt 中,**信号与槽(Signals Slots)机制
在 Qt 中,信号与槽(Signals & Slots)机制 是实现对象间通信的核心模式,通常也被视为一种高效的“通知者模式”。它允许对象在特定事件发生时通知其他对象,且完全解耦。 核心概念 信号(Signal࿰…...
Javaweb后端数据库多表关系一对多,外键,一对一
多表关系 一对多 多的表里,要有一表里的主键 外键 多的表上,添加外键 一对一 多对多 案例...
使用Apache Lucene构建高效的全文搜索服务
使用Apache Lucene构建高效的全文搜索服务 在现代应用程序中,全文搜索功能是不可或缺的一部分。无论是电子商务网站、内容管理系统,还是数据分析平台,快速、准确地搜索大量数据是提升用户体验的关键。Apache Lucene 是一个强大的全文搜索引擎…...
VScode在Windows11中配置MSVC
因为MSVC编译器在vs当中,所以我们首先要安装vs的一部分组件。如果只是需要MSVC的话,工作负荷一个都不需要勾选,在单个组件里面搜索MSVC和windows11 SDK,其中一个是编译器,一个是头文件然后右下角安装即可。搜索Develop…...
【洛谷贪心算法题】P2240部分背包问题
【解题思路】 贪心策略选择 对于部分背包问题,关键在于如何选择物品放入背包以达到最大价值。由于物品可以分割,遍历排序后的物品数组,根据物品重量和背包剩余容量的关系,决定是将整个物品放入背包还是分割物品放入背包ÿ…...
DevOps原理和实现面试题及参考答案
解释 DevOps 的核心目标与文化价值观,如何理解 “CAMS” 模型? DevOps 的核心目标是打破开发(Development)和运维(Operations)之间的壁垒,通过自动化、协作和持续反馈,实现软件的快速、可靠交付,以更好地满足业务需求和客户期望。具体来说,DevOps 旨在缩短软件的交付…...
《Somewhat Practical Fully Homomorphic Encryption》笔记 (BFV 源于这篇文章)
文章目录 一、摘要二、引言1、FHE 一般分为三个逻辑部分2、噪声的管理3. 贡献点4. 文章思路 三、基础数学知识四、基于 RLWE 的加密1. LWE 问题2. RLWE 问题3. RLWE 问题的难度和安全性 五、加密方案1. LPR.ES 加密方案2. Lemma 1 (引理 1)3. Optimisation/Assumption 1 (优化/…...
