📄 logp.c
字号:
# include "link.h"
float Ligand::Get_LogP()
{
int i,num;
float xlogp=0.000;
for(i=0;i<num_atom;i++)
{
if(atom[i].valid==0) continue;
else xlogp+=atom[i].logp;
}
num=Count_Hydrophobic_Carbon();
xlogp+=((LOGP_HYDROPHOBIC_CARBON)*num);
num=Count_Internal_HBond();
xlogp+=((LOGP_INTERNAL_HBOND)*num);
num=Count_Halogen_1_3_Pair();
xlogp+=((LOGP_HALOGEN_PAIR)*num);
num=Count_Nar_1_4_Pair();
xlogp+=((LOGP_NAR_PAIR)*num);
num=Count_O3_1_4_Pair();
xlogp+=((LOGP_O3_PAIR)*num);
num=Count_Acceptor_1_5_Pair();
xlogp+=((LOGP_ACCEPTOR_PAIR)*num);
num=Count_Salicylic_Acid();
xlogp+=((LOGP_SALICYLIC_ACID)*num);
num=Count_Amino_Acid();
xlogp+=((LOGP_AMINO_ACID)*num);
return xlogp;
}
void Ligand::Assign_Atom_Xtype()
{
int i;
Group group;
for(i=0;i<num_atom;i++)
{
if(atom[i].valid==0) continue;
else if(atom[i].type[0]=='H') {strcpy(atom[i].xtype,"H"); continue;}
group=Find_A_Group(atom[i].id);
if(Check_Atom_Type(group)==FALSE)
{
strcpy(atom[i].type, group.center.type);
group=Find_A_Group(atom[i].id);
}
if(!strcmp(atom[i].type,"C.3"))
{
if(group.num_nonh==1)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.3.h3.pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"C.3.h3.pi=1");
continue;
}
}
else
{
strcpy(atom[i].xtype,"C.3.h3.x");
continue;
}
}
else if(group.num_nonh==2)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.3.h2.pi=0");
continue;
}
else if(group.num_pi==1)
{
strcpy(atom[i].xtype,"C.3.h2.pi=1");
continue;
}
else
{
strcpy(atom[i].xtype,"C.3.h2.pi=2");
continue;
}
}
else
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.3.h2.x.pi=0");
continue;
}
else if(group.num_pi==1)
{
strcpy(atom[i].xtype,"C.3.h2.x.pi=1");
continue;
}
else
{
strcpy(atom[i].xtype,"C.3.h2.x.pi=2");
continue;
}
}
}
else if(group.num_nonh==3)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.3.h.pi=0");
continue;
}
else if(group.num_pi==1)
{
strcpy(atom[i].xtype,"C.3.h.pi=1");
continue;
}
else
{
strcpy(atom[i].xtype,"C.3.h.pi>1");
continue;
}
}
else
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.3.h.x.pi=0");
continue;
}
else if(group.num_pi==1)
{
strcpy(atom[i].xtype,"C.3.h.x.pi=1");
continue;
}
else
{
strcpy(atom[i].xtype,"C.3.h.x.pi>1");
continue;
}
}
}
else if(group.num_nonh==4)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.3.pi=0");
continue;
}
else if(group.num_pi==1)
{
strcpy(atom[i].xtype,"C.3.pi=1");
continue;
}
else
{
strcpy(atom[i].xtype,"C.3.pi>1");
continue;
}
}
else
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.3.x.pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"C.3.x.pi>0");
continue;
}
}
}
else // a guess is better than nothing
{
strcpy(atom[i].xtype,"C.3.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"C.2"))
{
if(group.num_nonh==1)
{
strcpy(atom[i].xtype,"C.2.h2");
continue;
}
else if(group.num_nonh==2)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.2.h.pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"C.2.h.pi=1");
continue;
}
}
else
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.2.h.x.pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"C.2.h.x.pi=1");
continue;
}
}
}
else if(group.num_nonh==3)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.2.pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"C.2.pi>0");
continue;
}
}
else if(group.num_hetero==1)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.2.x.pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"C.2.x.pi>0");
continue;
}
}
else
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"C.2.x2.pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"C.2.x2.pi>0");
continue;
}
}
}
else // a guess is better than nothing
{
strcpy(atom[i].xtype,"C.2.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"C.cat"))
{
strcpy(atom[i].xtype,"C.2.x2.pi>0");
continue;
}
if(!strcmp(atom[i].type,"C.ar"))
{
if(group.num_nonh==2)
{
if(group.num_nar==0)
{
strcpy(atom[i].xtype,"C.ar.h");
continue;
}
else
{
strcpy(atom[i].xtype,"C.ar.h.(X)");
continue;
}
}
else if(group.num_nonh==3)
{
if(group.num_nar==0)
{
if(group.num_hetero==0)
{
strcpy(atom[i].xtype,"C.ar");
continue;
}
else
{
strcpy(atom[i].xtype,"C.ar.x");
continue;
}
}
else
{
if(group.num_hetero==0)
{
strcpy(atom[i].xtype,"C.ar.(X)");
continue;
}
else
{
strcpy(atom[i].xtype,"C.ar.(X).x");
continue;
}
}
}
else // a guess is better than nothing
{
strcpy(atom[i].xtype,"C.ar.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"C.1"))
{
if(group.db_type!=0)
{
strcpy(atom[i].xtype,"C.1.==");
continue;
}
else if(group.num_nonh==1)
{
strcpy(atom[i].xtype,"C.1.h");
continue;
}
else if(group.num_nonh==2)
{
strcpy(atom[i].xtype,"C.1");
continue;
}
else // a guess is better than nothing
{
strcpy(atom[i].xtype,"C.1.unknown");
continue;
}
}
if(!strcmp(atom[i].type,"N.4")||!strcmp(atom[i].type,"N.3")||
!strcmp(atom[i].type,"N.pl3"))
{
if(group.num_nonh==1)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"N.3.h2.pi=0");
continue;
}
else
{
strcpy(atom[i].xtype,"N.3.h2.pi=1");
continue;
}
}
else
{
strcpy(atom[i].xtype,"N.3.h2.x");
continue;
}
}
else if(group.num_nonh==2)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"N.3.h.pi=0");
continue;
}
else if(group.num_pi==1)
{
strcpy(atom[i].xtype,"N.3.h.pi>0");
continue;
}
else if(atom[i].ring==0)
{
strcpy(atom[i].xtype,"N.3.h.pi>0");
continue;
}
else
{
strcpy(atom[i].xtype,"N.3.h.ring");
continue;
}
}
else
{
if(group.num_pi<=1)
{
strcpy(atom[i].xtype,"N.3.h.x");
continue;
}
else if(atom[i].ring==0)
{
strcpy(atom[i].xtype,"N.3.h.x");
continue;
}
else
{
strcpy(atom[i].xtype,"N.3.h.x.ring");
continue;
}
}
}
else if(group.num_nonh==3)
{
if(group.num_hetero==0)
{
if(group.num_pi==0)
{
strcpy(atom[i].xtype,"N.3.pi=0");
continue;
}
else if(group.num_pi==1)
{
strcpy(atom[i].xtype,"N.3.pi>0");
continue;
}
else if(atom[i].ring==0)
{
strcpy(atom[i].xtype,"N.3.pi>0");
continue;
}
else
{
strcpy(atom[i].xtype,"N.3.ring");
continue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -