gpt4 book ai didi

linux - 如何在Linux下的MATLAB(例如Ubuntu 14.04)下使COBRA工具箱在适当的SBML支持下工作?

转载 作者:行者123 更新时间:2023-12-01 05:12:19 31 4
gpt4 key购买 nike

考虑以下4个软件:

  • 眼镜蛇2.05
  • LibSBML 5.10
  • MATLAB R2013a(也称为8.1,64位; MATLAB不再支持32位Linux)
  • 64位Linux操作系统(例如Ubuntu 14.04或最新的Mint,但不仅限于此)

  • 简介
    COBRA工具箱是在MATLAB之上运行的优化套件,旨在开发用于代谢网络建模的MATLAB代码。这样的“网络”是方程式系统,可以具有大量的方程式和变量(例如数千个)。因此,必须根据某种格式规范来读写大型模型的例程,而COBRA为此使用标准的SBML。
    问题
    与Windows版本不同,Linux二进制程序包不能立即很好地集成:首先,可下载的libSBML(开源)预编译Linux二进制文件不附带MATLAB支持。如果尝试使用预编译的libSBML,则COBRA将找不到“MATLAB绑定(bind)”,因此将无法例如以m脚本从磁盘读取和写入SBML XML文件。
    问题
    要使COBRA 2.05在Linux(Ubuntu 14.04或最新的Mint,但这不太可能是特定于发行版的)下在Linux下的MATLAB R2013a上运行,需要执行什么操作才能读取和写入SBML XML文件?换句话说,要使COBRA通过自己的 testSBML测试,需要在系统范围内做些什么?

    最佳答案

    这就是我如何使其工作以及从我的Linux机器如何工作的所有麻烦中可以学到的东西。我希望我不会忘记/丢失/遗漏任何东西。

    1. MATLAB

    1.1。安装MATLAB

    将其安装在默认位置(为此您将需要root访问权限),不要像我想的那样固执。为什么:

    1.1.1。积分

    您很有可能会在某个时候安装使用MATLAB框架的其他软件,并且在现实世界中,即使您知道如何告诉它在哪里寻找,也不一定总能找到其他软件。

    1.1.2。让您的生活更轻松

    即使将大型软件安装在您有大量可用空间并且可以在多台机器上使用的位置(似乎是个好主意)(特别是在Linux中,它没有称为Registry的可憎之处,并且具有符号链接(symbolic link)) ),那可能只是个好主意-除了 1.1.1 项之外-如果该位置是Linux文件系统的分区,因为在某些时候,某些可执行文件/脚本将需要执行许可,并需要挂载整个分区对其所有文件具有执行权限是相当不安全的。因此,请勿将MATLAB放在外部HD的NTFS分区中;也许可以在外部HD中为Linux特定的东西创建Linux分区可以解决此问题,但这有多少麻烦?

    1.2。设置MATLAB,以便人们和其他软件可以启动它

    即使我在某处看到MATLAB安装程序最终为方便起见显示了在系统路径中创建符号链接(symbolic link)的选项,但在我看来并不是这样。但这没关系,因为无论如何我都必须用以下shell脚本(相同路径,相同文件名)替换符号链接(symbolic link)/usr/local/bin/matlab:

        #!/bin/sh
    export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
    exec /usr/local/MATLAB/R2013a/bin/matlab $*

    OBS:MATLAB需要 LD_LIBRARY_PATH以便以后找到SBML绑定(bind)并能够使用它们。另外,如果您安装了一些第三方求解器(例如TOMLAB),则很可能需要在此小启动器脚本中添加更多路径。
    OBS 2:就我而言,安装脚本没有自动创建任何启动器或快捷方式,但是我发现了一个无图标和无扩展名的 Matlab 8.01文件和一个matlab图标作为png文件,并且第一个文件是模板 .desktop文件我可以进行编辑以满足自己的需求,并放入 /usr/share/applications,以便Unity Dash可以找到它。该 Matlab.desktop文件的内容为:
        [Desktop Entry]
    Type=Application
    Icon=/usr/local/MATLAB/R2013a/Matlab.png
    Name=Matlab 8.01
    Comment="Start Matlab 8.01"
    Exec=/usr/local/MATLAB/R2013a/bin/matlab -desktop
    Categories=Development;
    Name=Matlab 8.01
    GenericName=Matlab 8.01
    Comment="Start Matlab 8.01"

    2. libSBML

    2.1。安装libSBML

    libSBML由特定于Ubuntu(和CentOS)的deb包提供,还提供了几种Windows和MacOSX版本的版本(它们的主页: http://sbml.org/Software/libSBML)。猜猜哪个是唯一没有使用MATLAB支持编译二进制文件的平台? Linux,当然。这意味着您将需要从源代码进行编译(因此deb包对您无用)。编译:

    2.1.1。安装依赖

    依赖性 libxml2-dev(来自软件管理器或终端):
        sudo apt-get install libxml2-dev

    2.1.2。节省 future 的时间

    通常,将先执行 configuremakemake install。但是,不建议这样做,原因与安装软件包中未包含的所有内容的原因相同:您将无法控制将哪些文件放在何处,并且需要保留源代码才能运行 make uninstall。需要稍后将其卸载。因此,请安装 checkinstall并用它代替步骤 make install,因为 checkinstall为您的系统创建了一个程序包,以后可以像任何常规程序包软件一样(从软件管理器或从终端)卸载或重新安装该程序包:
        sudo apt-get install checkinstall

    2.1.3。配置编译过程

    获取LibSBML源代码并将其解压缩到某个文件夹。在终端上,导航到该文件夹​​并配置编译:
        ./configure --with-matlab

    OBS:带有 with-matlab标志,配置脚本将失败,因为它找不到文件名为 matlab的可执行文件。如果失败,则输出找不到 matlab文件,但是它执行的测试实际上是针对文件的存在以及是否可执行。因此,如果文件位于NTFS分区中,则即使找到文件,配置也会失败,但会告诉您找不到文件。您可以通过传递它来强制它在 /path/to/matlab/root中查找可执行文件(它将在该路径中查找 bin文件夹,并在该 bin文件夹中查找可执行文件):
        ./configure --with-matlab=/path/to/matlab/root

    OBS:这会将libSBML安装在默认位置: /usr/local/lib。同样,最好将其安装在默认位置,但是如果您需要更改它,则可以使用以下标记传递路径: --prefix=/your/installation/path
    OBS 2:您可能会问,为什么libSBML需要找到并执行要在其支持下进行编译的matlab:它需要稍后启动MATLAB才能构建MEX文件(编译的MATLAB代码),所以我推测您将无法如果您的MATLAB没有编译器来生成MEX文件,则毕竟要安装libSBML。

    2.1.4。编译并安装libSBML
        make
    checkinstall

    非常重要的OBS :

    I) checkinstall要求确认即将创建的程序包的元数据。在我的情况下, version字段的字符串默认为“源”(不带引号),这导致 checkinstall失败,因为 dpkg(实际上是构建deb文件的系统工具)无法抱怨版本号必须以以下开头,好吧,一个数字。因此,请节省一些时间,并确保 version字段中的字符串以数字开头(即“5.10”,显然不带引号)

    II) checkinstall询问您是否要从 make install命令放入您的主文件夹的将来的软件包文件中排除,并说排除它们是一个好主意。 LibSBML有一个 test.xml文件,以后需要将它放在 $HOME文件夹中,否则它将不能让您与MATLAB集成。即使它告诉您缺少 test.xml,也不会告诉您该文件应该在哪里,或者该文件是否是库附带的。我只是注意到它,因为 checkinstall早先找到了 $HOME/test.xml引用(当然,我从软件包中排除了它),并且发现了这个奇怪的地方。因此,节省一些时间,并从 $HOME/test.xml生成的包中排除 checkinstall,然后在source-code文件夹中搜索 test.xml,并在 $HOME完成libSBML安装后将其复制到 checkinstall

    2.2。将libSBML集成到MATLAB

    启动MATLAB,导航到步骤 2.1.5 (在我的情况下: /usr/local/lib)中SBML MATLAB绑定(bind)的安装位置,然后运行应在其中的文件 installSBML.m

    2.2.1。共享库问题

    就我而言,由于一个旧的 Unresolved 问题,我出现了一个错误: libstdc++.so.6没有引用 GLIBCXX_3.4.15。事实证明,MATLAB试图使用 libstdc++.so.6.0.13附带的 libstdc++.so.6( /usr/local/MATLAB/R2013a/sys/os/glnxa64是指向此文件的符号链接(symbolic link)),它的确没有该引用(可以通过发出以下命令进行验证:
        strings /usr/local/MATLAB/R2013a/sys/os/glnxa64/libstdc++.so.6.0.13 | grep GLIBC

    )。我的系统在位于该引用的 libstdc++.so.6.0.19中有一个 /usr/lib/x86_64-linux-gnu,因此我通过正确设置 6.0.19(请引用步骤 1.2 )并通过将MATLAB随附的 LD_LIBRARY_PATH重命名为其他名称来强制MATLAB使用 libstdc++.so.6。找不到它,并且会一直寻找直到找到我的系统。我的一个运行Linux Mint的 friend 不需要重命名任何东西:对他来说,设置 LD_LIBRARY_PATH就足够了。

    2.2.2。其他问题

    如果找不到步骤 2.1.5 中提到的 installSBML.m文件,则 $HOME/test.xml将会失败,无论该库是否真正起作用。它假定如果无法使用假定文件位于 $HOME中的文件进行自我测试,则用户无论如何都不应选择安装该文件。

    3. COBRA/SBML工具箱

    3.1。设置眼镜蛇

    在MATLAB中,导航至 <YOUR_COBRA_ROOT_FOLDER_HERE>/external/toolboxes/SBMLToolbox-4.1.0/toolbox并在其中运行文件 install.m。您应该已经设置好所有内容,以便它找到在步骤 2.2 中设置的MATLAB绑定(bind)。

    3.2。 MATLAB setpaths问题

    我必须以root用户身份手动编辑文件 /usr/local/MATLAB/R2013a/toolbox/local/pathdef.m,以包括 /usr/local/lib文件夹(libSBML及其MATLAB绑定(bind)所在的文件夹)才能使该设置持久化。每次重新启动MATLAB时,无论通过MATLAB GUI设置其setpath时是否以root用户身份启动MATLAB,它的setpath都恢复为默认值。

    3.3。测试

    现在,您已经希望将所有点连接起来。试试看:在MATLAB中,导航至 <YOUR_COBRA_ROOT_FOLDER_HERE>并发出:
        initCobraToolbox
    testAll

    如果您尚未安装和配置任何第三方求解器,则应通过 19 测试中的 14 ,包括SBML测试( testSBML)。现在,您可以将SBML文件加载到MATLAB中并使用它们。

    关于linux - 如何在Linux下的MATLAB(例如Ubuntu 14.04)下使COBRA工具箱在适当的SBML支持下工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23727419/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com