微同源切分仪
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
文件的列。例如:chr,start,end,rsid,gene - 侧翼/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.
- maxindelphifreqmesc,maxindelphifrequ2os,maxindelphifreq293,maxindelphifreqchct116,maxindelphifreqk562: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分数)。
- indelphifreqmesc,indelphifrequ2os,indelphifreqek293,indelphifreqchct116,indelphifreqk562:indelphi为此精确删除预测的频率。
- indelphifreqmean:indelphi预测的不同单元格类型中此精确删除的平均频率。
"卡通"文件
"cartoon"文件名为"prefix cartoons.tsv",每个变量有一个段落,其中:
- "variant"文件中的相应行(例如,mh metrics,pam found or not)。
- 微同源性的位置。
表示匹配,
x
不匹配。 - 侧翼和变体的序列。
-
标记变量的限制。最后,…
标记一个大变量的中间部分,该变量不是为了清楚起见而显示的。 - 有效pam剪切的位置。
\
和/
取决于pam基序的链。x
表示在相反的钢绞线中,底座的每一侧都有切口。 < > > -v pathl:pathc
将本地文件夹pathl
链接到容器中的文件夹pathc
。通常pathl
包含inpUT文件,将是我们希望写入输出文件的位置。-w pathc
表示工作目录(命令将在其中运行)是pathc
,即我们希望在与上一个参数(以及包含输入文件)链接的文件夹中运行命令。imagename
是Docker容器的名称。如果不是人工构建,Docker会尝试从Docker Hub或其他平台下载。- 一垒是比赛。
- 连续两次不匹配。
- 外-内:3'变异序列和5'侧翼序列之间的mh。
- 内-外:5'变异序列和3'侧翼序列之间的mh。
例如,一个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
因此,对我们来说,停靠的命令可能是这样的:
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。 换句话说:
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 permissions0
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来测试,以提供所需删除的预测频率。