📄 logp.c
字号:
}
}
else
{
if(group.num_pi<=1)
{
strcpy(atom[i].xtype,"N.3.x");
continue;
}
else if(atom[i].ring==0)
{
strcpy(atom[i].xtype,"N.3.x");
continue;
}
else
{
strcpy(atom[i].xtype,"N.3.x.ring");
continue;
}
}
}
else
{
strcpy(atom[i].xtype,"N.3.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"N.am"))
{
if(group.num_nonh==1)
{
strcpy(atom[i].xtype,"N.am.h2");
continue;
}
else if(group.num_nonh==2)
{
if(group.num_hetero==0)
{
strcpy(atom[i].xtype,"N.am.h");
continue;
}
else
{
strcpy(atom[i].xtype,"N.am.h.x");
continue;
}
}
else if(group.num_nonh==3)
{
if(group.num_hetero==0)
{
strcpy(atom[i].xtype,"N.am");
continue;
}
else
{
strcpy(atom[i].xtype,"N.am.x");
continue;
}
}
else
{
strcpy(atom[i].xtype,"N.am.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"N.2"))
{
if(group.db_type==1||group.db_type==4||group.db_type==5)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"N.2.(=C).pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"N.2.(=C).pi=1");
continue;
}
}
else
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"N.2.(=C).x.pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"N.2.(=C).x.pi=1");
continue;
}
}
}
else if(group.db_type==2)
{
if(group.num_hetero==0)
{
strcpy(atom[i].xtype,"N.2.(=N)");
continue;
}
else
{
strcpy(atom[i].xtype,"N.2.(=N).x");
continue;
}
}
else if(group.db_type==3)
{
if(group.num_nonh==2)
{
strcpy(atom[i].xtype,"N.2.o");
continue;
}
else if(group.num_nonh==3)
{
strcpy(atom[i].xtype,"N.2.o2");
continue;
}
else
{
strcpy(atom[i].xtype,"N.2.o");
continue;
}
}
else
{
strcpy(atom[i].xtype,"N.2.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"N.ar"))
{
strcpy(atom[i].xtype,"N.ar");
continue;
}
if(!strcmp(atom[i].type,"N.1"))
{
strcpy(atom[i].xtype,"N.1");
continue;
}
if(!strcmp(atom[i].type,"O.3"))
{
if(group.num_nonh==1)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"O.3.h.pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"O.3.h.pi=1");
continue;
}
}
else
{
strcpy(atom[i].xtype,"O.3.h.x");
continue;
}
}
else if(group.num_nonh==2)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"O.3.pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"O.3.pi>0");
continue;
}
}
else
{
strcpy(atom[i].xtype,"O.3.x");
continue;
}
}
else
{
strcpy(atom[i].xtype,"O.3.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"O.2")||!strcmp(atom[i].type,"O.co2"))
{
strcpy(atom[i].xtype,"O.2");
continue;
}
if(!strcmp(atom[i].type,"S.3"))
{
if(group.num_nonh==1)
{
strcpy(atom[i].xtype,"S.3.h");
continue;
}
else if(group.num_nonh==2)
{
strcpy(atom[i].xtype,"S.3");
continue;
}
else
{
strcpy(atom[i].xtype,"S.3.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"S.2"))
{
strcpy(atom[i].xtype,"S.2");
continue;
}
if(!strcmp(atom[i].type,"S.o"))
{
strcpy(atom[i].xtype,"S.o");
continue;
}
if(!strcmp(atom[i].type,"S.o2"))
{
strcpy(atom[i].xtype,"S.o2");
continue;
}
if(!strcmp(atom[i].type,"P.3"))
{
if(group.db_type==3)
{
strcpy(atom[i].xtype,"P.3.(=O)");
continue;
}
else if(group.db_type==4)
{
strcpy(atom[i].xtype,"P.3.(=S)");
continue;
}
else
{
strcpy(atom[i].xtype,"P.3.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"F"))
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"F.pi=0");
continue;
}
else if(group.num_pi==1)
{
strcpy(atom[i].xtype,"F.pi=1");
continue;
}
else
{
strcpy(atom[i].xtype,"F.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"Cl"))
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"Cl.pi=0");
continue;
}
else if(group.num_pi==1)
{
strcpy(atom[i].xtype,"Cl.pi=1");
continue;
}
else
{
strcpy(atom[i].xtype,"Cl.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"Br"))
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"Br.pi=0");
continue;
}
else if(group.num_pi==1)
{
strcpy(atom[i].xtype,"Br.pi=1");
continue;
}
else
{
strcpy(atom[i].xtype,"Br.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"I"))
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"I.pi=0");
continue;
}
else if(group.num_pi==1)
{
strcpy(atom[i].xtype,"I.pi=1");
continue;
}
else
{
strcpy(atom[i].xtype,"I.unknown");
continue;
}
}
strcpy(atom[i].xtype,"Un"); atom[i].valid=0;
}
return;
}
int Ligand::Check_Atom_Type(Group &group) const
// there are always some dilemma when assigning the atom type
{
int i,mark;
if(group.center.type[0]=='P')
{
if(strcmp(group.center.type,"P.3"))
{
strcpy(group.center.type,"P.3");
return FALSE;
}
}
if(group.center.type[0]=='N')
{
if(group.db_type==3) // -NO, -NO2 and etc.
{
if(strcmp(group.center.type,"N.2"))
{
strcpy(group.center.type,"N.2");
return FALSE;
}
}
}
if(group.center.type[0]=='S')
{
if((group.db_type==3)&&(group.num_neib==3)) // -SO-
{
if(strcmp(group.center.type,"S.o"))
{
strcpy(group.center.type,"S.o");
return FALSE;
}
}
else if((group.db_type==3)&&(group.num_neib==4)) // -SO2-
{
if(strcmp(group.center.type,"S.o2"))
{
strcpy(group.center.type,"S.o2");
return FALSE;
}
}
else if(group.num_neib>=4) // e.g. -SF5
{
if(strcmp(group.center.type,"S.o2"))
{
strcpy(group.center.type,"S.o2");
return FALSE;
}
}
}
if(!strcmp(group.center.type,"C.2"))
{
mark=TRUE;
for(i=0;i<group.num_nonh;i++)
{
if(!strcmp(group.bond[i].type,"2")) continue;
else {mark=FALSE; break;}
}
if(mark==TRUE&&group.num_nonh==2&&group.num_neib==2) // =C=
{
strcpy(group.center.type,"C.1");
return FALSE;
}
}
if(!strcmp(group.center.type,"N.2"))
{
mark=TRUE;
for(i=0;i<group.num_nonh;i++)
{
if(!strcmp(group.bond[i].type,"2")) continue;
else {mark=FALSE; break;}
}
if(mark==TRUE&&group.num_nonh==2&&group.num_neib==2) // =N=
{
strcpy(group.center.type,"N.1");
return FALSE;
}
}
return TRUE;
}
int Ligand::Count_Hydrophobic_Carbon()
{
int i,num;
num=0;
for(i=0;i<num_atom;i++)
{
if(strcmp(atom[i].type,"C.3")&&
strcmp(atom[i].type,"C.2")) continue;
else if(Hydrophobic_Neighbor_Check(atom[i].id)
==FALSE) continue;
else {num++; atom[i].logp+=(LOGP_HYDROPHOBIC_CARBON);}
}
if(num>=10) num/=2;
return num;
}
int Ligand::Hydrophobic_Neighbor_Check(int id) const
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -