|
马上注册,结交更多好友,下载更多分子模拟资源。
您需要 登录 才可以下载或查看,没有帐号?我想注册
x
可能的原因一
原子不连通,
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;
}
}
}
sub getbondtxt{
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[0];
$q=$num[1];
#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[1],$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中如果属于不同的亚结构,则可能显示为不连续。
|
评分
-
查看全部评分
|