2009-12-30 85 views
3

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

如果不是这样,我也可以MOL2转换为另一种更方便的格式

Thaks

+0

什么是执行分割的标准? – 2009-12-30 11:12:27

回答

2

csplit可以分出文件到单个分子:如果你想要的东西更聪明,那么你

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

可以将每个分子以字符串的形式读入列表或数组中,然后将每个分子随意地吐出到每个文件中。

+0

谢谢 '{*}'有什么意义?我得到一个错误 每个mol2分子以TRIPOS标题开头,如你所说,但以2个空行结束 – asdf 2009-12-30 11:39:22

+0

{*}告诉csplit重复前一个模式,直到文件结束。没有它,csplit将只创建2个文件,其中一个包含第一个匹配的所有内容,另一个包含从第一个匹配到文件末尾的所有内容。 – 2009-12-30 11:41:52

+0

gracias por la ayuda – asdf 2009-12-30 14:11:57

0

这里是一种在Linux做到这一点:

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