MetaPhase:一种使用 Hi-C 进行宏基因组解卷积的软件工具。
由美国华盛顿州西雅图华盛顿大学基因组科学系的 Josh Burton ( jnburton at uw.edu
) 创建
发表于G3:基因 |基因组|遗传学(请引用)在这里:http://dx.doi.org/10.1534/g3.114.011825
什么是 MetaPhase,我为什么关心?
为了使用 MetaPhase,我需要具备什么?
系统要求
下载 MetaPhase 包
编译 MetaPhase 包
演练:在示例数据集上尝试 MetaPhase
输入文件列表
创建宏基因组草稿
将 Hi-C 读数与宏基因组组装草案对齐
提供参考基因组
创建 TSV 文件
必需的命令行参数
可选的命令行参数
输出命令行参数(所有可选切换)
图表
图片
输出目录中的文件
运行LACHESIS
MetaPhase 将无法运行!
MetaPhase 崩溃了!
MetaPhase 产生了一个奇怪的结果!
MetaPhase 是一种执行宏基因组反卷积的软件工具。 也就是说,它输入一个宏基因组组装体(由混合基因组样本创建的组装体,通常是许多不同微生物物种的组装体),并确定该组装体中的哪些重叠群属于同一基因组。 宏基因组组装不包含混合样本中任何一种物种的完整基因组,但解卷积组装可以包含许多单个物种的几乎完整基因组。 MetaPhase 依赖于 Hi-C 生成的数据,Hi-C 是一种研究染色质构象的成熟分子技术(论文)。
如果您正在研究微生物群落并且想要了解单个微生物物种的基因组,则需要使用 MetaPhase。 MetaPhase 在相当复杂的群落中效果很好,它可以同样很好地研究真核生物和原核生物。 MetaPhase 无法对同一物种的密切相关菌株进行解卷积;它将把所有这些菌株放入一个簇中。 MetaPhase 尚未在包含数千个物种的群落(例如人类肠道微生物组)上进行测试,也无法可靠地检测丰度远低于 1% 的物种。 (请注意,此处的限制在于标准从头宏基因组组装软件无法生成包含稀有物种重叠群的宏基因组组装草案,而不是 MetaPhase 无法对这些重叠群进行解卷积。)
如果您正在研究单个物种内的菌株变异,则不需要使用 MetaPhase。 或者,如果您正在研究人类癌症基因组中的基因组重排。 您也不想使用 MetaPhase,除非您拥有宏基因组 Hi-C 数据集或愿意创建一个; Hi-C 并不是一项简单的学习技术。 纯计算(而不是分子)宏基因组反卷积很困难,但并非不可能:请参阅 MetaPhase 论文简介中引用的论文。
从较高层面来说,运行 MetaPhase 只需要做两件事:
从头开始的宏基因组组装草案。 这可以通过任意数量的组装工具(例如 Velvet、IDBA-UD、ABySS 或 SPAdes)从鸟枪法宏基因组测序文库创建。
从宏基因组样本创建的 Hi-C 测序文库- 最好是用于创建从头宏基因组组装的相同样本,或非常相似的样本。
在较低级别,MetaPhase 需要多个不同的输入文件以及一些可选输入。 有关输入文件的更多详细信息,请参阅 C1 节“输入文件列表”。
要设置和运行 MetaPhase,您需要一台在 UNIX 环境中运行且至少有 16GB 内存的计算机,并安装以下软件:
gcc,C++ 编译器 (http://gcc.gnu.org/)
zlib 压缩库 (http://www.zlib.net/)
您可能还需要以下软件:
短读长对齐器 BWA (http://bio-bwa.sourceforge.net/) 或其他此类对齐器
命令行形式的 BLAST 对齐器 (http://www.ncbi.nlm.nih.gov/books/NBK1763/),包括命令blastn
、 tblastx
和makeblastdb
bmtagger 软件用于从宏基因组数据集中删除人类读数 (http://biowulf.nih.gov/apps/bmtagger.html)
MetaPhase 还需要 boost C++ 库 (http://www.boost.org/) 和 SAMtools 工具包 (http://samtools.sourceforge.net/),但这些都包含在 MetaPhase 安装包中。
从 https://github.com/shendurelab/MetaPhase/archive/master.zip 将 MetaPhase 包下载到 UNIX 文件系统中。 如果您下载 tarball ( MetaPhase.tar.gz
),请使用以下 UNIX 命令将其解压:
tar xzvf MetaPhase.tar.gz
cd MetaPhase/
从这里开始,我将主 MetaPhase 目录称为<MetaPhase>
。
要编译 MetaPhase,只需在<MetaPhase>
目录中键入make
即可。 为了运行 MetaPhase,您可能还需要将<MetaPhase>/include/boost_1_47_0/stage/lib
添加到您的$LD_LIBRARY_PATH
(以避免出现问题: cannot open shared object file...
)最后,确保运行来自<MetaPhase>
目录的 MetaPhase 或将该目录添加到您的$PATH
。 这很重要,因为某些 MetaPhase 模块需要访问可执行脚本FastaSize
、 CountMotifsInFasta.pl
、 Fig2a.R
和MakeClusteringResultHeatmap.R
,这些脚本包含在 MetaPhase 包中。
MetaPhase 包包含一个小测试用例,您可以运行它来了解 MetaPhase 的工作原理。 它包含在目录test_case
中,该目录具有以下子目录:
<MetaPhase>/test_case/assembly/
:包含从头开始的宏基因组组装草稿, assembly.fasta
。 该组合由 20 个重叠群组成,这些重叠群取自更大的细菌性阴道病样本组合。 它在这里作为宏基因组组装的玩具示例。
<MetaPhase>/test_case/HiC/
:包含 2 个 fastq 文件,BV.H3.head.bmt.1.fq 和 BV.H3.head.bmt.2.fq。 这些读数是从细菌性阴道病样本中测序的更大 Hi-C 数据集的子集。 它们已经使用 bmtagger 进行了过滤,以删除人类读取的内容。
<MetaPhase>/test_case/refs/
:包含惰性乳杆菌的一个公开可用的参考基因组LI.fasta
。 这是一个可选输入,MetaPhase 将使用它来查看其簇是否与L. iners基因组匹配。
<MetaPhase>/test_case/tsvs/
:包含两个 TSV 文件,描述其他输入文件的位置并由 MetaPhase 使用。
<MetaPhase>/test_case/out/
:该目录最初不存在。 当 MetaPhase 在测试用例上运行时,它将创建此目录并将其输出放在这里。
test_case 中缺少的一个(可选)输入是核苷酸序列的 BLAST 数据库。 该数据库允许您根据所有已知序列查询宏基因组组装的重叠群,对于测试包来说太大了,但可以从 BLAST 网站下载。 要使用此数据库,您需要设置--blast_dir
命令行参数。
要将 MetaPhase 应用于 test_case,请运行以下命令:
准备从头宏基因组组装草案,以便与 BWA 对齐。 请注意, bwa
必须位于您的$PATH
中。 cd <MetaPhase>/test_case/assembly
../../FastaSize assembly.fasta
bwa index -a bwtsw assembly.fasta
将 Hi-C 读数与装配草案对齐。 这使用了align.sh
,这是一个已经提供的脚本,它运行bwa aln
和bwa sampe
,并创建MetaPhase将使用的BAM文件。请注意,您必须使用bwa aln
和bwa sampe
,而不是bwa mem
。 cd align.sh
cd <MetaPhase>/test_case/HiC
检查 TSV 文件以确保您了解它们的用途。 cd <MetaPhase>/tsvs
cat test_case.refs.tsv
cat test_case.HiC_libs.tsv
现在,使用一组基本的命令行参数运行 MetaPhase 测试用例。 所有这些命令行参数的用途将在下面的 D 节“运行 MetaPhase”中进行解释。 cd <MetaPhase>
MetaPhase -s test_case -a test_case/assembly/assembly.fasta -i test_case/tsvs --refs_dir test_case/refs -o test_case/out -N 3 --isolated_component_size 2 --jarvis_patrick_K 2
MetaPhase 要做的第一件事是将装配草图的重叠群与参考基因组 LI.fasta 进行比对。 这可能需要几分钟,但这是一次性的等待:结果将缓存在一个特殊文件中。 接下来,MetaPhase 将通过 Hi-C 连接对草稿装配中的 20 个重叠群进行聚类,创建 3 个簇(因为-N 3
)。最后,MetaPhase 将报告有关其创建的簇的基本统计数据。
现在尝试再次运行 MetaPhase,添加以下一个或多个命令行参数: --report_unclustered
、 --output_cluster_fastas
、 --output_heatmaps
、 output_network_image
。 每个选项都会导致更多信息以各种形式输出:要么到屏幕,要么到文件,要么到图像。 有关详细信息,请参阅 D2 节“可选命令行参数”。
现在查看test_case/out/test_case
。 这是 MetaPhase 运行创建的输出目录。 它包含几个输出文件。 文件cluster.*.fasta
是您的集群 fastas(仅当您使用--output_cluster_fastas
运行时它们才存在。)子目录cached_data
包含缓存数据文件,其中包括 BLAST 运行和 MetaPhase 集群的结果。
请注意,test_case 是一个非常小的数据集,其结果在生物学上不有用或不典型。 例如,Hi-C 读段对非常少,以至于 20 个重叠群中的 10 个完全未链接,而链接的重叠群位于三个独立的簇中(因此不可能生成少于 3 个簇。)这使我们无法说明另一个有用的示例MetaPhase的特点,就是我们可以用它来预测簇的数量。 在您的样本上(可惜不是在 test_case 上),您可以使用-N 1
运行 MetaPhase,它将生成一条E(N)富集曲线,就像 MetaPhase 论文图 S4 中的曲线一样。 这将使您确定宏基因组组装中物种的粗略数量,从而确定最佳簇数。
MetaPhase 直接使用以下输入文件。 有关所有这些文件的示例,请参阅 test_case。
所需文件:
宏基因组组装草案,fasta 格式
一个或多个 SAM/BAM 文件描述 Hi-C 读数与宏基因组组装草案的比对。 请注意,这些 SAM/BAM 文件的每个读取项只能列出一次,这意味着它们必须使用 bwa aln 和 bwa sampe 生成,而不是 bwa mem。
两个 TSV 文件<scenario>.HiC_libs.tsv
和<scenario>.refs.tsv
分别描述 BAM 输入文件集和参考基因组集。可选文件:
描述所有已知核苷酸 ( nt
) 和/或蛋白质 ( nr
) 序列的 BLAST 数据库。 可以从 BLAST 网站下载该数据库的更新版本,该网站还包含有关如何安装您需要的blastn
和tblastx
命令行实用程序的说明。 请注意,这些数据库很大(截至 2015 年, nt
约为 25 Gb, nr
约为 50 Gb。)
一组 fasta 格式的参考基因组,描述您认为存在于样本中或与样本中的事物相关的物种。 如果您不知道样本中的所有内容(而且您可能不知道),那么您可以等到您已经通过 BLAST 搜索将宏基因组组装对齐,然后从这些搜索结果中获取建议。 要查找某个物种的参考基因组组装,请搜索 NCBI 组装数据库。
SAM/BAM 文件,描述鸟枪读取与草图宏基因组组装的比对。 霰弹枪读取与用于创建装配的读取相同。 MetaPhase 可以使用此文件来估计样本中每个重叠群的丰度,从而估计每个簇的丰度。 目前如果不破解 MetaPhase.cc 就无法使用(抱歉。)
MetaPhase 最重要的输入之一是从头宏基因组组装草案。 您必须使用来自示例的霰弹枪读取自行创建此程序集。 有许多公开可用的从头宏基因组组装工具效果很好,包括 Velvet、IDBA-UD、ABySS 和 SPAdes。 我在开发 MetaPhase 时使用了 IDBA-UD。
重要的是要认识到 MetaPhase 不会产生任何新序列;它仅对程序集中已有的序列进行聚类。 如果样品中的某些序列没有进入组装草案 - 因为它太罕见、GC 太不平衡、太重复或任何其他原因 - 那么 MetaPhase 不可能将其聚类到基因组中。 为了获得具有最大序列量和最长重叠群 N50 的组装,可能值得在宏基因组组装程序或许多不同的宏基因组组装工具中尝试许多不同的选项。
当 MetaPhase 的输入重叠群较长时,其性能会更好,因为它可以使用更清晰的 Hi-C 连接信号。 特别是, MetaPhase 无法对不包含任何限制性酶位点的重叠群进行聚类,因为 Hi-C 读取无法可靠地与其对齐。 在选择用于 Hi-C 实验的限制性内切酶时,请记住这一事实。 如果您的宏基因组组装体具有较小的 N50,您可能需要使用 4 切割酶而不是 6 切割酶。 (例如,如果您的宏基因组装配体的 N50 仅 4 Kb,那么使用 6 切割器(大约每 4 Kb 切割一次)制作的 Hi-C 文库将完全无法对装配体序列的 50% 进行聚类。)
除了宏基因组组装本身之外,MetaPhase 还将 Hi-C 读数的比对输入到宏基因组组装中。 该文件必须采用 SAM 或 BAM 格式,并且必须包含每个 Hi-C 只读一次。 您可以使用任何生成 SAM/BAM 文件的对准器;我在开发 MetaPhas 时使用了 bwa;如果您使用 bwa,请确保使用 bwa aln 和 bwa sampe,而不是 bwa mem,它会多次输出每个读取内容!)
Hi-C 读数是独特的:它们是故意嵌合的,具有嵌合连接位点,其序列从限制性酶中已知(例如,HindIII 在 AAGCTT 处切割并在重新连接时产生 AAGCTAGCTT。)因此,直接的比对方法将错过了许多有用的 Hi-C 配对。 您可能想要设计一个自定义对齐管道以最大限度地提高产量;如果是这样,请查看脚本align.iter.interactive.sh
,我在自己的开发中使用了该脚本,可能会为您提供有关自定义管道的想法。
向 MetaPhase 提供参考基因组完全是可选的,但非常有用。 MetaPhase 可以对齐草稿装配的重叠群,以便了解它们可能来自哪个物种。 有两种方法可以做到这一点:比对到包含所有已知序列的 BLAST 数据库;并比对到包含单个参考基因组组装的本地 fasta 文件。 前一种方法对于探索样本中包含哪些类群的问题很有用;后一种方法对于锁定您已知的样本中的单个物种(或与样本中的事物相关)以及创建热图和聚类网络图像(请参阅第 E2 节“图像”)非常有用。 您可以仅从 BLAST 比对开始,然后使用其中的命中来确定您可能遇到的物种,然后下载这些参考文献并将其输入 MetaPhase。 参考基因组组装列表在文件<scenario>.refs.tsv
中提供给 MetaPhase。
MetaPhase 将执行与 BLAST 数据库和参考基因组的所有比对。 MetaPhase 可以调用 BLAST 命令blastn
、 tblastx
和makeblastdb
,所有这些命令都是 BLAST 命令行代码包的一部分;确保这些命令位于您的$PATH
中。 请注意,BLAST 可能会使用大量运行时,特别是如果您设置了--use-tblastx
。 但是,MetaPhase 将 BLAST 运行的结果缓存在<out_dir>/cached_data
中,以便稍后节省运行时间。
MetaPhase 需要两个输入 TSV(制表符分隔值)文件:一个为其提供一组 SAM/BAM 比对文件,一个为其提供一组参考基因组组件。 这些文件很小,您需要手动制作它们,特别是因为它们稍后可能需要手动修改。 最简单的方法是遵循test_case/tsvs
中的 TSV 文件示例。
要获得所有 MetaPhase 命令行参数的快速摘要,请运行MetaPhase -help
。 更详细的解释在这里。
-s
<string>
:场景名称。 MetaPhase 使用它来命名您的运行。 它用作 tsv 文件名称的开头(参见下面的-i
),也用作输出目录的名称(参见下面的-o
)。 最后,您可以忽略这一点,但有些场景名称具有我在开发中使用的硬连线命令行选项(例如,这就是为什么-a
没有在MetaPhase -help
命令。)
-a
<string>
:从头宏基因组组装 fasta 文件草稿的位置。 这必须是绝对路径,而不是相对路径 -即它必须以/
开头。
-N
<integer>
:要创建的集群数。 如果设置为 1,MetaPhase 会将所有内容聚集到一个集群中,并在此过程中计算 E(N)(集群内链接丰富度),然后编写一个文件enrichment_curve.jpg
,该文件可以为您提供估计的数量样本中的物种。 不要设置为 0 或大于重叠群数量的数字。
其中一些参数的默认值中包含$HOME
。 这是指您的 UNIX 主目录(当您键入cd ~
或cd $HOME
时进入的位置。)
-i
<string>
:输入目录。 这是包含 tsv 文件<scenario>.HiC_libs.tsv
和<scenario>.refs.tsv
的目录。默认值: ./input
input。
-o
<string>
:输出根目录。 此运行的输出文件将放入<out_dir>/<scenario>
。默认值: $HOME/MP/out
。
--blast_dir
<string>
:包含 MetaPhase 用于比对的 BLAST 数据库( nt.*
和nr.*
)的目录。 您可以从 BLAST 网站下载这些文件。默认值: $HOME/extern/blast
。
--refs_dir
<string>
:包含refs.tsv
文件中列出的参考基因组组件的目录。 此运行的输出文件将放入<out_dir>/<scenario>
。默认值: $HOME/MP/refs
。
--use_tblastx
:切换。 如果设置,MetaPhase 将使用tblastx
而不是blastn
执行 BLAST 比对 - 它不是根据核苷酸数据库比对重叠群的核苷酸序列,而是将核苷酸翻译为氨基酸并将它们与蛋白质数据库比对。 因为蛋白质序列比核苷酸序列更保守,所以tblastx
会获取更远的系统发育关系 -即在科或属级别而不是物种级别 - 您可能想要也可能不想要。 tblastx
也比blastn
慢得多。
--force_blast_realign
:切换。 如果设置,MetaPhase 将忽略并覆盖任何描述 BLAST 比对的缓存文件。
-b
:切换。 对链接矩阵应用统计引导。 换句话说,一旦创建了 Hi-C 链接矩阵(并且在其归一化之前),通过替换对矩阵进行重新采样,创建一个具有相同链接总数但链接的确切位置随机变化的新矩阵。 如果您想测试聚类结果的稳健性,请使用-b
运行 MetaPhase 几次并比较结果,结果应该是随机不同的。
--isolated_component_size <integer>
:从链接矩阵创建重叠群连接图后,丢弃图中重叠群数量少于此数量的任何组件。 在大多数数据集中,此类组件由无法可靠地放入任何物种中的噪声组成,并且由于这些组件永远无法与其他组件组合,因此它们可能会丢失明显的簇数。 但是,如果您的 Hi-C 链路数据稀疏,您可能需要减少此数据以避免垃圾真正的集群。默认值: 100
。
--jarvis_patrick_K <integer>
:Jarvis-Patrick 预聚类步骤中使用的 K 值。 较高的值会增加运行时间,但可能会提高准确性。 要详细了解此数字,请参阅 Jarvis 和 Patrick,“使用基于共享近邻的相似性度量进行聚类”,1973 年。默认值: 100
。
--min_cluster_norm <integer>
:允许的簇的最小范数。 重叠群的“范数”是其包含的限制性酶 (RE) 位点的数量,簇的范数是其重叠群的范数之和。 此参数会对输出产生很大影响:增加min_cluster_norm
将增加簇的最小可能大小,可能会破坏代表小物种的簇;但它也可以防止形成仅包含少量重叠群 (2-3) 的恼人的小簇,这些簇通常是由数据中的噪声和/或重复重叠群引起的。 如果您得到一个包含大部分重叠群的巨大簇,而所有其他簇都很小,则需要增加此值。 请记住,簇的范数大致等于其长度(以 bp 为单位)除以 RE 站点频率,因此对于不同类型的 RE,最佳数量可能不同。默认值: 25
。
-merge
:切换。 应用一些实验性聚类算法来合并来自不同 Hi-C 库的多个独立聚类。 不推荐。
--load_cached_clusters
:切换。 如果设置,MetaPhase 将在<out_dir>/<scenario>.cached_data
中查找包含先前计算的聚类结果的缓存文件,而不是执行聚类。 如果 MetaPhase 之前已在此场景中运行过且具有与现在相同的-N
值并且没有标志--dont_output_cache
则该文件将存在。 如果您想分析聚类结果而不重新运行聚类,这是一种节省时间的方法。
--dont_output_cache
:切换。 不要创建(或覆盖)稍后可以使用--load_cached_clusters
加载的集群缓存文件。 该选项被--load_cached_clusters
覆盖。
--report_unclustered
:切换。 如果设置,MetaPhase 会生成有关未聚类的重叠群的最终报告:它们与哪些物种对齐,其中有多少因为完全不相关而未聚类,等等。
--output_cluster_fastas
:切换。 如果设置,则将文件cluster.*.fasta
和unclustered.fasta
写入<out_dir>/<scenario>/
中。 这些是 fasta 文件,指示 MetaPhase 如何对重叠群进行聚类。
--output_network_image
:切换。 如果设置,则运行脚本Fig2a.R
并创建一个集群网络图像,如 MetaPhase 论文图 2A 中所示。
--output_heatmaps
:切换。 如果设置,则运行脚本MakeClusteringResultHeatmap.R
并创建热图图像,如 MetaPhase 论文的图 2B 和图 S5 中所示。
--reorder_clusters_by_refs
:切换。 如果设置,则对簇重新排序,以便最大化使用--output_heatmaps
创建的热图对角线上的信号。 请注意,这取决于refs.tsv
文件中的参考基因组以及它们在文件中出现的顺序。 如果你想拥有一致的簇号,就不要设置这个。
MetaPhase 最基本的输出是到屏幕上。 MetaPhase 在执行预处理、BLAST 比对、聚类和聚类后分析时将提供详细的进度报告。 假设它没有崩溃,MetaPhase 会生成一个漂亮且方便的聚类结果图表。 此图表中的列是:
簇数
该簇中的重叠群数量
该簇中所有重叠群的总长度
丰度:对该簇的 DNA 丰度(而非物种丰度)的估计。 定义为与该簇中的重叠群对齐的鸟枪读取的百分比。 需要猎枪丰富的 SAM/BAM 文件,目前需要破解。
多个参考:多个序列比对的参考基因组组装(在refs.tsv
文件中列出的组装中)
%eukaryotic、%rDNA、%tRNA、%mtDNA:该簇中序列内容的预测注释。 基于与 BLAST 数据库的 BLAST 比对。
多重分类:该簇中序列内容最常见的分类位置。 基于与 BLAST 数据库的 BLAST 比对。
如果您设置--report_unclustered
,MetaPhase 还将创建一个更小、更简单的图表来描述非聚类重叠群。
您可以创建漂亮的图像,如 MetaPhase 论文的图 2A 和 2B 中的图像。 要创建网络图像或热图,请分别设置--output_network_image
或--output_heatmap
。 这些文件分别由脚本Fig2a.R
和MakeClusteringResultHeatmap.R
创建。 这些是使用 ggplot2 的相当简单的 R 脚本;如果您想调整图像的外观,只需调整脚本即可。 默认情况下,这些文件是在$HOME/public_html
中创建的;您可能需要创建此目录才能显示文件。
MetaPhase 将在<out_dir>/<scenario>
中创建以下文件:
assembly.blastn_report
:一个人类可读的文件,方便地总结草稿程序集与 nt 数据库的 BLAST 对齐情况。
result.human_readable.txt
. human_read.txt :一个人类可读的文件,列出了宏基因组组装草案中的每个重叠群并指示其如何聚类。
cluster.*.fasta
和unclustered.fasta
:包含每个簇中的重叠群的 Fasta 文件。 仅当您使用--output_cluster_fastas
运行时创建。
子目录cached_data
:包含描述与参考基因组的BLAST比对的缓存文件(MapToRefs.txt*);与 nt 数据库的 BLAST 比对( assembly._blast );和聚类结果(聚类)。 这些文件可能不是特别适合人类阅读。
子目录LACHESIS
:除非您在运行 MetaPhase 后运行 Lachesis(请参阅下一节),否则为空。
正如 MetaPhase 论文中所演示的,可以运行 MetaPhase 为每个物种创建单独的簇,然后运行 LACHESIS 以创建该簇中重叠群的染色体规模支架,从而从无到有生成高质量的单物种组装但宏基因组数据。 但是,有几个注意事项:
这可能只适用于真核生物,因为 LACHESIS 的方法并不真正适用于原核生物基因组。
您必须知道物种的染色体编号,因为 LACHESIS 无法像 MetaPhase 预测物种编号那样精确地预测染色体编号。
您必须将 Hi-C 读数与您正在研究的簇中的重叠群重新对齐。
在酵母物种中,小心不要将所有含着丝粒的重叠群聚集成单个染色体。 您必须使用 LACHESIS 的CLUSTER_CONTIGS_WITH_CENS
选项。
应该有一个名为MetaPhase
的可执行文件。 在命令行中键入MetaPhase
。 如果您收到“找不到命令”之类的错误,则说明您不在正确的 MetaPhase 目录中,或者尚未成功完成编译。 如果 MetaPhase 已准备好运行,则键入MetaPhase
将产生PARSE ERROR
,并且 MetaPhase 将向您描述它所需的命令行参数。
如果您收到以下错误: MetaPhase: error while loading shared libraries: libboost_filesystem.so.1.47.0: cannot open shared object file: No such file or directory
那么您需要将包含libboost_filesystem.so.1.47.0
的目录添加到您的环境变量$LD_LIBRARY_PATH
。 键入以下命令: LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<MetaPhase>/include/boost_1_47_0/stage/lib
如果 MetaPhase 崩溃,您应该做的第一件事就是仔细查看其输出。 它可能会详细解释出现的问题,并为您提供解决问题的好主意。 最常见的问题是输入文件之一无法找到或包含无意义的数据。
您还可能收到“断言错误”,如下所示: Assertion ... failed.
这意味着在算法的某个阶段,MetaPhase 遇到了它没有预料到的特定情况。 断言错误将附带对文件( *.cc
或*.h
)的引用以及发生错误的行号。 尝试查看文件中的该行,其中应包含函数assert()
。 该行周围应该有一些注释来解释可能导致断言错误的原因。
总的来说,我们付出了巨大的努力,使 MetaPhase 成为一段设计良好且注释良好的代码。 如果您熟悉 C++,您应该能够浏览源代码并了解发生了什么。 我们建议从顶级模块MetaPhase.cc
开始,并从那里开始工作。
让 MetaPhase 正常运行后,请仔细查看输出,尤其是报告图表。 如果您得到奇怪的结果 - 例如,组装的序列非常少,或者大部分序列聚集成一个簇(常见问题) - 您可能需要调整 MetaPhase 的性能。 仔细阅读 D2 节“可选命令行参数”。
MetaPhase 软件包及其包含的所有软件和文档版权所有 © 2013-2014,归 Josh Burton 和华盛顿大学所有。保留所有权利。
该软件按“原样”提供,不提供任何保证或支持保证。华盛顿大学对其使用、误用或功能不承担任何责任。在任何情况下,作者或版权所有者均不对因本软件引起、由本软件引起或与之相关的任何索赔、损害或其他责任承担责任。
感谢 Ivan Liachko 使 MetaPhase 项目成为可能,并生成了 MetaPhase 软件使用的所有 Hi-C 数据。
感谢 Maitreya Dunham 和 Jay Shendure 的领导、管理和想法。
感谢 Kathryn Bushley、David Fredricks、Steve Salipante、Laura Sycuro 和 Andrew Wiser 耐心地帮助我测试 MetaPhase 并排除故障。
感谢 Aaron McKenna 帮助让 MetaPhase 在 GitHub 上可用。
(来自 Andrew)您正在为用户提供一个新的、有限的 BOOST 安装,他们可能不希望通过添加到 LD_LIBRARY_PATH 来与系统的其余部分进行交互。 我的建议是建议用户如果可能的话将 include/boost_1_47_0/stage/lib 目录添加到他们的 LD_LIBRARY_PATH 中,但也提供一个包装脚本来在运行时设置环境变量。 检查用户 LD_LIBRARY_PATH 中是否存在正确的路径,如果没有找到则设置它,然后执行该程序的 Python 程序非常容易快速编写。