mol2格式分子在sybyl显示断裂的原因及修改方法
可能的原因一原子不连通,
1 3
2 4
1 4
则1234这四个原子是连通的,理论上不应该是断裂的。
1 3
2 4
则是断裂的,根据这个原则可以从分子库中自动挑选出所有断裂的分子,然后手动修改。
这里我贴一个自动挑选的脚本 附件中,没测试。有问题联系我,qq 1679088991
#!/usr/bin/perl
sub txt2atomnu{
@text=@_;
foreach$line(@text)
{
if($line=~/^(\d+)\s+\d+\s+\d+\s+\d+\s+\d+/){
return $1;
}
}
}
subgetbondtxt{
open FG,">1";
@text = @_;
foreach $line(@text)
{# 1 1 2 1这个mol2中键的格式是唯一的
if($line=~/^\s+\d+\s+(\d+\s+\d+)\s+\S+$/)
{
print FG $1,"\n";
}
}
open FG,"1";
@bonds=<FG>;
# print @bonds;
return @bonds;
}
opendir DIR,"F:/task/segst";
@files=readdir(DIR);
shift@files;
shift @files;
foreach $file(@files)
{
open FH,"F:/task/debri/$file";
@text=<FH>;
$atomnu=&txt2atomnu(@text);
@bonds=&getbondtxt(@text);
my @id;
#给每个对象赋予一个初始值
for($i=1;$i<=$atomnu;$i++){
$id[$i]=$i;
#print "$id[$i]\n ";
}
foreach $bond(@bonds)
{
chomp;
@num=split(/\s+/,$bond);
#print join '---',"@num";
# print "\n";
#p 和 q 是连通的对象
$p=$num;
$q=$num;
#t 是存放的p对象的值
$t=$id[$p];
# print "$p $q $t\n";
for($i=1;$i<=$atomnu;$i++)
{
if($id[$i]==$t)#和t相等值的所有对象,只都变成对象q的值
{
#print "1234567";
$id[$i]=$id[$q];
}
}
}
$flag=grep{$id,$id_} @id;
if($flag !=0){
print "debris copy\n";
system("copy \"F:\\task\\segst\\$file\"\"F:\\task\\debr
}
}
原因二
1 3
2 4
1 4
则1234这四个原子是连通的,理论上不应该是断裂的。有时我们会发现一个有趣的现象,
在pymol中打开时连通的,在sybyl中打开是不连续的。
原因是atom中有个亚结构属性,亚结构属性的id和 名字。
在sybyl中如果属于不同的亚结构,则可能显示为不连续。
技术贴!赞一个,提一个问题,如果不在sybyl下,出现mol2格式键断裂的情况是否常见?我感觉貌似我还没遇到过,请指教 大工-阿里巴巴 发表于 2013-1-29 21:37 static/image/common/back.gif
技术贴!赞一个,提一个问题,如果不在sybyl下,出现mol2格式键断裂的情况是否常见?我感觉貌似我还没遇到 ...
应该属于键不是连通的 学习。。。
页:
[1]