2009-12-30 134 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