hi-c数据集的结构推理与对齐

multimds的Python项目详细描述


multimds是一个用于两个hi-c数据集的特定轨迹结构比较的工具。它从两个数据集(如不同的单元类型)联合推断和对齐三维结构。输出是对齐的三维结构文件(可绘制,见下文)、重新定位的轨迹特定量化,以及作为全部重新定位的一部分的间隔变化。每个位点的再定位量表示数据集之间的位点变化量,这可能与功能变化相关。分段分数代表分段变化对全球重组的重要性,预计为1/3。间隔变化的丰富表明数据集之间存在差异性的间隔。缺乏富集(或耗尽)表明,独立于腔室的变化(如tad变化)占主导地位。

安装

PIP安装--用户多MDS

conda安装-c lr65358 multimds

如果要创建结构的gif,则需要安装imagemagickimagemagick。

示例

下载并规范GM12878和K562单元类型的示例数据: /test.sh

打开python控制台并运行以下命令

frommultimdsimportmultimdsstruct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")frommultimdsimportplottingplotting.plot_structures_interactive((struct1,struct2))

输入文件

multimds使用染色体内床文件作为输入。在使用之前,必须对数据进行规范化(例如,使用HIC Pro)。

格式:

< Buff行情>

chrom bin1_start bin1_end chrom bin2_start bin2_end normalized_contact_frequency

示例-分辨率为10 kbp的chr21数据:

< Buff行情>

chr21 16050000 16060000 chr21 16050000 16060000 12441.5189291

重要提示:床文件必须是相同的物种、染色体和分辨率!

输出文件

重新定位

每个轨迹的重新定位被写入bed文件,格式为[prefix1][prefix2]\u relocalization.bed

例如

的输出
multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")

GM12878_21_100kb_k562_21_100kb_重新定位。床

结构文件

对齐的结构保存到TSV文件中,可用于打印(见下文)。标题包含染色体的名称、分辨率和起始基因组坐标。文件中的每一行都包含基因组箱号,后跟3d坐标(缺少数据时用"nan"。

示例-分辨率为10 kb的chr21:

< Buff行情>

ChR21

10000<P>

16050000

0.589878298045 0.200029092421 0.182515056542

1 0.592088232028 0.213915817254 0.186657230841

2南-南-南

0对应料仓16050000-16060000,1对应料仓16060000-16070000等。

差额罚款

差异惩罚控制输出结构的相似程度。较高的值意味着该算法对差异的惩罚更大。默认设置为0.05,但建议对此进行更改。

struct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed",penalty=0.02)

建议达到再现性的最低惩罚。脚本reproducibility.py(在scripts目录中)以该参数的不同值绘制可再现性。选择再现性水平增加停止的参数。

例如运行

frommultimdsimportreproducibilityreproducibility.plot_reproducibility("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")

输出:

alt text

在本例中,0.05的惩罚效果最好。

绘图

加载结构:

frommultimdsimportdata_toolsstructure=data_tools.structure_from_file("GM12878_combined_21_100kb_structure.tsv")

在Mayavi中创建交互式三维绘图。(mayavi允许您旋转图像并保存视图。)

frommultimdsimportplottingplotting.plot_structure_interactive(structure,color=(0,0.5,0.7),radius=0.01,enrichments=range(len(structure.getPoints())))

如果未选择"半径",则使用异染色质半径。

enrichments是一个向量,对于结构中的每个bin(即没有nan坐标的bin)都有一个数值。例如,这可以表示每个bin的chip seq enrichment。此选项覆盖颜色并将使用彩虹颜色映射,蓝色表示低值,红色表示高值。

可以同时绘制多个结构:

chroms=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,21,X)structures=[data_tools.structure_from_file("GM12878_combined_{}_100kb_structure.tsv".format(chrom)forchrominchroms)]plotting.plot_structures_interactive(structures)

绘图模块有23种内置颜色,设计最大程度地不同于人眼。默认情况下,打印多个结构时使用这些颜色。您还可以指定颜色列表:

chroms=(1,2)structures=[data_tools.structure_from_file("GM12878_combined_{}_100kb_structure.tsv".format(chrom)forchrominchroms)]plotting.plot_structures_interactive(structures,colors=[(1,0,0),(0,0,1)])

所有富集元素都是富集元素的列表,例如

plotting.plot_structures_interactive(structures,all_enrichments=[enrichments1,enrichments2])

也可以如上所述指定半径。

选项"剪切"创建绘图的横截面。例如,这对于查看细胞核的内部非常有用。

frommultimdsimportmultimdsstruct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")frommultimdsimportplottingplotting.plot_structures_interactive((struct1,struct2))
0

绘图可以保存为gif:

frommultimdsimportmultimdsstruct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")frommultimdsimportplottingplotting.plot_structures_interactive((struct1,struct2))
1

将创建struct.gif

值越小,增量越小,gif越平滑。增量必须是360的系数。

在一个gif中也可以绘制多个结构:

frommultimdsimportmultimdsstruct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")frommultimdsimportplottingplotting.plot_structures_interactive((struct1,struct2))
2

选项

输出前缀

您可以为输出文件使用自定义前缀。例如

frommultimdsimportmultimdsstruct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")frommultimdsimportplottingplotting.plot_structures_interactive((struct1,struct2))
3

将输出test_gm12878_21_10kb_结构.tsv,test_k562_21_10kb_结构.tsv,test_gm12878_21_10kb_k562_21_10kb_重新定位.bed

之前的

接触频率指数衰减与基因组分离是hi-c数据的一个特征。为了降低噪声,minimds先用距离衰减校正接触频率。默认前权重为0.05。

frommultimdsimportmultimdsstruct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")frommultimdsimportplottingplotting.plot_structures_interactive((struct1,struct2))
4

w可以是介于0和1之间的任意值,包括0和1。

分区MDS

分区MDS对于非常大的数据集更有效。

frommultimdsimportmultimdsstruct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")frommultimdsimportplottingplotting.plot_structures_interactive((struct1,struct2))
5

分区数

为了提高效率和准确性,在结构推理步骤中使用了分区。默认情况下使用4个分区。分区数必须是偶数。

frommultimdsimportmultimdsstruct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")frommultimdsimportplottingplotting.plot_structures_interactive((struct1,struct2))
6

限制任何给定分区使用的最大RAM(以KB为单位)(默认值:32000000):

frommultimdsimportmultimdsstruct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")frommultimdsimportplottingplotting.plot_structures_interactive((struct1,struct2))
7

分辨率

分块mds首先在低分辨率下推断出一个全局的染色体内结构,作为高分辨率推断的支架。默认情况下,使用10的分辨率。因此,如果输入文件的分辨率为100 KB,则将使用1 MB的结构进行近似。

frommultimdsimportmultimdsstruct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")frommultimdsimportplottingplotting.plot_structures_interactive((struct1,struct2))
8

您选择的值取决于您在速度和精度之间的权衡(但必须是整数)。较低的分辨率(即较高的比率)更快,但精确度较低。

线程数

multimds使用多线程来获得更高的速度。默认情况下,请求3个线程,因为这对于标准的4核桌面计算机是安全的。但是,无论请求什么,使用的线程数都不会超过处理器数或分区数。

frommultimdsimportmultimdsstruct1,struct2=multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")frommultimdsimportplottingplotting.plot_structures_interactive((struct1,struct2))
9

比例因子

比例因子a描述了接触频率和物理距离之间的假定关系:距离=接触频率^(-1/a)。默认值是4,基于Wang等人的2016年。

multimds.full_mds("hic_data/GM12878_combined_21_100kb.bed","hic_data/K562_21_100kb.bed")
0

再现图形

可以在scripts目录中找到从纸张复制图形的shell脚本。

要求:

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

推荐PyPI第三方库


热门话题
API调用时返回java Null   JavaJAXB:如何从嵌套元素中检索文本属性?   java如何在Windows机器上用Maven创建Dockerfile,然后发送到远程Linux服务器以构建映像,然后运行?   并行处理集群java独立应用程序   java使用POST将图像上传到服务器   分发组的java JavaMail/Exchange AuthAs标头   swing Java JScrollPane多个组件   JAXB将XML文档映射到Java对象   java如何在JDK中实现OpenCSV CSVReader,我正在使用VSC代码   基于屏幕大小的java翻译动画   在java中比较堆栈元素和对象的搜索   java如何在Swing中更改化身?   java JAXB将1个XML标记映射到2个变量   java面试问题:递归生成素数的最快方法是什么?   JavaEclipseIDE频繁关闭   Java中从像素读取RGB值的图像   通过查询oracle DB列值获得的字符串中的java转义XML特殊字符   java从ArrayList中删除多个项