解决cdt.causality.graph.GES()报错的问题

        最近在做因果推断的一些东西,在做因果图发现的时候无意中找到了cdt这个库,发现它集成了很多因果推断相关的算法,打算学习一下。在装好这个库之后(pip install cdt),跑了一下官网里的demo,在跑到model=cdt.causality.graph.GES()这一句的时候出现了一些问题,最后发现和R语言的依赖有关系,费了不少劲才解决,在这里记录一下。

        首先,直接跑demo的话会报错:

demo.py:

import cdt
import networkx as nx
import matplotlib.pyplot as plt

if __name__ == '__main__':

    data, graph = cdt.data.load_dataset('sachs')
    print(data.head())

    glasso = cdt.independence.graph.Glasso()

    skeleton = glasso.predict(data)
    new_skeleton = cdt.utils.graph.remove_indirect_links(skeleton, alg='aracne')

    model = cdt.causality.graph.GES()
    output_graph = model.predict(data, new_skeleton)

报错信息如下:

这个报错信息很模糊,我初步判断是找不到R的相关依赖,在网上找到了这篇博客https://blog.csdn.net/qq_41365630/article/details/115186063,它是通过直接修改Lib\site-packages\cdt\utils\Settings.py文件来设置与Rscript.exe的链接的,我这里通过在demo的最前面添加一句

cdt.SETTINGS.rpath = 'C:/Program Files/R/R-3.6.2/bin/Rscript.exe'

来得到同样的效果,其中rpath改成自己电脑上装的位置 。

加上这句之后,再次跑demo文件,报错信息有变化,提示我找不到“pcalg”这个包

我尝试直接打开RStudio,install.packages("pcalg"),结果提示我缺少graph和RBGL两个包,并且这两个包也无法直接通过install.packages的方式进行安装,因此我想通过bioconductor这个网站直接下载这两个包的源文件手动安装(bioconductor和CRAN是两个最常用的R依赖包下载网址,但是graph我在CRAN里没找到)

然而当我进了bioconductor尝试直接下载的时候,点了下载链接没反应。。。于是我又在网上找了另一篇博客(很遗憾链接我现在找不到了),在Rstudio里先后运行了以下代码:

if (!requireNamespace("BiocManager", quietly = TRUE))
+     install.packages("BiocManager")
BiocManager::install("graph")

 成功将graph包安装好

然后再运行

install.packages("RBGL")

将RBGL包也装好

最后直接运行

install.packages("pcalg")

成功将pcalg包装好了!!!

最后,再次运行demo文件,不再报错,问题解决!

最后的demo.py

import cdt
import networkx as nx
import matplotlib.pyplot as plt

if __name__ == '__main__':
    cdt.SETTINGS.rpath = 'C:/Program Files/R/R-3.6.2/bin/Rscript.exe'
    data, graph = cdt.data.load_dataset('sachs')
    print(data.head())

    glasso = cdt.independence.graph.Glasso()

    skeleton = glasso.predict(data)
    new_skeleton = cdt.utils.graph.remove_indirect_links(skeleton, alg='aracne')

    model = cdt.causality.graph.GES()
    output_graph = model.predict(data, new_skeleton)

    nx.draw_networkx(output_graph)
    plt.show()

(其中我加了output_graph的可视化,结果是下面这样的)

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 计算流体力学是研究流体运动的学科,通常用来描述流体在不同条件下的流动和相互作用。而有限元方法是一种数值计算方法,多用于求解偏微分方程。result_of_cdt.mat是一种文件格式,可能是计算流体力学有限元方法计算得出的结果文件。 计算流体力学有限元方法是通过将流体领域离散成有限个单元,建立数学模型,利用有限元法求解离散化后的运动方程,最终得到流体的运动状态。这种方法的优势在于可以灵活地处理复杂的流动问题,并且兼顾了数值计算的准确性和计算效率。 result_of_cdt.mat可能是计算流体力学有限元方法计算得到的结果文件,其可能含了流体的速度、压力、温度等参数的分布情况。我们可以通过打开这个文件,读取其的数据,了解流体在初始条件和边界条件下的运动状态。 对于result_of_cdt.mat文件的数据,我们可以进行进一步的分析和处理。例如,可以进行可视化,绘制流体速度、压力等参数的分布图,从而直观地了解流体的运动情况。也可以进行数据分析,计算流体的平均速度、最大压力等物理量,以评估流体的特性和性能。 综上所述,计算流体力学有限元方法可以帮助我们研究流体的运动规律,而result_of_cdt.mat是一种可能含有限元计算结果的文件格式。通过对该文件的数据进行分析和处理,我们可以更深入地了解流体的运动状态和性质。 ### 回答2: 计算流体力学有限元(CFD)是一种数值分析方法,用于研究和模拟流体的运动和行为。有限元是一种数值方法,广泛应用于求解不连续介质的流体或气体运动方程。 "result_of_cdt.mat" 是一个文件,可能含CFD模拟的计算结果。".mat"文件通常是Matlab软件保存数据的二进制文件格式,其含了从CFD模拟得到的流体力学结果数据。 根据文件名,我们可以猜测"result_of_cdt.mat"可能含了由CFD模拟计算得到的结果数据。这些结果可以涉及流体的速度分布、压力分布、温度分布等。 要获取这些结果数据,我们可以使用Matlab软件加载并读取".mat"文件。一旦成功加载文件,我们可以使用Matlab的函数和工具箱来处理和分析这些数据。 例如,我们可以使用Matlab的可视化工具绘制出流体速度矢量场、压力等值线等图形,以更好地理解流体的运动行为。我们还可以使用Matlab的统计工具对这些数据进行分析和提取关键信息。 总之,"result_of_cdt.mat"是一个含了CFD模拟计算结果的文件。通过加载和分析这些数据,我们可以更全面地了解和研究流体力学现象。 ### 回答3: 计算流体力学是研究流体在受力下运动的一门学科,它使用数学方法和计算机模拟来解析流体力学问题。有限元法是计算流体力学一种常用的数值计算方法,它将流体领域离散为有限个小单元,通过对这些小单元的运动状态进行计算来得到整个流体域的运动规律。 result_of_cdt.mat 是使用有限元法计算流体力学问题得到的结果文件,其含了计算得到的流体领域的各个参数和变量等信息。这个结果文件可以用来进行后续的分析和应用。 通过读取 result_of_cdt.mat 文件,我们可以获取到流体域的各个位置的流速、压力、温度等信息,这些信息可以用来分析流体的流动规律、压力分布、能量传递等问题。而且,我们还可以通过对这些参数和变量进行进一步的处理和分析,比如计算出流体的流量、阻力等重要参数。 此外,result_of_cdt.mat 文件还可以用于对流体力学模型的验证和优化。通过与实验数据进行比对,我们可以评估有限元法计算结果的准确性和可靠性。如果模型的计算结果与实验结果吻合较好,我们可以认为该有限元模型是可用的,并用于进一步的应用和分析。 综上所述,result_of_cdt.mat 是计算流体力学有限元计算得到的结果文件,通过对其进行分析和应用,我们可以了解到流体在受力下的运动规律,并对相关问题进行进一步的研究和优化。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值