将mol2分子的数据库分成N个较小的组

时间:2009-12-30 10:35:57

标签: python bash

我从mod2(http://zinc.docking.org/)格式的锌数据库(http://tripos.com/index.php?family=modules,SimplePage,,,&page=sup_mol2&s=0)获得了一大组分子。我希望能够将这个数据库拆分成一组N个较小的数据库。对于python,bash或perl,最好的脚本方法是什么?我读过openbabel,但它只能产生一组单个分子。

如果没有,我也可以将mol2转换为另一种更方便的格式

Thaks

2 个答案:

答案 0 :(得分:2)

csplit可以将文件分成单个分子:

csplit ~/Download/zinc.mol2 '/@<TRIPOS>MOLECULE/' '{*}'

如果你想要更聪明的东西,那么你可以将每个分子读成一个列表或数组作为一个字符串,然后随意吐出每个文件。

答案 1 :(得分:0)

这是在linux中执行此操作的方法:

gawk -v RS="@<TRIPOS>MOLECULE" 'NF{ print RS$0 > "zinc"++n".mol2" }' zinc.mol2