系统相关
首页 > 系统相关> > 如何让COBRA工具箱在Linux下的MATLAB(如Ubuntu 14.04)中使用适当的SBML支持?

如何让COBRA工具箱在Linux下的MATLAB(如Ubuntu 14.04)中使用适当的SBML支持?

作者:互联网

考虑这4个软件:

1)COBRA 2.05

2)LibSBML 5.10

3)MATLAB R2013a(也称为8.1,64位; MATLAB不再支持32位Linux)

4)64位Linux操作系统(如Ubuntu 14.04或最新的Mint但不限于它们)

介绍

COBRA工具箱是一个在MATLAB上运行的优化套件,旨在开发用于代谢网络建模的MATLAB代码.这种“网络”是一个方程组,可以有很多方程和变量(如数千).因此,根据某种格式规范读取和写入那些大型模型的例程是必须的,COBRA使用标准SBML.

问题

与Windows版本不同,Linux二进制包不能很好地集成开箱即用:首先,可供下载的libSBML(开源)的预编译Linux二进制文件不具备MATLAB支持.如果尝试使用预编译的libSBML,COBRA将无法找到“MATLAB绑定”,因此无法在m脚本中从磁盘读取和写入SBML XML文件.

这个问题

需要做些什么才能使COBRA 2.05在Linux下运行的MATLAB R2013a(Ubuntu 14.04或最新的Mint,但这不太可能是特定于发行版)能够读写SBML XML文件?换句话说,需要在整个系统范围内做些什么才能使COBRA通过自己的testSBML测试?

解决方法:

这就是我如何使它工作以及我可以从有关我的Linux盒子如何工作的所有麻烦中学到的东西.我希望我不会忘记/遗失/误解任何事情.

1. MATLAB

1.1.安装MATLAB

将它安装在默认位置(你需要root访问权限),不要像我试图的那样固执.为什么:

1.1.1.积分

您很可能希望在某些时候安装一些使用MATLAB框架的其他软件,而在现实世界中,即使您知道如何告诉它在哪里寻找,软件并不总能找到其他软件.

1.1.2.让您的生活更轻松

尽管在一个有大量可用空间的地方安装一个大软件并且可以在多台机器中使用(特别是在Linux中,没有那种可憎的名为Registry,并且具有符号链接)似乎是一个好主意),这可能只是一个好主意 – 除了项目1.1.1 – 如果那个地方是一个Linux文件系统的分区,因为在某些时候,某些可执行文件/脚本需要执行权限,并在执行时挂载整个分区对其所有文件的许可是相当不安全的.因此,不要将MATLAB放在外部HD的NTFS分区中;也许在外部HD中创建一个Linux分区只是针对特定于Linux的东西可以解决这个问题,但这有多麻烦?

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

尽管我已经看到MATLAB安装程序最终会在系统路径中显示创建符号链接的选项,但是在我的情况下却没有.但这没关系,因为我必须用以下shell脚本(相同的路径,相同的文件名)替换符号链接/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绑定并能够使用它们.此外,如果您安装某些第三方解算器(如TOMLAB),则很可能需要在此小启动器脚本中添加更多路径.
OBS 2:在我的情况下,安装脚本没有自动创建任何启动器或快捷方式,但我找到了一个无图标和无扩展的Matlab 8.01文件和一个matlab图标作为png文件,并且第一个文件是模板.桌面文件,我可以编辑以满足我的需要,并放入/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.将来节省一些时间

通常,人们会进行配置,制作然后进行安装.但是这不推荐用于安装任何不在一个小包装中的任何东西:你将失去对哪些文件去哪里的控制权,并且需要保持源代码能够运行make uninstall if你需要稍后卸载它.因此,安装checkinstall并使用它来替换步骤make install,因为checkinstall会为您的系统创建一个包,以后可以像任何常规打包软件一样卸载或重新安装(来自软件管理器或终端):

    sudo apt-get install checkinstall

2.1.3.配置编译过程

获取LibSBML源代码并将其解压缩到某个文件夹.从终端导航到该文件夹​​并配置编译:

    ./configure --with-matlab

OBS:使用with-matlab标志,配置脚本将失败,它无法找到文件名为matlab的可执行文件.如果失败,则输出无法找到matlab文件,但它执行的测试实际上是文件的存在以及是否可执行.因此,如果文件位于NTFS分区中,即使找到该文件,configure也会失败,但会告诉您无法找到该文件.您可以强制执行它以通过传递在/ 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要求确认它将要创建的包的元数据.在我的例子中,版本字段的字符串默认为“Source”(没有引号),这导致checkinstall失败,因为dpkg(实际构建deb文件的系统工具)失败,抱怨版本号必须以,好吧,一个数字.所以,节省一些时间并确保版本字段中的字符串以数字开头(即“5.10”,显然没有引号)

II)checkinstall询问您是否要从将来的包文件中排除make install命令将放在您的主文件夹中,并说它是排除它们的好主意. LibSBML有一个test.xml文件,它需要稍后在$HOME文件夹中,否则它将不允许你与MATLAB集成.即使它告诉你缺少test.xml,它也不会告诉你该文件应该在哪里,或者该文件是否随库一起提供.我只是注意到它,因为checkinstall之前找到了$HOME / test.xml引用(当然我从包中排除了)并且我发现它很奇怪.因此,节省一些时间并从checkinstall生成的包中排除$HOME / test.xml,然后在source-code文件夹中搜索test.xml,并在checkinstall安装libSBML后立即将其复制到$HOME.

2.2.将libSBML集成到MATLAB中

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

2.2.1.共享库问题

在我的情况下,由于一个旧的未解决的问题我有一个错误:libstdc .so.6没有引用GLIBCXX_3.4.15.原来,MATLAB试图使用的libstdc .so.6.0.13(的libstdc .so.6是指向该文件的符号链接),在/ usr /本地/ MATLAB / R2013a用它来/ SYS / OS / glnxa64确实没有那个参考(人们可以通过发布:

    strings /usr/local/MATLAB/R2013a/sys/os/glnxa64/libstdc++.so.6.0.13 | grep GLIBC

).我的系统有一个位于/usr/lib / x86_64-linux-gnu中的libstdc .so.6.0.19,它有该引用,所以我通过正确设置LD_LIBRARY_PATH强制MATLAB使用6.0.19(参见步骤1.2)和也可以通过将MATLAB附带的libstdc .so.6重命名为其他东西,这样就找不到它,并且会一直看到它找到我的系统.我的一个朋友运行Linux Mint不需要重命名任何东西:对他来说,设置LD_LIBRARY_PATH就足够了.

2.2.2.其他问题

如果找不到步骤2.1.5中提到的$HOME / test.xml文件,installSBML.m将失败,无论库是否实际工作.它假定如果它无法使用假定在$HOME中的文件来测试自身,则用户无论如何都不应该选择安装它.

3. COBRA / SBML工具箱

3.1.设置COBRA

在MATLAB中,导航到< YOUR_COBRA_ROOT_FOLDER_HERE> /external/toolboxes/SBMLToolbox-4.1.0/toolbox并在那里运行install.m文件.您应该设置所有设置,以便找到您在步骤2.2中设置的MATLAB绑定.

3.2. MATLAB setpaths问题

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

3.3.测试

现在你希望连接所有的点.试一试:在MATLAB中,导航到< YOUR_COBRA_ROOT_FOLDER_HERE>和问题:

    initCobraToolbox
    testAll

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

标签:io,linux,matlab,bioinformatics
来源: https://codeday.me/bug/20190708/1404932.html