分割mol2格式小分子文件的python脚本
本帖最后由 飞毛腿 于 2012-12-26 19:49 编辑python写的分割mol2格式小分子文件的脚本。
需要python才能运行(python3可能不能运行,没有测试)。
使用方法:命令行里运行:./split_mol2.py mols.mol2 2000 将mols.mol2分割为很多包含2000个小分子的mol2文件,文件名和分子个数可以根据自己需要修改。
如果使用过程中遇到问题,或者有什么建议,请联系我。
腿哥V5,maker一个,还好是2.7 本帖最后由 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
我补一个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 $_;
}
} 谢谢分享脚本 学习一下 可以用LeFrag(http://lephar.com)来分割小分子,命令行:lefrag -spli yourMol2.file。这个命令会把文件里面每个Mol2小分子提取出来,每个单独小分子文件的名称是小分子Mol2里面的分子名称。提取几十万个分子不到一分钟,基本没有内存需求。
做虚拟高通量筛选使用ZINC数据库的朋友可能注意到一个ZINC分子可能多个质子化状态或手性结构,但是所有这些不同构象对应的ZINC是相同的。LeFrag在分割数据库时候会判断每个分子的多种构象,如果存在其它构象,会依次命名为“ZINC*****_1.mo2, ZINC*******_2.mol2"等等,不会覆写不同的构象。
LeFrag还有很多高级功能,譬如Scaffold hopping,切割分子成分子片段。
页:
[1]