数据挖掘 发表于 2013-1-29 14:42:18

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中如果属于不同的亚结构,则可能显示为不连续。


大工-阿里巴巴 发表于 2013-1-29 21:37:22

技术贴!赞一个,提一个问题,如果不在sybyl下,出现mol2格式键断裂的情况是否常见?我感觉貌似我还没遇到过,请指教

数据挖掘 发表于 2013-2-3 20:34:53

大工-阿里巴巴 发表于 2013-1-29 21:37 static/image/common/back.gif
技术贴!赞一个,提一个问题,如果不在sybyl下,出现mol2格式键断裂的情况是否常见?我感觉貌似我还没遇到 ...

应该属于键不是连通的

joy11 发表于 2013-2-25 15:41:39

学习。。。
页: [1]
查看完整版本: mol2格式分子在sybyl显示断裂的原因及修改方法