多倍体亚基因组的无监督分类

polycracker的Python项目详细描述


快速摘要

polycracker是一种无监督机器学习的分类和提取方法 以fasta格式提供的一组基因组序列的子基因组。目前 适合于分析中等到新近获得的异源多倍体物种。它不 需要训练数据,甚至亚基因组的数量是已知的(尽管这有帮助)。它确实需要 然而,为了确定最有可能的亚基因组数目,一些经验测试。

多拍器可用于:

  1. 识别亚基因组

  2. 提取子基因组

  3. 验证子基因组

  4. 与基因组特征相关的亚基因组探索性分析

polycracker通过使用重复的kmer(对应于病毒、转座子和其他 自私的重复元素)作为识别物种起源的分子条码。自从 这样的重复序列进化很快,并在一个物种的基因组中复制自己, 但不是其他密切相关的物种),它们可用于根据物种分组子序列 原产地。

假设一个DNA序列库来自多个物种, polycracker可以用来识别和分离属于一个物种和另一个物种的序列。 在某些情况下,polycracker在分离异源多倍体的亚基因组方面的表现与手册中的一样好。 在已知和可获得前体基因组序列的情况下,通过序列比对提取亚基因组。

有关详细信息,请参阅Polycracker手稿预印本。如果您在工作中使用Polycracker,请引用以下文章。

polycracker,一种通过重复DNA进化特征无监督分割多倍体亚基因组的稳健方法。 肖恩·戈登,乔舒亚·列维,约翰·沃格尔

(第一作者和第二作者是共同第一作者)

Polycracker入门

(需要Mac或Linux操作系统) (Docker适用于Windows)

###安装Polycracker依赖项

使用提供的Docker映像可以完全跳过依赖项的安装 在Github上。

基于miniconda的图像

使用基于miniconda的图像可以访问polycracker的核心功能:

docker pull sgordon/polycracker miniconda:1.0.2

您可能需要增加Docker中的设置,以允许在Docker中使用额外的内存和CPU 码头工人。请看这条线: 如何为docker分配更多内存

我们建议至少允许5 GB的RAM和4个CPU。

根据测试数据运行polycracker

    docker run -it sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27

结果存储在test_results目录中。

要退出容器:

exit

请注意,如果要在Docker容器外检查结果,可能需要装入卷。

在Docker上下文中装入卷的详细信息不在 本教程的范围。尽管如此,如果您的计算机上有一个analysis\u results目录 并希望将结果从polycracker复制到该目录,然后您可以将上述命令修改为:

    docker run -v "$(pwd)"/analysis_results:/analysis_results -i -t sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27    cp -R test_results /analysis_results/

然后如上所述退出容器。结果应保存在分析结果/测试结果中 子目录。您也可以在运行自己的数据时执行此安装。

您也可以使用此存储库根目录下的dockerfile来构建自己的docker映像。 这方面的详细信息将在本页底部介绍。

  • 手动conda安装所需的依赖项并在conda环境中运行。详情见下文 手动条件详情依赖项的安装。

更多测试数据:

使用Docker在自己的数据上运行

  1. 编辑config_polycracker.txt(见下文)

流程将类似于测试数据,但值得注意的是,您将最少需要: 2。将有问题的fasta文件移到./fasta\u文件 这可以通过如上所述将卷装入Docker容器来执行, 如果感兴趣的输入fasta文件位于正在装入的目录中(例如,"analysis_results"), 然后将fasta文件从挂载目录复制到./fasta\u files目录 已经存在于容器中。

    docker pull sgordon/polycracker-miniconda:1.0.2    # assumes we have copied user input FASTA file into analysis_results directory that we will mount
    docker run -v "$(pwd)"/analysis_results:/analysis_results -i -t sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    # copying user input FASTA file into fasta_files directory
    cp /analysis_results/[user FASTA file] ./fasta_files    polycracker.py run_pipeline -env pCRACKER_p27    cp -R analysisOutputs /analysis_results/

结果应该在./analysisoutputs/*/*子目录中。

  • 有一个包含子序列初始簇的簇结果目录,以及包含信号放大后的最终簇的最终结果目录。

有时,信号放大可能会失败,因为过度侵略性的迭代征募kmers。 不是亚基因组特异的,或者是对另一个亚基因组特异的。 招募不当。 在这种情况下,可以通过进入./analysisoutputs/*/*/bootstrap_*目录并查找包含fastas的extractedsubgenomes子目录来获得中间结果。

注意,提取的子基因组fasta文件仍然是"分块的"(在标准化过程中根据指定的子序列长度进行分割)。 但包含与原始脚手架相关的位置信息。

  • 在项目目录中的*html文件中找到聚类图。

  • 可以使用polycracker.py plotpositions-h生成其他绘图,还有一些其他绘图实用程序。

专业提示:通过将已运行配置的部分设置为0而不是1,可以在各个部分重新运行/恢复管道。

pro-tip:使用命令polycracker.py number_repeat mers_per_subsequence查找每个分块基因组片段中存在的重复mer数量的直方图。 文件另存为kmers_per_subsequence.png

如果此直方图在每个子序列中过于倾斜,以致于kmer计数过低,则选择:

  • 减小kmer大小
  • 增加块大小splitfastalinelength
  • 降低低计数阈值
  • 将PerfectMode设置为1
  • 考虑将nonchunk=1添加到配置中
  • 和/或实施更高的最小块大小。

非常重要!

如果没有足够的重复内容包含在子序列中,则很难对它们进行分类。 在运行管道时,可以运行"kmers_per_subsequence.png",以确定kmers穿过管道的频率 子序列,然后调整相关参数。

使用nextflow运行polycracker管道的配置

polycracker本身是存储库根目录下的一个python模块,它包含命令行 如上所述,可以单独访问的功能。

因为polycracker由许多单独的命令行函数组成, 为了方便起见,我们提供了一个用nextflow工作流语言编写的管道 用户。nextflow实现允许单个命令执行所有需要的D步进顺序。 此工作流可通过以下方式访问测试数据:

polycracker.py测试管道

或如下所示,用于您自己的数据:

polycracker.py run_管道

工作流本身是polycracker_pipeline.nf,它现在位于polycracker子目录中。 当前可能需要在 nextflow脚本本身,即要使用的cpu数量和内存资源的参数。 这些参数当前设置为保守值,以便可以在 一台6核、至少5GB内存的现代笔记本电脑。在较大的数据集上执行时 需要增加这些资源设置。特别是,所需的内存资源可以根据 正在分析的输入fasta序列的大小。参数可以在这些行上更改:

blastmemstr="导出Java选项='-xms5g-xmx"+blastmemory+"g'"

CPU要求以"CPU"为前缀的行指定,如下所示:

cpu={writekmer==1?6:1}

多拍配置文件设置

在根目录中提供的配置文件 存储库是"config_polycracker.txt"。

控制单个功能和第三方资源量的参数 程序在配置文件中设置。请按以下说明修改以适合您的fasta 输入如下。

  • 文件路径: 将输入的fasta文件(包含所有序列的单个fasta文件)复制到fasta_files目录中。 您也可以修改fasta path到相应fasta输入文件的路径。 您可以保留示例配置中提供的其他路径。 fasta文件必须以.fa.fasta文件扩展名结尾,否则将无法识别它们。
    blastPath = ./blast_files/    kmercountPath = ./kmercount_files/    fastaPath = ./test_data/test_fasta_files/    bedPath = ./bed_files/
  • 基因组: 输入fasta文件的完整文件名(不是完整路径)。

  • SGE解释器: 除非使用sge或slurm集群,否则将local设置为1。我们目前没有记录如何使用 sge或slurm多节点集群,但有经验的用户可以自己尝试。

  • 使用bbtools: 请将此设置保留为1。

  • 围绕预期子基因组数量的设置: 推荐做法,尺寸数量>;亚基因组数量。相应地修改。 例如,如果预期的子基因组数目是2,则将n_维度设置为3。

  • FASTA标准化 把法斯塔分成几块。这决定了输入fasta的子序列的长度。 分成。这对于规范化分析的子序列是必要的。这是典型的 介于30000和1000000之间的值,但取决于输入fasta文件中序列的长度。 我们建议将其作为起始值:

    splitFasta = 1    preFilter = 0    splitFastaLineLength = 50000
  • kmer计数设置 "kmerlength"是一个重要参数,可能需要根据分析进行调整。 "kmer_low_count"、"use_high_count"、"kmer_high_count"用于控制在 分析。"kmer_low_count"确定哪些kmer被视为"重复"。 "使用高计数","kmer高计数"限制在fasta中高频使用kmer。 我们建议这些初始设置:
    writeKmer = 1    kmerLength = 26    kmer2Fasta = 1    kmer_low_count = 30    use_high_count = 0    kmer_high_count = 2000000    sampling_sensitivity = 1

使用原始基因组进行最终分析输出 通常这将设置为零。

  • **将kmers重新定位到基因组,并将结果转化为聚类矩阵。 指定的内存使用选项。 "blastmemory"是一个重要的资源设置。将此值设置为 你想用。在笔记本电脑上,我们推荐以下设置:
    writeBlast = 1    k_search_length = 13    runBlastParallel = 0    blastMemory = 5    blast2bed = 1    generateClusteringMatrix = 1    lowMemory = 0    minChunkSize = 50000    removeNonChunk = 1    minChunkThreshold = 0    tfidf = 1    perfect_mode = 0

在更大的单节点群集上,需要增加内存设置。 "removenonchunk"排除序列小于指定的"minChunkSize"。

转换和群集数据: 两个关键的选择是使用哪种降维方法以及 要使用的群集方法。 "降维技术"表示执行降维时要使用的方法 关于稀疏子序列矩阵重复kmer。 可用的降维器包括:

  • 'kpca':kernelpca,
  • "因子":因子分析,
  • "特色":特色聚集,
  • "lda":最新的dirichletallocation和"nmf":nmf。

这些方法的说明超出了本工作的范围。

"clusterMethods"指定使用的群集方法。
支持的方法有:

  • "光谱聚类":光谱聚类,
  • "基因型":基因型
  • "kmeans":小批量kmeans,
  • "gmm":高斯混合,
  • "bgmm":巴耶桑加森混合体。

示例参数如下:

    transformData = 1    reduction_techniques = tsne    transformMetric = linear    ClusterAll = 1    clusterMethods = SpectralClustering    grabAllClusters = 1    n_neighbors = 20    metric = cosine    weighted_nn = 0    mst = 0

提取亚基因组:亚基因组重复kmer计数的启发式方法,以便 判断子序列是否属于一个或另一个亚基因组。 示例参数:

    docker run -it sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27
0

在自动nextflow管道外使用polycracker命令行功能。

polycracker是一个python模块,具有命令行可访问的功能。下一个流程 运行管道脚本允许用户避免以串行方式运行单个函数 用于亚基因组分类和提取的共同目的。

尽管如此,在某些情况下,个别核心和助手函数的执行 很有用。

要查看命令行可用功能的完整列表:

    docker run -it sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27
1

结果列表:

    docker run -it sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27
2

要获取有关特定功能的信息,例如plotpositions:

    docker run -it sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27
3

以上结果:

    docker run -it sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27
4

在手动优化期间重新运行亚基因组分类和提取

在手动优化和故障排除的上下文中有两个直接相关的功能 为:< > >

  • polycracker.py重置群集-h

结果:

    docker run -it sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27
5

  • polycracker.py reset transform-h

结果:

    docker run -it sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27
6

上述函数根据需要删除一些中间文件,以便能够 成功地重新运行管道。

附加文档

有关设置配置文件和运行管道的其他提示,可以通过运行jupyter笔记本找到。/tutorials/running pipeline.ipynb
*关于每个配置参数的含义的信息都在这个笔记本中。强烈建议您查看此信息。
*/tutorials/old_configs中旧配置文件的其他示例

此处不包括其他下游分析,但请查看下面描述的HTML文件以获取更多命令。

访问其他帮助文档:
*下载存储库后,您可以在此处找到它们:./tutorials/help\u docs/index.html
*这是一个html文件,指定了一些polycracker命令。仍在更新中。

基因组比较工具和k-mer保存规则

  • polycracker的一个单独的实用程序没有在上面的文章中演示,它能够比较不同基因组/组装体之间k-mers的分布,并创建一个绘图/虚线应用程序以进行可视化。
  • 要建立k-mers与基因组的矩阵,以便进行下游分析,请使用bio_hyp_class命令(-h)
    *例如,nohup python polycracker.py bio_hyp_class-f../../,u,n-dk 5-w../。/results/-m 150-l 23-min 2-max 25>;../../analysis.log&;
  • 然后有一些脚本可用于下游分析(这里没有详细说明集群等)。此方面将发布 在另一份手稿中,正在准备中。

环境设置的详细说明

创建自己的Docker图像

(从提供的卷宗上e位于此存储库的根目录中。)

测试的DockerFile应在其当前状态下成功生成和运行。 要生成图像:

    docker run -it sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27
7

polycracker环境的conda安装方法

(请注意,Docker方法是首选的,而且容易得多。)

    docker run -it sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27
8

通过运行polycracker对藻类基因组进行分类来测试conda环境

  1. 将存储库克隆到项目目录。
    docker run -it sgordon/polycracker-miniconda:1.0.2    source activate pCRACKER_p27    tar -xzvf ./test_data/test_fasta_files/algae.fa.tar.gz && mv algae.fa ./test_data/test_fasta_files/    polycracker.py test_pipeline -env pCRACKER_p27
9
  1. 更改cd[包含polycracker.py的git项目目录的根目录]
exit
0
  1. tar-xzvf./test_data/test_fasta_files/alga.fa.tar.gz&;mv alga.fa./test_data/test_fasta_files/
  2. 激活Conda环境
exit
1
  1. polycracker.py test_pipeline-env[您的polycracker conda环境]。例如:
exit
2
  1. 结果存储在test_results目录中。

图库

示例图

对绿藻基因组coccomyxa sub椭球体和莱茵衣藻的反褶积

(绘制降维重复kmer矩阵的谱嵌入结果,在分类之前将基因组分成50kb子序列。)

将大四倍体烟草基因组中的序列分配给两个前体亚基因组

将大量六倍体面包小麦基因组中的序列分类为三个祖先亚基因组

示意图

由其包含的重复kmer链接的序列的多拍聚类的说明性示意图

fig1

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
无法在Netbeans 8.2 JDK8u231中创建java Maven项目(Web应用程序)   java如何以设定的时间间隔生成随机数?   java从socket和inputStream的慢速读取   spring SCORM:Java中基于Web的SCORM播放器   Java将函数传递给方法   java绑定通用服务及其实现和子类型   java如何在运行时从选择列表框中动态选择选项?爪哇硒   java Selenium WebDriver什么是“Selenium客户端和WebDriver语言绑定”   elasticsearch需要elasticsearch高级Java客户端更新ByQueryRequest API帮助   JAVA哈希表查找最大值   WSDL操作中的java soapAction属性为空   java访问封闭类或父类方法的一般方法   eclipse在java中运行带有SeleneTestCase的ANT。lang.NoClassDefFoundError   java Hazelcast不会在节点启动时填充ReplicatedMap   如何在Java中从excel中读取特定行?   html JAVA将本地时间(GMT+8)转换为UTC时间   java将自定义端点添加到Spring数据REST存储库中,并以大摇大摆的方式显示   java计算未来位置