微同源切分仪

MHcut的Python项目详细描述


mhcut

mhcut是在dbsnp和clinvar中的删除操作上运行的(请参见脚本dbsnp clinvar文件夹中的命令)。 可以通过mhcut浏览器在线查看结果。 数据集也存放在figshare上:https://doi.org/10.6084/m9.figshare.9118364" rel="nofollow">https://doi.org/10.6084/m9.figshare.9118364

安装

python 2.7或更高版本(但不是python 3)。

mhcut位于pypi中,可以使用以下命令安装:

pip install MHcut ## add --user if you don't have root permissions

或者对于github上的最新版本:

git clone --recursive https://github.com/jmonlong/MHcut.git
cd MHcut
pip install . ## add --user if you don't have root permissions

如果要运行mhcut脚本,请确保在$path中添加/home/$(whoami)/.local/bin

您还需要水母。 请按照主页中的说明进行操作,或在下面找到更多信息。

这些依赖项的安装并不是特别"痛苦",但我们还构建了一个Docker容器作为替代方案(请参阅Docker说明)。

准备参考基因组和水母指数

首先下载并解压缩参考基因组,例如:

wget http://hgdownload.cse.ucsc.edu/goldenpath/hg38/bigZips/hg38.fa.gz
gunzip hg38.fa.gz

最后,您可以使用以下命令索引基因组:

MHcut -ref hg38.fa

否则,该索引将在mhcut首次运行时自动完成(可能需要额外几分钟)。

在对基因组进行索引后,水母可以快速找到特定序列的精确匹配数。 在两条链的参考基因组中索引23个mers:

jellyfish count --out-counter-len 1 -C -m 23 -s 100M hg38.fa

注意:使用-t可使用多个核心,例如使用-t 10可使用10个核心。

输出文件mer_counts.jf稍后将使用-jf提供给mhcut(参见下面的用法)。

用法

MHcut -var NCBI_Variation_Viewer_data_uniq.tsv -ref hg38.fa -jf mer_counts.jf -out MHcut-NCBI-chrX

所需参数为:

  • -var一个以chr/start/end列开头、可能后跟其他列(例如rsid、gene)的制表符分隔的文件。第一行包含列名。
  • -ref带有参考基因组的fasta文件。
  • -jf水母创建的23个mers计数文件。
  • -out输出文件(tsv文件)的前缀。

其他可选参数:

  • -minvarl要考虑的变量的最小长度。默认值为3
  • -最小mhlmh的最小长度。默认值为3
  • -minm1l如果微同源,则第一个拉伸的最小长度。默认值为3
  • -nofilt不过滤没有mh的变体。所有输入变量都将出现在输出-variants文件中。如果使用,将不考虑以下参数:-minmhl、-minhom、-minm1l。
  • -maxconsmm扩展mh时允许的最大连续不匹配数。默认值为1
  • -maxtailmhs和pam切割之间的最大距离被认为是有效的。当前默认值为50。与大型车型相关。
  • -明宏整个微同源性中的最小同源比。默认值为0
  • -pampam序列。默认为ngg。可能有几个被","分隔开
  • -pam cut相对于pam基序的剪切位置。默认值为-3
  • -minlnhm在嵌套mh检查中要考虑的嵌套mh的最小长度。默认值为3
  • -2fls报告两侧配置的结果,而不是mh最强的配置。
  • -noshift使用输入坐标而不尝试移动变量以找到最佳mh。
  • -重新启动将检查现有的输出文件并从变量继续(当长作业到达群集的walltime时很有用)。

输出

"variant"文件

命名为prefix variants.tsv的"variant"文件为每个输入变量一行,其中包含找到的mh的信息,以及是否有有效的pam cut可用。

当前输出列为:

  • 输入.tsv文件的列。例如:chrstartendrsidgene
  • 侧翼/mh score侧翼构型(1:外-内,2:内-外)和mhscore(上面的"微同源搜索"。
  • mhl:mh长度。
  • mh1l:第一个连续匹配的数目。
  • hom:匹配的比例。
  • nbmm:不匹配的数目。
  • mhmaxcons:mh中连续匹配的最长长度。
  • mhdist:mh的末端和变量边界之间的距离。
  • mh1列表:第一个连续匹配的结束与变量边界之间的距离。
  • mhseq1/mhseq2:mh的序列。
  • gc:mh序列的gc含量(最大值mhseq1/mhseq2)。
  • pammot:有效位置中pam动机的数量,无论protospacer有多独特。
  • pamuniq:一个有效位置中pam动机的数量,并且具有唯一的protospacer。
  • 导轨编号:没有嵌套MH的导轨编号。
  • 指南minmh:具有最少嵌套mh的指南的嵌套mh数。
  • max2cutsdist:两个唯一值之间的距离相距最远。如果pamuniq<;2.
  • maxindelphifreqmescmaxindelphifrequ2osmaxindelphifreq293maxindelphifreqchct116maxindelphifreqk562:indelphi为不同单元格类型的精确删除预测的最大频率。
  • maxindelphifreqmeanindelphi为此精确删除预测的最大平均频率(不同单元格类型的平均值)。

"指南"文件

名为前缀guides.tsv的"guide"文件每个protospacer有一行。 这意味着,如果有几个有效的pam剪切可用,同一个变体可以出现多次。

目前,输出的列与"variant"文件的列相同,并具有以下附加列:

  • 原间隔子/原链原间隔子的序列和链。
  • PAMSEQPAM。
  • mm0在基因组中,序列没有错配而对齐的位置数。
  • m1dist1和m1dist2:pam之间的距离分别切割完美匹配的左拉伸和右拉伸。
  • mhdist1和mhdist2:pam之间的距离分别切割左或右微同源性。
  • nbnmh嵌套mh的数目。
  • 最大的mh最大嵌套mh的大小。
  • nmhscore最佳mmej评分nestedmicro-h同调mh(最好定义为最高的mmej分数)。
  • nmhsize最佳m h长度nestedmicro-h同调mh(最佳定义为最高mmej分数)。
  • nmhvarl由最优者创建的变体的长度nestedmicro-homology mh(最好定义为最高mmej分数)。
  • n mh gc最佳gc含量nestedmicro-homology mh(最佳定义为最高mmej分数)。
  • nmhseq最佳n顺序为micro-h同调mh(最佳定义为最高mmej分数)。
  • indelphifreqmescindelphifrequ2osindelphifreqek293indelphifreqchct116indelphifreqk562:indelphi为此精确删除预测的频率。
  • indelphifreqmean:indelphi预测的不同单元格类型中此精确删除的平均频率。

"卡通"文件

"cartoon"文件名为"prefix cartoons.tsv",每个变量有一个段落,其中:

  1. "variant"文件中的相应行(例如,mh metrics,pam found or not)。
  2. 微同源性的位置。表示匹配,x不匹配。
  3. 侧翼和变体的序列。-标记变量的限制。最后,标记一个大变量的中间部分,该变量不是为了清楚起见而显示的。
  4. 有效pam剪切的位置。\/取决于pam基序的链。x表示在相反的钢绞线中,底座的每一侧都有切口。
  5. < > >

    例如,一个3碱基的完美mh有3个有效的pam剪切:

    chr8	41725834	41725853	ANK1	True	3	3	1.0	0	17	GCG	GCG
                         |||                  |||
    GCGTGTCGTCGTTGCGGGCC-GCGATGTGCAGGGCCGGGAG-GCGCACCTTCCCCTTGGTGC
    ____________________ _______\___\\_______ ____________________
    

    测试安装

    testdata文件夹中提供了一个小型虚拟数据集,用于测试安装是否成功完成。

    尝试运行:

    cd testdata
    jellyfish count --out-counter-len 1 -C -m 23 -s 100M chr20-1Mbp.fa
    MHcut -var test-chr20-1Mbp.tsv -ref chr20-1Mbp.fa -jf mer_counts.jf -out test

    或者进行更全面的跑步:

    MHcut -var test-chr20-1Mbp.tsv -ref chr20-1Mbp.fa -jf mer_counts.jf -out test -nofilt -minvarL 1 -indelphi
    

    安装依赖项

    水母

    安装水母的最简单方法是下载一个二进制文件并将其包含在路径中。 最新发布的水母提供了一个macosx二进制文件和一个linux二进制文件。 如需有关示例,请参阅2.2.10版本

    一旦二进制文件下载,只需使其可执行并更新路径即可找到它。 例如(适用于Linux和MacOSX二进制文件):

    pip install MHcut ## add --user if you don't have root permissions
    0

    将最后一行添加到~/.basrc文件中,以确保路径始终正确。

    否则,您总是可以从源代码编译它。 例如,如果要在文件夹中构建它

    pip install MHcut ## add --user if you don't have root permissions
    1

    将最后一行添加到~/.basrc文件中,以确保路径始终正确。

    如果您喜欢使用Docker,请参阅下面的Docker说明。

    Docker图像

    Docker通过准备一个操作系统的映像以及运行该工具的所有需求和依赖关系来简化工具的安装。 用户不需要在系统上安装许多不同的库和工具,docker镜像可以直接使用。 用户仍然需要安装docker。

    Docker速成课程

    要在Docker容器中运行命令命令arg1 arg2…,典型的Docker命令如下:

    pip install MHcut ## add --user if you don't have root permissions
    2
    • -v pathl:pathc将本地文件夹pathl链接到容器中的文件夹pathc。通常pathl包含inpUT文件,将是我们希望写入输出文件的位置。
    • -w pathc表示工作目录(命令将在其中运行)是pathc,即我们希望在与上一个参数(以及包含输入文件)链接的文件夹中运行命令。
    • imagename是Docker容器的名称。如果不是人工构建,Docker会尝试从Docker Hub或其他平台下载。

    因此,对我们来说,停靠的命令可能是这样的:

    pip install MHcut ## add --user if you don't have root permissions
    3

    我们将当前文件夹(`pwd`)与容器中的home文件夹链接起来,我们将使用该文件夹作为工作目录并运行python命令。

    mhcut的Docker工作流

    注意:这假设参考基因组文件已经下载,并且输入的tsv文件已经准备好。

    在第一次运行Docker run jmonlong/mhcut时,Docker会自动下载mhcut docker映像。

    使用水母索引参考(如果尚未完成):

    pip install MHcut ## add --user if you don't have root permissions
    4

    运行mhcut:

    pip install MHcut ## add --user if you don't have root permissions
    5

    您可以在测试数据上进行测试:

    pip install MHcut ## add --user if you don't have root permissions
    6

    可选:手动生成Docker映像

    mhcut的映像在docker hub上可用,但您可能仍希望手动生成映像以使用主分支上的当前版本。

    克隆repo之后,我们可以通过在repo的根目录下运行以下命令(其中dockerfile是):

    pip install MHcut ## add --user if you don't have root permissions
    7

    方法

    微同源搜索

    pip install MHcut ## add --user if you don't have root permissions
    8

    对于每一个侧翼,微同源性被扩展到变异的末端,只要:

    • 一垒是比赛。
    • 连续两次不匹配。

    存在两种侧翼配置:外-内(1)和内-外(2)。 如果侧翼1-变型-侧翼2,配置1是侧翼1和变型之间的mh,配置2是侧翼2和变型之间的mh。 换句话说:

    • 外-内:3'变异序列和5'侧翼序列之间的mh。
    • 内-外:5'变异序列和3'侧翼序列之间的mh。

    mhcut使用分数来选择"最佳"侧翼。 分数是当前的匹配数+连续的第一个匹配数。 在上面的例子中,选择了侧翼1(得分:9比8)。

    移位删除

    有时相同的删除可以用不同的坐标表示。 因此,mhcut将尽可能地移动删除,并选择导致最高微同源性的坐标。

    例如,在上一示例中,以下表示具有更好的同源性,并且表示完全相同的删除:

    pip install MHcut ## add --user if you don't have root permissions
    9

    pam cut搜索

    git clone --recursive https://github.com/jmonlong/MHcut.git
    cd MHcut
    pip install . ## add --user if you don't have root permissions
    0

    pam割在mh的第一个精确匹配拉伸的末端和变量边界之间搜索。 此外,如果在前3个位置之后,则允许在mh区域内进行pam切割。 在上面的示例中,第一个有效切割在G和C之间,最后一个有效切割在C和G之间。

    我们只考虑在距变体断点不到50bp处导致A切割的PAM。 这可以通过-maxtail参数进行更改(请参见用法)。 在大量删除的过程中跳过pam可以节省时间,因为它们无论如何都不能在实践中使用。

    pam切割在两个链中都被枚举。 对于每个有效切割,都会检索到原始间隔序列。

    对照基因组检查原间隔子以计数精确匹配的数目:mm0表示完全对齐且没有不匹配的位置数目。 如果mm0等于1,即基因组中的唯一匹配,则认为pam是唯一的。

    对于每一个原型间隔/切割,我们还列出了er-mhs,位于切口两侧,可优先使用,而不是所需的。 这些嵌套mh可以降低重建缺失的效率。 只有至少3bp的准确mhs被考虑,并且如果它们之间的距离至少和目标mh一样近。 其中,输出包含有关最佳嵌套mh(缩写为nmh)的信息,该嵌套mh被定义为具有最高模式分数的嵌套mh(bae et al 2014)。

    每个protospacer/cut也用indelphi来测试,以提供所需删除的预测频率。

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

    推荐PyPI第三方库


热门话题
java我的应用程序崩溃,试图添加菜单   java如何创建TBase类实例   如何在java小程序中使用JMF功能?   数据结构Java中是否有用于双循环链表的内置接口?   java在使用JAXB读取XML文件时如何使用继承   在Java中获取和存储子进程的输出   从Java执行Windows命令   HQL中带日期的java限制   安卓如何使用GSON将单个JSON字段映射到多个JAVA字段?   std:random shuffle()和Collections之间的java差异。洗牌   Java正则表达式更高效的动态正则表达式   来自JSON的java POJO表示   active directory无法在Java中更改AD服务器中的密码   DataOutputStream出现java错误   scala如何指定JVM最大堆大小“Xmx”,以便在SBT中运行具有“run”操作的应用程序?   添加了`<f:actionListener>`之后,java`ViewScoped` bean会被重新创建吗?   python找不到满足java要求的版本(来自版本:),找不到与java匹配的发行版   java为什么刷新jdbc swing表中的按钮后数据会多次出现?   java在编程语言(尤其是dart)中,死代码是什么意思?   java为什么我必须在JDBC中使用回滚?