飞毛腿 发表于 2012-12-26 13:36:23

分割mol2格式小分子文件的python脚本

本帖最后由 飞毛腿 于 2012-12-26 19:49 编辑

python写的分割mol2格式小分子文件的脚本。
需要python才能运行(python3可能不能运行,没有测试)。

使用方法:命令行里运行:./split_mol2.py mols.mol2 2000    将mols.mol2分割为很多包含2000个小分子的mol2文件,文件名和分子个数可以根据自己需要修改。

如果使用过程中遇到问题,或者有什么建议,请联系我。

西大-song 发表于 2012-12-26 14:35:33

腿哥V5,maker一个,还好是2.7

eming 发表于 2012-12-27 04:09:23

本帖最后由 eming 于 2017-10-21 09:57 编辑

自己写脚本的确能提高自己的能力。这里提供另外一个思路。
只是one by one
mkdir splited_doc
cd splited_doc
babel ../filename.mol2 file_split.mol2 -m
# or can be done by
csplit -b '%d.mol2' -f file_split ../filename.mol2 '/@<TRIPOS>MOLECULE/' '{*}'

for i in file_split*
do
mv $i $(grep -A1 '@<TRIPOS>MOLECULE' $i|grep -v '@<TRIPOS>MOLECULE').mol2
done

#or by awk
awk -v RS="@<TRIPOS>MOLECULE" 'NF{ print RS$0 > $1".mol2"}'filename.mol2

数据挖掘 发表于 2013-1-23 19:14:16

我补一个perl 脚本

#!/usr/bin/perl -w
open FH,"E:/mol2/cnpd.mol2";#拆分的分子的路径
        $i=0;
while(<FH>){

        if ($_=~/@<TRIPOS>MOLECULE/)
        {
                $i++;
                #print "$i\n";
                $newname="segment"."$i.mol2";
                open FG ,">>E:/mol2/segs/$newname";#//拆分后的分子
               
        }
       
        if($newname=~/$i/){
                #print "yes";
                print FG $_;
        }
       
       
}

popelrain888 发表于 2014-5-3 12:07:00

谢谢分享脚本

jingyue 发表于 2014-12-4 22:42:31

学习一下

fireflying 发表于 2014-12-5 22:16:10

可以用LeFrag(http://lephar.com)来分割小分子,命令行:lefrag -spli yourMol2.file。这个命令会把文件里面每个Mol2小分子提取出来,每个单独小分子文件的名称是小分子Mol2里面的分子名称。提取几十万个分子不到一分钟,基本没有内存需求。

做虚拟高通量筛选使用ZINC数据库的朋友可能注意到一个ZINC分子可能多个质子化状态或手性结构,但是所有这些不同构象对应的ZINC是相同的。LeFrag在分割数据库时候会判断每个分子的多种构象,如果存在其它构象,会依次命名为“ZINC*****_1.mo2, ZINC*******_2.mol2"等等,不会覆写不同的构象。

LeFrag还有很多高级功能,譬如Scaffold hopping,切割分子成分子片段。
页: [1]
查看完整版本: 分割mol2格式小分子文件的python脚本