2

我正在尝试让 biotools 在我的 Mac 上运行,以便我可以运行一些使用 Bio::DB::Sam 的 Perl5 代码,但我遇到了困难。

  • Mac OS X 10.10.4

  • perl 5.18.2

  • 按照安装说明升级 CPAN

  • 'brew install expat' 告诉我 expat-2.1.0_1 已经安装

  • 'sudo perl -MCPAN -e shell'

  • '安装 CJFIELDS/BioPerl-1.6.924.tar.gz'

  • “您要运行 Bio::DB::GFF 还是 Bio::DB::SeqFeature::Store 实时数据库测试?” =>'n'

  • 全部安装

  • '您是否要运行需要通过 Internet 连接到服务器的测试' => 'n'

最终得到(删除了一些行):

Running Build test
t/Align/AlignStats.t ................... ok     
t/Align/AlignUtil.t .................... ok     
t/Align/Graphics.t ..................... skipped: The optional module GD (or dependencies thereof) was not installed
...
t/AlignIO/msf.t ........................ ok   
t/AlignIO/nexml.t ...................... skipped: The optional module Bio::Phylo (or dependencies thereof) was not installed
t/AlignIO/nexus.t ...................... ok     
...
t/Assembly/ContigSpectrum.t ............ ok       
t/Assembly/IO/bowtie.t ................. skipped: The optional module Bio::DB::Sam (or dependencies thereof) was not installed
t/Assembly/IO/sam.t .................... skipped: The optional module Bio::DB::Sam (or dependencies thereof) was not installed
t/Assembly/core.t ...................... ok       
t/Cluster/UniGene.t .................... ok   

之后,我测试:

perl -e "use Bio::DB::Sam;"

并得到:

Can't locate Bio/DB/Sam.pm in @INC (you may need to install the Bio::DB::Sam module) (@INC contains: /Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18 /Network/Library/Perl/5.18/darwin-thread-multi-2level /Network/Library/Perl/5.18 /Library/Perl/Updates/5.18.2/darwin-thread-multi-2level /Library/Perl/Updates/5.18.2 /System/Library/Perl/5.18/darwin-thread-multi-2level /System/Library/Perl/5.18 /System/Library/Perl/Extras/5.18/darwin-thread-multi-2level /System/Library/Perl/Extras/5.18 .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

从 GitHub 克隆 bioperl-live(同步到修订版 73c446c69a77)并尝试以这种方式安装时,我得到了相同的结果。

请注意,我通过以下方式安装了 samtools 0.1.18(以匹配我们集群上的版本):

  • 下载 .tar.gz

  • 运行“制作”

  • 将“samtools”、“bcftools/bcftools”和“misc/*.pl”复制到我的路径上的 ~/debarcer-packages/bin

之后,我得到了这个:

$ which samtools
/Users/gvwilson/debarcer-packages/bin/samtools

尽管 samtools-0.1.18 Makefile 中有一条规则看起来(也许?)应该产生一个,但这个构建没有产生一个“.so”文件。

4

2 回答 2

2

模块 Bio::DB::Sam 提供与不依赖htslib的旧版本 samtools 的绑定。这一点很重要,因为使用 samtools 或其他对齐器生成的 SAM/BAM 文件可能会遇到问题,因为现在大多数工具都使用 htslib。

对于构建模块,您使用的版本是正确的,但如果您不知道正确的标志,则很难构建。我之前提供了一个解决方案来做到这一点,我将在这里展示一个更好的方法(只需使用 Perl 模块的包管理器)。

wget http://sourceforge.net/projects/samtools/files/samtools/0.1.18/samtools-0.1.18.tar.bz2
tar xjf samtools-0.1.18.tar.bz2 && cd samtools-0.1.18
make CFLAGS=-fPIC
export SAMTOOLS=`pwd`

最后一个命令将允许您安装 Perl 模块,而无需查找到 samtools 的 PATH 并被提示输入它。请注意,您的 Mac 上可能不需要额外的 CFLAGS 参数,因此请先尝试不使用它。它在 Linux 上是必需的,并且由于该模块使用如此多的内存,您可能只会在 Linux 机器上使用它。现在,安装 Perl 模块。

cpanm Bio::DB::Sam

或者cpan,如果您愿意。这应该让你得到一个工作的 Bio::DB::Sam。我不知道您要做什么,但我会提到 EBI 的优秀人员已经开发了与 htslib 的绑定,称为Bio::DB::HTS基于林肯斯坦在 Bio::DB::Sam 中的 XS 代码模块。这确实是您应该使用的,因为上面提到的 SAMtools 版本真的很旧并且没有被开发。这是我的意见,但请注意,Bio::DB::Sam 并没有错。

编辑:

您会发现不使用“系统”Perl 来管理 Perl 会更容易,这里有一个解决方案。其他人可能有他们喜欢的方法,但是perlbrew(与 cpanminus 结合使用)将使这种类型的工作变得有趣并且少得多痛苦(它们是流行的选择)。那将是我的第一步:设置 perlbrew,安装 Perl 5.22,然后安装 cpanminus。这听起来可能很有挑战性,但这只是几个命令。类似于以下内容:

curl -L http://install.perlbrew.pl | bash
source ~/perl5/perlbrew/etc/bashrc
perlbrew install perl-5.22.1
perlbrew switch perl-5.22.1
perlbrew install-cpanm

应该做的伎俩。这将为您提供一个出色的 Perl,其中包含您的“系统”Perl 所不具备的一些不错的功能。这是一个好主意,因为使用 /usr/bin/perl 需要 sudo,它涉及弄乱可能导致问题的系统库,而最近的 Apple 更改意味着使用根目录/库是完全不稳定的。

于 2016-03-19T00:46:39.800 回答
2

您需要安装附加(可选)模块才能使用 samtools。这就是The optional module Bio::DB::Sam信息的内容。BioPerl 的其余部分不需要它,所以它不是硬依赖。

对于Bio::DB::Sam,您需要samtools-0.1.17(模块根据其文档使用的最新版本)。我下载了源代码并运行了make. 有一些警告,但它似乎有效。从你的问题来看,我认为你在这里没有问题。

然后我安装了Bio::DB::Sam

 $ cpan Bio::DB::Sam

有一些编译器警告,但模块通过了测试并安装。该cpan命令也处理依赖关系,因此它还为我安装了 BioPerl。

如果您需要一些环境变量,可以将它们设置为一次性运行命令:

$ CFLAGS=... SAMTOOLS=... cpan Bio::DB::Sam

请注意,安装Bio::DB::Sam提示我输入 samtools 的位置。我将它指向构建目录:

$ cpan5.22.0 Bio::DB::Sam
Running install for module 'Bio::DB::Sam'
Configuring L/LD/LDS/Bio-SamTools-1.43.tar.gz with Build.PL
This module requires samtools 0.1.10 or higher (samtools.sourceforge.net).
Please enter the location of the bam.h and compiled libbam.a files: /Users/brian/Downloads/samtools-0.1.17

我敢打赌,没有像SES 给出的答案那样复杂的东西。您只需要一个可选模块。Bio::DB::SamREADME记录了人们可能遇到的一些问题并提供了解决方法,但我没有遇到这些问题,而且我的设置与您的设置很接近。

请注意Alien::SamTools是一个安装非 Perl samtools 的 Perl 包,但它说它安装的是 0.1.19。也许这也有效,但这不是Bio::DB::Sam在锡罐上所说的。

于 2016-03-24T18:16:37.313 回答