PASTIS:从HiC矩阵推断染色体3D结构

前言

  HiC数据的另外一个用途就是可以推断染色体的3D结构。小编也是第一次做染色体三维推断的分析,而网络上也很少能找到关于此分析的帖子,所以在这过程中也是踩了不少的坑,所以今天记录一下,抛一块砖。目前,利用HiC数据推断染色体三维结构的软件有不少,这里列举一二,如PASTIS、LorDG、ChromeSDE、Shrec3D、MOGEN等。这些软件从实现方法角度可以分成Distance-Based、Contact-Based、Probability-Based三大类,具体哪一种实现过程比较好这里就不做讨论。今天我们要说的PASTIS软件包含Distance-Based和Probability-Based两种算法,分别对应其中的四个函数pastis-mdspastis-nmdpastis-pm1pastis-pm2

软件使用

  PASTIS使用python编写的软件,目前支持使用pip命令来安装,所以安装和使用还是相对简单的。不过github源码库里面自带测试数据,如果想用测试数据的可以采用源码安装。

###安装
pip install --user pastis
### github下载源码安装
python setup.py install --user

  安装好软件,下面我们就来使用一下,这里用源码中测试数据测试一下(examples/pastis_example目录下含有测试数据)。这里还是忍不住想吐槽一下软件的文档写得太过简单了。第一次接触有点方,因为这个软件并不像其他命令行工具使用-h就可以查看使用帮助,该软件使用的是配置文件的方式,需要在目录下放置一个名为config.ini配置文件里面提供软件需要的参数,内容如下:

[all]
output_name: structure
verbose: 1
max_iter: 100
counts: data/counts.npy
normalize: True

  可是,作者提供示例的配置文件参数很少,其实有很多参数是有默认值的,想要知道全部参数的参数,可以通过python的交互式方式导入pastis包来看,或者粗暴一点直接看源码。下面演示一下交互式方式查看:

>>>import pastis
>>>pastis.config.parse()
{'chromosomes': '1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16', 'organism_structure': 'files/budding_yeast_structure', 'binary_pm': 'PM_all', 'beta': 1.0, 'seed': 0, 'input_name': 'wish_distances.txt', 'adjacent_beads': None, 'alpha': -3.0, 'counts': 'data/counts.npy', 'logging_file': 'MDS.log', 'nucleus_size': None, 'output_name': 'structure.pdb', 'binary_mds': 'MDS_all', 'resolution': 10000}

  可以看到参数有很多,如果不提供就会使用默认参数,这可是一个巨大的坑,不清楚的情况下都不知道为啥程序跑不通,即使误打误撞跑通了,也不要高兴太早,因为后面你可能会发现结果不一定正确,因为里面内置的数据方面参数都是关于酵母物种,如果你分析是其他物种就要小心了(不要问我是怎么知道 >_<|||)。注意,下面这些参数需要根据数据自行调整:
chromosomes:染色体,多个用逗号分隔;
organism_structure:存储染色体长度的文件,一行是一条染色体长度;
counts:HiC矩阵存储为numpy数组格式;
resolution:HiC矩阵的分辨率。
  betaalphaadjacent_beadsnucleus_size这几个参数具体有什么作用咱也不清楚,但可以推测应该是跟建模有关,不清楚有什么影响时还是用默认参数比较稳妥。其余的参数基本可以选择忽略了。
  下面来看看具体怎么使用这个软件,首先看一下配置文件的内容:

[all]
resolution: 10000
output_name: structure
chromosomes: 1,2,3,4,5,6,7,8
counts: data/counts.npy
organism_structure: files/budding_yeast_structure
normalize: True

  然后是准备输入的目录,目录结构类似如下:

example
├── config.ini
├── data
│   └── counts.npy
└── files
    └── budding_yeast_structure

  最后,运行命令。pastis-mdspastis-nmdpastis-pm1pastis-pm2四个子命令自行选择使用:

pastis-pm2 example

  当程序结束时会在目录中生产两个文件,一个是三维坐标文件,一个是pdb格式的三维结构文件(后续用此文件画染色体的3D结构)。两个文件名都是以选择的相应算法名为前缀。

结束语

  至此,染色体的三维结构推断好了,后续就是可视化方面的事情了。虽然前面吐槽了软件使用方面的问题,但还是得承认这个软件预测的结果还是不错的。希望软件作者后续维护给力,软件能够更新的越来越好用,文档也能详细起来解释一下参数的作用,让用户明白如何根据数据来调整参数。

参考

https://github.com/hiclib/pastis
http://hiclib.github.io/pastis
<<A statistical approach for inferring the 3D structure of the genome>>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容